mp-darkmode 1.1.4-beta.0 → 1.1.4

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
@@ -2747,19 +2747,21 @@ var config = {
2747
2747
  /*!*********************************!*\
2748
2748
  !*** ./src/modules/constant.js ***!
2749
2749
  \*********************************/
2750
- /*! exports provided: MEDIA_QUERY, CLASS_PREFIX, HTML_CLASS, COLORATTR, BGCOLORATTR, ORIGINAL_COLORATTR, ORIGINAL_BGCOLORATTR, BGIMAGEATTR, 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 */
2750
+ /*! 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 */
2751
2751
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2752
2752
 
2753
2753
  "use strict";
2754
2754
  __webpack_require__.r(__webpack_exports__);
2755
2755
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MEDIA_QUERY", function() { return MEDIA_QUERY; });
2756
2756
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CLASS_PREFIX", function() { return CLASS_PREFIX; });
2757
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DM_CLASSNAME_REGEXP", function() { return DM_CLASSNAME_REGEXP; });
2757
2758
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HTML_CLASS", function() { return HTML_CLASS; });
2758
2759
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "COLORATTR", function() { return COLORATTR; });
2759
2760
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BGCOLORATTR", function() { return BGCOLORATTR; });
2760
2761
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ORIGINAL_COLORATTR", function() { return ORIGINAL_COLORATTR; });
2761
2762
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ORIGINAL_BGCOLORATTR", function() { return ORIGINAL_BGCOLORATTR; });
2762
2763
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BGIMAGEATTR", function() { return BGIMAGEATTR; });
2764
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BG_COLOR_DELIMITER", function() { return BG_COLOR_DELIMITER; });
2763
2765
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_LIGHT_TEXTCOLOR", function() { return DEFAULT_LIGHT_TEXTCOLOR; });
2764
2766
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_LIGHT_BGCOLOR", function() { return DEFAULT_LIGHT_BGCOLOR; });
2765
2767
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_DARK_TEXTCOLOR", function() { return DEFAULT_DARK_TEXTCOLOR; });
@@ -2774,6 +2776,8 @@ __webpack_require__.r(__webpack_exports__);
2774
2776
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PAGE_HEIGHT", function() { return PAGE_HEIGHT; });
2775
2777
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TABLE_NAME", function() { return TABLE_NAME; });
2776
2778
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IMPORTANT_REGEXP", function() { return IMPORTANT_REGEXP; });
2779
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SEMICOLON_PLACEHOLDER", function() { return SEMICOLON_PLACEHOLDER; });
2780
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SEMICOLON_PLACEHOLDER_REGEXP", function() { return SEMICOLON_PLACEHOLDER_REGEXP; });
2777
2781
  /**
2778
2782
  * @name 常量
2779
2783
  *
@@ -2782,15 +2786,21 @@ var MEDIA_QUERY = '(prefers-color-scheme: dark)'; // Dark Mode的CSS媒体查询
2782
2786
 
2783
2787
  var CLASS_PREFIX = 'js_darkmode__'; // Dark Mode class前缀
2784
2788
 
2789
+ var DM_CLASSNAME_REGEXP = new RegExp("".concat(CLASS_PREFIX, "\\d+"));
2785
2790
  var HTML_CLASS = 'data_color_scheme_dark'; // 强制设置暗黑模式时给html加的class
2786
2791
 
2787
2792
  var RANDOM = "".concat(new Date() * 1).concat(Math.round(Math.random() * 10)); // 生成个随机数,格式为时间戳+随机数
2788
2793
 
2789
- var COLORATTR = "data-darkmode-color-".concat(RANDOM);
2790
- var BGCOLORATTR = "data-darkmode-bgcolor-".concat(RANDOM);
2791
- var ORIGINAL_COLORATTR = "data-darkmode-original-color-".concat(RANDOM);
2792
- var ORIGINAL_BGCOLORATTR = "data-darkmode-original-bgcolor-".concat(RANDOM);
2794
+ var COLORATTR = "data-darkmode-color-".concat(RANDOM); // dm color,即算法生成的新色值,单个
2795
+
2796
+ var BGCOLORATTR = "data-darkmode-bgcolor-".concat(RANDOM); // dm bg-color,即算法生成的新色值,有多个,用BG_COLOR_DELIMITER分割
2797
+
2798
+ var ORIGINAL_COLORATTR = "data-darkmode-original-color-".concat(RANDOM); // lm color,即原色值,单个
2799
+
2800
+ var ORIGINAL_BGCOLORATTR = "data-darkmode-original-bgcolor-".concat(RANDOM); // lm bg-color,即原色值,有多个,用BG_COLOR_DELIMITER分割
2801
+
2793
2802
  var BGIMAGEATTR = "data-darkmode-bgimage-".concat(RANDOM);
2803
+ var BG_COLOR_DELIMITER = '|';
2794
2804
  var DEFAULT_LIGHT_TEXTCOLOR = '#191919'; // 非Dark Mode下字体颜色
2795
2805
 
2796
2806
  var DEFAULT_LIGHT_BGCOLOR = '#fff'; // 非Dark Mode下背景颜色
@@ -2813,6 +2823,10 @@ var TABLE_NAME = ['TABLE', 'TR', 'TD', 'TH']; // 支持bgcolor属性的table标
2813
2823
 
2814
2824
  var IMPORTANT_REGEXP = / !important$/; // !important
2815
2825
 
2826
+ var SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符
2827
+
2828
+ var SEMICOLON_PLACEHOLDER_REGEXP = /<\$#_SEMICOLON_#\$>/g;
2829
+
2816
2830
  /***/ }),
2817
2831
 
2818
2832
  /***/ "./src/modules/cssUtils.js":
@@ -3461,10 +3475,6 @@ color_name__WEBPACK_IMPORTED_MODULE_1___default.a.transparent = [255, 255, 255,
3461
3475
  // 节点相关操作工具API
3462
3476
 
3463
3477
 
3464
- var SEMICOLON_PLACEHOLDER = '<$#_SEMICOLON_#$>'; // 分号占位符
3465
-
3466
- var SEMICOLON_PLACEHOLDER_REGEXP = /<\$#_SEMICOLON_#\$>/g;
3467
- var DM_CLASSNAME_REGEXP = new RegExp("".concat(_constant__WEBPACK_IMPORTED_MODULE_2__["CLASS_PREFIX"], "\\d+"));
3468
3478
  var colorNameReg = new RegExp(Object.keys(color_name__WEBPACK_IMPORTED_MODULE_1___default.a).map(function (colorName) {
3469
3479
  return "\\b".concat(colorName, "\\b");
3470
3480
  }).join('|'), 'ig'); // 生成正则表达式来匹配这些colorName
@@ -3485,9 +3495,8 @@ var parseColor = function parseColor(value, parseTransparent) {
3485
3495
  var color = color_name__WEBPACK_IMPORTED_MODULE_1___default.a[match.toLowerCase()];
3486
3496
  return "".concat(color.length > 3 ? 'rgba' : 'rgb', "(").concat(color.toString(), ")");
3487
3497
  });
3488
- };
3498
+ }; // 计算mix颜色
3489
3499
 
3490
- var BG_COLOR_DELIMITER = '|'; // 计算mix颜色
3491
3500
 
3492
3501
  var mixColor = function mixColor(colors) {
3493
3502
  if (!colors || colors.length < 1) return '';
@@ -3676,12 +3685,11 @@ var SDK = /*#__PURE__*/function () {
3676
3685
  newColor = this._adjustBackgroundBrightness(color);
3677
3686
 
3678
3687
  if (!options.hasInlineColor) {
3679
- var parentTextColor = el[_constant__WEBPACK_IMPORTED_MODULE_2__["COLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightTextColor;
3680
- var parentBgColorStr = newColor || color;
3688
+ var parentTextColor = el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightTextColor;
3681
3689
 
3682
3690
  var ret = this._adjustBrightness(color__WEBPACK_IMPORTED_MODULE_0___default()(parentTextColor), el, {
3683
3691
  isTextColor: true,
3684
- parentElementBgColorStr: parentBgColorStr
3692
+ parentElementBgColorStr: newColor || color
3685
3693
  }, isUpdate);
3686
3694
 
3687
3695
  if (ret.newColor) {
@@ -3745,10 +3753,10 @@ var SDK = /*#__PURE__*/function () {
3745
3753
  if (!cssKVList) {
3746
3754
  // 没有传入cssKVList就从内联样式中提取
3747
3755
  // styles.cssText 读出来的颜色统一是rgba格式,除了用英文定义颜色(如:black、white)
3748
- cssKVList = (styles.cssText && styles.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g, "$1$3".concat(SEMICOLON_PLACEHOLDER, "$2$4")).split(';') || []).map(function (cssStr) {
3756
+ cssKVList = (styles.cssText && styles.cssText.replace(/("[^;]*);([^;]*")|('[^;]*);([^;]*')/g, "$1$3".concat(_constant__WEBPACK_IMPORTED_MODULE_2__["SEMICOLON_PLACEHOLDER"], "$2$4")).split(';') || []).map(function (cssStr) {
3749
3757
  // 将cssStr转换为[key, value],并清除各个元素的前后空白字符
3750
3758
  var splitIdx = cssStr.indexOf(':');
3751
- return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(SEMICOLON_PLACEHOLDER_REGEXP, ';')].map(function (item) {
3759
+ return [cssStr.slice(0, splitIdx).toLowerCase(), cssStr.slice(splitIdx + 1).replace(_constant__WEBPACK_IMPORTED_MODULE_2__["SEMICOLON_PLACEHOLDER_REGEXP"], ';')].map(function (item) {
3752
3760
  return (item || '').replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
3753
3761
  });
3754
3762
  });
@@ -3820,7 +3828,7 @@ var SDK = /*#__PURE__*/function () {
3820
3828
  }
3821
3829
 
3822
3830
  if (nodeName === 'FONT' && !hasInlineColor) {
3823
- // 如果是font标签且没有内联样式
3831
+ // 如果是font标签且没有内联文本颜色样式
3824
3832
  this._try(function () {
3825
3833
  var color = el.getAttribute('color'); // 获取color的色值
3826
3834
 
@@ -3895,7 +3903,7 @@ var SDK = /*#__PURE__*/function () {
3895
3903
 
3896
3904
  if (isUpdate && el.className && typeof el.className === 'string') {
3897
3905
  // 先提取dm className
3898
- var matches = el.className.match(DM_CLASSNAME_REGEXP);
3906
+ var matches = el.className.match(_constant__WEBPACK_IMPORTED_MODULE_2__["DM_CLASSNAME_REGEXP"]);
3899
3907
 
3900
3908
  if (matches) {
3901
3909
  dmClassName = matches[0];
@@ -3971,13 +3979,16 @@ var SDK = /*#__PURE__*/function () {
3971
3979
 
3972
3980
  if (isBgColor || textColorIdx > 0) {
3973
3981
  // 不处理-webkit-text-stroke-color
3974
- var attrName = isBgColor ? _constant__WEBPACK_IMPORTED_MODULE_2__["BGCOLORATTR"] : _constant__WEBPACK_IMPORTED_MODULE_2__["COLORATTR"];
3975
- var originalAttrName = isBgColor ? _constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"] : _constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"];
3976
3982
  var retColorStr = retColor ? retColor.toString() : match;
3977
3983
  replaceIndex === 0 && Object(_domUtils__WEBPACK_IMPORTED_MODULE_5__["getChildrenAndIt"])(el).forEach(function (dom) {
3978
- var originalAttrValue = dom[originalAttrName] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightBgColor;
3979
- dom[attrName] = retColorStr;
3980
- dom[originalAttrName] = originalAttrValue.split(BG_COLOR_DELIMITER).concat(match).join(BG_COLOR_DELIMITER); // 如果设置背景颜色,取消背景图片的影响
3984
+ if (isBgColor) {
3985
+ dom[_constant__WEBPACK_IMPORTED_MODULE_2__["BGCOLORATTR"]] = retColorStr;
3986
+ dom[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"]] = (dom[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightBgColor).split(_constant__WEBPACK_IMPORTED_MODULE_2__["BG_COLOR_DELIMITER"]).concat(match).join(_constant__WEBPACK_IMPORTED_MODULE_2__["BG_COLOR_DELIMITER"]);
3987
+ } else {
3988
+ dom[_constant__WEBPACK_IMPORTED_MODULE_2__["COLORATTR"]] = retColorStr;
3989
+ dom[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"]] = match;
3990
+ } // 如果设置背景颜色,取消背景图片的影响
3991
+
3981
3992
 
3982
3993
  if (isBgColor && color__WEBPACK_IMPORTED_MODULE_0___default()(retColorStr).alpha() >= _constant__WEBPACK_IMPORTED_MODULE_2__["IGNORE_ALPHA"] && dom[_constant__WEBPACK_IMPORTED_MODULE_2__["BGIMAGEATTR"]]) {
3983
3994
  delete dom[_constant__WEBPACK_IMPORTED_MODULE_2__["BGIMAGEATTR"]];
@@ -3986,7 +3997,7 @@ var SDK = /*#__PURE__*/function () {
3986
3997
  }
3987
3998
 
3988
3999
  retColor && (cssChange = true);
3989
- replaceIndex += 1;
4000
+ replaceIndex++;
3990
4001
  return retColor || match;
3991
4002
  }
3992
4003
 
@@ -4004,7 +4015,7 @@ var SDK = /*#__PURE__*/function () {
4004
4015
 
4005
4016
  if ((isBackgroundAttr || isBorderImageAttr) && /url\([^)]*\)/i.test(value)) {
4006
4017
  cssChange = true;
4007
- var imgBgColor = mixColor((el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_BGCOLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightBgColor).split(BG_COLOR_DELIMITER)); // 在背景图片下加一层原背景颜色:
4018
+ 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"])); // 在背景图片下加一层原背景颜色:
4008
4019
  // background-image使用多层背景(注意background-position也要多加一层 https://www.w3.org/TR/css-backgrounds-3/#layering);
4009
4020
  // border-image不支持多层背景,需要添加background-color
4010
4021
 
@@ -4063,7 +4074,7 @@ var SDK = /*#__PURE__*/function () {
4063
4074
  }); // 没有设置自定义字体颜色,则使用非 Dark Mode 下默认字体颜色
4064
4075
 
4065
4076
  if (!hasInlineColor) {
4066
- var textColor = mixColor((el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightTextColor).split(BG_COLOR_DELIMITER));
4077
+ var textColor = el[_constant__WEBPACK_IMPORTED_MODULE_2__["ORIGINAL_COLORATTR"]] || _config__WEBPACK_IMPORTED_MODULE_3__["default"].defaultLightTextColor;
4067
4078
  cssKV += _global__WEBPACK_IMPORTED_MODULE_4__["cssUtils"].genCssKV('color', textColor);
4068
4079
  Object(_domUtils__WEBPACK_IMPORTED_MODULE_5__["getChildrenAndIt"])(el).forEach(function (dom) {
4069
4080
  dom[_constant__WEBPACK_IMPORTED_MODULE_2__["COLORATTR"]] = textColor;
@@ -4092,9 +4103,6 @@ var SDK = /*#__PURE__*/function () {
4092
4103
 
4093
4104
  if (cssKV) {
4094
4105
  // 有处理过或者是背景图片就加class以及css
4095
- // TODO: 备份应该写到插件里
4096
- el.setAttribute('data-style', styles.cssText); // 备份内联样式到data-style里,供编辑器做反处理
4097
-
4098
4106
  if (!dmClassName) {
4099
4107
  dmClassName = "".concat(_constant__WEBPACK_IMPORTED_MODULE_2__["CLASS_PREFIX"]).concat(this._idx++);
4100
4108
  el.classList.add(dmClassName);