mp-darkmode 1.1.5 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/darkmode.js CHANGED
@@ -3178,7 +3178,9 @@ var DomUtils = /*#__PURE__*/function () {
3178
3178
  }, {
3179
3179
  key: "hasDelay",
3180
3180
  value: function hasDelay() {
3181
- return this._delayEls.length > 0;
3181
+ if (this._els.length) return false; // 有节点,即不含延迟处理的节点
3182
+
3183
+ return this._delayEls.length > 0 || _config__WEBPACK_IMPORTED_MODULE_0__["default"].container !== null; // 否则需要判断延迟节点的列表和容器
3182
3184
  }
3183
3185
  }, {
3184
3186
  key: "addFirstPageNode",
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://Darkmode/webpack/universalModuleDefinition","webpack://Darkmode/webpack/bootstrap","webpack://Darkmode/./node_modules/color-convert/conversions.js","webpack://Darkmode/./node_modules/color-convert/index.js","webpack://Darkmode/./node_modules/color-convert/node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-convert/route.js","webpack://Darkmode/./node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-string/index.js","webpack://Darkmode/./node_modules/color/index.js","webpack://Darkmode/./node_modules/is-arrayish/index.js","webpack://Darkmode/./node_modules/simple-swizzle/index.js","webpack://Darkmode/./src/darkmode.js","webpack://Darkmode/./src/modules/bgNodeStack.js","webpack://Darkmode/./src/modules/config.js","webpack://Darkmode/./src/modules/constant.js","webpack://Darkmode/./src/modules/cssUtils.js","webpack://Darkmode/./src/modules/domUtils.js","webpack://Darkmode/./src/modules/global.js","webpack://Darkmode/./src/modules/plugins.js","webpack://Darkmode/./src/modules/sdk.js","webpack://Darkmode/./src/modules/textNodeQueue.js"],"names":["classReg","RegExp","CLASS_PREFIX","mql","switchToDarkmode","mqlObj","opt","type","force","cssUtils","isFinish","sdk","isDarkmode","config","mode","matches","begin","domUtils","hasDelay","Array","prototype","forEach","call","get","node","className","replace","plugins","length","needJudgeFirstPage","addCss","convert","rect","getBoundingClientRect","top","bottom","PAGE_HEIGHT","addFirstPageNode","writeStyle","showFirstPageNodes","showFirstPage","loopTimes","tnQueue","text","bgStack","contains","bg","genCss","cssKV","emptyFirstPageNodes","delayBgJudge","container","delay","e","console","log","error","run","nodes","init","set","hasInit","tagName","whitelist","attribute","item","toUpperCase","indexOf","push","document","getElementsByTagName","classList","add","HTML_CLASS","window","matchMedia","MEDIA_QUERY","addListener","convertBg","update","updateStyle","styles","Object","keys","map","key","undefined","getContrast","color1","color2","extend","pluginList","plugin","BgNodeStack","prefix","_prefix","classNameReg","el","_idx","_stack","unshift","updated","callback","idxStack","i","bgRect","left","right","splice","shift","els","some","nodeType","cssSelectorsPrefix","defaultLightTextColor","DEFAULT_LIGHT_TEXTCOLOR","defaultLightBgColor","DEFAULT_LIGHT_BGCOLOR","defaultDarkTextColor","DEFAULT_DARK_TEXTCOLOR","defaultDarkBgColor","DEFAULT_DARK_BGCOLOR","value","HTMLElement","DM_CLASSNAME_REGEXP","RANDOM","Date","Math","round","random","COLORATTR","BGCOLORATTR","ORIGINAL_COLORATTR","ORIGINAL_BGCOLORATTR","BGIMAGEATTR","BG_COLOR_DELIMITER","WHITE_LIKE_COLOR_BRIGHTNESS","MAX_LIMIT_BGCOLOR_BRIGHTNESS","MIN_LIMIT_OFFSET_BRIGHTNESS","HIGH_BGCOLOR_BRIGHTNESS","HIGH_BLACKWHITE_HSL_BRIGHTNESS","LOW_BLACKWHITE_HSL_BRIGHTNESS","IGNORE_ALPHA","getInnerHeight","innerHeight","documentElement","clientHeight","TABLE_NAME","IMPORTANT_REGEXP","SEMICOLON_PLACEHOLDER","SEMICOLON_PLACEHOLDER_REGEXP","CssUtils","val","css","isFirstPageStyle","target","needMediaQuery","concat","first","other","styleKey","style","join","head","insertAdjacentHTML","getChildrenAndIt","querySelectorAll","hasTextNode","cnt","childNodes","child","nodeValue","tableClassObj","hasTableClass","color","DomUtils","_els","res","_delayEls","_firstPageEls","visibility","Plugins","TextNodeQueue","SDK","cssNeedMQ","cssNoMQ","Plugin","kvList","genCssKV","_plugins","name","args","firstPageStyle","firstPageStyleNoMQ","otherPageStyle","otherPageStyleNoMQ","ColorParser","Color","ColorName","windowtext","transparent","colorNameReg","colorName","colorReg","colorRegGlobal","removeImportant","parseColor","parseTransparent","match","toLowerCase","toString","mixColor","colors","retColorStr","nextColorStr","retColor","nextColor","mix","alpha","parseWebkitFillColorAndStrokeColor","newValue","test","getColorPerceivedBrightness","rgb","adjustBrightnessByLimit","limitBright","relativeBrightnessRatio","newTextR","min","newTextG","newTextB","getLuminanace","srgb","pow","rgb1","rgb2","lum1","lum2","array","hsl","_defaultDarkTextColorRgb","_defaultDarkBgColorRgb","_defaultDarkBgColorHSL","_defaultDarkTextColorBrightness","_defaultDarkBgColorBrightness","textColor","bgColor","bgColorRgb","bgColorAlpha","bgColorPerceivedBrightness","bgColorWithOpacityPerceivedBrightness","textColorRgb","textColorHSL","textColorAlpha","textPerceivedBrightness","offsetPerceivedBrightness","abs","_maxLimitOffsetBrightness","tmpTextColor","_adjustTextBrightness","bgColorHsl","newColor","_defaultDarkBgColorHslBrightness","options","isUpdate","extStyle","isBgColor","_adjustBackgroundBrightness","hasInlineColor","parentTextColorStr","parentTextColor","ret","_adjustBrightness","isTextColor","parentElementBgColorStr","isBorderColor","parentElementBgColor","emit","fontColor","isTextShadow","func","cssKVList","resetCss","bgCss","nodeName","hasAttribute","cssText","split","cssStr","splitIdx","slice","hasInlineBackground","hasInlineBackgroundImage","elBackgroundPositionAttr","elBackgroundSizeAttr","filter","sort","key1","key2","_try","colorStr","getAttribute","webkitFillColor","webkitStrokeColor","webkitTextLen","idx","dmClassName","dmBgClassName","oldValue","cssChange","textColorIdx","isGradient","gradientColors","gradientMixColor","exec","replaceIndex","matchColor","dom","SVGElement","isBackgroundAttr","isBorderImageAttr","imgBgColor","newBackgroundPositionValue","newBackgroundSizeValue","tmpCssKvStr","colorStr1","colorStr2","_queue"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA,kBAAkB,mBAAO,CAAC,iFAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,QAAQ;AAC/B,gBAAgB,OAAO,QAAQ;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE;;AAEtE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,EAAE,UAAU,EAAE;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACn2BA,kBAAkB,mBAAO,CAAC,kEAAe;AACzC,YAAY,mBAAO,CAAC,sDAAS;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED;;;;;;;;;;;;;AC7EY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA,kBAAkB,mBAAO,CAAC,kEAAe;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;;AAEA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,SAAS;AAC9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;AC/FY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA;AACA,iBAAiB,mBAAO,CAAC,sDAAY;AACrC,cAAc,mBAAO,CAAC,8DAAgB;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,IAAI;AAC7B,wBAAwB,EAAE,WAAW,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,IAAI;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,IAAI;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACjPa;;AAEb,kBAAkB,mBAAO,CAAC,0DAAc;AACxC,cAAc,mBAAO,CAAC,4DAAe;;AAErC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,qEAAqE,kCAAkC,EAAE;;AAEzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA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","file":"darkmode.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Darkmode\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Darkmode\"] = factory();\n\telse\n\t\troot[\"Darkmode\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/darkmode.js\");\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/**\n * @name Darkmode主入口\n *\n * @function run 配置并处理\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @param {Object} opt Dark Mode配置,详见init配置说明\n *\n * @function init 初始化Dark Mode配置\n * @param {Function} opt.begin 开始处理时触发的回调\n * @param {Function} opt.showFirstPage 首屏处理完成时触发的回调\n * @param {Function} opt.error 发生error时触发的回调\n * @param {string} opt.mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @param {Object} opt.whitelist 节点白名单\n * @param {Array} opt.whitelist.tagName 标签名列表\n * @param {Array} opt.whitelist.attribute 属性列表\n * @param {boolean} opt.needJudgeFirstPage 是否需要判断首屏\n * @param {boolean} opt.delayBgJudge 是否延迟背景判断\n * @param {DOM Object} opt.container 延迟运行js时使用的容器\n * @param {string} opt.cssSelectorsPrefix css选择器前缀\n * @param {string} opt.defaultLightTextColor 非Dark Mode下字体颜色\n * @param {string} opt.defaultLightBgColor 非Dark Mode下背景颜色\n * @param {string} opt.defaultDarkTextColor Dark Mode下字体颜色\n * @param {string} opt.defaultDarkBgColor Dark Mode下背景颜色\n *\n * @function convertBg 处理背景\n * @param {DOM Object Array} nodes 要处理的节点列表\n *\n * @function updateStyle 更新节点Dark Mode样式\n * @param {DOM Object} node 要更新的节点\n * @param {Object} styles 更新的样式键值对对象,如:{ color: '#ddd' }\n *\n * @function getContrast 获取两个颜色的对比度\n * @param {string} color1 要计算颜色对比度的颜色1,支持css颜色格式\n * @param {string} color2 要计算颜色对比度的颜色2,支持css颜色格式\n * @return {number} contrast 颜色对比度,取值范围为`[1, 21]`\n *\n * @function extend 挂载插件\n * @param {Array} pluginList 插件列表\n *\n */\n\nimport {\n MEDIA_QUERY,\n CLASS_PREFIX,\n HTML_CLASS,\n PAGE_HEIGHT\n} from './modules/constant';\nconst classReg = new RegExp(`${CLASS_PREFIX}[^ ]+`, 'g');\n\n// Darkmode配置\nimport config from './modules/config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils, // 样式相关操作工具对象\n domUtils, // 节点相关操作工具对象\n sdk\n} from './modules/global';\n\n// Dark Mode切换\nlet mql = null;\nconst switchToDarkmode = (mqlObj, opt = {\n type: 'dom'\n}) => {\n opt.force && (cssUtils.isFinish = false); // 如果是强制运行Dark Mode处理逻辑,则重置为未运行\n\n if (cssUtils.isFinish) return; // 已运行过Dark Mode处理逻辑则不再运行\n\n try {\n sdk.isDarkmode = config.mode ? (config.mode === 'dark') : mqlObj.matches;\n\n if (opt.type === 'dom') { // 处理节点\n sdk.isDarkmode && typeof config.begin === 'function' && config.begin(domUtils.hasDelay());\n\n Array.prototype.forEach.call(domUtils.get(), node => {\n if (sdk.isDarkmode && node.className && typeof node.className === 'string') {\n node.className = node.className.replace(classReg, ''); // 过滤掉原有的Dark Mode class,避免外部复制文章时把文章内的Dark Mode class也复制过去导致新文章在Dark Mode下样式错乱\n }\n\n if (sdk.isDarkmode || plugins.length) {\n if (!config.needJudgeFirstPage) { // 不需要判断首屏\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else { // 判断首屏\n const rect = node.getBoundingClientRect();\n const top = rect.top;\n const bottom = rect.bottom;\n if (top <= 0 && bottom <= 0) { // 首屏前面\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else if ((top > 0 && top < PAGE_HEIGHT) || (bottom > 0 && bottom < PAGE_HEIGHT)) { // 首屏\n domUtils.addFirstPageNode(node); // 记录首屏节点\n cssUtils.addCss(sdk.convert(node), true); // 写入首屏样式\n } else { // 首屏后面,理论上,这里最多只会进来一次\n config.needJudgeFirstPage = false; // 至此,不需要再判断首屏了\n\n // 显示首屏\n cssUtils.writeStyle(true); // 写入首屏样式表\n domUtils.showFirstPageNodes(); // 显示首屏节点\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n }\n }\n }\n });\n\n plugins.loopTimes++;\n } else if (opt.type === 'bg') { // 处理背景\n sdk.isDarkmode && tnQueue.forEach(text => bgStack.contains(text, bg => {\n cssUtils.addCss(cssUtils.genCss(bg.className, bg.cssKV)); // 写入非首屏样式\n }));\n }\n\n if (config.needJudgeFirstPage || (!config.needJudgeFirstPage && !domUtils.showFirstPage)) {\n // config.needJudgeFirstPage === ture,表示需要判断首屏但是正文长度没超过一屏\n // config.needJudgeFirstPage === false && domUtils.showFirstPage === false,表示不需要判断首屏且没有做首屏优化\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n }\n cssUtils.writeStyle(); // 写入非首屏样式表\n domUtils.emptyFirstPageNodes(); // 清空记录的首屏节点\n\n if (!sdk.isDarkmode) { // 非Dark Mode\n // 首次加载页面时为非Dark Mode,标记为不需要判断首屏\n config.needJudgeFirstPage = false;\n\n // 首次加载页面时为非Dark Mode,标记为不延迟判断背景\n config.delayBgJudge = false;\n\n if (config.container === null && opt.type === 'dom' && domUtils.length) {\n domUtils.delay(); // 将节点转移到延迟处理队列里\n }\n }\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n};\n\nexport function run(nodes, opt) {\n init(opt); // 初始化配置\n\n domUtils.set(nodes);\n\n switchToDarkmode(mql, {\n force: true,\n type: 'dom'\n });\n};\n\nexport function init(opt = {}) {\n if (config.hasInit) return; // 只可设置一次配置\n\n config.hasInit = true; // 记录为配置已设置\n\n const tagName = config.whitelist.tagName;\n const attribute = config.whitelist.attribute;\n if (opt.whitelist) {\n opt.whitelist.tagName instanceof Array && opt.whitelist.tagName.forEach(item => {\n item = item.toUpperCase();\n tagName.indexOf(item) === -1 && tagName.push(item);\n });\n opt.whitelist.attribute instanceof Array && opt.whitelist.attribute.forEach(item => {\n attribute.indexOf(item) === -1 && attribute.push(item);\n });\n }\n\n if (['dark', 'light'].indexOf(opt.mode) > -1) {\n config.set('string', opt, 'mode');\n opt.mode === 'dark' && document.getElementsByTagName('html')[0].classList.add(HTML_CLASS);\n }\n\n config.set('function', opt, 'begin');\n config.set('function', opt, 'showFirstPage');\n config.set('function', opt, 'error');\n config.set('boolean', opt, 'needJudgeFirstPage');\n config.set('boolean', opt, 'delayBgJudge');\n config.set('dom', opt, 'container');\n config.set('string', opt, 'cssSelectorsPrefix');\n config.set('string', opt, 'defaultLightTextColor');\n config.set('string', opt, 'defaultLightBgColor');\n config.set('string', opt, 'defaultDarkTextColor');\n config.set('string', opt, 'defaultDarkBgColor');\n\n if (!config.mode && mql === null && window.matchMedia) {\n // 匹配媒体查询\n mql = window.matchMedia(MEDIA_QUERY);\n mql.addListener(switchToDarkmode); // 监听\n }\n};\n\nexport function convertBg(nodes) {\n domUtils.set(nodes);\n\n if (config.container !== null) {\n bgStack.update(nodes); // 更新背景堆栈\n tnQueue.update(nodes); // 更新文字队列\n }\n\n switchToDarkmode(mql, {\n force: true,\n type: 'bg'\n });\n};\n\nexport function updateStyle(node, styles) {\n if (!cssUtils.isFinish) return; // 没有运行过Dark Mode处理逻辑则无需运行\n cssUtils.addCss(sdk.convert(node, styles ? Object.keys(styles).map(key => [key, styles[key]]) : undefined, true), false);\n cssUtils.writeStyle();\n};\n\nexport function getContrast(color1, color2) {\n return sdk.getContrast(color1, color2);\n};\n\nexport function extend(pluginList) {\n pluginList.forEach(plugin => plugins.extend(plugin));\n};","/**\n * @name 需要判断位置的背景节点堆栈\n *\n * @class BgNodeStack\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 背景节点入栈\n * @param {DOM Object} el 背景节点对象\n * @param {string} cssKV css键值对\n *\n * @method contains 判断节点是否在背景节点的区域\n * @param {DOM Object} el 要判断的节点对象(非背景节点)\n * @param {Function} callback 如果在背景节点区域内,则执行该回调函数\n *\n * @method update 更新堆栈的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class BgNodeStack {\n _stack = []; // 需要判断位置的背景堆栈,{ el, className, cssKV, updated, rect }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n this.classNameReg = new RegExp(`${this._prefix}\\\\d+`);\n }\n\n push(el, cssKV) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._stack.unshift({\n el,\n className,\n cssKV,\n updated: !config.delayBgJudge\n });\n }\n\n contains(el, callback) {\n const rect = el.getBoundingClientRect();\n const idxStack = [];\n\n this._stack.forEach((item, i) => {\n if (item.updated) {\n if (!item.rect) item.rect = item.el.getBoundingClientRect();\n\n const bgRect = item.rect;\n if (!(\n rect.top >= bgRect.bottom\n || rect.bottom <= bgRect.top\n || rect.left >= bgRect.right\n || rect.right <= bgRect.left\n )) { // 表示节点在背景图内\n idxStack.unshift(i);\n }\n }\n });\n\n while (idxStack.length) {\n const item = this._stack.splice(idxStack.shift(), 1)[0];\n typeof callback === 'function' && callback(item);\n }\n }\n\n update(els) {\n this._stack.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n","/**\n * @name Darkmode配置\n *\n * @attr {boolean} hasInit 是否初始化过配置\n * @attr {Function} begin 开始处理时触发的回调\n * @attr {Function} showFirstPage 首屏处理完成时触发的回调\n * @attr {Function} error 发生error时触发的回调\n * @attr {string} mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @attr {Object} whitelist 节点白名单\n * @attr {string Array} whitelist.tagName 标签名列表\n * @attr {boolean} needJudgeFirstPage 是否需要判断首屏\n * @attr {boolean} delayBgJudge 是否延迟背景判断\n * @attr {DOM Object} container 延迟运行js时使用的容器\n * @attr {string} cssSelectorsPrefix css选择器前缀\n * @attr {string} defaultLightTextColor 非Dark Mode下字体颜色\n * @attr {string} defaultLightBgColor 非Dark Mode下背景颜色\n * @attr {string} defaultDarkTextColor Dark Mode下字体颜色\n * @attr {string} defaultDarkBgColor Dark Mode下背景颜色\n *\n * @method set 设置配置\n * @param {string} type 要处理的节点\n * @param {Object} opt 传入的配置对象\n * @param {string} key 配置名\n *\n */\n\nimport {\n DEFAULT_LIGHT_TEXTCOLOR,\n DEFAULT_LIGHT_BGCOLOR,\n DEFAULT_DARK_TEXTCOLOR,\n DEFAULT_DARK_BGCOLOR\n} from './constant';\n\nconst config = {\n hasInit: false,\n\n // hooks\n begin: null,\n showFirstPage: null,\n error: null,\n\n mode: '',\n whitelist: {\n tagName: ['MPCPS', 'IFRAME'],\n attribute: [],\n },\n needJudgeFirstPage: true,\n delayBgJudge: false,\n container: null,\n cssSelectorsPrefix: '',\n defaultLightTextColor: DEFAULT_LIGHT_TEXTCOLOR,\n defaultLightBgColor: DEFAULT_LIGHT_BGCOLOR,\n defaultDarkTextColor: DEFAULT_DARK_TEXTCOLOR,\n defaultDarkBgColor: DEFAULT_DARK_BGCOLOR,\n\n // 设置配置\n set(type, opt, key) {\n const value = opt[key];\n switch (type) {\n case 'boolean':\n typeof value === 'boolean' && (this[key] = value);\n break;\n case 'string':\n typeof value === 'string' && value !== '' && (this[key] = value);\n break;\n case 'function':\n typeof value === 'function' && (this[key] = value);\n break;\n case 'dom':\n value instanceof HTMLElement && (this[key] = value);\n break;\n default:\n }\n }\n};\n\nexport default config;\n","/**\n * @name 常量\n *\n */\n\nexport const MEDIA_QUERY = '(prefers-color-scheme: dark)'; // Dark Mode的CSS媒体查询\n\nexport const CLASS_PREFIX = 'js_darkmode__'; // Dark Mode class前缀\nexport const DM_CLASSNAME_REGEXP = new RegExp(`${CLASS_PREFIX}\\\\d+`);\n\nexport const HTML_CLASS = 'data_color_scheme_dark'; // 强制设置暗黑模式时给html加的class\n\nconst RANDOM = `${new Date() * 1}${Math.round(Math.random() * 10)}`; // 生成个随机数,格式为时间戳+随机数\nexport const COLORATTR = `data-darkmode-color-${RANDOM}`; // dm color,即算法生成的新色值,单个\nexport const BGCOLORATTR = `data-darkmode-bgcolor-${RANDOM}`; // dm bg-color,即算法生成的新色值,有多个,用BG_COLOR_DELIMITER分割\nexport const ORIGINAL_COLORATTR = `data-darkmode-original-color-${RANDOM}`; // lm color,即原色值,单个\nexport const ORIGINAL_BGCOLORATTR = `data-darkmode-original-bgcolor-${RANDOM}`; // lm bg-color,即原色值,有多个,用BG_COLOR_DELIMITER分割\nexport const BGIMAGEATTR = `data-darkmode-bgimage-${RANDOM}`;\nexport const BG_COLOR_DELIMITER = '|';\n\nexport const DEFAULT_LIGHT_TEXTCOLOR = '#191919'; // 非Dark Mode下字体颜色\nexport const DEFAULT_LIGHT_BGCOLOR = '#fff'; // 非Dark Mode下背景颜色\nexport const DEFAULT_DARK_TEXTCOLOR = '#a3a3a3'; // Dark Mode下字体颜色,前景色:rgba(255,255,255,0.6) 背景色:#191919\nexport const DEFAULT_DARK_BGCOLOR = '#191919'; // Dark Mode下背景颜色\n\nexport const WHITE_LIKE_COLOR_BRIGHTNESS = 250; // 接近白色的感知亮度阈值\nexport const MAX_LIMIT_BGCOLOR_BRIGHTNESS = 190;\nexport const MIN_LIMIT_OFFSET_BRIGHTNESS = 65;\nexport const HIGH_BGCOLOR_BRIGHTNESS = 100;\nexport const HIGH_BLACKWHITE_HSL_BRIGHTNESS = 40;\nexport const LOW_BLACKWHITE_HSL_BRIGHTNESS = 22;\nexport const IGNORE_ALPHA = 0.05; // 忽略的透明度阈值\n\nexport const PAGE_HEIGHT = (window.getInnerHeight && window.getInnerHeight())\n || window.innerHeight\n || document.documentElement.clientHeight;\n\nexport const TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标签列表\n\nexport const IMPORTANT_REGEXP = / !important$/; // !important\n\nexport const SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符\nexport const SEMICOLON_PLACEHOLDER_REGEXP = /<\\$#_SEMICOLON_#\\$>/g;\n","/**\n * @name 样式相关操作工具对象\n *\n * @class CssUtils\n *\n * @attr {boolean} isFinish 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n *\n * @method genCssKV 生成css键值对\n * @param {string} key css属性\n * @param {string} val css值\n * @return {string} css键值对\n *\n * @method genCss 生成css,包括css选择器\n * @param {string} className DOM节点类名\n * @param {string} cssKV css键值对\n * @return {string} css\n *\n * @method addCss 加入css\n * @param {string} css css样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n * @method writeStyle 写入样式表\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n */\n\nimport {\n MEDIA_QUERY,\n HTML_CLASS,\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n sdk\n} from './global';\n\nexport default class CssUtils {\n _firstPageStyle = ''; // 首屏样式\n _otherPageStyle = ''; // 非首屏样式\n\n isFinish = false;\n\n constructor() {}\n\n genCssKV(key, val) {\n return `${key}: ${val} !important;`;\n }\n\n genCss(className, cssKV) {\n return `${config.mode === 'dark' ? `html.${HTML_CLASS} ` : ''}${config.cssSelectorsPrefix && `${config.cssSelectorsPrefix} `}.${className}{${cssKV}}`;\n }\n\n addCss(css, isFirstPageStyle = false) {\n this[isFirstPageStyle ? '_firstPageStyle' : '_otherPageStyle'] += css;\n plugins.addCss(isFirstPageStyle);\n }\n\n writeStyle(isFirstPageStyle = false) {\n !isFirstPageStyle && sdk.isDarkmode && (this.isFinish = true); // 在Dark Mode下一旦写入了非首屏样式表,则认为已经运行过Dark Mode处理逻辑\n\n // 获取样式表内容\n const styles = (sdk.isDarkmode ? [{\n target: this,\n key: ['_firstPageStyle', '_otherPageStyle'],\n needMediaQuery: true\n }] : []).concat([{\n target: plugins,\n key: ['firstPageStyle', 'otherPageStyle'],\n needMediaQuery: true\n }, {\n target: plugins,\n key: ['firstPageStyleNoMQ', 'otherPageStyleNoMQ'],\n needMediaQuery: false\n }]).map(({\n target,\n key: [first, other],\n needMediaQuery\n }) => {\n let styleKey = '';\n if (!isFirstPageStyle) { // 如果是写入非首屏样式表,则连同首屏样式一起写入\n target[other] = target[first] + target[other];\n target[first] = '';\n styleKey = other;\n } else {\n styleKey = first;\n }\n\n const style = target[styleKey];\n if (style) {\n target[styleKey] = ''; // 写入样式表后清空内存中的数据\n return (config.mode === 'dark' || !needMediaQuery) ? style : `@media ${MEDIA_QUERY} {${style}}`;\n }\n return '';\n }).join('');\n\n // 写入样式表\n styles && document.head.insertAdjacentHTML('beforeend', `<style type=\"text/css\">${styles}</style>`);\n }\n};\n","/**\n * @name 节点相关操作工具API\n *\n * @function getChildrenAndIt 获取某个节点及它的所有子节点\n * @param {DOM Object} el 节点对象\n * @return {DOM Object Array} 节点对象列表\n *\n * @function hasTextNode 判断某个节点里是否包含文字节点\n * @param {DOM Object} el 节点对象\n * @return {boolean} 判断结果\n *\n * @function hasTableClass 判断table相关元素有没有指定class\n * @param {DOM Object} el 节点对象\n * @return {string | null} 判断结果,如果有,返回class对应的lm色值,否则返回null\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n sdk\n} from './global';\n\nexport function getChildrenAndIt(el) {\n return [el].concat(...el.querySelectorAll('*'));\n};\n\nexport function hasTextNode(el) {\n let cnt = '';\n Array.prototype.forEach.call(el.childNodes, child => {\n if (child.nodeType === 3) {\n cnt += child.nodeValue.replace(/\\s/g, ''); // 不考虑空白字符\n }\n });\n return cnt.length > 0;\n};\n\n// table的内部样式类对应的lm背景色\nconst tableClassObj = {\n 'ue-table-interlace-color-single': '#fcfcfc',\n 'ue-table-interlace-color-double': '#f7faff'\n};\nexport function hasTableClass(el) {\n let color = null;\n\n Array.prototype.some.call(el.classList, className => {\n if (tableClassObj[className]) {\n color = tableClassObj[className];\n return true;\n }\n return false;\n });\n\n return color;\n};\n\n/**\n * @name 节点相关操作工具对象\n *\n * @class DomUtils\n *\n * @attr {number} length 要处理的节点列表长度\n * @attr {boolean} showFirstPage 是否已显示首屏\n *\n * @method set 设置要处理的节点列表\n * @param {DOM Object Array} els 要处理的节点列表\n *\n * @method get 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n * @return {DOM Object Array} 要处理的节点列表\n *\n * @method delay 将所有要处理的节点转移到延迟处理队列里\n *\n * @method hasDelay 判断是否包含延迟处理的节点\n * @return {boolean} 判断结果\n *\n * @method addFirstPageNode 添加首屏节点\n * @param {DOM Object} el 要添加的首屏节点\n *\n * @method showFirstPageNodes 显示所有首屏节点\n *\n * @method emptyFirstPageNodes 清空记录的首屏节点\n *\n */\n\nexport class DomUtils {\n _els = []; // 要处理的节点列表\n _firstPageEls = []; // 首屏节点列表\n _delayEls = []; // 延迟处理的节点列表\n\n showFirstPage = false; // 是否已显示首屏\n\n constructor() {}\n\n get length() {\n return this._els.length;\n }\n\n set(els = []) {\n this._els = els;\n }\n\n get() {\n let res = [];\n\n if (this._els.length) { // 有节点\n res = this._els;\n sdk.isDarkmode && (this._els = []);\n } else { // 如果没有节点\n if (this._delayEls.length) { // 有延迟节点,则使用延迟节点\n res = this._delayEls;\n this._delayEls = [];\n } else if (config.container) { // 没有延迟节点,但有容器,重新获取容器内的节点\n res = config.container.querySelectorAll('*');\n }\n }\n\n return res;\n }\n\n delay() {\n Array.prototype.forEach.call(this._els, el => this._delayEls.push(el)); // 转移到延迟处理的节点里\n this._els = []; // 转移后清空列表\n }\n\n hasDelay() {\n return this._delayEls.length > 0;\n }\n\n addFirstPageNode(el) {\n this._firstPageEls.push(el);\n }\n\n showFirstPageNodes() {\n this._firstPageEls.forEach(el => !el.style.visibility && (el.style.visibility = 'visible')); // 显示首屏节点\n this.showFirstPage = true; // 记录为已显示首屏\n }\n\n emptyFirstPageNodes() {\n this._firstPageEls = [];\n }\n};\n","/**\n * @name 全局作用域\n *\n */\n\nimport {\n CLASS_PREFIX\n} from './constant';\n\n// 插件系统\nimport Plugins from './plugins';\nexport const plugins = new Plugins();\n\n// 文本节点队列\nimport TextNodeQueue from './textNodeQueue';\nexport const tnQueue = new TextNodeQueue(`${CLASS_PREFIX}text__`);\n\n// 需要判断位置的背景节点堆栈\nimport BgNodeStack from './bgNodeStack';\nexport const bgStack = new BgNodeStack(`${CLASS_PREFIX}bg__`);\n\n// 样式相关操作工具对象\nimport CssUtils from './cssUtils';\nexport const cssUtils = new CssUtils();\n\n// 节点相关操作工具对象\nimport {\n DomUtils\n} from './domUtils';\nexport const domUtils = new DomUtils();\n\n// sdk\nimport SDK from './sdk';\nexport const sdk = new SDK();\n","/**\n * @name 插件基类\n *\n * @class Plugin\n *\n * @attr {number} loopTimes 遍历次数(全部节点遍历结束算一次)\n * @attr {boolean} isDarkmode 是否为Dark Mode\n *\n * @method addCss 添加样式\n * @param {string} className DOM节点类名\n * @param {Array} kvList css键值对列表\n * @param {string} kvList[0].key css属性\n * @param {string} kvList[0].value css值\n * @param {boolean} needMediaQuery 是否需要添加Dark Mode媒体查询\n *\n */\n\nimport {\n cssUtils, // 样式相关操作工具对象\n plugins, // 插件系统\n sdk\n} from './global';\n\nlet cssNeedMQ = [];\nlet cssNoMQ = [];\n\nclass Plugin {\n constructor() {}\n\n get loopTimes() {\n return plugins.loopTimes;\n }\n\n get isDarkmode() {\n return sdk.isDarkmode;\n }\n\n addCss(className, kvList, needMediaQuery = true) {\n (needMediaQuery ? cssNeedMQ : cssNoMQ).push(cssUtils.genCss(className, kvList.map(({\n key,\n value\n }) => cssUtils.genCssKV(key, value)).join('')));\n }\n}\n\n/**\n * @name 插件系统\n *\n * @class Plugins\n *\n * @attr {number} length 已挂载的插件数量\n * @attr {string} firstPageStyle 首屏样式\n * @attr {string} otherPageStyle 非首屏样式\n * @attr {string} firstPageStyleNoMQ 首屏样式(不需要加媒体查询)\n * @attr {string} otherPageStyleNoMQ 非首屏样式(不需要加媒体查询)\n *\n * @method extend 挂载插件\n * @param {Function} plugin 插件构造函数\n *\n * @method emit 执行插件钩子\n * @param {string} name 钩子名称\n * @param {Any} args 钩子参数\n *\n * @method addCss 写入插件样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n * @method resetCss 重置插件样式\n *\n */\n\nexport default class Plugins {\n _plugins = []; // 已挂载的插件列表\n\n length = 0; // 已挂载的插件数量\n loopTimes = 0; // 已遍历次数\n firstPageStyle = ''; // 首屏样式\n otherPageStyle = ''; // 非首屏样式\n firstPageStyleNoMQ = ''; // 首屏样式(不需要加媒体查询)\n otherPageStyleNoMQ = ''; // 非首屏样式(不需要加媒体查询)\n\n constructor() {}\n\n extend(plugin) {\n this._plugins.push(new (plugin(Plugin))());\n this.length++;\n }\n\n emit(name, ...args) {\n this._plugins.forEach(plugin => {\n typeof plugin[name] === 'function' && plugin[name](...args);\n });\n }\n\n addCss(isFirstPageStyle) {\n if (isFirstPageStyle) {\n this.firstPageStyle += cssNeedMQ.join('');\n this.firstPageStyleNoMQ += cssNoMQ.join('');\n } else {\n this.otherPageStyle += cssNeedMQ.join('');\n this.otherPageStyleNoMQ += cssNoMQ.join('');\n }\n }\n\n resetCss() {\n cssNeedMQ = [];\n cssNoMQ = [];\n }\n};\n","/**\n * @name 算法SDK\n *\n * @class SDK\n *\n * @method convert 处理节点\n * @param {DOM Object} el 要处理的节点\n * @return {string} 处理后的css,包含css选择器\n *\n */\n\n// dependencies\nimport Color from 'color';\nconst ColorParser = color => {\n let res = null;\n try {\n res = Color(color);\n } catch (e) {\n console.log(`ignore the invalid color: \\`${color}\\``);\n }\n return res;\n};\nimport ColorName from 'color-name';\nColorName.windowtext = [0, 0, 0]; // 补上这个colorName\nColorName.transparent = [255, 255, 255, 0]; // 支持透明,暂定用白色透明度0来表示\n\nimport {\n CLASS_PREFIX,\n DM_CLASSNAME_REGEXP,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n BG_COLOR_DELIMITER,\n\n WHITE_LIKE_COLOR_BRIGHTNESS,\n MIN_LIMIT_OFFSET_BRIGHTNESS,\n MAX_LIMIT_BGCOLOR_BRIGHTNESS,\n HIGH_BGCOLOR_BRIGHTNESS,\n HIGH_BLACKWHITE_HSL_BRIGHTNESS,\n LOW_BLACKWHITE_HSL_BRIGHTNESS,\n IGNORE_ALPHA,\n\n TABLE_NAME,\n\n IMPORTANT_REGEXP,\n\n SEMICOLON_PLACEHOLDER,\n SEMICOLON_PLACEHOLDER_REGEXP\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils // 样式相关操作工具对象\n} from './global';\n\n// 节点相关操作工具API\nimport {\n getChildrenAndIt,\n hasTextNode,\n hasTableClass\n} from './domUtils';\n\nconst colorNameReg = new RegExp(Object.keys(ColorName).map(colorName => `\\\\b${colorName}\\\\b`).join('|'), 'ig'); // 生成正则表达式来匹配这些colorName\nconst colorReg = /\\brgba?\\([^)]+\\)/i;\nconst colorRegGlobal = /\\brgba?\\([^)]+\\)/ig;\nconst removeImportant = value => value.replace(IMPORTANT_REGEXP, ''); // 清除!important\nconst parseColor = (value, parseTransparent) => removeImportant(value).replace(colorNameReg, match => { // 处理颜色,包括清除!important和转换英文定义颜色\n if (!parseTransparent && match === 'transparent') return match; // 如果不转换transparent,直接返回transparent\n\n const color = ColorName[match.toLowerCase()];\n return `${color.length > 3 ? 'rgba' : 'rgb'}(${color.toString()})`;\n});\n\n// 计算mix颜色\nconst mixColor = colors => {\n if (!colors || colors.length < 1) return '';\n if (colors.length === 1) return colors[0];\n\n let retColorStr = colors.shift();\n let nextColorStr = colors.shift();\n while (nextColorStr) {\n const retColor = ColorParser(retColorStr);\n const nextColor = ColorParser(nextColorStr);\n if (!retColor && nextColor) { // 如果当前色值非法,混入色值合法,则直接使用混入色值\n retColorStr = nextColorStr;\n } else if (!retColor && !nextColor) { // 如果两个色值都非法,则使用下一批色值\n retColorStr = colors.shift() || '';\n } else if (retColor && nextColor) { // 如果两个色值都合法,执行mix\n retColorStr = retColor.mix(nextColor, nextColor.alpha());\n } // 如果当前色值合法,混入色值非法,无需处理\n nextColorStr = colors.shift();\n }\n\n return retColorStr;\n};\n\n// 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\nconst parseWebkitFillColorAndStrokeColor = value => {\n const newValue = parseColor(value);\n return colorReg.test(newValue) ? newValue : '';\n};\n\n// 计算感知亮度\nconst getColorPerceivedBrightness = rgb => (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n// 调整为指定感知亮度\nconst adjustBrightnessByLimit = (limitBright, rgb) => {\n const relativeBrightnessRatio = limitBright / getColorPerceivedBrightness(rgb);\n let newTextR = Math.min(255, rgb[0] * relativeBrightnessRatio);\n let newTextG = Math.min(255, rgb[1] * relativeBrightnessRatio);\n let newTextB = Math.min(255, rgb[2] * relativeBrightnessRatio);\n if (newTextG === 0 || newTextR === 255 || newTextB === 255) {\n newTextG = (limitBright * 1000 - newTextR * 299 - newTextB * 114) / 587;\n } else if (newTextR === 0) {\n newTextR = (limitBright * 1000 - newTextG * 587 - newTextB * 114) / 299;\n } else if (newTextB === 0 || newTextG === 255) {\n newTextB = (limitBright * 1000 - newTextR * 299 - newTextG * 587) / 114;\n }\n return Color.rgb(newTextR, newTextG, newTextB);\n};\n\n// 计算亮度,用作对比度计算\nconst getLuminanace = rgb => {\n const srgb = rgb.map(val => {\n val /= 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n });\n return srgb[0] * 0.2126 + srgb[1] * 0.7152 + srgb[2] * 0.0722;\n};\n\n// 计算对比度 https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-procedure\nconst getContrast = (rgb1, rgb2) => {\n const lum1 = getLuminanace(rgb1);\n const lum2 = getLuminanace(rgb2);\n\n // 亮色 / 暗色\n if (lum1 < lum2) return (lum2 + 0.05) / (lum1 + 0.05);\n return (lum1 + 0.05) / (lum2 + 0.05);\n}\n\nexport default class SDK {\n _idx = 0; // 索引值\n _defaultDarkTextColorRgb = ColorParser(config.defaultDarkTextColor).rgb().array();\n _defaultDarkBgColorRgb = ColorParser(config.defaultDarkBgColor).rgb().array();\n _defaultDarkBgColorHSL = ColorParser(config.defaultDarkBgColor).hsl().array();\n _defaultDarkTextColorBrightness = getColorPerceivedBrightness(this._defaultDarkTextColorRgb);\n _defaultDarkBgColorBrightness = getColorPerceivedBrightness(this._defaultDarkBgColorRgb);\n _defaultDarkBgColorHslBrightness = this._defaultDarkBgColorHSL[2];\n _maxLimitOffsetBrightness = this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness;\n\n isDarkmode = false; // 当前是否需要运行Darkmode处理\n\n constructor() {}\n\n _adjustTextBrightness(textColor, bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n const bgColorWithOpacityPerceivedBrightness = bgColorPerceivedBrightness * bgColorAlpha\n + this._defaultDarkBgColorBrightness * (1 - bgColorAlpha);\n const textColorRgb = textColor.rgb().array();\n const textColorHSL = textColor.hsl().array();\n const textColorAlpha = textColor.alpha();\n const textPerceivedBrightness = getColorPerceivedBrightness(textColorRgb);\n const offsetPerceivedBrightness = Math.abs(bgColorWithOpacityPerceivedBrightness - textPerceivedBrightness);\n\n // 用户设置为高亮字体颜色(接近白色亮度),不处理,保持高亮\n if (textPerceivedBrightness >= WHITE_LIKE_COLOR_BRIGHTNESS) return textColor;\n\n if (offsetPerceivedBrightness > this._maxLimitOffsetBrightness\n && bgColorWithOpacityPerceivedBrightness <= this._defaultDarkBgColorBrightness + 2) {\n return adjustBrightnessByLimit(this._maxLimitOffsetBrightness + bgColorWithOpacityPerceivedBrightness\n , textColorRgb).alpha(textColorAlpha);\n }\n\n // 如果感知亮度差大于阈值,无需调整\n if (offsetPerceivedBrightness >= MIN_LIMIT_OFFSET_BRIGHTNESS) return textColor;\n\n if (bgColorWithOpacityPerceivedBrightness >= HIGH_BGCOLOR_BRIGHTNESS) { // 亮背景,调暗字体\n if (textColorHSL[2] > 90 - HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到降低感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessByLimit(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness - MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n } else { // 暗背景,调亮字体\n if (textColorHSL[2] <= HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到提高感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessByLimit(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness + MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n }\n }\n\n _adjustBackgroundBrightness(bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorHsl = bgColor.hsl().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n let newColor = bgColor;\n if ((bgColorHsl[1] === 0 && bgColorHsl[2] > HIGH_BLACKWHITE_HSL_BRIGHTNESS)\n || bgColorPerceivedBrightness > WHITE_LIKE_COLOR_BRIGHTNESS) {\n // 饱和度为0(黑白灰色),亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS或感知亮度大于WHITE_LIKE_COLOR_BRIGHTNESS(白色)时,做亮度取反处理\n newColor = Color.hsl(0, 0, Math.min(100, 100 + this._defaultDarkBgColorHslBrightness - bgColorHsl[2]));\n } else if (bgColorPerceivedBrightness > MAX_LIMIT_BGCOLOR_BRIGHTNESS) {\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,将感知亮度设为MAX_LIMIT_BGCOLOR_BRIGHTNESS\n newColor = adjustBrightnessByLimit(MAX_LIMIT_BGCOLOR_BRIGHTNESS, bgColorRgb).alpha(bgColorAlpha);\n // const ratio = (MAX_LIMIT_BGCOLOR_BRIGHTNESS * 1000)\n // / (bgColorRgb[0] * 299 + bgColorRgb[1] * 587 + bgColorRgb[2] * 114);\n // newColor = Color.rgb(bgColorRgb[0] * ratio, bgColorRgb[1] * ratio, bgColorRgb[2] * ratio);\n } else if (bgColorHsl[2] < LOW_BLACKWHITE_HSL_BRIGHTNESS) {\n // 亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS,将亮度设为LOW_BLACKWHITE_HSL_BRIGHTNESS,适当提高亮度\n bgColorHsl[2] = LOW_BLACKWHITE_HSL_BRIGHTNESS;\n newColor = Color.hsl(...bgColorHsl);\n }\n return newColor.alpha(bgColorAlpha).rgb();\n }\n\n // 调整明度\n _adjustBrightness(color, el, options, isUpdate) {\n // 背景:\n // 处理原则:白背景改黑,其他高感知亮度背景调暗,低亮度适当提高亮度(感知亮度:https://www.w3.org/TR/AERT/#color-contrast)\n // 处理方法:\n // 黑白灰色(h=0,s=0)亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,做取反处理;\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,取MAX_LIMIT_BGCOLOR_BRIGHTNESS;\n // 其他亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS时,设为LOW_BLACKWHITE_HSL_BRIGHTNESS。\n\n // 字体、边框:\n // 处理原则:根据调整后的背景颜色和最小亮度差值算出字体颜色,接近白色字体颜色保持不变,带背景图片子元素字体颜色不变\n // 处理方法:亮度小于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,用(90%-该亮度),大于等于HIGH_BLACKWHITE_HSL_BRIGHTNESS则保持不变;\n\n // 字体阴影\n // 处理方法:按照背景的处理方法来处理\n\n const alpha = color.alpha();\n let newColor;\n let extStyle = '';\n\n if (options.isBgColor) { // 背景色\n // 如果设置背景颜色,取消背景图片的影响\n if (el[BGIMAGEATTR] && alpha >= IGNORE_ALPHA) {\n delete el[BGIMAGEATTR];\n }\n\n newColor = this._adjustBackgroundBrightness(color);\n\n if (!options.hasInlineColor) {\n const parentTextColorStr = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n const parentTextColor = ColorParser(parentTextColorStr);\n if (parentTextColor) {\n const ret = this._adjustBrightness(parentTextColor, el, {\n isTextColor: true,\n parentElementBgColorStr: newColor || color\n }, isUpdate);\n if (ret.newColor) {\n extStyle += cssUtils.genCssKV('color', ret.newColor);\n } else {\n extStyle += cssUtils.genCssKV('color', parentTextColor);\n }\n }\n }\n } else if (options.isTextColor || options.isBorderColor) { // 字体色、边框色\n const parentElementBgColorStr = options.parentElementBgColorStr\n || (options.isTextColor && el[BGCOLORATTR])\n || config.defaultDarkBgColor;\n const parentElementBgColor = ColorParser(parentElementBgColorStr);\n\n // 无背景图片\n if (parentElementBgColor && !el[BGIMAGEATTR]) {\n newColor = this._adjustTextBrightness(color, parentElementBgColor);\n plugins.emit(`afterConvertTextColor${isUpdate ? 'ByUpdateStyle' : ''}`, el, {\n // fontColor: color,\n fontColor: newColor,\n bgColor: parentElementBgColor\n });\n }\n } else if (options.isTextShadow) { // 字体阴影\n // 无背景图片\n if (!el[BGIMAGEATTR]) {\n newColor = this._adjustBackgroundBrightness(color); // 按照背景色的方法来处理\n }\n }\n\n return {\n newColor: newColor && color.toString() !== newColor.toString() && newColor.alpha(alpha).rgb(),\n extStyle\n };\n }\n\n _try(func) {\n try {\n return func();\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n }\n\n convert(el, cssKVList, isUpdate) {\n plugins.resetCss();\n plugins.emit(`beforeConvertNode${isUpdate ? 'ByUpdateStyle' : ''}`, el);\n\n let css = ''; // css\n let bgCss = ''; // 文字底图css\n\n if (this.isDarkmode || isUpdate) {\n const nodeName = el.nodeName;\n\n if (config.whitelist.tagName.indexOf(nodeName) > -1) return '';\n if (config.whitelist.attribute.some(attribute => el.hasAttribute(attribute))) return '';\n\n const styles = el.style;\n\n if (!cssKVList) { // 没有传入cssKVList就从内联样式中提取\n // styles.cssText 读出来的颜色统一是rgba格式,除了用英文定义颜色(如:black、white)\n cssKVList = ((styles.cssText && styles.cssText.replace(/(\"[^;]*);([^;]*\")|('[^;]*);([^;]*')/g, `$1$3${SEMICOLON_PLACEHOLDER}$2$4`).split(';')) || []).map(cssStr => { // 将cssStr转换为[key, value],并清除各个元素的前后空白字符\n const splitIdx = cssStr.indexOf(':');\n return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(SEMICOLON_PLACEHOLDER_REGEXP, ';')].map(item => (item || '').replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''));\n });\n }\n\n let hasInlineColor = false; // 是否有自定义字体颜色\n let hasInlineBackground = false;\n let hasInlineBackgroundImage = false;\n let elBackgroundPositionAttr;\n let elBackgroundSizeAttr;\n\n cssKVList = cssKVList.filter(([key, value]) => {\n if (key === 'color') {\n hasInlineColor = true;\n } else if (/background/i.test(key)) {\n hasInlineBackground = true;\n if (key === 'background-position') {\n elBackgroundPositionAttr = value;\n } else if (key === 'background-size') {\n elBackgroundSizeAttr = value;\n }\n }\n\n if ((/background/i.test(key) || /^(-webkit-)?border-image/.test(key)) && /url\\([^)]*\\)/i.test(value)) {\n hasInlineBackgroundImage = true;\n }\n\n // 过滤掉一些key\n return [\n '-webkit-border-image',\n 'border-image',\n 'color',\n 'background-color',\n 'background-image',\n 'background',\n 'border',\n 'border-top',\n 'border-right',\n 'border-bottom',\n 'border-left',\n 'border-color',\n 'border-top-color',\n 'border-right-color',\n 'border-bottom-color',\n 'border-left-color',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'text-shadow'\n ].indexOf(key) > -1;\n }).sort(([key1], [key2]) => { // color属性放在最后\n if (key1 === 'color') {\n return 1;\n } else if (key1 === 'background-image' && key2 === 'background-color') { // 确保 background-image 在 background-color 后面\n return 1;\n } else if (key2.indexOf('-webkit-text') === 0) { // 把-webkit-text的属性放在最前面\n return 1;\n }\n return -1;\n });\n\n if (TABLE_NAME.indexOf(nodeName) > -1 && !hasInlineBackground) { // 如果table没有内联样式\n this._try(() => {\n let colorStr = hasTableClass(el); // 获取class对应的lm色值\n if (!colorStr) colorStr = el.getAttribute('bgcolor'); // 如果没有class则获取bgcolor的色值\n if (colorStr) { // 有色值(class对应的lm色值或者是bgcolor色值),则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.unshift(['background-color', color.toString()]);\n hasInlineBackground = true;\n }\n }\n });\n }\n\n if (nodeName === 'FONT' && !hasInlineColor) { // 如果是font标签且没有内联文本颜色样式\n this._try(() => {\n const colorStr = el.getAttribute('color'); // 获取color的色值\n if (colorStr) { // 有色值,则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.push(['color', color.toString()]);\n hasInlineColor = true;\n }\n }\n });\n }\n\n // 处理-webkit-text相关样式\n let webkitFillColor = '';\n let webkitStrokeColor = '';\n let webkitTextLen = 0;\n cssKVList.some(([key, value], idx) => this._try(() => {\n if (key.indexOf('-webkit-text') !== 0) { // 遍历到非-webkit-text样式\n webkitTextLen = idx; // 记录-webkit-text相关样式的长度\n return true; // 结束遍历\n }\n\n switch (key) {\n case '-webkit-text-fill-color':\n webkitFillColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n case '-webkit-text-stroke': { // 有-webkit-text-stroke时就不会有-webkit-text-stroke-color\n const newValue = value.split(' ');\n newValue.length === 2 && (webkitStrokeColor = parseWebkitFillColorAndStrokeColor(newValue[1]));\n break;\n }\n case '-webkit-text-stroke-color': // 有-webkit-text-stroke-color时就不会有-webkit-text-stroke\n webkitStrokeColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n }\n\n return false; // 继续遍历\n }));\n if (webkitFillColor) { // 有-webkit-text-fill-color,当做color对待\n if (hasInlineColor) { // 本来有color,替换为-webkit-text-fill-color\n cssKVList[cssKVList.length - 1] = ['-webkit-text-fill-color', webkitFillColor];\n } else { // 没有color,push一个-webkit-text-fill-color\n cssKVList.push(['-webkit-text-fill-color', webkitFillColor]);\n hasInlineColor = true;\n }\n }\n if (webkitTextLen) {\n cssKVList.splice(0, webkitTextLen); // 删掉-webkit-text相关样式\n webkitStrokeColor && cssKVList.unshift(['-webkit-text-stroke-color', webkitStrokeColor]); // 如果有-webkit-text-stroke-color,则插入到最前面\n }\n\n let dmClassName = '';\n let dmBgClassName = '';\n if (isUpdate && el.className && typeof el.className === 'string') {\n // 先提取dm className\n let matches = el.className.match(DM_CLASSNAME_REGEXP);\n if (matches) {\n dmClassName = matches[0];\n }\n\n // 再提取dm bg className\n matches = el.className.match(bgStack.classNameReg);\n if (matches) {\n dmBgClassName = matches[0];\n }\n }\n\n let cssKV = ''; // css键值对\n cssKVList.forEach(([key, value]) => this._try(() => {\n const oldValue = value;\n let cssChange = false;\n\n // 找出色值来处理\n const isBgColor = /^background/.test(key);\n const isTextShadow = key === 'text-shadow';\n const textColorIdx = ['-webkit-text-stroke-color', 'color', '-webkit-text-fill-color'].indexOf(key);\n const isBorderColor = /^border/.test(key);\n const isGradient = /gradient/.test(value);\n const gradientColors = [];\n let extStyle = '';\n let gradientMixColor;\n\n // 将英文定义颜色转换为rgb格式\n value = parseColor(value, isGradient); // 渐变需要处理透明\n\n if (colorReg.test(value)) {\n if (isGradient) {\n // 把原渐变色取出来\n let matches = colorRegGlobal.exec(value);\n while (matches) {\n gradientColors.push(matches[0]);\n matches = colorRegGlobal.exec(value);\n }\n\n // 计算出一个mix颜色\n gradientMixColor = mixColor(gradientColors);\n }\n let replaceIndex = 0;\n value = value.replace(colorRegGlobal, match => {\n // 渐变色统一改成mix纯色\n if (isGradient) {\n match = gradientMixColor;\n cssChange = true;\n }\n\n const matchColor = ColorParser(match);\n if (matchColor?.alpha() >= IGNORE_ALPHA) { // 忽略透明度低的色值\n // 使用颜色处理算法\n const ret = this._adjustBrightness(matchColor, el, {\n isBgColor,\n isTextShadow,\n isTextColor: textColorIdx > -1,\n isBorderColor,\n hasInlineColor\n }, isUpdate);\n const retColor = !hasInlineBackgroundImage && ret.newColor;\n\n extStyle += ret.extStyle;\n\n // 对背景颜色和文字颜色做继承传递,用于文字亮度计算\n if (isBgColor || textColorIdx > 0) { // 不处理-webkit-text-stroke-color\n const retColorStr = retColor ? retColor.toString() : match;\n replaceIndex === 0 && getChildrenAndIt(el).forEach(dom => {\n if (isBgColor) {\n dom[BGCOLORATTR] = retColorStr;\n dom[ORIGINAL_BGCOLORATTR] = (dom[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(match).join(BG_COLOR_DELIMITER);\n } else {\n dom[COLORATTR] = retColorStr;\n dom[ORIGINAL_COLORATTR] = match;\n }\n\n // 如果设置背景颜色,取消背景图片的影响\n const retColor = ColorParser(retColorStr);\n if (isBgColor && retColor?.alpha() >= IGNORE_ALPHA && dom[BGIMAGEATTR]) {\n delete dom[BGIMAGEATTR];\n }\n });\n }\n\n retColor && (cssChange = true);\n replaceIndex++;\n return retColor || match;\n }\n return match;\n }).replace(/\\s?!\\s?important/ig, '');\n }\n\n extStyle && (cssKV += extStyle);\n\n if (!(el instanceof SVGElement)) { // 先不处理SVG\n // 背景图片、边框图片\n const isBackgroundAttr = /^background/.test(key);\n const isBorderImageAttr = /^(-webkit-)?border-image/.test(key);\n if ((isBackgroundAttr || isBorderImageAttr) && /url\\([^)]*\\)/i.test(value)) {\n cssChange = true;\n const imgBgColor = mixColor((el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER));\n\n // 在背景图片下加一层原背景颜色:\n // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);\n // border-image不支持多层背景,需要添加background-color\n value = value.replace(/^(.*?)url\\(([^)]*)\\)(.*)$/i, matches => {\n let newValue = matches;\n let newBackgroundPositionValue = '';\n let newBackgroundSizeValue = '';\n let tmpCssKvStr = '';\n\n if (!el[BGIMAGEATTR]) { // 避免重复set\n getChildrenAndIt(el).forEach(dom => {\n dom[BGIMAGEATTR] = true;\n });\n }\n\n // background-image\n if (isBackgroundAttr) {\n tmpCssKvStr = cssUtils.genCssKV(key, imgBgColor ? `${newValue},linear-gradient(${imgBgColor}, ${imgBgColor})` : newValue);\n if (elBackgroundPositionAttr) {\n newBackgroundPositionValue = `top left,${elBackgroundPositionAttr}`;\n cssKV += cssUtils.genCssKV('background-position', `${newBackgroundPositionValue}`);\n tmpCssKvStr += cssUtils.genCssKV('background-position', `${newBackgroundPositionValue},top left`);\n }\n if (elBackgroundSizeAttr) {\n newBackgroundSizeValue = `100%,${elBackgroundSizeAttr}`;\n cssKV += cssUtils.genCssKV('background-size', `${newBackgroundSizeValue}`);\n tmpCssKvStr += cssUtils.genCssKV('background-size', `${newBackgroundSizeValue},100%`);\n }\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr);\n }\n } else {\n // border-image元素,如果当前元素没有背景颜色,补背景颜色\n if (imgBgColor && !hasInlineBackground) {\n tmpCssKvStr = cssUtils.genCssKV('background-image', `linear-gradient(${imgBgColor}, ${imgBgColor})`);\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr); // 背景图入栈\n }\n }\n }\n return newValue;\n });\n\n // 没有设置自定义字体颜色,则使用非 Dark Mode 下默认字体颜色\n if (!hasInlineColor) {\n const textColor = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n cssKV += cssUtils.genCssKV('color', textColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = textColor;\n });\n }\n }\n }\n\n if (cssChange) {\n !isUpdate && IMPORTANT_REGEXP.test(oldValue) && (styles[key] = removeImportant(oldValue)); // 清除inline style的!important\n if (isGradient) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, cssUtils.genCssKV(key, value));\n } else { // 否则背景图入栈\n bgStack.push(el, cssUtils.genCssKV(key, value)); // 渐变入栈\n }\n } else {\n cssKV += cssUtils.genCssKV(key, value);\n }\n }\n }));\n\n if (cssKV) { // 有处理过或者是背景图片就加class以及css\n if (!dmClassName) {\n dmClassName = `${CLASS_PREFIX}${this._idx++}`;\n el.classList.add(dmClassName);\n }\n css += (cssKV ? cssUtils.genCss(dmClassName, cssKV) : '');\n }\n\n css += bgCss; // 追加文字底图样式,要在添加cssKV之后添加,避免被覆盖\n\n if (!isUpdate && hasTextNode(el)) { // 如果节点里有文本,要判断是否在背景图里\n if (config.delayBgJudge) { // 延迟背景判断\n tnQueue.push(el); // 文字入队\n } else {\n bgStack.contains(el, item => {\n css += cssUtils.genCss(item.className, item.cssKV);\n });\n }\n }\n }\n\n plugins.emit(`afterConvertNode${isUpdate ? 'ByUpdateStyle' : ''}`, el);\n\n return css;\n }\n\n getContrast(colorStr1, colorStr2) {\n const color1 = ColorParser(colorStr1);\n const color2 = ColorParser(colorStr2);\n return (color1 && color2) ? getContrast(color1.rgb().array(), color2.rgb().array()) : 0;\n }\n};\n","/**\n * @name 文本节点队列\n *\n * @class TextNodeQueue\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 文本节点入队\n * @param {DOM Object} el 文本节点对象\n *\n * @method forEach 遍历,遍历过的文本节点出队\n * @param {Function} callback 回调\n *\n * @method update 更新队列的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class TextNodeQueue {\n _queue = []; // 文本节点队列,{ el, className, updated }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n }\n\n push(el) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._queue.push({\n el,\n className,\n updated: !config.delayBgJudge\n });\n }\n\n forEach(callback) {\n const idxStack = [];\n\n this._queue.forEach((item, idx) => {\n if (item.updated) {\n idxStack.unshift(idx);\n typeof callback && callback(item.el);\n }\n });\n\n while (idxStack.length) { // 处理完之后删除部分节点\n this._queue.splice(idxStack.shift(), 1);\n }\n }\n\n update(els) {\n this._queue.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://Darkmode/webpack/universalModuleDefinition","webpack://Darkmode/webpack/bootstrap","webpack://Darkmode/./node_modules/color-convert/conversions.js","webpack://Darkmode/./node_modules/color-convert/index.js","webpack://Darkmode/./node_modules/color-convert/node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-convert/route.js","webpack://Darkmode/./node_modules/color-name/index.js","webpack://Darkmode/./node_modules/color-string/index.js","webpack://Darkmode/./node_modules/color/index.js","webpack://Darkmode/./node_modules/is-arrayish/index.js","webpack://Darkmode/./node_modules/simple-swizzle/index.js","webpack://Darkmode/./src/darkmode.js","webpack://Darkmode/./src/modules/bgNodeStack.js","webpack://Darkmode/./src/modules/config.js","webpack://Darkmode/./src/modules/constant.js","webpack://Darkmode/./src/modules/cssUtils.js","webpack://Darkmode/./src/modules/domUtils.js","webpack://Darkmode/./src/modules/global.js","webpack://Darkmode/./src/modules/plugins.js","webpack://Darkmode/./src/modules/sdk.js","webpack://Darkmode/./src/modules/textNodeQueue.js"],"names":["classReg","RegExp","CLASS_PREFIX","mql","switchToDarkmode","mqlObj","opt","type","force","cssUtils","isFinish","sdk","isDarkmode","config","mode","matches","begin","domUtils","hasDelay","Array","prototype","forEach","call","get","node","className","replace","plugins","length","needJudgeFirstPage","addCss","convert","rect","getBoundingClientRect","top","bottom","PAGE_HEIGHT","addFirstPageNode","writeStyle","showFirstPageNodes","showFirstPage","loopTimes","tnQueue","text","bgStack","contains","bg","genCss","cssKV","emptyFirstPageNodes","delayBgJudge","container","delay","e","console","log","error","run","nodes","init","set","hasInit","tagName","whitelist","attribute","item","toUpperCase","indexOf","push","document","getElementsByTagName","classList","add","HTML_CLASS","window","matchMedia","MEDIA_QUERY","addListener","convertBg","update","updateStyle","styles","Object","keys","map","key","undefined","getContrast","color1","color2","extend","pluginList","plugin","BgNodeStack","prefix","_prefix","classNameReg","el","_idx","_stack","unshift","updated","callback","idxStack","i","bgRect","left","right","splice","shift","els","some","nodeType","cssSelectorsPrefix","defaultLightTextColor","DEFAULT_LIGHT_TEXTCOLOR","defaultLightBgColor","DEFAULT_LIGHT_BGCOLOR","defaultDarkTextColor","DEFAULT_DARK_TEXTCOLOR","defaultDarkBgColor","DEFAULT_DARK_BGCOLOR","value","HTMLElement","DM_CLASSNAME_REGEXP","RANDOM","Date","Math","round","random","COLORATTR","BGCOLORATTR","ORIGINAL_COLORATTR","ORIGINAL_BGCOLORATTR","BGIMAGEATTR","BG_COLOR_DELIMITER","WHITE_LIKE_COLOR_BRIGHTNESS","MAX_LIMIT_BGCOLOR_BRIGHTNESS","MIN_LIMIT_OFFSET_BRIGHTNESS","HIGH_BGCOLOR_BRIGHTNESS","HIGH_BLACKWHITE_HSL_BRIGHTNESS","LOW_BLACKWHITE_HSL_BRIGHTNESS","IGNORE_ALPHA","getInnerHeight","innerHeight","documentElement","clientHeight","TABLE_NAME","IMPORTANT_REGEXP","SEMICOLON_PLACEHOLDER","SEMICOLON_PLACEHOLDER_REGEXP","CssUtils","val","css","isFirstPageStyle","target","needMediaQuery","concat","first","other","styleKey","style","join","head","insertAdjacentHTML","getChildrenAndIt","querySelectorAll","hasTextNode","cnt","childNodes","child","nodeValue","tableClassObj","hasTableClass","color","DomUtils","_els","res","_delayEls","_firstPageEls","visibility","Plugins","TextNodeQueue","SDK","cssNeedMQ","cssNoMQ","Plugin","kvList","genCssKV","_plugins","name","args","firstPageStyle","firstPageStyleNoMQ","otherPageStyle","otherPageStyleNoMQ","ColorParser","Color","ColorName","windowtext","transparent","colorNameReg","colorName","colorReg","colorRegGlobal","removeImportant","parseColor","parseTransparent","match","toLowerCase","toString","mixColor","colors","retColorStr","nextColorStr","retColor","nextColor","mix","alpha","parseWebkitFillColorAndStrokeColor","newValue","test","getColorPerceivedBrightness","rgb","adjustBrightnessByLimit","limitBright","relativeBrightnessRatio","newTextR","min","newTextG","newTextB","getLuminanace","srgb","pow","rgb1","rgb2","lum1","lum2","array","hsl","_defaultDarkTextColorRgb","_defaultDarkBgColorRgb","_defaultDarkBgColorHSL","_defaultDarkTextColorBrightness","_defaultDarkBgColorBrightness","textColor","bgColor","bgColorRgb","bgColorAlpha","bgColorPerceivedBrightness","bgColorWithOpacityPerceivedBrightness","textColorRgb","textColorHSL","textColorAlpha","textPerceivedBrightness","offsetPerceivedBrightness","abs","_maxLimitOffsetBrightness","tmpTextColor","_adjustTextBrightness","bgColorHsl","newColor","_defaultDarkBgColorHslBrightness","options","isUpdate","extStyle","isBgColor","_adjustBackgroundBrightness","hasInlineColor","parentTextColorStr","parentTextColor","ret","_adjustBrightness","isTextColor","parentElementBgColorStr","isBorderColor","parentElementBgColor","emit","fontColor","isTextShadow","func","cssKVList","resetCss","bgCss","nodeName","hasAttribute","cssText","split","cssStr","splitIdx","slice","hasInlineBackground","hasInlineBackgroundImage","elBackgroundPositionAttr","elBackgroundSizeAttr","filter","sort","key1","key2","_try","colorStr","getAttribute","webkitFillColor","webkitStrokeColor","webkitTextLen","idx","dmClassName","dmBgClassName","oldValue","cssChange","textColorIdx","isGradient","gradientColors","gradientMixColor","exec","replaceIndex","matchColor","dom","SVGElement","isBackgroundAttr","isBorderImageAttr","imgBgColor","newBackgroundPositionValue","newBackgroundSizeValue","tmpCssKvStr","colorStr1","colorStr2","_queue"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA,kBAAkB,mBAAO,CAAC,iFAAY;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,QAAQ,4BAA4B;AACpC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,2BAA2B;AAClC,OAAO,6BAA6B;AACpC,WAAW,iCAAiC;AAC5C,UAAU,gCAAgC;AAC1C,WAAW,iCAAiC;AAC5C,OAAO,qCAAqC;AAC5C,SAAS,2CAA2C;AACpD,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE,mDAAmD,cAAc;AACjE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO,QAAQ;AAC/B,gBAAgB,OAAO,QAAQ;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,iBAAiB,OAAO,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B,gBAAgB,QAAQ,OAAO;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sEAAsE;;AAEtE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C,EAAE,UAAU,EAAE;AAC7D;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa,aAAa;AACzC;AACA,eAAe,aAAa;AAC5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACn2BA,kBAAkB,mBAAO,CAAC,kEAAe;AACzC,YAAY,mBAAO,CAAC,sDAAS;;AAE7B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wDAAwD,uCAAuC;AAC/F,sDAAsD,qCAAqC;;AAE3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF,CAAC;;AAED;;;;;;;;;;;;;AC7EY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA,kBAAkB,mBAAO,CAAC,kEAAe;;AAEzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;;AAEA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,SAAS;AAC9C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;;;;AC/FY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJA;AACA,iBAAiB,mBAAO,CAAC,sDAAY;AACrC,cAAc,mBAAO,CAAC,8DAAgB;AACtC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,IAAI;AAC7B,wBAAwB,EAAE,WAAW,EAAE;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,EAAE;AACF;AACA;;AAEA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,IAAI;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,IAAI;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;ACjPa;;AAEb,kBAAkB,mBAAO,CAAC,0DAAc;AACxC,cAAc,mBAAO,CAAC,4DAAe;;AAErC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa,mBAAmB;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,qEAAqE,kCAAkC,EAAE;;AAEzG;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA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","file":"darkmode.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Darkmode\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Darkmode\"] = factory();\n\telse\n\t\troot[\"Darkmode\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/darkmode.js\");\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = {};\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/**\n * @name Darkmode主入口\n *\n * @function run 配置并处理\n * @param {DOM Object Array} nodes 要处理的节点列表\n * @param {Object} opt Dark Mode配置,详见init配置说明\n *\n * @function init 初始化Dark Mode配置\n * @param {Function} opt.begin 开始处理时触发的回调\n * @param {Function} opt.showFirstPage 首屏处理完成时触发的回调\n * @param {Function} opt.error 发生error时触发的回调\n * @param {string} opt.mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @param {Object} opt.whitelist 节点白名单\n * @param {Array} opt.whitelist.tagName 标签名列表\n * @param {Array} opt.whitelist.attribute 属性列表\n * @param {boolean} opt.needJudgeFirstPage 是否需要判断首屏\n * @param {boolean} opt.delayBgJudge 是否延迟背景判断\n * @param {DOM Object} opt.container 延迟运行js时使用的容器\n * @param {string} opt.cssSelectorsPrefix css选择器前缀\n * @param {string} opt.defaultLightTextColor 非Dark Mode下字体颜色\n * @param {string} opt.defaultLightBgColor 非Dark Mode下背景颜色\n * @param {string} opt.defaultDarkTextColor Dark Mode下字体颜色\n * @param {string} opt.defaultDarkBgColor Dark Mode下背景颜色\n *\n * @function convertBg 处理背景\n * @param {DOM Object Array} nodes 要处理的节点列表\n *\n * @function updateStyle 更新节点Dark Mode样式\n * @param {DOM Object} node 要更新的节点\n * @param {Object} styles 更新的样式键值对对象,如:{ color: '#ddd' }\n *\n * @function getContrast 获取两个颜色的对比度\n * @param {string} color1 要计算颜色对比度的颜色1,支持css颜色格式\n * @param {string} color2 要计算颜色对比度的颜色2,支持css颜色格式\n * @return {number} contrast 颜色对比度,取值范围为`[1, 21]`\n *\n * @function extend 挂载插件\n * @param {Array} pluginList 插件列表\n *\n */\n\nimport {\n MEDIA_QUERY,\n CLASS_PREFIX,\n HTML_CLASS,\n PAGE_HEIGHT\n} from './modules/constant';\nconst classReg = new RegExp(`${CLASS_PREFIX}[^ ]+`, 'g');\n\n// Darkmode配置\nimport config from './modules/config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils, // 样式相关操作工具对象\n domUtils, // 节点相关操作工具对象\n sdk\n} from './modules/global';\n\n// Dark Mode切换\nlet mql = null;\nconst switchToDarkmode = (mqlObj, opt = {\n type: 'dom'\n}) => {\n opt.force && (cssUtils.isFinish = false); // 如果是强制运行Dark Mode处理逻辑,则重置为未运行\n\n if (cssUtils.isFinish) return; // 已运行过Dark Mode处理逻辑则不再运行\n\n try {\n sdk.isDarkmode = config.mode ? (config.mode === 'dark') : mqlObj.matches;\n\n if (opt.type === 'dom') { // 处理节点\n sdk.isDarkmode && typeof config.begin === 'function' && config.begin(domUtils.hasDelay());\n\n Array.prototype.forEach.call(domUtils.get(), node => {\n if (sdk.isDarkmode && node.className && typeof node.className === 'string') {\n node.className = node.className.replace(classReg, ''); // 过滤掉原有的Dark Mode class,避免外部复制文章时把文章内的Dark Mode class也复制过去导致新文章在Dark Mode下样式错乱\n }\n\n if (sdk.isDarkmode || plugins.length) {\n if (!config.needJudgeFirstPage) { // 不需要判断首屏\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else { // 判断首屏\n const rect = node.getBoundingClientRect();\n const top = rect.top;\n const bottom = rect.bottom;\n if (top <= 0 && bottom <= 0) { // 首屏前面\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n } else if ((top > 0 && top < PAGE_HEIGHT) || (bottom > 0 && bottom < PAGE_HEIGHT)) { // 首屏\n domUtils.addFirstPageNode(node); // 记录首屏节点\n cssUtils.addCss(sdk.convert(node), true); // 写入首屏样式\n } else { // 首屏后面,理论上,这里最多只会进来一次\n config.needJudgeFirstPage = false; // 至此,不需要再判断首屏了\n\n // 显示首屏\n cssUtils.writeStyle(true); // 写入首屏样式表\n domUtils.showFirstPageNodes(); // 显示首屏节点\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n\n cssUtils.addCss(sdk.convert(node)); // 写入非首屏样式\n }\n }\n }\n });\n\n plugins.loopTimes++;\n } else if (opt.type === 'bg') { // 处理背景\n sdk.isDarkmode && tnQueue.forEach(text => bgStack.contains(text, bg => {\n cssUtils.addCss(cssUtils.genCss(bg.className, bg.cssKV)); // 写入非首屏样式\n }));\n }\n\n if (config.needJudgeFirstPage || (!config.needJudgeFirstPage && !domUtils.showFirstPage)) {\n // config.needJudgeFirstPage === ture,表示需要判断首屏但是正文长度没超过一屏\n // config.needJudgeFirstPage === false && domUtils.showFirstPage === false,表示不需要判断首屏且没有做首屏优化\n typeof config.showFirstPage === 'function' && config.showFirstPage(); // 执行首屏回调\n }\n cssUtils.writeStyle(); // 写入非首屏样式表\n domUtils.emptyFirstPageNodes(); // 清空记录的首屏节点\n\n if (!sdk.isDarkmode) { // 非Dark Mode\n // 首次加载页面时为非Dark Mode,标记为不需要判断首屏\n config.needJudgeFirstPage = false;\n\n // 首次加载页面时为非Dark Mode,标记为不延迟判断背景\n config.delayBgJudge = false;\n\n if (config.container === null && opt.type === 'dom' && domUtils.length) {\n domUtils.delay(); // 将节点转移到延迟处理队列里\n }\n }\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n};\n\nexport function run(nodes, opt) {\n init(opt); // 初始化配置\n\n domUtils.set(nodes);\n\n switchToDarkmode(mql, {\n force: true,\n type: 'dom'\n });\n};\n\nexport function init(opt = {}) {\n if (config.hasInit) return; // 只可设置一次配置\n\n config.hasInit = true; // 记录为配置已设置\n\n const tagName = config.whitelist.tagName;\n const attribute = config.whitelist.attribute;\n if (opt.whitelist) {\n opt.whitelist.tagName instanceof Array && opt.whitelist.tagName.forEach(item => {\n item = item.toUpperCase();\n tagName.indexOf(item) === -1 && tagName.push(item);\n });\n opt.whitelist.attribute instanceof Array && opt.whitelist.attribute.forEach(item => {\n attribute.indexOf(item) === -1 && attribute.push(item);\n });\n }\n\n if (['dark', 'light'].indexOf(opt.mode) > -1) {\n config.set('string', opt, 'mode');\n opt.mode === 'dark' && document.getElementsByTagName('html')[0].classList.add(HTML_CLASS);\n }\n\n config.set('function', opt, 'begin');\n config.set('function', opt, 'showFirstPage');\n config.set('function', opt, 'error');\n config.set('boolean', opt, 'needJudgeFirstPage');\n config.set('boolean', opt, 'delayBgJudge');\n config.set('dom', opt, 'container');\n config.set('string', opt, 'cssSelectorsPrefix');\n config.set('string', opt, 'defaultLightTextColor');\n config.set('string', opt, 'defaultLightBgColor');\n config.set('string', opt, 'defaultDarkTextColor');\n config.set('string', opt, 'defaultDarkBgColor');\n\n if (!config.mode && mql === null && window.matchMedia) {\n // 匹配媒体查询\n mql = window.matchMedia(MEDIA_QUERY);\n mql.addListener(switchToDarkmode); // 监听\n }\n};\n\nexport function convertBg(nodes) {\n domUtils.set(nodes);\n\n if (config.container !== null) {\n bgStack.update(nodes); // 更新背景堆栈\n tnQueue.update(nodes); // 更新文字队列\n }\n\n switchToDarkmode(mql, {\n force: true,\n type: 'bg'\n });\n};\n\nexport function updateStyle(node, styles) {\n if (!cssUtils.isFinish) return; // 没有运行过Dark Mode处理逻辑则无需运行\n cssUtils.addCss(sdk.convert(node, styles ? Object.keys(styles).map(key => [key, styles[key]]) : undefined, true), false);\n cssUtils.writeStyle();\n};\n\nexport function getContrast(color1, color2) {\n return sdk.getContrast(color1, color2);\n};\n\nexport function extend(pluginList) {\n pluginList.forEach(plugin => plugins.extend(plugin));\n};","/**\n * @name 需要判断位置的背景节点堆栈\n *\n * @class BgNodeStack\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 背景节点入栈\n * @param {DOM Object} el 背景节点对象\n * @param {string} cssKV css键值对\n *\n * @method contains 判断节点是否在背景节点的区域\n * @param {DOM Object} el 要判断的节点对象(非背景节点)\n * @param {Function} callback 如果在背景节点区域内,则执行该回调函数\n *\n * @method update 更新堆栈的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class BgNodeStack {\n _stack = []; // 需要判断位置的背景堆栈,{ el, className, cssKV, updated, rect }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n this.classNameReg = new RegExp(`${this._prefix}\\\\d+`);\n }\n\n push(el, cssKV) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._stack.unshift({\n el,\n className,\n cssKV,\n updated: !config.delayBgJudge\n });\n }\n\n contains(el, callback) {\n const rect = el.getBoundingClientRect();\n const idxStack = [];\n\n this._stack.forEach((item, i) => {\n if (item.updated) {\n if (!item.rect) item.rect = item.el.getBoundingClientRect();\n\n const bgRect = item.rect;\n if (!(\n rect.top >= bgRect.bottom\n || rect.bottom <= bgRect.top\n || rect.left >= bgRect.right\n || rect.right <= bgRect.left\n )) { // 表示节点在背景图内\n idxStack.unshift(i);\n }\n }\n });\n\n while (idxStack.length) {\n const item = this._stack.splice(idxStack.shift(), 1)[0];\n typeof callback === 'function' && callback(item);\n }\n }\n\n update(els) {\n this._stack.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n","/**\n * @name Darkmode配置\n *\n * @attr {boolean} hasInit 是否初始化过配置\n * @attr {Function} begin 开始处理时触发的回调\n * @attr {Function} showFirstPage 首屏处理完成时触发的回调\n * @attr {Function} error 发生error时触发的回调\n * @attr {string} mode 强制指定的颜色模式(dark|light), 指定了就不监听系统颜色\n * @attr {Object} whitelist 节点白名单\n * @attr {string Array} whitelist.tagName 标签名列表\n * @attr {boolean} needJudgeFirstPage 是否需要判断首屏\n * @attr {boolean} delayBgJudge 是否延迟背景判断\n * @attr {DOM Object} container 延迟运行js时使用的容器\n * @attr {string} cssSelectorsPrefix css选择器前缀\n * @attr {string} defaultLightTextColor 非Dark Mode下字体颜色\n * @attr {string} defaultLightBgColor 非Dark Mode下背景颜色\n * @attr {string} defaultDarkTextColor Dark Mode下字体颜色\n * @attr {string} defaultDarkBgColor Dark Mode下背景颜色\n *\n * @method set 设置配置\n * @param {string} type 要处理的节点\n * @param {Object} opt 传入的配置对象\n * @param {string} key 配置名\n *\n */\n\nimport {\n DEFAULT_LIGHT_TEXTCOLOR,\n DEFAULT_LIGHT_BGCOLOR,\n DEFAULT_DARK_TEXTCOLOR,\n DEFAULT_DARK_BGCOLOR\n} from './constant';\n\nconst config = {\n hasInit: false,\n\n // hooks\n begin: null,\n showFirstPage: null,\n error: null,\n\n mode: '',\n whitelist: {\n tagName: ['MPCPS', 'IFRAME'],\n attribute: [],\n },\n needJudgeFirstPage: true,\n delayBgJudge: false,\n container: null,\n cssSelectorsPrefix: '',\n defaultLightTextColor: DEFAULT_LIGHT_TEXTCOLOR,\n defaultLightBgColor: DEFAULT_LIGHT_BGCOLOR,\n defaultDarkTextColor: DEFAULT_DARK_TEXTCOLOR,\n defaultDarkBgColor: DEFAULT_DARK_BGCOLOR,\n\n // 设置配置\n set(type, opt, key) {\n const value = opt[key];\n switch (type) {\n case 'boolean':\n typeof value === 'boolean' && (this[key] = value);\n break;\n case 'string':\n typeof value === 'string' && value !== '' && (this[key] = value);\n break;\n case 'function':\n typeof value === 'function' && (this[key] = value);\n break;\n case 'dom':\n value instanceof HTMLElement && (this[key] = value);\n break;\n default:\n }\n }\n};\n\nexport default config;\n","/**\n * @name 常量\n *\n */\n\nexport const MEDIA_QUERY = '(prefers-color-scheme: dark)'; // Dark Mode的CSS媒体查询\n\nexport const CLASS_PREFIX = 'js_darkmode__'; // Dark Mode class前缀\nexport const DM_CLASSNAME_REGEXP = new RegExp(`${CLASS_PREFIX}\\\\d+`);\n\nexport const HTML_CLASS = 'data_color_scheme_dark'; // 强制设置暗黑模式时给html加的class\n\nconst RANDOM = `${new Date() * 1}${Math.round(Math.random() * 10)}`; // 生成个随机数,格式为时间戳+随机数\nexport const COLORATTR = `data-darkmode-color-${RANDOM}`; // dm color,即算法生成的新色值,单个\nexport const BGCOLORATTR = `data-darkmode-bgcolor-${RANDOM}`; // dm bg-color,即算法生成的新色值,有多个,用BG_COLOR_DELIMITER分割\nexport const ORIGINAL_COLORATTR = `data-darkmode-original-color-${RANDOM}`; // lm color,即原色值,单个\nexport const ORIGINAL_BGCOLORATTR = `data-darkmode-original-bgcolor-${RANDOM}`; // lm bg-color,即原色值,有多个,用BG_COLOR_DELIMITER分割\nexport const BGIMAGEATTR = `data-darkmode-bgimage-${RANDOM}`;\nexport const BG_COLOR_DELIMITER = '|';\n\nexport const DEFAULT_LIGHT_TEXTCOLOR = '#191919'; // 非Dark Mode下字体颜色\nexport const DEFAULT_LIGHT_BGCOLOR = '#fff'; // 非Dark Mode下背景颜色\nexport const DEFAULT_DARK_TEXTCOLOR = '#a3a3a3'; // Dark Mode下字体颜色,前景色:rgba(255,255,255,0.6) 背景色:#191919\nexport const DEFAULT_DARK_BGCOLOR = '#191919'; // Dark Mode下背景颜色\n\nexport const WHITE_LIKE_COLOR_BRIGHTNESS = 250; // 接近白色的感知亮度阈值\nexport const MAX_LIMIT_BGCOLOR_BRIGHTNESS = 190;\nexport const MIN_LIMIT_OFFSET_BRIGHTNESS = 65;\nexport const HIGH_BGCOLOR_BRIGHTNESS = 100;\nexport const HIGH_BLACKWHITE_HSL_BRIGHTNESS = 40;\nexport const LOW_BLACKWHITE_HSL_BRIGHTNESS = 22;\nexport const IGNORE_ALPHA = 0.05; // 忽略的透明度阈值\n\nexport const PAGE_HEIGHT = (window.getInnerHeight && window.getInnerHeight())\n || window.innerHeight\n || document.documentElement.clientHeight;\n\nexport const TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标签列表\n\nexport const IMPORTANT_REGEXP = / !important$/; // !important\n\nexport const SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符\nexport const SEMICOLON_PLACEHOLDER_REGEXP = /<\\$#_SEMICOLON_#\\$>/g;\n","/**\n * @name 样式相关操作工具对象\n *\n * @class CssUtils\n *\n * @attr {boolean} isFinish 是否运行过Dark Mode处理逻辑(写入过非首屏样式表则表示已运行过)\n *\n * @method genCssKV 生成css键值对\n * @param {string} key css属性\n * @param {string} val css值\n * @return {string} css键值对\n *\n * @method genCss 生成css,包括css选择器\n * @param {string} className DOM节点类名\n * @param {string} cssKV css键值对\n * @return {string} css\n *\n * @method addCss 加入css\n * @param {string} css css样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n * @method writeStyle 写入样式表\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n */\n\nimport {\n MEDIA_QUERY,\n HTML_CLASS,\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n sdk\n} from './global';\n\nexport default class CssUtils {\n _firstPageStyle = ''; // 首屏样式\n _otherPageStyle = ''; // 非首屏样式\n\n isFinish = false;\n\n constructor() {}\n\n genCssKV(key, val) {\n return `${key}: ${val} !important;`;\n }\n\n genCss(className, cssKV) {\n return `${config.mode === 'dark' ? `html.${HTML_CLASS} ` : ''}${config.cssSelectorsPrefix && `${config.cssSelectorsPrefix} `}.${className}{${cssKV}}`;\n }\n\n addCss(css, isFirstPageStyle = false) {\n this[isFirstPageStyle ? '_firstPageStyle' : '_otherPageStyle'] += css;\n plugins.addCss(isFirstPageStyle);\n }\n\n writeStyle(isFirstPageStyle = false) {\n !isFirstPageStyle && sdk.isDarkmode && (this.isFinish = true); // 在Dark Mode下一旦写入了非首屏样式表,则认为已经运行过Dark Mode处理逻辑\n\n // 获取样式表内容\n const styles = (sdk.isDarkmode ? [{\n target: this,\n key: ['_firstPageStyle', '_otherPageStyle'],\n needMediaQuery: true\n }] : []).concat([{\n target: plugins,\n key: ['firstPageStyle', 'otherPageStyle'],\n needMediaQuery: true\n }, {\n target: plugins,\n key: ['firstPageStyleNoMQ', 'otherPageStyleNoMQ'],\n needMediaQuery: false\n }]).map(({\n target,\n key: [first, other],\n needMediaQuery\n }) => {\n let styleKey = '';\n if (!isFirstPageStyle) { // 如果是写入非首屏样式表,则连同首屏样式一起写入\n target[other] = target[first] + target[other];\n target[first] = '';\n styleKey = other;\n } else {\n styleKey = first;\n }\n\n const style = target[styleKey];\n if (style) {\n target[styleKey] = ''; // 写入样式表后清空内存中的数据\n return (config.mode === 'dark' || !needMediaQuery) ? style : `@media ${MEDIA_QUERY} {${style}}`;\n }\n return '';\n }).join('');\n\n // 写入样式表\n styles && document.head.insertAdjacentHTML('beforeend', `<style type=\"text/css\">${styles}</style>`);\n }\n};\n","/**\n * @name 节点相关操作工具API\n *\n * @function getChildrenAndIt 获取某个节点及它的所有子节点\n * @param {DOM Object} el 节点对象\n * @return {DOM Object Array} 节点对象列表\n *\n * @function hasTextNode 判断某个节点里是否包含文字节点\n * @param {DOM Object} el 节点对象\n * @return {boolean} 判断结果\n *\n * @function hasTableClass 判断table相关元素有没有指定class\n * @param {DOM Object} el 节点对象\n * @return {string | null} 判断结果,如果有,返回class对应的lm色值,否则返回null\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n sdk\n} from './global';\n\nexport function getChildrenAndIt(el) {\n return [el].concat(...el.querySelectorAll('*'));\n};\n\nexport function hasTextNode(el) {\n let cnt = '';\n Array.prototype.forEach.call(el.childNodes, child => {\n if (child.nodeType === 3) {\n cnt += child.nodeValue.replace(/\\s/g, ''); // 不考虑空白字符\n }\n });\n return cnt.length > 0;\n};\n\n// table的内部样式类对应的lm背景色\nconst tableClassObj = {\n 'ue-table-interlace-color-single': '#fcfcfc',\n 'ue-table-interlace-color-double': '#f7faff'\n};\nexport function hasTableClass(el) {\n let color = null;\n\n Array.prototype.some.call(el.classList, className => {\n if (tableClassObj[className]) {\n color = tableClassObj[className];\n return true;\n }\n return false;\n });\n\n return color;\n};\n\n/**\n * @name 节点相关操作工具对象\n *\n * @class DomUtils\n *\n * @attr {number} length 要处理的节点列表长度\n * @attr {boolean} showFirstPage 是否已显示首屏\n *\n * @method set 设置要处理的节点列表\n * @param {DOM Object Array} els 要处理的节点列表\n *\n * @method get 获取要处理的节点列表(包含延迟节点、容器节点等逻辑)\n * @return {DOM Object Array} 要处理的节点列表\n *\n * @method delay 将所有要处理的节点转移到延迟处理队列里\n *\n * @method hasDelay 判断是否包含延迟处理的节点\n * @return {boolean} 判断结果\n *\n * @method addFirstPageNode 添加首屏节点\n * @param {DOM Object} el 要添加的首屏节点\n *\n * @method showFirstPageNodes 显示所有首屏节点\n *\n * @method emptyFirstPageNodes 清空记录的首屏节点\n *\n */\n\nexport class DomUtils {\n _els = []; // 要处理的节点列表\n _firstPageEls = []; // 首屏节点列表\n _delayEls = []; // 延迟处理的节点列表\n\n showFirstPage = false; // 是否已显示首屏\n\n constructor() {}\n\n get length() {\n return this._els.length;\n }\n\n set(els = []) {\n this._els = els;\n }\n\n get() {\n let res = [];\n\n if (this._els.length) { // 有节点\n res = this._els;\n sdk.isDarkmode && (this._els = []);\n } else { // 如果没有节点\n if (this._delayEls.length) { // 有延迟节点,则使用延迟节点\n res = this._delayEls;\n this._delayEls = [];\n } else if (config.container) { // 没有延迟节点,但有容器,重新获取容器内的节点\n res = config.container.querySelectorAll('*');\n }\n }\n\n return res;\n }\n\n delay() {\n Array.prototype.forEach.call(this._els, el => this._delayEls.push(el)); // 转移到延迟处理的节点里\n this._els = []; // 转移后清空列表\n }\n\n hasDelay() {\n if (this._els.length) return false; // 有节点,即不含延迟处理的节点\n return this._delayEls.length > 0 || config.container !== null; // 否则需要判断延迟节点的列表和容器\n }\n\n addFirstPageNode(el) {\n this._firstPageEls.push(el);\n }\n\n showFirstPageNodes() {\n this._firstPageEls.forEach(el => !el.style.visibility && (el.style.visibility = 'visible')); // 显示首屏节点\n this.showFirstPage = true; // 记录为已显示首屏\n }\n\n emptyFirstPageNodes() {\n this._firstPageEls = [];\n }\n};\n","/**\n * @name 全局作用域\n *\n */\n\nimport {\n CLASS_PREFIX\n} from './constant';\n\n// 插件系统\nimport Plugins from './plugins';\nexport const plugins = new Plugins();\n\n// 文本节点队列\nimport TextNodeQueue from './textNodeQueue';\nexport const tnQueue = new TextNodeQueue(`${CLASS_PREFIX}text__`);\n\n// 需要判断位置的背景节点堆栈\nimport BgNodeStack from './bgNodeStack';\nexport const bgStack = new BgNodeStack(`${CLASS_PREFIX}bg__`);\n\n// 样式相关操作工具对象\nimport CssUtils from './cssUtils';\nexport const cssUtils = new CssUtils();\n\n// 节点相关操作工具对象\nimport {\n DomUtils\n} from './domUtils';\nexport const domUtils = new DomUtils();\n\n// sdk\nimport SDK from './sdk';\nexport const sdk = new SDK();\n","/**\n * @name 插件基类\n *\n * @class Plugin\n *\n * @attr {number} loopTimes 遍历次数(全部节点遍历结束算一次)\n * @attr {boolean} isDarkmode 是否为Dark Mode\n *\n * @method addCss 添加样式\n * @param {string} className DOM节点类名\n * @param {Array} kvList css键值对列表\n * @param {string} kvList[0].key css属性\n * @param {string} kvList[0].value css值\n * @param {boolean} needMediaQuery 是否需要添加Dark Mode媒体查询\n *\n */\n\nimport {\n cssUtils, // 样式相关操作工具对象\n plugins, // 插件系统\n sdk\n} from './global';\n\nlet cssNeedMQ = [];\nlet cssNoMQ = [];\n\nclass Plugin {\n constructor() {}\n\n get loopTimes() {\n return plugins.loopTimes;\n }\n\n get isDarkmode() {\n return sdk.isDarkmode;\n }\n\n addCss(className, kvList, needMediaQuery = true) {\n (needMediaQuery ? cssNeedMQ : cssNoMQ).push(cssUtils.genCss(className, kvList.map(({\n key,\n value\n }) => cssUtils.genCssKV(key, value)).join('')));\n }\n}\n\n/**\n * @name 插件系统\n *\n * @class Plugins\n *\n * @attr {number} length 已挂载的插件数量\n * @attr {string} firstPageStyle 首屏样式\n * @attr {string} otherPageStyle 非首屏样式\n * @attr {string} firstPageStyleNoMQ 首屏样式(不需要加媒体查询)\n * @attr {string} otherPageStyleNoMQ 非首屏样式(不需要加媒体查询)\n *\n * @method extend 挂载插件\n * @param {Function} plugin 插件构造函数\n *\n * @method emit 执行插件钩子\n * @param {string} name 钩子名称\n * @param {Any} args 钩子参数\n *\n * @method addCss 写入插件样式\n * @param {boolean} isFirstPageStyle 是否首屏样式\n *\n * @method resetCss 重置插件样式\n *\n */\n\nexport default class Plugins {\n _plugins = []; // 已挂载的插件列表\n\n length = 0; // 已挂载的插件数量\n loopTimes = 0; // 已遍历次数\n firstPageStyle = ''; // 首屏样式\n otherPageStyle = ''; // 非首屏样式\n firstPageStyleNoMQ = ''; // 首屏样式(不需要加媒体查询)\n otherPageStyleNoMQ = ''; // 非首屏样式(不需要加媒体查询)\n\n constructor() {}\n\n extend(plugin) {\n this._plugins.push(new (plugin(Plugin))());\n this.length++;\n }\n\n emit(name, ...args) {\n this._plugins.forEach(plugin => {\n typeof plugin[name] === 'function' && plugin[name](...args);\n });\n }\n\n addCss(isFirstPageStyle) {\n if (isFirstPageStyle) {\n this.firstPageStyle += cssNeedMQ.join('');\n this.firstPageStyleNoMQ += cssNoMQ.join('');\n } else {\n this.otherPageStyle += cssNeedMQ.join('');\n this.otherPageStyleNoMQ += cssNoMQ.join('');\n }\n }\n\n resetCss() {\n cssNeedMQ = [];\n cssNoMQ = [];\n }\n};\n","/**\n * @name 算法SDK\n *\n * @class SDK\n *\n * @method convert 处理节点\n * @param {DOM Object} el 要处理的节点\n * @return {string} 处理后的css,包含css选择器\n *\n */\n\n// dependencies\nimport Color from 'color';\nconst ColorParser = color => {\n let res = null;\n try {\n res = Color(color);\n } catch (e) {\n console.log(`ignore the invalid color: \\`${color}\\``);\n }\n return res;\n};\nimport ColorName from 'color-name';\nColorName.windowtext = [0, 0, 0]; // 补上这个colorName\nColorName.transparent = [255, 255, 255, 0]; // 支持透明,暂定用白色透明度0来表示\n\nimport {\n CLASS_PREFIX,\n DM_CLASSNAME_REGEXP,\n\n COLORATTR,\n BGCOLORATTR,\n ORIGINAL_COLORATTR,\n ORIGINAL_BGCOLORATTR,\n BGIMAGEATTR,\n BG_COLOR_DELIMITER,\n\n WHITE_LIKE_COLOR_BRIGHTNESS,\n MIN_LIMIT_OFFSET_BRIGHTNESS,\n MAX_LIMIT_BGCOLOR_BRIGHTNESS,\n HIGH_BGCOLOR_BRIGHTNESS,\n HIGH_BLACKWHITE_HSL_BRIGHTNESS,\n LOW_BLACKWHITE_HSL_BRIGHTNESS,\n IGNORE_ALPHA,\n\n TABLE_NAME,\n\n IMPORTANT_REGEXP,\n\n SEMICOLON_PLACEHOLDER,\n SEMICOLON_PLACEHOLDER_REGEXP\n} from './constant';\n\n// Darkmode配置\nimport config from './config';\n\nimport {\n plugins, // 插件系统\n tnQueue, // 文本节点队列\n bgStack, // 需要判断位置的背景节点堆栈\n cssUtils // 样式相关操作工具对象\n} from './global';\n\n// 节点相关操作工具API\nimport {\n getChildrenAndIt,\n hasTextNode,\n hasTableClass\n} from './domUtils';\n\nconst colorNameReg = new RegExp(Object.keys(ColorName).map(colorName => `\\\\b${colorName}\\\\b`).join('|'), 'ig'); // 生成正则表达式来匹配这些colorName\nconst colorReg = /\\brgba?\\([^)]+\\)/i;\nconst colorRegGlobal = /\\brgba?\\([^)]+\\)/ig;\nconst removeImportant = value => value.replace(IMPORTANT_REGEXP, ''); // 清除!important\nconst parseColor = (value, parseTransparent) => removeImportant(value).replace(colorNameReg, match => { // 处理颜色,包括清除!important和转换英文定义颜色\n if (!parseTransparent && match === 'transparent') return match; // 如果不转换transparent,直接返回transparent\n\n const color = ColorName[match.toLowerCase()];\n return `${color.length > 3 ? 'rgba' : 'rgb'}(${color.toString()})`;\n});\n\n// 计算mix颜色\nconst mixColor = colors => {\n if (!colors || colors.length < 1) return '';\n if (colors.length === 1) return colors[0];\n\n let retColorStr = colors.shift();\n let nextColorStr = colors.shift();\n while (nextColorStr) {\n const retColor = ColorParser(retColorStr);\n const nextColor = ColorParser(nextColorStr);\n if (!retColor && nextColor) { // 如果当前色值非法,混入色值合法,则直接使用混入色值\n retColorStr = nextColorStr;\n } else if (!retColor && !nextColor) { // 如果两个色值都非法,则使用下一批色值\n retColorStr = colors.shift() || '';\n } else if (retColor && nextColor) { // 如果两个色值都合法,执行mix\n retColorStr = retColor.mix(nextColor, nextColor.alpha());\n } // 如果当前色值合法,混入色值非法,无需处理\n nextColorStr = colors.shift();\n }\n\n return retColorStr;\n};\n\n// 处理-webkit-fill-color和-webkit-text-stroke-color,返回处理后的色值,无则返回空字符串\nconst parseWebkitFillColorAndStrokeColor = value => {\n const newValue = parseColor(value);\n return colorReg.test(newValue) ? newValue : '';\n};\n\n// 计算感知亮度\nconst getColorPerceivedBrightness = rgb => (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\n// 调整为指定感知亮度\nconst adjustBrightnessByLimit = (limitBright, rgb) => {\n const relativeBrightnessRatio = limitBright / getColorPerceivedBrightness(rgb);\n let newTextR = Math.min(255, rgb[0] * relativeBrightnessRatio);\n let newTextG = Math.min(255, rgb[1] * relativeBrightnessRatio);\n let newTextB = Math.min(255, rgb[2] * relativeBrightnessRatio);\n if (newTextG === 0 || newTextR === 255 || newTextB === 255) {\n newTextG = (limitBright * 1000 - newTextR * 299 - newTextB * 114) / 587;\n } else if (newTextR === 0) {\n newTextR = (limitBright * 1000 - newTextG * 587 - newTextB * 114) / 299;\n } else if (newTextB === 0 || newTextG === 255) {\n newTextB = (limitBright * 1000 - newTextR * 299 - newTextG * 587) / 114;\n }\n return Color.rgb(newTextR, newTextG, newTextB);\n};\n\n// 计算亮度,用作对比度计算\nconst getLuminanace = rgb => {\n const srgb = rgb.map(val => {\n val /= 255;\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n });\n return srgb[0] * 0.2126 + srgb[1] * 0.7152 + srgb[2] * 0.0722;\n};\n\n// 计算对比度 https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-procedure\nconst getContrast = (rgb1, rgb2) => {\n const lum1 = getLuminanace(rgb1);\n const lum2 = getLuminanace(rgb2);\n\n // 亮色 / 暗色\n if (lum1 < lum2) return (lum2 + 0.05) / (lum1 + 0.05);\n return (lum1 + 0.05) / (lum2 + 0.05);\n}\n\nexport default class SDK {\n _idx = 0; // 索引值\n _defaultDarkTextColorRgb = ColorParser(config.defaultDarkTextColor).rgb().array();\n _defaultDarkBgColorRgb = ColorParser(config.defaultDarkBgColor).rgb().array();\n _defaultDarkBgColorHSL = ColorParser(config.defaultDarkBgColor).hsl().array();\n _defaultDarkTextColorBrightness = getColorPerceivedBrightness(this._defaultDarkTextColorRgb);\n _defaultDarkBgColorBrightness = getColorPerceivedBrightness(this._defaultDarkBgColorRgb);\n _defaultDarkBgColorHslBrightness = this._defaultDarkBgColorHSL[2];\n _maxLimitOffsetBrightness = this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness;\n\n isDarkmode = false; // 当前是否需要运行Darkmode处理\n\n constructor() {}\n\n _adjustTextBrightness(textColor, bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n const bgColorWithOpacityPerceivedBrightness = bgColorPerceivedBrightness * bgColorAlpha\n + this._defaultDarkBgColorBrightness * (1 - bgColorAlpha);\n const textColorRgb = textColor.rgb().array();\n const textColorHSL = textColor.hsl().array();\n const textColorAlpha = textColor.alpha();\n const textPerceivedBrightness = getColorPerceivedBrightness(textColorRgb);\n const offsetPerceivedBrightness = Math.abs(bgColorWithOpacityPerceivedBrightness - textPerceivedBrightness);\n\n // 用户设置为高亮字体颜色(接近白色亮度),不处理,保持高亮\n if (textPerceivedBrightness >= WHITE_LIKE_COLOR_BRIGHTNESS) return textColor;\n\n if (offsetPerceivedBrightness > this._maxLimitOffsetBrightness\n && bgColorWithOpacityPerceivedBrightness <= this._defaultDarkBgColorBrightness + 2) {\n return adjustBrightnessByLimit(this._maxLimitOffsetBrightness + bgColorWithOpacityPerceivedBrightness\n , textColorRgb).alpha(textColorAlpha);\n }\n\n // 如果感知亮度差大于阈值,无需调整\n if (offsetPerceivedBrightness >= MIN_LIMIT_OFFSET_BRIGHTNESS) return textColor;\n\n if (bgColorWithOpacityPerceivedBrightness >= HIGH_BGCOLOR_BRIGHTNESS) { // 亮背景,调暗字体\n if (textColorHSL[2] > 90 - HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到降低感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessByLimit(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness - MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n } else { // 暗背景,调亮字体\n if (textColorHSL[2] <= HIGH_BLACKWHITE_HSL_BRIGHTNESS) { // 优先调字体的亮度已带到提高感知亮度的目的\n textColorHSL[2] = 90 - textColorHSL[2];\n const tmpTextColor = Color.hsl(...textColorHSL).alpha(textColorAlpha);\n return this._adjustTextBrightness(tmpTextColor, bgColor);\n }\n return adjustBrightnessByLimit(Math.min(\n this._maxLimitOffsetBrightness\n , bgColorWithOpacityPerceivedBrightness + MIN_LIMIT_OFFSET_BRIGHTNESS\n ), textColorRgb).alpha(textColorAlpha);\n }\n }\n\n _adjustBackgroundBrightness(bgColor) {\n const bgColorRgb = bgColor.rgb().array();\n const bgColorHsl = bgColor.hsl().array();\n const bgColorAlpha = bgColor.alpha();\n const bgColorPerceivedBrightness = getColorPerceivedBrightness(bgColorRgb);\n let newColor = bgColor;\n if ((bgColorHsl[1] === 0 && bgColorHsl[2] > HIGH_BLACKWHITE_HSL_BRIGHTNESS)\n || bgColorPerceivedBrightness > WHITE_LIKE_COLOR_BRIGHTNESS) {\n // 饱和度为0(黑白灰色),亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS或感知亮度大于WHITE_LIKE_COLOR_BRIGHTNESS(白色)时,做亮度取反处理\n newColor = Color.hsl(0, 0, Math.min(100, 100 + this._defaultDarkBgColorHslBrightness - bgColorHsl[2]));\n } else if (bgColorPerceivedBrightness > MAX_LIMIT_BGCOLOR_BRIGHTNESS) {\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,将感知亮度设为MAX_LIMIT_BGCOLOR_BRIGHTNESS\n newColor = adjustBrightnessByLimit(MAX_LIMIT_BGCOLOR_BRIGHTNESS, bgColorRgb).alpha(bgColorAlpha);\n // const ratio = (MAX_LIMIT_BGCOLOR_BRIGHTNESS * 1000)\n // / (bgColorRgb[0] * 299 + bgColorRgb[1] * 587 + bgColorRgb[2] * 114);\n // newColor = Color.rgb(bgColorRgb[0] * ratio, bgColorRgb[1] * ratio, bgColorRgb[2] * ratio);\n } else if (bgColorHsl[2] < LOW_BLACKWHITE_HSL_BRIGHTNESS) {\n // 亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS,将亮度设为LOW_BLACKWHITE_HSL_BRIGHTNESS,适当提高亮度\n bgColorHsl[2] = LOW_BLACKWHITE_HSL_BRIGHTNESS;\n newColor = Color.hsl(...bgColorHsl);\n }\n return newColor.alpha(bgColorAlpha).rgb();\n }\n\n // 调整明度\n _adjustBrightness(color, el, options, isUpdate) {\n // 背景:\n // 处理原则:白背景改黑,其他高感知亮度背景调暗,低亮度适当提高亮度(感知亮度:https://www.w3.org/TR/AERT/#color-contrast)\n // 处理方法:\n // 黑白灰色(h=0,s=0)亮度大于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,做取反处理;\n // 感知亮度大于MAX_LIMIT_BGCOLOR_BRIGHTNESS,取MAX_LIMIT_BGCOLOR_BRIGHTNESS;\n // 其他亮度小于LOW_BLACKWHITE_HSL_BRIGHTNESS时,设为LOW_BLACKWHITE_HSL_BRIGHTNESS。\n\n // 字体、边框:\n // 处理原则:根据调整后的背景颜色和最小亮度差值算出字体颜色,接近白色字体颜色保持不变,带背景图片子元素字体颜色不变\n // 处理方法:亮度小于HIGH_BLACKWHITE_HSL_BRIGHTNESS时,用(90%-该亮度),大于等于HIGH_BLACKWHITE_HSL_BRIGHTNESS则保持不变;\n\n // 字体阴影\n // 处理方法:按照背景的处理方法来处理\n\n const alpha = color.alpha();\n let newColor;\n let extStyle = '';\n\n if (options.isBgColor) { // 背景色\n // 如果设置背景颜色,取消背景图片的影响\n if (el[BGIMAGEATTR] && alpha >= IGNORE_ALPHA) {\n delete el[BGIMAGEATTR];\n }\n\n newColor = this._adjustBackgroundBrightness(color);\n\n if (!options.hasInlineColor) {\n const parentTextColorStr = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n const parentTextColor = ColorParser(parentTextColorStr);\n if (parentTextColor) {\n const ret = this._adjustBrightness(parentTextColor, el, {\n isTextColor: true,\n parentElementBgColorStr: newColor || color\n }, isUpdate);\n if (ret.newColor) {\n extStyle += cssUtils.genCssKV('color', ret.newColor);\n } else {\n extStyle += cssUtils.genCssKV('color', parentTextColor);\n }\n }\n }\n } else if (options.isTextColor || options.isBorderColor) { // 字体色、边框色\n const parentElementBgColorStr = options.parentElementBgColorStr\n || (options.isTextColor && el[BGCOLORATTR])\n || config.defaultDarkBgColor;\n const parentElementBgColor = ColorParser(parentElementBgColorStr);\n\n // 无背景图片\n if (parentElementBgColor && !el[BGIMAGEATTR]) {\n newColor = this._adjustTextBrightness(color, parentElementBgColor);\n plugins.emit(`afterConvertTextColor${isUpdate ? 'ByUpdateStyle' : ''}`, el, {\n // fontColor: color,\n fontColor: newColor,\n bgColor: parentElementBgColor\n });\n }\n } else if (options.isTextShadow) { // 字体阴影\n // 无背景图片\n if (!el[BGIMAGEATTR]) {\n newColor = this._adjustBackgroundBrightness(color); // 按照背景色的方法来处理\n }\n }\n\n return {\n newColor: newColor && color.toString() !== newColor.toString() && newColor.alpha(alpha).rgb(),\n extStyle\n };\n }\n\n _try(func) {\n try {\n return func();\n } catch (e) {\n console.log('An error occurred when running the dark mode conversion algorithm\\n', e);\n typeof config.error === 'function' && config.error(e);\n }\n }\n\n convert(el, cssKVList, isUpdate) {\n plugins.resetCss();\n plugins.emit(`beforeConvertNode${isUpdate ? 'ByUpdateStyle' : ''}`, el);\n\n let css = ''; // css\n let bgCss = ''; // 文字底图css\n\n if (this.isDarkmode || isUpdate) {\n const nodeName = el.nodeName;\n\n if (config.whitelist.tagName.indexOf(nodeName) > -1) return '';\n if (config.whitelist.attribute.some(attribute => el.hasAttribute(attribute))) return '';\n\n const styles = el.style;\n\n if (!cssKVList) { // 没有传入cssKVList就从内联样式中提取\n // styles.cssText 读出来的颜色统一是rgba格式,除了用英文定义颜色(如:black、white)\n cssKVList = ((styles.cssText && styles.cssText.replace(/(\"[^;]*);([^;]*\")|('[^;]*);([^;]*')/g, `$1$3${SEMICOLON_PLACEHOLDER}$2$4`).split(';')) || []).map(cssStr => { // 将cssStr转换为[key, value],并清除各个元素的前后空白字符\n const splitIdx = cssStr.indexOf(':');\n return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(SEMICOLON_PLACEHOLDER_REGEXP, ';')].map(item => (item || '').replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, ''));\n });\n }\n\n let hasInlineColor = false; // 是否有自定义字体颜色\n let hasInlineBackground = false;\n let hasInlineBackgroundImage = false;\n let elBackgroundPositionAttr;\n let elBackgroundSizeAttr;\n\n cssKVList = cssKVList.filter(([key, value]) => {\n if (key === 'color') {\n hasInlineColor = true;\n } else if (/background/i.test(key)) {\n hasInlineBackground = true;\n if (key === 'background-position') {\n elBackgroundPositionAttr = value;\n } else if (key === 'background-size') {\n elBackgroundSizeAttr = value;\n }\n }\n\n if ((/background/i.test(key) || /^(-webkit-)?border-image/.test(key)) && /url\\([^)]*\\)/i.test(value)) {\n hasInlineBackgroundImage = true;\n }\n\n // 过滤掉一些key\n return [\n '-webkit-border-image',\n 'border-image',\n 'color',\n 'background-color',\n 'background-image',\n 'background',\n 'border',\n 'border-top',\n 'border-right',\n 'border-bottom',\n 'border-left',\n 'border-color',\n 'border-top-color',\n 'border-right-color',\n 'border-bottom-color',\n 'border-left-color',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'text-shadow'\n ].indexOf(key) > -1;\n }).sort(([key1], [key2]) => { // color属性放在最后\n if (key1 === 'color') {\n return 1;\n } else if (key1 === 'background-image' && key2 === 'background-color') { // 确保 background-image 在 background-color 后面\n return 1;\n } else if (key2.indexOf('-webkit-text') === 0) { // 把-webkit-text的属性放在最前面\n return 1;\n }\n return -1;\n });\n\n if (TABLE_NAME.indexOf(nodeName) > -1 && !hasInlineBackground) { // 如果table没有内联样式\n this._try(() => {\n let colorStr = hasTableClass(el); // 获取class对应的lm色值\n if (!colorStr) colorStr = el.getAttribute('bgcolor'); // 如果没有class则获取bgcolor的色值\n if (colorStr) { // 有色值(class对应的lm色值或者是bgcolor色值),则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.unshift(['background-color', color.toString()]);\n hasInlineBackground = true;\n }\n }\n });\n }\n\n if (nodeName === 'FONT' && !hasInlineColor) { // 如果是font标签且没有内联文本颜色样式\n this._try(() => {\n const colorStr = el.getAttribute('color'); // 获取color的色值\n if (colorStr) { // 有色值,则当做内联样式来处理\n const color = ColorParser(colorStr);\n if (color) {\n cssKVList.push(['color', color.toString()]);\n hasInlineColor = true;\n }\n }\n });\n }\n\n // 处理-webkit-text相关样式\n let webkitFillColor = '';\n let webkitStrokeColor = '';\n let webkitTextLen = 0;\n cssKVList.some(([key, value], idx) => this._try(() => {\n if (key.indexOf('-webkit-text') !== 0) { // 遍历到非-webkit-text样式\n webkitTextLen = idx; // 记录-webkit-text相关样式的长度\n return true; // 结束遍历\n }\n\n switch (key) {\n case '-webkit-text-fill-color':\n webkitFillColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n case '-webkit-text-stroke': { // 有-webkit-text-stroke时就不会有-webkit-text-stroke-color\n const newValue = value.split(' ');\n newValue.length === 2 && (webkitStrokeColor = parseWebkitFillColorAndStrokeColor(newValue[1]));\n break;\n }\n case '-webkit-text-stroke-color': // 有-webkit-text-stroke-color时就不会有-webkit-text-stroke\n webkitStrokeColor = parseWebkitFillColorAndStrokeColor(value);\n break;\n }\n\n return false; // 继续遍历\n }));\n if (webkitFillColor) { // 有-webkit-text-fill-color,当做color对待\n if (hasInlineColor) { // 本来有color,替换为-webkit-text-fill-color\n cssKVList[cssKVList.length - 1] = ['-webkit-text-fill-color', webkitFillColor];\n } else { // 没有color,push一个-webkit-text-fill-color\n cssKVList.push(['-webkit-text-fill-color', webkitFillColor]);\n hasInlineColor = true;\n }\n }\n if (webkitTextLen) {\n cssKVList.splice(0, webkitTextLen); // 删掉-webkit-text相关样式\n webkitStrokeColor && cssKVList.unshift(['-webkit-text-stroke-color', webkitStrokeColor]); // 如果有-webkit-text-stroke-color,则插入到最前面\n }\n\n let dmClassName = '';\n let dmBgClassName = '';\n if (isUpdate && el.className && typeof el.className === 'string') {\n // 先提取dm className\n let matches = el.className.match(DM_CLASSNAME_REGEXP);\n if (matches) {\n dmClassName = matches[0];\n }\n\n // 再提取dm bg className\n matches = el.className.match(bgStack.classNameReg);\n if (matches) {\n dmBgClassName = matches[0];\n }\n }\n\n let cssKV = ''; // css键值对\n cssKVList.forEach(([key, value]) => this._try(() => {\n const oldValue = value;\n let cssChange = false;\n\n // 找出色值来处理\n const isBgColor = /^background/.test(key);\n const isTextShadow = key === 'text-shadow';\n const textColorIdx = ['-webkit-text-stroke-color', 'color', '-webkit-text-fill-color'].indexOf(key);\n const isBorderColor = /^border/.test(key);\n const isGradient = /gradient/.test(value);\n const gradientColors = [];\n let extStyle = '';\n let gradientMixColor;\n\n // 将英文定义颜色转换为rgb格式\n value = parseColor(value, isGradient); // 渐变需要处理透明\n\n if (colorReg.test(value)) {\n if (isGradient) {\n // 把原渐变色取出来\n let matches = colorRegGlobal.exec(value);\n while (matches) {\n gradientColors.push(matches[0]);\n matches = colorRegGlobal.exec(value);\n }\n\n // 计算出一个mix颜色\n gradientMixColor = mixColor(gradientColors);\n }\n let replaceIndex = 0;\n value = value.replace(colorRegGlobal, match => {\n // 渐变色统一改成mix纯色\n if (isGradient) {\n match = gradientMixColor;\n cssChange = true;\n }\n\n const matchColor = ColorParser(match);\n if (matchColor?.alpha() >= IGNORE_ALPHA) { // 忽略透明度低的色值\n // 使用颜色处理算法\n const ret = this._adjustBrightness(matchColor, el, {\n isBgColor,\n isTextShadow,\n isTextColor: textColorIdx > -1,\n isBorderColor,\n hasInlineColor\n }, isUpdate);\n const retColor = !hasInlineBackgroundImage && ret.newColor;\n\n extStyle += ret.extStyle;\n\n // 对背景颜色和文字颜色做继承传递,用于文字亮度计算\n if (isBgColor || textColorIdx > 0) { // 不处理-webkit-text-stroke-color\n const retColorStr = retColor ? retColor.toString() : match;\n replaceIndex === 0 && getChildrenAndIt(el).forEach(dom => {\n if (isBgColor) {\n dom[BGCOLORATTR] = retColorStr;\n dom[ORIGINAL_BGCOLORATTR] = (dom[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER).concat(match).join(BG_COLOR_DELIMITER);\n } else {\n dom[COLORATTR] = retColorStr;\n dom[ORIGINAL_COLORATTR] = match;\n }\n\n // 如果设置背景颜色,取消背景图片的影响\n const retColor = ColorParser(retColorStr);\n if (isBgColor && retColor?.alpha() >= IGNORE_ALPHA && dom[BGIMAGEATTR]) {\n delete dom[BGIMAGEATTR];\n }\n });\n }\n\n retColor && (cssChange = true);\n replaceIndex++;\n return retColor || match;\n }\n return match;\n }).replace(/\\s?!\\s?important/ig, '');\n }\n\n extStyle && (cssKV += extStyle);\n\n if (!(el instanceof SVGElement)) { // 先不处理SVG\n // 背景图片、边框图片\n const isBackgroundAttr = /^background/.test(key);\n const isBorderImageAttr = /^(-webkit-)?border-image/.test(key);\n if ((isBackgroundAttr || isBorderImageAttr) && /url\\([^)]*\\)/i.test(value)) {\n cssChange = true;\n const imgBgColor = mixColor((el[ORIGINAL_BGCOLORATTR] || config.defaultLightBgColor).split(BG_COLOR_DELIMITER));\n\n // 在背景图片下加一层原背景颜色:\n // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);\n // border-image不支持多层背景,需要添加background-color\n value = value.replace(/^(.*?)url\\(([^)]*)\\)(.*)$/i, matches => {\n let newValue = matches;\n let newBackgroundPositionValue = '';\n let newBackgroundSizeValue = '';\n let tmpCssKvStr = '';\n\n if (!el[BGIMAGEATTR]) { // 避免重复set\n getChildrenAndIt(el).forEach(dom => {\n dom[BGIMAGEATTR] = true;\n });\n }\n\n // background-image\n if (isBackgroundAttr) {\n tmpCssKvStr = cssUtils.genCssKV(key, imgBgColor ? `${newValue},linear-gradient(${imgBgColor}, ${imgBgColor})` : newValue);\n if (elBackgroundPositionAttr) {\n newBackgroundPositionValue = `top left,${elBackgroundPositionAttr}`;\n cssKV += cssUtils.genCssKV('background-position', `${newBackgroundPositionValue}`);\n tmpCssKvStr += cssUtils.genCssKV('background-position', `${newBackgroundPositionValue},top left`);\n }\n if (elBackgroundSizeAttr) {\n newBackgroundSizeValue = `100%,${elBackgroundSizeAttr}`;\n cssKV += cssUtils.genCssKV('background-size', `${newBackgroundSizeValue}`);\n tmpCssKvStr += cssUtils.genCssKV('background-size', `${newBackgroundSizeValue},100%`);\n }\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr);\n }\n } else {\n // border-image元素,如果当前元素没有背景颜色,补背景颜色\n if (imgBgColor && !hasInlineBackground) {\n tmpCssKvStr = cssUtils.genCssKV('background-image', `linear-gradient(${imgBgColor}, ${imgBgColor})`);\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, tmpCssKvStr);\n } else { // 否则背景图入栈\n bgStack.push(el, tmpCssKvStr); // 背景图入栈\n }\n }\n }\n return newValue;\n });\n\n // 没有设置自定义字体颜色,则使用非 Dark Mode 下默认字体颜色\n if (!hasInlineColor) {\n const textColor = el[ORIGINAL_COLORATTR] || config.defaultLightTextColor;\n cssKV += cssUtils.genCssKV('color', textColor);\n getChildrenAndIt(el).forEach(dom => {\n dom[COLORATTR] = textColor;\n });\n }\n }\n }\n\n if (cssChange) {\n !isUpdate && IMPORTANT_REGEXP.test(oldValue) && (styles[key] = removeImportant(oldValue)); // 清除inline style的!important\n if (isGradient) {\n if (dmBgClassName) { // 如果是文字底图,则直接加样式\n bgCss += cssUtils.genCss(dmBgClassName, cssUtils.genCssKV(key, value));\n } else { // 否则背景图入栈\n bgStack.push(el, cssUtils.genCssKV(key, value)); // 渐变入栈\n }\n } else {\n cssKV += cssUtils.genCssKV(key, value);\n }\n }\n }));\n\n if (cssKV) { // 有处理过或者是背景图片就加class以及css\n if (!dmClassName) {\n dmClassName = `${CLASS_PREFIX}${this._idx++}`;\n el.classList.add(dmClassName);\n }\n css += (cssKV ? cssUtils.genCss(dmClassName, cssKV) : '');\n }\n\n css += bgCss; // 追加文字底图样式,要在添加cssKV之后添加,避免被覆盖\n\n if (!isUpdate && hasTextNode(el)) { // 如果节点里有文本,要判断是否在背景图里\n if (config.delayBgJudge) { // 延迟背景判断\n tnQueue.push(el); // 文字入队\n } else {\n bgStack.contains(el, item => {\n css += cssUtils.genCss(item.className, item.cssKV);\n });\n }\n }\n }\n\n plugins.emit(`afterConvertNode${isUpdate ? 'ByUpdateStyle' : ''}`, el);\n\n return css;\n }\n\n getContrast(colorStr1, colorStr2) {\n const color1 = ColorParser(colorStr1);\n const color2 = ColorParser(colorStr2);\n return (color1 && color2) ? getContrast(color1.rgb().array(), color2.rgb().array()) : 0;\n }\n};\n","/**\n * @name 文本节点队列\n *\n * @class TextNodeQueue\n *\n * @constructor\n * @param {string} prefix 类名前缀\n *\n * @method push 文本节点入队\n * @param {DOM Object} el 文本节点对象\n *\n * @method forEach 遍历,遍历过的文本节点出队\n * @param {Function} callback 回调\n *\n * @method update 更新队列的节点对象,主要解决前后节点不一致的问题\n * @param {DOM Object Array} els 要更新的节点对象列表\n *\n */\n\n// Darkmode配置\nimport config from './config';\n\nexport default class TextNodeQueue {\n _queue = []; // 文本节点队列,{ el, className, updated }\n _idx = 0; // 索引值\n\n constructor(prefix) {\n this._prefix = prefix;\n }\n\n push(el) {\n const className = `${this._prefix}${this._idx++}`;\n el.classList.add(className);\n this._queue.push({\n el,\n className,\n updated: !config.delayBgJudge\n });\n }\n\n forEach(callback) {\n const idxStack = [];\n\n this._queue.forEach((item, idx) => {\n if (item.updated) {\n idxStack.unshift(idx);\n typeof callback && callback(item.el);\n }\n });\n\n while (idxStack.length) { // 处理完之后删除部分节点\n this._queue.splice(idxStack.shift(), 1);\n }\n }\n\n update(els) {\n this._queue.forEach(item => {\n if (!item.updated) {\n Array.prototype.some.call(els, el => {\n if (el.nodeType === 1 && el.classList.contains(item.className)) {\n item.el = el;\n item.updated = true;\n return true;\n }\n return false;\n });\n }\n });\n }\n};\n"],"sourceRoot":""}
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Darkmode",[],t):"object"==typeof exports?exports.Darkmode=t():e.Darkmode=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";var n=r(3),a=r(6),o=[].slice,i=["keyword","gray","hex"],l={};Object.keys(a).forEach((function(e){l[o.call(a[e].labels).sort().join("")]=e}));var s={};function u(e,t){if(!(this instanceof u))return new u(e,t);if(t&&t in i&&(t=null),t&&!(t in a))throw new Error("Unknown model: "+t);var r,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof u)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var h=n.get(e);if(null===h)throw new Error("Unable to parse color from string: "+e);this.model=h.model,c=a[this.model].channels,this.color=h.value.slice(0,c),this.valpha="number"==typeof h.value[c]?h.value[c]:1}else if(e.length){this.model=t||"rgb",c=a[this.model].channels;var f=o.call(e,0,c);this.color=d(f,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var g=Object.keys(e);"alpha"in e&&(g.splice(g.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var b=g.sort().join("");if(!(b in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[b];var p=a[this.model].labels,y=[];for(r=0;r<p.length;r++)y.push(e[p[r]]);this.color=d(y)}if(s[this.model])for(c=a[this.model].channels,r=0;r<c;r++){var m=s[this.model][r];m&&(this.color[r]=m(this.color[r]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function c(e,t,r){return(e=Array.isArray(e)?e:[e]).forEach((function(e){(s[e]||(s[e]=[]))[t]=r})),e=e[0],function(n){var a;return arguments.length?(r&&(n=r(n)),(a=this[e]()).color[t]=n,a):(a=this[e]().color[t],r&&(a=r(a)),a)}}function h(e){return function(t){return Math.max(0,Math.min(e,t))}}function f(e){return Array.isArray(e)?e:[e]}function d(e,t){for(var r=0;r<t;r++)"number"!=typeof e[r]&&(e[r]=0);return e}u.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in n.to?this:this.rgb(),r=1===(t=t.round("number"==typeof e?e:1)).valpha?t.color:t.color.concat(this.valpha);return n.to[t.model](r)},percentString:function(e){var t=this.rgb().round("number"==typeof e?e:1),r=1===t.valpha?t.color:t.color.concat(this.valpha);return n.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=a[this.model].channels,r=a[this.model].labels,n=0;n<t;n++)e[r[n]]=this.color[n];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new u(this.color.map(function(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new u(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:c("rgb",0,h(255)),green:c("rgb",1,h(255)),blue:c("rgb",2,h(255)),hue:c(["hsl","hsv","hsl","hwb","hcg"],0,(function(e){return(e%360+360)%360})),saturationl:c("hsl",1,h(100)),lightness:c("hsl",2,h(100)),saturationv:c("hsv",1,h(100)),value:c("hsv",2,h(100)),chroma:c("hcg",1,h(100)),gray:c("hcg",2,h(100)),white:c("hwb",1,h(100)),wblack:c("hwb",2,h(100)),cyan:c("cmyk",0,h(100)),magenta:c("cmyk",1,h(100)),yellow:c("cmyk",2,h(100)),black:c("cmyk",3,h(100)),x:c("xyz",0,h(100)),y:c("xyz",1,h(100)),z:c("xyz",2,h(100)),l:c("lab",0,h(100)),a:c("lab",1),b:c("lab",2),keyword:function(e){return arguments.length?new u(e):a[this.model].keyword(this.color)},hex:function(e){return arguments.length?new u(e):n.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],r=0;r<e.length;r++){var n=e[r]/255;t[r]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),r=e.luminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return u.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),r=t.color[0];return r=(r=(r+e)%360)<0?360+r:r,t.color[0]=r,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var r=e.rgb(),n=this.rgb(),a=void 0===t?.5:t,o=2*a-1,i=r.alpha()-n.alpha(),l=((o*i==-1?o:(o+i)/(1+o*i))+1)/2,s=1-l;return u.rgb(l*r.red()+s*n.red(),l*r.green()+s*n.green(),l*r.blue()+s*n.blue(),r.alpha()*a+n.alpha()*(1-a))}},Object.keys(a).forEach((function(e){if(-1===i.indexOf(e)){var t=a[e].channels;u.prototype[e]=function(){if(this.model===e)return new u(this);if(arguments.length)return new u(arguments,e);var r="number"==typeof arguments[t]?t:this.valpha;return new u(f(a[this.model][e].raw(this.color)).concat(r),e)},u[e]=function(r){return"number"==typeof r&&(r=d(o.call(arguments),t)),new u(r,e)}}})),e.exports=u},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(7),a={};for(var o in n)n.hasOwnProperty(o)&&(a[n[o]]=o);var i=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=i[l].channels,u=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:s}),Object.defineProperty(i[l],"labels",{value:u})}i.rgb.hsl=function(e){var t,r,n=e[0]/255,a=e[1]/255,o=e[2]/255,i=Math.min(n,a,o),l=Math.max(n,a,o),s=l-i;return l===i?t=0:n===l?t=(a-o)/s:a===l?t=2+(o-n)/s:o===l&&(t=4+(n-a)/s),(t=Math.min(60*t,360))<0&&(t+=360),r=(i+l)/2,[t,100*(l===i?0:r<=.5?s/(l+i):s/(2-l-i)),100*r]},i.rgb.hsv=function(e){var t,r,n,a,o,i=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(i,l,s),c=u-Math.min(i,l,s),h=function(e){return(u-e)/6/c+.5};return 0===c?a=o=0:(o=c/u,t=h(i),r=h(l),n=h(s),i===u?a=n-r:l===u?a=1/3+t-n:s===u&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[360*a,100*o,100*u]},i.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2];return[i.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(r,n))),100*(n=1-1/255*Math.max(t,Math.max(r,n)))]},i.rgb.cmyk=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255;return[100*((1-r-(t=Math.min(1-r,1-n,1-a)))/(1-t)||0),100*((1-n-t)/(1-t)||0),100*((1-a-t)/(1-t)||0),100*t]},i.rgb.keyword=function(e){var t=a[e];if(t)return t;var r,o,i,l=1/0;for(var s in n)if(n.hasOwnProperty(s)){var u=n[s],c=(o=e,i=u,Math.pow(o[0]-i[0],2)+Math.pow(o[1]-i[1],2)+Math.pow(o[2]-i[2],2));c<l&&(l=c,r=s)}return r},i.keyword.rgb=function(e){return n[e]},i.rgb.xyz=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255;return[100*(.4124*(t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*t+.7152*r+.0722*n),100*(.0193*t+.1192*r+.9505*n)]},i.rgb.lab=function(e){var t=i.rgb.xyz(e),r=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,r=(r/=95.047)>.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]},i.hsl.rgb=function(e){var t,r,n,a,o,i=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[o=255*s,o,o];t=2*s-(r=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(n=i+1/3*-(u-1))<0&&n++,n>1&&n--,o=6*n<1?t+6*(r-t)*n:2*n<1?r:3*n<2?t+(r-t)*(2/3-n)*6:t,a[u]=255*o;return a},i.hsl.hsv=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,a=r,o=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,a*=o<=1?o:2-o,[t,100*(0===n?2*a/(o+a):2*r/(n+r)),100*((n+r)/2)]},i.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,a=Math.floor(t)%6,o=t-Math.floor(t),i=255*n*(1-r),l=255*n*(1-r*o),s=255*n*(1-r*(1-o));switch(n*=255,a){case 0:return[n,s,i];case 1:return[l,n,i];case 2:return[i,n,s];case 3:return[i,l,n];case 4:return[s,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(e){var t,r,n,a=e[0],o=e[1]/100,i=e[2]/100,l=Math.max(i,.01);return n=(2-o)*i,r=o*l,[a,100*(r=(r/=(t=(2-o)*l)<=1?t:2-t)||0),100*(n/=2)]},i.hwb.rgb=function(e){var t,r,n,a,o,i,l,s=e[0]/360,u=e[1]/100,c=e[2]/100,h=u+c;switch(h>1&&(u/=h,c/=h),n=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(n=1-n),a=u+n*((r=1-c)-u),t){default:case 6:case 0:o=r,i=a,l=u;break;case 1:o=a,i=r,l=u;break;case 2:o=u,i=r,l=a;break;case 3:o=u,i=a,l=r;break;case 4:o=a,i=u,l=r;break;case 5:o=r,i=u,l=a}return[255*o,255*i,255*l]},i.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,a=e[3]/100;return[255*(1-Math.min(1,t*(1-a)+a)),255*(1-Math.min(1,r*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]},i.xyz.rgb=function(e){var t,r,n,a=e[0]/100,o=e[1]/100,i=e[2]/100;return r=-.9689*a+1.8758*o+.0415*i,n=.0557*a+-.204*o+1.057*i,t=(t=3.2406*a+-1.5372*o+-.4986*i)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(t=Math.min(Math.max(0,t),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(e){var t=e[0],r=e[1],n=e[2];return r/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(t-r),200*(r-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(e){var t,r,n,a=e[0];t=e[1]/500+(r=(a+16)/116),n=r-e[2]/200;var o=Math.pow(r,3),i=Math.pow(t,3),l=Math.pow(n,3);return r=o>.008856?o:(r-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,[t*=95.047,r*=100,n*=108.883]},i.lab.lch=function(e){var t,r=e[0],n=e[1],a=e[2];return(t=360*Math.atan2(a,n)/2/Math.PI)<0&&(t+=360),[r,Math.sqrt(n*n+a*a),t]},i.lch.lab=function(e){var t,r=e[0],n=e[1];return t=e[2]/360*2*Math.PI,[r,n*Math.cos(t),n*Math.sin(t)]},i.rgb.ansi16=function(e){var t=e[0],r=e[1],n=e[2],a=1 in arguments?arguments[1]:i.rgb.hsv(e)[2];if(0===(a=Math.round(a/50)))return 30;var o=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return 2===a&&(o+=60),o},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){var t=e[0],r=e[1],n=e[2];return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var r=.5*(1+~~(e>50));return[(1&t)*r*255,(t>>1&1)*r*255,(t>>2&1)*r*255]},i.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var r;return e-=16,[Math.floor(e/36)/5*255,Math.floor((r=e%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var r=t[0];3===t[0].length&&(r=r.split("").map((function(e){return e+e})).join(""));var n=parseInt(r,16);return[n>>16&255,n>>8&255,255&n]},i.rgb.hcg=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.max(Math.max(r,n),a),i=Math.min(Math.min(r,n),a),l=o-i;return t=l<=0?0:o===r?(n-a)/l%6:o===n?2+(a-r)/l:4+(r-n)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?i/(1-l):0)]},i.hsl.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=1,a=0;return(n=r<.5?2*t*r:2*t*(1-r))<1&&(a=(r-.5*n)/(1-n)),[e[0],100*n,100*a]},i.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=t*r,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100;if(0===r)return[255*n,255*n,255*n];var a,o=[0,0,0],i=t%1*6,l=i%1,s=1-l;switch(Math.floor(i)){case 0:o[0]=1,o[1]=l,o[2]=0;break;case 1:o[0]=s,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=l;break;case 3:o[0]=0,o[1]=s,o[2]=1;break;case 4:o[0]=l,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=s}return a=(1-r)*n,[255*(r*o[0]+a),255*(r*o[1]+a),255*(r*o[2]+a)]},i.hcg.hsv=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t),n=0;return r>0&&(n=t/r),[e[0],100*n,100*r]},i.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100*(1-t)+.5*t,n=0;return r>0&&r<.5?n=t/(2*r):r>=.5&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},i.hcg.hwb=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},i.hwb.hcg=function(e){var t=e[1]/100,r=1-e[2]/100,n=r-t,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=i.gray.hsv=function(e){return[0,0,e[0]]},i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},function(e,t,r){var n=r(1),a=r(4),o=Object.hasOwnProperty,i={};for(var l in n)o.call(n,l)&&(i[n[l]]=l);var s=e.exports={to:{},get:{}};function u(e,t,r){return Math.min(Math.max(t,e),r)}function c(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,r;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),r="hsl";break;case"hwb":t=s.get.hwb(e),r="hwb";break;default:t=s.get.rgb(e),r="rgb"}return t?{model:r,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,r,a,i=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(a=t[2],t=t[1],r=0;r<3;r++){var l=2*r;i[r]=parseInt(t.slice(l,l+2),16)}a&&(i[3]=parseInt(a,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(a=(t=t[1])[3],r=0;r<3;r++)i[r]=parseInt(t[r]+t[r],16);a&&(i[3]=parseInt(a+a,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(r=0;r<3;r++)i[r]=parseInt(t[r+1],0);t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:o.call(n,t[1])?((i=n[t[1]])[3]=1,i):null:null;for(r=0;r<3;r++)i[r]=Math.round(2.55*parseFloat(t[r+1]));t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}for(r=0;r<3;r++)i[r]=u(i[r],0,255);return i[3]=u(i[3],0,1),i},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.to.hex=function(){var e=a(arguments);return"#"+c(e[0])+c(e[1])+c(e[2])+(e[3]<1?c(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=a(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=a(arguments),t=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"},s.to.hsl=function(){var e=a(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=a(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return i[e.slice(0,3)]}},function(e,t,r){"use strict";var n=r(5),a=Array.prototype.concat,o=Array.prototype.slice,i=e.exports=function(e){for(var t=[],r=0,i=e.length;r<i;r++){var l=e[r];n(l)?t=a.call(t,o.call(l)):t.push(l)}return t};i.wrap=function(e){return function(){return e(i(arguments))}}},function(e,t){e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},function(e,t,r){var n=r(2),a=r(8),o={};Object.keys(n).forEach((function(e){o[e]={},Object.defineProperty(o[e],"channels",{value:n[e].channels}),Object.defineProperty(o[e],"labels",{value:n[e].labels});var t=a(e);Object.keys(t).forEach((function(r){var n=t[r];o[e][r]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var r=e(t);if("object"==typeof r)for(var n=r.length,a=0;a<n;a++)r[a]=Math.round(r[a]);return r};return"conversion"in e&&(t.conversion=e.conversion),t}(n),o[e][r].raw=function(e){var t=function(t){return null==t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(n)}))})),e.exports=o},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(2);function a(e){var t=function(){for(var e={},t=Object.keys(n),r=t.length,a=0;a<r;a++)e[t[a]]={distance:-1,parent:null};return e}(),r=[e];for(t[e].distance=0;r.length;)for(var a=r.pop(),o=Object.keys(n[a]),i=o.length,l=0;l<i;l++){var s=o[l],u=t[s];-1===u.distance&&(u.distance=t[a].distance+1,u.parent=a,r.unshift(s))}return t}function o(e,t){return function(r){return t(e(r))}}function i(e,t){for(var r=[t[e].parent,e],a=n[t[e].parent][e],i=t[e].parent;t[i].parent;)r.unshift(t[i].parent),a=o(n[t[i].parent][i],a),i=t[i].parent;return a.conversion=r,a}e.exports=function(e){for(var t=a(e),r={},n=Object.keys(t),o=n.length,l=0;l<o;l++){var s=n[l];null!==t[s].parent&&(r[s]=i(s,t))}return r}},function(e,t,r){"use strict";r.r(t),r.d(t,"run",(function(){return we})),r.d(t,"init",(function(){return xe})),r.d(t,"convertBg",(function(){return Me})),r.d(t,"updateStyle",(function(){return _e})),r.d(t,"getContrast",(function(){return Ce})),r.d(t,"extend",(function(){return je}));var n="(prefers-color-scheme: dark)",a=new RegExp("".concat("js_darkmode__","\\d+")),o="data_color_scheme_dark",i="".concat(1*new Date).concat(Math.round(10*Math.random())),l="data-darkmode-color-".concat(i),s="data-darkmode-bgcolor-".concat(i),u="data-darkmode-original-color-".concat(i),c="data-darkmode-original-bgcolor-".concat(i),h="data-darkmode-bgimage-".concat(i),f=window.getInnerHeight&&window.getInnerHeight()||window.innerHeight||document.documentElement.clientHeight,d=["TABLE","TR","TD","TH"],g=/ !important$/,b=/<\$#_SEMICOLON_#\$>/g,p={hasInit:!1,begin:null,showFirstPage:null,error:null,mode:"",whitelist:{tagName:["MPCPS","IFRAME"],attribute:[]},needJudgeFirstPage:!0,delayBgJudge:!1,container:null,cssSelectorsPrefix:"",defaultLightTextColor:"#191919",defaultLightBgColor:"#fff",defaultDarkTextColor:"#a3a3a3",defaultDarkBgColor:"#191919",set:function(e,t,r){var n=t[r];switch(e){case"boolean":"boolean"==typeof n&&(this[r]=n);break;case"string":"string"==typeof n&&""!==n&&(this[r]=n);break;case"function":"function"==typeof n&&(this[r]=n);break;case"dom":n instanceof HTMLElement&&(this[r]=n)}}};function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function k(e,t,r){return t&&v(e.prototype,t),r&&v(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var w=[],x=[],M=function(){function e(){m(this,e)}return k(e,[{key:"loopTimes",get:function(){return fe.loopTimes}},{key:"isDarkmode",get:function(){return ye.isDarkmode}},{key:"addCss",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];(r?w:x).push(be.genCss(e,t.map((function(e){var t=e.key,r=e.value;return be.genCssKV(t,r)})).join("")))}}]),e}(),_=function(){function e(){m(this,e),y(this,"_plugins",[]),y(this,"length",0),y(this,"loopTimes",0),y(this,"firstPageStyle",""),y(this,"otherPageStyle",""),y(this,"firstPageStyleNoMQ",""),y(this,"otherPageStyleNoMQ","")}return k(e,[{key:"extend",value:function(e){this._plugins.push(new(e(M))),this.length++}},{key:"emit",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this._plugins.forEach((function(t){"function"==typeof t[e]&&t[e].apply(t,r)}))}},{key:"addCss",value:function(e){e?(this.firstPageStyle+=w.join(""),this.firstPageStyleNoMQ+=x.join("")):(this.otherPageStyle+=w.join(""),this.otherPageStyleNoMQ+=x.join(""))}},{key:"resetCss",value:function(){w=[],x=[]}}]),e}();function C(e){return(C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function j(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function S(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var P=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),S(this,"_queue",[]),S(this,"_idx",0),this._prefix=t}var t,r,n;return t=e,(r=[{key:"push",value:function(e){var t="".concat(this._prefix).concat(this._idx++);e.classList.add(t),this._queue.push({el:e,className:t,updated:!p.delayBgJudge})}},{key:"forEach",value:function(e){var t=[];for(this._queue.forEach((function(r,n){r.updated&&(t.unshift(n),C(e)&&e(r.el))}));t.length;)this._queue.splice(t.shift(),1)}},{key:"update",value:function(e){this._queue.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&j(t.prototype,r),n&&j(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function O(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function E(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var B=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),E(this,"_stack",[]),E(this,"_idx",0),this._prefix=t,this.classNameReg=new RegExp("".concat(this._prefix,"\\d+"))}var t,r,n;return t=e,(r=[{key:"push",value:function(e,t){var r="".concat(this._prefix).concat(this._idx++);e.classList.add(r),this._stack.unshift({el:e,className:r,cssKV:t,updated:!p.delayBgJudge})}},{key:"contains",value:function(e,t){var r=e.getBoundingClientRect(),n=[];for(this._stack.forEach((function(e,t){if(e.updated){e.rect||(e.rect=e.el.getBoundingClientRect());var a=e.rect;r.top>=a.bottom||r.bottom<=a.top||r.left>=a.right||r.right<=a.left||n.unshift(t)}}));n.length;){var a=this._stack.splice(n.shift(),1)[0];"function"==typeof t&&t(a)}}},{key:"update",value:function(e){this._stack.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&O(t.prototype,r),n&&O(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return T(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return T(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function F(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function N(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var D=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),N(this,"_firstPageStyle",""),N(this,"_otherPageStyle",""),N(this,"isFinish",!1)}var t,r,a;return t=e,(r=[{key:"genCssKV",value:function(e,t){return"".concat(e,": ").concat(t," !important;")}},{key:"genCss",value:function(e,t){return"".concat("dark"===p.mode?"html.".concat(o," "):"").concat(p.cssSelectorsPrefix&&"".concat(p.cssSelectorsPrefix," "),".").concat(e,"{").concat(t,"}")}},{key:"addCss",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this[t?"_firstPageStyle":"_otherPageStyle"]+=e,fe.addCss(t)}},{key:"writeStyle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];!e&&ye.isDarkmode&&(this.isFinish=!0);var t=(ye.isDarkmode?[{target:this,key:["_firstPageStyle","_otherPageStyle"],needMediaQuery:!0}]:[]).concat([{target:fe,key:["firstPageStyle","otherPageStyle"],needMediaQuery:!0},{target:fe,key:["firstPageStyleNoMQ","otherPageStyleNoMQ"],needMediaQuery:!1}]).map((function(t){var r=t.target,a=A(t.key,2),o=a[0],i=a[1],l=t.needMediaQuery,s="";e?s=o:(r[i]=r[o]+r[i],r[o]="",s=i);var u=r[s];return u?(r[s]="","dark"!==p.mode&&l?"@media ".concat(n," {").concat(u,"}"):u):""})).join("");t&&document.head.insertAdjacentHTML("beforeend",'<style type="text/css">'.concat(t,"</style>"))}}])&&F(t.prototype,r),a&&F(t,a),Object.defineProperty(t,"prototype",{writable:!1}),e}();function L(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function I(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function q(e){return function(e){if(Array.isArray(e))return $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return $(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function V(e){var t;return(t=[e]).concat.apply(t,q(e.querySelectorAll("*")))}var z={"ue-table-interlace-color-single":"#fcfcfc","ue-table-interlace-color-double":"#f7faff"};var K=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),I(this,"_els",[]),I(this,"_firstPageEls",[]),I(this,"_delayEls",[]),I(this,"showFirstPage",!1)}var t,r,n;return t=e,(r=[{key:"length",get:function(){return this._els.length}},{key:"set",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._els=e}},{key:"get",value:function(){var e=[];return this._els.length?(e=this._els,ye.isDarkmode&&(this._els=[])):this._delayEls.length?(e=this._delayEls,this._delayEls=[]):p.container&&(e=p.container.querySelectorAll("*")),e}},{key:"delay",value:function(){var e=this;Array.prototype.forEach.call(this._els,(function(t){return e._delayEls.push(t)})),this._els=[]}},{key:"hasDelay",value:function(){return this._delayEls.length>0}},{key:"addFirstPageNode",value:function(e){this._firstPageEls.push(e)}},{key:"showFirstPageNodes",value:function(){this._firstPageEls.forEach((function(e){return!e.style.visibility&&(e.style.visibility="visible")})),this.showFirstPage=!0}},{key:"emptyFirstPageNodes",value:function(){this._firstPageEls=[]}}])&&L(t.prototype,r),n&&L(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),J=r(0),R=r.n(J),U=r(1),H=r.n(U);function Q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||W(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e){return function(e){if(Array.isArray(e))return X(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e,t){if(e){if("string"==typeof e)return X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?X(e,t):void 0}}function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Y(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Z(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ee=function(e){var t=null;try{t=R()(e)}catch(t){console.log("ignore the invalid color: `".concat(e,"`"))}return t};H.a.windowtext=[0,0,0],H.a.transparent=[255,255,255,0];var te=new RegExp(Object.keys(H.a).map((function(e){return"\\b".concat(e,"\\b")})).join("|"),"ig"),re=/\brgba?\([^)]+\)/i,ne=/\brgba?\([^)]+\)/gi,ae=function(e){return e.replace(g,"")},oe=function(e,t){return ae(e).replace(te,(function(e){if(!t&&"transparent"===e)return e;var r=H.a[e.toLowerCase()];return"".concat(r.length>3?"rgba":"rgb","(").concat(r.toString(),")")}))},ie=function(e){if(!e||e.length<1)return"";if(1===e.length)return e[0];for(var t=e.shift(),r=e.shift();r;){var n=ee(t),a=ee(r);!n&&a?t=r:n||a?n&&a&&(t=n.mix(a,a.alpha())):t=e.shift()||"",r=e.shift()}return t},le=function(e){var t=oe(e);return re.test(t)?t:""},se=function(e){return(299*e[0]+587*e[1]+114*e[2])/1e3},ue=function(e,t){var r=e/se(t),n=Math.min(255,t[0]*r),a=Math.min(255,t[1]*r),o=Math.min(255,t[2]*r);return 0===a||255===n||255===o?a=(1e3*e-299*n-114*o)/587:0===n?n=(1e3*e-587*a-114*o)/299:0!==o&&255!==a||(o=(1e3*e-299*n-587*a)/114),R.a.rgb(n,a,o)},ce=function(e){var t=e.map((function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)}));return.2126*t[0]+.7152*t[1]+.0722*t[2]},he=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Z(this,"_idx",0),Z(this,"_defaultDarkTextColorRgb",ee(p.defaultDarkTextColor).rgb().array()),Z(this,"_defaultDarkBgColorRgb",ee(p.defaultDarkBgColor).rgb().array()),Z(this,"_defaultDarkBgColorHSL",ee(p.defaultDarkBgColor).hsl().array()),Z(this,"_defaultDarkTextColorBrightness",se(this._defaultDarkTextColorRgb)),Z(this,"_defaultDarkBgColorBrightness",se(this._defaultDarkBgColorRgb)),Z(this,"_defaultDarkBgColorHslBrightness",this._defaultDarkBgColorHSL[2]),Z(this,"_maxLimitOffsetBrightness",this._defaultDarkTextColorBrightness-this._defaultDarkBgColorBrightness),Z(this,"isDarkmode",!1)}var t,r,n;return t=e,(r=[{key:"_adjustTextBrightness",value:function(e,t){var r=t.rgb().array(),n=t.alpha(),a=se(r)*n+this._defaultDarkBgColorBrightness*(1-n),o=e.rgb().array(),i=e.hsl().array(),l=e.alpha(),s=se(o),u=Math.abs(a-s);if(s>=250)return e;if(u>this._maxLimitOffsetBrightness&&a<=this._defaultDarkBgColorBrightness+2)return ue(this._maxLimitOffsetBrightness+a,o).alpha(l);if(u>=65)return e;if(a>=100){if(i[2]>50){i[2]=90-i[2];var c=R.a.hsl.apply(R.a,G(i)).alpha(l);return this._adjustTextBrightness(c,t)}return ue(Math.min(this._maxLimitOffsetBrightness,a-65),o).alpha(l)}if(i[2]<=40){i[2]=90-i[2];var h=R.a.hsl.apply(R.a,G(i)).alpha(l);return this._adjustTextBrightness(h,t)}return ue(Math.min(this._maxLimitOffsetBrightness,a+65),o).alpha(l)}},{key:"_adjustBackgroundBrightness",value:function(e){var t=e.rgb().array(),r=e.hsl().array(),n=e.alpha(),a=se(t),o=e;return 0===r[1]&&r[2]>40||a>250?o=R.a.hsl(0,0,Math.min(100,100+this._defaultDarkBgColorHslBrightness-r[2])):a>190?o=ue(190,t).alpha(n):r[2]<22&&(r[2]=22,o=R.a.hsl.apply(R.a,G(r))),o.alpha(n).rgb()}},{key:"_adjustBrightness",value:function(e,t,r,n){var a,o=e.alpha(),i="";if(r.isBgColor){if(t[h]&&o>=.05&&delete t[h],a=this._adjustBackgroundBrightness(e),!r.hasInlineColor){var l=t[u]||p.defaultLightTextColor,c=ee(l);if(c){var f=this._adjustBrightness(c,t,{isTextColor:!0,parentElementBgColorStr:a||e},n);f.newColor?i+=be.genCssKV("color",f.newColor):i+=be.genCssKV("color",c)}}}else if(r.isTextColor||r.isBorderColor){var d=r.parentElementBgColorStr||r.isTextColor&&t[s]||p.defaultDarkBgColor,g=ee(d);g&&!t[h]&&(a=this._adjustTextBrightness(e,g),fe.emit("afterConvertTextColor".concat(n?"ByUpdateStyle":""),t,{fontColor:a,bgColor:g}))}else r.isTextShadow&&(t[h]||(a=this._adjustBackgroundBrightness(e)));return{newColor:a&&e.toString()!==a.toString()&&a.alpha(o).rgb(),extStyle:i}}},{key:"_try",value:function(e){try{return e()}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof p.error&&p.error(e)}}},{key:"convert",value:function(e,t,r){var n=this;fe.resetCss(),fe.emit("beforeConvertNode".concat(r?"ByUpdateStyle":""),e);var o="",i="";if(this.isDarkmode||r){var f=e.nodeName;if(p.whitelist.tagName.indexOf(f)>-1)return"";if(p.whitelist.attribute.some((function(t){return e.hasAttribute(t)})))return"";var y=e.style;t||(t=(y.cssText&&y.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g,"$1$3".concat("<$#_SEMICOLON_#$>","$2$4")).split(";")||[]).map((function(e){var t=e.indexOf(":");return[e.slice(0,t).toLowerCase(),e.slice(t+1).replace(b,";")].map((function(e){return(e||"").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}))})));var m,v,k=!1,w=!1,x=!1;t=t.filter((function(e){var t=Q(e,2),r=t[0],n=t[1];return"color"===r?k=!0:/background/i.test(r)&&(w=!0,"background-position"===r?m=n:"background-size"===r&&(v=n)),(/background/i.test(r)||/^(-webkit-)?border-image/.test(r))&&/url\([^)]*\)/i.test(n)&&(x=!0),["-webkit-border-image","border-image","color","background-color","background-image","background","border","border-top","border-right","border-bottom","border-left","border-color","border-top-color","border-right-color","border-bottom-color","border-left-color","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","text-shadow"].indexOf(r)>-1})).sort((function(e,t){var r=Q(e,1)[0],n=Q(t,1)[0];return"color"===r||"background-image"===r&&"background-color"===n||0===n.indexOf("-webkit-text")?1:-1})),d.indexOf(f)>-1&&!w&&this._try((function(){var r=function(e){var t=null;return Array.prototype.some.call(e.classList,(function(e){return!!z[e]&&(t=z[e],!0)})),t}(e);if(r||(r=e.getAttribute("bgcolor")),r){var n=ee(r);n&&(t.unshift(["background-color",n.toString()]),w=!0)}})),"FONT"!==f||k||this._try((function(){var r=e.getAttribute("color");if(r){var n=ee(r);n&&(t.push(["color",n.toString()]),k=!0)}}));var M="",_="",C=0;t.some((function(e,t){var r=Q(e,2),a=r[0],o=r[1];return n._try((function(){if(0!==a.indexOf("-webkit-text"))return C=t,!0;switch(a){case"-webkit-text-fill-color":M=le(o);break;case"-webkit-text-stroke":var e=o.split(" ");2===e.length&&(_=le(e[1]));break;case"-webkit-text-stroke-color":_=le(o)}return!1}))})),M&&(k?t[t.length-1]=["-webkit-text-fill-color",M]:(t.push(["-webkit-text-fill-color",M]),k=!0)),C&&(t.splice(0,C),_&&t.unshift(["-webkit-text-stroke-color",_]));var j="",S="";if(r&&e.className&&"string"==typeof e.className){var P=e.className.match(a);P&&(j=P[0]),(P=e.className.match(ge.classNameReg))&&(S=P[0])}var O="";t.forEach((function(t){var a=Q(t,2),o=a[0],f=a[1];return n._try((function(){var t,a=f,d=!1,b=/^background/.test(o),M="text-shadow"===o,_=["-webkit-text-stroke-color","color","-webkit-text-fill-color"].indexOf(o),C=/^border/.test(o),j=/gradient/.test(f),P=[],E="";if(f=oe(f,j),re.test(f)){if(j){for(var B=ne.exec(f);B;)P.push(B[0]),B=ne.exec(f);t=ie(P)}var A=0;f=f.replace(ne,(function(a){j&&(a=t,d=!0);var o=ee(a);if((null==o?void 0:o.alpha())>=.05){var i=n._adjustBrightness(o,e,{isBgColor:b,isTextShadow:M,isTextColor:_>-1,isBorderColor:C,hasInlineColor:k},r),f=!x&&i.newColor;if(E+=i.extStyle,b||_>0){var g=f?f.toString():a;0===A&&V(e).forEach((function(e){b?(e[s]=g,e[c]=(e[c]||p.defaultLightBgColor).split("|").concat(a).join("|")):(e[l]=g,e[u]=a);var t=ee(g);b&&(null==t?void 0:t.alpha())>=.05&&e[h]&&delete e[h]}))}return f&&(d=!0),A++,f||a}return a})).replace(/\s?!\s?important/gi,"")}if(E&&(O+=E),!(e instanceof SVGElement)){var T=/^background/.test(o),F=/^(-webkit-)?border-image/.test(o);if((T||F)&&/url\([^)]*\)/i.test(f)){d=!0;var N=ie((e[c]||p.defaultLightBgColor).split("|"));if(f=f.replace(/^(.*?)url\(([^)]*)\)(.*)$/i,(function(t){var r=t,n="",a="",l="";return e[h]||V(e).forEach((function(e){e[h]=!0})),T?(l=be.genCssKV(o,N?"".concat(r,",linear-gradient(").concat(N,", ").concat(N,")"):r),m&&(n="top left,".concat(m),O+=be.genCssKV("background-position","".concat(n)),l+=be.genCssKV("background-position","".concat(n,",top left"))),v&&(a="100%,".concat(v),O+=be.genCssKV("background-size","".concat(a)),l+=be.genCssKV("background-size","".concat(a,",100%"))),S?i+=be.genCss(S,l):ge.push(e,l)):N&&!w&&(l=be.genCssKV("background-image","linear-gradient(".concat(N,", ").concat(N,")")),S?i+=be.genCss(S,l):ge.push(e,l)),r})),!k){var D=e[u]||p.defaultLightTextColor;O+=be.genCssKV("color",D),V(e).forEach((function(e){e[l]=D}))}}}d&&(!r&&g.test(a)&&(y[o]=ae(a)),j?S?i+=be.genCss(S,be.genCssKV(o,f)):ge.push(e,be.genCssKV(o,f)):O+=be.genCssKV(o,f))}))})),O&&(j||(j="".concat("js_darkmode__").concat(this._idx++),e.classList.add(j)),o+=O?be.genCss(j,O):""),o+=i,!r&&function(e){var t="";return Array.prototype.forEach.call(e.childNodes,(function(e){3===e.nodeType&&(t+=e.nodeValue.replace(/\s/g,""))})),t.length>0}(e)&&(p.delayBgJudge?de.push(e):ge.contains(e,(function(e){o+=be.genCss(e.className,e.cssKV)})))}return fe.emit("afterConvertNode".concat(r?"ByUpdateStyle":""),e),o}},{key:"getContrast",value:function(e,t){var r,n,a,o,i=ee(e),l=ee(t);return i&&l?(r=i.rgb().array(),n=l.rgb().array(),a=ce(r),o=ce(n),a<o?(o+.05)/(a+.05):(a+.05)/(o+.05)):0}}])&&Y(t.prototype,r),n&&Y(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),fe=new _,de=new P("".concat("js_darkmode__","text__")),ge=new B("".concat("js_darkmode__","bg__")),be=new D,pe=new K,ye=new he,me=new RegExp("".concat("js_darkmode__","[^ ]+"),"g"),ve=null,ke=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{type:"dom"};if(t.force&&(be.isFinish=!1),!be.isFinish)try{ye.isDarkmode=p.mode?"dark"===p.mode:e.matches,"dom"===t.type?(ye.isDarkmode&&"function"==typeof p.begin&&p.begin(pe.hasDelay()),Array.prototype.forEach.call(pe.get(),(function(e){if(ye.isDarkmode&&e.className&&"string"==typeof e.className&&(e.className=e.className.replace(me,"")),ye.isDarkmode||fe.length)if(p.needJudgeFirstPage){var t=e.getBoundingClientRect(),r=t.top,n=t.bottom;r<=0&&n<=0?be.addCss(ye.convert(e)):r>0&&r<f||n>0&&n<f?(pe.addFirstPageNode(e),be.addCss(ye.convert(e),!0)):(p.needJudgeFirstPage=!1,be.writeStyle(!0),pe.showFirstPageNodes(),"function"==typeof p.showFirstPage&&p.showFirstPage(),be.addCss(ye.convert(e)))}else be.addCss(ye.convert(e))})),fe.loopTimes++):"bg"===t.type&&ye.isDarkmode&&de.forEach((function(e){return ge.contains(e,(function(e){be.addCss(be.genCss(e.className,e.cssKV))}))})),(p.needJudgeFirstPage||!p.needJudgeFirstPage&&!pe.showFirstPage)&&"function"==typeof p.showFirstPage&&p.showFirstPage(),be.writeStyle(),pe.emptyFirstPageNodes(),ye.isDarkmode||(p.needJudgeFirstPage=!1,p.delayBgJudge=!1,null===p.container&&"dom"===t.type&&pe.length&&pe.delay())}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof p.error&&p.error(e)}};function we(e,t){xe(t),pe.set(e),ke(ve,{force:!0,type:"dom"})}function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!p.hasInit){p.hasInit=!0;var t=p.whitelist.tagName,r=p.whitelist.attribute;e.whitelist&&(e.whitelist.tagName instanceof Array&&e.whitelist.tagName.forEach((function(e){e=e.toUpperCase(),-1===t.indexOf(e)&&t.push(e)})),e.whitelist.attribute instanceof Array&&e.whitelist.attribute.forEach((function(e){-1===r.indexOf(e)&&r.push(e)}))),["dark","light"].indexOf(e.mode)>-1&&(p.set("string",e,"mode"),"dark"===e.mode&&document.getElementsByTagName("html")[0].classList.add(o)),p.set("function",e,"begin"),p.set("function",e,"showFirstPage"),p.set("function",e,"error"),p.set("boolean",e,"needJudgeFirstPage"),p.set("boolean",e,"delayBgJudge"),p.set("dom",e,"container"),p.set("string",e,"cssSelectorsPrefix"),p.set("string",e,"defaultLightTextColor"),p.set("string",e,"defaultLightBgColor"),p.set("string",e,"defaultDarkTextColor"),p.set("string",e,"defaultDarkBgColor"),!p.mode&&null===ve&&window.matchMedia&&(ve=window.matchMedia(n)).addListener(ke)}}function Me(e){pe.set(e),null!==p.container&&(ge.update(e),de.update(e)),ke(ve,{force:!0,type:"bg"})}function _e(e,t){be.isFinish&&(be.addCss(ye.convert(e,t?Object.keys(t).map((function(e){return[e,t[e]]})):void 0,!0),!1),be.writeStyle())}function Ce(e,t){return ye.getContrast(e,t)}function je(e){e.forEach((function(e){return fe.extend(e)}))}}])}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Darkmode",[],t):"object"==typeof exports?exports.Darkmode=t():e.Darkmode=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";var n=r(3),a=r(6),o=[].slice,i=["keyword","gray","hex"],l={};Object.keys(a).forEach((function(e){l[o.call(a[e].labels).sort().join("")]=e}));var s={};function u(e,t){if(!(this instanceof u))return new u(e,t);if(t&&t in i&&(t=null),t&&!(t in a))throw new Error("Unknown model: "+t);var r,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof u)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var h=n.get(e);if(null===h)throw new Error("Unable to parse color from string: "+e);this.model=h.model,c=a[this.model].channels,this.color=h.value.slice(0,c),this.valpha="number"==typeof h.value[c]?h.value[c]:1}else if(e.length){this.model=t||"rgb",c=a[this.model].channels;var f=o.call(e,0,c);this.color=d(f,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var g=Object.keys(e);"alpha"in e&&(g.splice(g.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var b=g.sort().join("");if(!(b in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[b];var p=a[this.model].labels,y=[];for(r=0;r<p.length;r++)y.push(e[p[r]]);this.color=d(y)}if(s[this.model])for(c=a[this.model].channels,r=0;r<c;r++){var m=s[this.model][r];m&&(this.color[r]=m(this.color[r]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function c(e,t,r){return(e=Array.isArray(e)?e:[e]).forEach((function(e){(s[e]||(s[e]=[]))[t]=r})),e=e[0],function(n){var a;return arguments.length?(r&&(n=r(n)),(a=this[e]()).color[t]=n,a):(a=this[e]().color[t],r&&(a=r(a)),a)}}function h(e){return function(t){return Math.max(0,Math.min(e,t))}}function f(e){return Array.isArray(e)?e:[e]}function d(e,t){for(var r=0;r<t;r++)"number"!=typeof e[r]&&(e[r]=0);return e}u.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in n.to?this:this.rgb(),r=1===(t=t.round("number"==typeof e?e:1)).valpha?t.color:t.color.concat(this.valpha);return n.to[t.model](r)},percentString:function(e){var t=this.rgb().round("number"==typeof e?e:1),r=1===t.valpha?t.color:t.color.concat(this.valpha);return n.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=a[this.model].channels,r=a[this.model].labels,n=0;n<t;n++)e[r[n]]=this.color[n];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new u(this.color.map(function(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new u(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:c("rgb",0,h(255)),green:c("rgb",1,h(255)),blue:c("rgb",2,h(255)),hue:c(["hsl","hsv","hsl","hwb","hcg"],0,(function(e){return(e%360+360)%360})),saturationl:c("hsl",1,h(100)),lightness:c("hsl",2,h(100)),saturationv:c("hsv",1,h(100)),value:c("hsv",2,h(100)),chroma:c("hcg",1,h(100)),gray:c("hcg",2,h(100)),white:c("hwb",1,h(100)),wblack:c("hwb",2,h(100)),cyan:c("cmyk",0,h(100)),magenta:c("cmyk",1,h(100)),yellow:c("cmyk",2,h(100)),black:c("cmyk",3,h(100)),x:c("xyz",0,h(100)),y:c("xyz",1,h(100)),z:c("xyz",2,h(100)),l:c("lab",0,h(100)),a:c("lab",1),b:c("lab",2),keyword:function(e){return arguments.length?new u(e):a[this.model].keyword(this.color)},hex:function(e){return arguments.length?new u(e):n.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],r=0;r<e.length;r++){var n=e[r]/255;t[r]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),r=e.luminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return u.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),r=t.color[0];return r=(r=(r+e)%360)<0?360+r:r,t.color[0]=r,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var r=e.rgb(),n=this.rgb(),a=void 0===t?.5:t,o=2*a-1,i=r.alpha()-n.alpha(),l=((o*i==-1?o:(o+i)/(1+o*i))+1)/2,s=1-l;return u.rgb(l*r.red()+s*n.red(),l*r.green()+s*n.green(),l*r.blue()+s*n.blue(),r.alpha()*a+n.alpha()*(1-a))}},Object.keys(a).forEach((function(e){if(-1===i.indexOf(e)){var t=a[e].channels;u.prototype[e]=function(){if(this.model===e)return new u(this);if(arguments.length)return new u(arguments,e);var r="number"==typeof arguments[t]?t:this.valpha;return new u(f(a[this.model][e].raw(this.color)).concat(r),e)},u[e]=function(r){return"number"==typeof r&&(r=d(o.call(arguments),t)),new u(r,e)}}})),e.exports=u},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(7),a={};for(var o in n)n.hasOwnProperty(o)&&(a[n[o]]=o);var i=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=i[l].channels,u=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:s}),Object.defineProperty(i[l],"labels",{value:u})}i.rgb.hsl=function(e){var t,r,n=e[0]/255,a=e[1]/255,o=e[2]/255,i=Math.min(n,a,o),l=Math.max(n,a,o),s=l-i;return l===i?t=0:n===l?t=(a-o)/s:a===l?t=2+(o-n)/s:o===l&&(t=4+(n-a)/s),(t=Math.min(60*t,360))<0&&(t+=360),r=(i+l)/2,[t,100*(l===i?0:r<=.5?s/(l+i):s/(2-l-i)),100*r]},i.rgb.hsv=function(e){var t,r,n,a,o,i=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(i,l,s),c=u-Math.min(i,l,s),h=function(e){return(u-e)/6/c+.5};return 0===c?a=o=0:(o=c/u,t=h(i),r=h(l),n=h(s),i===u?a=n-r:l===u?a=1/3+t-n:s===u&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[360*a,100*o,100*u]},i.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2];return[i.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(r,n))),100*(n=1-1/255*Math.max(t,Math.max(r,n)))]},i.rgb.cmyk=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255;return[100*((1-r-(t=Math.min(1-r,1-n,1-a)))/(1-t)||0),100*((1-n-t)/(1-t)||0),100*((1-a-t)/(1-t)||0),100*t]},i.rgb.keyword=function(e){var t=a[e];if(t)return t;var r,o,i,l=1/0;for(var s in n)if(n.hasOwnProperty(s)){var u=n[s],c=(o=e,i=u,Math.pow(o[0]-i[0],2)+Math.pow(o[1]-i[1],2)+Math.pow(o[2]-i[2],2));c<l&&(l=c,r=s)}return r},i.keyword.rgb=function(e){return n[e]},i.rgb.xyz=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255;return[100*(.4124*(t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*t+.7152*r+.0722*n),100*(.0193*t+.1192*r+.9505*n)]},i.rgb.lab=function(e){var t=i.rgb.xyz(e),r=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,r=(r/=95.047)>.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]},i.hsl.rgb=function(e){var t,r,n,a,o,i=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[o=255*s,o,o];t=2*s-(r=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(n=i+1/3*-(u-1))<0&&n++,n>1&&n--,o=6*n<1?t+6*(r-t)*n:2*n<1?r:3*n<2?t+(r-t)*(2/3-n)*6:t,a[u]=255*o;return a},i.hsl.hsv=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,a=r,o=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,a*=o<=1?o:2-o,[t,100*(0===n?2*a/(o+a):2*r/(n+r)),100*((n+r)/2)]},i.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,a=Math.floor(t)%6,o=t-Math.floor(t),i=255*n*(1-r),l=255*n*(1-r*o),s=255*n*(1-r*(1-o));switch(n*=255,a){case 0:return[n,s,i];case 1:return[l,n,i];case 2:return[i,n,s];case 3:return[i,l,n];case 4:return[s,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(e){var t,r,n,a=e[0],o=e[1]/100,i=e[2]/100,l=Math.max(i,.01);return n=(2-o)*i,r=o*l,[a,100*(r=(r/=(t=(2-o)*l)<=1?t:2-t)||0),100*(n/=2)]},i.hwb.rgb=function(e){var t,r,n,a,o,i,l,s=e[0]/360,u=e[1]/100,c=e[2]/100,h=u+c;switch(h>1&&(u/=h,c/=h),n=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(n=1-n),a=u+n*((r=1-c)-u),t){default:case 6:case 0:o=r,i=a,l=u;break;case 1:o=a,i=r,l=u;break;case 2:o=u,i=r,l=a;break;case 3:o=u,i=a,l=r;break;case 4:o=a,i=u,l=r;break;case 5:o=r,i=u,l=a}return[255*o,255*i,255*l]},i.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,a=e[3]/100;return[255*(1-Math.min(1,t*(1-a)+a)),255*(1-Math.min(1,r*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]},i.xyz.rgb=function(e){var t,r,n,a=e[0]/100,o=e[1]/100,i=e[2]/100;return r=-.9689*a+1.8758*o+.0415*i,n=.0557*a+-.204*o+1.057*i,t=(t=3.2406*a+-1.5372*o+-.4986*i)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(t=Math.min(Math.max(0,t),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(e){var t=e[0],r=e[1],n=e[2];return r/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(t-r),200*(r-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(e){var t,r,n,a=e[0];t=e[1]/500+(r=(a+16)/116),n=r-e[2]/200;var o=Math.pow(r,3),i=Math.pow(t,3),l=Math.pow(n,3);return r=o>.008856?o:(r-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,[t*=95.047,r*=100,n*=108.883]},i.lab.lch=function(e){var t,r=e[0],n=e[1],a=e[2];return(t=360*Math.atan2(a,n)/2/Math.PI)<0&&(t+=360),[r,Math.sqrt(n*n+a*a),t]},i.lch.lab=function(e){var t,r=e[0],n=e[1];return t=e[2]/360*2*Math.PI,[r,n*Math.cos(t),n*Math.sin(t)]},i.rgb.ansi16=function(e){var t=e[0],r=e[1],n=e[2],a=1 in arguments?arguments[1]:i.rgb.hsv(e)[2];if(0===(a=Math.round(a/50)))return 30;var o=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return 2===a&&(o+=60),o},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){var t=e[0],r=e[1],n=e[2];return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var r=.5*(1+~~(e>50));return[(1&t)*r*255,(t>>1&1)*r*255,(t>>2&1)*r*255]},i.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var r;return e-=16,[Math.floor(e/36)/5*255,Math.floor((r=e%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var r=t[0];3===t[0].length&&(r=r.split("").map((function(e){return e+e})).join(""));var n=parseInt(r,16);return[n>>16&255,n>>8&255,255&n]},i.rgb.hcg=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.max(Math.max(r,n),a),i=Math.min(Math.min(r,n),a),l=o-i;return t=l<=0?0:o===r?(n-a)/l%6:o===n?2+(a-r)/l:4+(r-n)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?i/(1-l):0)]},i.hsl.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=1,a=0;return(n=r<.5?2*t*r:2*t*(1-r))<1&&(a=(r-.5*n)/(1-n)),[e[0],100*n,100*a]},i.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=t*r,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100;if(0===r)return[255*n,255*n,255*n];var a,o=[0,0,0],i=t%1*6,l=i%1,s=1-l;switch(Math.floor(i)){case 0:o[0]=1,o[1]=l,o[2]=0;break;case 1:o[0]=s,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=l;break;case 3:o[0]=0,o[1]=s,o[2]=1;break;case 4:o[0]=l,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=s}return a=(1-r)*n,[255*(r*o[0]+a),255*(r*o[1]+a),255*(r*o[2]+a)]},i.hcg.hsv=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t),n=0;return r>0&&(n=t/r),[e[0],100*n,100*r]},i.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100*(1-t)+.5*t,n=0;return r>0&&r<.5?n=t/(2*r):r>=.5&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},i.hcg.hwb=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},i.hwb.hcg=function(e){var t=e[1]/100,r=1-e[2]/100,n=r-t,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=i.gray.hsv=function(e){return[0,0,e[0]]},i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},function(e,t,r){var n=r(1),a=r(4),o=Object.hasOwnProperty,i={};for(var l in n)o.call(n,l)&&(i[n[l]]=l);var s=e.exports={to:{},get:{}};function u(e,t,r){return Math.min(Math.max(t,e),r)}function c(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,r;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),r="hsl";break;case"hwb":t=s.get.hwb(e),r="hwb";break;default:t=s.get.rgb(e),r="rgb"}return t?{model:r,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,r,a,i=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(a=t[2],t=t[1],r=0;r<3;r++){var l=2*r;i[r]=parseInt(t.slice(l,l+2),16)}a&&(i[3]=parseInt(a,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(a=(t=t[1])[3],r=0;r<3;r++)i[r]=parseInt(t[r]+t[r],16);a&&(i[3]=parseInt(a+a,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(r=0;r<3;r++)i[r]=parseInt(t[r+1],0);t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:o.call(n,t[1])?((i=n[t[1]])[3]=1,i):null:null;for(r=0;r<3;r++)i[r]=Math.round(2.55*parseFloat(t[r+1]));t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}for(r=0;r<3;r++)i[r]=u(i[r],0,255);return i[3]=u(i[3],0,1),i},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.to.hex=function(){var e=a(arguments);return"#"+c(e[0])+c(e[1])+c(e[2])+(e[3]<1?c(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=a(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=a(arguments),t=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"},s.to.hsl=function(){var e=a(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=a(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return i[e.slice(0,3)]}},function(e,t,r){"use strict";var n=r(5),a=Array.prototype.concat,o=Array.prototype.slice,i=e.exports=function(e){for(var t=[],r=0,i=e.length;r<i;r++){var l=e[r];n(l)?t=a.call(t,o.call(l)):t.push(l)}return t};i.wrap=function(e){return function(){return e(i(arguments))}}},function(e,t){e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},function(e,t,r){var n=r(2),a=r(8),o={};Object.keys(n).forEach((function(e){o[e]={},Object.defineProperty(o[e],"channels",{value:n[e].channels}),Object.defineProperty(o[e],"labels",{value:n[e].labels});var t=a(e);Object.keys(t).forEach((function(r){var n=t[r];o[e][r]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var r=e(t);if("object"==typeof r)for(var n=r.length,a=0;a<n;a++)r[a]=Math.round(r[a]);return r};return"conversion"in e&&(t.conversion=e.conversion),t}(n),o[e][r].raw=function(e){var t=function(t){return null==t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(n)}))})),e.exports=o},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(2);function a(e){var t=function(){for(var e={},t=Object.keys(n),r=t.length,a=0;a<r;a++)e[t[a]]={distance:-1,parent:null};return e}(),r=[e];for(t[e].distance=0;r.length;)for(var a=r.pop(),o=Object.keys(n[a]),i=o.length,l=0;l<i;l++){var s=o[l],u=t[s];-1===u.distance&&(u.distance=t[a].distance+1,u.parent=a,r.unshift(s))}return t}function o(e,t){return function(r){return t(e(r))}}function i(e,t){for(var r=[t[e].parent,e],a=n[t[e].parent][e],i=t[e].parent;t[i].parent;)r.unshift(t[i].parent),a=o(n[t[i].parent][i],a),i=t[i].parent;return a.conversion=r,a}e.exports=function(e){for(var t=a(e),r={},n=Object.keys(t),o=n.length,l=0;l<o;l++){var s=n[l];null!==t[s].parent&&(r[s]=i(s,t))}return r}},function(e,t,r){"use strict";r.r(t),r.d(t,"run",(function(){return we})),r.d(t,"init",(function(){return xe})),r.d(t,"convertBg",(function(){return Me})),r.d(t,"updateStyle",(function(){return _e})),r.d(t,"getContrast",(function(){return Ce})),r.d(t,"extend",(function(){return je}));var n="(prefers-color-scheme: dark)",a=new RegExp("".concat("js_darkmode__","\\d+")),o="data_color_scheme_dark",i="".concat(1*new Date).concat(Math.round(10*Math.random())),l="data-darkmode-color-".concat(i),s="data-darkmode-bgcolor-".concat(i),u="data-darkmode-original-color-".concat(i),c="data-darkmode-original-bgcolor-".concat(i),h="data-darkmode-bgimage-".concat(i),f=window.getInnerHeight&&window.getInnerHeight()||window.innerHeight||document.documentElement.clientHeight,d=["TABLE","TR","TD","TH"],g=/ !important$/,b=/<\$#_SEMICOLON_#\$>/g,p={hasInit:!1,begin:null,showFirstPage:null,error:null,mode:"",whitelist:{tagName:["MPCPS","IFRAME"],attribute:[]},needJudgeFirstPage:!0,delayBgJudge:!1,container:null,cssSelectorsPrefix:"",defaultLightTextColor:"#191919",defaultLightBgColor:"#fff",defaultDarkTextColor:"#a3a3a3",defaultDarkBgColor:"#191919",set:function(e,t,r){var n=t[r];switch(e){case"boolean":"boolean"==typeof n&&(this[r]=n);break;case"string":"string"==typeof n&&""!==n&&(this[r]=n);break;case"function":"function"==typeof n&&(this[r]=n);break;case"dom":n instanceof HTMLElement&&(this[r]=n)}}};function y(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function k(e,t,r){return t&&v(e.prototype,t),r&&v(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var w=[],x=[],M=function(){function e(){m(this,e)}return k(e,[{key:"loopTimes",get:function(){return fe.loopTimes}},{key:"isDarkmode",get:function(){return ye.isDarkmode}},{key:"addCss",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];(r?w:x).push(be.genCss(e,t.map((function(e){var t=e.key,r=e.value;return be.genCssKV(t,r)})).join("")))}}]),e}(),_=function(){function e(){m(this,e),y(this,"_plugins",[]),y(this,"length",0),y(this,"loopTimes",0),y(this,"firstPageStyle",""),y(this,"otherPageStyle",""),y(this,"firstPageStyleNoMQ",""),y(this,"otherPageStyleNoMQ","")}return k(e,[{key:"extend",value:function(e){this._plugins.push(new(e(M))),this.length++}},{key:"emit",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this._plugins.forEach((function(t){"function"==typeof t[e]&&t[e].apply(t,r)}))}},{key:"addCss",value:function(e){e?(this.firstPageStyle+=w.join(""),this.firstPageStyleNoMQ+=x.join("")):(this.otherPageStyle+=w.join(""),this.otherPageStyleNoMQ+=x.join(""))}},{key:"resetCss",value:function(){w=[],x=[]}}]),e}();function C(e){return(C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function j(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function S(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var P=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),S(this,"_queue",[]),S(this,"_idx",0),this._prefix=t}var t,r,n;return t=e,(r=[{key:"push",value:function(e){var t="".concat(this._prefix).concat(this._idx++);e.classList.add(t),this._queue.push({el:e,className:t,updated:!p.delayBgJudge})}},{key:"forEach",value:function(e){var t=[];for(this._queue.forEach((function(r,n){r.updated&&(t.unshift(n),C(e)&&e(r.el))}));t.length;)this._queue.splice(t.shift(),1)}},{key:"update",value:function(e){this._queue.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&j(t.prototype,r),n&&j(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function O(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function E(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var B=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),E(this,"_stack",[]),E(this,"_idx",0),this._prefix=t,this.classNameReg=new RegExp("".concat(this._prefix,"\\d+"))}var t,r,n;return t=e,(r=[{key:"push",value:function(e,t){var r="".concat(this._prefix).concat(this._idx++);e.classList.add(r),this._stack.unshift({el:e,className:r,cssKV:t,updated:!p.delayBgJudge})}},{key:"contains",value:function(e,t){var r=e.getBoundingClientRect(),n=[];for(this._stack.forEach((function(e,t){if(e.updated){e.rect||(e.rect=e.el.getBoundingClientRect());var a=e.rect;r.top>=a.bottom||r.bottom<=a.top||r.left>=a.right||r.right<=a.left||n.unshift(t)}}));n.length;){var a=this._stack.splice(n.shift(),1)[0];"function"==typeof t&&t(a)}}},{key:"update",value:function(e){this._stack.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&O(t.prototype,r),n&&O(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return T(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return T(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function F(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function N(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var D=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),N(this,"_firstPageStyle",""),N(this,"_otherPageStyle",""),N(this,"isFinish",!1)}var t,r,a;return t=e,(r=[{key:"genCssKV",value:function(e,t){return"".concat(e,": ").concat(t," !important;")}},{key:"genCss",value:function(e,t){return"".concat("dark"===p.mode?"html.".concat(o," "):"").concat(p.cssSelectorsPrefix&&"".concat(p.cssSelectorsPrefix," "),".").concat(e,"{").concat(t,"}")}},{key:"addCss",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this[t?"_firstPageStyle":"_otherPageStyle"]+=e,fe.addCss(t)}},{key:"writeStyle",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];!e&&ye.isDarkmode&&(this.isFinish=!0);var t=(ye.isDarkmode?[{target:this,key:["_firstPageStyle","_otherPageStyle"],needMediaQuery:!0}]:[]).concat([{target:fe,key:["firstPageStyle","otherPageStyle"],needMediaQuery:!0},{target:fe,key:["firstPageStyleNoMQ","otherPageStyleNoMQ"],needMediaQuery:!1}]).map((function(t){var r=t.target,a=A(t.key,2),o=a[0],i=a[1],l=t.needMediaQuery,s="";e?s=o:(r[i]=r[o]+r[i],r[o]="",s=i);var u=r[s];return u?(r[s]="","dark"!==p.mode&&l?"@media ".concat(n," {").concat(u,"}"):u):""})).join("");t&&document.head.insertAdjacentHTML("beforeend",'<style type="text/css">'.concat(t,"</style>"))}}])&&F(t.prototype,r),a&&F(t,a),Object.defineProperty(t,"prototype",{writable:!1}),e}();function L(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function I(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function q(e){return function(e){if(Array.isArray(e))return $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return $(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function V(e){var t;return(t=[e]).concat.apply(t,q(e.querySelectorAll("*")))}var z={"ue-table-interlace-color-single":"#fcfcfc","ue-table-interlace-color-double":"#f7faff"};var K=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),I(this,"_els",[]),I(this,"_firstPageEls",[]),I(this,"_delayEls",[]),I(this,"showFirstPage",!1)}var t,r,n;return t=e,(r=[{key:"length",get:function(){return this._els.length}},{key:"set",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._els=e}},{key:"get",value:function(){var e=[];return this._els.length?(e=this._els,ye.isDarkmode&&(this._els=[])):this._delayEls.length?(e=this._delayEls,this._delayEls=[]):p.container&&(e=p.container.querySelectorAll("*")),e}},{key:"delay",value:function(){var e=this;Array.prototype.forEach.call(this._els,(function(t){return e._delayEls.push(t)})),this._els=[]}},{key:"hasDelay",value:function(){return!this._els.length&&(this._delayEls.length>0||null!==p.container)}},{key:"addFirstPageNode",value:function(e){this._firstPageEls.push(e)}},{key:"showFirstPageNodes",value:function(){this._firstPageEls.forEach((function(e){return!e.style.visibility&&(e.style.visibility="visible")})),this.showFirstPage=!0}},{key:"emptyFirstPageNodes",value:function(){this._firstPageEls=[]}}])&&L(t.prototype,r),n&&L(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),J=r(0),R=r.n(J),U=r(1),H=r.n(U);function Q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||W(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function G(e){return function(e){if(Array.isArray(e))return X(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||W(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function W(e,t){if(e){if("string"==typeof e)return X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?X(e,t):void 0}}function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Y(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Z(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ee=function(e){var t=null;try{t=R()(e)}catch(t){console.log("ignore the invalid color: `".concat(e,"`"))}return t};H.a.windowtext=[0,0,0],H.a.transparent=[255,255,255,0];var te=new RegExp(Object.keys(H.a).map((function(e){return"\\b".concat(e,"\\b")})).join("|"),"ig"),re=/\brgba?\([^)]+\)/i,ne=/\brgba?\([^)]+\)/gi,ae=function(e){return e.replace(g,"")},oe=function(e,t){return ae(e).replace(te,(function(e){if(!t&&"transparent"===e)return e;var r=H.a[e.toLowerCase()];return"".concat(r.length>3?"rgba":"rgb","(").concat(r.toString(),")")}))},ie=function(e){if(!e||e.length<1)return"";if(1===e.length)return e[0];for(var t=e.shift(),r=e.shift();r;){var n=ee(t),a=ee(r);!n&&a?t=r:n||a?n&&a&&(t=n.mix(a,a.alpha())):t=e.shift()||"",r=e.shift()}return t},le=function(e){var t=oe(e);return re.test(t)?t:""},se=function(e){return(299*e[0]+587*e[1]+114*e[2])/1e3},ue=function(e,t){var r=e/se(t),n=Math.min(255,t[0]*r),a=Math.min(255,t[1]*r),o=Math.min(255,t[2]*r);return 0===a||255===n||255===o?a=(1e3*e-299*n-114*o)/587:0===n?n=(1e3*e-587*a-114*o)/299:0!==o&&255!==a||(o=(1e3*e-299*n-587*a)/114),R.a.rgb(n,a,o)},ce=function(e){var t=e.map((function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)}));return.2126*t[0]+.7152*t[1]+.0722*t[2]},he=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Z(this,"_idx",0),Z(this,"_defaultDarkTextColorRgb",ee(p.defaultDarkTextColor).rgb().array()),Z(this,"_defaultDarkBgColorRgb",ee(p.defaultDarkBgColor).rgb().array()),Z(this,"_defaultDarkBgColorHSL",ee(p.defaultDarkBgColor).hsl().array()),Z(this,"_defaultDarkTextColorBrightness",se(this._defaultDarkTextColorRgb)),Z(this,"_defaultDarkBgColorBrightness",se(this._defaultDarkBgColorRgb)),Z(this,"_defaultDarkBgColorHslBrightness",this._defaultDarkBgColorHSL[2]),Z(this,"_maxLimitOffsetBrightness",this._defaultDarkTextColorBrightness-this._defaultDarkBgColorBrightness),Z(this,"isDarkmode",!1)}var t,r,n;return t=e,(r=[{key:"_adjustTextBrightness",value:function(e,t){var r=t.rgb().array(),n=t.alpha(),a=se(r)*n+this._defaultDarkBgColorBrightness*(1-n),o=e.rgb().array(),i=e.hsl().array(),l=e.alpha(),s=se(o),u=Math.abs(a-s);if(s>=250)return e;if(u>this._maxLimitOffsetBrightness&&a<=this._defaultDarkBgColorBrightness+2)return ue(this._maxLimitOffsetBrightness+a,o).alpha(l);if(u>=65)return e;if(a>=100){if(i[2]>50){i[2]=90-i[2];var c=R.a.hsl.apply(R.a,G(i)).alpha(l);return this._adjustTextBrightness(c,t)}return ue(Math.min(this._maxLimitOffsetBrightness,a-65),o).alpha(l)}if(i[2]<=40){i[2]=90-i[2];var h=R.a.hsl.apply(R.a,G(i)).alpha(l);return this._adjustTextBrightness(h,t)}return ue(Math.min(this._maxLimitOffsetBrightness,a+65),o).alpha(l)}},{key:"_adjustBackgroundBrightness",value:function(e){var t=e.rgb().array(),r=e.hsl().array(),n=e.alpha(),a=se(t),o=e;return 0===r[1]&&r[2]>40||a>250?o=R.a.hsl(0,0,Math.min(100,100+this._defaultDarkBgColorHslBrightness-r[2])):a>190?o=ue(190,t).alpha(n):r[2]<22&&(r[2]=22,o=R.a.hsl.apply(R.a,G(r))),o.alpha(n).rgb()}},{key:"_adjustBrightness",value:function(e,t,r,n){var a,o=e.alpha(),i="";if(r.isBgColor){if(t[h]&&o>=.05&&delete t[h],a=this._adjustBackgroundBrightness(e),!r.hasInlineColor){var l=t[u]||p.defaultLightTextColor,c=ee(l);if(c){var f=this._adjustBrightness(c,t,{isTextColor:!0,parentElementBgColorStr:a||e},n);f.newColor?i+=be.genCssKV("color",f.newColor):i+=be.genCssKV("color",c)}}}else if(r.isTextColor||r.isBorderColor){var d=r.parentElementBgColorStr||r.isTextColor&&t[s]||p.defaultDarkBgColor,g=ee(d);g&&!t[h]&&(a=this._adjustTextBrightness(e,g),fe.emit("afterConvertTextColor".concat(n?"ByUpdateStyle":""),t,{fontColor:a,bgColor:g}))}else r.isTextShadow&&(t[h]||(a=this._adjustBackgroundBrightness(e)));return{newColor:a&&e.toString()!==a.toString()&&a.alpha(o).rgb(),extStyle:i}}},{key:"_try",value:function(e){try{return e()}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof p.error&&p.error(e)}}},{key:"convert",value:function(e,t,r){var n=this;fe.resetCss(),fe.emit("beforeConvertNode".concat(r?"ByUpdateStyle":""),e);var o="",i="";if(this.isDarkmode||r){var f=e.nodeName;if(p.whitelist.tagName.indexOf(f)>-1)return"";if(p.whitelist.attribute.some((function(t){return e.hasAttribute(t)})))return"";var y=e.style;t||(t=(y.cssText&&y.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g,"$1$3".concat("<$#_SEMICOLON_#$>","$2$4")).split(";")||[]).map((function(e){var t=e.indexOf(":");return[e.slice(0,t).toLowerCase(),e.slice(t+1).replace(b,";")].map((function(e){return(e||"").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}))})));var m,v,k=!1,w=!1,x=!1;t=t.filter((function(e){var t=Q(e,2),r=t[0],n=t[1];return"color"===r?k=!0:/background/i.test(r)&&(w=!0,"background-position"===r?m=n:"background-size"===r&&(v=n)),(/background/i.test(r)||/^(-webkit-)?border-image/.test(r))&&/url\([^)]*\)/i.test(n)&&(x=!0),["-webkit-border-image","border-image","color","background-color","background-image","background","border","border-top","border-right","border-bottom","border-left","border-color","border-top-color","border-right-color","border-bottom-color","border-left-color","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","text-shadow"].indexOf(r)>-1})).sort((function(e,t){var r=Q(e,1)[0],n=Q(t,1)[0];return"color"===r||"background-image"===r&&"background-color"===n||0===n.indexOf("-webkit-text")?1:-1})),d.indexOf(f)>-1&&!w&&this._try((function(){var r=function(e){var t=null;return Array.prototype.some.call(e.classList,(function(e){return!!z[e]&&(t=z[e],!0)})),t}(e);if(r||(r=e.getAttribute("bgcolor")),r){var n=ee(r);n&&(t.unshift(["background-color",n.toString()]),w=!0)}})),"FONT"!==f||k||this._try((function(){var r=e.getAttribute("color");if(r){var n=ee(r);n&&(t.push(["color",n.toString()]),k=!0)}}));var M="",_="",C=0;t.some((function(e,t){var r=Q(e,2),a=r[0],o=r[1];return n._try((function(){if(0!==a.indexOf("-webkit-text"))return C=t,!0;switch(a){case"-webkit-text-fill-color":M=le(o);break;case"-webkit-text-stroke":var e=o.split(" ");2===e.length&&(_=le(e[1]));break;case"-webkit-text-stroke-color":_=le(o)}return!1}))})),M&&(k?t[t.length-1]=["-webkit-text-fill-color",M]:(t.push(["-webkit-text-fill-color",M]),k=!0)),C&&(t.splice(0,C),_&&t.unshift(["-webkit-text-stroke-color",_]));var j="",S="";if(r&&e.className&&"string"==typeof e.className){var P=e.className.match(a);P&&(j=P[0]),(P=e.className.match(ge.classNameReg))&&(S=P[0])}var O="";t.forEach((function(t){var a=Q(t,2),o=a[0],f=a[1];return n._try((function(){var t,a=f,d=!1,b=/^background/.test(o),M="text-shadow"===o,_=["-webkit-text-stroke-color","color","-webkit-text-fill-color"].indexOf(o),C=/^border/.test(o),j=/gradient/.test(f),P=[],E="";if(f=oe(f,j),re.test(f)){if(j){for(var B=ne.exec(f);B;)P.push(B[0]),B=ne.exec(f);t=ie(P)}var A=0;f=f.replace(ne,(function(a){j&&(a=t,d=!0);var o=ee(a);if((null==o?void 0:o.alpha())>=.05){var i=n._adjustBrightness(o,e,{isBgColor:b,isTextShadow:M,isTextColor:_>-1,isBorderColor:C,hasInlineColor:k},r),f=!x&&i.newColor;if(E+=i.extStyle,b||_>0){var g=f?f.toString():a;0===A&&V(e).forEach((function(e){b?(e[s]=g,e[c]=(e[c]||p.defaultLightBgColor).split("|").concat(a).join("|")):(e[l]=g,e[u]=a);var t=ee(g);b&&(null==t?void 0:t.alpha())>=.05&&e[h]&&delete e[h]}))}return f&&(d=!0),A++,f||a}return a})).replace(/\s?!\s?important/gi,"")}if(E&&(O+=E),!(e instanceof SVGElement)){var T=/^background/.test(o),F=/^(-webkit-)?border-image/.test(o);if((T||F)&&/url\([^)]*\)/i.test(f)){d=!0;var N=ie((e[c]||p.defaultLightBgColor).split("|"));if(f=f.replace(/^(.*?)url\(([^)]*)\)(.*)$/i,(function(t){var r=t,n="",a="",l="";return e[h]||V(e).forEach((function(e){e[h]=!0})),T?(l=be.genCssKV(o,N?"".concat(r,",linear-gradient(").concat(N,", ").concat(N,")"):r),m&&(n="top left,".concat(m),O+=be.genCssKV("background-position","".concat(n)),l+=be.genCssKV("background-position","".concat(n,",top left"))),v&&(a="100%,".concat(v),O+=be.genCssKV("background-size","".concat(a)),l+=be.genCssKV("background-size","".concat(a,",100%"))),S?i+=be.genCss(S,l):ge.push(e,l)):N&&!w&&(l=be.genCssKV("background-image","linear-gradient(".concat(N,", ").concat(N,")")),S?i+=be.genCss(S,l):ge.push(e,l)),r})),!k){var D=e[u]||p.defaultLightTextColor;O+=be.genCssKV("color",D),V(e).forEach((function(e){e[l]=D}))}}}d&&(!r&&g.test(a)&&(y[o]=ae(a)),j?S?i+=be.genCss(S,be.genCssKV(o,f)):ge.push(e,be.genCssKV(o,f)):O+=be.genCssKV(o,f))}))})),O&&(j||(j="".concat("js_darkmode__").concat(this._idx++),e.classList.add(j)),o+=O?be.genCss(j,O):""),o+=i,!r&&function(e){var t="";return Array.prototype.forEach.call(e.childNodes,(function(e){3===e.nodeType&&(t+=e.nodeValue.replace(/\s/g,""))})),t.length>0}(e)&&(p.delayBgJudge?de.push(e):ge.contains(e,(function(e){o+=be.genCss(e.className,e.cssKV)})))}return fe.emit("afterConvertNode".concat(r?"ByUpdateStyle":""),e),o}},{key:"getContrast",value:function(e,t){var r,n,a,o,i=ee(e),l=ee(t);return i&&l?(r=i.rgb().array(),n=l.rgb().array(),a=ce(r),o=ce(n),a<o?(o+.05)/(a+.05):(a+.05)/(o+.05)):0}}])&&Y(t.prototype,r),n&&Y(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),fe=new _,de=new P("".concat("js_darkmode__","text__")),ge=new B("".concat("js_darkmode__","bg__")),be=new D,pe=new K,ye=new he,me=new RegExp("".concat("js_darkmode__","[^ ]+"),"g"),ve=null,ke=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{type:"dom"};if(t.force&&(be.isFinish=!1),!be.isFinish)try{ye.isDarkmode=p.mode?"dark"===p.mode:e.matches,"dom"===t.type?(ye.isDarkmode&&"function"==typeof p.begin&&p.begin(pe.hasDelay()),Array.prototype.forEach.call(pe.get(),(function(e){if(ye.isDarkmode&&e.className&&"string"==typeof e.className&&(e.className=e.className.replace(me,"")),ye.isDarkmode||fe.length)if(p.needJudgeFirstPage){var t=e.getBoundingClientRect(),r=t.top,n=t.bottom;r<=0&&n<=0?be.addCss(ye.convert(e)):r>0&&r<f||n>0&&n<f?(pe.addFirstPageNode(e),be.addCss(ye.convert(e),!0)):(p.needJudgeFirstPage=!1,be.writeStyle(!0),pe.showFirstPageNodes(),"function"==typeof p.showFirstPage&&p.showFirstPage(),be.addCss(ye.convert(e)))}else be.addCss(ye.convert(e))})),fe.loopTimes++):"bg"===t.type&&ye.isDarkmode&&de.forEach((function(e){return ge.contains(e,(function(e){be.addCss(be.genCss(e.className,e.cssKV))}))})),(p.needJudgeFirstPage||!p.needJudgeFirstPage&&!pe.showFirstPage)&&"function"==typeof p.showFirstPage&&p.showFirstPage(),be.writeStyle(),pe.emptyFirstPageNodes(),ye.isDarkmode||(p.needJudgeFirstPage=!1,p.delayBgJudge=!1,null===p.container&&"dom"===t.type&&pe.length&&pe.delay())}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof p.error&&p.error(e)}};function we(e,t){xe(t),pe.set(e),ke(ve,{force:!0,type:"dom"})}function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!p.hasInit){p.hasInit=!0;var t=p.whitelist.tagName,r=p.whitelist.attribute;e.whitelist&&(e.whitelist.tagName instanceof Array&&e.whitelist.tagName.forEach((function(e){e=e.toUpperCase(),-1===t.indexOf(e)&&t.push(e)})),e.whitelist.attribute instanceof Array&&e.whitelist.attribute.forEach((function(e){-1===r.indexOf(e)&&r.push(e)}))),["dark","light"].indexOf(e.mode)>-1&&(p.set("string",e,"mode"),"dark"===e.mode&&document.getElementsByTagName("html")[0].classList.add(o)),p.set("function",e,"begin"),p.set("function",e,"showFirstPage"),p.set("function",e,"error"),p.set("boolean",e,"needJudgeFirstPage"),p.set("boolean",e,"delayBgJudge"),p.set("dom",e,"container"),p.set("string",e,"cssSelectorsPrefix"),p.set("string",e,"defaultLightTextColor"),p.set("string",e,"defaultLightBgColor"),p.set("string",e,"defaultDarkTextColor"),p.set("string",e,"defaultDarkBgColor"),!p.mode&&null===ve&&window.matchMedia&&(ve=window.matchMedia(n)).addListener(ke)}}function Me(e){pe.set(e),null!==p.container&&(ge.update(e),de.update(e)),ke(ve,{force:!0,type:"bg"})}function _e(e,t){be.isFinish&&(be.addCss(ye.convert(e,t?Object.keys(t).map((function(e){return[e,t[e]]})):void 0,!0),!1),be.writeStyle())}function Ce(e,t){return ye.getContrast(e,t)}function je(e){e.forEach((function(e){return fe.extend(e)}))}}])}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mp-darkmode",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "微信公众平台图文 Dark Mode 转换算法",
5
5
  "main": "dist/darkmode.min.js",
6
6
  "dependencies": {