执行过npm install命令的vue-element-admin源码
康凯
2022-05-20 aa4c235a8ca67ea8b731f90c951a465e92c0a865
1
{"remainingRequest":"D:\\源码\\vue-element-admin-master\\node_modules\\babel-loader\\lib\\index.js!D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\源码\\vue-element-admin-master\\src\\components\\ThemePicker\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\源码\\vue-element-admin-master\\src\\components\\ThemePicker\\index.vue","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\babel.config.js","mtime":1649647926000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\源码\\vue-element-admin-master\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L1x1NkU5MFx1NzgwMS92dWUtZWxlbWVudC1hZG1pbi1tYXN0ZXIvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMiOwppbXBvcnQgInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5zdGlja3kuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5jb25jYXQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIudG8tZml4ZWQuanMiOwoKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KdmFyIHZlcnNpb24gPSByZXF1aXJlKCdlbGVtZW50LXVpL3BhY2thZ2UuanNvbicpLnZlcnNpb247IC8vIGVsZW1lbnQtdWkgdmVyc2lvbiBmcm9tIG5vZGVfbW9kdWxlcwoKCnZhciBPUklHSU5BTF9USEVNRSA9ICcjNDA5RUZGJzsgLy8gZGVmYXVsdCBjb2xvcgoKZXhwb3J0IGRlZmF1bHQgewogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBjaGFsazogJycsCiAgICAgIC8vIGNvbnRlbnQgb2YgdGhlbWUtY2hhbGsgY3NzCiAgICAgIHRoZW1lOiAnJwogICAgfTsKICB9LAogIGNvbXB1dGVkOiB7CiAgICBkZWZhdWx0VGhlbWU6IGZ1bmN0aW9uIGRlZmF1bHRUaGVtZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnNldHRpbmdzLnRoZW1lOwogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIGRlZmF1bHRUaGVtZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKHZhbCwgb2xkVmFsKSB7CiAgICAgICAgdGhpcy50aGVtZSA9IHZhbDsKICAgICAgfSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgdGhlbWU6IGZ1bmN0aW9uIHRoZW1lKHZhbCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgb2xkVmFsLCB0aGVtZUNsdXN0ZXIsIG9yaWdpbmFsQ2x1c3RlciwgJG1lc3NhZ2UsIGdldEhhbmRsZXIsIHVybCwgY2hhbGtIYW5kbGVyLCBzdHlsZXM7CiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgb2xkVmFsID0gX3RoaXMuY2hhbGsgPyBfdGhpcy50aGVtZSA6IE9SSUdJTkFMX1RIRU1FOwoKICAgICAgICAgICAgICAgIGlmICghKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIik7CgogICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIHRoZW1lQ2x1c3RlciA9IF90aGlzLmdldFRoZW1lQ2x1c3Rlcih2YWwucmVwbGFjZSgnIycsICcnKSk7CiAgICAgICAgICAgICAgICBvcmlnaW5hbENsdXN0ZXIgPSBfdGhpcy5nZXRUaGVtZUNsdXN0ZXIob2xkVmFsLnJlcGxhY2UoJyMnLCAnJykpOwogICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhlbWVDbHVzdGVyLCBvcmlnaW5hbENsdXN0ZXIpOwogICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSBfdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICcgIENvbXBpbGluZyB0aGUgdGhlbWUnLAogICAgICAgICAgICAgICAgICBjdXN0b21DbGFzczogJ3RoZW1lLW1lc3NhZ2UnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsCiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAwLAogICAgICAgICAgICAgICAgICBpY29uQ2xhc3M6ICdlbC1pY29uLWxvYWRpbmcnCiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBnZXRIYW5kbGVyID0gZnVuY3Rpb24gZ2V0SGFuZGxlcih2YXJpYWJsZSwgaWQpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWxDbHVzdGVyID0gX3RoaXMuZ2V0VGhlbWVDbHVzdGVyKE9SSUdJTkFMX1RIRU1FLnJlcGxhY2UoJyMnLCAnJykpOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbmV3U3R5bGUgPSBfdGhpcy51cGRhdGVTdHlsZShfdGhpc1t2YXJpYWJsZV0sIG9yaWdpbmFsQ2x1c3RlciwgdGhlbWVDbHVzdGVyKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIHN0eWxlVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIXN0eWxlVGFnKSB7CiAgICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpOwogICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZVRhZyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzdHlsZVRhZy5pbm5lclRleHQgPSBuZXdTdHlsZTsKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgaWYgKF90aGlzLmNoYWxrKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMjsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdXJsID0gImh0dHBzOi8vdW5wa2cuY29tL2VsZW1lbnQtdWlAIi5jb25jYXQodmVyc2lvbiwgIi9saWIvdGhlbWUtY2hhbGsvaW5kZXguY3NzIik7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0Q1NTU3RyaW5nKHVybCwgJ2NoYWxrJyk7CgogICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICBjaGFsa0hhbmRsZXIgPSBnZXRIYW5kbGVyKCdjaGFsaycsICdjaGFsay1zdHlsZScpOwogICAgICAgICAgICAgICAgY2hhbGtIYW5kbGVyKCk7CiAgICAgICAgICAgICAgICBzdHlsZXMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykpLmZpbHRlcihmdW5jdGlvbiAoc3R5bGUpIHsKICAgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBzdHlsZS5pbm5lclRleHQ7CiAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG9sZFZhbCwgJ2knKS50ZXN0KHRleHQpICYmICEvQ2hhbGsgVmFyaWFibGVzLy50ZXN0KHRleHQpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzdHlsZXMuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGUpIHsKICAgICAgICAgICAgICAgICAgdmFyIGlubmVyVGV4dCA9IHN0eWxlLmlubmVyVGV4dDsKICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbm5lclRleHQgIT09ICdzdHJpbmcnKSByZXR1cm47CiAgICAgICAgICAgICAgICAgIHN0eWxlLmlubmVyVGV4dCA9IF90aGlzLnVwZGF0ZVN0eWxlKGlubmVyVGV4dCwgb3JpZ2luYWxDbHVzdGVyLCB0aGVtZUNsdXN0ZXIpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgX3RoaXMuJGVtaXQoJ2NoYW5nZScsIHZhbCk7CgogICAgICAgICAgICAgICAgJG1lc3NhZ2UuY2xvc2UoKTsKCiAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIHVwZGF0ZVN0eWxlOiBmdW5jdGlvbiB1cGRhdGVTdHlsZShzdHlsZSwgb2xkQ2x1c3RlciwgbmV3Q2x1c3RlcikgewogICAgICB2YXIgbmV3U3R5bGUgPSBzdHlsZTsKICAgICAgb2xkQ2x1c3Rlci5mb3JFYWNoKGZ1bmN0aW9uIChjb2xvciwgaW5kZXgpIHsKICAgICAgICBuZXdTdHlsZSA9IG5ld1N0eWxlLnJlcGxhY2UobmV3IFJlZ0V4cChjb2xvciwgJ2lnJyksIG5ld0NsdXN0ZXJbaW5kZXhdKTsKICAgICAgfSk7CiAgICAgIHJldHVybiBuZXdTdHlsZTsKICAgIH0sCiAgICBnZXRDU1NTdHJpbmc6IGZ1bmN0aW9uIGdldENTU1N0cmluZyh1cmwsIHZhcmlhYmxlKSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7CiAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwoKICAgICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0ICYmIHhoci5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICBfdGhpczJbdmFyaWFibGVdID0geGhyLnJlc3BvbnNlVGV4dC5yZXBsYWNlKC9AZm9udC1mYWNle1tefV0rfS8sICcnKTsKICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwpOwogICAgICAgIHhoci5zZW5kKCk7CiAgICAgIH0pOwogICAgfSwKICAgIGdldFRoZW1lQ2x1c3RlcjogZnVuY3Rpb24gZ2V0VGhlbWVDbHVzdGVyKHRoZW1lKSB7CiAgICAgIHZhciB0aW50Q29sb3IgPSBmdW5jdGlvbiB0aW50Q29sb3IoY29sb3IsIHRpbnQpIHsKICAgICAgICB2YXIgcmVkID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMCwgMiksIDE2KTsKICAgICAgICB2YXIgZ3JlZW4gPSBwYXJzZUludChjb2xvci5zbGljZSgyLCA0KSwgMTYpOwogICAgICAgIHZhciBibHVlID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoNCwgNiksIDE2KTsKCiAgICAgICAgaWYgKHRpbnQgPT09IDApIHsKICAgICAgICAgIC8vIHdoZW4gcHJpbWFyeSBjb2xvciBpcyBpbiBpdHMgcmdiIHNwYWNlCiAgICAgICAgICByZXR1cm4gW3JlZCwgZ3JlZW4sIGJsdWVdLmpvaW4oJywnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVkICs9IE1hdGgucm91bmQodGludCAqICgyNTUgLSByZWQpKTsKICAgICAgICAgIGdyZWVuICs9IE1hdGgucm91bmQodGludCAqICgyNTUgLSBncmVlbikpOwogICAgICAgICAgYmx1ZSArPSBNYXRoLnJvdW5kKHRpbnQgKiAoMjU1IC0gYmx1ZSkpOwogICAgICAgICAgcmVkID0gcmVkLnRvU3RyaW5nKDE2KTsKICAgICAgICAgIGdyZWVuID0gZ3JlZW4udG9TdHJpbmcoMTYpOwogICAgICAgICAgYmx1ZSA9IGJsdWUudG9TdHJpbmcoMTYpOwogICAgICAgICAgcmV0dXJuICIjIi5jb25jYXQocmVkKS5jb25jYXQoZ3JlZW4pLmNvbmNhdChibHVlKTsKICAgICAgICB9CiAgICAgIH07CgogICAgICB2YXIgc2hhZGVDb2xvciA9IGZ1bmN0aW9uIHNoYWRlQ29sb3IoY29sb3IsIHNoYWRlKSB7CiAgICAgICAgdmFyIHJlZCA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDAsIDIpLCAxNik7CiAgICAgICAgdmFyIGdyZWVuID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMiwgNCksIDE2KTsKICAgICAgICB2YXIgYmx1ZSA9IHBhcnNlSW50KGNvbG9yLnNsaWNlKDQsIDYpLCAxNik7CiAgICAgICAgcmVkID0gTWF0aC5yb3VuZCgoMSAtIHNoYWRlKSAqIHJlZCk7CiAgICAgICAgZ3JlZW4gPSBNYXRoLnJvdW5kKCgxIC0gc2hhZGUpICogZ3JlZW4pOwogICAgICAgIGJsdWUgPSBNYXRoLnJvdW5kKCgxIC0gc2hhZGUpICogYmx1ZSk7CiAgICAgICAgcmVkID0gcmVkLnRvU3RyaW5nKDE2KTsKICAgICAgICBncmVlbiA9IGdyZWVuLnRvU3RyaW5nKDE2KTsKICAgICAgICBibHVlID0gYmx1ZS50b1N0cmluZygxNik7CiAgICAgICAgcmV0dXJuICIjIi5jb25jYXQocmVkKS5jb25jYXQoZ3JlZW4pLmNvbmNhdChibHVlKTsKICAgICAgfTsKCiAgICAgIHZhciBjbHVzdGVycyA9IFt0aGVtZV07CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSA5OyBpKyspIHsKICAgICAgICBjbHVzdGVycy5wdXNoKHRpbnRDb2xvcih0aGVtZSwgTnVtYmVyKChpIC8gMTApLnRvRml4ZWQoMikpKSk7CiAgICAgIH0KCiAgICAgIGNsdXN0ZXJzLnB1c2goc2hhZGVDb2xvcih0aGVtZSwgMC4xKSk7CiAgICAgIHJldHVybiBjbHVzdGVyczsKICAgIH0KICB9Cn07"},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,yD,CAAA;;;AACA,+B,CAAA;;AAEA;EACAA,IADA,kBACA;IACA;MACAC,SADA;MACA;MACAC;IAFA;EAIA,CANA;EAOAC;IACAC,YADA,0BACA;MACA;IACA;EAHA,CAPA;EAYAC;IACAD;MACAE;QACA;MACA,CAHA;MAIAC;IAJA,CADA;IAOAL,KAPA,iBAOAM,GAPA,EAOA;MAAA;;MAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACAC,MADA,GACA,0CADA;;gBAAA,MAEA,uBAFA;kBAAA;kBAAA;gBAAA;;gBAAA;;cAAA;gBAGAC,YAHA,GAGA,2CAHA;gBAIAC,eAJA,GAIA,8CAJA;gBAKAC;gBAEAC,QAPA,GAOA;kBACAC,gCADA;kBAEAC,4BAFA;kBAGAC,eAHA;kBAIAC,WAJA;kBAKAC;gBALA,EAPA;;gBAeAC,UAfA,GAeA;kBACA;oBACA;;oBACA;;oBAEA;;oBACA;sBACAC;sBACAA;sBACAC;oBACA;;oBACAD;kBACA,CAXA;gBAYA,CA5BA;;gBAAA,IA8BA,WA9BA;kBAAA;kBAAA;gBAAA;;gBA+BAE,GA/BA,0CA+BAC,OA/BA;gBAAA;gBAAA,OAgCA,gCAhCA;;cAAA;gBAmCAC,YAnCA,GAmCAL,kCAnCA;gBAqCAK;gBAEAC,MAvCA,GAuCA,kDACAC,MADA,CACA;kBACA;kBACA;gBACA,CAJA,CAvCA;gBA4CAD;kBACA;kBACA;kBACAE;gBACA,CAJA;;gBAMA;;gBAEAd;;cApDA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA;IAqDA;EA5DA,CAZA;EA2EAe;IACAC,WADA,uBACAF,KADA,EACAG,UADA,EACAC,UADA,EACA;MACA;MACAD;QACAE;MACA,CAFA;MAGA;IACA,CAPA;IASAC,YATA,wBASAX,GATA,EASAY,QATA,EASA;MAAA;;MACA;QACA;;QACAC;UACA;YACA;YACAC;UACA;QACA,CALA;;QAMAD;QACAA;MACA,CAVA;IAWA,CArBA;IAuBAE,eAvBA,2BAuBAnC,KAvBA,EAuBA;MACA;QACA;QACA;QACA;;QAEA;UAAA;UACA;QACA,CAFA,MAEA;UACAoC;UACAC;UACAC;UAEAF;UACAC;UACAC;UAEA;QACA;MACA,CAlBA;;MAoBA;QACA;QACA;QACA;QAEAF;QACAC;QACAC;QAEAF;QACAC;QACAC;QAEA;MACA,CAdA;;MAgBA;;MACA;QACAC;MACA;;MACAA;MACA;IACA;EAlEA;AA3EA","names":["data","chalk","theme","computed","defaultTheme","watch","handler","immediate","val","oldVal","themeCluster","originalCluster","console","$message","message","customClass","type","duration","iconClass","getHandler","styleTag","document","url","version","chalkHandler","styles","filter","style","methods","updateStyle","oldCluster","newCluster","newStyle","getCSSString","variable","xhr","resolve","getThemeCluster","red","green","blue","clusters"],"sourceRoot":"src/components/ThemePicker","sources":["index.vue"],"sourcesContent":["<template>\n  <el-color-picker\n    v-model=\"theme\"\n    :predefine=\"['#409EFF', '#1890ff', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d', ]\"\n    class=\"theme-picker\"\n    popper-class=\"theme-picker-dropdown\"\n  />\n</template>\n\n<script>\nconst version = require('element-ui/package.json').version // element-ui version from node_modules\nconst ORIGINAL_THEME = '#409EFF' // default color\n\nexport default {\n  data() {\n    return {\n      chalk: '', // content of theme-chalk css\n      theme: ''\n    }\n  },\n  computed: {\n    defaultTheme() {\n      return this.$store.state.settings.theme\n    }\n  },\n  watch: {\n    defaultTheme: {\n      handler: function(val, oldVal) {\n        this.theme = val\n      },\n      immediate: true\n    },\n    async theme(val) {\n      const oldVal = this.chalk ? this.theme : ORIGINAL_THEME\n      if (typeof val !== 'string') return\n      const themeCluster = this.getThemeCluster(val.replace('#', ''))\n      const originalCluster = this.getThemeCluster(oldVal.replace('#', ''))\n      console.log(themeCluster, originalCluster)\n\n      const $message = this.$message({\n        message: '  Compiling the theme',\n        customClass: 'theme-message',\n        type: 'success',\n        duration: 0,\n        iconClass: 'el-icon-loading'\n      })\n\n      const getHandler = (variable, id) => {\n        return () => {\n          const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))\n          const newStyle = this.updateStyle(this[variable], originalCluster, themeCluster)\n\n          let styleTag = document.getElementById(id)\n          if (!styleTag) {\n            styleTag = document.createElement('style')\n            styleTag.setAttribute('id', id)\n            document.head.appendChild(styleTag)\n          }\n          styleTag.innerText = newStyle\n        }\n      }\n\n      if (!this.chalk) {\n        const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`\n        await this.getCSSString(url, 'chalk')\n      }\n\n      const chalkHandler = getHandler('chalk', 'chalk-style')\n\n      chalkHandler()\n\n      const styles = [].slice.call(document.querySelectorAll('style'))\n        .filter(style => {\n          const text = style.innerText\n          return new RegExp(oldVal, 'i').test(text) && !/Chalk Variables/.test(text)\n        })\n      styles.forEach(style => {\n        const { innerText } = style\n        if (typeof innerText !== 'string') return\n        style.innerText = this.updateStyle(innerText, originalCluster, themeCluster)\n      })\n\n      this.$emit('change', val)\n\n      $message.close()\n    }\n  },\n\n  methods: {\n    updateStyle(style, oldCluster, newCluster) {\n      let newStyle = style\n      oldCluster.forEach((color, index) => {\n        newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])\n      })\n      return newStyle\n    },\n\n    getCSSString(url, variable) {\n      return new Promise(resolve => {\n        const xhr = new XMLHttpRequest()\n        xhr.onreadystatechange = () => {\n          if (xhr.readyState === 4 && xhr.status === 200) {\n            this[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '')\n            resolve()\n          }\n        }\n        xhr.open('GET', url)\n        xhr.send()\n      })\n    },\n\n    getThemeCluster(theme) {\n      const tintColor = (color, tint) => {\n        let red = parseInt(color.slice(0, 2), 16)\n        let green = parseInt(color.slice(2, 4), 16)\n        let blue = parseInt(color.slice(4, 6), 16)\n\n        if (tint === 0) { // when primary color is in its rgb space\n          return [red, green, blue].join(',')\n        } else {\n          red += Math.round(tint * (255 - red))\n          green += Math.round(tint * (255 - green))\n          blue += Math.round(tint * (255 - blue))\n\n          red = red.toString(16)\n          green = green.toString(16)\n          blue = blue.toString(16)\n\n          return `#${red}${green}${blue}`\n        }\n      }\n\n      const shadeColor = (color, shade) => {\n        let red = parseInt(color.slice(0, 2), 16)\n        let green = parseInt(color.slice(2, 4), 16)\n        let blue = parseInt(color.slice(4, 6), 16)\n\n        red = Math.round((1 - shade) * red)\n        green = Math.round((1 - shade) * green)\n        blue = Math.round((1 - shade) * blue)\n\n        red = red.toString(16)\n        green = green.toString(16)\n        blue = blue.toString(16)\n\n        return `#${red}${green}${blue}`\n      }\n\n      const clusters = [theme]\n      for (let i = 0; i <= 9; i++) {\n        clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))\n      }\n      clusters.push(shadeColor(theme, 0.1))\n      return clusters\n    }\n  }\n}\n</script>\n\n<style>\n.theme-message,\n.theme-picker-dropdown {\n  z-index: 99999 !important;\n}\n\n.theme-picker .el-color-picker__trigger {\n  height: 26px !important;\n  width: 26px !important;\n  padding: 2px;\n}\n\n.theme-picker-dropdown .el-color-dropdown__link-btn {\n  display: none;\n}\n</style>\n"]}]}