pxx-vue-quill 1.0.51 → 1.0.53

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.
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Copyright (c) 2025 Pxx-Team
9
9
  * Released under the MIT license
10
- * Date: 2025-08-30T14:37:46.893Z
10
+ * Date: 2025-09-02T07:51:25.222Z
11
11
  */
12
12
  (function (global, factory) {
13
13
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
@@ -18441,7 +18441,6 @@
18441
18441
  var Delta$1 = Delta_1;
18442
18442
 
18443
18443
  const toolbarOptions = {
18444
- // 完整的工具栏
18445
18444
  full: [
18446
18445
  ['bold', 'italic', 'underline'],
18447
18446
  [{ color: [] }],
@@ -18782,11 +18781,11 @@
18782
18781
  value: true
18783
18782
  });
18784
18783
 
18785
- var _createClass$1 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
18784
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
18786
18785
 
18787
18786
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
18788
18787
 
18789
- function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18788
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18790
18789
 
18791
18790
  var LEFT_ALIGN = 'left';
18792
18791
  var CENTER_ALIGN = 'center';
@@ -18797,7 +18796,7 @@
18797
18796
  var _this = this,
18798
18797
  _alignments;
18799
18798
 
18800
- _classCallCheck$1(this, DefaultAligner);
18799
+ _classCallCheck(this, DefaultAligner);
18801
18800
 
18802
18801
  this.applyStyle = options.aligner.applyStyle;
18803
18802
  this.alignAttribute = options.attribute;
@@ -18825,7 +18824,7 @@
18825
18824
  }), _alignments);
18826
18825
  }
18827
18826
 
18828
- _createClass$1(DefaultAligner, [{
18827
+ _createClass(DefaultAligner, [{
18829
18828
  key: 'getAlignments',
18830
18829
  value: function getAlignments() {
18831
18830
  var _this2 = this;
@@ -19550,148 +19549,156 @@
19550
19549
 
19551
19550
  var IframeVideoSpec = {};
19552
19551
 
19553
- var UnclickableBlotSpec$1 = {};
19552
+ var UnclickableBlotSpec = {};
19554
19553
 
19555
- Object.defineProperty(UnclickableBlotSpec$1, "__esModule", {
19556
- value: true
19557
- });
19554
+ var hasRequiredUnclickableBlotSpec;
19558
19555
 
19559
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
19556
+ function requireUnclickableBlotSpec () {
19557
+ if (hasRequiredUnclickableBlotSpec) return UnclickableBlotSpec;
19558
+ hasRequiredUnclickableBlotSpec = 1;
19560
19559
 
19561
- var _BlotSpec2 = requireBlotSpec();
19560
+ Object.defineProperty(UnclickableBlotSpec, "__esModule", {
19561
+ value: true
19562
+ });
19562
19563
 
19563
- var _BlotSpec3 = _interopRequireDefault(_BlotSpec2);
19564
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
19564
19565
 
19565
- var _BlotFormatter = requireBlotFormatter();
19566
+ var _BlotSpec2 = requireBlotSpec();
19566
19567
 
19567
- _interopRequireDefault(_BlotFormatter);
19568
+ var _BlotSpec3 = _interopRequireDefault(_BlotSpec2);
19568
19569
 
19569
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19570
+ var _BlotFormatter = requireBlotFormatter();
19570
19571
 
19571
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19572
+ _interopRequireDefault(_BlotFormatter);
19572
19573
 
19573
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
19574
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19574
19575
 
19575
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
19576
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19576
19577
 
19577
- var MOUSE_ENTER_ATTRIBUTE = 'data-blot-formatter-unclickable-bound';
19578
- var PROXY_IMAGE_CLASS = 'blot-formatter__proxy-image';
19578
+ function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
19579
19579
 
19580
- var UnclickableBlotSpec = function (_BlotSpec) {
19581
- _inherits(UnclickableBlotSpec, _BlotSpec);
19580
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
19582
19581
 
19583
- function UnclickableBlotSpec(formatter, selector) {
19584
- _classCallCheck(this, UnclickableBlotSpec);
19582
+ var MOUSE_ENTER_ATTRIBUTE = 'data-blot-formatter-unclickable-bound';
19583
+ var PROXY_IMAGE_CLASS = 'blot-formatter__proxy-image';
19585
19584
 
19586
- var _this = _possibleConstructorReturn(this, (UnclickableBlotSpec.__proto__ || Object.getPrototypeOf(UnclickableBlotSpec)).call(this, formatter));
19585
+ var UnclickableBlotSpec$1 = function (_BlotSpec) {
19586
+ _inherits(UnclickableBlotSpec, _BlotSpec);
19587
19587
 
19588
- _this.onTextChange = function () {
19589
- Array.from(document.querySelectorAll(_this.selector + ':not([' + MOUSE_ENTER_ATTRIBUTE + '])')).forEach(function (unclickable) {
19590
- unclickable.setAttribute(MOUSE_ENTER_ATTRIBUTE, 'true');
19591
- unclickable.addEventListener('mouseenter', _this.onMouseEnter);
19592
- });
19593
- };
19588
+ function UnclickableBlotSpec(formatter, selector) {
19589
+ _classCallCheck(this, UnclickableBlotSpec);
19594
19590
 
19595
- _this.onMouseEnter = function (event) {
19596
- var unclickable = event.target;
19597
- if (!(unclickable instanceof HTMLElement)) {
19598
- return;
19599
- }
19591
+ var _this = _possibleConstructorReturn(this, (UnclickableBlotSpec.__proto__ || Object.getPrototypeOf(UnclickableBlotSpec)).call(this, formatter));
19600
19592
 
19601
- _this.nextUnclickable = unclickable;
19602
- _this.repositionProxyImage(_this.nextUnclickable);
19603
- };
19593
+ _this.onTextChange = function () {
19594
+ Array.from(document.querySelectorAll(_this.selector + ':not([' + MOUSE_ENTER_ATTRIBUTE + '])')).forEach(function (unclickable) {
19595
+ unclickable.setAttribute(MOUSE_ENTER_ATTRIBUTE, 'true');
19596
+ unclickable.addEventListener('mouseenter', _this.onMouseEnter);
19597
+ });
19598
+ };
19604
19599
 
19605
- _this.onProxyImageClick = function () {
19606
- _this.unclickable = _this.nextUnclickable;
19607
- _this.nextUnclickable = null;
19608
- _this.formatter.show(_this);
19609
- _this.hideProxyImage();
19610
- };
19600
+ _this.onMouseEnter = function (event) {
19601
+ var unclickable = event.target;
19602
+ if (!(unclickable instanceof HTMLElement)) {
19603
+ return;
19604
+ }
19611
19605
 
19612
- _this.selector = selector;
19613
- _this.unclickable = null;
19614
- _this.nextUnclickable = null;
19615
- return _this;
19616
- }
19606
+ _this.nextUnclickable = unclickable;
19607
+ _this.repositionProxyImage(_this.nextUnclickable);
19608
+ };
19617
19609
 
19618
- _createClass(UnclickableBlotSpec, [{
19619
- key: 'init',
19620
- value: function init() {
19621
- if (document.body) {
19622
- /*
19623
- it's important that this is attached to the body instead of the root quill element.
19624
- this prevents the click event from overlapping with ImageSpec
19625
- */
19626
- document.body.appendChild(this.createProxyImage());
19627
- }
19610
+ _this.onProxyImageClick = function () {
19611
+ _this.unclickable = _this.nextUnclickable;
19612
+ _this.nextUnclickable = null;
19613
+ _this.formatter.show(_this);
19614
+ _this.hideProxyImage();
19615
+ };
19628
19616
 
19629
- this.hideProxyImage();
19630
- this.proxyImage.addEventListener('click', this.onProxyImageClick);
19631
- this.formatter.quill.on('text-change', this.onTextChange);
19632
- }
19633
- }, {
19634
- key: 'getTargetElement',
19635
- value: function getTargetElement() {
19636
- return this.unclickable;
19637
- }
19638
- }, {
19639
- key: 'getOverlayElement',
19640
- value: function getOverlayElement() {
19641
- return this.unclickable;
19642
- }
19643
- }, {
19644
- key: 'onHide',
19645
- value: function onHide() {
19646
- this.hideProxyImage();
19647
- this.nextUnclickable = null;
19648
- this.unclickable = null;
19649
- }
19650
- }, {
19651
- key: 'createProxyImage',
19652
- value: function createProxyImage() {
19653
- var canvas = document.createElement('canvas');
19654
- var context = canvas.getContext('2d');
19655
- context.globalAlpha = 0;
19656
- context.fillRect(0, 0, 1, 1);
19657
-
19658
- this.proxyImage = document.createElement('img');
19659
- this.proxyImage.src = canvas.toDataURL('image/png');
19660
- this.proxyImage.classList.add(PROXY_IMAGE_CLASS);
19661
-
19662
- Object.assign(this.proxyImage.style, {
19663
- position: 'absolute',
19664
- margin: '0'
19665
- });
19617
+ _this.selector = selector;
19618
+ _this.unclickable = null;
19619
+ _this.nextUnclickable = null;
19620
+ return _this;
19621
+ }
19666
19622
 
19667
- return this.proxyImage;
19668
- }
19669
- }, {
19670
- key: 'hideProxyImage',
19671
- value: function hideProxyImage() {
19672
- Object.assign(this.proxyImage.style, {
19673
- display: 'none'
19674
- });
19675
- }
19676
- }, {
19677
- key: 'repositionProxyImage',
19678
- value: function repositionProxyImage(unclickable) {
19679
- var rect = unclickable.getBoundingClientRect();
19680
-
19681
- Object.assign(this.proxyImage.style, {
19682
- display: 'block',
19683
- left: rect.left + window.pageXOffset + 'px',
19684
- top: rect.top + window.pageYOffset + 'px',
19685
- width: rect.width + 'px',
19686
- height: rect.height + 'px'
19687
- });
19688
- }
19689
- }]);
19623
+ _createClass(UnclickableBlotSpec, [{
19624
+ key: 'init',
19625
+ value: function init() {
19626
+ if (document.body) {
19627
+ /*
19628
+ it's important that this is attached to the body instead of the root quill element.
19629
+ this prevents the click event from overlapping with ImageSpec
19630
+ */
19631
+ document.body.appendChild(this.createProxyImage());
19632
+ }
19633
+
19634
+ this.hideProxyImage();
19635
+ this.proxyImage.addEventListener('click', this.onProxyImageClick);
19636
+ this.formatter.quill.on('text-change', this.onTextChange);
19637
+ }
19638
+ }, {
19639
+ key: 'getTargetElement',
19640
+ value: function getTargetElement() {
19641
+ return this.unclickable;
19642
+ }
19643
+ }, {
19644
+ key: 'getOverlayElement',
19645
+ value: function getOverlayElement() {
19646
+ return this.unclickable;
19647
+ }
19648
+ }, {
19649
+ key: 'onHide',
19650
+ value: function onHide() {
19651
+ this.hideProxyImage();
19652
+ this.nextUnclickable = null;
19653
+ this.unclickable = null;
19654
+ }
19655
+ }, {
19656
+ key: 'createProxyImage',
19657
+ value: function createProxyImage() {
19658
+ var canvas = document.createElement('canvas');
19659
+ var context = canvas.getContext('2d');
19660
+ context.globalAlpha = 0;
19661
+ context.fillRect(0, 0, 1, 1);
19662
+
19663
+ this.proxyImage = document.createElement('img');
19664
+ this.proxyImage.src = canvas.toDataURL('image/png');
19665
+ this.proxyImage.classList.add(PROXY_IMAGE_CLASS);
19666
+
19667
+ Object.assign(this.proxyImage.style, {
19668
+ position: 'absolute',
19669
+ margin: '0'
19670
+ });
19690
19671
 
19691
- return UnclickableBlotSpec;
19692
- }(_BlotSpec3.default);
19672
+ return this.proxyImage;
19673
+ }
19674
+ }, {
19675
+ key: 'hideProxyImage',
19676
+ value: function hideProxyImage() {
19677
+ Object.assign(this.proxyImage.style, {
19678
+ display: 'none'
19679
+ });
19680
+ }
19681
+ }, {
19682
+ key: 'repositionProxyImage',
19683
+ value: function repositionProxyImage(unclickable) {
19684
+ var rect = unclickable.getBoundingClientRect();
19685
+
19686
+ Object.assign(this.proxyImage.style, {
19687
+ display: 'block',
19688
+ left: rect.left + window.pageXOffset + 'px',
19689
+ top: rect.top + window.pageYOffset + 'px',
19690
+ width: rect.width + 'px',
19691
+ height: rect.height + 'px'
19692
+ });
19693
+ }
19694
+ }]);
19693
19695
 
19694
- UnclickableBlotSpec$1.default = UnclickableBlotSpec;
19696
+ return UnclickableBlotSpec;
19697
+ }(_BlotSpec3.default);
19698
+
19699
+ UnclickableBlotSpec.default = UnclickableBlotSpec$1;
19700
+ return UnclickableBlotSpec;
19701
+ }
19695
19702
 
19696
19703
  var hasRequiredIframeVideoSpec;
19697
19704
 
@@ -19703,7 +19710,7 @@
19703
19710
  value: true
19704
19711
  });
19705
19712
 
19706
- var _UnclickableBlotSpec2 = UnclickableBlotSpec$1;
19713
+ var _UnclickableBlotSpec2 = requireUnclickableBlotSpec();
19707
19714
 
19708
19715
  var _UnclickableBlotSpec3 = _interopRequireDefault(_UnclickableBlotSpec2);
19709
19716
 
@@ -19930,7 +19937,7 @@
19930
19937
  }
19931
19938
  });
19932
19939
 
19933
- var _UnclickableBlotSpec = UnclickableBlotSpec$1;
19940
+ var _UnclickableBlotSpec = requireUnclickableBlotSpec();
19934
19941
 
19935
19942
  Object.defineProperty(exports, 'UnclickableBlotSpec', {
19936
19943
  enumerable: true,
@@ -19984,25 +19991,20 @@
19984
19991
  'collapse': props.showMoreToolbar
19985
19992
  }
19986
19993
  }, [
19987
- // 第一组:基础格式工具
19988
19994
  vue.h('span', { class: 'ql-formats' }, [
19989
- // 粗体按钮
19990
19995
  vue.h('button', {
19991
19996
  class: 'ql-bold',
19992
19997
  type: 'button',
19993
19998
  }, ''),
19994
- // 斜体按钮
19995
19999
  vue.h('button', {
19996
20000
  class: 'ql-italic',
19997
20001
  type: 'button'
19998
20002
  }, ''),
19999
- // 下划线按钮
20000
20003
  vue.h('button', {
20001
20004
  class: 'ql-underline',
20002
20005
  type: 'button'
20003
20006
  }, '')
20004
20007
  ]),
20005
- // 第二组:颜色选择器
20006
20008
  vue.h('span', { class: 'ql-formats' }, [
20007
20009
  vue.h('select', {
20008
20010
  class: 'ql-color ql-picker ql-color-picker ql-expanded',
@@ -20012,14 +20014,12 @@
20012
20014
  vue.h('div', { class: 'ql-picker-options' })
20013
20015
  ]),
20014
20016
  ]),
20015
- // 第三组:链接工具
20016
20017
  vue.h('span', { class: 'ql-formats' }, [
20017
20018
  vue.h('button', {
20018
20019
  class: 'ql-link',
20019
20020
  type: 'button'
20020
20021
  }, '')
20021
20022
  ]),
20022
- // 第四组:更多按钮
20023
20023
  vue.h('span', { class: 'ql-formats' }, [
20024
20024
  vue.h('button', {
20025
20025
  class: 'ql-more mr-0',
@@ -20047,14 +20047,12 @@
20047
20047
  type: 'button'
20048
20048
  }, '')
20049
20049
  ]),
20050
- // 第二组:图片工具
20051
20050
  vue.h('span', { class: 'ql-formats' }, [
20052
20051
  vue.h('button', {
20053
20052
  class: 'ql-image',
20054
20053
  type: 'button'
20055
20054
  }, '')
20056
20055
  ]),
20057
- // 第三组:撤销和重做
20058
20056
  vue.h('span', { class: 'ql-formats' }, [
20059
20057
  vue.h('button', {
20060
20058
  class: 'ql-undo',
@@ -20067,7 +20065,6 @@
20067
20065
  onClick: () => emit('toolClick', 'redo')
20068
20066
  }, '')
20069
20067
  ]),
20070
- // 第四组:数学工具
20071
20068
  vue.h('span', { class: 'ql-formats' }, [
20072
20069
  vue.h('button', {
20073
20070
  class: 'ql-math mr-0',
@@ -20090,54 +20087,27 @@
20090
20087
  }
20091
20088
  });
20092
20089
 
20093
- // 加粗
20094
20090
  const boldSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M6.794999938146972,7.7800002288818355L9.045000038146974,7.7800002288818355Q9.855000038146972,7.7800002288818355,10.230000038146972,7.442500128881836Q10.605000038146972,7.105000028881836,10.605000038146972,6.505000128881836Q10.605000038146972,6.114999728881836,10.440000038146973,5.860000628881836Q10.275000138146972,5.6050005288818365,9.929999838146973,5.470000228881836Q9.585000038146973,5.335000028881836,9.045000038146974,5.335000028881836L7.139999938146973,5.335000028881836L7.139999938146973,3.385000228881836L9.045000038146974,3.385000228881836Q10.034999838146973,3.385000228881836,10.852499938146973,3.797500608881836Q11.670000038146974,4.2100000388818355,12.142499938146972,4.922500628881836Q12.614999738146974,5.635000228881836,12.614999738146974,6.505000128881836Q12.614999738146974,7.375000028881836,12.142499938146972,8.042500028881836Q11.670000038146974,8.710000028881836,10.860000138146972,9.070000128881837Q10.050000238146973,9.430000328881835,9.045000038146974,9.430000328881835L6.794999938146972,9.430000328881835L6.794999938146972,7.7800002288818355ZM7.139999938146973,12.550000228881835L9.329999938146972,12.550000228881835Q9.900000138146972,12.550000228881835,10.327499838146974,12.354999528881836Q10.755000138146972,12.159999828881835,10.987500238146973,11.807499928881835Q11.219999838146972,11.454999928881836,11.219999838146972,11.020000428881836Q11.219999838146972,10.600000428881836,10.987500238146973,10.232500028881836Q10.755000138146972,9.864999728881836,10.327499838146974,9.647500028881836Q9.900000138146972,9.430000328881835,9.329999938146972,9.430000328881835L6.975000038146972,9.430000328881835L6.975000038146972,7.7800002288818355L9.329999938146972,7.7800002288818355Q10.349999938146972,7.7800002288818355,11.250000038146972,8.200000328881835Q12.149999638146973,8.620000328881837,12.690000538146972,9.362500228881835Q13.229999538146973,10.104999528881836,13.229999538146973,11.034999828881837Q13.229999538146973,11.949999828881836,12.690000538146972,12.752500528881836Q12.149999638146973,13.555000228881836,11.250000038146972,14.027500228881836Q10.349999938146972,14.500000228881836,9.329999938146972,14.500000228881836L7.139999938146973,14.500000228881836L7.139999938146973,12.550000228881835ZM7.064999938146973,14.500000228881836Q6.284999968146972,14.500000228881836,5.872500058146973,14.095000228881837Q5.460000038146973,13.689999228881836,5.460000038146973,12.895000428881836L5.460000038146973,4.989999728881836Q5.460000038146973,4.195000648881836,5.872500058146973,3.789999958881836Q6.284999968146972,3.385000228881836,7.064999938146973,3.385000228881836L7.469999838146973,3.385000228881836L7.469999838146973,14.500000228881836L7.064999938146973,14.500000228881836Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20095
- // 斜体
20096
20091
  const italicSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M8,3Q7.9015086,3,7.8049095,3.019214718Q7.7083106,3.038429435,7.6173165,3.076120459Q7.5263224,3.11381148,7.4444296,3.16853037Q7.3625371,3.2232492600000002,7.2928932,3.2928932Q7.2232492,3.36253715,7.1685302,3.4444297600000002Q7.1138113999999995,3.52632231,7.0761204,3.61731648Q7.0384293,3.70831072,7.0192146,3.80490965Q6.99999994,3.90150857,7,4Q6.99999994,4.0984913,7.0192146,4.1950902Q7.0384293,4.291689,7.0761204,4.3826833Q7.1138113999999995,4.4736774,7.1685302,4.5555699Q7.2232492,4.6374626,7.2928932,4.7071065999999995Q7.3625371,4.7767504,7.4444296,4.8314693Q7.5263224,4.8861883,7.6173165,4.9238794Q7.7083106,4.9615704,7.8049096,4.9807851Q7.9015086,4.9999999,8,5L9.137146,5L8,13L7,13Q6.90150857,13,6.80490965,13.019215Q6.70831072,13.038429,6.6173164799999995,13.07612Q6.52632231,13.113811,6.44442973,13.16853Q6.36253715,13.223249,6.2928932,13.292892Q6.22324926,13.362536,6.16853037,13.444429Q6.11381148,13.526321,6.076120459,13.617315Q6.038429435,13.708309,6.019214718,13.804909Q6,13.901508,6,14Q6,14.098491,6.019214718,14.195089Q6.038429435,14.291689,6.076120459,14.382683Q6.11381148,14.473677,6.16853037,14.555569Q6.22324926,14.637462,6.2928932,14.707106Q6.36253715,14.77675,6.44442976,14.831469Q6.52632231,14.886187,6.6173164799999995,14.923878Q6.70831072,14.961569,6.80490965,14.980784Q6.90150857,15,7,15L11,15Q11.0984912,15,11.1950898,14.980784Q11.2916889,14.961569,11.382682800000001,14.923878Q11.473677200000001,14.886187,11.5555696,14.831469Q11.6374626,14.77675,11.7071066,14.707106Q11.7767506,14.637462,11.8314691,14.555569Q11.8861876,14.473677,11.9238791,14.382683Q11.9615698,14.291689,11.9807849,14.195089Q12,14.098491,12,14Q12,13.901508,11.9807849,13.804909Q11.9615698,13.708309,11.9238791,13.617315Q11.8861876,13.526321,11.8314691,13.444428Q11.7767506,13.362536,11.7071066,13.292892Q11.6374626,13.223249,11.5555701,13.16853Q11.473677200000001,13.113811,11.382682800000001,13.07612Q11.2916889,13.038429,11.1950903,13.019215Q11.0984912,13,11,13L9.8626451,13L11,5L12,5Q12.0984907,4.9999999,12.1950893,4.9807851Q12.2916884,4.9615703,12.382682800000001,4.9238793Q12.4736767,4.8861883,12.5555696,4.8314693Q12.6374621,4.7767504,12.7071061,4.7071065999999995Q12.776750100000001,4.6374626,12.831468600000001,4.5555699Q12.8861876,4.4736774,12.9238787,4.3826833Q12.9615698,4.291689,12.9807849,4.1950902Q12.999999500000001,4.0984913,13,4Q12.999999500000001,3.90150857,12.980784400000001,3.80490965Q12.9615698,3.70831072,12.9238787,3.61731648Q12.8861876,3.52632231,12.8314691,3.44442973Q12.7767506,3.36253715,12.7071066,3.2928932Q12.6374626,3.2232492600000002,12.5555696,3.16853037Q12.4736767,3.11381148,12.382682800000001,3.076120459Q12.2916884,3.038429435,12.1950898,3.019214718Q12.0984907,3,12,3L8,3Z" fill-rule="evenodd" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20097
- // 下划线
20098
20092
  const underlineSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M5.000117301940918,14.500022450683593L5.000117301940918,14.500022450683593Q5.000117301940918,14.450777450683594,5.009724660740918,14.402477450683593Q5.019332019940918,14.354177450683594,5.038177530940918,14.308679450683593Q5.057023040940918,14.263182450683594,5.084382488940918,14.222236450683594Q5.111741931940918,14.181290450683594,5.146563901940918,14.146469450683593Q5.181385871940918,14.111646450683594,5.222332181940918,14.084286450683594Q5.263278451940918,14.056927450683594,5.308775541940918,14.038082450683595Q5.354272661940918,14.019237450683594,5.402572121940918,14.009630450683593Q5.450871581940918,14.000022450683593,5.500117301940918,14.000022450683593L12.500117301940918,14.000022450683593Q12.549362201940918,14.000022450683593,12.597661501940918,14.009629450683594Q12.645960801940918,14.019237450683594,12.691457701940918,14.038082450683595Q12.736954701940917,14.056926450683594,12.777901601940918,14.084285450683593Q12.818847701940918,14.111645450683593,12.853670101940917,14.146468450683594Q12.888492101940919,14.181289450683593,12.915851601940918,14.222235450683593Q12.943210601940919,14.263181450683593,12.962056201940918,14.308679450683593Q12.980901701940919,14.354177450683594,12.990509501940917,14.402477450683593Q13.00011680194092,14.450777450683594,13.000117301940918,14.500022450683593L13.000117301940918,14.500022450683593Q13.00011680194092,14.549268450683593,12.990509001940918,14.597566450683594Q12.980901701940919,14.645866450683593,12.962056201940918,14.691363450683594Q12.943210601940919,14.736860450683594,12.915851601940918,14.777807450683595Q12.888492101940919,14.818753450683595,12.853670101940917,14.853575450683593Q12.818847701940918,14.888397450683593,12.777901601940918,14.915756450683594Q12.736954701940917,14.943115450683594,12.691457701940918,14.961960450683593Q12.645960801940918,14.980806450683593,12.597661501940918,14.990413450683594Q12.549362201940918,15.000021450683594,12.500117301940918,15.000022450683593L5.500117301940918,15.000022450683593Q5.450871581940918,15.000021450683594,5.402572121940918,14.990414450683593Q5.354272661940918,14.980806450683593,5.308775541940918,14.961960450683593Q5.263278451940918,14.943115450683594,5.222332161940918,14.915756450683594Q5.181385871940918,14.888397450683593,5.146563901940918,14.853574450683594Q5.111741931940918,14.818752450683593,5.084382488940918,14.777806450683594Q5.057023040940918,14.736860450683594,5.038177530940918,14.691363450683594Q5.019332019940918,14.645866450683593,5.009724660740918,14.597567450683593Q5.000117301940918,14.549268450683593,5.000117301940918,14.500022450683593ZM5.045039176940918,3.548906330683594Q5.045039176940918,3.1015625006835936,5.283039211940918,2.8637809706835937Q5.521039131940918,2.6259994506835938,5.969039081940918,2.6259994506835938L5.997039201940918,2.6259994506835938Q6.445039201940918,2.6259994506835938,6.6830393019409176,2.8637809706835937Q6.921039201940918,3.1015625006835936,6.921039201940918,3.548906330683594L6.921039201940918,9.010000250683593Q6.921039201940918,9.737999950683594,7.180039401940919,10.255999550683594Q7.439039201940918,10.774000150683595,7.908039101940918,11.053999950683593Q8.377039001940918,11.333999650683594,8.993039101940917,11.333999650683594Q9.609039301940918,11.333999650683594,10.085039101940918,11.060999850683594Q10.561039401940917,10.788000150683594,10.820039301940918,10.263000450683593Q11.079039101940918,9.737999950683594,11.079039101940918,9.010000250683593L11.079039101940918,3.548906330683594Q11.079039101940918,3.1015625006835936,11.317039501940918,2.8637809706835937Q11.555039401940917,2.6259994506835938,12.003039401940917,2.6259994506835938L12.031039201940917,2.6259994506835938Q12.479039201940918,2.6259994506835938,12.717039101940918,2.8637809706835937Q12.955039001940918,3.1015625006835936,12.955039001940918,3.548906330683594L12.955039001940918,9.010000250683593Q12.955039001940918,10.144000050683594,12.416039501940919,11.095999750683594Q11.877039901940918,12.048000350683594,10.967039101940918,12.600999850683595Q10.057039301940918,13.154000450683593,8.993039101940917,13.154000450683593Q7.929039001940918,13.154000450683593,7.0190392019409185,12.600999850683595Q6.109039201940918,12.048000350683594,5.577039361940918,11.095999750683594Q5.045039176940918,10.144000050683594,5.045039176940918,9.010000250683593L5.045039176940918,3.548906330683594Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20099
- // 更多
20100
20093
  const moreSVG = `<svg t="1756109058354" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11458" width="18" height="18"><path d="M512 320q-3.150769 0-6.301538-0.315077-3.111385-0.315077-6.183385-0.905846-3.072-0.630154-6.104615-1.536-2.993231-0.905846-5.907693-2.126769-2.914462-1.181538-5.671384-2.678154-2.756923-1.496615-5.395693-3.229539-2.599385-1.732923-5.04123-3.741538-2.441846-1.969231-4.647385-4.214154-2.244923-2.205538-4.214154-4.647385-1.969231-2.441846-3.741538-5.04123-1.732923-2.638769-3.229539-5.395693-1.496615-2.756923-2.678154-5.671384-1.181538-2.914462-2.126769-5.907693-0.905846-3.032615-1.536-6.104615-0.590769-3.072-0.905846-6.222769T448 256q0-3.150769 0.315077-6.301538 0.315077-3.111385 0.905846-6.183385 0.630154-3.072 1.536-6.104615 0.905846-2.993231 2.126769-5.907693 1.181538-2.914462 2.678154-5.671384 1.496615-2.756923 3.229539-5.395693 1.732923-2.599385 3.741538-5.04123 1.969231-2.441846 4.214154-4.647385 2.205538-2.205538 4.647385-4.214154 2.441846-1.969231 5.04123-3.741538 2.638769-1.732923 5.395693-3.229539 2.756923-1.496615 5.671384-2.678154 2.914462-1.181538 5.907693-2.126769 3.032615-0.905846 6.104615-1.536 3.072-0.590769 6.222769-0.905846T512 192q3.150769 0 6.301538 0.315077 3.111385 0.315077 6.183385 0.905846 3.072 0.630154 6.104615 1.536 2.993231 0.905846 5.907693 2.126769 2.914462 1.181538 5.671384 2.678154 2.756923 1.496615 5.395693 3.229539 2.599385 1.732923 5.04123 3.741538 2.441846 1.969231 4.647385 4.214154 2.205538 2.205538 4.214154 4.647385 1.969231 2.441846 3.741538 5.04123 1.732923 2.638769 3.229539 5.395693 1.496615 2.756923 2.678154 5.671384 1.181538 2.914462 2.126769 5.907693 0.905846 3.032615 1.536 6.104615 0.590769 3.072 0.905846 6.222769t0.315077 6.262154q0 3.150769-0.315077 6.301538-0.315077 3.111385-0.905846 6.183385-0.630154 3.072-1.536 6.104615-0.905846 2.993231-2.126769 5.907693-1.181538 2.914462-2.678154 5.671384-1.496615 2.756923-3.229539 5.395693-1.732923 2.599385-3.741538 5.04123-1.969231 2.441846-4.214154 4.647385-2.205538 2.244923-4.647385 4.214154-2.441846 1.969231-5.04123 3.741538-2.638769 1.732923-5.395693 3.229539-2.756923 1.496615-5.671384 2.678154-2.914462 1.181538-5.907693 2.126769-3.032615 0.905846-6.104615 1.536-3.072 0.590769-6.222769 0.905846T512 320z m0 256q-3.150769 0-6.301538-0.315077-3.111385-0.315077-6.183385-0.905846-3.072-0.630154-6.104615-1.536-2.993231-0.905846-5.907693-2.126769-2.914462-1.181538-5.671384-2.678154-2.756923-1.496615-5.395693-3.229539-2.599385-1.732923-5.04123-3.741538-2.441846-1.969231-4.647385-4.214154-2.244923-2.205538-4.214154-4.647385-1.969231-2.441846-3.741538-5.04123-1.732923-2.638769-3.229539-5.395693-1.496615-2.756923-2.678154-5.671384-1.181538-2.914462-2.126769-5.907693-0.905846-3.032615-1.536-6.104615-0.590769-3.072-0.905846-6.222769T448 512q0-3.150769 0.315077-6.301538 0.315077-3.111385 0.905846-6.183385 0.630154-3.072 1.536-6.104615 0.905846-2.993231 2.126769-5.907693 1.181538-2.914462 2.678154-5.671384 1.496615-2.756923 3.229539-5.395693 1.732923-2.599385 3.741538-5.04123 1.969231-2.441846 4.214154-4.647385 2.205538-2.244923 4.647385-4.214154 2.441846-1.969231 5.04123-3.741538 2.638769-1.732923 5.395693-3.229539 2.756923-1.496615 5.671384-2.678154 2.914462-1.181538 5.907693-2.126769 3.032615-0.905846 6.104615-1.536 3.072-0.590769 6.222769-0.905846T512 448q3.150769 0 6.301538 0.315077 3.111385 0.315077 6.183385 0.905846 3.072 0.630154 6.104615 1.536 2.993231 0.905846 5.907693 2.126769 2.914462 1.181538 5.671384 2.678154 2.756923 1.496615 5.395693 3.229539 2.599385 1.732923 5.04123 3.741538 2.441846 1.969231 4.647385 4.214154 2.205538 2.205538 4.214154 4.647385 1.969231 2.441846 3.741538 5.04123 1.732923 2.638769 3.229539 5.395693 1.496615 2.756923 2.678154 5.671384 1.181538 2.914462 2.126769 5.907693 0.905846 3.032615 1.536 6.104615 0.590769 3.072 0.905846 6.222769t0.315077 6.262154q0 3.150769-0.315077 6.301538-0.315077 3.111385-0.905846 6.183385-0.630154 3.072-1.536 6.104615-0.905846 2.993231-2.126769 5.907693-1.181538 2.914462-2.678154 5.671384-1.496615 2.756923-3.229539 5.395693-1.732923 2.599385-3.741538 5.04123-1.969231 2.441846-4.214154 4.647385-2.205538 2.244923-4.647385 4.214154-2.441846 1.969231-5.04123 3.741538-2.638769 1.732923-5.395693 3.229539-2.756923 1.496615-5.671384 2.678154-2.914462 1.181538-5.907693 2.126769-3.032615 0.905846-6.104615 1.536-3.072 0.590769-6.222769 0.905846T512 576z m0 256q-3.150769 0-6.301538-0.315077-3.111385-0.315077-6.183385-0.905846-3.072-0.630154-6.104615-1.536-2.993231-0.905846-5.907693-2.126769-2.914462-1.181538-5.671384-2.678154-2.756923-1.496615-5.395693-3.229539-2.599385-1.732923-5.04123-3.741538-2.441846-1.969231-4.647385-4.214154-2.244923-2.205538-4.214154-4.647385-1.969231-2.441846-3.741538-5.04123-1.732923-2.638769-3.229539-5.395693-1.496615-2.756923-2.678154-5.671384-1.181538-2.914462-2.126769-5.907693-0.905846-3.032615-1.536-6.104615-0.590769-3.072-0.905846-6.222769t-0.315077-6.262154q0-3.150769 0.315077-6.301538 0.315077-3.111385 0.905846-6.183385 0.630154-3.072 1.536-6.104615 0.905846-2.993231 2.126769-5.907693 1.181538-2.914462 2.678154-5.671384 1.496615-2.756923 3.229539-5.395693 1.732923-2.599385 3.741538-5.04123 1.969231-2.441846 4.214154-4.647385 2.205538-2.205538 4.647385-4.214154 2.441846-1.969231 5.04123-3.741538 2.638769-1.732923 5.395693-3.229539 2.756923-1.496615 5.671384-2.678154 2.914462-1.181538 5.907693-2.126769 3.032615-0.905846 6.104615-1.536 3.072-0.590769 6.222769-0.905846T512 704q3.150769 0 6.301538 0.315077 3.111385 0.315077 6.183385 0.905846 3.072 0.630154 6.104615 1.536 2.993231 0.905846 5.907693 2.126769 2.914462 1.181538 5.671384 2.678154 2.756923 1.496615 5.395693 3.229539 2.599385 1.732923 5.04123 3.741538 2.441846 1.969231 4.647385 4.214154 2.205538 2.205538 4.214154 4.647385 1.969231 2.441846 3.741538 5.04123 1.732923 2.638769 3.229539 5.395693 1.496615 2.756923 2.678154 5.671384 1.181538 2.914462 2.126769 5.907693 0.905846 3.032615 1.536 6.104615 0.590769 3.072 0.905846 6.222769t0.315077 6.262154q0 3.150769-0.315077 6.301538-0.315077 3.111385-0.905846 6.183385-0.630154 3.072-1.536 6.104615-0.905846 2.993231-2.126769 5.907693-1.181538 2.914462-2.678154 5.671384-1.496615 2.756923-3.229539 5.395693-1.732923 2.599385-3.741538 5.04123-1.969231 2.441846-4.214154 4.647385-2.205538 2.205538-4.647385 4.214154-2.441846 1.969231-5.04123 3.741538-2.638769 1.732923-5.395693 3.229539-2.756923 1.496615-5.671384 2.678154-2.914462 1.181538-5.907693 2.126769-3.032615 0.905846-6.104615 1.536-3.072 0.590769-6.222769 0.905846T512 832z" p-id="11459" fill="#555555"></path></svg>`;
20101
- // 链接
20102
20094
  const linkSVG = `<svg t="1756107950494" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11245" width="18" height="18" style="padding:1px"><path d="M292.693333 564.906667L123.477333 395.648q-55.296-55.338667-54.272-134.4 1.066667-78.336 57.088-134.357333Q182.186667 70.912 260.608 69.845333q79.061333-1.066667 134.4 54.272l194.944 194.986667a40.533333 40.533333 0 0 1 0.938667 0.938667q54.4 55.04 53.333333 133.461333-1.066667 78.336-57.045333 134.357333a42.666667 42.666667 0 1 1-60.330667-60.330666q31.445333-31.488 32.042667-75.178667 0.597333-43.050667-29.269334-72.874667a44.458667 44.458667 0 0 1-0.853333-0.896l-194.133333-194.133333q-72.618667-72.618667-148.053334 2.773333-31.488 31.488-32.085333 75.178667-0.554667 43.050667 29.269333 72.874667l169.258667 169.301333a42.666667 42.666667 0 1 1-60.288 60.330667z m202.538667-69.674667a42.666667 42.666667 0 0 0-60.330667-60.373333q-55.978667 56.021333-57.045333 134.4-1.066667 79.018667 54.272 134.357333a40.362667 40.362667 0 0 0 0.981333 0.938667l1.706667 1.877333 194.986667 194.986667q55.338667 55.296 134.4 54.229333 78.336-1.066667 134.357333-57.045333 55.978667-56.021333 57.045333-134.4 1.066667-79.018667-54.272-134.357334l-169.258666-169.258666a42.666667 42.666667 0 1 0-60.373334 60.330666l169.301334 169.301334q29.866667 29.866667 29.269333 72.874666-0.597333 43.690667-32.042667 75.178667-31.488 31.445333-75.178666 32.042667-43.050667 0.597333-72.874667-29.269334l-194.986667-194.986666a39.68 39.68 0 0 0-0.981333-0.938667 43.52 43.52 0 0 0-1.749333-1.834667q-29.866667-29.866667-29.269334-72.917333 0.554667-43.690667 32.042667-75.136z" p-id="11246" fill="#555555"></path></svg>`;
20103
- // 撤销
20104
20095
  const undoSVG = `<svg t="1756107888940" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10819" width="18" height="18"><path d="M220.086857 374.893714l102.473143 102.473143c10.605714 10.642286 28.818286 3.108571 28.818286-11.922286v-77.275428h261.851428l8.009143 0.146286c98.048 3.364571 169.216 68.754286 169.216 160.182857 0 93.952-75.044571 160.365714-177.225143 160.365714H241.883429l-3.437715 0.256a25.307429 25.307429 0 0 0 3.437715 50.395429h371.346285l8.374857-0.146286c124.708571-3.657143 219.501714-90.148571 219.501715-210.834286 0-123.392-99.035429-211.017143-227.876572-211.017143h-261.851428V260.498286a16.896 16.896 0 0 0-28.818286-11.922286L220.086857 351.049143a16.896 16.896 0 0 0 0 23.844571z" p-id="10820" fill="#555555"></path></svg>`;
20105
- // 重做
20106
20096
  const redoSVG = `<svg t="1756107908999" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11032" width="18" height="18"><path d="M836.205714 374.893714l-102.473143 102.473143a16.896 16.896 0 0 1-28.818285-11.922286v-77.275428h-261.851429l-8.045714 0.146286c-98.011429 3.364571-169.179429 68.754286-169.179429 160.182857 0 93.952 75.044571 160.365714 177.225143 160.365714h371.346286l3.437714 0.256a25.307429 25.307429 0 0 1-3.437714 50.395429H443.062857l-8.374857-0.146286c-124.708571-3.657143-219.501714-90.148571-219.501714-210.834286 0-123.392 99.035429-211.017143 227.84-211.017143h261.888V260.498286c0-15.030857 18.176-22.564571 28.818285-11.922286l102.473143 102.473143c6.582857 6.582857 6.582857 17.261714 0 23.844571z" p-id="11033" fill="#555555"></path></svg>`;
20107
- // 图片识别
20108
20097
  const ocrSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M3.0000245140625,2.6000244140625L5.5000243140625,2.6000244140625C5.8313951140625,2.6000244140625,6.1000242140625,2.3313953240625,6.1000242140625,2.0000244340625C6.1000242140625,1.6686535440624999,5.8313951140625,1.4000244140625,5.5000243140625,1.4000244140625L3.0000245140625,1.4000244140625Q2.3372827740625,1.4000244140625,1.8686535940625,1.8686535940625Q1.4000244140625,2.3372827740625,1.4000244140625,3.0000245140625L1.4000244140625,5.5000243140625C1.4000244140625,5.8313951140625,1.6686535440624999,6.1000242140625,2.0000244340625,6.1000242140625C2.3313953240625,6.1000242140625,2.6000244140625,5.8313951140625,2.6000244140625,5.5000243140625L2.6000244140625,3.0000245140625Q2.6000244140625,2.6000244140625,3.0000245140625,2.6000244140625ZM12.5000244140625,1.4000244140625L15.0000244140625,1.4000244140625Q15.6627664140625,1.4000244140625,16.1313954140625,1.8686538940625Q16.6000244140625,2.3372834940625,16.6000244140625,3.0000245140625L16.6000244140625,5.5000243140625C16.6000244140625,5.6591539140625,16.5368104140625,5.8117661140625,16.424288414062502,5.9242883140625C16.3117674140625,6.0368099140625,16.1591544140625,6.1000242140625,16.0000244140625,6.1000242140625C15.6686534140625,6.1000242140625,15.4000244140625,5.8313951140625,15.4000244140625,5.5000243140625L15.4000234140625,3.0000245140625Q15.4000234140625,2.6000244140625,15.0000244140625,2.6000244140625L12.5000244140625,2.6000244140625C12.1686534140625,2.6000244140625,11.9000244140625,2.3313953240625,11.9000244140625,2.0000244340625C11.9000244140625,1.6686535440624999,12.1686534140625,1.4000244140625,12.5000244140625,1.4000244140625ZM8.6239776140625,6.4719930140625C8.5439777140625,6.1512432140625,8.3999777140625,5.7421179140625,8.2479777140625,5.4212432140625L9.4959774140625,5.052368214062501C9.6959782140625,5.4293680140625,9.9199772140625,5.9346180140625,9.9999771140625,6.2714929140625L9.3519778140625,6.4719930140625L12.7119784140625,6.4719930140625L12.7119784140625,7.6079931140625L11.5039774140625,7.6079931140625C11.1279774140625,8.6968679140625,10.6159782140625,9.6014929140625,9.9599781140625,10.3461180140625C10.7599773140625,10.9224930140625,11.7279774140625,11.3468685140625,12.8879774140625,11.6029934140625C12.6239774140625,11.8592434140625,12.2799774140625,12.3716184140625,12.1039784140625,12.6918684140625C10.8719778140625,12.3716184140625,9.8719778140625,11.8752434140625,9.0479779140625,11.2107429140625C8.175977714062501,11.8992434140625,7.1199779140625,12.4036184140625,5.8559775140625,12.7558684140625C5.7279777140625,12.4757434140625,5.3759775140625,11.9312434140625,5.1519775140625,11.6591184140625C6.3759775140625,11.3868685140625,7.3839779140625,10.9706182140625,8.1839781140625,10.3781185140625C7.5199776140625,9.6094932140625,7.0079775140625,8.6888685140625,6.5919776140625,7.6079931140625L5.3279776140625,7.6079931140625L5.3279776140625,6.4719930140625L8.6239776140625,6.4719930140625ZM7.7999778140625,7.6079931140625C8.1119776140625,8.344617814062499,8.5359778140625,9.0011186140625,9.0719776140625,9.5694933140625C9.5439777140625,9.0251179140625,9.9199772140625,8.3766184140625,10.1919784140625,7.6079931140625L7.7999778140625,7.6079931140625ZM2.6000244140625,12.5000244140625L2.6000244140625,15.0000244140625Q2.6000244140625,15.4000234140625,3.0000245140625,15.4000234140625L5.5000243140625,15.4000234140625C5.8313951140625,15.4000244140625,6.1000242140625,15.6686534140625,6.1000242140625,16.0000244140625C6.1000242140625,16.3313964140625,5.8313951140625,16.6000254140625,5.5000243140625,16.6000254140625L5.4989548140625,16.6000244140625L3.0000245140625,16.6000244140625Q2.3372834940625,16.6000244140625,1.8686538940625,16.1313954140625Q1.4000244140625,15.6627664140625,1.4000244140625,15.0000244140625L1.4000244140625,12.5000244140625C1.4000244140625,12.1686534140625,1.6686535440624999,11.9000244140625,2.0000244340625,11.9000244140625C2.3313953240625,11.9000244140625,2.6000244140625,12.1686534140625,2.6000244140625,12.5000244140625ZM16.6000244140625,12.5010944140625L16.6000244140625,15.0000244140625Q16.6000244140625,15.6627654140625,16.1313954140625,16.1313954140625Q15.6627654140625,16.6000244140625,15.0000244140625,16.6000244140625L12.5000244140625,16.6000244140625C12.3408944140625,16.6000244140625,12.1882824140625,16.5368104140625,12.0757594140625,16.424288414062502C11.9632384140625,16.3117664140625,11.9000244140625,16.1591544140625,11.9000244140625,16.0000244140625C11.9000244140625,15.6686534140625,12.1686534140625,15.4000244140625,12.5000244140625,15.4000244140625L15.0000244140625,15.4000234140625Q15.4000234140625,15.4000234140625,15.4000234140625,15.0000244140625L15.4000234140625,12.5000244140625C15.4000244140625,12.1686534140625,15.6686534140625,11.9000244140625,16.0000244140625,11.9000244140625C16.3313964140625,11.9000244140625,16.6000254140625,12.1686534140625,16.6000254140625,12.5000244140625L16.6000244140625,12.5010944140625Z" fill-rule="evenodd" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20109
- // 数学公式
20110
20098
  const mathSVG = `<svg t="1756107836493" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10608" width="18" height="18"><path d="M877.454222 856.177778q4.835556-4.835556 7.395556-11.093334 2.616889-6.257778 2.616889-13.084444 0-3.413333-0.625778-6.656-0.682667-3.299556-1.991111-6.428444-1.251556-3.072-3.128889-5.859556-1.877333-2.844444-4.266667-5.176889-2.332444-2.389333-5.12-4.266667-2.844444-1.877333-5.916444-3.128888-3.128889-1.308444-6.428445-1.934223-3.299556-0.682667-6.656-0.682666-6.826667 0-13.084444 2.616889-6.257778 2.56-11.036445 7.395555l-54.044444 53.987556H253.155556l325.688888-325.745778q2.389333-2.389333 4.266667-5.12 1.877333-2.844444 3.128889-5.916445 1.308444-3.128889 1.934222-6.428444 0.682667-3.299556 0.682667-6.656 0-3.413333-0.682667-6.656-0.625778-3.299556-1.934222-6.428444-1.251556-3.072-3.128889-5.859556-1.877333-2.844444-4.266667-5.176889L253.155556 162.133333h522.126222l53.930666 53.987556q4.835556 4.835556 11.093334 7.395555 6.257778 2.616889 13.084444 2.616889 3.413333 0 6.656-0.682666 3.299556-0.625778 6.428445-1.934223 3.072-1.251556 5.859555-3.128888 2.844444-1.877333 5.176889-4.266667 2.389333-2.389333 4.266667-5.12 1.877333-2.844444 3.128889-5.916445 1.308444-3.128889 1.934222-6.428444 0.682667-3.299556 0.682667-6.656 0-6.826667-2.616889-13.084444-2.56-6.257778-7.395556-11.036445l-64-64q-4.778667-4.835556-11.036444-7.395555-6.257778-2.616889-13.084445-2.616889H170.666667q-6.826667 0-13.084445 2.616889-6.257778 2.56-11.036444 7.395555-2.389333 2.389333-4.266667 5.12-1.877333 2.844444-3.128889 5.916445-1.308444 3.128889-1.934222 6.428444-0.682667 3.299556-0.682667 6.656 0 3.413333 0.682667 6.656 0.625778 3.299556 1.934222 6.428444 1.251556 3.072 3.128889 5.859556 1.877333 2.844444 4.266667 5.176889L506.311111 512l-359.822222 359.879111q-4.835556 4.778667-7.395556 11.036445-2.616889 6.257778-2.616889 13.084444 0 3.413333 0.682667 6.656 0.625778 3.299556 1.934222 6.428444 1.251556 3.072 3.128889 5.859556 1.877333 2.844444 4.266667 5.176889 2.389333 2.389333 5.12 4.266667 2.844444 1.877333 5.916444 3.128888 3.128889 1.308444 6.428445 1.991112 3.299556 0.625778 6.656 0.625777h618.666666q6.826667 0 13.084445-2.616889 6.257778-2.56 11.036444-7.395555l64-63.943111z" p-id="10609" fill="#555555"></path></svg>`;
20111
- // 图片
20112
20099
  const imageSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M1.87471507,3.83578219Q1.5,4.18540478,1.5,4.6875L1.5,14.312503Q1.50000006,14.814598,1.874716,15.16422Q2.23459671,15.5,2.73684216,15.5L15.263157,15.5Q15.765403,15.5,16.125284,15.164218Q16.499999000000003,14.814597,16.499999000000003,14.312501L16.499999000000003,4.6875Q16.499999000000003,4.18540342,16.125284999999998,3.83578214Q15.765404,3.5,15.263157,3.5L2.73684216,3.5Q2.23459646,3.5,1.87471507,3.83578219ZM2.5,14.312503L2.5,4.6875Q2.5,4.5,2.73684216,4.5L15.263157,4.5Q15.5,4.5,15.5,4.6875L15.5,14.312501Q15.5,14.5,15.263157,14.5L2.73684216,14.5Q2.5,14.5,2.5,14.312503Z" fill-rule="evenodd" fill="#555555" fill-opacity="1" style="mix-blend-mode:passthrough"/></g><g><ellipse cx="5.4375" cy="7.4375" rx="0.4375" ry="0.4375" fill-opacity="0" stroke-opacity="1" stroke="#555555" fill="none" stroke-width="1" stroke-linecap="ROUND" stroke-linejoin="round" style="mix-blend-mode:passthrough"/></g><g><path d="M5.9053998,9.924615948146972L1.7143693,12.841608238146973Q1.61364189,12.911715538146973,1.55682093,13.020492338146973Q1.5,13.129269138146974,1.5,13.251992238146972L1.50000003,14.418008338146972Q1.50000003,14.876594038146973,1.84130602,15.195924738146973Q2.16843581,15.501991738146973,2.62437022,15.501991738146973L15.375628,15.501991738146973Q15.831564,15.501991738146973,16.158693,15.195924738146973Q16.5,14.876594038146973,16.5,14.418007838146973L16.5,13.251992238146972Q16.500000999999997,13.186988838146974,16.48338,13.124146438146973Q16.466759,13.061303638146972,16.434621,13.004799838146972Q16.402485,12.948296338146973,16.356969,12.901887938146972Q16.311453,12.855479738146972,16.255583,12.822251838146972L9.8796926,9.030259398146972Q9.842938400000001,9.008400078146973,9.8030057,8.993099628146974Q9.763073,8.977799118146972,9.721121799999999,8.969501908146972Q9.6791716,8.961204618146972,9.6364217,8.960151608146973Q9.5936708,8.959098578146973,9.551362000000001,8.965320438146973Q9.5090542,8.971542238146972,9.4684162,8.984858218146973Q9.427778199999999,8.998174158146973,9.3899918,9.018197478146973Q9.352206200000001,9.038220708146973,9.3183689,9.064369648146972Q9.284532500000001,9.090518598146973,9.2556267,9.122033748146972L7.6887164,10.830422738146973L6.4904227,9.934544588146972Q6.4273362,9.887379288146972,6.3528042,9.861893948146973Q6.2782726,9.836408678146972,6.1995153,9.835072038146972Q6.1207581,9.833735408146973,6.045404,9.856676968146973Q5.9700503000000005,9.879618528146972,5.9053998,9.924615948146972ZM2.5,13.513173138146973L2.50000006,14.418008338146972Q2.50000006,14.501992238146972,2.62437022,14.501992238146972L15.375628,14.501992238146972Q15.5,14.501992238146972,15.5,14.418007838146973L15.5,13.536368338146973L9.7178593,10.097503488146973L8.1200023,11.839632738146973Q8.0888524,11.873595438146973,8.052019600000001,11.901292338146973Q8.0151863,11.928988938146972,7.9739118,11.949486538146973Q7.9326363,11.969984038146972,7.88831,11.982591638146973Q7.8439837,11.995199238146974,7.7980995,11.999492138146973Q7.7522154,12.003785338146972,7.7063198,11.999619238146973Q7.6604242,11.995453338146973,7.6160631,11.982968338146973Q7.571702,11.970483338146973,7.5303702,11.950099938146973Q7.4890385,11.929716538146973,7.4521289,11.902122038146972L6.1805682,10.951467238146973L2.5,13.513173138146973Z" fill-rule="evenodd" fill="#555555" fill-opacity="1" style="mix-blend-mode:passthrough"/></g></g></svg>`;
20113
20100
 
20114
20101
  const QuillEditor = vue.defineComponent({
20115
20102
  name: 'QuillEditor',
20116
20103
  inheritAttrs: false,
20117
20104
  props: {
20118
- /**
20119
- * 编辑器的key(唯一值)
20120
- * 如果页面上存在多个needCollapse为true的编辑器的话必须传递
20121
- * 为什么需要传? 因为needCollapse为true的时候,初始化toolbar需要用到id,如果id相同,则toolbar会互相影响
20122
- */
20123
20105
  editorKey: {
20124
20106
  type: [String, Number],
20125
20107
  },
20126
- /**
20127
- * 编辑器内容
20128
- * 支持多种格式:字符串(HTML)、Delta对象、或undefined/null
20129
- * 当传入内容时,编辑器会显示对应的内容
20130
- */
20131
20108
  content: {
20132
20109
  type: [String, Object],
20133
20110
  },
20134
- /**
20135
- * 内容类型
20136
- * - 'delta': 使用Quill的Delta格式(默认)
20137
- * - 'html': 使用HTML字符串格式
20138
- * - 'text': 使用纯文本格式
20139
- * 影响内容的输入输出格式
20140
- */
20141
20111
  contentType: {
20142
20112
  type: String,
20143
20113
  default: 'delta',
@@ -20145,41 +20115,19 @@
20145
20115
  return ['delta', 'html', 'text'].includes(value);
20146
20116
  },
20147
20117
  },
20148
- /**
20149
- * 是否启用编辑器
20150
- * true: 编辑器可编辑(默认)
20151
- * false: 编辑器禁用,不可编辑
20152
- */
20153
20118
  enable: {
20154
20119
  type: Boolean,
20155
20120
  default: true,
20156
20121
  },
20157
- /**
20158
- * 是否只读模式
20159
- * true: 编辑器只读,不可编辑
20160
- * false: 编辑器可编辑(默认)
20161
- * 与enable的区别:readOnly只是禁止编辑,enable是禁用整个编辑器
20162
- */
20163
20122
  readOnly: {
20164
20123
  type: Boolean,
20165
20124
  default: false,
20166
20125
  },
20167
- /**
20168
- * 占位符文本
20169
- * 当编辑器内容为空时显示的提示文字
20170
- * 默认显示"请输入内容"
20171
- */
20172
20126
  placeholder: {
20173
20127
  type: String,
20174
20128
  required: false,
20175
20129
  default: "请输入内容"
20176
20130
  },
20177
- /**
20178
- * 工具栏模式
20179
- * - 'fixed-top': 工具栏固定在顶部,不随内容滚动
20180
- * - 'embedded': 工具栏嵌入在编辑器中,随内容滚动(默认)
20181
- * 影响工具栏的定位和滚动行为
20182
- */
20183
20131
  toolbarMode: {
20184
20132
  type: String,
20185
20133
  default: "embedded",
@@ -20187,44 +20135,20 @@
20187
20135
  return ['fixed-top', 'embedded'].includes(value);
20188
20136
  },
20189
20137
  },
20190
- /**
20191
- * 是否需要折叠工具栏
20192
- * true: 显示折叠工具栏,点击"更多"展开(默认)
20193
- * false: 显示完整工具栏,不折叠
20194
- * 影响工具栏的显示方式
20195
- */
20196
20138
  needCollapse: {
20197
20139
  type: Boolean,
20198
20140
  default: false,
20199
20141
  },
20200
- /**
20201
- * 工具栏自定义样式
20202
- * 传入CSS样式对象,会应用到工具栏容器上
20203
- * 例如:{ 'background-color': '#f0f0f0', 'border-radius': '8px' }
20204
- * 为了让编辑器的toolbar的样式更灵活,支持所有CSS属性
20205
- */
20206
20142
  toolbarStyle: {
20207
20143
  type: Object,
20208
20144
  required: false,
20209
20145
  default: () => ({})
20210
20146
  },
20211
- /**
20212
- * 编辑器内容区域自定义样式
20213
- * 传入CSS样式对象,会应用到编辑器内容区域(.ql-editor)上
20214
- * 例如:{ 'font-size': '16px', 'line-height': '1.6' }
20215
- * 为了让编辑器的输入部分的样式更灵活,支持所有CSS属性
20216
- */
20217
20147
  editorStyle: {
20218
20148
  type: Object,
20219
20149
  required: false,
20220
20150
  default: () => ({})
20221
20151
  },
20222
- /**
20223
- * Quill模块配置
20224
- * 支持单个模块或模块数组
20225
- * 每个模块包含:name(模块名)、module(模块对象)、options(模块选项)
20226
- * 默认包含blotFormatter模块,用于图片拖拽调整
20227
- */
20228
20152
  modules: {
20229
20153
  type: Object,
20230
20154
  required: false,
@@ -20235,21 +20159,10 @@
20235
20159
  };
20236
20160
  },
20237
20161
  },
20238
- /**
20239
- * 编辑器选项配置
20240
- * 传入QuillOptionsStatic对象,用于配置编辑器的各种选项
20241
- * 这些选项会与默认选项合并,优先级高于默认选项
20242
- */
20243
20162
  options: {
20244
20163
  type: Object,
20245
20164
  required: false,
20246
20165
  },
20247
- /**
20248
- * 全局选项配置
20249
- * 传入QuillOptionsStatic对象,用于配置编辑器的全局选项
20250
- * 这些选项会与默认选项合并,优先级最低
20251
- * 通常用于设置全局默认值
20252
- */
20253
20166
  globalOptions: {
20254
20167
  type: Object,
20255
20168
  required: false,
@@ -20271,7 +20184,12 @@
20271
20184
  vue.onMounted(() => {
20272
20185
  initialize();
20273
20186
  });
20187
+ const removeQuillBlotFormatter = () => {
20188
+ const overlay = quill === null || quill === void 0 ? void 0 : quill.getModule('blotFormatter').overlay;
20189
+ overlay.remove();
20190
+ };
20274
20191
  vue.onBeforeUnmount(() => {
20192
+ removeQuillBlotFormatter();
20275
20193
  quill = null;
20276
20194
  });
20277
20195
  let quill;
@@ -20286,7 +20204,6 @@
20286
20204
  'no-collapse': !props.needCollapse,
20287
20205
  };
20288
20206
  });
20289
- // 应用自定义toolbar样式,目前通过改dom的形式,因为h函数没有暴露更深的dom,无法绑定真正的toolbar
20290
20207
  const applyToolbarStyle = () => {
20291
20208
  var _a;
20292
20209
  if (quill && props.toolbarStyle) {
@@ -20296,7 +20213,6 @@
20296
20213
  }
20297
20214
  }
20298
20215
  };
20299
- // 应用自定义editor样式,目前通过改dom的形式,因为h函数没有暴露更深的dom,无法绑定真正的editor
20300
20216
  const applyEditorStyle = () => {
20301
20217
  var _a;
20302
20218
  if (quill && props.editorStyle) {
@@ -20323,13 +20239,11 @@
20323
20239
  if (!editor.value)
20324
20240
  return;
20325
20241
  quill = new Quill(editor.value, options);
20326
- // 初始隐藏toolbar
20327
20242
  const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20328
20243
  if (toolbar) {
20329
20244
  toolbar.style.display = 'none';
20330
20245
  }
20331
20246
  const icons = Quill.import('ui/icons');
20332
- // 因为设计稿的图标样式和quill的图标样式不一致,所以需要手动替换
20333
20247
  icons['bold'] = boldSVG;
20334
20248
  icons['italic'] = italicSVG;
20335
20249
  icons['underline'] = underlineSVG;
@@ -20362,7 +20276,6 @@
20362
20276
  });
20363
20277
  ctx.emit('ready', quill);
20364
20278
  };
20365
- // Compose Options
20366
20279
  const composeOptions = () => {
20367
20280
  const clientOptions = {};
20368
20281
  clientOptions.theme = 'snow';
@@ -20378,7 +20291,6 @@
20378
20291
  else {
20379
20292
  clientOptions.modules = {
20380
20293
  toolbar: {
20381
- // 需要展开的话显示完整的工具栏
20382
20294
  container: [
20383
20295
  ...toolbarOptions.full,
20384
20296
  ],
@@ -20392,11 +20304,9 @@
20392
20304
  (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('history')) === null || _a === void 0 ? void 0 : _a.undo();
20393
20305
  },
20394
20306
  ocr: function () {
20395
- // 按钮点击逻辑
20396
20307
  ctx.emit('ocr');
20397
20308
  },
20398
20309
  math: function () {
20399
- // 按钮点击逻辑
20400
20310
  ctx.emit('math');
20401
20311
  },
20402
20312
  more: function () {
@@ -20436,7 +20346,6 @@
20436
20346
  if (against === internalModel) {
20437
20347
  return true;
20438
20348
  }
20439
- // Ref/Proxy does not support instanceof, so do a loose check
20440
20349
  if (typeof against === 'object' &&
20441
20350
  against &&
20442
20351
  typeof internalModel === 'object' &&
@@ -20448,7 +20357,6 @@
20448
20357
  };
20449
20358
  const handleTextChange = (delta, oldContents, source) => {
20450
20359
  internalModel = maybeClone(getContents());
20451
- // 因为默认是<p><br></p>,影响element-ui的表单验证,所以默认设为空,有值才显示<p>内容</p>
20452
20360
  if (props.contentType === 'html') {
20453
20361
  const html = getHTML();
20454
20362
  if (html === '' || html === '<p><br></p>' || html === '<p></p>') {
@@ -20464,7 +20372,6 @@
20464
20372
  const handleSelectionChange = (range, oldRange, source) => {
20465
20373
  var _a;
20466
20374
  isEditorFocus.value = !!(quill === null || quill === void 0 ? void 0 : quill.hasFocus());
20467
- // 动态显示/隐藏toolbar
20468
20375
  const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20469
20376
  if (toolbar) {
20470
20377
  if (isEditorFocus.value) {
@@ -20530,7 +20437,6 @@
20530
20437
  : ''
20531
20438
  : content;
20532
20439
  if (props.contentType === 'html') {
20533
- // 对于空内容,直接清空编辑器,不插入默认结构
20534
20440
  if (!normalizedContent || normalizedContent === '') {
20535
20441
  if (quill) {
20536
20442
  quill.root.innerHTML = '';
@@ -20558,7 +20464,6 @@
20558
20464
  const getHTML = () => {
20559
20465
  var _a;
20560
20466
  const html = (_a = quill === null || quill === void 0 ? void 0 : quill.root.innerHTML) !== null && _a !== void 0 ? _a : '';
20561
- // 如果内容是默认的空段落结构,返回空字符串
20562
20467
  if (html === '<p><br></p>' || html === '<p></p>') {
20563
20468
  return '';
20564
20469
  }
@@ -20601,7 +20506,6 @@
20601
20506
  ctx.emit('math');
20602
20507
  }
20603
20508
  else if (tool === 'more') {
20604
- // 处理更多按钮点击
20605
20509
  showMoreToolbar.value = !showMoreToolbar.value;
20606
20510
  }
20607
20511
  };
@@ -20634,13 +20538,12 @@
20634
20538
  reinit,
20635
20539
  editorWrapClass,
20636
20540
  showMoreToolbar,
20637
- moreToolbarToolClick
20541
+ moreToolbarToolClick,
20638
20542
  };
20639
20543
  },
20640
20544
  render() {
20641
20545
  return [
20642
20546
  vue.h('div', { class: this.editorWrapClass }, [
20643
- // 当 needCollapse 为 false 时,显示 MoreToolbar 组件
20644
20547
  this.$props.needCollapse && this.$props.editorKey && vue.h(MoreToolbar, {
20645
20548
  editorKey: String(this.$props.editorKey),
20646
20549
  needCollapse: this.needCollapse,