mp-darkmode 1.1.7 → 1.1.9

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
@@ -2509,6 +2509,7 @@ function init() {
2509
2509
  _modules_config__WEBPACK_IMPORTED_MODULE_1__["default"].set('string', opt, 'defaultLightBgColor');
2510
2510
  _modules_config__WEBPACK_IMPORTED_MODULE_1__["default"].set('string', opt, 'defaultDarkTextColor');
2511
2511
  _modules_config__WEBPACK_IMPORTED_MODULE_1__["default"].set('string', opt, 'defaultDarkBgColor');
2512
+ _modules_global__WEBPACK_IMPORTED_MODULE_2__["sdk"].init();
2512
2513
 
2513
2514
  if (!_modules_config__WEBPACK_IMPORTED_MODULE_1__["default"].mode && mql === null && window.matchMedia) {
2514
2515
  // 匹配媒体查询
@@ -2762,7 +2763,7 @@ var config = {
2762
2763
  /*!*********************************!*\
2763
2764
  !*** ./src/modules/constant.js ***!
2764
2765
  \*********************************/
2765
- /*! exports provided: MEDIA_QUERY, CLASS_PREFIX, DM_CLASSNAME_REGEXP, HTML_CLASS, COLORATTR, BGCOLORATTR, ORIGINAL_COLORATTR, ORIGINAL_BGCOLORATTR, BGIMAGEATTR, BG_COLOR_DELIMITER, DEFAULT_LIGHT_TEXTCOLOR, DEFAULT_LIGHT_BGCOLOR, DEFAULT_DARK_TEXTCOLOR, DEFAULT_DARK_BGCOLOR, 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, PAGE_HEIGHT, TABLE_NAME, IMPORTANT_REGEXP, SEMICOLON_PLACEHOLDER, SEMICOLON_PLACEHOLDER_REGEXP */
2766
+ /*! exports provided: MEDIA_QUERY, CLASS_PREFIX, DM_CLASSNAME_REGEXP, HTML_CLASS, COLORATTR, BGCOLORATTR, ORIGINAL_COLORATTR, ORIGINAL_BGCOLORATTR, BGIMAGEATTR, BG_COLOR_DELIMITER, DEFAULT_LIGHT_TEXTCOLOR, DEFAULT_LIGHT_BGCOLOR, DEFAULT_DARK_TEXTCOLOR, DEFAULT_DARK_BGCOLOR, 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, PAGE_HEIGHT, CSS_PROP_SERIES, CSS_PROP_LIST, TABLE_NAME, IMPORTANT_REGEXP, SEMICOLON_PLACEHOLDER, SEMICOLON_PLACEHOLDER_REGEXP */
2766
2767
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2767
2768
 
2768
2769
  "use strict";
@@ -2789,6 +2790,8 @@ __webpack_require__.r(__webpack_exports__);
2789
2790
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LOW_BLACKWHITE_HSL_BRIGHTNESS", function() { return LOW_BLACKWHITE_HSL_BRIGHTNESS; });
2790
2791
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IGNORE_ALPHA", function() { return IGNORE_ALPHA; });
2791
2792
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PAGE_HEIGHT", function() { return PAGE_HEIGHT; });
2793
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_PROP_SERIES", function() { return CSS_PROP_SERIES; });
2794
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_PROP_LIST", function() { return CSS_PROP_LIST; });
2792
2795
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TABLE_NAME", function() { return TABLE_NAME; });
2793
2796
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IMPORTANT_REGEXP", function() { return IMPORTANT_REGEXP; });
2794
2797
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SEMICOLON_PLACEHOLDER", function() { return SEMICOLON_PLACEHOLDER; });
@@ -2834,6 +2837,28 @@ var LOW_BLACKWHITE_HSL_BRIGHTNESS = 22;
2834
2837
  var IGNORE_ALPHA = 0.05; // 忽略的透明度阈值
2835
2838
 
2836
2839
  var PAGE_HEIGHT = window.getInnerHeight && window.getInnerHeight() || window.innerHeight || document.documentElement.clientHeight;
2840
+ var CSS_PROP_SERIES = {
2841
+ // 支持的css属性,按类型做分类
2842
+ BG_COLOR: ['background-color', 'background-image', 'background'],
2843
+ TEXT_SHADOW: ['text-shadow'],
2844
+ TEXT_COLOR: ['-webkit-text-stroke', '-webkit-text-stroke-color', 'text-decoration', 'text-decoration-color', 'text-emphasis-color', 'color', '-webkit-text-fill-color'],
2845
+ BORDER_COLOR: ['border-image', '-webkit-border-image', 'border', 'border-top', 'border-right', 'border-bottom', 'border-left', 'border-color', 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color', 'border-block-color', 'border-block-start-color', 'border-block-end-color', 'border-inline-color', 'border-inline-start-color', 'border-inline-end-color', 'outline', 'outline-color', 'box-shadow', // TODO: 不知道为啥之前没处理,后面需要留意下
2846
+ 'column-rule', 'column-rule-color'] // SVG_COLOR: [ // TODO: SVG后面再处理
2847
+ // 'fill',
2848
+ // 'stroke',
2849
+ // 'stop-color',
2850
+ // 'flood-color',
2851
+ // 'lighting-color',
2852
+ // ],
2853
+ // FILTER: [ // TODO: filter后面再考虑要不要处理
2854
+ // 'filter'
2855
+ // ],
2856
+
2857
+ };
2858
+ var CSS_PROP_LIST = Object.keys(CSS_PROP_SERIES).map(function (key) {
2859
+ return CSS_PROP_SERIES[key].join('|');
2860
+ }).join('|').split('|'); // 支持的css属性平铺列表
2861
+
2837
2862
  var TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标签列表
2838
2863
 
2839
2864
  var IMPORTANT_REGEXP = / !important$/; // !important
@@ -3611,19 +3636,19 @@ var SDK = /*#__PURE__*/function () {
3611
3636
 
3612
3637
  _defineProperty(this, "_idx", 0);
3613
3638
 
3614
- _defineProperty(this, "_defaultDarkTextColorRgb", ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkTextColor).rgb().array());
3639
+ _defineProperty(this, "_defaultDarkTextColorRgb", null);
3615
3640
 
3616
- _defineProperty(this, "_defaultDarkBgColorRgb", ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkBgColor).rgb().array());
3641
+ _defineProperty(this, "_defaultDarkBgColorRgb", null);
3617
3642
 
3618
- _defineProperty(this, "_defaultDarkBgColorHSL", ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkBgColor).hsl().array());
3643
+ _defineProperty(this, "_defaultDarkBgColorHSL", null);
3619
3644
 
3620
- _defineProperty(this, "_defaultDarkTextColorBrightness", getColorPerceivedBrightness(this._defaultDarkTextColorRgb));
3645
+ _defineProperty(this, "_defaultDarkTextColorBrightness", null);
3621
3646
 
3622
- _defineProperty(this, "_defaultDarkBgColorBrightness", getColorPerceivedBrightness(this._defaultDarkBgColorRgb));
3647
+ _defineProperty(this, "_defaultDarkBgColorBrightness", null);
3623
3648
 
3624
- _defineProperty(this, "_defaultDarkBgColorHslBrightness", this._defaultDarkBgColorHSL[2]);
3649
+ _defineProperty(this, "_defaultDarkBgColorHslBrightness", null);
3625
3650
 
3626
- _defineProperty(this, "_maxLimitOffsetBrightness", this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness);
3651
+ _defineProperty(this, "_maxLimitOffsetBrightness", null);
3627
3652
 
3628
3653
  _defineProperty(this, "isDarkmode", false);
3629
3654
  }
@@ -3780,6 +3805,17 @@ var SDK = /*#__PURE__*/function () {
3780
3805
  typeof _config__WEBPACK_IMPORTED_MODULE_3__["default"].error === 'function' && _config__WEBPACK_IMPORTED_MODULE_3__["default"].error(e);
3781
3806
  }
3782
3807
  }
3808
+ }, {
3809
+ key: "init",
3810
+ value: function init() {
3811
+ this._defaultDarkTextColorRgb = ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkTextColor).rgb().array();
3812
+ this._defaultDarkBgColorRgb = ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkBgColor).rgb().array();
3813
+ this._defaultDarkBgColorHSL = ColorParser(_config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultDarkBgColor).hsl().array();
3814
+ this._defaultDarkTextColorBrightness = getColorPerceivedBrightness(this._defaultDarkTextColorRgb);
3815
+ this._defaultDarkBgColorBrightness = getColorPerceivedBrightness(this._defaultDarkBgColorRgb);
3816
+ this._defaultDarkBgColorHslBrightness = this._defaultDarkBgColorHSL[2];
3817
+ this._maxLimitOffsetBrightness = this._defaultDarkTextColorBrightness - this._defaultDarkBgColorBrightness;
3818
+ }
3783
3819
  }, {
3784
3820
  key: "convert",
3785
3821
  value: function convert(el, cssKVList, isUpdate) {
@@ -3815,8 +3851,8 @@ var SDK = /*#__PURE__*/function () {
3815
3851
 
3816
3852
  var hasInlineBackground = false;
3817
3853
  var hasInlineBackgroundImage = false;
3818
- var elBackgroundPositionAttr;
3819
- var elBackgroundSizeAttr;
3854
+ var elBackgroundPositionAttr = null;
3855
+ var elBackgroundSizeAttr = null;
3820
3856
  cssKVList = cssKVList.filter(function (_ref) {
3821
3857
  var _ref2 = _slicedToArray(_ref, 2),
3822
3858
  key = _ref2[0],
@@ -3839,7 +3875,7 @@ var SDK = /*#__PURE__*/function () {
3839
3875
  } // 过滤掉一些key
3840
3876
 
3841
3877
 
3842
- return ['-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(key) > -1;
3878
+ return _constant__WEBPACK_IMPORTED_MODULE_2__["CSS_PROP_LIST"].indexOf(key) > -1;
3843
3879
  }).sort(function (_ref3, _ref4) {
3844
3880
  var _ref5 = _slicedToArray(_ref3, 1),
3845
3881
  key1 = _ref5[0];
@@ -3985,10 +4021,10 @@ var SDK = /*#__PURE__*/function () {
3985
4021
  var oldValue = value;
3986
4022
  var cssChange = false; // 找出色值来处理
3987
4023
 
3988
- var isBgColor = /^background/.test(key);
3989
- var isTextShadow = key === 'text-shadow';
3990
- var textColorIdx = ['-webkit-text-stroke-color', 'color', '-webkit-text-fill-color'].indexOf(key);
3991
- var isBorderColor = /^border/.test(key);
4024
+ var isBgColor = _constant__WEBPACK_IMPORTED_MODULE_2__["CSS_PROP_SERIES"].BG_COLOR.indexOf(key) > -1;
4025
+ var isTextShadow = _constant__WEBPACK_IMPORTED_MODULE_2__["CSS_PROP_SERIES"].TEXT_SHADOW.indexOf(key) > -1;
4026
+ var textColorIdx = _constant__WEBPACK_IMPORTED_MODULE_2__["CSS_PROP_SERIES"].TEXT_COLOR.indexOf(key);
4027
+ var isBorderColor = _constant__WEBPACK_IMPORTED_MODULE_2__["CSS_PROP_SERIES"].BORDER_COLOR.indexOf(key) > -1;
3992
4028
  var isGradient = /gradient/.test(value);
3993
4029
  var gradientColors = [];
3994
4030
  var extStyle = '';
@@ -4034,8 +4070,8 @@ var SDK = /*#__PURE__*/function () {
4034
4070
  var retColor = !hasInlineBackgroundImage && ret.newColor;
4035
4071
  extStyle += ret.extStyle; // 对背景颜色和文字颜色做继承传递,用于文字亮度计算
4036
4072
 
4037
- if (isBgColor || textColorIdx > 0) {
4038
- // 不处理-webkit-text-stroke-color
4073
+ if (isBgColor || textColorIdx > 3) {
4074
+ // 只处理color及之后的属性
4039
4075
  var retColorStr = retColor ? retColor.toString() : match;
4040
4076
  replaceIndex === 0 && Object(_domUtils__WEBPACK_IMPORTED_MODULE_5__["getChildrenAndIt"])(el).forEach(function (dom) {
4041
4077
  if (isBgColor) {
@@ -4044,6 +4080,7 @@ var SDK = /*#__PURE__*/function () {
4044
4080
  } else {
4045
4081
  dom[_constant__WEBPACK_IMPORTED_MODULE_2__["COLORATTR"]] = retColorStr;
4046
4082
  dom[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"]] = match;
4083
+ dom.setAttribute(_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"], match);
4047
4084
  } // 如果设置背景颜色,取消背景图片的影响
4048
4085
 
4049
4086
 
@@ -4074,14 +4111,13 @@ var SDK = /*#__PURE__*/function () {
4074
4111
 
4075
4112
  if ((isBackgroundAttr || isBorderImageAttr) && /url\([^)]*\)/i.test(value)) {
4076
4113
  cssChange = true;
4077
- var imgBgColor = mixColor((el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightBgColor).split(_constant__WEBPACK_IMPORTED_MODULE_2__["BG_COLOR_DELIMITER"])); // 在背景图片下加一层原背景颜色:
4114
+ var imgBgColor = mixColor((el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightBgColor).split(_constant__WEBPACK_IMPORTED_MODULE_2__["BG_COLOR_DELIMITER"])); // const imgBgColor = el[BGCOLORATTR] || config.defaultLightBgColor;
4115
+ // 在背景图片下加一层原背景颜色:
4078
4116
  // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);
4079
4117
  // border-image不支持多层背景,需要添加background-color
4080
4118
 
4081
4119
  value = value.replace(/^(.*?)url\(([^)]*)\)(.*)$/i, function (matches) {
4082
4120
  var newValue = matches;
4083
- var newBackgroundPositionValue = '';
4084
- var newBackgroundSizeValue = '';
4085
4121
  var tmpCssKvStr = '';
4086
4122
 
4087
4123
  if (!el[_constant__WEBPACK_IMPORTED_MODULE_2__["BGIMAGEATTR"]]) {
@@ -4096,15 +4132,13 @@ var SDK = /*#__PURE__*/function () {
4096
4132
  tmpCssKvStr = _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV(key, imgBgColor ? "".concat(newValue, ",linear-gradient(").concat(imgBgColor, ", ").concat(imgBgColor, ")") : newValue);
4097
4133
 
4098
4134
  if (elBackgroundPositionAttr) {
4099
- newBackgroundPositionValue = "top left,".concat(elBackgroundPositionAttr);
4100
- cssKV += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-position', "".concat(newBackgroundPositionValue));
4101
- tmpCssKvStr += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-position', "".concat(newBackgroundPositionValue, ",top left"));
4135
+ cssKV += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-position', elBackgroundPositionAttr);
4136
+ tmpCssKvStr += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-position', imgBgColor ? "".concat(elBackgroundPositionAttr, ",top left") : elBackgroundPositionAttr);
4102
4137
  }
4103
4138
 
4104
4139
  if (elBackgroundSizeAttr) {
4105
- newBackgroundSizeValue = "100%,".concat(elBackgroundSizeAttr);
4106
- cssKV += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-size', "".concat(newBackgroundSizeValue));
4107
- tmpCssKvStr += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-size', "".concat(newBackgroundSizeValue, ",100%"));
4140
+ cssKV += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-size', elBackgroundSizeAttr);
4141
+ tmpCssKvStr += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('background-size', imgBgColor ? "".concat(elBackgroundSizeAttr, ",100%") : elBackgroundSizeAttr);
4108
4142
  }
4109
4143
 
4110
4144
  if (dmBgClassName) {