UNPKG

594 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define([], factory);
6 else if(typeof exports === 'object')
7 exports["wangEditor"] = factory();
8 else
9 root["wangEditor"] = factory();
10})(window, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ }
51/******/ };
52/******/
53/******/ // define __esModule on exports
54/******/ __webpack_require__.r = function(exports) {
55/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ }
58/******/ Object.defineProperty(exports, '__esModule', { value: true });
59/******/ };
60/******/
61/******/ // create a fake namespace object
62/******/ // mode & 1: value is a module id, require it
63/******/ // mode & 2: merge all properties of value into the ns
64/******/ // mode & 4: return value when already ns object
65/******/ // mode & 8|1: behave like require
66/******/ __webpack_require__.t = function(value, mode) {
67/******/ if(mode & 1) value = __webpack_require__(value);
68/******/ if(mode & 8) return value;
69/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ var ns = Object.create(null);
71/******/ __webpack_require__.r(ns);
72/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ return ns;
75/******/ };
76/******/
77/******/ // getDefaultExport function for compatibility with non-harmony modules
78/******/ __webpack_require__.n = function(module) {
79/******/ var getter = module && module.__esModule ?
80/******/ function getDefault() { return module['default']; } :
81/******/ function getModuleExports() { return module; };
82/******/ __webpack_require__.d(getter, 'a', getter);
83/******/ return getter;
84/******/ };
85/******/
86/******/ // Object.prototype.hasOwnProperty.call
87/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ // __webpack_public_path__
90/******/ __webpack_require__.p = "";
91/******/
92/******/
93/******/ // Load entry module and return exports
94/******/ return __webpack_require__(__webpack_require__.s = 127);
95/******/ })
96/************************************************************************/
97/******/ ([
98/* 0 */
99/***/ (function(module, exports) {
100
101function _interopRequireDefault(obj) {
102 return obj && obj.__esModule ? obj : {
103 "default": obj
104 };
105}
106
107module.exports = _interopRequireDefault;
108
109/***/ }),
110/* 1 */
111/***/ (function(module, exports, __webpack_require__) {
112
113module.exports = __webpack_require__(128);
114
115/***/ }),
116/* 2 */
117/***/ (function(module, exports, __webpack_require__) {
118
119"use strict";
120
121/**
122 * @description 封装 DOM 操作
123 * @wangfupeng
124 */
125
126var _interopRequireDefault = __webpack_require__(0);
127
128var _bind = _interopRequireDefault(__webpack_require__(86));
129
130var _includes = _interopRequireDefault(__webpack_require__(111));
131
132var _filter = _interopRequireDefault(__webpack_require__(87));
133
134var _splice = _interopRequireDefault(__webpack_require__(88));
135
136var _indexOf = _interopRequireDefault(__webpack_require__(53));
137
138var _map = _interopRequireDefault(__webpack_require__(112));
139
140var _trim = _interopRequireDefault(__webpack_require__(21));
141
142var _map2 = _interopRequireDefault(__webpack_require__(28));
143
144var _forEach = _interopRequireDefault(__webpack_require__(6));
145
146var _isArray = _interopRequireDefault(__webpack_require__(116));
147
148var _defineProperty = _interopRequireDefault(__webpack_require__(1));
149
150var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
151 for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
152 s += arguments[i].length;
153 }
154
155 for (var r = Array(s), k = 0, i = 0; i < il; i++) {
156 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
157 r[k] = a[j];
158 }
159 }
160
161 return r;
162};
163
164(0, _defineProperty["default"])(exports, "__esModule", {
165 value: true
166});
167exports.DomElement = void 0;
168
169var util_1 = __webpack_require__(7);
170
171var AGENT_EVENTS = [];
172/**
173 * 根据 html 字符串创建 elem
174 * @param {String} html html
175 */
176
177function _createElemByHTML(html) {
178 var div = document.createElement('div');
179 div.innerHTML = html;
180 var elems = div.children;
181 return util_1.toArray(elems);
182}
183/**
184 * 判断是否是 DOM List
185 * @param selector DOM 元素或列表
186 */
187
188
189function _isDOMList(selector) {
190 if (!selector) {
191 return false;
192 }
193
194 if (selector instanceof HTMLCollection || selector instanceof NodeList) {
195 return true;
196 }
197
198 return false;
199}
200/**
201 * 封装 querySelectorAll
202 * @param selector css 选择器
203 */
204
205
206function _querySelectorAll(selector) {
207 var elems = document.querySelectorAll(selector);
208 return util_1.toArray(elems);
209}
210/**
211 * 封装 _styleArrTrim
212 * @param styleArr css
213 */
214
215
216function _styleArrTrim(style) {
217 var styleArr = [];
218 var resultArr = [];
219
220 if (!(0, _isArray["default"])(style)) {
221 // 有 style,将 style 按照 `;` 拆分为数组
222 styleArr = style.split(';');
223 } else {
224 styleArr = style;
225 }
226
227 (0, _forEach["default"])(styleArr).call(styleArr, function (item) {
228 var _context;
229
230 // 对每项样式,按照 : 拆分为 key 和 value
231 var arr = (0, _map2["default"])(_context = item.split(':')).call(_context, function (i) {
232 return (0, _trim["default"])(i).call(i);
233 });
234
235 if (arr.length === 2) {
236 resultArr.push(arr[0] + ':' + arr[1]);
237 }
238 });
239 return resultArr;
240} // 构造函数
241
242
243var DomElement =
244/** @class */
245function () {
246 /**
247 * 构造函数
248 * @param selector 任一类型的选择器
249 */
250 function DomElement(selector) {
251 // 初始化属性
252 this.elems = [];
253 this.length = this.elems.length;
254 this.dataSource = new _map["default"]();
255
256 if (!selector) {
257 return;
258 } // 原本就是 DomElement 实例,则直接返回
259
260
261 if (selector instanceof DomElement) {
262 return selector;
263 }
264
265 var selectorResult = []; // 存储查询结果
266
267 var nodeType = selector instanceof Node ? selector.nodeType : -1;
268 this.selector = selector;
269
270 if (nodeType === 1 || nodeType === 9) {
271 selectorResult = [selector];
272 } else if (_isDOMList(selector)) {
273 // DOM List
274 selectorResult = util_1.toArray(selector);
275 } else if (selector instanceof Array) {
276 // Element 数组(其他数据类型,暂时忽略)
277 selectorResult = selector;
278 } else if (typeof selector === 'string') {
279 var _context2;
280
281 // 字符串
282 var tmpSelector = (0, _trim["default"])(_context2 = selector.replace('/\n/mg', '')).call(_context2);
283
284 if ((0, _indexOf["default"])(tmpSelector).call(tmpSelector, '<') === 0) {
285 // 如 <div>
286 selectorResult = _createElemByHTML(tmpSelector);
287 } else {
288 // 如 #id .class
289 selectorResult = _querySelectorAll(tmpSelector);
290 }
291 }
292
293 var length = selectorResult.length;
294
295 if (!length) {
296 // 空数组
297 return this;
298 } // 加入 DOM 节点
299
300
301 var i = 0;
302
303 for (; i < length; i++) {
304 this.elems.push(selectorResult[i]);
305 }
306
307 this.length = length;
308 }
309
310 (0, _defineProperty["default"])(DomElement.prototype, "id", {
311 /**
312 * 获取元素 id
313 */
314 get: function get() {
315 return this.elems[0].id;
316 },
317 enumerable: false,
318 configurable: true
319 });
320 /**
321 * 遍历所有元素,执行回调函数
322 * @param fn 回调函数
323 */
324
325 DomElement.prototype.forEach = function (fn) {
326 for (var i = 0; i < this.length; i++) {
327 var elem = this.elems[i];
328 var result = fn.call(elem, elem, i);
329
330 if (result === false) {
331 break;
332 }
333 }
334
335 return this;
336 };
337 /**
338 * 克隆元素
339 * @param deep 是否深度克隆
340 */
341
342
343 DomElement.prototype.clone = function (deep) {
344 var _context3;
345
346 if (deep === void 0) {
347 deep = false;
348 }
349
350 var cloneList = [];
351 (0, _forEach["default"])(_context3 = this.elems).call(_context3, function (elem) {
352 cloneList.push(elem.cloneNode(!!deep));
353 });
354 return $(cloneList);
355 };
356 /**
357 * 获取第几个元素
358 * @param index index
359 */
360
361
362 DomElement.prototype.get = function (index) {
363 if (index === void 0) {
364 index = 0;
365 }
366
367 var length = this.length;
368
369 if (index >= length) {
370 index = index % length;
371 }
372
373 return $(this.elems[index]);
374 };
375 /**
376 * 获取第一个元素
377 */
378
379
380 DomElement.prototype.first = function () {
381 return this.get(0);
382 };
383 /**
384 * 获取最后一个元素
385 */
386
387
388 DomElement.prototype.last = function () {
389 var length = this.length;
390 return this.get(length - 1);
391 };
392
393 DomElement.prototype.on = function (type, selector, fn) {
394 var _context4;
395
396 if (!type) return this; // 没有 selector ,只有 type 和 fn
397
398 if (typeof selector === 'function') {
399 fn = selector;
400 selector = '';
401 }
402
403 return (0, _forEach["default"])(_context4 = this).call(_context4, function (elem) {
404 // 没有事件代理
405 if (!selector) {
406 // 无代理
407 elem.addEventListener(type, fn);
408 return;
409 } // 有事件代理
410
411
412 var agentFn = function agentFn(e) {
413 var target = e.target;
414
415 if (target.matches(selector)) {
416 ;
417 fn.call(target, e);
418 }
419 };
420
421 elem.addEventListener(type, agentFn); // 缓存代理事件
422
423 AGENT_EVENTS.push({
424 elem: elem,
425 selector: selector,
426 fn: fn,
427 agentFn: agentFn
428 });
429 });
430 };
431
432 DomElement.prototype.off = function (type, selector, fn) {
433 var _context5;
434
435 if (!type) return this; // 没有 selector ,只有 type 和 fn
436
437 if (typeof selector === 'function') {
438 fn = selector;
439 selector = '';
440 }
441
442 return (0, _forEach["default"])(_context5 = this).call(_context5, function (elem) {
443 // 解绑事件代理
444 if (selector) {
445 var idx = -1;
446
447 for (var i = 0; i < AGENT_EVENTS.length; i++) {
448 var item = AGENT_EVENTS[i];
449
450 if (item.selector === selector && item.fn === fn && item.elem === elem) {
451 idx = i;
452 break;
453 }
454 }
455
456 if (idx !== -1) {
457 var agentFn = (0, _splice["default"])(AGENT_EVENTS).call(AGENT_EVENTS, idx, 1)[0].agentFn;
458 elem.removeEventListener(type, agentFn);
459 }
460 } else {
461 // @ts-ignore
462 elem.removeEventListener(type, fn);
463 }
464 });
465 };
466
467 DomElement.prototype.attr = function (key, val) {
468 var _context6;
469
470 if (val == null) {
471 // 获取数据
472 return this.elems[0].getAttribute(key) || '';
473 } // 否则,设置属性
474
475
476 return (0, _forEach["default"])(_context6 = this).call(_context6, function (elem) {
477 elem.setAttribute(key, val);
478 });
479 };
480 /**
481 * 删除 属性
482 * @param key key
483 */
484
485
486 DomElement.prototype.removeAttr = function (key) {
487 var _context7;
488
489 (0, _forEach["default"])(_context7 = this).call(_context7, function (elem) {
490 elem.removeAttribute(key);
491 });
492 };
493 /**
494 * 添加 css class
495 * @param className css class
496 */
497
498
499 DomElement.prototype.addClass = function (className) {
500 var _context8;
501
502 if (!className) {
503 return this;
504 }
505
506 return (0, _forEach["default"])(_context8 = this).call(_context8, function (elem) {
507 if (elem.className) {
508 // 当前有 class
509 var arr = elem.className.split(/\s/);
510 arr = (0, _filter["default"])(arr).call(arr, function (item) {
511 return !!(0, _trim["default"])(item).call(item);
512 }); // 添加 class
513
514 if ((0, _indexOf["default"])(arr).call(arr, className) < 0) {
515 arr.push(className);
516 } // 修改 elem.class
517
518
519 elem.className = arr.join(' ');
520 } else {
521 // 当前没有 class
522 elem.className = className;
523 }
524 });
525 };
526 /**
527 * 添加 css class
528 * @param className css class
529 */
530
531
532 DomElement.prototype.removeClass = function (className) {
533 var _context9;
534
535 if (!className) {
536 return this;
537 }
538
539 return (0, _forEach["default"])(_context9 = this).call(_context9, function (elem) {
540 if (!elem.className) {
541 // 当前无 class
542 return;
543 }
544
545 var arr = elem.className.split(/\s/);
546 arr = (0, _filter["default"])(arr).call(arr, function (item) {
547 item = (0, _trim["default"])(item).call(item); // 删除 class
548
549 if (!item || item === className) {
550 return false;
551 }
552
553 return true;
554 }); // 修改 elem.class
555
556 elem.className = arr.join(' ');
557 });
558 };
559 /**
560 * 是否有传入的 css class
561 * @param className css class
562 */
563
564
565 DomElement.prototype.hasClass = function (className) {
566 if (!className) {
567 return false;
568 }
569
570 var elem = this.elems[0];
571
572 if (!elem.className) {
573 // 当前无 class
574 return false;
575 }
576
577 var arr = elem.className.split(/\s/);
578 return (0, _includes["default"])(arr).call(arr, className); // 是否包含
579 };
580 /**
581 * 修改 css
582 * @param key css key
583 * @param val css value
584 */
585 // css(key: string): string
586
587
588 DomElement.prototype.css = function (key, val) {
589 var _context10;
590
591 var currentStyle;
592
593 if (val == '') {
594 currentStyle = '';
595 } else {
596 currentStyle = key + ":" + val + ";";
597 }
598
599 return (0, _forEach["default"])(_context10 = this).call(_context10, function (elem) {
600 var _context11;
601
602 var style = (0, _trim["default"])(_context11 = elem.getAttribute('style') || '').call(_context11);
603
604 if (style) {
605 // 有 style,将 style 按照 `;` 拆分为数组
606 var resultArr = _styleArrTrim(style); // 替换现有的 style
607
608
609 resultArr = (0, _map2["default"])(resultArr).call(resultArr, function (item) {
610 if ((0, _indexOf["default"])(item).call(item, key) === 0) {
611 return currentStyle;
612 } else {
613 return item;
614 }
615 }); // 新增 style
616
617 if (currentStyle != '' && (0, _indexOf["default"])(resultArr).call(resultArr, currentStyle) < 0) {
618 resultArr.push(currentStyle);
619 } // 去掉 空白
620
621
622 if (currentStyle == '') {
623 resultArr = _styleArrTrim(resultArr);
624 } // 重新设置 style
625
626
627 elem.setAttribute('style', resultArr.join('; '));
628 } else {
629 // 当前没有 style
630 elem.setAttribute('style', currentStyle);
631 }
632 });
633 };
634 /**
635 * 封装 getBoundingClientRect
636 */
637
638
639 DomElement.prototype.getBoundingClientRect = function () {
640 var elem = this.elems[0];
641 return elem.getBoundingClientRect();
642 };
643 /**
644 * 显示
645 */
646
647
648 DomElement.prototype.show = function () {
649 return this.css('display', 'block');
650 };
651 /**
652 * 隐藏
653 */
654
655
656 DomElement.prototype.hide = function () {
657 return this.css('display', 'none');
658 };
659 /**
660 * 获取子节点(只有 DOM 元素)
661 */
662
663
664 DomElement.prototype.children = function () {
665 var elem = this.elems[0];
666
667 if (!elem) {
668 return null;
669 }
670
671 return $(elem.children);
672 };
673 /**
674 * 获取子节点(包括文本节点)
675 */
676
677
678 DomElement.prototype.childNodes = function () {
679 var elem = this.elems[0];
680
681 if (!elem) {
682 return null;
683 }
684
685 return $(elem.childNodes);
686 };
687 /**
688 * 将子元素全部替换
689 * @param $children 新的child节点
690 */
691
692
693 DomElement.prototype.replaceChildAll = function ($children) {
694 var parent = this.getNode();
695 var elem = this.elems[0];
696
697 while (elem.hasChildNodes()) {
698 parent.firstChild && elem.removeChild(parent.firstChild);
699 }
700
701 this.append($children);
702 };
703 /**
704 * 增加子节点
705 * @param $children 子节点
706 */
707
708
709 DomElement.prototype.append = function ($children) {
710 var _context12;
711
712 return (0, _forEach["default"])(_context12 = this).call(_context12, function (elem) {
713 (0, _forEach["default"])($children).call($children, function (child) {
714 elem.appendChild(child);
715 });
716 });
717 };
718 /**
719 * 移除当前节点
720 */
721
722
723 DomElement.prototype.remove = function () {
724 var _context13;
725
726 return (0, _forEach["default"])(_context13 = this).call(_context13, function (elem) {
727 if (elem.remove) {
728 elem.remove();
729 } else {
730 var parent_1 = elem.parentElement;
731 parent_1 && parent_1.removeChild(elem);
732 }
733 });
734 };
735 /**
736 * 当前元素,是否包含某个子元素
737 * @param $child 子元素
738 */
739
740
741 DomElement.prototype.isContain = function ($child) {
742 var elem = this.elems[0];
743 var child = $child.elems[0];
744 return elem.contains(child);
745 };
746 /**
747 * 获取当前元素的尺寸和位置信息
748 */
749
750
751 DomElement.prototype.getSizeData = function () {
752 var elem = this.elems[0]; // 可得到 bottom height left right top width 的数据
753
754 return elem.getBoundingClientRect();
755 };
756 /**
757 * 获取当前元素 nodeName
758 */
759
760
761 DomElement.prototype.getNodeName = function () {
762 var elem = this.elems[0];
763 return elem.nodeName;
764 };
765 /**
766 * 获取当前元素节点
767 */
768
769
770 DomElement.prototype.getNode = function () {
771 var elem = this.elems[0];
772 return elem;
773 };
774 /**
775 * 获取当前元素可视高度
776 */
777
778
779 DomElement.prototype.getClientHeight = function () {
780 var elem = this.elems[0];
781 return elem.clientHeight;
782 };
783 /**
784 * 获取当前元素可视宽度
785 */
786 // getClientWidth(): number {
787 // const elem = this.elems[0]
788 // return elem.clientWidth
789 // }
790
791 /**
792 * 查询
793 * @param selector css 选择器
794 */
795
796
797 DomElement.prototype.find = function (selector) {
798 var elem = this.elems[0];
799 return $(elem.querySelectorAll(selector));
800 };
801
802 DomElement.prototype.text = function (val) {
803 if (!val) {
804 // 获取 text
805 var elem = this.elems[0];
806 return elem.innerHTML.replace(/<[^>]+>/g, function () {
807 return '';
808 });
809 } else {
810 var _context14;
811
812 // 设置 text
813 return (0, _forEach["default"])(_context14 = this).call(_context14, function (elem) {
814 elem.innerHTML = val;
815 });
816 }
817 };
818
819 DomElement.prototype.html = function (val) {
820 var elem = this.elems[0];
821
822 if (!val) {
823 // 获取 html
824 return elem.innerHTML;
825 } else {
826 // 设置 html
827 elem.innerHTML = val;
828 return this;
829 }
830 };
831 /**
832 * 获取元素 value
833 */
834
835
836 DomElement.prototype.val = function () {
837 var _context15;
838
839 var elem = this.elems[0];
840 return (0, _trim["default"])(_context15 = elem.value).call(_context15); // 暂用 any
841 };
842 /**
843 * focus 到当前元素
844 */
845
846
847 DomElement.prototype.focus = function () {
848 var _context16;
849
850 return (0, _forEach["default"])(_context16 = this).call(_context16, function (elem) {
851 elem.focus();
852 });
853 };
854 /**
855 * 当前元素前一个兄弟节点
856 */
857
858
859 DomElement.prototype.prev = function () {
860 var elem = this.elems[0];
861 return $(elem.previousElementSibling);
862 };
863 /**
864 * 当前元素后一个兄弟节点
865 */
866
867
868 DomElement.prototype.next = function () {
869 var elem = this.elems[0];
870 return $(elem.nextElementSibling);
871 };
872 /**
873 * 获取父元素
874 */
875
876
877 DomElement.prototype.parent = function () {
878 var elem = this.elems[0];
879 return $(elem.parentElement);
880 };
881 /**
882 * 查找父元素,知道满足 selector 条件
883 * @param selector css 选择器
884 * @param curElem 从哪个元素开始查找,默认为当前元素
885 */
886
887
888 DomElement.prototype.parentUntil = function (selector, curElem) {
889 var elem = curElem || this.elems[0];
890
891 if (elem.nodeName === 'BODY') {
892 return null;
893 }
894
895 var parent = elem.parentElement;
896
897 if (parent === null) {
898 return null;
899 }
900
901 if (parent.matches(selector)) {
902 // 找到,并返回
903 return $(parent);
904 } // 继续查找,递归
905
906
907 return this.parentUntil(selector, parent);
908 };
909 /**
910 * 判读是否相等
911 * @param $elem 元素
912 */
913
914
915 DomElement.prototype.equal = function ($elem) {
916 if ($elem instanceof DomElement) {
917 return this.elems[0] === $elem.elems[0];
918 } else if ($elem instanceof HTMLElement) {
919 return this.elems[0] === $elem;
920 } else {
921 return false;
922 }
923 };
924 /**
925 * 将该元素插入到某个元素前面
926 * @param selector css 选择器
927 */
928
929
930 DomElement.prototype.insertBefore = function (selector) {
931 var _context17;
932
933 var $referenceNode = $(selector);
934 var referenceNode = $referenceNode.elems[0];
935
936 if (!referenceNode) {
937 return this;
938 }
939
940 return (0, _forEach["default"])(_context17 = this).call(_context17, function (elem) {
941 var parent = referenceNode.parentNode;
942 parent.insertBefore(elem, referenceNode);
943 });
944 };
945 /**
946 * 将该元素插入到某个元素后面
947 * @param selector css 选择器
948 */
949
950
951 DomElement.prototype.insertAfter = function (selector) {
952 var _context18;
953
954 var $referenceNode = $(selector);
955 var referenceNode = $referenceNode.elems[0];
956 var anchorNode = referenceNode && referenceNode.nextSibling;
957
958 if (!referenceNode) {
959 return this;
960 }
961
962 return (0, _forEach["default"])(_context18 = this).call(_context18, function (elem) {
963 var parent = referenceNode.parentNode;
964
965 if (anchorNode) {
966 parent.insertBefore(elem, anchorNode);
967 } else {
968 parent.appendChild(elem);
969 }
970 });
971 };
972 /**
973 * 设置/获取 数据
974 * @param key key
975 * @param value value
976 */
977
978
979 DomElement.prototype.data = function (key, value) {
980 if (value != null) {
981 // 设置数据
982 this.dataSource.set(key, value);
983 } else {
984 // 获取数据
985 return this.dataSource.get(key);
986 }
987 };
988 /**
989 * 获取当前节点的顶级(段落)
990 * @param editor 富文本实例
991 */
992
993
994 DomElement.prototype.getNodeTop = function (editor) {
995 if (this.length < 1) {
996 return this;
997 }
998
999 var $parent = this.parent();
1000
1001 if (editor.$textElem.equal($parent)) {
1002 return this;
1003 }
1004
1005 return $parent.getNodeTop(editor);
1006 };
1007 /**
1008 * 获取当前 节点 基与上一个拥有相对或者解决定位的父容器的位置
1009 * @param editor 富文本实例
1010 */
1011
1012
1013 DomElement.prototype.getOffsetData = function () {
1014 var $node = this.elems[0];
1015 return {
1016 top: $node.offsetTop,
1017 left: $node.offsetLeft,
1018 width: $node.offsetWidth,
1019 height: $node.offsetHeight,
1020 parent: $node.offsetParent
1021 };
1022 };
1023 /**
1024 * 从上至下进行滚动
1025 * @param top 滚动的值
1026 */
1027
1028
1029 DomElement.prototype.scrollTop = function (top) {
1030 var $node = this.elems[0];
1031 $node.scrollTo({
1032 top: top
1033 });
1034 };
1035
1036 return DomElement;
1037}();
1038
1039exports.DomElement = DomElement; // new 一个对象
1040
1041function $() {
1042 var arg = [];
1043
1044 for (var _i = 0; _i < arguments.length; _i++) {
1045 arg[_i] = arguments[_i];
1046 }
1047
1048 return new ((0, _bind["default"])(DomElement).apply(DomElement, __spreadArrays([void 0], arg)))();
1049}
1050
1051exports["default"] = $;
1052
1053/***/ }),
1054/* 3 */
1055/***/ (function(module, exports, __webpack_require__) {
1056
1057module.exports = __webpack_require__(132);
1058
1059/***/ }),
1060/* 4 */
1061/***/ (function(module, exports, __webpack_require__) {
1062
1063"use strict";
1064
1065var global = __webpack_require__(8);
1066var getOwnPropertyDescriptor = __webpack_require__(66).f;
1067var isForced = __webpack_require__(97);
1068var path = __webpack_require__(10);
1069var bind = __webpack_require__(46);
1070var createNonEnumerableProperty = __webpack_require__(16);
1071var has = __webpack_require__(15);
1072
1073var wrapConstructor = function (NativeConstructor) {
1074 var Wrapper = function (a, b, c) {
1075 if (this instanceof NativeConstructor) {
1076 switch (arguments.length) {
1077 case 0: return new NativeConstructor();
1078 case 1: return new NativeConstructor(a);
1079 case 2: return new NativeConstructor(a, b);
1080 } return new NativeConstructor(a, b, c);
1081 } return NativeConstructor.apply(this, arguments);
1082 };
1083 Wrapper.prototype = NativeConstructor.prototype;
1084 return Wrapper;
1085};
1086
1087/*
1088 options.target - name of the target object
1089 options.global - target is the global object
1090 options.stat - export as static methods of target
1091 options.proto - export as prototype methods of target
1092 options.real - real prototype method for the `pure` version
1093 options.forced - export even if the native feature is available
1094 options.bind - bind methods to the target, required for the `pure` version
1095 options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
1096 options.unsafe - use the simple assignment of property instead of delete + defineProperty
1097 options.sham - add a flag to not completely full polyfills
1098 options.enumerable - export as enumerable property
1099 options.noTargetGet - prevent calling a getter on target
1100*/
1101module.exports = function (options, source) {
1102 var TARGET = options.target;
1103 var GLOBAL = options.global;
1104 var STATIC = options.stat;
1105 var PROTO = options.proto;
1106
1107 var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;
1108
1109 var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});
1110 var targetPrototype = target.prototype;
1111
1112 var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;
1113 var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;
1114
1115 for (key in source) {
1116 FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
1117 // contains in native
1118 USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);
1119
1120 targetProperty = target[key];
1121
1122 if (USE_NATIVE) if (options.noTargetGet) {
1123 descriptor = getOwnPropertyDescriptor(nativeSource, key);
1124 nativeProperty = descriptor && descriptor.value;
1125 } else nativeProperty = nativeSource[key];
1126
1127 // export native or implementation
1128 sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];
1129
1130 if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;
1131
1132 // bind timers to global for call from export context
1133 if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);
1134 // wrap global constructors for prevent changs in this version
1135 else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);
1136 // make static versions for prototype methods
1137 else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);
1138 // default case
1139 else resultProperty = sourceProperty;
1140
1141 // add a flag to not completely full polyfills
1142 if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {
1143 createNonEnumerableProperty(resultProperty, 'sham', true);
1144 }
1145
1146 target[key] = resultProperty;
1147
1148 if (PROTO) {
1149 VIRTUAL_PROTOTYPE = TARGET + 'Prototype';
1150 if (!has(path, VIRTUAL_PROTOTYPE)) {
1151 createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});
1152 }
1153 // export virtual prototype methods
1154 path[VIRTUAL_PROTOTYPE][key] = sourceProperty;
1155 // export real prototype methods
1156 if (options.real && targetPrototype && !targetPrototype[key]) {
1157 createNonEnumerableProperty(targetPrototype, key, sourceProperty);
1158 }
1159 }
1160 }
1161};
1162
1163
1164/***/ }),
1165/* 5 */
1166/***/ (function(module, exports, __webpack_require__) {
1167
1168module.exports = __webpack_require__(302);
1169
1170/***/ }),
1171/* 6 */
1172/***/ (function(module, exports, __webpack_require__) {
1173
1174module.exports = __webpack_require__(175);
1175
1176/***/ }),
1177/* 7 */
1178/***/ (function(module, exports, __webpack_require__) {
1179
1180"use strict";
1181
1182/**
1183 * @description 工具函数集合
1184 * @author wangfupeng
1185 */
1186
1187var _interopRequireDefault = __webpack_require__(0);
1188
1189var _map = _interopRequireDefault(__webpack_require__(28));
1190
1191var _isArray = _interopRequireDefault(__webpack_require__(116));
1192
1193var _typeof2 = _interopRequireDefault(__webpack_require__(91));
1194
1195var _setTimeout2 = _interopRequireDefault(__webpack_require__(120));
1196
1197var _slice = _interopRequireDefault(__webpack_require__(54));
1198
1199var _parseInt2 = _interopRequireDefault(__webpack_require__(258));
1200
1201var _defineProperty = _interopRequireDefault(__webpack_require__(1));
1202
1203var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
1204 for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
1205 s += arguments[i].length;
1206 }
1207
1208 for (var r = Array(s), k = 0, i = 0; i < il; i++) {
1209 for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
1210 r[k] = a[j];
1211 }
1212 }
1213
1214 return r;
1215};
1216
1217(0, _defineProperty["default"])(exports, "__esModule", {
1218 value: true
1219});
1220exports.hexToRgb = exports.getRandomCode = exports.toArray = exports.deepClone = exports.isFunction = exports.debounce = exports.throttle = exports.arrForEach = exports.forEach = exports.replaceSpecialSymbol = exports.replaceHtmlSymbol = exports.getRandom = exports.UA = void 0;
1221
1222var NavUA =
1223/** @class */
1224function () {
1225 function NavUA() {
1226 this._ua = navigator.userAgent;
1227
1228 var math = this._ua.match(/(Edge?)\/(\d+)/);
1229
1230 this.isOldEdge = math && math[1] == 'Edge' && (0, _parseInt2["default"])(math[2]) < 19 ? true : false;
1231 this.isFirefox = /Firefox\/\d+/.test(this._ua) && !/Seamonkey\/\d+/.test(this._ua) ? true : false;
1232 } // 是否为 IE
1233
1234
1235 NavUA.prototype.isIE = function () {
1236 return 'ActiveXObject' in window;
1237 }; // 是否为 webkit
1238
1239
1240 NavUA.prototype.isWebkit = function () {
1241 return /webkit/i.test(this._ua);
1242 };
1243
1244 return NavUA;
1245}(); // 和 UA 相关的属性
1246
1247
1248exports.UA = new NavUA();
1249/**
1250 * 获取随机字符
1251 * @param prefix 前缀
1252 */
1253
1254function getRandom(prefix) {
1255 var _context;
1256
1257 if (prefix === void 0) {
1258 prefix = '';
1259 }
1260
1261 return prefix + (0, _slice["default"])(_context = Math.random().toString()).call(_context, 2);
1262}
1263
1264exports.getRandom = getRandom;
1265/**
1266 * 替换 html 特殊字符
1267 * @param html html 字符串
1268 */
1269
1270function replaceHtmlSymbol(html) {
1271 return html.replace(/</gm, '&lt;').replace(/>/gm, '&gt;').replace(/"/gm, '&quot;').replace(/(\r\n|\r|\n)/g, '<br/>');
1272}
1273
1274exports.replaceHtmlSymbol = replaceHtmlSymbol;
1275
1276function replaceSpecialSymbol(value) {
1277 return value.replace(/&lt;/gm, '<').replace(/&gt;/gm, '>').replace(/&quot;/gm, '"');
1278}
1279
1280exports.replaceSpecialSymbol = replaceSpecialSymbol;
1281
1282function forEach(obj, fn) {
1283 for (var key in obj) {
1284 if (Object.prototype.hasOwnProperty.call(obj, key)) {
1285 var result = fn(key, obj[key]);
1286
1287 if (result === false) {
1288 // 提前终止循环
1289 break;
1290 }
1291 }
1292 }
1293}
1294
1295exports.forEach = forEach;
1296/**
1297 * 遍历类数组
1298 * @param fakeArr 类数组
1299 * @param fn 回调函数
1300 */
1301
1302function arrForEach(fakeArr, fn) {
1303 var i, item, result;
1304 var length = fakeArr.length || 0;
1305
1306 for (i = 0; i < length; i++) {
1307 item = fakeArr[i];
1308 result = fn.call(fakeArr, item, i);
1309
1310 if (result === false) {
1311 break;
1312 }
1313 }
1314}
1315
1316exports.arrForEach = arrForEach;
1317/**
1318 * 节流
1319 * @param fn 函数
1320 * @param interval 间隔时间,毫秒
1321 */
1322
1323function throttle(fn, interval) {
1324 if (interval === void 0) {
1325 interval = 200;
1326 }
1327
1328 var flag = false;
1329 return function () {
1330 var _this = this;
1331
1332 var args = [];
1333
1334 for (var _i = 0; _i < arguments.length; _i++) {
1335 args[_i] = arguments[_i];
1336 }
1337
1338 if (!flag) {
1339 flag = true;
1340 (0, _setTimeout2["default"])(function () {
1341 flag = false;
1342 fn.call.apply(fn, __spreadArrays([_this], args)); // this 报语法错误,先用 null
1343 }, interval);
1344 }
1345 };
1346}
1347
1348exports.throttle = throttle;
1349/**
1350 * 防抖
1351 * @param fn 函数
1352 * @param delay 间隔时间,毫秒
1353 */
1354
1355function debounce(fn, delay) {
1356 if (delay === void 0) {
1357 delay = 200;
1358 }
1359
1360 var lastFn = 0;
1361 return function () {
1362 var _this = this;
1363
1364 var args = [];
1365
1366 for (var _i = 0; _i < arguments.length; _i++) {
1367 args[_i] = arguments[_i];
1368 }
1369
1370 if (lastFn) {
1371 window.clearTimeout(lastFn);
1372 }
1373
1374 lastFn = window.setTimeout(function () {
1375 lastFn = 0;
1376 fn.call.apply(fn, __spreadArrays([_this], args)); // this 报语法错误,先用 null
1377 }, delay);
1378 };
1379}
1380
1381exports.debounce = debounce;
1382/**
1383 * isFunction 是否是函数
1384 * @param fn 函数
1385 */
1386
1387function isFunction(fn) {
1388 return typeof fn === 'function';
1389}
1390
1391exports.isFunction = isFunction;
1392/**
1393 * 引用与非引用值 深拷贝方法
1394 * @param data
1395 */
1396
1397function deepClone(data) {
1398 if ((0, _typeof2["default"])(data) !== 'object' || typeof data == 'function' || data === null) {
1399 return data;
1400 }
1401
1402 var item;
1403
1404 if ((0, _isArray["default"])(data)) {
1405 item = [];
1406 }
1407
1408 if (!(0, _isArray["default"])(data)) {
1409 item = {};
1410 }
1411
1412 for (var i in data) {
1413 if (Object.prototype.hasOwnProperty.call(data, i)) {
1414 item[i] = deepClone(data[i]);
1415 }
1416 }
1417
1418 return item;
1419}
1420
1421exports.deepClone = deepClone;
1422/**
1423 * 将可遍历的对象转换为数组
1424 * @param data 可遍历的对象
1425 */
1426
1427function toArray(data) {
1428 return (0, _slice["default"])(Array.prototype).call(data);
1429}
1430
1431exports.toArray = toArray;
1432/**
1433 * 唯一id生成
1434 * @param length 随机数长度
1435 */
1436
1437function getRandomCode() {
1438 var _context2;
1439
1440 return (0, _slice["default"])(_context2 = Math.random().toString(36)).call(_context2, -5);
1441}
1442
1443exports.getRandomCode = getRandomCode;
1444/**
1445 * hex color 转换成 rgb
1446 * @param hex string
1447 */
1448
1449function hexToRgb(hex) {
1450 var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
1451 if (result == null) return null;
1452 var colors = (0, _map["default"])(result).call(result, function (i) {
1453 return (0, _parseInt2["default"])(i, 16);
1454 });
1455 var r = colors[1];
1456 var g = colors[2];
1457 var b = colors[3];
1458 return "rgb(" + r + ", " + g + ", " + b + ")";
1459}
1460
1461exports.hexToRgb = hexToRgb;
1462
1463/***/ }),
1464/* 8 */
1465/***/ (function(module, exports, __webpack_require__) {
1466
1467/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
1468 return it && it.Math == Math && it;
1469};
1470
1471// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1472module.exports =
1473 // eslint-disable-next-line no-undef
1474 check(typeof globalThis == 'object' && globalThis) ||
1475 check(typeof window == 'object' && window) ||
1476 check(typeof self == 'object' && self) ||
1477 check(typeof global == 'object' && global) ||
1478 // eslint-disable-next-line no-new-func
1479 (function () { return this; })() || Function('return this')();
1480
1481/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(131)))
1482
1483/***/ }),
1484/* 9 */
1485/***/ (function(module, exports, __webpack_require__) {
1486
1487var global = __webpack_require__(8);
1488var shared = __webpack_require__(72);
1489var has = __webpack_require__(15);
1490var uid = __webpack_require__(60);
1491var NATIVE_SYMBOL = __webpack_require__(76);
1492var USE_SYMBOL_AS_UID = __webpack_require__(100);
1493
1494var WellKnownSymbolsStore = shared('wks');
1495var Symbol = global.Symbol;
1496var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
1497
1498module.exports = function (name) {
1499 if (!has(WellKnownSymbolsStore, name)) {
1500 if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
1501 else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
1502 } return WellKnownSymbolsStore[name];
1503};
1504
1505
1506/***/ }),
1507/* 10 */
1508/***/ (function(module, exports) {
1509
1510module.exports = {};
1511
1512
1513/***/ }),
1514/* 11 */
1515/***/ (function(module, exports, __webpack_require__) {
1516
1517var path = __webpack_require__(10);
1518var has = __webpack_require__(15);
1519var wrappedWellKnownSymbolModule = __webpack_require__(92);
1520var defineProperty = __webpack_require__(17).f;
1521
1522module.exports = function (NAME) {
1523 var Symbol = path.Symbol || (path.Symbol = {});
1524 if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
1525 value: wrappedWellKnownSymbolModule.f(NAME)
1526 });
1527};
1528
1529
1530/***/ }),
1531/* 12 */
1532/***/ (function(module, exports) {
1533
1534module.exports = function (exec) {
1535 try {
1536 return !!exec();
1537 } catch (error) {
1538 return true;
1539 }
1540};
1541
1542
1543/***/ }),
1544/* 13 */
1545/***/ (function(module, exports) {
1546
1547module.exports = function (it) {
1548 return typeof it === 'object' ? it !== null : typeof it === 'function';
1549};
1550
1551
1552/***/ }),
1553/* 14 */
1554/***/ (function(module, exports, __webpack_require__) {
1555
1556var fails = __webpack_require__(12);
1557
1558// Thank's IE8 for his funny defineProperty
1559module.exports = !fails(function () {
1560 return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
1561});
1562
1563
1564/***/ }),
1565/* 15 */
1566/***/ (function(module, exports) {
1567
1568var hasOwnProperty = {}.hasOwnProperty;
1569
1570module.exports = function (it, key) {
1571 return hasOwnProperty.call(it, key);
1572};
1573
1574
1575/***/ }),
1576/* 16 */
1577/***/ (function(module, exports, __webpack_require__) {
1578
1579var DESCRIPTORS = __webpack_require__(14);
1580var definePropertyModule = __webpack_require__(17);
1581var createPropertyDescriptor = __webpack_require__(34);
1582
1583module.exports = DESCRIPTORS ? function (object, key, value) {
1584 return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
1585} : function (object, key, value) {
1586 object[key] = value;
1587 return object;
1588};
1589
1590
1591/***/ }),
1592/* 17 */
1593/***/ (function(module, exports, __webpack_require__) {
1594
1595var DESCRIPTORS = __webpack_require__(14);
1596var IE8_DOM_DEFINE = __webpack_require__(96);
1597var anObject = __webpack_require__(23);
1598var toPrimitive = __webpack_require__(56);
1599
1600var nativeDefineProperty = Object.defineProperty;
1601
1602// `Object.defineProperty` method
1603// https://tc39.github.io/ecma262/#sec-object.defineproperty
1604exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
1605 anObject(O);
1606 P = toPrimitive(P, true);
1607 anObject(Attributes);
1608 if (IE8_DOM_DEFINE) try {
1609 return nativeDefineProperty(O, P, Attributes);
1610 } catch (error) { /* empty */ }
1611 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
1612 if ('value' in Attributes) O[P] = Attributes.value;
1613 return O;
1614};
1615
1616
1617/***/ }),
1618/* 18 */
1619/***/ (function(module, exports, __webpack_require__) {
1620
1621var path = __webpack_require__(10);
1622
1623module.exports = function (CONSTRUCTOR) {
1624 return path[CONSTRUCTOR + 'Prototype'];
1625};
1626
1627
1628/***/ }),
1629/* 19 */
1630/***/ (function(module, exports, __webpack_require__) {
1631
1632"use strict";
1633
1634
1635var isOldIE = function isOldIE() {
1636 var memo;
1637 return function memorize() {
1638 if (typeof memo === 'undefined') {
1639 // Test for IE <= 9 as proposed by Browserhacks
1640 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
1641 // Tests for existence of standard globals is to allow style-loader
1642 // to operate correctly into non-standard environments
1643 // @see https://github.com/webpack-contrib/style-loader/issues/177
1644 memo = Boolean(window && document && document.all && !window.atob);
1645 }
1646
1647 return memo;
1648 };
1649}();
1650
1651var getTarget = function getTarget() {
1652 var memo = {};
1653 return function memorize(target) {
1654 if (typeof memo[target] === 'undefined') {
1655 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
1656
1657 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
1658 try {
1659 // This will throw an exception if access to iframe is blocked
1660 // due to cross-origin restrictions
1661 styleTarget = styleTarget.contentDocument.head;
1662 } catch (e) {
1663 // istanbul ignore next
1664 styleTarget = null;
1665 }
1666 }
1667
1668 memo[target] = styleTarget;
1669 }
1670
1671 return memo[target];
1672 };
1673}();
1674
1675var stylesInDom = [];
1676
1677function getIndexByIdentifier(identifier) {
1678 var result = -1;
1679
1680 for (var i = 0; i < stylesInDom.length; i++) {
1681 if (stylesInDom[i].identifier === identifier) {
1682 result = i;
1683 break;
1684 }
1685 }
1686
1687 return result;
1688}
1689
1690function modulesToDom(list, options) {
1691 var idCountMap = {};
1692 var identifiers = [];
1693
1694 for (var i = 0; i < list.length; i++) {
1695 var item = list[i];
1696 var id = options.base ? item[0] + options.base : item[0];
1697 var count = idCountMap[id] || 0;
1698 var identifier = "".concat(id, " ").concat(count);
1699 idCountMap[id] = count + 1;
1700 var index = getIndexByIdentifier(identifier);
1701 var obj = {
1702 css: item[1],
1703 media: item[2],
1704 sourceMap: item[3]
1705 };
1706
1707 if (index !== -1) {
1708 stylesInDom[index].references++;
1709 stylesInDom[index].updater(obj);
1710 } else {
1711 stylesInDom.push({
1712 identifier: identifier,
1713 updater: addStyle(obj, options),
1714 references: 1
1715 });
1716 }
1717
1718 identifiers.push(identifier);
1719 }
1720
1721 return identifiers;
1722}
1723
1724function insertStyleElement(options) {
1725 var style = document.createElement('style');
1726 var attributes = options.attributes || {};
1727
1728 if (typeof attributes.nonce === 'undefined') {
1729 var nonce = true ? __webpack_require__.nc : undefined;
1730
1731 if (nonce) {
1732 attributes.nonce = nonce;
1733 }
1734 }
1735
1736 Object.keys(attributes).forEach(function (key) {
1737 style.setAttribute(key, attributes[key]);
1738 });
1739
1740 if (typeof options.insert === 'function') {
1741 options.insert(style);
1742 } else {
1743 var target = getTarget(options.insert || 'head');
1744
1745 if (!target) {
1746 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
1747 }
1748
1749 target.appendChild(style);
1750 }
1751
1752 return style;
1753}
1754
1755function removeStyleElement(style) {
1756 // istanbul ignore if
1757 if (style.parentNode === null) {
1758 return false;
1759 }
1760
1761 style.parentNode.removeChild(style);
1762}
1763/* istanbul ignore next */
1764
1765
1766var replaceText = function replaceText() {
1767 var textStore = [];
1768 return function replace(index, replacement) {
1769 textStore[index] = replacement;
1770 return textStore.filter(Boolean).join('\n');
1771 };
1772}();
1773
1774function applyToSingletonTag(style, index, remove, obj) {
1775 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
1776
1777 /* istanbul ignore if */
1778
1779 if (style.styleSheet) {
1780 style.styleSheet.cssText = replaceText(index, css);
1781 } else {
1782 var cssNode = document.createTextNode(css);
1783 var childNodes = style.childNodes;
1784
1785 if (childNodes[index]) {
1786 style.removeChild(childNodes[index]);
1787 }
1788
1789 if (childNodes.length) {
1790 style.insertBefore(cssNode, childNodes[index]);
1791 } else {
1792 style.appendChild(cssNode);
1793 }
1794 }
1795}
1796
1797function applyToTag(style, options, obj) {
1798 var css = obj.css;
1799 var media = obj.media;
1800 var sourceMap = obj.sourceMap;
1801
1802 if (media) {
1803 style.setAttribute('media', media);
1804 } else {
1805 style.removeAttribute('media');
1806 }
1807
1808 if (sourceMap && typeof btoa !== 'undefined') {
1809 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
1810 } // For old IE
1811
1812 /* istanbul ignore if */
1813
1814
1815 if (style.styleSheet) {
1816 style.styleSheet.cssText = css;
1817 } else {
1818 while (style.firstChild) {
1819 style.removeChild(style.firstChild);
1820 }
1821
1822 style.appendChild(document.createTextNode(css));
1823 }
1824}
1825
1826var singleton = null;
1827var singletonCounter = 0;
1828
1829function addStyle(obj, options) {
1830 var style;
1831 var update;
1832 var remove;
1833
1834 if (options.singleton) {
1835 var styleIndex = singletonCounter++;
1836 style = singleton || (singleton = insertStyleElement(options));
1837 update = applyToSingletonTag.bind(null, style, styleIndex, false);
1838 remove = applyToSingletonTag.bind(null, style, styleIndex, true);
1839 } else {
1840 style = insertStyleElement(options);
1841 update = applyToTag.bind(null, style, options);
1842
1843 remove = function remove() {
1844 removeStyleElement(style);
1845 };
1846 }
1847
1848 update(obj);
1849 return function updateStyle(newObj) {
1850 if (newObj) {
1851 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
1852 return;
1853 }
1854
1855 update(obj = newObj);
1856 } else {
1857 remove();
1858 }
1859 };
1860}
1861
1862module.exports = function (list, options) {
1863 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
1864 // tags it will allow on a page
1865
1866 if (!options.singleton && typeof options.singleton !== 'boolean') {
1867 options.singleton = isOldIE();
1868 }
1869
1870 list = list || [];
1871 var lastIdentifiers = modulesToDom(list, options);
1872 return function update(newList) {
1873 newList = newList || [];
1874
1875 if (Object.prototype.toString.call(newList) !== '[object Array]') {
1876 return;
1877 }
1878
1879 for (var i = 0; i < lastIdentifiers.length; i++) {
1880 var identifier = lastIdentifiers[i];
1881 var index = getIndexByIdentifier(identifier);
1882 stylesInDom[index].references--;
1883 }
1884
1885 var newLastIdentifiers = modulesToDom(newList, options);
1886
1887 for (var _i = 0; _i < lastIdentifiers.length; _i++) {
1888 var _identifier = lastIdentifiers[_i];
1889
1890 var _index = getIndexByIdentifier(_identifier);
1891
1892 if (stylesInDom[_index].references === 0) {
1893 stylesInDom[_index].updater();
1894
1895 stylesInDom.splice(_index, 1);
1896 }
1897 }
1898
1899 lastIdentifiers = newLastIdentifiers;
1900 };
1901};
1902
1903/***/ }),
1904/* 20 */
1905/***/ (function(module, exports, __webpack_require__) {
1906
1907"use strict";
1908
1909
1910/*
1911 MIT License http://www.opensource.org/licenses/mit-license.php
1912 Author Tobias Koppers @sokra
1913*/
1914// css base code, injected by the css-loader
1915// eslint-disable-next-line func-names
1916module.exports = function (useSourceMap) {
1917 var list = []; // return the list of modules as css string
1918
1919 list.toString = function toString() {
1920 return this.map(function (item) {
1921 var content = cssWithMappingToString(item, useSourceMap);
1922
1923 if (item[2]) {
1924 return "@media ".concat(item[2], " {").concat(content, "}");
1925 }
1926
1927 return content;
1928 }).join('');
1929 }; // import a list of modules into the list
1930 // eslint-disable-next-line func-names
1931
1932
1933 list.i = function (modules, mediaQuery, dedupe) {
1934 if (typeof modules === 'string') {
1935 // eslint-disable-next-line no-param-reassign
1936 modules = [[null, modules, '']];
1937 }
1938
1939 var alreadyImportedModules = {};
1940
1941 if (dedupe) {
1942 for (var i = 0; i < this.length; i++) {
1943 // eslint-disable-next-line prefer-destructuring
1944 var id = this[i][0];
1945
1946 if (id != null) {
1947 alreadyImportedModules[id] = true;
1948 }
1949 }
1950 }
1951
1952 for (var _i = 0; _i < modules.length; _i++) {
1953 var item = [].concat(modules[_i]);
1954
1955 if (dedupe && alreadyImportedModules[item[0]]) {
1956 // eslint-disable-next-line no-continue
1957 continue;
1958 }
1959
1960 if (mediaQuery) {
1961 if (!item[2]) {
1962 item[2] = mediaQuery;
1963 } else {
1964 item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
1965 }
1966 }
1967
1968 list.push(item);
1969 }
1970 };
1971
1972 return list;
1973};
1974
1975function cssWithMappingToString(item, useSourceMap) {
1976 var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
1977
1978 var cssMapping = item[3];
1979
1980 if (!cssMapping) {
1981 return content;
1982 }
1983
1984 if (useSourceMap && typeof btoa === 'function') {
1985 var sourceMapping = toComment(cssMapping);
1986 var sourceURLs = cssMapping.sources.map(function (source) {
1987 return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
1988 });
1989 return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
1990 }
1991
1992 return [content].join('\n');
1993} // Adapted from convert-source-map (MIT)
1994
1995
1996function toComment(sourceMap) {
1997 // eslint-disable-next-line no-undef
1998 var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
1999 var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
2000 return "/*# ".concat(data, " */");
2001}
2002
2003/***/ }),
2004/* 21 */
2005/***/ (function(module, exports, __webpack_require__) {
2006
2007module.exports = __webpack_require__(210);
2008
2009/***/ }),
2010/* 22 */
2011/***/ (function(module, exports, __webpack_require__) {
2012
2013"use strict";
2014
2015/**
2016 * @description 下拉菜单 Class
2017 * @author wangfupeng
2018 */
2019
2020var _interopRequireDefault = __webpack_require__(0);
2021
2022var _forEach = _interopRequireDefault(__webpack_require__(6));
2023
2024var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2025
2026var _create = _interopRequireDefault(__webpack_require__(3));
2027
2028var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
2029
2030var __extends = void 0 && (void 0).__extends || function () {
2031 var _extendStatics = function extendStatics(d, b) {
2032 _extendStatics = _setPrototypeOf["default"] || {
2033 __proto__: []
2034 } instanceof Array && function (d, b) {
2035 d.__proto__ = b;
2036 } || function (d, b) {
2037 for (var p in b) {
2038 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
2039 }
2040 };
2041
2042 return _extendStatics(d, b);
2043 };
2044
2045 return function (d, b) {
2046 _extendStatics(d, b);
2047
2048 function __() {
2049 this.constructor = d;
2050 }
2051
2052 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
2053 };
2054}();
2055
2056var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
2057 return mod && mod.__esModule ? mod : {
2058 "default": mod
2059 };
2060};
2061
2062(0, _defineProperty["default"])(exports, "__esModule", {
2063 value: true
2064});
2065
2066var dom_core_1 = __importDefault(__webpack_require__(2));
2067
2068var Menu_1 = __importDefault(__webpack_require__(93));
2069
2070var DropList_1 = __importDefault(__webpack_require__(124));
2071
2072var DropListMenu =
2073/** @class */
2074function (_super) {
2075 __extends(DropListMenu, _super);
2076
2077 function DropListMenu($elem, editor, conf) {
2078 var _this = _super.call(this, $elem, editor) || this; // 国际化
2079
2080
2081 conf.title = editor.i18next.t("menus.dropListMenu." + conf.title); // 非中文模式下 带 icon 的下拉列表居左
2082
2083 var className = editor.config.lang === 'zh-CN' ? '' : 'w-e-drop-list-tl';
2084
2085 if (className !== '' && conf.type === 'list') {
2086 var _context;
2087
2088 (0, _forEach["default"])(_context = conf.list).call(_context, function (item) {
2089 var $elem = item.$elem;
2090 var $children = dom_core_1["default"]($elem.children());
2091
2092 if ($children.length > 0) {
2093 var nodeName = $children === null || $children === void 0 ? void 0 : $children.getNodeName();
2094
2095 if (nodeName && nodeName === 'I') {
2096 $elem.addClass(className);
2097 }
2098 }
2099 });
2100 } // 初始化 dropList
2101
2102
2103 var dropList = new DropList_1["default"](_this, conf);
2104 _this.dropList = dropList; // 绑定事件
2105
2106 $elem.on('mouseenter', function () {
2107 var _context2;
2108
2109 if (editor.selection.getRange() == null) {
2110 return;
2111 }
2112
2113 $elem.css('z-index', editor.zIndex.get('menu')); // 触发 droplist 悬浮事件
2114
2115 (0, _forEach["default"])(_context2 = editor.txt.eventHooks.dropListMenuHoverEvents).call(_context2, function (fn) {
2116 return fn();
2117 }); // 显示
2118
2119 dropList.showTimeoutId = window.setTimeout(function () {
2120 dropList.show();
2121 }, 200);
2122 }).on('mouseleave', function () {
2123 $elem.css('z-index', 'auto'); // 隐藏
2124
2125 dropList.hideTimeoutId = window.setTimeout(function () {
2126 dropList.hide();
2127 });
2128 });
2129 return _this;
2130 }
2131
2132 return DropListMenu;
2133}(Menu_1["default"]);
2134
2135exports["default"] = DropListMenu;
2136
2137/***/ }),
2138/* 23 */
2139/***/ (function(module, exports, __webpack_require__) {
2140
2141var isObject = __webpack_require__(13);
2142
2143module.exports = function (it) {
2144 if (!isObject(it)) {
2145 throw TypeError(String(it) + ' is not an object');
2146 } return it;
2147};
2148
2149
2150/***/ }),
2151/* 24 */
2152/***/ (function(module, exports, __webpack_require__) {
2153
2154"use strict";
2155
2156/**
2157 * @description 按钮菜单 Class
2158 * @author wangfupeng
2159 */
2160
2161var _interopRequireDefault = __webpack_require__(0);
2162
2163var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2164
2165var _create = _interopRequireDefault(__webpack_require__(3));
2166
2167var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
2168
2169var __extends = void 0 && (void 0).__extends || function () {
2170 var _extendStatics = function extendStatics(d, b) {
2171 _extendStatics = _setPrototypeOf["default"] || {
2172 __proto__: []
2173 } instanceof Array && function (d, b) {
2174 d.__proto__ = b;
2175 } || function (d, b) {
2176 for (var p in b) {
2177 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
2178 }
2179 };
2180
2181 return _extendStatics(d, b);
2182 };
2183
2184 return function (d, b) {
2185 _extendStatics(d, b);
2186
2187 function __() {
2188 this.constructor = d;
2189 }
2190
2191 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
2192 };
2193}();
2194
2195var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
2196 return mod && mod.__esModule ? mod : {
2197 "default": mod
2198 };
2199};
2200
2201(0, _defineProperty["default"])(exports, "__esModule", {
2202 value: true
2203});
2204
2205var Menu_1 = __importDefault(__webpack_require__(93));
2206
2207var BtnMenu =
2208/** @class */
2209function (_super) {
2210 __extends(BtnMenu, _super);
2211
2212 function BtnMenu($elem, editor) {
2213 return _super.call(this, $elem, editor) || this;
2214 }
2215
2216 return BtnMenu;
2217}(Menu_1["default"]);
2218
2219exports["default"] = BtnMenu;
2220
2221/***/ }),
2222/* 25 */
2223/***/ (function(module, exports, __webpack_require__) {
2224
2225// toObject with fallback for non-array-like ES3 strings
2226var IndexedObject = __webpack_require__(67);
2227var requireObjectCoercible = __webpack_require__(45);
2228
2229module.exports = function (it) {
2230 return IndexedObject(requireObjectCoercible(it));
2231};
2232
2233
2234/***/ }),
2235/* 26 */
2236/***/ (function(module, exports, __webpack_require__) {
2237
2238var path = __webpack_require__(10);
2239var global = __webpack_require__(8);
2240
2241var aFunction = function (variable) {
2242 return typeof variable == 'function' ? variable : undefined;
2243};
2244
2245module.exports = function (namespace, method) {
2246 return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
2247 : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
2248};
2249
2250
2251/***/ }),
2252/* 27 */
2253/***/ (function(module, exports, __webpack_require__) {
2254
2255var DESCRIPTORS = __webpack_require__(14);
2256var fails = __webpack_require__(12);
2257var has = __webpack_require__(15);
2258
2259var defineProperty = Object.defineProperty;
2260var cache = {};
2261
2262var thrower = function (it) { throw it; };
2263
2264module.exports = function (METHOD_NAME, options) {
2265 if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
2266 if (!options) options = {};
2267 var method = [][METHOD_NAME];
2268 var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
2269 var argument0 = has(options, 0) ? options[0] : thrower;
2270 var argument1 = has(options, 1) ? options[1] : undefined;
2271
2272 return cache[METHOD_NAME] = !!method && !fails(function () {
2273 if (ACCESSORS && !DESCRIPTORS) return true;
2274 var O = { length: -1 };
2275
2276 if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
2277 else O[1] = 1;
2278
2279 method.call(O, argument0, argument1);
2280 });
2281};
2282
2283
2284/***/ }),
2285/* 28 */
2286/***/ (function(module, exports, __webpack_require__) {
2287
2288module.exports = __webpack_require__(215);
2289
2290/***/ }),
2291/* 29 */
2292/***/ (function(module, exports, __webpack_require__) {
2293
2294"use strict";
2295
2296/**
2297 * @description panel class
2298 * @author wangfupeng
2299 */
2300
2301var _interopRequireDefault = __webpack_require__(0);
2302
2303var _set = _interopRequireDefault(__webpack_require__(123));
2304
2305var _find = _interopRequireDefault(__webpack_require__(32));
2306
2307var _forEach = _interopRequireDefault(__webpack_require__(6));
2308
2309var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2310
2311var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
2312 return mod && mod.__esModule ? mod : {
2313 "default": mod
2314 };
2315};
2316
2317(0, _defineProperty["default"])(exports, "__esModule", {
2318 value: true
2319});
2320
2321var dom_core_1 = __importDefault(__webpack_require__(2));
2322
2323var const_1 = __webpack_require__(31);
2324
2325var Panel =
2326/** @class */
2327function () {
2328 function Panel(menu, conf) {
2329 this.menu = menu;
2330 this.conf = conf;
2331 this.$container = dom_core_1["default"]('<div class="w-e-panel-container"></div>'); // 隐藏 panel
2332
2333 var editor = menu.editor;
2334 editor.txt.eventHooks.clickEvents.push(Panel.hideCurAllPanels);
2335 editor.txt.eventHooks.toolbarClickEvents.push(Panel.hideCurAllPanels);
2336 editor.txt.eventHooks.dropListMenuHoverEvents.push(Panel.hideCurAllPanels);
2337 }
2338 /**
2339 * 创建并展示 panel
2340 */
2341
2342
2343 Panel.prototype.create = function () {
2344 var _this = this;
2345
2346 var menu = this.menu;
2347
2348 if (Panel.createdMenus.has(menu)) {
2349 // 创建过了
2350 return;
2351 }
2352
2353 var conf = this.conf; // panel 的容器
2354
2355 var $container = this.$container;
2356 var width = conf.width || 300; // 默认 300px
2357
2358 var rect = menu.editor.$toolbarElem.getBoundingClientRect();
2359 var menuRect = menu.$elem.getBoundingClientRect();
2360 var top = rect.height + rect.top - menuRect.top;
2361 var left = (rect.width - width) / 2 + rect.left - menuRect.left;
2362 $container.css('width', width + 'px').css('margin-top', top + "px").css('margin-left', left + "px").css('z-index', menu.editor.zIndex.get('panel')); // 添加关闭按钮
2363
2364 var $closeBtn = dom_core_1["default"]('<i class="w-e-icon-close w-e-panel-close"></i>');
2365 $container.append($closeBtn);
2366 $closeBtn.on('click', function () {
2367 _this.remove();
2368 }); // 准备 tabs 容器
2369
2370 var $tabTitleContainer = dom_core_1["default"]('<ul class="w-e-panel-tab-title"></ul>');
2371 var $tabContentContainer = dom_core_1["default"]('<div class="w-e-panel-tab-content"></div>');
2372 $container.append($tabTitleContainer).append($tabContentContainer); // 设置高度
2373
2374 var height = conf.height; // height: 0 即不用设置
2375
2376 if (height) {
2377 $tabContentContainer.css('height', height + 'px').css('overflow-y', 'auto');
2378 } // tabs
2379
2380
2381 var tabs = conf.tabs || [];
2382 var tabTitleArr = [];
2383 var tabContentArr = [];
2384 (0, _forEach["default"])(tabs).call(tabs, function (tab, tabIndex) {
2385 if (!tab) {
2386 return;
2387 }
2388
2389 var title = tab.title || '';
2390 var tpl = tab.tpl || ''; // 添加到 DOM
2391
2392 var $title = dom_core_1["default"]("<li class=\"w-e-item\">" + title + "</li>");
2393 $tabTitleContainer.append($title);
2394 var $content = dom_core_1["default"](tpl);
2395 $tabContentContainer.append($content); // 记录到内存
2396
2397 tabTitleArr.push($title);
2398 tabContentArr.push($content); // 设置 active 项
2399
2400 if (tabIndex === 0) {
2401 $title.data('active', true);
2402 $title.addClass('w-e-active');
2403 } else {
2404 $content.hide();
2405 } // 绑定 tab 的事件
2406
2407
2408 $title.on('click', function () {
2409 if ($title.data('active')) {
2410 return;
2411 } // 隐藏所有的 tab
2412
2413
2414 (0, _forEach["default"])(tabTitleArr).call(tabTitleArr, function ($title) {
2415 $title.data('active', false);
2416 $title.removeClass('w-e-active');
2417 });
2418 (0, _forEach["default"])(tabContentArr).call(tabContentArr, function ($content) {
2419 $content.hide();
2420 }); // 显示当前的 tab
2421
2422 $title.data('active', true);
2423 $title.addClass('w-e-active');
2424 $content.show();
2425 });
2426 }); // 绑定关闭事件
2427
2428 $container.on('click', function (e) {
2429 // 点击时阻止冒泡
2430 e.stopPropagation();
2431 }); // 添加到 DOM
2432
2433 menu.$elem.append($container); // 绑定 conf events 的事件,只有添加到 DOM 之后才能绑定成功
2434
2435 (0, _forEach["default"])(tabs).call(tabs, function (tab, index) {
2436 if (!tab) {
2437 return;
2438 }
2439
2440 var events = tab.events || [];
2441 (0, _forEach["default"])(events).call(events, function (event) {
2442 var selector = event.selector;
2443 var type = event.type;
2444 var fn = event.fn || const_1.EMPTY_FN;
2445 var $content = tabContentArr[index];
2446 (0, _find["default"])($content).call($content, selector).on(type, function (e) {
2447 e.stopPropagation();
2448 var needToHide = fn(e); // 执行完事件之后,是否要关闭 panel
2449
2450 if (needToHide) {
2451 _this.remove();
2452 }
2453 });
2454 });
2455 }); // focus 第一个 elem
2456
2457 var $inputs = (0, _find["default"])($container).call($container, 'input[type=text],textarea');
2458
2459 if ($inputs.length) {
2460 $inputs.get(0).focus();
2461 } // 隐藏其他 panel
2462
2463
2464 Panel.hideCurAllPanels(); // 记录该 menu 已经创建了 panel
2465
2466 menu.setPanel(this);
2467 Panel.createdMenus.add(menu);
2468 };
2469 /**
2470 * 移除 penal
2471 */
2472
2473
2474 Panel.prototype.remove = function () {
2475 var menu = this.menu;
2476 var $container = this.$container;
2477
2478 if ($container) {
2479 $container.remove();
2480 } // 将该 menu 记录中移除
2481
2482
2483 Panel.createdMenus["delete"](menu);
2484 };
2485 /**
2486 * 隐藏当前所有的 panel
2487 */
2488
2489
2490 Panel.hideCurAllPanels = function () {
2491 var _context;
2492
2493 if (Panel.createdMenus.size === 0) {
2494 return;
2495 }
2496
2497 (0, _forEach["default"])(_context = Panel.createdMenus).call(_context, function (menu) {
2498 var panel = menu.panel;
2499 panel && panel.remove();
2500 });
2501 }; // 记录已经创建过的 panelMenu
2502
2503
2504 Panel.createdMenus = new _set["default"]();
2505 return Panel;
2506}();
2507
2508exports["default"] = Panel;
2509
2510/***/ }),
2511/* 30 */
2512/***/ (function(module, exports) {
2513
2514module.exports = function (it) {
2515 if (typeof it != 'function') {
2516 throw TypeError(String(it) + ' is not a function');
2517 } return it;
2518};
2519
2520
2521/***/ }),
2522/* 31 */
2523/***/ (function(module, exports, __webpack_require__) {
2524
2525"use strict";
2526
2527/**
2528 * @description 常量
2529 * @author wangfupeng
2530 */
2531
2532var _interopRequireDefault = __webpack_require__(0);
2533
2534var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2535
2536(0, _defineProperty["default"])(exports, "__esModule", {
2537 value: true
2538});
2539exports.urlRegex = exports.imgRegex = exports.EMPTY_FN = void 0;
2540
2541function EMPTY_FN() {}
2542
2543exports.EMPTY_FN = EMPTY_FN; //用于校验图片链接是否符合规范
2544
2545exports.imgRegex = /\.(gif|jpg|jpeg|png)$/i; //用于校验是否为url格式字符串
2546
2547exports.urlRegex = /^(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&amp;:/~+#]*[\w\-@?^=%&amp;/~+#])?/;
2548
2549/***/ }),
2550/* 32 */
2551/***/ (function(module, exports, __webpack_require__) {
2552
2553module.exports = __webpack_require__(281);
2554
2555/***/ }),
2556/* 33 */
2557/***/ (function(module, exports, __webpack_require__) {
2558
2559"use strict";
2560
2561/**
2562 * @description Modal 菜单 Class
2563 * @author wangfupeng
2564 */
2565
2566var _interopRequireDefault = __webpack_require__(0);
2567
2568var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2569
2570var _create = _interopRequireDefault(__webpack_require__(3));
2571
2572var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
2573
2574var __extends = void 0 && (void 0).__extends || function () {
2575 var _extendStatics = function extendStatics(d, b) {
2576 _extendStatics = _setPrototypeOf["default"] || {
2577 __proto__: []
2578 } instanceof Array && function (d, b) {
2579 d.__proto__ = b;
2580 } || function (d, b) {
2581 for (var p in b) {
2582 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
2583 }
2584 };
2585
2586 return _extendStatics(d, b);
2587 };
2588
2589 return function (d, b) {
2590 _extendStatics(d, b);
2591
2592 function __() {
2593 this.constructor = d;
2594 }
2595
2596 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
2597 };
2598}();
2599
2600var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
2601 return mod && mod.__esModule ? mod : {
2602 "default": mod
2603 };
2604};
2605
2606(0, _defineProperty["default"])(exports, "__esModule", {
2607 value: true
2608});
2609
2610var Menu_1 = __importDefault(__webpack_require__(93));
2611
2612var PanelMenu =
2613/** @class */
2614function (_super) {
2615 __extends(PanelMenu, _super);
2616
2617 function PanelMenu($elem, editor) {
2618 return _super.call(this, $elem, editor) || this;
2619 }
2620 /**
2621 * 给 menu 设置 panel
2622 * @param panel panel 实例
2623 */
2624
2625
2626 PanelMenu.prototype.setPanel = function (panel) {
2627 this.panel = panel;
2628 };
2629
2630 return PanelMenu;
2631}(Menu_1["default"]);
2632
2633exports["default"] = PanelMenu;
2634
2635/***/ }),
2636/* 34 */
2637/***/ (function(module, exports) {
2638
2639module.exports = function (bitmap, value) {
2640 return {
2641 enumerable: !(bitmap & 1),
2642 configurable: !(bitmap & 2),
2643 writable: !(bitmap & 4),
2644 value: value
2645 };
2646};
2647
2648
2649/***/ }),
2650/* 35 */
2651/***/ (function(module, exports, __webpack_require__) {
2652
2653var toInteger = __webpack_require__(58);
2654
2655var min = Math.min;
2656
2657// `ToLength` abstract operation
2658// https://tc39.github.io/ecma262/#sec-tolength
2659module.exports = function (argument) {
2660 return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
2661};
2662
2663
2664/***/ }),
2665/* 36 */
2666/***/ (function(module, exports) {
2667
2668module.exports = true;
2669
2670
2671/***/ }),
2672/* 37 */
2673/***/ (function(module, exports, __webpack_require__) {
2674
2675var requireObjectCoercible = __webpack_require__(45);
2676
2677// `ToObject` abstract operation
2678// https://tc39.github.io/ecma262/#sec-toobject
2679module.exports = function (argument) {
2680 return Object(requireObjectCoercible(argument));
2681};
2682
2683
2684/***/ }),
2685/* 38 */
2686/***/ (function(module, exports, __webpack_require__) {
2687
2688var anObject = __webpack_require__(23);
2689var isArrayIteratorMethod = __webpack_require__(158);
2690var toLength = __webpack_require__(35);
2691var bind = __webpack_require__(46);
2692var getIteratorMethod = __webpack_require__(159);
2693var iteratorClose = __webpack_require__(160);
2694
2695var Result = function (stopped, result) {
2696 this.stopped = stopped;
2697 this.result = result;
2698};
2699
2700module.exports = function (iterable, unboundFunction, options) {
2701 var that = options && options.that;
2702 var AS_ENTRIES = !!(options && options.AS_ENTRIES);
2703 var IS_ITERATOR = !!(options && options.IS_ITERATOR);
2704 var INTERRUPTED = !!(options && options.INTERRUPTED);
2705 var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
2706 var iterator, iterFn, index, length, result, next, step;
2707
2708 var stop = function (condition) {
2709 if (iterator) iteratorClose(iterator);
2710 return new Result(true, condition);
2711 };
2712
2713 var callFn = function (value) {
2714 if (AS_ENTRIES) {
2715 anObject(value);
2716 return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
2717 } return INTERRUPTED ? fn(value, stop) : fn(value);
2718 };
2719
2720 if (IS_ITERATOR) {
2721 iterator = iterable;
2722 } else {
2723 iterFn = getIteratorMethod(iterable);
2724 if (typeof iterFn != 'function') throw TypeError('Target is not iterable');
2725 // optimisation for array iterators
2726 if (isArrayIteratorMethod(iterFn)) {
2727 for (index = 0, length = toLength(iterable.length); length > index; index++) {
2728 result = callFn(iterable[index]);
2729 if (result && result instanceof Result) return result;
2730 } return new Result(false);
2731 }
2732 iterator = iterFn.call(iterable);
2733 }
2734
2735 next = iterator.next;
2736 while (!(step = next.call(iterator)).done) {
2737 try {
2738 result = callFn(step.value);
2739 } catch (error) {
2740 iteratorClose(iterator);
2741 throw error;
2742 }
2743 if (typeof result == 'object' && result && result instanceof Result) return result;
2744 } return new Result(false);
2745};
2746
2747
2748/***/ }),
2749/* 39 */
2750/***/ (function(module, exports) {
2751
2752module.exports = {};
2753
2754
2755/***/ }),
2756/* 40 */
2757/***/ (function(module, exports, __webpack_require__) {
2758
2759var TO_STRING_TAG_SUPPORT = __webpack_require__(77);
2760var defineProperty = __webpack_require__(17).f;
2761var createNonEnumerableProperty = __webpack_require__(16);
2762var has = __webpack_require__(15);
2763var toString = __webpack_require__(162);
2764var wellKnownSymbol = __webpack_require__(9);
2765
2766var TO_STRING_TAG = wellKnownSymbol('toStringTag');
2767
2768module.exports = function (it, TAG, STATIC, SET_METHOD) {
2769 if (it) {
2770 var target = STATIC ? it : it.prototype;
2771 if (!has(target, TO_STRING_TAG)) {
2772 defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
2773 }
2774 if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {
2775 createNonEnumerableProperty(target, 'toString', toString);
2776 }
2777 }
2778};
2779
2780
2781/***/ }),
2782/* 41 */
2783/***/ (function(module, exports, __webpack_require__) {
2784
2785var NATIVE_WEAK_MAP = __webpack_require__(166);
2786var global = __webpack_require__(8);
2787var isObject = __webpack_require__(13);
2788var createNonEnumerableProperty = __webpack_require__(16);
2789var objectHas = __webpack_require__(15);
2790var shared = __webpack_require__(73);
2791var sharedKey = __webpack_require__(59);
2792var hiddenKeys = __webpack_require__(48);
2793
2794var WeakMap = global.WeakMap;
2795var set, get, has;
2796
2797var enforce = function (it) {
2798 return has(it) ? get(it) : set(it, {});
2799};
2800
2801var getterFor = function (TYPE) {
2802 return function (it) {
2803 var state;
2804 if (!isObject(it) || (state = get(it)).type !== TYPE) {
2805 throw TypeError('Incompatible receiver, ' + TYPE + ' required');
2806 } return state;
2807 };
2808};
2809
2810if (NATIVE_WEAK_MAP) {
2811 var store = shared.state || (shared.state = new WeakMap());
2812 var wmget = store.get;
2813 var wmhas = store.has;
2814 var wmset = store.set;
2815 set = function (it, metadata) {
2816 metadata.facade = it;
2817 wmset.call(store, it, metadata);
2818 return metadata;
2819 };
2820 get = function (it) {
2821 return wmget.call(store, it) || {};
2822 };
2823 has = function (it) {
2824 return wmhas.call(store, it);
2825 };
2826} else {
2827 var STATE = sharedKey('state');
2828 hiddenKeys[STATE] = true;
2829 set = function (it, metadata) {
2830 metadata.facade = it;
2831 createNonEnumerableProperty(it, STATE, metadata);
2832 return metadata;
2833 };
2834 get = function (it) {
2835 return objectHas(it, STATE) ? it[STATE] : {};
2836 };
2837 has = function (it) {
2838 return objectHas(it, STATE);
2839 };
2840}
2841
2842module.exports = {
2843 set: set,
2844 get: get,
2845 has: has,
2846 enforce: enforce,
2847 getterFor: getterFor
2848};
2849
2850
2851/***/ }),
2852/* 42 */
2853/***/ (function(module, exports, __webpack_require__) {
2854
2855var bind = __webpack_require__(46);
2856var IndexedObject = __webpack_require__(67);
2857var toObject = __webpack_require__(37);
2858var toLength = __webpack_require__(35);
2859var arraySpeciesCreate = __webpack_require__(85);
2860
2861var push = [].push;
2862
2863// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation
2864var createMethod = function (TYPE) {
2865 var IS_MAP = TYPE == 1;
2866 var IS_FILTER = TYPE == 2;
2867 var IS_SOME = TYPE == 3;
2868 var IS_EVERY = TYPE == 4;
2869 var IS_FIND_INDEX = TYPE == 6;
2870 var IS_FILTER_OUT = TYPE == 7;
2871 var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
2872 return function ($this, callbackfn, that, specificCreate) {
2873 var O = toObject($this);
2874 var self = IndexedObject(O);
2875 var boundFunction = bind(callbackfn, that, 3);
2876 var length = toLength(self.length);
2877 var index = 0;
2878 var create = specificCreate || arraySpeciesCreate;
2879 var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;
2880 var value, result;
2881 for (;length > index; index++) if (NO_HOLES || index in self) {
2882 value = self[index];
2883 result = boundFunction(value, index, O);
2884 if (TYPE) {
2885 if (IS_MAP) target[index] = result; // map
2886 else if (result) switch (TYPE) {
2887 case 3: return true; // some
2888 case 5: return value; // find
2889 case 6: return index; // findIndex
2890 case 2: push.call(target, value); // filter
2891 } else switch (TYPE) {
2892 case 4: return false; // every
2893 case 7: push.call(target, value); // filterOut
2894 }
2895 }
2896 }
2897 return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
2898 };
2899};
2900
2901module.exports = {
2902 // `Array.prototype.forEach` method
2903 // https://tc39.github.io/ecma262/#sec-array.prototype.foreach
2904 forEach: createMethod(0),
2905 // `Array.prototype.map` method
2906 // https://tc39.github.io/ecma262/#sec-array.prototype.map
2907 map: createMethod(1),
2908 // `Array.prototype.filter` method
2909 // https://tc39.github.io/ecma262/#sec-array.prototype.filter
2910 filter: createMethod(2),
2911 // `Array.prototype.some` method
2912 // https://tc39.github.io/ecma262/#sec-array.prototype.some
2913 some: createMethod(3),
2914 // `Array.prototype.every` method
2915 // https://tc39.github.io/ecma262/#sec-array.prototype.every
2916 every: createMethod(4),
2917 // `Array.prototype.find` method
2918 // https://tc39.github.io/ecma262/#sec-array.prototype.find
2919 find: createMethod(5),
2920 // `Array.prototype.findIndex` method
2921 // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
2922 findIndex: createMethod(6),
2923 // `Array.prototype.filterOut` method
2924 // https://github.com/tc39/proposal-array-filtering
2925 filterOut: createMethod(7)
2926};
2927
2928
2929/***/ }),
2930/* 43 */
2931/***/ (function(module, exports, __webpack_require__) {
2932
2933"use strict";
2934
2935/**
2936 * @description Tooltip class
2937 * @author wangfupeng
2938 */
2939
2940var _interopRequireDefault = __webpack_require__(0);
2941
2942var _forEach = _interopRequireDefault(__webpack_require__(6));
2943
2944var _defineProperty = _interopRequireDefault(__webpack_require__(1));
2945
2946var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
2947 return mod && mod.__esModule ? mod : {
2948 "default": mod
2949 };
2950};
2951
2952(0, _defineProperty["default"])(exports, "__esModule", {
2953 value: true
2954});
2955
2956var dom_core_1 = __importDefault(__webpack_require__(2));
2957
2958var Tooltip =
2959/** @class */
2960function () {
2961 function Tooltip(editor, $elem, conf) {
2962 this.editor = editor;
2963 this.$targetElem = $elem;
2964 this.conf = conf;
2965 this._show = false;
2966 this._isInsertTextContainer = false; // 定义 container
2967
2968 var $container = dom_core_1["default"]('<div></div>');
2969 $container.addClass('w-e-tooltip');
2970 this.$container = $container;
2971 }
2972 /**
2973 * 获取 tooltip 定位
2974 */
2975
2976
2977 Tooltip.prototype.getPositionData = function () {
2978 var $container = this.$container;
2979 var top = 0;
2980 var left = 0; // tooltip 的高度
2981
2982 var tooltipHeight = 20; // 网页的 scrollTop
2983
2984 var pageScrollTop = document.documentElement.scrollTop; // 目标元素的 rect
2985
2986 var targetElemRect = this.$targetElem.getBoundingClientRect(); // 编辑区域的 rect
2987
2988 var textElemRect = this.editor.$textElem.getBoundingClientRect(); // 获取基于 textContainerElem 的 位置信息
2989
2990 var targetOffset = this.$targetElem.getOffsetData();
2991 var targetParentElem = dom_core_1["default"](targetOffset.parent); // 获取 编辑区域的滚动条信息
2992
2993 var scrollTop = this.editor.$textElem.elems[0].scrollTop; // 是否插入 textContainer 中
2994
2995 this._isInsertTextContainer = targetParentElem.equal(this.editor.$textContainerElem);
2996
2997 if (this._isInsertTextContainer) {
2998 // 父容器的高度
2999 var targetParentElemHeight = targetParentElem.getClientHeight(); // 相对于父容器的位置信息
3000
3001 var offsetTop = targetOffset.top,
3002 offsetLeft = targetOffset.left,
3003 offsetHeight = targetOffset.height; // 元素基于父容器的 绝对top信息
3004
3005 var absoluteTop = offsetTop - scrollTop;
3006
3007 if (absoluteTop > tooltipHeight + 5) {
3008 // 说明模板元素的顶部空间足够
3009 top = absoluteTop - tooltipHeight - 15;
3010 $container.addClass('w-e-tooltip-up');
3011 } else if (absoluteTop + offsetHeight + tooltipHeight < targetParentElemHeight) {
3012 // 说明模板元素的底部空间足够
3013 top = absoluteTop + offsetHeight + 10;
3014 $container.addClass('w-e-tooltip-down');
3015 } else {
3016 // 其他情况,tooltip 放在目标元素左上角
3017 top = (absoluteTop > 0 ? absoluteTop : 0) + tooltipHeight + 10;
3018 $container.addClass('w-e-tooltip-down');
3019 } // 计算 left
3020
3021
3022 if (offsetLeft < 0) {
3023 left = 0;
3024 } else {
3025 left = offsetLeft;
3026 }
3027 } else {
3028 if (targetElemRect.top < tooltipHeight) {
3029 // 说明目标元素的顶部,因滑动隐藏在浏览器上方。tooltip 要放在目标元素下面
3030 top = targetElemRect.bottom + pageScrollTop + 5; // 5px 间距
3031
3032 $container.addClass('w-e-tooltip-down');
3033 } else if (targetElemRect.top - textElemRect.top < tooltipHeight) {
3034 // 说明目标元素的顶部,因滑动隐藏在编辑区域上方。tooltip 要放在目标元素下面
3035 top = targetElemRect.bottom + pageScrollTop + 5; // 5px 间距
3036
3037 $container.addClass('w-e-tooltip-down');
3038 } else {
3039 // 其他情况,tooltip 放在目标元素上方
3040 top = targetElemRect.top + pageScrollTop - tooltipHeight - 15; // 减去 toolbar 的高度,还有 15px 间距
3041
3042 $container.addClass('w-e-tooltip-up');
3043 } // 计算 left
3044
3045
3046 if (targetElemRect.left < 0) {
3047 left = 0;
3048 } else {
3049 left = targetElemRect.left;
3050 }
3051 } // 返回结果
3052
3053
3054 return {
3055 top: top,
3056 left: left
3057 };
3058 };
3059 /**
3060 * 添加 tooltip 菜单
3061 */
3062
3063
3064 Tooltip.prototype.appendMenus = function () {
3065 var _this = this;
3066
3067 var conf = this.conf;
3068 var editor = this.editor;
3069 var $targetElem = this.$targetElem;
3070 var $container = this.$container;
3071 (0, _forEach["default"])(conf).call(conf, function (item, index) {
3072 // 添加元素
3073 var $elem = item.$elem;
3074 var $wrapper = dom_core_1["default"]('<div></div>');
3075 $wrapper.addClass('w-e-tooltip-item-wrapper ');
3076 $wrapper.append($elem);
3077 $container.append($wrapper); // 绑定点击事件
3078
3079 $elem.on('click', function (e) {
3080 e.preventDefault();
3081 var res = item.onClick(editor, $targetElem);
3082 if (res) _this.remove();
3083 });
3084 });
3085 };
3086 /**
3087 * 创建 tooltip
3088 */
3089
3090
3091 Tooltip.prototype.create = function () {
3092 var editor = this.editor;
3093 var $container = this.$container; // 生成 container 的内容
3094
3095 this.appendMenus(); // 设置定位
3096
3097 var _a = this.getPositionData(),
3098 top = _a.top,
3099 left = _a.left;
3100
3101 $container.css('top', top + "px");
3102 $container.css('left', left + "px"); // 设置 z-index
3103
3104 $container.css('z-index', editor.zIndex.get('tooltip')); // 添加到 DOM
3105
3106 if (this._isInsertTextContainer) {
3107 this.editor.$textContainerElem.append($container);
3108 } else {
3109 dom_core_1["default"]('body').append($container);
3110 }
3111
3112 this._show = true;
3113 };
3114 /**
3115 * 移除该 tooltip
3116 */
3117
3118
3119 Tooltip.prototype.remove = function () {
3120 this.$container.remove();
3121 this._show = false;
3122 };
3123
3124 (0, _defineProperty["default"])(Tooltip.prototype, "isShow", {
3125 /**
3126 * 是否显示
3127 */
3128 get: function get() {
3129 return this._show;
3130 },
3131 enumerable: false,
3132 configurable: true
3133 });
3134 return Tooltip;
3135}();
3136
3137exports["default"] = Tooltip;
3138
3139/***/ }),
3140/* 44 */
3141/***/ (function(module, exports) {
3142
3143var toString = {}.toString;
3144
3145module.exports = function (it) {
3146 return toString.call(it).slice(8, -1);
3147};
3148
3149
3150/***/ }),
3151/* 45 */
3152/***/ (function(module, exports) {
3153
3154// `RequireObjectCoercible` abstract operation
3155// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
3156module.exports = function (it) {
3157 if (it == undefined) throw TypeError("Can't call method on " + it);
3158 return it;
3159};
3160
3161
3162/***/ }),
3163/* 46 */
3164/***/ (function(module, exports, __webpack_require__) {
3165
3166var aFunction = __webpack_require__(30);
3167
3168// optional / simple context binding
3169module.exports = function (fn, that, length) {
3170 aFunction(fn);
3171 if (that === undefined) return fn;
3172 switch (length) {
3173 case 0: return function () {
3174 return fn.call(that);
3175 };
3176 case 1: return function (a) {
3177 return fn.call(that, a);
3178 };
3179 case 2: return function (a, b) {
3180 return fn.call(that, a, b);
3181 };
3182 case 3: return function (a, b, c) {
3183 return fn.call(that, a, b, c);
3184 };
3185 }
3186 return function (/* ...args */) {
3187 return fn.apply(that, arguments);
3188 };
3189};
3190
3191
3192/***/ }),
3193/* 47 */
3194/***/ (function(module, exports, __webpack_require__) {
3195
3196var anObject = __webpack_require__(23);
3197var defineProperties = __webpack_require__(135);
3198var enumBugKeys = __webpack_require__(71);
3199var hiddenKeys = __webpack_require__(48);
3200var html = __webpack_require__(99);
3201var documentCreateElement = __webpack_require__(68);
3202var sharedKey = __webpack_require__(59);
3203
3204var GT = '>';
3205var LT = '<';
3206var PROTOTYPE = 'prototype';
3207var SCRIPT = 'script';
3208var IE_PROTO = sharedKey('IE_PROTO');
3209
3210var EmptyConstructor = function () { /* empty */ };
3211
3212var scriptTag = function (content) {
3213 return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
3214};
3215
3216// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
3217var NullProtoObjectViaActiveX = function (activeXDocument) {
3218 activeXDocument.write(scriptTag(''));
3219 activeXDocument.close();
3220 var temp = activeXDocument.parentWindow.Object;
3221 activeXDocument = null; // avoid memory leak
3222 return temp;
3223};
3224
3225// Create object with fake `null` prototype: use iframe Object with cleared prototype
3226var NullProtoObjectViaIFrame = function () {
3227 // Thrash, waste and sodomy: IE GC bug
3228 var iframe = documentCreateElement('iframe');
3229 var JS = 'java' + SCRIPT + ':';
3230 var iframeDocument;
3231 iframe.style.display = 'none';
3232 html.appendChild(iframe);
3233 // https://github.com/zloirock/core-js/issues/475
3234 iframe.src = String(JS);
3235 iframeDocument = iframe.contentWindow.document;
3236 iframeDocument.open();
3237 iframeDocument.write(scriptTag('document.F=Object'));
3238 iframeDocument.close();
3239 return iframeDocument.F;
3240};
3241
3242// Check for document.domain and active x support
3243// No need to use active x approach when document.domain is not set
3244// see https://github.com/es-shims/es5-shim/issues/150
3245// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
3246// avoid IE GC bug
3247var activeXDocument;
3248var NullProtoObject = function () {
3249 try {
3250 /* global ActiveXObject */
3251 activeXDocument = document.domain && new ActiveXObject('htmlfile');
3252 } catch (error) { /* ignore */ }
3253 NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
3254 var length = enumBugKeys.length;
3255 while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
3256 return NullProtoObject();
3257};
3258
3259hiddenKeys[IE_PROTO] = true;
3260
3261// `Object.create` method
3262// https://tc39.github.io/ecma262/#sec-object.create
3263module.exports = Object.create || function create(O, Properties) {
3264 var result;
3265 if (O !== null) {
3266 EmptyConstructor[PROTOTYPE] = anObject(O);
3267 result = new EmptyConstructor();
3268 EmptyConstructor[PROTOTYPE] = null;
3269 // add "__proto__" for Object.getPrototypeOf polyfill
3270 result[IE_PROTO] = O;
3271 } else result = NullProtoObject();
3272 return Properties === undefined ? result : defineProperties(result, Properties);
3273};
3274
3275
3276/***/ }),
3277/* 48 */
3278/***/ (function(module, exports) {
3279
3280module.exports = {};
3281
3282
3283/***/ }),
3284/* 49 */
3285/***/ (function(module, exports, __webpack_require__) {
3286
3287var createNonEnumerableProperty = __webpack_require__(16);
3288
3289module.exports = function (target, key, value, options) {
3290 if (options && options.enumerable) target[key] = value;
3291 else createNonEnumerableProperty(target, key, value);
3292};
3293
3294
3295/***/ }),
3296/* 50 */
3297/***/ (function(module, exports, __webpack_require__) {
3298
3299__webpack_require__(172);
3300var DOMIterables = __webpack_require__(173);
3301var global = __webpack_require__(8);
3302var classof = __webpack_require__(61);
3303var createNonEnumerableProperty = __webpack_require__(16);
3304var Iterators = __webpack_require__(39);
3305var wellKnownSymbol = __webpack_require__(9);
3306
3307var TO_STRING_TAG = wellKnownSymbol('toStringTag');
3308
3309for (var COLLECTION_NAME in DOMIterables) {
3310 var Collection = global[COLLECTION_NAME];
3311 var CollectionPrototype = Collection && Collection.prototype;
3312 if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {
3313 createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
3314 }
3315 Iterators[COLLECTION_NAME] = Iterators.Array;
3316}
3317
3318
3319/***/ }),
3320/* 51 */
3321/***/ (function(module, exports, __webpack_require__) {
3322
3323var classof = __webpack_require__(44);
3324
3325// `IsArray` abstract operation
3326// https://tc39.github.io/ecma262/#sec-isarray
3327module.exports = Array.isArray || function isArray(arg) {
3328 return classof(arg) == 'Array';
3329};
3330
3331
3332/***/ }),
3333/* 52 */
3334/***/ (function(module, exports, __webpack_require__) {
3335
3336var fails = __webpack_require__(12);
3337var wellKnownSymbol = __webpack_require__(9);
3338var V8_VERSION = __webpack_require__(82);
3339
3340var SPECIES = wellKnownSymbol('species');
3341
3342module.exports = function (METHOD_NAME) {
3343 // We can't use this feature detection in V8 since it causes
3344 // deoptimization and serious performance degradation
3345 // https://github.com/zloirock/core-js/issues/677
3346 return V8_VERSION >= 51 || !fails(function () {
3347 var array = [];
3348 var constructor = array.constructor = {};
3349 constructor[SPECIES] = function () {
3350 return { foo: 1 };
3351 };
3352 return array[METHOD_NAME](Boolean).foo !== 1;
3353 });
3354};
3355
3356
3357/***/ }),
3358/* 53 */
3359/***/ (function(module, exports, __webpack_require__) {
3360
3361module.exports = __webpack_require__(202);
3362
3363/***/ }),
3364/* 54 */
3365/***/ (function(module, exports, __webpack_require__) {
3366
3367module.exports = __webpack_require__(254);
3368
3369/***/ }),
3370/* 55 */
3371/***/ (function(module, exports, __webpack_require__) {
3372
3373"use strict";
3374
3375var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
3376var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
3377
3378// Nashorn ~ JDK8 bug
3379var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
3380
3381// `Object.prototype.propertyIsEnumerable` method implementation
3382// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
3383exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
3384 var descriptor = getOwnPropertyDescriptor(this, V);
3385 return !!descriptor && descriptor.enumerable;
3386} : nativePropertyIsEnumerable;
3387
3388
3389/***/ }),
3390/* 56 */
3391/***/ (function(module, exports, __webpack_require__) {
3392
3393var isObject = __webpack_require__(13);
3394
3395// `ToPrimitive` abstract operation
3396// https://tc39.github.io/ecma262/#sec-toprimitive
3397// instead of the ES6 spec version, we didn't implement @@toPrimitive case
3398// and the second argument - flag - preferred type is a string
3399module.exports = function (input, PREFERRED_STRING) {
3400 if (!isObject(input)) return input;
3401 var fn, val;
3402 if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
3403 if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
3404 if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
3405 throw TypeError("Can't convert object to primitive value");
3406};
3407
3408
3409/***/ }),
3410/* 57 */
3411/***/ (function(module, exports, __webpack_require__) {
3412
3413var internalObjectKeys = __webpack_require__(98);
3414var enumBugKeys = __webpack_require__(71);
3415
3416// `Object.keys` method
3417// https://tc39.github.io/ecma262/#sec-object.keys
3418module.exports = Object.keys || function keys(O) {
3419 return internalObjectKeys(O, enumBugKeys);
3420};
3421
3422
3423/***/ }),
3424/* 58 */
3425/***/ (function(module, exports) {
3426
3427var ceil = Math.ceil;
3428var floor = Math.floor;
3429
3430// `ToInteger` abstract operation
3431// https://tc39.github.io/ecma262/#sec-tointeger
3432module.exports = function (argument) {
3433 return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
3434};
3435
3436
3437/***/ }),
3438/* 59 */
3439/***/ (function(module, exports, __webpack_require__) {
3440
3441var shared = __webpack_require__(72);
3442var uid = __webpack_require__(60);
3443
3444var keys = shared('keys');
3445
3446module.exports = function (key) {
3447 return keys[key] || (keys[key] = uid(key));
3448};
3449
3450
3451/***/ }),
3452/* 60 */
3453/***/ (function(module, exports) {
3454
3455var id = 0;
3456var postfix = Math.random();
3457
3458module.exports = function (key) {
3459 return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
3460};
3461
3462
3463/***/ }),
3464/* 61 */
3465/***/ (function(module, exports, __webpack_require__) {
3466
3467var TO_STRING_TAG_SUPPORT = __webpack_require__(77);
3468var classofRaw = __webpack_require__(44);
3469var wellKnownSymbol = __webpack_require__(9);
3470
3471var TO_STRING_TAG = wellKnownSymbol('toStringTag');
3472// ES3 wrong here
3473var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
3474
3475// fallback for IE11 Script Access Denied error
3476var tryGet = function (it, key) {
3477 try {
3478 return it[key];
3479 } catch (error) { /* empty */ }
3480};
3481
3482// getting tag from ES6+ `Object.prototype.toString`
3483module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
3484 var O, tag, result;
3485 return it === undefined ? 'Undefined' : it === null ? 'Null'
3486 // @@toStringTag case
3487 : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
3488 // builtinTag case
3489 : CORRECT_ARGUMENTS ? classofRaw(O)
3490 // ES3 arguments fallback
3491 : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
3492};
3493
3494
3495/***/ }),
3496/* 62 */
3497/***/ (function(module, exports) {
3498
3499// empty
3500
3501
3502/***/ }),
3503/* 63 */
3504/***/ (function(module, exports, __webpack_require__) {
3505
3506"use strict";
3507
3508var aFunction = __webpack_require__(30);
3509
3510var PromiseCapability = function (C) {
3511 var resolve, reject;
3512 this.promise = new C(function ($$resolve, $$reject) {
3513 if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
3514 resolve = $$resolve;
3515 reject = $$reject;
3516 });
3517 this.resolve = aFunction(resolve);
3518 this.reject = aFunction(reject);
3519};
3520
3521// 25.4.1.5 NewPromiseCapability(C)
3522module.exports.f = function (C) {
3523 return new PromiseCapability(C);
3524};
3525
3526
3527/***/ }),
3528/* 64 */
3529/***/ (function(module, exports, __webpack_require__) {
3530
3531"use strict";
3532
3533var charAt = __webpack_require__(170).charAt;
3534var InternalStateModule = __webpack_require__(41);
3535var defineIterator = __webpack_require__(83);
3536
3537var STRING_ITERATOR = 'String Iterator';
3538var setInternalState = InternalStateModule.set;
3539var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
3540
3541// `String.prototype[@@iterator]` method
3542// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
3543defineIterator(String, 'String', function (iterated) {
3544 setInternalState(this, {
3545 type: STRING_ITERATOR,
3546 string: String(iterated),
3547 index: 0
3548 });
3549// `%StringIteratorPrototype%.next` method
3550// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
3551}, function next() {
3552 var state = getInternalState(this);
3553 var string = state.string;
3554 var index = state.index;
3555 var point;
3556 if (index >= string.length) return { value: undefined, done: true };
3557 point = charAt(string, index);
3558 state.index += point.length;
3559 return { value: point, done: false };
3560});
3561
3562
3563/***/ }),
3564/* 65 */
3565/***/ (function(module, exports) {
3566
3567// a string of all valid unicode whitespaces
3568// eslint-disable-next-line max-len
3569module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
3570
3571
3572/***/ }),
3573/* 66 */
3574/***/ (function(module, exports, __webpack_require__) {
3575
3576var DESCRIPTORS = __webpack_require__(14);
3577var propertyIsEnumerableModule = __webpack_require__(55);
3578var createPropertyDescriptor = __webpack_require__(34);
3579var toIndexedObject = __webpack_require__(25);
3580var toPrimitive = __webpack_require__(56);
3581var has = __webpack_require__(15);
3582var IE8_DOM_DEFINE = __webpack_require__(96);
3583
3584var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
3585
3586// `Object.getOwnPropertyDescriptor` method
3587// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
3588exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
3589 O = toIndexedObject(O);
3590 P = toPrimitive(P, true);
3591 if (IE8_DOM_DEFINE) try {
3592 return nativeGetOwnPropertyDescriptor(O, P);
3593 } catch (error) { /* empty */ }
3594 if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
3595};
3596
3597
3598/***/ }),
3599/* 67 */
3600/***/ (function(module, exports, __webpack_require__) {
3601
3602var fails = __webpack_require__(12);
3603var classof = __webpack_require__(44);
3604
3605var split = ''.split;
3606
3607// fallback for non-array-like ES3 and non-enumerable old V8 strings
3608module.exports = fails(function () {
3609 // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
3610 // eslint-disable-next-line no-prototype-builtins
3611 return !Object('z').propertyIsEnumerable(0);
3612}) ? function (it) {
3613 return classof(it) == 'String' ? split.call(it, '') : Object(it);
3614} : Object;
3615
3616
3617/***/ }),
3618/* 68 */
3619/***/ (function(module, exports, __webpack_require__) {
3620
3621var global = __webpack_require__(8);
3622var isObject = __webpack_require__(13);
3623
3624var document = global.document;
3625// typeof document.createElement is 'object' in old IE
3626var EXISTS = isObject(document) && isObject(document.createElement);
3627
3628module.exports = function (it) {
3629 return EXISTS ? document.createElement(it) : {};
3630};
3631
3632
3633/***/ }),
3634/* 69 */
3635/***/ (function(module, exports, __webpack_require__) {
3636
3637var toIndexedObject = __webpack_require__(25);
3638var toLength = __webpack_require__(35);
3639var toAbsoluteIndex = __webpack_require__(70);
3640
3641// `Array.prototype.{ indexOf, includes }` methods implementation
3642var createMethod = function (IS_INCLUDES) {
3643 return function ($this, el, fromIndex) {
3644 var O = toIndexedObject($this);
3645 var length = toLength(O.length);
3646 var index = toAbsoluteIndex(fromIndex, length);
3647 var value;
3648 // Array#includes uses SameValueZero equality algorithm
3649 // eslint-disable-next-line no-self-compare
3650 if (IS_INCLUDES && el != el) while (length > index) {
3651 value = O[index++];
3652 // eslint-disable-next-line no-self-compare
3653 if (value != value) return true;
3654 // Array#indexOf ignores holes, Array#includes - not
3655 } else for (;length > index; index++) {
3656 if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
3657 } return !IS_INCLUDES && -1;
3658 };
3659};
3660
3661module.exports = {
3662 // `Array.prototype.includes` method
3663 // https://tc39.github.io/ecma262/#sec-array.prototype.includes
3664 includes: createMethod(true),
3665 // `Array.prototype.indexOf` method
3666 // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
3667 indexOf: createMethod(false)
3668};
3669
3670
3671/***/ }),
3672/* 70 */
3673/***/ (function(module, exports, __webpack_require__) {
3674
3675var toInteger = __webpack_require__(58);
3676
3677var max = Math.max;
3678var min = Math.min;
3679
3680// Helper for a popular repeating case of the spec:
3681// Let integer be ? ToInteger(index).
3682// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
3683module.exports = function (index, length) {
3684 var integer = toInteger(index);
3685 return integer < 0 ? max(integer + length, 0) : min(integer, length);
3686};
3687
3688
3689/***/ }),
3690/* 71 */
3691/***/ (function(module, exports) {
3692
3693// IE8- don't enum bug keys
3694module.exports = [
3695 'constructor',
3696 'hasOwnProperty',
3697 'isPrototypeOf',
3698 'propertyIsEnumerable',
3699 'toLocaleString',
3700 'toString',
3701 'valueOf'
3702];
3703
3704
3705/***/ }),
3706/* 72 */
3707/***/ (function(module, exports, __webpack_require__) {
3708
3709var IS_PURE = __webpack_require__(36);
3710var store = __webpack_require__(73);
3711
3712(module.exports = function (key, value) {
3713 return store[key] || (store[key] = value !== undefined ? value : {});
3714})('versions', []).push({
3715 version: '3.8.0',
3716 mode: IS_PURE ? 'pure' : 'global',
3717 copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
3718});
3719
3720
3721/***/ }),
3722/* 73 */
3723/***/ (function(module, exports, __webpack_require__) {
3724
3725var global = __webpack_require__(8);
3726var setGlobal = __webpack_require__(136);
3727
3728var SHARED = '__core-js_shared__';
3729var store = global[SHARED] || setGlobal(SHARED, {});
3730
3731module.exports = store;
3732
3733
3734/***/ }),
3735/* 74 */
3736/***/ (function(module, exports, __webpack_require__) {
3737
3738var has = __webpack_require__(15);
3739var toObject = __webpack_require__(37);
3740var sharedKey = __webpack_require__(59);
3741var CORRECT_PROTOTYPE_GETTER = __webpack_require__(156);
3742
3743var IE_PROTO = sharedKey('IE_PROTO');
3744var ObjectPrototype = Object.prototype;
3745
3746// `Object.getPrototypeOf` method
3747// https://tc39.github.io/ecma262/#sec-object.getprototypeof
3748module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
3749 O = toObject(O);
3750 if (has(O, IE_PROTO)) return O[IE_PROTO];
3751 if (typeof O.constructor == 'function' && O instanceof O.constructor) {
3752 return O.constructor.prototype;
3753 } return O instanceof Object ? ObjectPrototype : null;
3754};
3755
3756
3757/***/ }),
3758/* 75 */
3759/***/ (function(module, exports, __webpack_require__) {
3760
3761var anObject = __webpack_require__(23);
3762var aPossiblePrototype = __webpack_require__(157);
3763
3764// `Object.setPrototypeOf` method
3765// https://tc39.github.io/ecma262/#sec-object.setprototypeof
3766// Works with __proto__ only. Old v8 can't work with null proto objects.
3767/* eslint-disable no-proto */
3768module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
3769 var CORRECT_SETTER = false;
3770 var test = {};
3771 var setter;
3772 try {
3773 setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
3774 setter.call(test, []);
3775 CORRECT_SETTER = test instanceof Array;
3776 } catch (error) { /* empty */ }
3777 return function setPrototypeOf(O, proto) {
3778 anObject(O);
3779 aPossiblePrototype(proto);
3780 if (CORRECT_SETTER) setter.call(O, proto);
3781 else O.__proto__ = proto;
3782 return O;
3783 };
3784}() : undefined);
3785
3786
3787/***/ }),
3788/* 76 */
3789/***/ (function(module, exports, __webpack_require__) {
3790
3791var fails = __webpack_require__(12);
3792
3793module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
3794 // Chrome 38 Symbol has incorrect toString conversion
3795 // eslint-disable-next-line no-undef
3796 return !String(Symbol());
3797});
3798
3799
3800/***/ }),
3801/* 77 */
3802/***/ (function(module, exports, __webpack_require__) {
3803
3804var wellKnownSymbol = __webpack_require__(9);
3805
3806var TO_STRING_TAG = wellKnownSymbol('toStringTag');
3807var test = {};
3808
3809test[TO_STRING_TAG] = 'z';
3810
3811module.exports = String(test) === '[object z]';
3812
3813
3814/***/ }),
3815/* 78 */
3816/***/ (function(module, exports) {
3817
3818module.exports = function (it, Constructor, name) {
3819 if (!(it instanceof Constructor)) {
3820 throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
3821 } return it;
3822};
3823
3824
3825/***/ }),
3826/* 79 */
3827/***/ (function(module, exports, __webpack_require__) {
3828
3829var getBuiltIn = __webpack_require__(26);
3830
3831module.exports = getBuiltIn('navigator', 'userAgent') || '';
3832
3833
3834/***/ }),
3835/* 80 */
3836/***/ (function(module, exports, __webpack_require__) {
3837
3838var classof = __webpack_require__(44);
3839var global = __webpack_require__(8);
3840
3841module.exports = classof(global.process) == 'process';
3842
3843
3844/***/ }),
3845/* 81 */
3846/***/ (function(module, exports) {
3847
3848module.exports = function (exec) {
3849 try {
3850 return { error: false, value: exec() };
3851 } catch (error) {
3852 return { error: true, value: error };
3853 }
3854};
3855
3856
3857/***/ }),
3858/* 82 */
3859/***/ (function(module, exports, __webpack_require__) {
3860
3861var global = __webpack_require__(8);
3862var userAgent = __webpack_require__(79);
3863
3864var process = global.process;
3865var versions = process && process.versions;
3866var v8 = versions && versions.v8;
3867var match, version;
3868
3869if (v8) {
3870 match = v8.split('.');
3871 version = match[0] + match[1];
3872} else if (userAgent) {
3873 match = userAgent.match(/Edge\/(\d+)/);
3874 if (!match || match[1] >= 74) {
3875 match = userAgent.match(/Chrome\/(\d+)/);
3876 if (match) version = match[1];
3877 }
3878}
3879
3880module.exports = version && +version;
3881
3882
3883/***/ }),
3884/* 83 */
3885/***/ (function(module, exports, __webpack_require__) {
3886
3887"use strict";
3888
3889var $ = __webpack_require__(4);
3890var createIteratorConstructor = __webpack_require__(171);
3891var getPrototypeOf = __webpack_require__(74);
3892var setPrototypeOf = __webpack_require__(75);
3893var setToStringTag = __webpack_require__(40);
3894var createNonEnumerableProperty = __webpack_require__(16);
3895var redefine = __webpack_require__(49);
3896var wellKnownSymbol = __webpack_require__(9);
3897var IS_PURE = __webpack_require__(36);
3898var Iterators = __webpack_require__(39);
3899var IteratorsCore = __webpack_require__(109);
3900
3901var IteratorPrototype = IteratorsCore.IteratorPrototype;
3902var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
3903var ITERATOR = wellKnownSymbol('iterator');
3904var KEYS = 'keys';
3905var VALUES = 'values';
3906var ENTRIES = 'entries';
3907
3908var returnThis = function () { return this; };
3909
3910module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
3911 createIteratorConstructor(IteratorConstructor, NAME, next);
3912
3913 var getIterationMethod = function (KIND) {
3914 if (KIND === DEFAULT && defaultIterator) return defaultIterator;
3915 if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
3916 switch (KIND) {
3917 case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
3918 case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
3919 case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
3920 } return function () { return new IteratorConstructor(this); };
3921 };
3922
3923 var TO_STRING_TAG = NAME + ' Iterator';
3924 var INCORRECT_VALUES_NAME = false;
3925 var IterablePrototype = Iterable.prototype;
3926 var nativeIterator = IterablePrototype[ITERATOR]
3927 || IterablePrototype['@@iterator']
3928 || DEFAULT && IterablePrototype[DEFAULT];
3929 var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
3930 var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
3931 var CurrentIteratorPrototype, methods, KEY;
3932
3933 // fix native
3934 if (anyNativeIterator) {
3935 CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
3936 if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
3937 if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
3938 if (setPrototypeOf) {
3939 setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
3940 } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
3941 createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
3942 }
3943 }
3944 // Set @@toStringTag to native iterators
3945 setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
3946 if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
3947 }
3948 }
3949
3950 // fix Array#{values, @@iterator}.name in V8 / FF
3951 if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
3952 INCORRECT_VALUES_NAME = true;
3953 defaultIterator = function values() { return nativeIterator.call(this); };
3954 }
3955
3956 // define iterator
3957 if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
3958 createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
3959 }
3960 Iterators[NAME] = defaultIterator;
3961
3962 // export additional methods
3963 if (DEFAULT) {
3964 methods = {
3965 values: getIterationMethod(VALUES),
3966 keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
3967 entries: getIterationMethod(ENTRIES)
3968 };
3969 if (FORCED) for (KEY in methods) {
3970 if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
3971 redefine(IterablePrototype, KEY, methods[KEY]);
3972 }
3973 } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
3974 }
3975
3976 return methods;
3977};
3978
3979
3980/***/ }),
3981/* 84 */
3982/***/ (function(module, exports) {
3983
3984module.exports = function () { /* empty */ };
3985
3986
3987/***/ }),
3988/* 85 */
3989/***/ (function(module, exports, __webpack_require__) {
3990
3991var isObject = __webpack_require__(13);
3992var isArray = __webpack_require__(51);
3993var wellKnownSymbol = __webpack_require__(9);
3994
3995var SPECIES = wellKnownSymbol('species');
3996
3997// `ArraySpeciesCreate` abstract operation
3998// https://tc39.github.io/ecma262/#sec-arrayspeciescreate
3999module.exports = function (originalArray, length) {
4000 var C;
4001 if (isArray(originalArray)) {
4002 C = originalArray.constructor;
4003 // cross-realm fallback
4004 if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
4005 else if (isObject(C)) {
4006 C = C[SPECIES];
4007 if (C === null) C = undefined;
4008 }
4009 } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
4010};
4011
4012
4013/***/ }),
4014/* 86 */
4015/***/ (function(module, exports, __webpack_require__) {
4016
4017module.exports = __webpack_require__(180);
4018
4019/***/ }),
4020/* 87 */
4021/***/ (function(module, exports, __webpack_require__) {
4022
4023module.exports = __webpack_require__(194);
4024
4025/***/ }),
4026/* 88 */
4027/***/ (function(module, exports, __webpack_require__) {
4028
4029module.exports = __webpack_require__(198);
4030
4031/***/ }),
4032/* 89 */
4033/***/ (function(module, exports, __webpack_require__) {
4034
4035"use strict";
4036
4037var toPrimitive = __webpack_require__(56);
4038var definePropertyModule = __webpack_require__(17);
4039var createPropertyDescriptor = __webpack_require__(34);
4040
4041module.exports = function (object, key, value) {
4042 var propertyKey = toPrimitive(key);
4043 if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
4044 else object[propertyKey] = value;
4045};
4046
4047
4048/***/ }),
4049/* 90 */
4050/***/ (function(module, exports, __webpack_require__) {
4051
4052var requireObjectCoercible = __webpack_require__(45);
4053var whitespaces = __webpack_require__(65);
4054
4055var whitespace = '[' + whitespaces + ']';
4056var ltrim = RegExp('^' + whitespace + whitespace + '*');
4057var rtrim = RegExp(whitespace + whitespace + '*$');
4058
4059// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
4060var createMethod = function (TYPE) {
4061 return function ($this) {
4062 var string = String(requireObjectCoercible($this));
4063 if (TYPE & 1) string = string.replace(ltrim, '');
4064 if (TYPE & 2) string = string.replace(rtrim, '');
4065 return string;
4066 };
4067};
4068
4069module.exports = {
4070 // `String.prototype.{ trimLeft, trimStart }` methods
4071 // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart
4072 start: createMethod(1),
4073 // `String.prototype.{ trimRight, trimEnd }` methods
4074 // https://tc39.github.io/ecma262/#sec-string.prototype.trimend
4075 end: createMethod(2),
4076 // `String.prototype.trim` method
4077 // https://tc39.github.io/ecma262/#sec-string.prototype.trim
4078 trim: createMethod(3)
4079};
4080
4081
4082/***/ }),
4083/* 91 */
4084/***/ (function(module, exports, __webpack_require__) {
4085
4086var _Symbol$iterator = __webpack_require__(222);
4087
4088var _Symbol = __webpack_require__(225);
4089
4090function _typeof(obj) {
4091 "@babel/helpers - typeof";
4092
4093 if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
4094 module.exports = _typeof = function _typeof(obj) {
4095 return typeof obj;
4096 };
4097 } else {
4098 module.exports = _typeof = function _typeof(obj) {
4099 return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
4100 };
4101 }
4102
4103 return _typeof(obj);
4104}
4105
4106module.exports = _typeof;
4107
4108/***/ }),
4109/* 92 */
4110/***/ (function(module, exports, __webpack_require__) {
4111
4112var wellKnownSymbol = __webpack_require__(9);
4113
4114exports.f = wellKnownSymbol;
4115
4116
4117/***/ }),
4118/* 93 */
4119/***/ (function(module, exports, __webpack_require__) {
4120
4121"use strict";
4122
4123/**
4124 * @description Menu class 父类
4125 * @author wangfupeng
4126 */
4127
4128var _interopRequireDefault = __webpack_require__(0);
4129
4130var _forEach = _interopRequireDefault(__webpack_require__(6));
4131
4132var _defineProperty = _interopRequireDefault(__webpack_require__(1));
4133
4134var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4135 return mod && mod.__esModule ? mod : {
4136 "default": mod
4137 };
4138};
4139
4140(0, _defineProperty["default"])(exports, "__esModule", {
4141 value: true
4142});
4143
4144var Panel_1 = __importDefault(__webpack_require__(29));
4145
4146var Menu =
4147/** @class */
4148function () {
4149 function Menu($elem, editor) {
4150 var _this = this;
4151
4152 this.$elem = $elem;
4153 this.editor = editor;
4154 this._active = false; // 绑定菜单点击事件
4155
4156 $elem.on('click', function (e) {
4157 var _context;
4158
4159 Panel_1["default"].hideCurAllPanels(); // 隐藏当前的所有 Panel
4160 // 触发菜单点击的钩子
4161
4162 (0, _forEach["default"])(_context = editor.txt.eventHooks.menuClickEvents).call(_context, function (fn) {
4163 return fn();
4164 });
4165 e.stopPropagation();
4166
4167 if (editor.selection.getRange() == null) {
4168 return;
4169 }
4170
4171 _this.clickHandler(e);
4172 });
4173 }
4174 /**
4175 * 菜单点击事件,子类可重写
4176 * @param e event
4177 */
4178
4179
4180 Menu.prototype.clickHandler = function (e) {};
4181 /**
4182 * 激活菜单,高亮显示
4183 */
4184
4185
4186 Menu.prototype.active = function () {
4187 this._active = true;
4188 this.$elem.addClass('w-e-active');
4189 };
4190 /**
4191 * 取消激活,不再高亮显示
4192 */
4193
4194
4195 Menu.prototype.unActive = function () {
4196 this._active = false;
4197 this.$elem.removeClass('w-e-active');
4198 };
4199
4200 (0, _defineProperty["default"])(Menu.prototype, "isActive", {
4201 /**
4202 * 是否处于激活状态
4203 */
4204 get: function get() {
4205 return this._active;
4206 },
4207 enumerable: false,
4208 configurable: true
4209 });
4210 return Menu;
4211}();
4212
4213exports["default"] = Menu;
4214
4215/***/ }),
4216/* 94 */
4217/***/ (function(module, exports, __webpack_require__) {
4218
4219"use strict";
4220
4221/**
4222 * @description 上传图片
4223 * @author wangfupeng
4224 */
4225
4226var _interopRequireDefault = __webpack_require__(0);
4227
4228var _indexOf = _interopRequireDefault(__webpack_require__(53));
4229
4230var _forEach = _interopRequireDefault(__webpack_require__(6));
4231
4232var _bind = _interopRequireDefault(__webpack_require__(86));
4233
4234var _defineProperty = _interopRequireDefault(__webpack_require__(1));
4235
4236var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4237 return mod && mod.__esModule ? mod : {
4238 "default": mod
4239 };
4240};
4241
4242(0, _defineProperty["default"])(exports, "__esModule", {
4243 value: true
4244});
4245
4246var util_1 = __webpack_require__(7);
4247
4248var upload_core_1 = __importDefault(__webpack_require__(331));
4249
4250var progress_1 = __importDefault(__webpack_require__(332));
4251
4252var UploadImg =
4253/** @class */
4254function () {
4255 function UploadImg(editor) {
4256 this.editor = editor;
4257 }
4258 /**
4259 * 往编辑区域插入图片
4260 * @param src 图片地址
4261 */
4262
4263
4264 UploadImg.prototype.insertImg = function (src) {
4265 var editor = this.editor;
4266 var config = editor.config;
4267 var i18nPrefix = 'validate.';
4268
4269 var t = function t(text, prefix) {
4270 if (prefix === void 0) {
4271 prefix = i18nPrefix;
4272 }
4273
4274 return editor.i18next.t(prefix + text);
4275 }; // 先插入图片,无论是否能成功
4276
4277
4278 editor.cmd["do"]('insertHTML', "<img src=\"" + src + "\" style=\"max-width:100%;\"/>"); // 执行回调函数
4279
4280 config.linkImgCallback(src); // 加载图片
4281
4282 var img = document.createElement('img');
4283
4284 img.onload = function () {
4285 img = null;
4286 };
4287
4288 img.onerror = function () {
4289 config.customAlert(t('插入图片错误'), 'error', "wangEditor: " + t('插入图片错误') + "\uFF0C" + t('图片链接') + " \"" + src + "\"\uFF0C" + t('下载链接失败'));
4290 img = null;
4291 };
4292
4293 img.onabort = function () {
4294 return img = null;
4295 };
4296
4297 img.src = src;
4298 };
4299 /**
4300 * 上传图片
4301 * @param files 文件列表
4302 */
4303
4304
4305 UploadImg.prototype.uploadImg = function (files) {
4306 var _this_1 = this;
4307
4308 if (!files.length) {
4309 return;
4310 }
4311
4312 var editor = this.editor;
4313 var config = editor.config; // ------------------------------ i18next ------------------------------
4314
4315 var i18nPrefix = 'validate.';
4316
4317 var t = function t(text) {
4318 return editor.i18next.t(i18nPrefix + text);
4319 }; // ------------------------------ 获取配置信息 ------------------------------
4320 // 服务端地址
4321
4322
4323 var uploadImgServer = config.uploadImgServer; // base64 格式
4324
4325 var uploadImgShowBase64 = config.uploadImgShowBase64; // 图片最大体积
4326
4327 var maxSize = config.uploadImgMaxSize;
4328 var maxSizeM = maxSize / 1024 / 1024; // 一次最多上传图片数量
4329
4330 var maxLength = config.uploadImgMaxLength; // 自定义 fileName
4331
4332 var uploadFileName = config.uploadFileName; // 自定义参数
4333
4334 var uploadImgParams = config.uploadImgParams; // 参数拼接到 url 中
4335
4336 var uploadImgParamsWithUrl = config.uploadImgParamsWithUrl; // 自定义 header
4337
4338 var uploadImgHeaders = config.uploadImgHeaders; // 钩子函数
4339
4340 var hooks = config.uploadImgHooks; // 上传图片超时时间
4341
4342 var timeout = config.uploadImgTimeout; // 跨域带 cookie
4343
4344 var withCredentials = config.withCredentials; // 自定义上传图片
4345
4346 var customUploadImg = config.customUploadImg;
4347
4348 if (!customUploadImg) {
4349 // 没有 customUploadImg 的情况下,需要如下两个配置才能继续进行图片上传
4350 if (!uploadImgServer && !uploadImgShowBase64) {
4351 return;
4352 }
4353 } // ------------------------------ 验证文件信息 ------------------------------
4354
4355
4356 var resultFiles = [];
4357 var errInfos = [];
4358 util_1.arrForEach(files, function (file) {
4359 var name = file.name;
4360 var size = file.size; // chrome 低版本 name === undefined
4361
4362 if (!name || !size) {
4363 return;
4364 }
4365
4366 if (/\.(jpg|jpeg|png|bmp|gif|webp)$/i.test(name) === false) {
4367 // 后缀名不合法,不是图片
4368 errInfos.push("\u3010" + name + "\u3011" + t('不是图片'));
4369 return;
4370 }
4371
4372 if (maxSize < size) {
4373 // 上传图片过大
4374 errInfos.push("\u3010" + name + "\u3011" + t('大于') + " " + maxSizeM + "M");
4375 return;
4376 } // 验证通过的加入结果列表
4377
4378
4379 resultFiles.push(file);
4380 }); // 抛出验证信息
4381
4382 if (errInfos.length) {
4383 config.customAlert(t('图片验证未通过') + ": \n" + errInfos.join('\n'), 'warning');
4384 return;
4385 }
4386
4387 if (resultFiles.length > maxLength) {
4388 config.customAlert(t('一次最多上传') + maxLength + t('张图片'), 'warning');
4389 return;
4390 } // ------------------------------ 自定义上传 ------------------------------
4391
4392
4393 if (customUploadImg && typeof customUploadImg === 'function') {
4394 var _context;
4395
4396 customUploadImg(resultFiles, (0, _bind["default"])(_context = this.insertImg).call(_context, this)); // 阻止以下代码执行,重要!!!
4397
4398 return;
4399 } // ------------------------------ 上传图片 ------------------------------
4400 // 添加图片数据
4401
4402
4403 var formData = new FormData();
4404 (0, _forEach["default"])(resultFiles).call(resultFiles, function (file, index) {
4405 var name = uploadFileName || file.name;
4406
4407 if (resultFiles.length > 1) {
4408 // 多个文件时,filename 不能重复
4409 name = name + (index + 1);
4410 }
4411
4412 formData.append(name, file);
4413 });
4414
4415 if (uploadImgServer) {
4416 // 添加自定义参数
4417 var uploadImgServerArr = uploadImgServer.split('#');
4418 uploadImgServer = uploadImgServerArr[0];
4419 var uploadImgServerHash = uploadImgServerArr[1] || '';
4420 (0, _forEach["default"])(util_1).call(util_1, uploadImgParams, function (key, val) {
4421 // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉
4422 // val = encodeURIComponent(val)
4423 // 第一,将参数拼接到 url 中
4424 if (uploadImgParamsWithUrl) {
4425 if ((0, _indexOf["default"])(uploadImgServer).call(uploadImgServer, '?') > 0) {
4426 uploadImgServer += '&';
4427 } else {
4428 uploadImgServer += '?';
4429 }
4430
4431 uploadImgServer = uploadImgServer + key + '=' + val;
4432 } // 第二,将参数添加到 formData 中
4433
4434
4435 formData.append(key, val);
4436 });
4437
4438 if (uploadImgServerHash) {
4439 uploadImgServer += '#' + uploadImgServerHash;
4440 } // 开始上传
4441
4442
4443 var xhr = upload_core_1["default"](uploadImgServer, {
4444 timeout: timeout,
4445 formData: formData,
4446 headers: uploadImgHeaders,
4447 withCredentials: !!withCredentials,
4448 beforeSend: function beforeSend(xhr) {
4449 if (hooks.before) return hooks.before(xhr, editor, resultFiles);
4450 },
4451 onTimeout: function onTimeout(xhr) {
4452 config.customAlert(t('上传图片超时'), 'error');
4453 if (hooks.timeout) hooks.timeout(xhr, editor);
4454 },
4455 onProgress: function onProgress(percent, e) {
4456 var progressBar = new progress_1["default"](editor);
4457
4458 if (e.lengthComputable) {
4459 percent = e.loaded / e.total;
4460 progressBar.show(percent);
4461 }
4462 },
4463 onError: function onError(xhr) {
4464 config.customAlert(t('上传图片错误'), 'error', t('上传图片错误') + "\uFF0C" + t('服务器返回状态') + ": " + xhr.status);
4465 if (hooks.error) hooks.error(xhr, editor);
4466 },
4467 onFail: function onFail(xhr, resultStr) {
4468 config.customAlert(t('上传图片失败'), 'error', t('上传图片返回结果错误') + ("\uFF0C" + t('返回结果') + ": ") + resultStr);
4469 if (hooks.fail) hooks.fail(xhr, editor, resultStr);
4470 },
4471 onSuccess: function onSuccess(xhr, result) {
4472 if (hooks.customInsert) {
4473 var _context2;
4474
4475 // 自定义插入图片
4476 hooks.customInsert((0, _bind["default"])(_context2 = _this_1.insertImg).call(_context2, _this_1), result, editor);
4477 return;
4478 }
4479
4480 if (result.errno != '0') {
4481 // 返回格式不对,应该为 { errno: 0, data: [...] }
4482 config.customAlert(t('上传图片失败'), 'error', t('上传图片返回结果错误') + "\uFF0C" + t('返回结果') + " errno=" + result.errno);
4483 if (hooks.fail) hooks.fail(xhr, editor, result);
4484 return;
4485 } // 成功,插入图片
4486
4487
4488 var data = result.data;
4489 (0, _forEach["default"])(data).call(data, function (link) {
4490 _this_1.insertImg(link);
4491 }); // 钩子函数
4492
4493 if (hooks.success) hooks.success(xhr, editor, result);
4494 }
4495 });
4496
4497 if (typeof xhr === 'string') {
4498 // 上传被阻止
4499 config.customAlert(xhr, 'error');
4500 } // 阻止以下代码执行,重要!!!
4501
4502
4503 return;
4504 } // ------------------------------ 显示 base64 格式 ------------------------------
4505
4506
4507 if (uploadImgShowBase64) {
4508 util_1.arrForEach(files, function (file) {
4509 var _this = _this_1;
4510 var reader = new FileReader();
4511 reader.readAsDataURL(file);
4512
4513 reader.onload = function () {
4514 if (!this.result) return;
4515
4516 _this.insertImg(this.result.toString());
4517 };
4518 });
4519 }
4520 };
4521
4522 return UploadImg;
4523}();
4524
4525exports["default"] = UploadImg;
4526
4527/***/ }),
4528/* 95 */
4529/***/ (function(module, exports, __webpack_require__) {
4530
4531"use strict";
4532
4533/**
4534 * @description 双栈实现撤销恢复
4535 * @author fangzhicong
4536 */
4537
4538var _interopRequireDefault = __webpack_require__(0);
4539
4540var _defineProperty = _interopRequireDefault(__webpack_require__(1));
4541
4542(0, _defineProperty["default"])(exports, "__esModule", {
4543 value: true
4544});
4545
4546var stack_1 = __webpack_require__(390);
4547
4548var Cache =
4549/** @class */
4550function () {
4551 function Cache(maxSize) {
4552 this.maxSize = maxSize;
4553 /**
4554 * 上一步操作是否为 撤销/恢复
4555 */
4556
4557 this.isRe = false;
4558 this.data = new stack_1.CeilStack(maxSize);
4559 this.revokeData = new stack_1.CeilStack(maxSize);
4560 }
4561
4562 (0, _defineProperty["default"])(Cache.prototype, "size", {
4563 /**
4564 * 返回当前栈中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]
4565 */
4566 get: function get() {
4567 return [this.data.size, this.revokeData.size];
4568 },
4569 enumerable: false,
4570 configurable: true
4571 });
4572 /**
4573 * 重设数据缓存器的缓存长度(第一次有效)
4574 */
4575
4576 Cache.prototype.resetMaxSize = function (maxSize) {
4577 this.data.resetMax(maxSize);
4578 this.revokeData.resetMax(maxSize);
4579 };
4580 /**
4581 * 保存数据
4582 */
4583
4584
4585 Cache.prototype.save = function (data) {
4586 if (this.isRe) {
4587 this.revokeData.clear();
4588 this.isRe = false;
4589 }
4590
4591 this.data.instack(data);
4592 return this;
4593 };
4594 /**
4595 * 撤销
4596 * @param fn 撤销时,如果有数据,执行的回调函数
4597 */
4598
4599
4600 Cache.prototype.revoke = function (fn) {
4601 !this.isRe && (this.isRe = true);
4602 var data = this.data.outstack();
4603
4604 if (data) {
4605 this.revokeData.instack(data);
4606 fn(data);
4607 return true;
4608 }
4609
4610 return false;
4611 };
4612 /**
4613 * 恢复
4614 * @param fn 恢复时,如果有数据,执行的回调函数
4615 */
4616
4617
4618 Cache.prototype.restore = function (fn) {
4619 !this.isRe && (this.isRe = true);
4620 var data = this.revokeData.outstack();
4621
4622 if (data) {
4623 this.data.instack(data);
4624 fn(data);
4625 return true;
4626 }
4627
4628 return false;
4629 };
4630
4631 return Cache;
4632}();
4633
4634exports["default"] = Cache;
4635
4636/***/ }),
4637/* 96 */
4638/***/ (function(module, exports, __webpack_require__) {
4639
4640var DESCRIPTORS = __webpack_require__(14);
4641var fails = __webpack_require__(12);
4642var createElement = __webpack_require__(68);
4643
4644// Thank's IE8 for his funny defineProperty
4645module.exports = !DESCRIPTORS && !fails(function () {
4646 return Object.defineProperty(createElement('div'), 'a', {
4647 get: function () { return 7; }
4648 }).a != 7;
4649});
4650
4651
4652/***/ }),
4653/* 97 */
4654/***/ (function(module, exports, __webpack_require__) {
4655
4656var fails = __webpack_require__(12);
4657
4658var replacement = /#|\.prototype\./;
4659
4660var isForced = function (feature, detection) {
4661 var value = data[normalize(feature)];
4662 return value == POLYFILL ? true
4663 : value == NATIVE ? false
4664 : typeof detection == 'function' ? fails(detection)
4665 : !!detection;
4666};
4667
4668var normalize = isForced.normalize = function (string) {
4669 return String(string).replace(replacement, '.').toLowerCase();
4670};
4671
4672var data = isForced.data = {};
4673var NATIVE = isForced.NATIVE = 'N';
4674var POLYFILL = isForced.POLYFILL = 'P';
4675
4676module.exports = isForced;
4677
4678
4679/***/ }),
4680/* 98 */
4681/***/ (function(module, exports, __webpack_require__) {
4682
4683var has = __webpack_require__(15);
4684var toIndexedObject = __webpack_require__(25);
4685var indexOf = __webpack_require__(69).indexOf;
4686var hiddenKeys = __webpack_require__(48);
4687
4688module.exports = function (object, names) {
4689 var O = toIndexedObject(object);
4690 var i = 0;
4691 var result = [];
4692 var key;
4693 for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
4694 // Don't enum bug & hidden keys
4695 while (names.length > i) if (has(O, key = names[i++])) {
4696 ~indexOf(result, key) || result.push(key);
4697 }
4698 return result;
4699};
4700
4701
4702/***/ }),
4703/* 99 */
4704/***/ (function(module, exports, __webpack_require__) {
4705
4706var getBuiltIn = __webpack_require__(26);
4707
4708module.exports = getBuiltIn('document', 'documentElement');
4709
4710
4711/***/ }),
4712/* 100 */
4713/***/ (function(module, exports, __webpack_require__) {
4714
4715var NATIVE_SYMBOL = __webpack_require__(76);
4716
4717module.exports = NATIVE_SYMBOL
4718 // eslint-disable-next-line no-undef
4719 && !Symbol.sham
4720 // eslint-disable-next-line no-undef
4721 && typeof Symbol.iterator == 'symbol';
4722
4723
4724/***/ }),
4725/* 101 */
4726/***/ (function(module, exports, __webpack_require__) {
4727
4728var global = __webpack_require__(8);
4729
4730module.exports = global.Promise;
4731
4732
4733/***/ }),
4734/* 102 */
4735/***/ (function(module, exports, __webpack_require__) {
4736
4737var redefine = __webpack_require__(49);
4738
4739module.exports = function (target, src, options) {
4740 for (var key in src) {
4741 if (options && options.unsafe && target[key]) target[key] = src[key];
4742 else redefine(target, key, src[key], options);
4743 } return target;
4744};
4745
4746
4747/***/ }),
4748/* 103 */
4749/***/ (function(module, exports, __webpack_require__) {
4750
4751"use strict";
4752
4753var getBuiltIn = __webpack_require__(26);
4754var definePropertyModule = __webpack_require__(17);
4755var wellKnownSymbol = __webpack_require__(9);
4756var DESCRIPTORS = __webpack_require__(14);
4757
4758var SPECIES = wellKnownSymbol('species');
4759
4760module.exports = function (CONSTRUCTOR_NAME) {
4761 var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
4762 var defineProperty = definePropertyModule.f;
4763
4764 if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
4765 defineProperty(Constructor, SPECIES, {
4766 configurable: true,
4767 get: function () { return this; }
4768 });
4769 }
4770};
4771
4772
4773/***/ }),
4774/* 104 */
4775/***/ (function(module, exports, __webpack_require__) {
4776
4777var store = __webpack_require__(73);
4778
4779var functionToString = Function.toString;
4780
4781// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
4782if (typeof store.inspectSource != 'function') {
4783 store.inspectSource = function (it) {
4784 return functionToString.call(it);
4785 };
4786}
4787
4788module.exports = store.inspectSource;
4789
4790
4791/***/ }),
4792/* 105 */
4793/***/ (function(module, exports, __webpack_require__) {
4794
4795var anObject = __webpack_require__(23);
4796var aFunction = __webpack_require__(30);
4797var wellKnownSymbol = __webpack_require__(9);
4798
4799var SPECIES = wellKnownSymbol('species');
4800
4801// `SpeciesConstructor` abstract operation
4802// https://tc39.github.io/ecma262/#sec-speciesconstructor
4803module.exports = function (O, defaultConstructor) {
4804 var C = anObject(O).constructor;
4805 var S;
4806 return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
4807};
4808
4809
4810/***/ }),
4811/* 106 */
4812/***/ (function(module, exports, __webpack_require__) {
4813
4814var global = __webpack_require__(8);
4815var fails = __webpack_require__(12);
4816var bind = __webpack_require__(46);
4817var html = __webpack_require__(99);
4818var createElement = __webpack_require__(68);
4819var IS_IOS = __webpack_require__(107);
4820var IS_NODE = __webpack_require__(80);
4821
4822var location = global.location;
4823var set = global.setImmediate;
4824var clear = global.clearImmediate;
4825var process = global.process;
4826var MessageChannel = global.MessageChannel;
4827var Dispatch = global.Dispatch;
4828var counter = 0;
4829var queue = {};
4830var ONREADYSTATECHANGE = 'onreadystatechange';
4831var defer, channel, port;
4832
4833var run = function (id) {
4834 // eslint-disable-next-line no-prototype-builtins
4835 if (queue.hasOwnProperty(id)) {
4836 var fn = queue[id];
4837 delete queue[id];
4838 fn();
4839 }
4840};
4841
4842var runner = function (id) {
4843 return function () {
4844 run(id);
4845 };
4846};
4847
4848var listener = function (event) {
4849 run(event.data);
4850};
4851
4852var post = function (id) {
4853 // old engines have not location.origin
4854 global.postMessage(id + '', location.protocol + '//' + location.host);
4855};
4856
4857// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
4858if (!set || !clear) {
4859 set = function setImmediate(fn) {
4860 var args = [];
4861 var i = 1;
4862 while (arguments.length > i) args.push(arguments[i++]);
4863 queue[++counter] = function () {
4864 // eslint-disable-next-line no-new-func
4865 (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);
4866 };
4867 defer(counter);
4868 return counter;
4869 };
4870 clear = function clearImmediate(id) {
4871 delete queue[id];
4872 };
4873 // Node.js 0.8-
4874 if (IS_NODE) {
4875 defer = function (id) {
4876 process.nextTick(runner(id));
4877 };
4878 // Sphere (JS game engine) Dispatch API
4879 } else if (Dispatch && Dispatch.now) {
4880 defer = function (id) {
4881 Dispatch.now(runner(id));
4882 };
4883 // Browsers with MessageChannel, includes WebWorkers
4884 // except iOS - https://github.com/zloirock/core-js/issues/624
4885 } else if (MessageChannel && !IS_IOS) {
4886 channel = new MessageChannel();
4887 port = channel.port2;
4888 channel.port1.onmessage = listener;
4889 defer = bind(port.postMessage, port, 1);
4890 // Browsers with postMessage, skip WebWorkers
4891 // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
4892 } else if (
4893 global.addEventListener &&
4894 typeof postMessage == 'function' &&
4895 !global.importScripts &&
4896 location && location.protocol !== 'file:' &&
4897 !fails(post)
4898 ) {
4899 defer = post;
4900 global.addEventListener('message', listener, false);
4901 // IE8-
4902 } else if (ONREADYSTATECHANGE in createElement('script')) {
4903 defer = function (id) {
4904 html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
4905 html.removeChild(this);
4906 run(id);
4907 };
4908 };
4909 // Rest old browsers
4910 } else {
4911 defer = function (id) {
4912 setTimeout(runner(id), 0);
4913 };
4914 }
4915}
4916
4917module.exports = {
4918 set: set,
4919 clear: clear
4920};
4921
4922
4923/***/ }),
4924/* 107 */
4925/***/ (function(module, exports, __webpack_require__) {
4926
4927var userAgent = __webpack_require__(79);
4928
4929module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);
4930
4931
4932/***/ }),
4933/* 108 */
4934/***/ (function(module, exports, __webpack_require__) {
4935
4936var anObject = __webpack_require__(23);
4937var isObject = __webpack_require__(13);
4938var newPromiseCapability = __webpack_require__(63);
4939
4940module.exports = function (C, x) {
4941 anObject(C);
4942 if (isObject(x) && x.constructor === C) return x;
4943 var promiseCapability = newPromiseCapability.f(C);
4944 var resolve = promiseCapability.resolve;
4945 resolve(x);
4946 return promiseCapability.promise;
4947};
4948
4949
4950/***/ }),
4951/* 109 */
4952/***/ (function(module, exports, __webpack_require__) {
4953
4954"use strict";
4955
4956var getPrototypeOf = __webpack_require__(74);
4957var createNonEnumerableProperty = __webpack_require__(16);
4958var has = __webpack_require__(15);
4959var wellKnownSymbol = __webpack_require__(9);
4960var IS_PURE = __webpack_require__(36);
4961
4962var ITERATOR = wellKnownSymbol('iterator');
4963var BUGGY_SAFARI_ITERATORS = false;
4964
4965var returnThis = function () { return this; };
4966
4967// `%IteratorPrototype%` object
4968// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
4969var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
4970
4971if ([].keys) {
4972 arrayIterator = [].keys();
4973 // Safari 8 has buggy iterators w/o `next`
4974 if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
4975 else {
4976 PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
4977 if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
4978 }
4979}
4980
4981if (IteratorPrototype == undefined) IteratorPrototype = {};
4982
4983// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
4984if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {
4985 createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
4986}
4987
4988module.exports = {
4989 IteratorPrototype: IteratorPrototype,
4990 BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
4991};
4992
4993
4994/***/ }),
4995/* 110 */
4996/***/ (function(module, exports, __webpack_require__) {
4997
4998"use strict";
4999
5000var fails = __webpack_require__(12);
5001
5002module.exports = function (METHOD_NAME, argument) {
5003 var method = [][METHOD_NAME];
5004 return !!method && fails(function () {
5005 // eslint-disable-next-line no-useless-call,no-throw-literal
5006 method.call(null, argument || function () { throw 1; }, 1);
5007 });
5008};
5009
5010
5011/***/ }),
5012/* 111 */
5013/***/ (function(module, exports, __webpack_require__) {
5014
5015module.exports = __webpack_require__(185);
5016
5017/***/ }),
5018/* 112 */
5019/***/ (function(module, exports, __webpack_require__) {
5020
5021module.exports = __webpack_require__(206);
5022
5023/***/ }),
5024/* 113 */
5025/***/ (function(module, exports, __webpack_require__) {
5026
5027"use strict";
5028
5029var $ = __webpack_require__(4);
5030var global = __webpack_require__(8);
5031var InternalMetadataModule = __webpack_require__(114);
5032var fails = __webpack_require__(12);
5033var createNonEnumerableProperty = __webpack_require__(16);
5034var iterate = __webpack_require__(38);
5035var anInstance = __webpack_require__(78);
5036var isObject = __webpack_require__(13);
5037var setToStringTag = __webpack_require__(40);
5038var defineProperty = __webpack_require__(17).f;
5039var forEach = __webpack_require__(42).forEach;
5040var DESCRIPTORS = __webpack_require__(14);
5041var InternalStateModule = __webpack_require__(41);
5042
5043var setInternalState = InternalStateModule.set;
5044var internalStateGetterFor = InternalStateModule.getterFor;
5045
5046module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
5047 var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;
5048 var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;
5049 var ADDER = IS_MAP ? 'set' : 'add';
5050 var NativeConstructor = global[CONSTRUCTOR_NAME];
5051 var NativePrototype = NativeConstructor && NativeConstructor.prototype;
5052 var exported = {};
5053 var Constructor;
5054
5055 if (!DESCRIPTORS || typeof NativeConstructor != 'function'
5056 || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))
5057 ) {
5058 // create collection constructor
5059 Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);
5060 InternalMetadataModule.REQUIRED = true;
5061 } else {
5062 Constructor = wrapper(function (target, iterable) {
5063 setInternalState(anInstance(target, Constructor, CONSTRUCTOR_NAME), {
5064 type: CONSTRUCTOR_NAME,
5065 collection: new NativeConstructor()
5066 });
5067 if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });
5068 });
5069
5070 var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
5071
5072 forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {
5073 var IS_ADDER = KEY == 'add' || KEY == 'set';
5074 if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {
5075 createNonEnumerableProperty(Constructor.prototype, KEY, function (a, b) {
5076 var collection = getInternalState(this).collection;
5077 if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
5078 var result = collection[KEY](a === 0 ? 0 : a, b);
5079 return IS_ADDER ? this : result;
5080 });
5081 }
5082 });
5083
5084 IS_WEAK || defineProperty(Constructor.prototype, 'size', {
5085 configurable: true,
5086 get: function () {
5087 return getInternalState(this).collection.size;
5088 }
5089 });
5090 }
5091
5092 setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);
5093
5094 exported[CONSTRUCTOR_NAME] = Constructor;
5095 $({ global: true, forced: true }, exported);
5096
5097 if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);
5098
5099 return Constructor;
5100};
5101
5102
5103/***/ }),
5104/* 114 */
5105/***/ (function(module, exports, __webpack_require__) {
5106
5107var hiddenKeys = __webpack_require__(48);
5108var isObject = __webpack_require__(13);
5109var has = __webpack_require__(15);
5110var defineProperty = __webpack_require__(17).f;
5111var uid = __webpack_require__(60);
5112var FREEZING = __webpack_require__(209);
5113
5114var METADATA = uid('meta');
5115var id = 0;
5116
5117var isExtensible = Object.isExtensible || function () {
5118 return true;
5119};
5120
5121var setMetadata = function (it) {
5122 defineProperty(it, METADATA, { value: {
5123 objectID: 'O' + ++id, // object ID
5124 weakData: {} // weak collections IDs
5125 } });
5126};
5127
5128var fastKey = function (it, create) {
5129 // return a primitive with prefix
5130 if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
5131 if (!has(it, METADATA)) {
5132 // can't set metadata to uncaught frozen object
5133 if (!isExtensible(it)) return 'F';
5134 // not necessary to add metadata
5135 if (!create) return 'E';
5136 // add missing metadata
5137 setMetadata(it);
5138 // return object ID
5139 } return it[METADATA].objectID;
5140};
5141
5142var getWeakData = function (it, create) {
5143 if (!has(it, METADATA)) {
5144 // can't set metadata to uncaught frozen object
5145 if (!isExtensible(it)) return true;
5146 // not necessary to add metadata
5147 if (!create) return false;
5148 // add missing metadata
5149 setMetadata(it);
5150 // return the store of weak collections IDs
5151 } return it[METADATA].weakData;
5152};
5153
5154// add metadata on freeze-family methods calling
5155var onFreeze = function (it) {
5156 if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);
5157 return it;
5158};
5159
5160var meta = module.exports = {
5161 REQUIRED: false,
5162 fastKey: fastKey,
5163 getWeakData: getWeakData,
5164 onFreeze: onFreeze
5165};
5166
5167hiddenKeys[METADATA] = true;
5168
5169
5170/***/ }),
5171/* 115 */
5172/***/ (function(module, exports, __webpack_require__) {
5173
5174"use strict";
5175
5176var defineProperty = __webpack_require__(17).f;
5177var create = __webpack_require__(47);
5178var redefineAll = __webpack_require__(102);
5179var bind = __webpack_require__(46);
5180var anInstance = __webpack_require__(78);
5181var iterate = __webpack_require__(38);
5182var defineIterator = __webpack_require__(83);
5183var setSpecies = __webpack_require__(103);
5184var DESCRIPTORS = __webpack_require__(14);
5185var fastKey = __webpack_require__(114).fastKey;
5186var InternalStateModule = __webpack_require__(41);
5187
5188var setInternalState = InternalStateModule.set;
5189var internalStateGetterFor = InternalStateModule.getterFor;
5190
5191module.exports = {
5192 getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
5193 var C = wrapper(function (that, iterable) {
5194 anInstance(that, C, CONSTRUCTOR_NAME);
5195 setInternalState(that, {
5196 type: CONSTRUCTOR_NAME,
5197 index: create(null),
5198 first: undefined,
5199 last: undefined,
5200 size: 0
5201 });
5202 if (!DESCRIPTORS) that.size = 0;
5203 if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
5204 });
5205
5206 var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
5207
5208 var define = function (that, key, value) {
5209 var state = getInternalState(that);
5210 var entry = getEntry(that, key);
5211 var previous, index;
5212 // change existing entry
5213 if (entry) {
5214 entry.value = value;
5215 // create new entry
5216 } else {
5217 state.last = entry = {
5218 index: index = fastKey(key, true),
5219 key: key,
5220 value: value,
5221 previous: previous = state.last,
5222 next: undefined,
5223 removed: false
5224 };
5225 if (!state.first) state.first = entry;
5226 if (previous) previous.next = entry;
5227 if (DESCRIPTORS) state.size++;
5228 else that.size++;
5229 // add to index
5230 if (index !== 'F') state.index[index] = entry;
5231 } return that;
5232 };
5233
5234 var getEntry = function (that, key) {
5235 var state = getInternalState(that);
5236 // fast case
5237 var index = fastKey(key);
5238 var entry;
5239 if (index !== 'F') return state.index[index];
5240 // frozen object case
5241 for (entry = state.first; entry; entry = entry.next) {
5242 if (entry.key == key) return entry;
5243 }
5244 };
5245
5246 redefineAll(C.prototype, {
5247 // 23.1.3.1 Map.prototype.clear()
5248 // 23.2.3.2 Set.prototype.clear()
5249 clear: function clear() {
5250 var that = this;
5251 var state = getInternalState(that);
5252 var data = state.index;
5253 var entry = state.first;
5254 while (entry) {
5255 entry.removed = true;
5256 if (entry.previous) entry.previous = entry.previous.next = undefined;
5257 delete data[entry.index];
5258 entry = entry.next;
5259 }
5260 state.first = state.last = undefined;
5261 if (DESCRIPTORS) state.size = 0;
5262 else that.size = 0;
5263 },
5264 // 23.1.3.3 Map.prototype.delete(key)
5265 // 23.2.3.4 Set.prototype.delete(value)
5266 'delete': function (key) {
5267 var that = this;
5268 var state = getInternalState(that);
5269 var entry = getEntry(that, key);
5270 if (entry) {
5271 var next = entry.next;
5272 var prev = entry.previous;
5273 delete state.index[entry.index];
5274 entry.removed = true;
5275 if (prev) prev.next = next;
5276 if (next) next.previous = prev;
5277 if (state.first == entry) state.first = next;
5278 if (state.last == entry) state.last = prev;
5279 if (DESCRIPTORS) state.size--;
5280 else that.size--;
5281 } return !!entry;
5282 },
5283 // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
5284 // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
5285 forEach: function forEach(callbackfn /* , that = undefined */) {
5286 var state = getInternalState(this);
5287 var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
5288 var entry;
5289 while (entry = entry ? entry.next : state.first) {
5290 boundFunction(entry.value, entry.key, this);
5291 // revert to the last existing entry
5292 while (entry && entry.removed) entry = entry.previous;
5293 }
5294 },
5295 // 23.1.3.7 Map.prototype.has(key)
5296 // 23.2.3.7 Set.prototype.has(value)
5297 has: function has(key) {
5298 return !!getEntry(this, key);
5299 }
5300 });
5301
5302 redefineAll(C.prototype, IS_MAP ? {
5303 // 23.1.3.6 Map.prototype.get(key)
5304 get: function get(key) {
5305 var entry = getEntry(this, key);
5306 return entry && entry.value;
5307 },
5308 // 23.1.3.9 Map.prototype.set(key, value)
5309 set: function set(key, value) {
5310 return define(this, key === 0 ? 0 : key, value);
5311 }
5312 } : {
5313 // 23.2.3.1 Set.prototype.add(value)
5314 add: function add(value) {
5315 return define(this, value = value === 0 ? 0 : value, value);
5316 }
5317 });
5318 if (DESCRIPTORS) defineProperty(C.prototype, 'size', {
5319 get: function () {
5320 return getInternalState(this).size;
5321 }
5322 });
5323 return C;
5324 },
5325 setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {
5326 var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
5327 var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
5328 var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
5329 // add .keys, .values, .entries, [@@iterator]
5330 // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
5331 defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {
5332 setInternalState(this, {
5333 type: ITERATOR_NAME,
5334 target: iterated,
5335 state: getInternalCollectionState(iterated),
5336 kind: kind,
5337 last: undefined
5338 });
5339 }, function () {
5340 var state = getInternalIteratorState(this);
5341 var kind = state.kind;
5342 var entry = state.last;
5343 // revert to the last existing entry
5344 while (entry && entry.removed) entry = entry.previous;
5345 // get next entry
5346 if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {
5347 // or finish the iteration
5348 state.target = undefined;
5349 return { value: undefined, done: true };
5350 }
5351 // return step by kind
5352 if (kind == 'keys') return { value: entry.key, done: false };
5353 if (kind == 'values') return { value: entry.value, done: false };
5354 return { value: [entry.key, entry.value], done: false };
5355 }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);
5356
5357 // add [@@species], 23.1.2.2, 23.2.2.2
5358 setSpecies(CONSTRUCTOR_NAME);
5359 }
5360};
5361
5362
5363/***/ }),
5364/* 116 */
5365/***/ (function(module, exports, __webpack_require__) {
5366
5367module.exports = __webpack_require__(219);
5368
5369/***/ }),
5370/* 117 */
5371/***/ (function(module, exports, __webpack_require__) {
5372
5373var defineWellKnownSymbol = __webpack_require__(11);
5374
5375// `Symbol.iterator` well-known symbol
5376// https://tc39.github.io/ecma262/#sec-symbol.iterator
5377defineWellKnownSymbol('iterator');
5378
5379
5380/***/ }),
5381/* 118 */
5382/***/ (function(module, exports, __webpack_require__) {
5383
5384var internalObjectKeys = __webpack_require__(98);
5385var enumBugKeys = __webpack_require__(71);
5386
5387var hiddenKeys = enumBugKeys.concat('length', 'prototype');
5388
5389// `Object.getOwnPropertyNames` method
5390// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
5391exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
5392 return internalObjectKeys(O, hiddenKeys);
5393};
5394
5395
5396/***/ }),
5397/* 119 */
5398/***/ (function(module, exports) {
5399
5400exports.f = Object.getOwnPropertySymbols;
5401
5402
5403/***/ }),
5404/* 120 */
5405/***/ (function(module, exports, __webpack_require__) {
5406
5407module.exports = __webpack_require__(252);
5408
5409/***/ }),
5410/* 121 */
5411/***/ (function(module, exports, __webpack_require__) {
5412
5413"use strict";
5414
5415/**
5416 * @description 样式配置
5417 * @author wangfupeng
5418 */
5419
5420var _interopRequireDefault = __webpack_require__(0);
5421
5422var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5423
5424(0, _defineProperty["default"])(exports, "__esModule", {
5425 value: true
5426});
5427exports["default"] = {
5428 zIndex: 10000
5429};
5430
5431/***/ }),
5432/* 122 */
5433/***/ (function(module, exports, __webpack_require__) {
5434
5435"use strict";
5436
5437/**
5438 * @description 处理粘贴逻辑
5439 * @author wangfupeng
5440 */
5441
5442var _interopRequireDefault = __webpack_require__(0);
5443
5444var _forEach = _interopRequireDefault(__webpack_require__(6));
5445
5446var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5447
5448var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
5449 return mod && mod.__esModule ? mod : {
5450 "default": mod
5451 };
5452};
5453
5454(0, _defineProperty["default"])(exports, "__esModule", {
5455 value: true
5456});
5457exports.getPasteImgs = exports.getPasteHtml = exports.getPasteText = void 0;
5458
5459var util_1 = __webpack_require__(7);
5460
5461var parse_html_1 = __importDefault(__webpack_require__(290));
5462/**
5463 * 获取粘贴的纯文本
5464 * @param e Event 参数
5465 */
5466
5467
5468function getPasteText(e) {
5469 // const clipboardData = e.clipboardData || (e.originalEvent && e.originalEvent.clipboardData)
5470 var clipboardData = e.clipboardData; // 暂不考虑 originalEvent 的情况
5471
5472 var pasteText = '';
5473
5474 if (clipboardData == null) {
5475 pasteText = window.clipboardData && window.clipboardData.getData('text');
5476 } else {
5477 pasteText = clipboardData.getData('text/plain');
5478 }
5479
5480 return util_1.replaceHtmlSymbol(pasteText);
5481}
5482
5483exports.getPasteText = getPasteText;
5484/**
5485 * 获取粘贴的 html 字符串
5486 * @param e Event 参数
5487 * @param filterStyle 是否过滤 style 样式
5488 * @param ignoreImg 是否忽略 img 标签
5489 */
5490
5491function getPasteHtml(e, filterStyle, ignoreImg) {
5492 if (filterStyle === void 0) {
5493 filterStyle = true;
5494 }
5495
5496 if (ignoreImg === void 0) {
5497 ignoreImg = false;
5498 }
5499
5500 var clipboardData = e.clipboardData; // 暂不考虑 originalEvent 的情况
5501
5502 var pasteHtml = '';
5503
5504 if (clipboardData) {
5505 pasteHtml = clipboardData.getData('text/html');
5506 } // 无法通过 'text/html' 格式获取 html,则尝试获取 text
5507
5508
5509 if (!pasteHtml) {
5510 var text = getPasteText(e);
5511
5512 if (!text) {
5513 return ''; // 没有找到任何文字,则返回
5514 }
5515
5516 pasteHtml = "<p>" + text + "</p>";
5517 } // 剔除多余的标签、属性
5518
5519
5520 pasteHtml = parse_html_1["default"](pasteHtml, filterStyle, ignoreImg);
5521 return pasteHtml;
5522}
5523
5524exports.getPasteHtml = getPasteHtml;
5525/**
5526 * 获取粘贴的图片文件
5527 * @param e Event 参数
5528 */
5529
5530function getPasteImgs(e) {
5531 var _a;
5532
5533 var result = [];
5534 var txt = getPasteText(e);
5535
5536 if (txt) {
5537 // 有文字,就忽略图片
5538 return result;
5539 }
5540
5541 var items = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.items;
5542 if (!items) return result;
5543 (0, _forEach["default"])(util_1).call(util_1, items, function (key, value) {
5544 var type = value.type;
5545
5546 if (/image/i.test(type)) {
5547 result.push(value.getAsFile());
5548 }
5549 });
5550 return result;
5551}
5552
5553exports.getPasteImgs = getPasteImgs;
5554
5555/***/ }),
5556/* 123 */
5557/***/ (function(module, exports, __webpack_require__) {
5558
5559module.exports = __webpack_require__(292);
5560
5561/***/ }),
5562/* 124 */
5563/***/ (function(module, exports, __webpack_require__) {
5564
5565"use strict";
5566
5567/**
5568 * @description 下拉列表 class
5569 */
5570
5571var _interopRequireDefault = __webpack_require__(0);
5572
5573var _forEach = _interopRequireDefault(__webpack_require__(6));
5574
5575var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5576
5577var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
5578 return mod && mod.__esModule ? mod : {
5579 "default": mod
5580 };
5581};
5582
5583(0, _defineProperty["default"])(exports, "__esModule", {
5584 value: true
5585});
5586
5587var dom_core_1 = __importDefault(__webpack_require__(2));
5588
5589var const_1 = __webpack_require__(31);
5590
5591var DropList =
5592/** @class */
5593function () {
5594 function DropList(menu, conf) {
5595 var _this = this;
5596
5597 this.hideTimeoutId = 0;
5598 this.showTimeoutId = 0;
5599 this.menu = menu;
5600 this.conf = conf; // 容器
5601
5602 var $container = dom_core_1["default"]('<div class="w-e-droplist"></div>'); // 标题
5603
5604 var $title = dom_core_1["default"]("<p>" + conf.title + "</p>");
5605 $title.addClass('w-e-dp-title');
5606 $container.append($title); // 列表和类型
5607
5608 var list = conf.list || [];
5609 var type = conf.type || 'list'; // item 的点击事件
5610
5611 var clickHandler = conf.clickHandler || const_1.EMPTY_FN; // 加入 DOM 并绑定事件
5612
5613 var $list = dom_core_1["default"]('<ul class="' + (type === 'list' ? 'w-e-list' : 'w-e-block') + '"></ul>');
5614 (0, _forEach["default"])(list).call(list, function (item) {
5615 var $elem = item.$elem;
5616 var value = item.value;
5617 var $li = dom_core_1["default"]('<li class="w-e-item"></li>');
5618
5619 if ($elem) {
5620 $li.append($elem);
5621 $list.append($li);
5622 $li.on('click', function () {
5623 clickHandler(value); // item 点击之后,隐藏 list
5624
5625 _this.hideTimeoutId = window.setTimeout(function () {
5626 _this.hide();
5627 });
5628 });
5629 }
5630 });
5631 $container.append($list); // 绑定隐藏事件
5632
5633 $container.on('mouseleave', function () {
5634 _this.hideTimeoutId = window.setTimeout(function () {
5635 _this.hide();
5636 });
5637 }); // 记录属性
5638
5639 this.$container = $container;
5640 this.rendered = false;
5641 this._show = false;
5642 }
5643 /**
5644 * 显示 DropList
5645 */
5646
5647
5648 DropList.prototype.show = function () {
5649 if (this.hideTimeoutId) {
5650 // 清除之前的定时隐藏
5651 clearTimeout(this.hideTimeoutId);
5652 }
5653
5654 var menu = this.menu;
5655 var $menuELem = menu.$elem;
5656 var $container = this.$container;
5657
5658 if (this._show) {
5659 return;
5660 }
5661
5662 if (this.rendered) {
5663 // 显示
5664 $container.show();
5665 } else {
5666 // 加入 DOM 之前先定位位置
5667 var menuHeight = $menuELem.getSizeData().height || 0;
5668 var width = this.conf.width || 100; // 默认为 100
5669
5670 $container.css('margin-top', menuHeight + 'px').css('width', width + 'px'); // 加入到 DOM
5671
5672 $menuELem.append($container);
5673 this.rendered = true;
5674 } // 修改属性
5675
5676
5677 this._show = true;
5678 };
5679 /**
5680 * 隐藏 DropList
5681 */
5682
5683
5684 DropList.prototype.hide = function () {
5685 if (this.showTimeoutId) {
5686 // 清除之前的定时显示
5687 clearTimeout(this.showTimeoutId);
5688 }
5689
5690 var $container = this.$container;
5691
5692 if (!this._show) {
5693 return;
5694 } // 隐藏并需改属性
5695
5696
5697 $container.hide();
5698 this._show = false;
5699 };
5700
5701 (0, _defineProperty["default"])(DropList.prototype, "isShow", {
5702 get: function get() {
5703 return this._show;
5704 },
5705 enumerable: false,
5706 configurable: true
5707 });
5708 return DropList;
5709}();
5710
5711exports["default"] = DropList;
5712
5713/***/ }),
5714/* 125 */
5715/***/ (function(module, exports, __webpack_require__) {
5716
5717"use strict";
5718
5719/**
5720 * @description 检查选区是否在链接中,即菜单是否应该 active
5721 * @author wangfupeng
5722 */
5723
5724var _interopRequireDefault = __webpack_require__(0);
5725
5726var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5727
5728(0, _defineProperty["default"])(exports, "__esModule", {
5729 value: true
5730});
5731
5732function isActive(editor) {
5733 var $selectionELem = editor.selection.getSelectionContainerElem();
5734
5735 if (!$selectionELem) {
5736 return false;
5737 }
5738
5739 if ($selectionELem.getNodeName() === 'A') {
5740 return true;
5741 } else {
5742 return false;
5743 }
5744}
5745
5746exports["default"] = isActive;
5747
5748/***/ }),
5749/* 126 */
5750/***/ (function(module, exports, __webpack_require__) {
5751
5752"use strict";
5753
5754/**
5755 * @description 检查选区是否在代码中,即菜单是否应该 active
5756 * @author lkw
5757 */
5758
5759var _interopRequireDefault = __webpack_require__(0);
5760
5761var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5762
5763(0, _defineProperty["default"])(exports, "__esModule", {
5764 value: true
5765});
5766
5767function isActive(editor) {
5768 var $selectionELem = editor.selection.getSelectionContainerElem();
5769
5770 if (!$selectionELem) {
5771 return false;
5772 }
5773
5774 if ($selectionELem.getNodeName() == 'CODE' || $selectionELem.getNodeName() == 'PRE' || $selectionELem.parent().getNodeName() == 'CODE' || $selectionELem.parent().getNodeName() == 'PRE' || /hljs/.test($selectionELem.parent().attr('class'))) {
5775 return true;
5776 } else {
5777 return false;
5778 }
5779}
5780
5781exports["default"] = isActive;
5782
5783/***/ }),
5784/* 127 */
5785/***/ (function(module, exports, __webpack_require__) {
5786
5787"use strict";
5788
5789/**
5790 * @description 入口文件
5791 * @author wangfupeng
5792 */
5793
5794var _interopRequireDefault = __webpack_require__(0);
5795
5796var _defineProperty = _interopRequireDefault(__webpack_require__(1));
5797
5798var _create = _interopRequireDefault(__webpack_require__(3));
5799
5800var __createBinding = void 0 && (void 0).__createBinding || (_create["default"] ? function (o, m, k, k2) {
5801 if (k2 === undefined) k2 = k;
5802 (0, _defineProperty["default"])(o, k2, {
5803 enumerable: true,
5804 get: function get() {
5805 return m[k];
5806 }
5807 });
5808} : function (o, m, k, k2) {
5809 if (k2 === undefined) k2 = k;
5810 o[k2] = m[k];
5811});
5812
5813var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
5814 for (var p in m) {
5815 if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
5816 }
5817};
5818
5819var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
5820 return mod && mod.__esModule ? mod : {
5821 "default": mod
5822 };
5823};
5824
5825(0, _defineProperty["default"])(exports, "__esModule", {
5826 value: true
5827});
5828
5829__webpack_require__(137);
5830
5831__webpack_require__(139);
5832
5833__webpack_require__(143);
5834
5835__webpack_require__(145);
5836
5837__webpack_require__(147);
5838
5839__webpack_require__(149);
5840
5841__webpack_require__(151);
5842
5843var index_1 = __importDefault(__webpack_require__(174));
5844
5845__exportStar(__webpack_require__(405), exports); // 检验是否浏览器环境
5846
5847
5848try {
5849 document;
5850} catch (ex) {
5851 throw new Error('请在浏览器环境下运行');
5852}
5853
5854exports["default"] = index_1["default"];
5855
5856/***/ }),
5857/* 128 */
5858/***/ (function(module, exports, __webpack_require__) {
5859
5860var parent = __webpack_require__(129);
5861
5862module.exports = parent;
5863
5864
5865/***/ }),
5866/* 129 */
5867/***/ (function(module, exports, __webpack_require__) {
5868
5869__webpack_require__(130);
5870var path = __webpack_require__(10);
5871
5872var Object = path.Object;
5873
5874var defineProperty = module.exports = function defineProperty(it, key, desc) {
5875 return Object.defineProperty(it, key, desc);
5876};
5877
5878if (Object.defineProperty.sham) defineProperty.sham = true;
5879
5880
5881/***/ }),
5882/* 130 */
5883/***/ (function(module, exports, __webpack_require__) {
5884
5885var $ = __webpack_require__(4);
5886var DESCRIPTORS = __webpack_require__(14);
5887var objectDefinePropertyModile = __webpack_require__(17);
5888
5889// `Object.defineProperty` method
5890// https://tc39.github.io/ecma262/#sec-object.defineproperty
5891$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
5892 defineProperty: objectDefinePropertyModile.f
5893});
5894
5895
5896/***/ }),
5897/* 131 */
5898/***/ (function(module, exports) {
5899
5900var g;
5901
5902// This works in non-strict mode
5903g = (function() {
5904 return this;
5905})();
5906
5907try {
5908 // This works if eval is allowed (see CSP)
5909 g = g || new Function("return this")();
5910} catch (e) {
5911 // This works if the window reference is available
5912 if (typeof window === "object") g = window;
5913}
5914
5915// g can still be undefined, but nothing to do about it...
5916// We return undefined, instead of nothing here, so it's
5917// easier to handle this case. if(!global) { ...}
5918
5919module.exports = g;
5920
5921
5922/***/ }),
5923/* 132 */
5924/***/ (function(module, exports, __webpack_require__) {
5925
5926var parent = __webpack_require__(133);
5927
5928module.exports = parent;
5929
5930
5931/***/ }),
5932/* 133 */
5933/***/ (function(module, exports, __webpack_require__) {
5934
5935__webpack_require__(134);
5936var path = __webpack_require__(10);
5937
5938var Object = path.Object;
5939
5940module.exports = function create(P, D) {
5941 return Object.create(P, D);
5942};
5943
5944
5945/***/ }),
5946/* 134 */
5947/***/ (function(module, exports, __webpack_require__) {
5948
5949var $ = __webpack_require__(4);
5950var DESCRIPTORS = __webpack_require__(14);
5951var create = __webpack_require__(47);
5952
5953// `Object.create` method
5954// https://tc39.github.io/ecma262/#sec-object.create
5955$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
5956 create: create
5957});
5958
5959
5960/***/ }),
5961/* 135 */
5962/***/ (function(module, exports, __webpack_require__) {
5963
5964var DESCRIPTORS = __webpack_require__(14);
5965var definePropertyModule = __webpack_require__(17);
5966var anObject = __webpack_require__(23);
5967var objectKeys = __webpack_require__(57);
5968
5969// `Object.defineProperties` method
5970// https://tc39.github.io/ecma262/#sec-object.defineproperties
5971module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
5972 anObject(O);
5973 var keys = objectKeys(Properties);
5974 var length = keys.length;
5975 var index = 0;
5976 var key;
5977 while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
5978 return O;
5979};
5980
5981
5982/***/ }),
5983/* 136 */
5984/***/ (function(module, exports, __webpack_require__) {
5985
5986var global = __webpack_require__(8);
5987var createNonEnumerableProperty = __webpack_require__(16);
5988
5989module.exports = function (key, value) {
5990 try {
5991 createNonEnumerableProperty(global, key, value);
5992 } catch (error) {
5993 global[key] = value;
5994 } return value;
5995};
5996
5997
5998/***/ }),
5999/* 137 */
6000/***/ (function(module, exports, __webpack_require__) {
6001
6002var api = __webpack_require__(19);
6003 var content = __webpack_require__(138);
6004
6005 content = content.__esModule ? content.default : content;
6006
6007 if (typeof content === 'string') {
6008 content = [[module.i, content, '']];
6009 }
6010
6011var options = {};
6012
6013options.insert = "head";
6014options.singleton = false;
6015
6016var update = api(content, options);
6017
6018
6019
6020module.exports = content.locals || {};
6021
6022/***/ }),
6023/* 138 */
6024/***/ (function(module, exports, __webpack_require__) {
6025
6026// Imports
6027var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6028exports = ___CSS_LOADER_API_IMPORT___(false);
6029// Module
6030exports.push([module.i, ".w-e-toolbar,\n.w-e-text-container,\n.w-e-menu-panel {\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n background-color: #fff;\n /*表情菜单样式*/\n /*分割线样式*/\n}\n.w-e-toolbar .eleImg,\n.w-e-text-container .eleImg,\n.w-e-menu-panel .eleImg {\n cursor: pointer;\n display: inline-block;\n font-size: 18px;\n padding: 0 3px;\n}\n.w-e-toolbar *,\n.w-e-text-container *,\n.w-e-menu-panel * {\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n}\n.w-e-toolbar hr,\n.w-e-text-container hr,\n.w-e-menu-panel hr {\n cursor: pointer;\n display: block;\n height: 0px;\n border: 0;\n border-top: 3px solid #ccc;\n margin: 20px 0;\n}\n.w-e-clear-fix:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.w-e-drop-list-item {\n position: relative;\n top: 1px;\n padding-right: 7px;\n color: #333 !important;\n}\n.w-e-drop-list-tl {\n padding-left: 10px;\n text-align: left;\n}\n", ""]);
6031// Exports
6032module.exports = exports;
6033
6034
6035/***/ }),
6036/* 139 */
6037/***/ (function(module, exports, __webpack_require__) {
6038
6039var api = __webpack_require__(19);
6040 var content = __webpack_require__(140);
6041
6042 content = content.__esModule ? content.default : content;
6043
6044 if (typeof content === 'string') {
6045 content = [[module.i, content, '']];
6046 }
6047
6048var options = {};
6049
6050options.insert = "head";
6051options.singleton = false;
6052
6053var update = api(content, options);
6054
6055
6056
6057module.exports = content.locals || {};
6058
6059/***/ }),
6060/* 140 */
6061/***/ (function(module, exports, __webpack_require__) {
6062
6063// Imports
6064var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6065var ___CSS_LOADER_GET_URL_IMPORT___ = __webpack_require__(141);
6066var ___CSS_LOADER_URL_IMPORT_0___ = __webpack_require__(142);
6067exports = ___CSS_LOADER_API_IMPORT___(false);
6068var ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);
6069// Module
6070exports.push([module.i, "@font-face {\n font-family: 'w-e-icon';\n src: url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ") format('truetype');\n font-weight: normal;\n font-style: normal;\n}\n[class^=\"w-e-icon-\"],\n[class*=\" w-e-icon-\"] {\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'w-e-icon' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.w-e-icon-close:before {\n content: \"\\f00d\";\n}\n.w-e-icon-upload2:before {\n content: \"\\e9c6\";\n}\n.w-e-icon-trash-o:before {\n content: \"\\f014\";\n}\n.w-e-icon-header:before {\n content: \"\\f1dc\";\n}\n.w-e-icon-pencil2:before {\n content: \"\\e906\";\n}\n.w-e-icon-paint-brush:before {\n content: \"\\f1fc\";\n}\n.w-e-icon-image:before {\n content: \"\\e90d\";\n}\n.w-e-icon-play:before {\n content: \"\\e912\";\n}\n.w-e-icon-location:before {\n content: \"\\e947\";\n}\n.w-e-icon-undo:before {\n content: \"\\e965\";\n}\n.w-e-icon-redo:before {\n content: \"\\e966\";\n}\n.w-e-icon-quotes-left:before {\n content: \"\\e977\";\n}\n.w-e-icon-list-numbered:before {\n content: \"\\e9b9\";\n}\n.w-e-icon-list2:before {\n content: \"\\e9bb\";\n}\n.w-e-icon-link:before {\n content: \"\\e9cb\";\n}\n.w-e-icon-happy:before {\n content: \"\\e9df\";\n}\n.w-e-icon-bold:before {\n content: \"\\ea62\";\n}\n.w-e-icon-underline:before {\n content: \"\\ea63\";\n}\n.w-e-icon-italic:before {\n content: \"\\ea64\";\n}\n.w-e-icon-strikethrough:before {\n content: \"\\ea65\";\n}\n.w-e-icon-table2:before {\n content: \"\\ea71\";\n}\n.w-e-icon-paragraph-left:before {\n content: \"\\ea77\";\n}\n.w-e-icon-paragraph-center:before {\n content: \"\\ea78\";\n}\n.w-e-icon-paragraph-right:before {\n content: \"\\ea79\";\n}\n.w-e-icon-paragraph-justify:before {\n content: \"\\ea7a\";\n}\n.w-e-icon-terminal:before {\n content: \"\\f120\";\n}\n.w-e-icon-page-break:before {\n content: \"\\ea68\";\n}\n.w-e-icon-cancel-circle:before {\n content: \"\\ea0d\";\n}\n.w-e-icon-font:before {\n content: \"\\ea5c\";\n}\n.w-e-icon-text-heigh:before {\n content: \"\\ea5f\";\n}\n.w-e-icon-paint-format:before {\n content: \"\\e90c\";\n}\n.w-e-icon-indent-increase:before {\n content: \"\\ea7b\";\n}\n.w-e-icon-indent-decrease:before {\n content: \"\\ea7c\";\n}\n.w-e-icon-row-height:before {\n content: \"\\e9be\";\n}\n.w-e-icon-fullscreen_exit:before {\n content: \"\\e900\";\n}\n.w-e-icon-fullscreen:before {\n content: \"\\e901\";\n}\n.w-e-icon-split-line:before {\n content: \"\\ea0b\";\n}\n.w-e-icon-checkbox-checked:before {\n content: \"\\ea52\";\n}\n", ""]);
6071// Exports
6072module.exports = exports;
6073
6074
6075/***/ }),
6076/* 141 */
6077/***/ (function(module, exports, __webpack_require__) {
6078
6079"use strict";
6080
6081
6082module.exports = function (url, options) {
6083 if (!options) {
6084 // eslint-disable-next-line no-param-reassign
6085 options = {};
6086 } // eslint-disable-next-line no-underscore-dangle, no-param-reassign
6087
6088
6089 url = url && url.__esModule ? url.default : url;
6090
6091 if (typeof url !== 'string') {
6092 return url;
6093 } // If url is already wrapped in quotes, remove them
6094
6095
6096 if (/^['"].*['"]$/.test(url)) {
6097 // eslint-disable-next-line no-param-reassign
6098 url = url.slice(1, -1);
6099 }
6100
6101 if (options.hash) {
6102 // eslint-disable-next-line no-param-reassign
6103 url += options.hash;
6104 } // Should url be wrapped?
6105 // See https://drafts.csswg.org/css-values-3/#urls
6106
6107
6108 if (/["'() \t\n]/.test(url) || options.needQuotes) {
6109 return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, '\\n'), "\"");
6110 }
6111
6112 return url;
6113};
6114
6115/***/ }),
6116/* 142 */
6117/***/ (function(module, __webpack_exports__, __webpack_require__) {
6118
6119"use strict";
6120__webpack_require__.r(__webpack_exports__);
6121/* harmony default export */ __webpack_exports__["default"] = ("data:font/woff;base64,d09GRgABAAAAABskAAsAAAAAGtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIPFWNtYXAAAAFoAAABHAAAARz2mfAgZ2FzcAAAAoQAAAAIAAAACAAAABBnbHlmAAACjAAAFXwAABV8IH7+mGhlYWQAABgIAAAANgAAADYb6gumaGhlYQAAGEAAAAAkAAAAJAkjBWlobXR4AAAYZAAAAKQAAACkmYcEbmxvY2EAABkIAAAAVAAAAFReAmKYbWF4cAAAGVwAAAAgAAAAIAA0ALZuYW1lAAAZfAAAAYYAAAGGmUoJ+3Bvc3QAABsEAAAAIAAAACAAAwAAAAMD7wGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8fwDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEAQAAAAA8ACAABAAcAAEAIOkB6QbpDekS6UfpZul36bnpu+m+6cbpy+nf6gvqDepS6lzqX+pl6nHqfPAN8BTxIPHc8fz//f//AAAAAAAg6QDpBukM6RLpR+ll6Xfpuem76b7pxunL6d/qC+oN6lLqXOpf6mLqcep38A3wFPEg8dzx/P/9//8AAf/jFwQXABb7FvcWwxamFpYWVRZUFlIWSxZHFjQWCRYIFcQVuxW5FbcVrBWnEBcQEQ8GDksOLAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAAEAEEAAQO/A38ABQALABEAFwAAATMVIREzAxEhFSMVATUzESE1ETUhESM1Av/A/sJ+fgE+wP4Cfv7CAT5+Ar9+AT78ggE+fsACvsD+wn7+An7+wsAAAAAABABBAAEDvwN/AAUACwARABcAAAEhESM1IxM1MxEhNQERIRUjFREVMxUhEQKBAT5+wMB+/sL9wAE+wMD+wgN//sLA/X7A/sJ+AcIBPn7A/v7AfgE+AAAAAAIAAP/ABAADwAAEABMAAAE3AScBAy4BJxM3ASMBAyUBNQEHAYCAAcBA/kCfFzsyY4ABgMD+gMACgAGA/oBOAUBAAcBA/kD+nTI7FwERTgGA/oD9gMABgMD+gIAAAgAA/8AEAAOAACkALQAAAREjNTQmIyEiBh0BFBYzITI2PQEzESEVIyIGFREUFjsBMjY1ETQmKwE1ASE1IQQAwCYa/UAaJiYaAsAaJoD9wCANExMNgA0TEw0gAUD9QALAAYABgEAaJiYawBomJhpA/wCAEw3+wA0TEw0BQA0TQAGAQAAABAAAAAAEAAOAABAAIQAtADQAAAE4ATEROAExITgBMRE4ATEhNSEiBhURFBYzITI2NRE0JiMHFAYjIiY1NDYzMhYTITUTATM3A8D8gAOA/IAaJiYaA4AaJiYagDgoKDg4KCg4QP0A4AEAQOADQP0AAwBAJhr9ABomJhoDABom4Cg4OCgoODj9uIABgP7AwAAAAgAAAEAEAANAADgAPAAAASYnLgEnJiMiBw4BBwYHBgcOAQcGFRQXHgEXFhcWFx4BFxYzMjc+ATc2NzY3PgE3NjU0Jy4BJyYnARENAQPVNjg5djw9Pz89PHY5ODYLBwgLAwMDAwsIBws2ODl2PD0/Pz08djk4NgsHCAsDAwMDCwgHC/2rAUD+wAMgCAYGCAICAgIIBgYIKSoqWS0uLy8uLVkqKikIBgYIAgICAggGBggpKipZLS4vLy4tWSoqKf3gAYDAwAAAAAACAMD/wANAA8AAGwAnAAABIgcOAQcGFRQXHgEXFjEwNz4BNzY1NCcuAScmAyImNTQ2MzIWFRQGAgBCOzpXGRkyMngyMjIyeDIyGRlXOjtCUHBwUFBwcAPAGRlXOjtCeH19zEFBQUHMfX14Qjs6VxkZ/gBwUFBwcFBQcAAAAQAAAAAEAAOAACsAAAEiBw4BBwYHJxEhJz4BMzIXHgEXFhUUBw4BBwYHFzY3PgE3NjU0Jy4BJyYjAgA1MjJcKSkjlgGAkDWLUFBFRmkeHgkJIhgYHlUoICAtDAwoKIteXWoDgAoLJxscI5b+gJA0PB4eaUZFUCsoKUkgIRpgIysrYjY2OWpdXosoKAABAAAAAAQAA4AAKgAAExQXHgEXFhc3JicuAScmNTQ3PgE3NjMyFhcHIREHJicuAScmIyIHDgEHBgAMDC0gIChVHhgYIgkJHh5pRkVQUIs1kAGAliMpKVwyMjVqXV6LKCgBgDk2NmIrKyNgGiEgSSkoK1BFRmkeHjw0kAGAliMcGycLCigoi15dAAAAAAIAAABABAEDAAAmAE0AABMyFx4BFxYVFAcOAQcGIyInLgEnJjUnNDc+ATc2MxUiBgcOAQc+ASEyFx4BFxYVFAcOAQcGIyInLgEnJjUnNDc+ATc2MxUiBgcOAQc+AeEuKSk9ERISET0pKS4uKSk9ERIBIyN6UlFdQHUtCRAHCBICSS4pKT0REhIRPSkpLi4pKT0REgEjI3pSUV1AdS0JEAcIEgIAEhE9KSkuLikpPRESEhE9KSkuIF1RUnojI4AwLggTCgIBEhE9KSkuLikpPRESEhE9KSkuIF1RUnojI4AwLggTCgIBAAAGAED/wAQAA8AAAwAHAAsAEQAdACkAACUhFSERIRUhESEVIScRIzUjNRMVMxUjNTc1IzUzFRURIzUzNSM1MzUjNQGAAoD9gAKA/YACgP2AwEBAQIDAgIDAwICAgICAgAIAgAIAgMD/AMBA/fIyQJI8MkCS7v7AQEBAQEAABgAA/8AEAAPAAAMABwALABcAIwAvAAABIRUhESEVIREhFSEBNDYzMhYVFAYjIiYRNDYzMhYVFAYjIiYRNDYzMhYVFAYjIiYBgAKA/YACgP2AAoD9gP6ASzU1S0s1NUtLNTVLSzU1S0s1NUtLNTVLA4CA/wCA/wCAA0A1S0s1NUtL/rU1S0s1NUtL/rU1S0s1NUtLAAUAAABABWADAAADAAcACwAOABEAABMhFSEVIRUhFSEVIQEXNzUnBwADgPyAA4D8gAOA/IAD4MDAwMADAMBAwEDAAUDAwEDAwAAAAAADAAAAAAQAA6AAAwANABQAADchFSElFSE1EyEVITUhJQkBIxEjEQAEAPwABAD8AIABAAEAAQD9YAEgASDggEBAwEBAAQCAgMABIP7g/wABAAAAAAACAB7/zAPiA7QAMwBkAAABIiYnJicmNDc2PwE+ATMyFhcWFxYUBwYPAQYiJyY0PwE2NCcuASMiBg8BBhQXFhQHDgEjAyImJyYnJjQ3Nj8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFxYUBwYPAQ4BIwG4ChMIIxISEhIjwCNZMTFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PCBMKuDFZIyMSEhISI1gPLA8PD1gpKRQzHBwzFMApKQ8PDysQIxISEhIjwCNZMQFECAckLS1eLS0kwCIlJSIkLS1eLS0kVxAQDysPWCl0KRQVFRTAKXQpDysQBwj+iCUiJC0tXi0tJFcQEA8rD1gpdCkUFRUUwCl0KQ8rEA8PJC0tXi0tJMAiJQAAAAAFAAD/wAQAA8AAGwA3AFMAXwBrAAAFMjc+ATc2NTQnLgEnJiMiBw4BBwYVFBceARcWEzIXHgEXFhUUBw4BBwYjIicuAScmNTQ3PgE3NhMyNz4BNzY3BgcOAQcGIyInLgEnJicWFx4BFxYnNDYzMhYVFAYjIiYlNDYzMhYVFAYjIiYCAGpdXosoKCgoi15dampdXosoKCgoi15dalZMTHEgISEgcUxMVlZMTHEgISEgcUxMVisrKlEmJiMFHBtWODc/Pzc4VhscBSMmJlEqK9UlGxslJRsbJQGAJRsbJSUbGyVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoA6AhIHFMTFZWTExxICEhIHFMTFZWTExxICH+CQYGFRAQFEM6OlYYGRkYVjo6QxQQEBUGBvcoODgoKDg4KCg4OCgoODgAAAEAAAFABAACQAAPAAATFRQWMyEyNj0BNCYjISIGABMNA8ANExMN/EANEwIgwA0TEw3ADRMTAAAAAwAA/8AEAAPAABsANwBDAAABIgcOAQcGFRQXHgEXFjMyNz4BNzY1NCcuAScmAyInLgEnJjU0Nz4BNzYzMhceARcWFRQHDgEHBhMHJwcXBxc3FzcnNwIAal1eiygoKCiLXl1qal1eiygoKCiLXl1qVkxMcSAhISBxTExWVkxMcSAhISBxTExKoKBgoKBgoKBgoKADwCgoi15dampdXosoKCgoi15dampdXosoKPxgISBxTExWVkxMcSAhISBxTExWVkxMcSAhAqCgoGCgoGCgoGCgoAACAAD/wAQAA8AADwAVAAABISIGFREUFjMhMjY1ETQmASc3FwEXA4D9ADVLSzUDADVLS/4L7VqTATNaA8BLNf0ANUtLNQMANUv85e5akgEyWgAAAAABAGX/wAObA8AAKQAAASImIyIHDgEHBhUUFjMuATU0NjcwBwYCBwYHFSETMzcjNx4BMzI2Nw4BAyBEaEZxU1RtGhtJSAYNZUoQEEs8PFkBPWzGLNc0LVUmLlAYHT0DsBAeHWE+P0FNOwsmN5lvA31+/sWPkCMZAgCA9gkPN2sJBwAAAAACAAAAAAQAA4AACQAXAAAlMwcnMxEjNxcjJREnIxEzFSE1MxEjBxEDgICgoICAoKCA/wBAwID+gIDAQMDAwAIAwMDA/wCA/UBAQALAgAEAAAMAwAAAA0ADgAAWAB8AKAAAAT4BNTQnLgEnJiMhESEyNz4BNzY1NCYBMzIWFRQGKwETIxEzMhYVFAYCxBwgFBRGLi81/sABgDUvLkYUFET+hGUqPDwpZp+fnyw+PgHbIlQvNS8uRhQU/IAUFEYuLzVGdAFGSzU1S/6AAQBLNTVLAAAAAAIAwAAAA0ADgAAfACMAAAEzERQHDgEHBiMiJy4BJyY1ETMRFBYXHgEzMjY3PgE1ASEVIQLAgBkZVzo7QkI7OlcZGYAbGBxJKChJHBgb/gACgP2AA4D+YDw0NU4WFxcWTjU0PAGg/mAeOBcYGxsYFzge/qCAAAAAAAEAgAAAA4ADgAALAAABFSMBMxUhNTMBIzUDgID+wID+QIABQIADgED9AEBAAwBAAAEAAAAABAADgAA9AAABFSMeARUUBgcOASMiJicuATUzFBYzMjY1NCYjITUhLgEnLgE1NDY3PgEzMhYXHgEVIzQmIyIGFRQWMzIWFwQA6xUWNTAscT4+cSwwNYByTk5yck7+AAEsAgQBMDU1MCxxPj5xLDA1gHJOTnJyTjtuKwHAQB1BIjViJCEkJCEkYjU0TEw0NExAAQMBJGI1NWIkISQkISRiNTRMTDQ0TCEfAAAACgAAAAAEAAOAAAMABwALAA8AEwAXABsAHwAjACcAABMRIREBNSEVHQEhNQEVITUjFSE1ESEVISUhFSERNSEVASEVISE1IRUABAD9gAEA/wABAP8AQP8AAQD/AAKAAQD/AAEA/IABAP8AAoABAAOA/IADgP3AwMBAwMACAMDAwMD/AMDAwAEAwMD+wMDAwAAABQAAAAAEAAOAAAMABwALAA8AEwAAEyEVIRUhFSERIRUhESEVIREhFSEABAD8AAKA/YACgP2ABAD8AAQA/AADgIBAgP8AgAFAgP8AgAAAAAAFAAAAAAQAA4AAAwAHAAsADwATAAATIRUhFyEVIREhFSEDIRUhESEVIQAEAPwAwAKA/YACgP2AwAQA/AAEAPwAA4CAQID/AIABQID/AIAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEFIRUhESEVIQEhFSERIRUhAAQA/AABgAKA/YACgP2A/oAEAPwABAD8AAOAgECA/wCAAUCA/wCAAAAAAAUAAAAABAADgAADAAcACwAPABMAABMhFSEVIRUhFSEVIRUhFSEVIRUhAAQA/AAEAPwABAD8AAQA/AAEAPwAA4CAQIBAgECAQIAAAAAGAAAAAAQAA4AAAwAHAAsADwATABYAABMhFSEFIRUhFSEVIRUhFSEFIRUhGQEFAAQA/AABgAKA/YACgP2AAoD9gP6ABAD8AAEAA4CAQIBAgECAQIABAAGAwAAAAAYAAAAABAADgAADAAcACwAPABMAFgAAEyEVIQUhFSEVIRUhFSEVIQUhFSEBESUABAD8AAGAAoD9gAKA/YACgP2A/oAEAPwAAQD/AAOAgECAQIBAgECAAoD+gMAAAQA/AD8C5gLmACwAACUUDwEGIyIvAQcGIyIvASY1ND8BJyY1ND8BNjMyHwE3NjMyHwEWFRQPARcWFQLmEE4QFxcQqKgQFxYQThAQqKgQEE4QFhcQqKgQFxcQThAQqKgQwxYQThAQqKgQEE4QFhcQqKgQFxcQThAQqKgQEE4QFxcQqKgQFwAAAAYAAAAAAyUDbgAUACgAPABNAFUAggAAAREUBwYrASInJjURNDc2OwEyFxYVMxEUBwYrASInJjURNDc2OwEyFxYXERQHBisBIicmNRE0NzY7ATIXFhMRIREUFxYXFjMhMjc2NzY1ASEnJicjBgcFFRQHBisBERQHBiMhIicmNREjIicmPQE0NzY7ATc2NzY7ATIXFh8BMzIXFhUBJQYFCCQIBQYGBQgkCAUGkgUFCCUIBQUFBQglCAUFkgUFCCUIBQUFBQglCAUFSf4ABAQFBAIB2wIEBAQE/oABABsEBrUGBAH3BgUINxobJv4lJhsbNwgFBQUFCLEoCBcWF7cXFhYJKLAIBQYCEv63CAUFBQUIAUkIBQYGBQj+twgFBQUFCAFJCAUGBgUI/rcIBQUFBQgBSQgFBgYF/lsCHf3jDQsKBQUFBQoLDQJmQwUCAgVVJAgGBf3jMCIjISIvAiAFBggkCAUFYBUPDw8PFWAFBQgAAgAHAEkDtwKvABoALgAACQEGIyIvASY1ND8BJyY1ND8BNjMyFwEWFRQHARUUBwYjISInJj0BNDc2MyEyFxYBTv72BgcIBR0GBuHhBgYdBQgHBgEKBgYCaQUFCP3bCAUFBQUIAiUIBQUBhf72BgYcBggHBuDhBgcHBh0FBf71BQgHBv77JQgFBQUFCCUIBQUFBQAAAAEAIwAAA90DbgCzAAAlIicmIyIHBiMiJyY1NDc2NzY3Njc2PQE0JyYjISIHBh0BFBcWFxYzFhcWFRQHBiMiJyYjIgcGIyInJjU0NzY3Njc2NzY9ARE0NTQ1NCc0JyYnJicmJyYnJiMiJyY1NDc2MzIXFjMyNzYzMhcWFRQHBiMGBwYHBh0BFBcWMyEyNzY9ATQnJicmJyY1NDc2MzIXFjMyNzYzMhcWFRQHBgciBwYHBhURFBcWFxYXMhcWFRQHBiMDwRkzMhoZMjMZDQgHCQoNDBEQChIBBxX+fhYHARUJEhMODgwLBwcOGzU1GhgxMRgNBwcJCQsMEA8JEgECAQIDBAQFCBIRDQ0KCwcHDho1NRoYMDEYDgcHCQoMDRAQCBQBBw8BkA4HARQKFxcPDgcHDhkzMhkZMTEZDgcHCgoNDRARCBQUCRERDg0KCwcHDgACAgICDAsPEQkJAQEDAwUMROAMBQMDBQzUUQ0GAQIBCAgSDwwNAgICAgwMDhEICQECAwMFDUUhAdACDQ0ICA4OCgoLCwcHAwYBAQgIEg8MDQICAgINDA8RCAgBAgEGDFC2DAcBAQcMtlAMBgEBBgcWDwwNAgICAg0MDxEICAEBAgYNT/3mRAwGAgIBCQgRDwwNAAACAAD/twP/A7cAEwA5AAABMhcWFRQHAgcGIyInJjU0NwE2MwEWFxYfARYHBiMiJyYnJicmNRYXFhcWFxYzMjc2NzY3Njc2NzY3A5soHh4avkw3RUg0NDUBbSEp/fgXJicvAQJMTHtHNjYhIRARBBMUEBASEQkXCA8SExUVHR0eHikDtxsaKCQz/plGNDU0SUkwAUsf/bErHx8NKHpNTBobLi86OkQDDw4LCwoKFiUbGhERCgsEBAIAAQAAAAAAAIWwaoFfDzz1AAsEAAAAAADbteOZAAAAANu145kAAP+3BWADwAAAAAgAAgAAAAAAAAABAAADwP/AAAAFgAAA//8FYAABAAAAAAAAAAAAAAAAAAAAKQQAAAAAAAAAAAAAAAIAAAAEAABBBAAAQQQAAAAEAAAABAAAAAQAAAAEAADABAAAAAQAAAAEAAAABAAAQAQAAAAFgAAABAAAAAQAAB4EAAAABAAAAAQAAAAEAAAABAAAZQQAAAAEAADABAAAwAQAAIAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMlAD8DJQAAA74ABwQAACMD/wAAAAAAAAAKABQAHgBKAHYApADmAS4BkgHQAhYCXALQAw4DWAN+A6gEPgTeBPoFZAWOBdAF+AY6BnYGjgbmBy4HVgd+B6gHzgf8CCoIbgkmCXAKYgq+AAEAAAApALQACgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAHAAAAAQAAAAAAAgAHAGAAAQAAAAAAAwAHADYAAQAAAAAABAAHAHUAAQAAAAAABQALABUAAQAAAAAABgAHAEsAAQAAAAAACgAaAIoAAwABBAkAAQAOAAcAAwABBAkAAgAOAGcAAwABBAkAAwAOAD0AAwABBAkABAAOAHwAAwABBAkABQAWACAAAwABBAkABgAOAFIAAwABBAkACgA0AKRpY29tb29uAGkAYwBvAG0AbwBvAG5WZXJzaW9uIDEuMABWAGUAcgBzAGkAbwBuACAAMQAuADBpY29tb29uAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG5SZWd1bGFyAFIAZQBnAHUAbABhAHJpY29tb29uAGkAYwBvAG0AbwBvAG5Gb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
6122
6123/***/ }),
6124/* 143 */
6125/***/ (function(module, exports, __webpack_require__) {
6126
6127var api = __webpack_require__(19);
6128 var content = __webpack_require__(144);
6129
6130 content = content.__esModule ? content.default : content;
6131
6132 if (typeof content === 'string') {
6133 content = [[module.i, content, '']];
6134 }
6135
6136var options = {};
6137
6138options.insert = "head";
6139options.singleton = false;
6140
6141var update = api(content, options);
6142
6143
6144
6145module.exports = content.locals || {};
6146
6147/***/ }),
6148/* 144 */
6149/***/ (function(module, exports, __webpack_require__) {
6150
6151// Imports
6152var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6153exports = ___CSS_LOADER_API_IMPORT___(false);
6154// Module
6155exports.push([module.i, ".w-e-toolbar {\n display: flex;\n padding: 0 6px;\n flex-wrap: wrap;\n position: relative;\n /* 单个菜单 */\n}\n.w-e-toolbar .w-e-menu {\n position: relative;\n display: flex;\n width: 40px;\n height: 40px;\n align-items: center;\n justify-content: center;\n text-align: center;\n cursor: pointer;\n}\n.w-e-toolbar .w-e-menu i {\n color: #999;\n}\n.w-e-toolbar .w-e-menu:hover {\n background-color: #F6F6F6;\n}\n.w-e-toolbar .w-e-menu:hover i {\n color: #333;\n}\n.w-e-toolbar .w-e-active i {\n color: #1e88e5;\n}\n.w-e-toolbar .w-e-active:hover i {\n color: #1e88e5;\n}\n", ""]);
6156// Exports
6157module.exports = exports;
6158
6159
6160/***/ }),
6161/* 145 */
6162/***/ (function(module, exports, __webpack_require__) {
6163
6164var api = __webpack_require__(19);
6165 var content = __webpack_require__(146);
6166
6167 content = content.__esModule ? content.default : content;
6168
6169 if (typeof content === 'string') {
6170 content = [[module.i, content, '']];
6171 }
6172
6173var options = {};
6174
6175options.insert = "head";
6176options.singleton = false;
6177
6178var update = api(content, options);
6179
6180
6181
6182module.exports = content.locals || {};
6183
6184/***/ }),
6185/* 146 */
6186/***/ (function(module, exports, __webpack_require__) {
6187
6188// Imports
6189var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6190exports = ___CSS_LOADER_API_IMPORT___(false);
6191// Module
6192exports.push([module.i, ".w-e-text-container {\n position: relative;\n}\n.w-e-text-container .w-e-progress {\n position: absolute;\n background-color: #1e88e5;\n top: 0;\n left: 0;\n height: 1px;\n}\n.w-e-text-container .placeholder {\n color: #D4D4D4;\n position: absolute;\n font-size: 11pt;\n line-height: 22px;\n left: 10px;\n top: 10px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n z-index: -1;\n}\n.w-e-text {\n padding: 0 10px;\n overflow-y: auto;\n}\n.w-e-text p,\n.w-e-text h1,\n.w-e-text h2,\n.w-e-text h3,\n.w-e-text h4,\n.w-e-text h5,\n.w-e-text table,\n.w-e-text pre {\n margin: 10px 0;\n line-height: 1.5;\n}\n.w-e-text ul,\n.w-e-text ol {\n margin: 10px 0 10px 20px;\n}\n.w-e-text blockquote {\n display: block;\n border-left: 8px solid #d0e5f2;\n padding: 5px 10px;\n margin: 10px 0;\n line-height: 1.4;\n font-size: 100%;\n background-color: #f1f1f1;\n}\n.w-e-text code {\n display: inline-block;\n background-color: #f1f1f1;\n border-radius: 3px;\n padding: 3px 5px;\n margin: 0 3px;\n}\n.w-e-text pre code {\n display: block;\n}\n.w-e-text table {\n border-top: 1px solid #ccc;\n border-left: 1px solid #ccc;\n}\n.w-e-text table td,\n.w-e-text table th {\n border-bottom: 1px solid #ccc;\n border-right: 1px solid #ccc;\n padding: 3px 5px;\n min-height: 30px;\n}\n.w-e-text table th {\n border-bottom: 2px solid #ccc;\n text-align: center;\n background-color: #f1f1f1;\n}\n.w-e-text:focus {\n outline: none;\n}\n.w-e-text img {\n cursor: pointer;\n}\n.w-e-text img:hover {\n box-shadow: 0 0 5px #333;\n}\n.w-e-tooltip {\n position: absolute;\n display: flex;\n color: #f1f1f1;\n background-color: rgba(0, 0, 0, 0.75);\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n padding: 4px 5px 6px;\n justify-content: center;\n align-items: center;\n}\n.w-e-tooltip-up::after {\n content: \"\";\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -5px;\n border: 5px solid rgba(0, 0, 0, 0);\n border-top-color: rgba(0, 0, 0, 0.73);\n}\n.w-e-tooltip-down::after {\n content: \"\";\n position: absolute;\n bottom: 100%;\n left: 50%;\n margin-left: -5px;\n border: 5px solid rgba(0, 0, 0, 0);\n border-bottom-color: rgba(0, 0, 0, 0.73);\n}\n.w-e-tooltip-item-wrapper {\n cursor: pointer;\n font-size: 14px;\n margin: 0 5px;\n}\n.w-e-tooltip-item-wrapper:hover {\n color: #ccc;\n text-decoration: underline;\n}\n", ""]);
6193// Exports
6194module.exports = exports;
6195
6196
6197/***/ }),
6198/* 147 */
6199/***/ (function(module, exports, __webpack_require__) {
6200
6201var api = __webpack_require__(19);
6202 var content = __webpack_require__(148);
6203
6204 content = content.__esModule ? content.default : content;
6205
6206 if (typeof content === 'string') {
6207 content = [[module.i, content, '']];
6208 }
6209
6210var options = {};
6211
6212options.insert = "head";
6213options.singleton = false;
6214
6215var update = api(content, options);
6216
6217
6218
6219module.exports = content.locals || {};
6220
6221/***/ }),
6222/* 148 */
6223/***/ (function(module, exports, __webpack_require__) {
6224
6225// Imports
6226var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6227exports = ___CSS_LOADER_API_IMPORT___(false);
6228// Module
6229exports.push([module.i, ".w-e-menu .w-e-panel-container {\n position: absolute;\n top: 0;\n left: 50%;\n border: 1px solid #ccc;\n border-top: 0;\n box-shadow: 1px 1px 2px #ccc;\n color: #333;\n background-color: #fff;\n text-align: left;\n /* 为 emotion panel 定制的样式 */\n /* 上传图片的 panel 定制样式 */\n}\n.w-e-menu .w-e-panel-container .w-e-panel-close {\n position: absolute;\n right: 0;\n top: 0;\n padding: 5px;\n margin: 2px 5px 0 0;\n cursor: pointer;\n color: #999;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-close:hover {\n color: #333;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title {\n list-style: none;\n display: flex;\n font-size: 14px;\n margin: 2px 10px 0 10px;\n border-bottom: 1px solid #f1f1f1;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-item {\n padding: 3px 5px;\n color: #999;\n cursor: pointer;\n margin: 0 3px;\n position: relative;\n top: 1px;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-active {\n color: #333;\n border-bottom: 1px solid #333;\n cursor: default;\n font-weight: 700;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content {\n padding: 10px 15px 10px 15px;\n font-size: 16px;\n /* 输入框的样式 */\n /* 按钮的样式 */\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input:focus,\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus,\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content button:focus {\n outline: none;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea {\n width: 100%;\n border: 1px solid #ccc;\n padding: 5px;\n margin-top: 10px;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus {\n border-color: #1e88e5;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text] {\n border: none;\n border-bottom: 1px solid #ccc;\n font-size: 14px;\n height: 20px;\n color: #333;\n text-align: left;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].small {\n width: 30px;\n text-align: center;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].block {\n display: block;\n width: 100%;\n margin: 10px 0;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus {\n border-bottom: 2px solid #1e88e5;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button {\n font-size: 14px;\n color: #1e88e5;\n border: none;\n padding: 5px 10px;\n background-color: #fff;\n cursor: pointer;\n border-radius: 3px;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left {\n float: left;\n margin-right: 10px;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right {\n float: right;\n margin-left: 10px;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray {\n color: #999;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red {\n color: #c24f4a;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover {\n background-color: #f1f1f1;\n}\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after {\n content: \"\";\n display: table;\n clear: both;\n}\n.w-e-menu .w-e-panel-container .w-e-emoticon-container .w-e-item {\n cursor: pointer;\n font-size: 18px;\n padding: 0 3px;\n display: inline-block;\n}\n.w-e-menu .w-e-panel-container .w-e-up-img-container {\n text-align: center;\n}\n.w-e-menu .w-e-panel-container .w-e-up-img-container .w-e-up-btn {\n display: inline-block;\n color: #999;\n cursor: pointer;\n font-size: 60px;\n line-height: 1;\n}\n.w-e-menu .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover {\n color: #333;\n}\n", ""]);
6230// Exports
6231module.exports = exports;
6232
6233
6234/***/ }),
6235/* 149 */
6236/***/ (function(module, exports, __webpack_require__) {
6237
6238var api = __webpack_require__(19);
6239 var content = __webpack_require__(150);
6240
6241 content = content.__esModule ? content.default : content;
6242
6243 if (typeof content === 'string') {
6244 content = [[module.i, content, '']];
6245 }
6246
6247var options = {};
6248
6249options.insert = "head";
6250options.singleton = false;
6251
6252var update = api(content, options);
6253
6254
6255
6256module.exports = content.locals || {};
6257
6258/***/ }),
6259/* 150 */
6260/***/ (function(module, exports, __webpack_require__) {
6261
6262// Imports
6263var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
6264exports = ___CSS_LOADER_API_IMPORT___(false);
6265// Module
6266exports.push([module.i, ".w-e-toolbar .w-e-droplist {\n position: absolute;\n left: 0;\n top: 0;\n background-color: #fff;\n border: 1px solid #f1f1f1;\n border-right-color: #ccc;\n border-bottom-color: #ccc;\n}\n.w-e-toolbar .w-e-droplist .w-e-dp-title {\n text-align: center;\n color: #999;\n line-height: 2;\n border-bottom: 1px solid #f1f1f1;\n font-size: 13px;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-list {\n list-style: none;\n line-height: 1;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item {\n color: #333;\n padding: 5px 0;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover {\n background-color: #f1f1f1;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-block {\n list-style: none;\n text-align: left;\n padding: 5px;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item {\n display: inline-block;\n padding: 3px 5px;\n}\n.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover {\n background-color: #f1f1f1;\n}\n", ""]);
6267// Exports
6268module.exports = exports;
6269
6270
6271/***/ }),
6272/* 151 */
6273/***/ (function(module, exports, __webpack_require__) {
6274
6275"use strict";
6276
6277/**
6278 * @description polyfill 【注意,js 语法的兼容,都通过 babel transform runtime 支持】
6279 * @author wangfupeng
6280 */
6281
6282var _interopRequireDefault = __webpack_require__(0);
6283
6284var _promise = _interopRequireDefault(__webpack_require__(152));
6285
6286if (!Element.prototype.matches) {
6287 Element.prototype.matches = function (s) {
6288 var matches = this.ownerDocument.querySelectorAll(s);
6289 var i = matches.length;
6290
6291 for (i; i >= 0; i--) {
6292 if (matches.item(i) === this) break;
6293 }
6294
6295 return i > -1;
6296 };
6297} // 有的第三方库需要原生 Promise ,而 IE11 又没有原生 Promise ,就报错
6298
6299
6300if (!window.Promise) {
6301 window.Promise = _promise["default"];
6302}
6303
6304/***/ }),
6305/* 152 */
6306/***/ (function(module, exports, __webpack_require__) {
6307
6308module.exports = __webpack_require__(153);
6309
6310/***/ }),
6311/* 153 */
6312/***/ (function(module, exports, __webpack_require__) {
6313
6314var parent = __webpack_require__(154);
6315
6316module.exports = parent;
6317
6318
6319/***/ }),
6320/* 154 */
6321/***/ (function(module, exports, __webpack_require__) {
6322
6323__webpack_require__(155);
6324__webpack_require__(62);
6325__webpack_require__(161);
6326__webpack_require__(167);
6327__webpack_require__(168);
6328__webpack_require__(169);
6329__webpack_require__(64);
6330__webpack_require__(50);
6331var path = __webpack_require__(10);
6332
6333module.exports = path.Promise;
6334
6335
6336/***/ }),
6337/* 155 */
6338/***/ (function(module, exports, __webpack_require__) {
6339
6340"use strict";
6341
6342var $ = __webpack_require__(4);
6343var getPrototypeOf = __webpack_require__(74);
6344var setPrototypeOf = __webpack_require__(75);
6345var create = __webpack_require__(47);
6346var createNonEnumerableProperty = __webpack_require__(16);
6347var createPropertyDescriptor = __webpack_require__(34);
6348var iterate = __webpack_require__(38);
6349
6350var $AggregateError = function AggregateError(errors, message) {
6351 var that = this;
6352 if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);
6353 if (setPrototypeOf) {
6354 that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));
6355 }
6356 if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));
6357 var errorsArray = [];
6358 iterate(errors, errorsArray.push, { that: errorsArray });
6359 createNonEnumerableProperty(that, 'errors', errorsArray);
6360 return that;
6361};
6362
6363$AggregateError.prototype = create(Error.prototype, {
6364 constructor: createPropertyDescriptor(5, $AggregateError),
6365 message: createPropertyDescriptor(5, ''),
6366 name: createPropertyDescriptor(5, 'AggregateError')
6367});
6368
6369$({ global: true }, {
6370 AggregateError: $AggregateError
6371});
6372
6373
6374/***/ }),
6375/* 156 */
6376/***/ (function(module, exports, __webpack_require__) {
6377
6378var fails = __webpack_require__(12);
6379
6380module.exports = !fails(function () {
6381 function F() { /* empty */ }
6382 F.prototype.constructor = null;
6383 return Object.getPrototypeOf(new F()) !== F.prototype;
6384});
6385
6386
6387/***/ }),
6388/* 157 */
6389/***/ (function(module, exports, __webpack_require__) {
6390
6391var isObject = __webpack_require__(13);
6392
6393module.exports = function (it) {
6394 if (!isObject(it) && it !== null) {
6395 throw TypeError("Can't set " + String(it) + ' as a prototype');
6396 } return it;
6397};
6398
6399
6400/***/ }),
6401/* 158 */
6402/***/ (function(module, exports, __webpack_require__) {
6403
6404var wellKnownSymbol = __webpack_require__(9);
6405var Iterators = __webpack_require__(39);
6406
6407var ITERATOR = wellKnownSymbol('iterator');
6408var ArrayPrototype = Array.prototype;
6409
6410// check on default Array iterator
6411module.exports = function (it) {
6412 return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
6413};
6414
6415
6416/***/ }),
6417/* 159 */
6418/***/ (function(module, exports, __webpack_require__) {
6419
6420var classof = __webpack_require__(61);
6421var Iterators = __webpack_require__(39);
6422var wellKnownSymbol = __webpack_require__(9);
6423
6424var ITERATOR = wellKnownSymbol('iterator');
6425
6426module.exports = function (it) {
6427 if (it != undefined) return it[ITERATOR]
6428 || it['@@iterator']
6429 || Iterators[classof(it)];
6430};
6431
6432
6433/***/ }),
6434/* 160 */
6435/***/ (function(module, exports, __webpack_require__) {
6436
6437var anObject = __webpack_require__(23);
6438
6439module.exports = function (iterator) {
6440 var returnMethod = iterator['return'];
6441 if (returnMethod !== undefined) {
6442 return anObject(returnMethod.call(iterator)).value;
6443 }
6444};
6445
6446
6447/***/ }),
6448/* 161 */
6449/***/ (function(module, exports, __webpack_require__) {
6450
6451"use strict";
6452
6453var $ = __webpack_require__(4);
6454var IS_PURE = __webpack_require__(36);
6455var global = __webpack_require__(8);
6456var getBuiltIn = __webpack_require__(26);
6457var NativePromise = __webpack_require__(101);
6458var redefine = __webpack_require__(49);
6459var redefineAll = __webpack_require__(102);
6460var setToStringTag = __webpack_require__(40);
6461var setSpecies = __webpack_require__(103);
6462var isObject = __webpack_require__(13);
6463var aFunction = __webpack_require__(30);
6464var anInstance = __webpack_require__(78);
6465var inspectSource = __webpack_require__(104);
6466var iterate = __webpack_require__(38);
6467var checkCorrectnessOfIteration = __webpack_require__(163);
6468var speciesConstructor = __webpack_require__(105);
6469var task = __webpack_require__(106).set;
6470var microtask = __webpack_require__(164);
6471var promiseResolve = __webpack_require__(108);
6472var hostReportErrors = __webpack_require__(165);
6473var newPromiseCapabilityModule = __webpack_require__(63);
6474var perform = __webpack_require__(81);
6475var InternalStateModule = __webpack_require__(41);
6476var isForced = __webpack_require__(97);
6477var wellKnownSymbol = __webpack_require__(9);
6478var IS_NODE = __webpack_require__(80);
6479var V8_VERSION = __webpack_require__(82);
6480
6481var SPECIES = wellKnownSymbol('species');
6482var PROMISE = 'Promise';
6483var getInternalState = InternalStateModule.get;
6484var setInternalState = InternalStateModule.set;
6485var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
6486var PromiseConstructor = NativePromise;
6487var TypeError = global.TypeError;
6488var document = global.document;
6489var process = global.process;
6490var $fetch = getBuiltIn('fetch');
6491var newPromiseCapability = newPromiseCapabilityModule.f;
6492var newGenericPromiseCapability = newPromiseCapability;
6493var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
6494var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
6495var UNHANDLED_REJECTION = 'unhandledrejection';
6496var REJECTION_HANDLED = 'rejectionhandled';
6497var PENDING = 0;
6498var FULFILLED = 1;
6499var REJECTED = 2;
6500var HANDLED = 1;
6501var UNHANDLED = 2;
6502var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
6503
6504var FORCED = isForced(PROMISE, function () {
6505 var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);
6506 if (!GLOBAL_CORE_JS_PROMISE) {
6507 // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
6508 // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
6509 // We can't detect it synchronously, so just check versions
6510 if (V8_VERSION === 66) return true;
6511 // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
6512 if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;
6513 }
6514 // We need Promise#finally in the pure version for preventing prototype pollution
6515 if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;
6516 // We can't use @@species feature detection in V8 since it causes
6517 // deoptimization and performance degradation
6518 // https://github.com/zloirock/core-js/issues/679
6519 if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;
6520 // Detect correctness of subclassing with @@species support
6521 var promise = PromiseConstructor.resolve(1);
6522 var FakePromise = function (exec) {
6523 exec(function () { /* empty */ }, function () { /* empty */ });
6524 };
6525 var constructor = promise.constructor = {};
6526 constructor[SPECIES] = FakePromise;
6527 return !(promise.then(function () { /* empty */ }) instanceof FakePromise);
6528});
6529
6530var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
6531 PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });
6532});
6533
6534// helpers
6535var isThenable = function (it) {
6536 var then;
6537 return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
6538};
6539
6540var notify = function (state, isReject) {
6541 if (state.notified) return;
6542 state.notified = true;
6543 var chain = state.reactions;
6544 microtask(function () {
6545 var value = state.value;
6546 var ok = state.state == FULFILLED;
6547 var index = 0;
6548 // variable length - can't use forEach
6549 while (chain.length > index) {
6550 var reaction = chain[index++];
6551 var handler = ok ? reaction.ok : reaction.fail;
6552 var resolve = reaction.resolve;
6553 var reject = reaction.reject;
6554 var domain = reaction.domain;
6555 var result, then, exited;
6556 try {
6557 if (handler) {
6558 if (!ok) {
6559 if (state.rejection === UNHANDLED) onHandleUnhandled(state);
6560 state.rejection = HANDLED;
6561 }
6562 if (handler === true) result = value;
6563 else {
6564 if (domain) domain.enter();
6565 result = handler(value); // can throw
6566 if (domain) {
6567 domain.exit();
6568 exited = true;
6569 }
6570 }
6571 if (result === reaction.promise) {
6572 reject(TypeError('Promise-chain cycle'));
6573 } else if (then = isThenable(result)) {
6574 then.call(result, resolve, reject);
6575 } else resolve(result);
6576 } else reject(value);
6577 } catch (error) {
6578 if (domain && !exited) domain.exit();
6579 reject(error);
6580 }
6581 }
6582 state.reactions = [];
6583 state.notified = false;
6584 if (isReject && !state.rejection) onUnhandled(state);
6585 });
6586};
6587
6588var dispatchEvent = function (name, promise, reason) {
6589 var event, handler;
6590 if (DISPATCH_EVENT) {
6591 event = document.createEvent('Event');
6592 event.promise = promise;
6593 event.reason = reason;
6594 event.initEvent(name, false, true);
6595 global.dispatchEvent(event);
6596 } else event = { promise: promise, reason: reason };
6597 if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);
6598 else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
6599};
6600
6601var onUnhandled = function (state) {
6602 task.call(global, function () {
6603 var promise = state.facade;
6604 var value = state.value;
6605 var IS_UNHANDLED = isUnhandled(state);
6606 var result;
6607 if (IS_UNHANDLED) {
6608 result = perform(function () {
6609 if (IS_NODE) {
6610 process.emit('unhandledRejection', value, promise);
6611 } else dispatchEvent(UNHANDLED_REJECTION, promise, value);
6612 });
6613 // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
6614 state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
6615 if (result.error) throw result.value;
6616 }
6617 });
6618};
6619
6620var isUnhandled = function (state) {
6621 return state.rejection !== HANDLED && !state.parent;
6622};
6623
6624var onHandleUnhandled = function (state) {
6625 task.call(global, function () {
6626 var promise = state.facade;
6627 if (IS_NODE) {
6628 process.emit('rejectionHandled', promise);
6629 } else dispatchEvent(REJECTION_HANDLED, promise, state.value);
6630 });
6631};
6632
6633var bind = function (fn, state, unwrap) {
6634 return function (value) {
6635 fn(state, value, unwrap);
6636 };
6637};
6638
6639var internalReject = function (state, value, unwrap) {
6640 if (state.done) return;
6641 state.done = true;
6642 if (unwrap) state = unwrap;
6643 state.value = value;
6644 state.state = REJECTED;
6645 notify(state, true);
6646};
6647
6648var internalResolve = function (state, value, unwrap) {
6649 if (state.done) return;
6650 state.done = true;
6651 if (unwrap) state = unwrap;
6652 try {
6653 if (state.facade === value) throw TypeError("Promise can't be resolved itself");
6654 var then = isThenable(value);
6655 if (then) {
6656 microtask(function () {
6657 var wrapper = { done: false };
6658 try {
6659 then.call(value,
6660 bind(internalResolve, wrapper, state),
6661 bind(internalReject, wrapper, state)
6662 );
6663 } catch (error) {
6664 internalReject(wrapper, error, state);
6665 }
6666 });
6667 } else {
6668 state.value = value;
6669 state.state = FULFILLED;
6670 notify(state, false);
6671 }
6672 } catch (error) {
6673 internalReject({ done: false }, error, state);
6674 }
6675};
6676
6677// constructor polyfill
6678if (FORCED) {
6679 // 25.4.3.1 Promise(executor)
6680 PromiseConstructor = function Promise(executor) {
6681 anInstance(this, PromiseConstructor, PROMISE);
6682 aFunction(executor);
6683 Internal.call(this);
6684 var state = getInternalState(this);
6685 try {
6686 executor(bind(internalResolve, state), bind(internalReject, state));
6687 } catch (error) {
6688 internalReject(state, error);
6689 }
6690 };
6691 // eslint-disable-next-line no-unused-vars
6692 Internal = function Promise(executor) {
6693 setInternalState(this, {
6694 type: PROMISE,
6695 done: false,
6696 notified: false,
6697 parent: false,
6698 reactions: [],
6699 rejection: false,
6700 state: PENDING,
6701 value: undefined
6702 });
6703 };
6704 Internal.prototype = redefineAll(PromiseConstructor.prototype, {
6705 // `Promise.prototype.then` method
6706 // https://tc39.github.io/ecma262/#sec-promise.prototype.then
6707 then: function then(onFulfilled, onRejected) {
6708 var state = getInternalPromiseState(this);
6709 var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
6710 reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
6711 reaction.fail = typeof onRejected == 'function' && onRejected;
6712 reaction.domain = IS_NODE ? process.domain : undefined;
6713 state.parent = true;
6714 state.reactions.push(reaction);
6715 if (state.state != PENDING) notify(state, false);
6716 return reaction.promise;
6717 },
6718 // `Promise.prototype.catch` method
6719 // https://tc39.github.io/ecma262/#sec-promise.prototype.catch
6720 'catch': function (onRejected) {
6721 return this.then(undefined, onRejected);
6722 }
6723 });
6724 OwnPromiseCapability = function () {
6725 var promise = new Internal();
6726 var state = getInternalState(promise);
6727 this.promise = promise;
6728 this.resolve = bind(internalResolve, state);
6729 this.reject = bind(internalReject, state);
6730 };
6731 newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
6732 return C === PromiseConstructor || C === PromiseWrapper
6733 ? new OwnPromiseCapability(C)
6734 : newGenericPromiseCapability(C);
6735 };
6736
6737 if (!IS_PURE && typeof NativePromise == 'function') {
6738 nativeThen = NativePromise.prototype.then;
6739
6740 // wrap native Promise#then for native async functions
6741 redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {
6742 var that = this;
6743 return new PromiseConstructor(function (resolve, reject) {
6744 nativeThen.call(that, resolve, reject);
6745 }).then(onFulfilled, onRejected);
6746 // https://github.com/zloirock/core-js/issues/640
6747 }, { unsafe: true });
6748
6749 // wrap fetch result
6750 if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {
6751 // eslint-disable-next-line no-unused-vars
6752 fetch: function fetch(input /* , init */) {
6753 return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
6754 }
6755 });
6756 }
6757}
6758
6759$({ global: true, wrap: true, forced: FORCED }, {
6760 Promise: PromiseConstructor
6761});
6762
6763setToStringTag(PromiseConstructor, PROMISE, false, true);
6764setSpecies(PROMISE);
6765
6766PromiseWrapper = getBuiltIn(PROMISE);
6767
6768// statics
6769$({ target: PROMISE, stat: true, forced: FORCED }, {
6770 // `Promise.reject` method
6771 // https://tc39.github.io/ecma262/#sec-promise.reject
6772 reject: function reject(r) {
6773 var capability = newPromiseCapability(this);
6774 capability.reject.call(undefined, r);
6775 return capability.promise;
6776 }
6777});
6778
6779$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {
6780 // `Promise.resolve` method
6781 // https://tc39.github.io/ecma262/#sec-promise.resolve
6782 resolve: function resolve(x) {
6783 return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);
6784 }
6785});
6786
6787$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
6788 // `Promise.all` method
6789 // https://tc39.github.io/ecma262/#sec-promise.all
6790 all: function all(iterable) {
6791 var C = this;
6792 var capability = newPromiseCapability(C);
6793 var resolve = capability.resolve;
6794 var reject = capability.reject;
6795 var result = perform(function () {
6796 var $promiseResolve = aFunction(C.resolve);
6797 var values = [];
6798 var counter = 0;
6799 var remaining = 1;
6800 iterate(iterable, function (promise) {
6801 var index = counter++;
6802 var alreadyCalled = false;
6803 values.push(undefined);
6804 remaining++;
6805 $promiseResolve.call(C, promise).then(function (value) {
6806 if (alreadyCalled) return;
6807 alreadyCalled = true;
6808 values[index] = value;
6809 --remaining || resolve(values);
6810 }, reject);
6811 });
6812 --remaining || resolve(values);
6813 });
6814 if (result.error) reject(result.value);
6815 return capability.promise;
6816 },
6817 // `Promise.race` method
6818 // https://tc39.github.io/ecma262/#sec-promise.race
6819 race: function race(iterable) {
6820 var C = this;
6821 var capability = newPromiseCapability(C);
6822 var reject = capability.reject;
6823 var result = perform(function () {
6824 var $promiseResolve = aFunction(C.resolve);
6825 iterate(iterable, function (promise) {
6826 $promiseResolve.call(C, promise).then(capability.resolve, reject);
6827 });
6828 });
6829 if (result.error) reject(result.value);
6830 return capability.promise;
6831 }
6832});
6833
6834
6835/***/ }),
6836/* 162 */
6837/***/ (function(module, exports, __webpack_require__) {
6838
6839"use strict";
6840
6841var TO_STRING_TAG_SUPPORT = __webpack_require__(77);
6842var classof = __webpack_require__(61);
6843
6844// `Object.prototype.toString` method implementation
6845// https://tc39.github.io/ecma262/#sec-object.prototype.tostring
6846module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
6847 return '[object ' + classof(this) + ']';
6848};
6849
6850
6851/***/ }),
6852/* 163 */
6853/***/ (function(module, exports, __webpack_require__) {
6854
6855var wellKnownSymbol = __webpack_require__(9);
6856
6857var ITERATOR = wellKnownSymbol('iterator');
6858var SAFE_CLOSING = false;
6859
6860try {
6861 var called = 0;
6862 var iteratorWithReturn = {
6863 next: function () {
6864 return { done: !!called++ };
6865 },
6866 'return': function () {
6867 SAFE_CLOSING = true;
6868 }
6869 };
6870 iteratorWithReturn[ITERATOR] = function () {
6871 return this;
6872 };
6873 // eslint-disable-next-line no-throw-literal
6874 Array.from(iteratorWithReturn, function () { throw 2; });
6875} catch (error) { /* empty */ }
6876
6877module.exports = function (exec, SKIP_CLOSING) {
6878 if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
6879 var ITERATION_SUPPORT = false;
6880 try {
6881 var object = {};
6882 object[ITERATOR] = function () {
6883 return {
6884 next: function () {
6885 return { done: ITERATION_SUPPORT = true };
6886 }
6887 };
6888 };
6889 exec(object);
6890 } catch (error) { /* empty */ }
6891 return ITERATION_SUPPORT;
6892};
6893
6894
6895/***/ }),
6896/* 164 */
6897/***/ (function(module, exports, __webpack_require__) {
6898
6899var global = __webpack_require__(8);
6900var getOwnPropertyDescriptor = __webpack_require__(66).f;
6901var macrotask = __webpack_require__(106).set;
6902var IS_IOS = __webpack_require__(107);
6903var IS_NODE = __webpack_require__(80);
6904
6905var MutationObserver = global.MutationObserver || global.WebKitMutationObserver;
6906var document = global.document;
6907var process = global.process;
6908var Promise = global.Promise;
6909// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
6910var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');
6911var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
6912
6913var flush, head, last, notify, toggle, node, promise, then;
6914
6915// modern engines have queueMicrotask method
6916if (!queueMicrotask) {
6917 flush = function () {
6918 var parent, fn;
6919 if (IS_NODE && (parent = process.domain)) parent.exit();
6920 while (head) {
6921 fn = head.fn;
6922 head = head.next;
6923 try {
6924 fn();
6925 } catch (error) {
6926 if (head) notify();
6927 else last = undefined;
6928 throw error;
6929 }
6930 } last = undefined;
6931 if (parent) parent.enter();
6932 };
6933
6934 // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
6935 if (!IS_IOS && !IS_NODE && MutationObserver && document) {
6936 toggle = true;
6937 node = document.createTextNode('');
6938 new MutationObserver(flush).observe(node, { characterData: true });
6939 notify = function () {
6940 node.data = toggle = !toggle;
6941 };
6942 // environments with maybe non-completely correct, but existent Promise
6943 } else if (Promise && Promise.resolve) {
6944 // Promise.resolve without an argument throws an error in LG WebOS 2
6945 promise = Promise.resolve(undefined);
6946 then = promise.then;
6947 notify = function () {
6948 then.call(promise, flush);
6949 };
6950 // Node.js without promises
6951 } else if (IS_NODE) {
6952 notify = function () {
6953 process.nextTick(flush);
6954 };
6955 // for other environments - macrotask based on:
6956 // - setImmediate
6957 // - MessageChannel
6958 // - window.postMessag
6959 // - onreadystatechange
6960 // - setTimeout
6961 } else {
6962 notify = function () {
6963 // strange IE + webpack dev server bug - use .call(global)
6964 macrotask.call(global, flush);
6965 };
6966 }
6967}
6968
6969module.exports = queueMicrotask || function (fn) {
6970 var task = { fn: fn, next: undefined };
6971 if (last) last.next = task;
6972 if (!head) {
6973 head = task;
6974 notify();
6975 } last = task;
6976};
6977
6978
6979/***/ }),
6980/* 165 */
6981/***/ (function(module, exports, __webpack_require__) {
6982
6983var global = __webpack_require__(8);
6984
6985module.exports = function (a, b) {
6986 var console = global.console;
6987 if (console && console.error) {
6988 arguments.length === 1 ? console.error(a) : console.error(a, b);
6989 }
6990};
6991
6992
6993/***/ }),
6994/* 166 */
6995/***/ (function(module, exports, __webpack_require__) {
6996
6997var global = __webpack_require__(8);
6998var inspectSource = __webpack_require__(104);
6999
7000var WeakMap = global.WeakMap;
7001
7002module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
7003
7004
7005/***/ }),
7006/* 167 */
7007/***/ (function(module, exports, __webpack_require__) {
7008
7009"use strict";
7010
7011var $ = __webpack_require__(4);
7012var aFunction = __webpack_require__(30);
7013var newPromiseCapabilityModule = __webpack_require__(63);
7014var perform = __webpack_require__(81);
7015var iterate = __webpack_require__(38);
7016
7017// `Promise.allSettled` method
7018// https://github.com/tc39/proposal-promise-allSettled
7019$({ target: 'Promise', stat: true }, {
7020 allSettled: function allSettled(iterable) {
7021 var C = this;
7022 var capability = newPromiseCapabilityModule.f(C);
7023 var resolve = capability.resolve;
7024 var reject = capability.reject;
7025 var result = perform(function () {
7026 var promiseResolve = aFunction(C.resolve);
7027 var values = [];
7028 var counter = 0;
7029 var remaining = 1;
7030 iterate(iterable, function (promise) {
7031 var index = counter++;
7032 var alreadyCalled = false;
7033 values.push(undefined);
7034 remaining++;
7035 promiseResolve.call(C, promise).then(function (value) {
7036 if (alreadyCalled) return;
7037 alreadyCalled = true;
7038 values[index] = { status: 'fulfilled', value: value };
7039 --remaining || resolve(values);
7040 }, function (error) {
7041 if (alreadyCalled) return;
7042 alreadyCalled = true;
7043 values[index] = { status: 'rejected', reason: error };
7044 --remaining || resolve(values);
7045 });
7046 });
7047 --remaining || resolve(values);
7048 });
7049 if (result.error) reject(result.value);
7050 return capability.promise;
7051 }
7052});
7053
7054
7055/***/ }),
7056/* 168 */
7057/***/ (function(module, exports, __webpack_require__) {
7058
7059"use strict";
7060
7061var $ = __webpack_require__(4);
7062var aFunction = __webpack_require__(30);
7063var getBuiltIn = __webpack_require__(26);
7064var newPromiseCapabilityModule = __webpack_require__(63);
7065var perform = __webpack_require__(81);
7066var iterate = __webpack_require__(38);
7067
7068var PROMISE_ANY_ERROR = 'No one promise resolved';
7069
7070// `Promise.any` method
7071// https://github.com/tc39/proposal-promise-any
7072$({ target: 'Promise', stat: true }, {
7073 any: function any(iterable) {
7074 var C = this;
7075 var capability = newPromiseCapabilityModule.f(C);
7076 var resolve = capability.resolve;
7077 var reject = capability.reject;
7078 var result = perform(function () {
7079 var promiseResolve = aFunction(C.resolve);
7080 var errors = [];
7081 var counter = 0;
7082 var remaining = 1;
7083 var alreadyResolved = false;
7084 iterate(iterable, function (promise) {
7085 var index = counter++;
7086 var alreadyRejected = false;
7087 errors.push(undefined);
7088 remaining++;
7089 promiseResolve.call(C, promise).then(function (value) {
7090 if (alreadyRejected || alreadyResolved) return;
7091 alreadyResolved = true;
7092 resolve(value);
7093 }, function (error) {
7094 if (alreadyRejected || alreadyResolved) return;
7095 alreadyRejected = true;
7096 errors[index] = error;
7097 --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
7098 });
7099 });
7100 --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
7101 });
7102 if (result.error) reject(result.value);
7103 return capability.promise;
7104 }
7105});
7106
7107
7108/***/ }),
7109/* 169 */
7110/***/ (function(module, exports, __webpack_require__) {
7111
7112"use strict";
7113
7114var $ = __webpack_require__(4);
7115var IS_PURE = __webpack_require__(36);
7116var NativePromise = __webpack_require__(101);
7117var fails = __webpack_require__(12);
7118var getBuiltIn = __webpack_require__(26);
7119var speciesConstructor = __webpack_require__(105);
7120var promiseResolve = __webpack_require__(108);
7121var redefine = __webpack_require__(49);
7122
7123// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
7124var NON_GENERIC = !!NativePromise && fails(function () {
7125 NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
7126});
7127
7128// `Promise.prototype.finally` method
7129// https://tc39.github.io/ecma262/#sec-promise.prototype.finally
7130$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
7131 'finally': function (onFinally) {
7132 var C = speciesConstructor(this, getBuiltIn('Promise'));
7133 var isFunction = typeof onFinally == 'function';
7134 return this.then(
7135 isFunction ? function (x) {
7136 return promiseResolve(C, onFinally()).then(function () { return x; });
7137 } : onFinally,
7138 isFunction ? function (e) {
7139 return promiseResolve(C, onFinally()).then(function () { throw e; });
7140 } : onFinally
7141 );
7142 }
7143});
7144
7145// patch native Promise.prototype for native async functions
7146if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {
7147 redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);
7148}
7149
7150
7151/***/ }),
7152/* 170 */
7153/***/ (function(module, exports, __webpack_require__) {
7154
7155var toInteger = __webpack_require__(58);
7156var requireObjectCoercible = __webpack_require__(45);
7157
7158// `String.prototype.{ codePointAt, at }` methods implementation
7159var createMethod = function (CONVERT_TO_STRING) {
7160 return function ($this, pos) {
7161 var S = String(requireObjectCoercible($this));
7162 var position = toInteger(pos);
7163 var size = S.length;
7164 var first, second;
7165 if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
7166 first = S.charCodeAt(position);
7167 return first < 0xD800 || first > 0xDBFF || position + 1 === size
7168 || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
7169 ? CONVERT_TO_STRING ? S.charAt(position) : first
7170 : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
7171 };
7172};
7173
7174module.exports = {
7175 // `String.prototype.codePointAt` method
7176 // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat
7177 codeAt: createMethod(false),
7178 // `String.prototype.at` method
7179 // https://github.com/mathiasbynens/String.prototype.at
7180 charAt: createMethod(true)
7181};
7182
7183
7184/***/ }),
7185/* 171 */
7186/***/ (function(module, exports, __webpack_require__) {
7187
7188"use strict";
7189
7190var IteratorPrototype = __webpack_require__(109).IteratorPrototype;
7191var create = __webpack_require__(47);
7192var createPropertyDescriptor = __webpack_require__(34);
7193var setToStringTag = __webpack_require__(40);
7194var Iterators = __webpack_require__(39);
7195
7196var returnThis = function () { return this; };
7197
7198module.exports = function (IteratorConstructor, NAME, next) {
7199 var TO_STRING_TAG = NAME + ' Iterator';
7200 IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
7201 setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
7202 Iterators[TO_STRING_TAG] = returnThis;
7203 return IteratorConstructor;
7204};
7205
7206
7207/***/ }),
7208/* 172 */
7209/***/ (function(module, exports, __webpack_require__) {
7210
7211"use strict";
7212
7213var toIndexedObject = __webpack_require__(25);
7214var addToUnscopables = __webpack_require__(84);
7215var Iterators = __webpack_require__(39);
7216var InternalStateModule = __webpack_require__(41);
7217var defineIterator = __webpack_require__(83);
7218
7219var ARRAY_ITERATOR = 'Array Iterator';
7220var setInternalState = InternalStateModule.set;
7221var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
7222
7223// `Array.prototype.entries` method
7224// https://tc39.github.io/ecma262/#sec-array.prototype.entries
7225// `Array.prototype.keys` method
7226// https://tc39.github.io/ecma262/#sec-array.prototype.keys
7227// `Array.prototype.values` method
7228// https://tc39.github.io/ecma262/#sec-array.prototype.values
7229// `Array.prototype[@@iterator]` method
7230// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator
7231// `CreateArrayIterator` internal method
7232// https://tc39.github.io/ecma262/#sec-createarrayiterator
7233module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
7234 setInternalState(this, {
7235 type: ARRAY_ITERATOR,
7236 target: toIndexedObject(iterated), // target
7237 index: 0, // next index
7238 kind: kind // kind
7239 });
7240// `%ArrayIteratorPrototype%.next` method
7241// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next
7242}, function () {
7243 var state = getInternalState(this);
7244 var target = state.target;
7245 var kind = state.kind;
7246 var index = state.index++;
7247 if (!target || index >= target.length) {
7248 state.target = undefined;
7249 return { value: undefined, done: true };
7250 }
7251 if (kind == 'keys') return { value: index, done: false };
7252 if (kind == 'values') return { value: target[index], done: false };
7253 return { value: [index, target[index]], done: false };
7254}, 'values');
7255
7256// argumentsList[@@iterator] is %ArrayProto_values%
7257// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject
7258// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject
7259Iterators.Arguments = Iterators.Array;
7260
7261// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
7262addToUnscopables('keys');
7263addToUnscopables('values');
7264addToUnscopables('entries');
7265
7266
7267/***/ }),
7268/* 173 */
7269/***/ (function(module, exports) {
7270
7271// iterable DOM collections
7272// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
7273module.exports = {
7274 CSSRuleList: 0,
7275 CSSStyleDeclaration: 0,
7276 CSSValueList: 0,
7277 ClientRectList: 0,
7278 DOMRectList: 0,
7279 DOMStringList: 0,
7280 DOMTokenList: 1,
7281 DataTransferItemList: 0,
7282 FileList: 0,
7283 HTMLAllCollection: 0,
7284 HTMLCollection: 0,
7285 HTMLFormElement: 0,
7286 HTMLSelectElement: 0,
7287 MediaList: 0,
7288 MimeTypeArray: 0,
7289 NamedNodeMap: 0,
7290 NodeList: 1,
7291 PaintRequestList: 0,
7292 Plugin: 0,
7293 PluginArray: 0,
7294 SVGLengthList: 0,
7295 SVGNumberList: 0,
7296 SVGPathSegList: 0,
7297 SVGPointList: 0,
7298 SVGStringList: 0,
7299 SVGTransformList: 0,
7300 SourceBufferList: 0,
7301 StyleSheetList: 0,
7302 TextTrackCueList: 0,
7303 TextTrackList: 0,
7304 TouchList: 0
7305};
7306
7307
7308/***/ }),
7309/* 174 */
7310/***/ (function(module, exports, __webpack_require__) {
7311
7312"use strict";
7313
7314/**
7315 * @description 编辑器 class
7316 * @author wangfupeng
7317 */
7318
7319var _interopRequireDefault = __webpack_require__(0);
7320
7321var _forEach = _interopRequireDefault(__webpack_require__(6));
7322
7323var _defineProperty = _interopRequireDefault(__webpack_require__(1));
7324
7325var _create = _interopRequireDefault(__webpack_require__(3));
7326
7327var __createBinding = void 0 && (void 0).__createBinding || (_create["default"] ? function (o, m, k, k2) {
7328 if (k2 === undefined) k2 = k;
7329 (0, _defineProperty["default"])(o, k2, {
7330 enumerable: true,
7331 get: function get() {
7332 return m[k];
7333 }
7334 });
7335} : function (o, m, k, k2) {
7336 if (k2 === undefined) k2 = k;
7337 o[k2] = m[k];
7338});
7339
7340var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (_create["default"] ? function (o, v) {
7341 (0, _defineProperty["default"])(o, "default", {
7342 enumerable: true,
7343 value: v
7344 });
7345} : function (o, v) {
7346 o["default"] = v;
7347});
7348
7349var __importStar = void 0 && (void 0).__importStar || function (mod) {
7350 if (mod && mod.__esModule) return mod;
7351 var result = {};
7352 if (mod != null) for (var k in mod) {
7353 if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
7354 }
7355
7356 __setModuleDefault(result, mod);
7357
7358 return result;
7359};
7360
7361var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
7362 return mod && mod.__esModule ? mod : {
7363 "default": mod
7364 };
7365};
7366
7367(0, _defineProperty["default"])(exports, "__esModule", {
7368 value: true
7369});
7370
7371var dom_core_1 = __importDefault(__webpack_require__(2));
7372
7373var util_1 = __webpack_require__(7);
7374
7375var config_1 = __importDefault(__webpack_require__(263));
7376
7377var selection_1 = __importDefault(__webpack_require__(277));
7378
7379var command_1 = __importDefault(__webpack_require__(279));
7380
7381var index_1 = __importDefault(__webpack_require__(280));
7382
7383var index_2 = __importDefault(__webpack_require__(299));
7384
7385var init_dom_1 = __importDefault(__webpack_require__(376));
7386
7387var init_selection_1 = __importDefault(__webpack_require__(377));
7388
7389var bind_event_1 = __importDefault(__webpack_require__(378));
7390
7391var i18next_init_1 = __importDefault(__webpack_require__(379));
7392
7393var set_full_screen_1 = __importStar(__webpack_require__(380));
7394
7395var scroll_to_head_1 = __importDefault(__webpack_require__(383));
7396
7397var z_index_1 = __importDefault(__webpack_require__(384));
7398
7399var index_3 = __importDefault(__webpack_require__(385));
7400
7401var index_4 = __importDefault(__webpack_require__(387));
7402
7403var disable_1 = __importDefault(__webpack_require__(402)); // 创建菜单的 class
7404
7405
7406var BtnMenu_1 = __importDefault(__webpack_require__(24));
7407
7408var DropList_1 = __importDefault(__webpack_require__(124));
7409
7410var DropListMenu_1 = __importDefault(__webpack_require__(22));
7411
7412var Panel_1 = __importDefault(__webpack_require__(29));
7413
7414var PanelMenu_1 = __importDefault(__webpack_require__(33));
7415
7416var Tooltip_1 = __importDefault(__webpack_require__(43));
7417
7418var EDITOR_ID = 1;
7419
7420var Editor =
7421/** @class */
7422function () {
7423 /**
7424 * 构造函数
7425 * @param toolbarSelector 工具栏 DOM selector
7426 * @param textSelector 文本区域 DOM selector
7427 */
7428 function Editor(toolbarSelector, textSelector) {
7429 // 实例销毁前需要执行的钩子集合
7430 this.beforeDestroyHooks = []; // id,用以区分单个页面不同的编辑器对象
7431
7432 this.id = "wangEditor-" + EDITOR_ID++;
7433 this.toolbarSelector = toolbarSelector;
7434 this.textSelector = textSelector;
7435
7436 if (toolbarSelector == null) {
7437 throw new Error('错误:初始化编辑器时候未传入任何参数,请查阅文档');
7438 } // 属性的默认值,后面可能会再修改
7439 // 默认配置 - 当一个页面有多个编辑器的时候,因为 JS 的特性(引用类型)会导致多个编辑器的 config 引用是同一个,所以需要 深度克隆 断掉引用
7440
7441
7442 this.config = util_1.deepClone(config_1["default"]);
7443 this.$toolbarElem = dom_core_1["default"]('<div></div>');
7444 this.$textContainerElem = dom_core_1["default"]('<div></div>');
7445 this.$textElem = dom_core_1["default"]('<div></div>');
7446 this.toolbarElemId = '';
7447 this.textElemId = '';
7448 this.isFocus = false;
7449 this.isComposing = false;
7450 this.isCompatibleMode = false;
7451 this.selection = new selection_1["default"](this);
7452 this.cmd = new command_1["default"](this);
7453 this.txt = new index_1["default"](this);
7454 this.menus = new index_2["default"](this);
7455 this.zIndex = new z_index_1["default"]();
7456 this.change = new index_3["default"](this);
7457 this.history = new index_4["default"](this);
7458
7459 var _a = disable_1["default"](this),
7460 disable = _a.disable,
7461 enable = _a.enable;
7462
7463 this.disable = disable;
7464 this.enable = enable;
7465 }
7466 /**
7467 * 初始化选区
7468 * @param newLine 新建一行
7469 */
7470
7471
7472 Editor.prototype.initSelection = function (newLine) {
7473 init_selection_1["default"](this, newLine);
7474 };
7475 /**
7476 * 创建编辑器实例
7477 */
7478
7479
7480 Editor.prototype.create = function () {
7481 // 初始化 ZIndex
7482 this.zIndex.init(this); // 确定当前的历史记录模式
7483
7484 this.isCompatibleMode = this.config.compatibleMode(); // 标准模式下,重置延迟时间
7485
7486 if (!this.isCompatibleMode) {
7487 this.config.onchangeTimeout = 30;
7488 } // 国际化 因为要在创建菜单前使用 所以要最先 初始化
7489
7490
7491 i18next_init_1["default"](this); // 初始化 DOM
7492
7493 init_dom_1["default"](this); // 初始化 text
7494
7495 this.txt.init(); // 初始化菜单
7496
7497 this.menus.init(); // 初始化全屏功能
7498
7499 set_full_screen_1["default"](this); // 初始化选区,将光标定位到内容尾部
7500
7501 this.initSelection(true); // 绑定事件
7502
7503 bind_event_1["default"](this); // 绑定监听的目标节点
7504
7505 this.change.observe();
7506 this.history.observe();
7507 };
7508 /**
7509 * 提供给用户添加销毁前的钩子函数
7510 * @param fn 钩子函数
7511 */
7512
7513
7514 Editor.prototype.beforeDestroy = function (fn) {
7515 this.beforeDestroyHooks.push(fn);
7516 return this;
7517 };
7518 /**
7519 * 销毁当前编辑器实例
7520 */
7521
7522
7523 Editor.prototype.destroy = function () {
7524 var _context;
7525
7526 var _this = this; // 调用钩子函数
7527
7528
7529 (0, _forEach["default"])(_context = this.beforeDestroyHooks).call(_context, function (fn) {
7530 return fn.call(_this);
7531 }); // 销毁 DOM 节点
7532
7533 this.$toolbarElem.remove();
7534 this.$textContainerElem.remove();
7535 };
7536 /**
7537 * 将编辑器设置为全屏
7538 */
7539
7540
7541 Editor.prototype.fullScreen = function () {
7542 set_full_screen_1.setFullScreen(this);
7543 };
7544 /**
7545 * 将编辑器退出全屏
7546 */
7547
7548
7549 Editor.prototype.unFullScreen = function () {
7550 set_full_screen_1.setUnFullScreen(this);
7551 };
7552 /**
7553 * 滚动到指定标题锚点
7554 * @param id 标题锚点id
7555 */
7556
7557
7558 Editor.prototype.scrollToHead = function (id) {
7559 scroll_to_head_1["default"](this, id);
7560 }; // 暴露 $
7561
7562
7563 Editor.$ = dom_core_1["default"];
7564 Editor.BtnMenu = BtnMenu_1["default"];
7565 Editor.DropList = DropList_1["default"];
7566 Editor.DropListMenu = DropListMenu_1["default"];
7567 Editor.Panel = Panel_1["default"];
7568 Editor.PanelMenu = PanelMenu_1["default"];
7569 Editor.Tooltip = Tooltip_1["default"];
7570 return Editor;
7571}();
7572
7573exports["default"] = Editor;
7574
7575/***/ }),
7576/* 175 */
7577/***/ (function(module, exports, __webpack_require__) {
7578
7579__webpack_require__(50);
7580var forEach = __webpack_require__(176);
7581var classof = __webpack_require__(61);
7582var ArrayPrototype = Array.prototype;
7583
7584var DOMIterables = {
7585 DOMTokenList: true,
7586 NodeList: true
7587};
7588
7589module.exports = function (it) {
7590 var own = it.forEach;
7591 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)
7592 // eslint-disable-next-line no-prototype-builtins
7593 || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;
7594};
7595
7596
7597/***/ }),
7598/* 176 */
7599/***/ (function(module, exports, __webpack_require__) {
7600
7601var parent = __webpack_require__(177);
7602
7603module.exports = parent;
7604
7605
7606/***/ }),
7607/* 177 */
7608/***/ (function(module, exports, __webpack_require__) {
7609
7610__webpack_require__(178);
7611var entryVirtual = __webpack_require__(18);
7612
7613module.exports = entryVirtual('Array').forEach;
7614
7615
7616/***/ }),
7617/* 178 */
7618/***/ (function(module, exports, __webpack_require__) {
7619
7620"use strict";
7621
7622var $ = __webpack_require__(4);
7623var forEach = __webpack_require__(179);
7624
7625// `Array.prototype.forEach` method
7626// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
7627$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {
7628 forEach: forEach
7629});
7630
7631
7632/***/ }),
7633/* 179 */
7634/***/ (function(module, exports, __webpack_require__) {
7635
7636"use strict";
7637
7638var $forEach = __webpack_require__(42).forEach;
7639var arrayMethodIsStrict = __webpack_require__(110);
7640var arrayMethodUsesToLength = __webpack_require__(27);
7641
7642var STRICT_METHOD = arrayMethodIsStrict('forEach');
7643var USES_TO_LENGTH = arrayMethodUsesToLength('forEach');
7644
7645// `Array.prototype.forEach` method implementation
7646// https://tc39.github.io/ecma262/#sec-array.prototype.foreach
7647module.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {
7648 return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
7649} : [].forEach;
7650
7651
7652/***/ }),
7653/* 180 */
7654/***/ (function(module, exports, __webpack_require__) {
7655
7656var parent = __webpack_require__(181);
7657
7658module.exports = parent;
7659
7660
7661/***/ }),
7662/* 181 */
7663/***/ (function(module, exports, __webpack_require__) {
7664
7665var bind = __webpack_require__(182);
7666
7667var FunctionPrototype = Function.prototype;
7668
7669module.exports = function (it) {
7670 var own = it.bind;
7671 return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own;
7672};
7673
7674
7675/***/ }),
7676/* 182 */
7677/***/ (function(module, exports, __webpack_require__) {
7678
7679__webpack_require__(183);
7680var entryVirtual = __webpack_require__(18);
7681
7682module.exports = entryVirtual('Function').bind;
7683
7684
7685/***/ }),
7686/* 183 */
7687/***/ (function(module, exports, __webpack_require__) {
7688
7689var $ = __webpack_require__(4);
7690var bind = __webpack_require__(184);
7691
7692// `Function.prototype.bind` method
7693// https://tc39.github.io/ecma262/#sec-function.prototype.bind
7694$({ target: 'Function', proto: true }, {
7695 bind: bind
7696});
7697
7698
7699/***/ }),
7700/* 184 */
7701/***/ (function(module, exports, __webpack_require__) {
7702
7703"use strict";
7704
7705var aFunction = __webpack_require__(30);
7706var isObject = __webpack_require__(13);
7707
7708var slice = [].slice;
7709var factories = {};
7710
7711var construct = function (C, argsLength, args) {
7712 if (!(argsLength in factories)) {
7713 for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';
7714 // eslint-disable-next-line no-new-func
7715 factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');
7716 } return factories[argsLength](C, args);
7717};
7718
7719// `Function.prototype.bind` method implementation
7720// https://tc39.github.io/ecma262/#sec-function.prototype.bind
7721module.exports = Function.bind || function bind(that /* , ...args */) {
7722 var fn = aFunction(this);
7723 var partArgs = slice.call(arguments, 1);
7724 var boundFunction = function bound(/* args... */) {
7725 var args = partArgs.concat(slice.call(arguments));
7726 return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);
7727 };
7728 if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;
7729 return boundFunction;
7730};
7731
7732
7733/***/ }),
7734/* 185 */
7735/***/ (function(module, exports, __webpack_require__) {
7736
7737var parent = __webpack_require__(186);
7738
7739module.exports = parent;
7740
7741
7742/***/ }),
7743/* 186 */
7744/***/ (function(module, exports, __webpack_require__) {
7745
7746var arrayIncludes = __webpack_require__(187);
7747var stringIncludes = __webpack_require__(189);
7748
7749var ArrayPrototype = Array.prototype;
7750var StringPrototype = String.prototype;
7751
7752module.exports = function (it) {
7753 var own = it.includes;
7754 if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.includes)) return arrayIncludes;
7755 if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.includes)) {
7756 return stringIncludes;
7757 } return own;
7758};
7759
7760
7761/***/ }),
7762/* 187 */
7763/***/ (function(module, exports, __webpack_require__) {
7764
7765__webpack_require__(188);
7766var entryVirtual = __webpack_require__(18);
7767
7768module.exports = entryVirtual('Array').includes;
7769
7770
7771/***/ }),
7772/* 188 */
7773/***/ (function(module, exports, __webpack_require__) {
7774
7775"use strict";
7776
7777var $ = __webpack_require__(4);
7778var $includes = __webpack_require__(69).includes;
7779var addToUnscopables = __webpack_require__(84);
7780var arrayMethodUsesToLength = __webpack_require__(27);
7781
7782var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
7783
7784// `Array.prototype.includes` method
7785// https://tc39.github.io/ecma262/#sec-array.prototype.includes
7786$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {
7787 includes: function includes(el /* , fromIndex = 0 */) {
7788 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
7789 }
7790});
7791
7792// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
7793addToUnscopables('includes');
7794
7795
7796/***/ }),
7797/* 189 */
7798/***/ (function(module, exports, __webpack_require__) {
7799
7800__webpack_require__(190);
7801var entryVirtual = __webpack_require__(18);
7802
7803module.exports = entryVirtual('String').includes;
7804
7805
7806/***/ }),
7807/* 190 */
7808/***/ (function(module, exports, __webpack_require__) {
7809
7810"use strict";
7811
7812var $ = __webpack_require__(4);
7813var notARegExp = __webpack_require__(191);
7814var requireObjectCoercible = __webpack_require__(45);
7815var correctIsRegExpLogic = __webpack_require__(193);
7816
7817// `String.prototype.includes` method
7818// https://tc39.github.io/ecma262/#sec-string.prototype.includes
7819$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
7820 includes: function includes(searchString /* , position = 0 */) {
7821 return !!~String(requireObjectCoercible(this))
7822 .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined);
7823 }
7824});
7825
7826
7827/***/ }),
7828/* 191 */
7829/***/ (function(module, exports, __webpack_require__) {
7830
7831var isRegExp = __webpack_require__(192);
7832
7833module.exports = function (it) {
7834 if (isRegExp(it)) {
7835 throw TypeError("The method doesn't accept regular expressions");
7836 } return it;
7837};
7838
7839
7840/***/ }),
7841/* 192 */
7842/***/ (function(module, exports, __webpack_require__) {
7843
7844var isObject = __webpack_require__(13);
7845var classof = __webpack_require__(44);
7846var wellKnownSymbol = __webpack_require__(9);
7847
7848var MATCH = wellKnownSymbol('match');
7849
7850// `IsRegExp` abstract operation
7851// https://tc39.github.io/ecma262/#sec-isregexp
7852module.exports = function (it) {
7853 var isRegExp;
7854 return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
7855};
7856
7857
7858/***/ }),
7859/* 193 */
7860/***/ (function(module, exports, __webpack_require__) {
7861
7862var wellKnownSymbol = __webpack_require__(9);
7863
7864var MATCH = wellKnownSymbol('match');
7865
7866module.exports = function (METHOD_NAME) {
7867 var regexp = /./;
7868 try {
7869 '/./'[METHOD_NAME](regexp);
7870 } catch (error1) {
7871 try {
7872 regexp[MATCH] = false;
7873 return '/./'[METHOD_NAME](regexp);
7874 } catch (error2) { /* empty */ }
7875 } return false;
7876};
7877
7878
7879/***/ }),
7880/* 194 */
7881/***/ (function(module, exports, __webpack_require__) {
7882
7883var parent = __webpack_require__(195);
7884
7885module.exports = parent;
7886
7887
7888/***/ }),
7889/* 195 */
7890/***/ (function(module, exports, __webpack_require__) {
7891
7892var filter = __webpack_require__(196);
7893
7894var ArrayPrototype = Array.prototype;
7895
7896module.exports = function (it) {
7897 var own = it.filter;
7898 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;
7899};
7900
7901
7902/***/ }),
7903/* 196 */
7904/***/ (function(module, exports, __webpack_require__) {
7905
7906__webpack_require__(197);
7907var entryVirtual = __webpack_require__(18);
7908
7909module.exports = entryVirtual('Array').filter;
7910
7911
7912/***/ }),
7913/* 197 */
7914/***/ (function(module, exports, __webpack_require__) {
7915
7916"use strict";
7917
7918var $ = __webpack_require__(4);
7919var $filter = __webpack_require__(42).filter;
7920var arrayMethodHasSpeciesSupport = __webpack_require__(52);
7921var arrayMethodUsesToLength = __webpack_require__(27);
7922
7923var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
7924// Edge 14- issue
7925var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
7926
7927// `Array.prototype.filter` method
7928// https://tc39.github.io/ecma262/#sec-array.prototype.filter
7929// with adding support of @@species
7930$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
7931 filter: function filter(callbackfn /* , thisArg */) {
7932 return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
7933 }
7934});
7935
7936
7937/***/ }),
7938/* 198 */
7939/***/ (function(module, exports, __webpack_require__) {
7940
7941var parent = __webpack_require__(199);
7942
7943module.exports = parent;
7944
7945
7946/***/ }),
7947/* 199 */
7948/***/ (function(module, exports, __webpack_require__) {
7949
7950var splice = __webpack_require__(200);
7951
7952var ArrayPrototype = Array.prototype;
7953
7954module.exports = function (it) {
7955 var own = it.splice;
7956 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.splice) ? splice : own;
7957};
7958
7959
7960/***/ }),
7961/* 200 */
7962/***/ (function(module, exports, __webpack_require__) {
7963
7964__webpack_require__(201);
7965var entryVirtual = __webpack_require__(18);
7966
7967module.exports = entryVirtual('Array').splice;
7968
7969
7970/***/ }),
7971/* 201 */
7972/***/ (function(module, exports, __webpack_require__) {
7973
7974"use strict";
7975
7976var $ = __webpack_require__(4);
7977var toAbsoluteIndex = __webpack_require__(70);
7978var toInteger = __webpack_require__(58);
7979var toLength = __webpack_require__(35);
7980var toObject = __webpack_require__(37);
7981var arraySpeciesCreate = __webpack_require__(85);
7982var createProperty = __webpack_require__(89);
7983var arrayMethodHasSpeciesSupport = __webpack_require__(52);
7984var arrayMethodUsesToLength = __webpack_require__(27);
7985
7986var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
7987var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });
7988
7989var max = Math.max;
7990var min = Math.min;
7991var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
7992var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
7993
7994// `Array.prototype.splice` method
7995// https://tc39.github.io/ecma262/#sec-array.prototype.splice
7996// with adding support of @@species
7997$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
7998 splice: function splice(start, deleteCount /* , ...items */) {
7999 var O = toObject(this);
8000 var len = toLength(O.length);
8001 var actualStart = toAbsoluteIndex(start, len);
8002 var argumentsLength = arguments.length;
8003 var insertCount, actualDeleteCount, A, k, from, to;
8004 if (argumentsLength === 0) {
8005 insertCount = actualDeleteCount = 0;
8006 } else if (argumentsLength === 1) {
8007 insertCount = 0;
8008 actualDeleteCount = len - actualStart;
8009 } else {
8010 insertCount = argumentsLength - 2;
8011 actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);
8012 }
8013 if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
8014 throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
8015 }
8016 A = arraySpeciesCreate(O, actualDeleteCount);
8017 for (k = 0; k < actualDeleteCount; k++) {
8018 from = actualStart + k;
8019 if (from in O) createProperty(A, k, O[from]);
8020 }
8021 A.length = actualDeleteCount;
8022 if (insertCount < actualDeleteCount) {
8023 for (k = actualStart; k < len - actualDeleteCount; k++) {
8024 from = k + actualDeleteCount;
8025 to = k + insertCount;
8026 if (from in O) O[to] = O[from];
8027 else delete O[to];
8028 }
8029 for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
8030 } else if (insertCount > actualDeleteCount) {
8031 for (k = len - actualDeleteCount; k > actualStart; k--) {
8032 from = k + actualDeleteCount - 1;
8033 to = k + insertCount - 1;
8034 if (from in O) O[to] = O[from];
8035 else delete O[to];
8036 }
8037 }
8038 for (k = 0; k < insertCount; k++) {
8039 O[k + actualStart] = arguments[k + 2];
8040 }
8041 O.length = len - actualDeleteCount + insertCount;
8042 return A;
8043 }
8044});
8045
8046
8047/***/ }),
8048/* 202 */
8049/***/ (function(module, exports, __webpack_require__) {
8050
8051var parent = __webpack_require__(203);
8052
8053module.exports = parent;
8054
8055
8056/***/ }),
8057/* 203 */
8058/***/ (function(module, exports, __webpack_require__) {
8059
8060var indexOf = __webpack_require__(204);
8061
8062var ArrayPrototype = Array.prototype;
8063
8064module.exports = function (it) {
8065 var own = it.indexOf;
8066 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.indexOf) ? indexOf : own;
8067};
8068
8069
8070/***/ }),
8071/* 204 */
8072/***/ (function(module, exports, __webpack_require__) {
8073
8074__webpack_require__(205);
8075var entryVirtual = __webpack_require__(18);
8076
8077module.exports = entryVirtual('Array').indexOf;
8078
8079
8080/***/ }),
8081/* 205 */
8082/***/ (function(module, exports, __webpack_require__) {
8083
8084"use strict";
8085
8086var $ = __webpack_require__(4);
8087var $indexOf = __webpack_require__(69).indexOf;
8088var arrayMethodIsStrict = __webpack_require__(110);
8089var arrayMethodUsesToLength = __webpack_require__(27);
8090
8091var nativeIndexOf = [].indexOf;
8092
8093var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
8094var STRICT_METHOD = arrayMethodIsStrict('indexOf');
8095var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
8096
8097// `Array.prototype.indexOf` method
8098// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
8099$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {
8100 indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
8101 return NEGATIVE_ZERO
8102 // convert -0 to +0
8103 ? nativeIndexOf.apply(this, arguments) || 0
8104 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);
8105 }
8106});
8107
8108
8109/***/ }),
8110/* 206 */
8111/***/ (function(module, exports, __webpack_require__) {
8112
8113var parent = __webpack_require__(207);
8114
8115module.exports = parent;
8116
8117
8118/***/ }),
8119/* 207 */
8120/***/ (function(module, exports, __webpack_require__) {
8121
8122__webpack_require__(208);
8123__webpack_require__(62);
8124__webpack_require__(64);
8125__webpack_require__(50);
8126var path = __webpack_require__(10);
8127
8128module.exports = path.Map;
8129
8130
8131/***/ }),
8132/* 208 */
8133/***/ (function(module, exports, __webpack_require__) {
8134
8135"use strict";
8136
8137var collection = __webpack_require__(113);
8138var collectionStrong = __webpack_require__(115);
8139
8140// `Map` constructor
8141// https://tc39.github.io/ecma262/#sec-map-objects
8142module.exports = collection('Map', function (init) {
8143 return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
8144}, collectionStrong);
8145
8146
8147/***/ }),
8148/* 209 */
8149/***/ (function(module, exports, __webpack_require__) {
8150
8151var fails = __webpack_require__(12);
8152
8153module.exports = !fails(function () {
8154 return Object.isExtensible(Object.preventExtensions({}));
8155});
8156
8157
8158/***/ }),
8159/* 210 */
8160/***/ (function(module, exports, __webpack_require__) {
8161
8162var parent = __webpack_require__(211);
8163
8164module.exports = parent;
8165
8166
8167/***/ }),
8168/* 211 */
8169/***/ (function(module, exports, __webpack_require__) {
8170
8171var trim = __webpack_require__(212);
8172
8173var StringPrototype = String.prototype;
8174
8175module.exports = function (it) {
8176 var own = it.trim;
8177 return typeof it === 'string' || it === StringPrototype
8178 || (it instanceof String && own === StringPrototype.trim) ? trim : own;
8179};
8180
8181
8182/***/ }),
8183/* 212 */
8184/***/ (function(module, exports, __webpack_require__) {
8185
8186__webpack_require__(213);
8187var entryVirtual = __webpack_require__(18);
8188
8189module.exports = entryVirtual('String').trim;
8190
8191
8192/***/ }),
8193/* 213 */
8194/***/ (function(module, exports, __webpack_require__) {
8195
8196"use strict";
8197
8198var $ = __webpack_require__(4);
8199var $trim = __webpack_require__(90).trim;
8200var forcedStringTrimMethod = __webpack_require__(214);
8201
8202// `String.prototype.trim` method
8203// https://tc39.github.io/ecma262/#sec-string.prototype.trim
8204$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
8205 trim: function trim() {
8206 return $trim(this);
8207 }
8208});
8209
8210
8211/***/ }),
8212/* 214 */
8213/***/ (function(module, exports, __webpack_require__) {
8214
8215var fails = __webpack_require__(12);
8216var whitespaces = __webpack_require__(65);
8217
8218var non = '\u200B\u0085\u180E';
8219
8220// check that a method works with the correct list
8221// of whitespaces and has a correct name
8222module.exports = function (METHOD_NAME) {
8223 return fails(function () {
8224 return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
8225 });
8226};
8227
8228
8229/***/ }),
8230/* 215 */
8231/***/ (function(module, exports, __webpack_require__) {
8232
8233var parent = __webpack_require__(216);
8234
8235module.exports = parent;
8236
8237
8238/***/ }),
8239/* 216 */
8240/***/ (function(module, exports, __webpack_require__) {
8241
8242var map = __webpack_require__(217);
8243
8244var ArrayPrototype = Array.prototype;
8245
8246module.exports = function (it) {
8247 var own = it.map;
8248 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;
8249};
8250
8251
8252/***/ }),
8253/* 217 */
8254/***/ (function(module, exports, __webpack_require__) {
8255
8256__webpack_require__(218);
8257var entryVirtual = __webpack_require__(18);
8258
8259module.exports = entryVirtual('Array').map;
8260
8261
8262/***/ }),
8263/* 218 */
8264/***/ (function(module, exports, __webpack_require__) {
8265
8266"use strict";
8267
8268var $ = __webpack_require__(4);
8269var $map = __webpack_require__(42).map;
8270var arrayMethodHasSpeciesSupport = __webpack_require__(52);
8271var arrayMethodUsesToLength = __webpack_require__(27);
8272
8273var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
8274// FF49- issue
8275var USES_TO_LENGTH = arrayMethodUsesToLength('map');
8276
8277// `Array.prototype.map` method
8278// https://tc39.github.io/ecma262/#sec-array.prototype.map
8279// with adding support of @@species
8280$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
8281 map: function map(callbackfn /* , thisArg */) {
8282 return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
8283 }
8284});
8285
8286
8287/***/ }),
8288/* 219 */
8289/***/ (function(module, exports, __webpack_require__) {
8290
8291var parent = __webpack_require__(220);
8292
8293module.exports = parent;
8294
8295
8296/***/ }),
8297/* 220 */
8298/***/ (function(module, exports, __webpack_require__) {
8299
8300__webpack_require__(221);
8301var path = __webpack_require__(10);
8302
8303module.exports = path.Array.isArray;
8304
8305
8306/***/ }),
8307/* 221 */
8308/***/ (function(module, exports, __webpack_require__) {
8309
8310var $ = __webpack_require__(4);
8311var isArray = __webpack_require__(51);
8312
8313// `Array.isArray` method
8314// https://tc39.github.io/ecma262/#sec-array.isarray
8315$({ target: 'Array', stat: true }, {
8316 isArray: isArray
8317});
8318
8319
8320/***/ }),
8321/* 222 */
8322/***/ (function(module, exports, __webpack_require__) {
8323
8324module.exports = __webpack_require__(223);
8325
8326/***/ }),
8327/* 223 */
8328/***/ (function(module, exports, __webpack_require__) {
8329
8330var parent = __webpack_require__(224);
8331
8332module.exports = parent;
8333
8334
8335/***/ }),
8336/* 224 */
8337/***/ (function(module, exports, __webpack_require__) {
8338
8339__webpack_require__(117);
8340__webpack_require__(64);
8341__webpack_require__(50);
8342var WrappedWellKnownSymbolModule = __webpack_require__(92);
8343
8344module.exports = WrappedWellKnownSymbolModule.f('iterator');
8345
8346
8347/***/ }),
8348/* 225 */
8349/***/ (function(module, exports, __webpack_require__) {
8350
8351module.exports = __webpack_require__(226);
8352
8353/***/ }),
8354/* 226 */
8355/***/ (function(module, exports, __webpack_require__) {
8356
8357var parent = __webpack_require__(227);
8358__webpack_require__(247);
8359__webpack_require__(248);
8360__webpack_require__(249);
8361__webpack_require__(250);
8362// TODO: Remove from `core-js@4`
8363__webpack_require__(251);
8364
8365module.exports = parent;
8366
8367
8368/***/ }),
8369/* 227 */
8370/***/ (function(module, exports, __webpack_require__) {
8371
8372__webpack_require__(228);
8373__webpack_require__(62);
8374__webpack_require__(229);
8375__webpack_require__(231);
8376__webpack_require__(232);
8377__webpack_require__(233);
8378__webpack_require__(234);
8379__webpack_require__(117);
8380__webpack_require__(235);
8381__webpack_require__(236);
8382__webpack_require__(237);
8383__webpack_require__(238);
8384__webpack_require__(239);
8385__webpack_require__(240);
8386__webpack_require__(241);
8387__webpack_require__(242);
8388__webpack_require__(243);
8389__webpack_require__(244);
8390__webpack_require__(245);
8391__webpack_require__(246);
8392var path = __webpack_require__(10);
8393
8394module.exports = path.Symbol;
8395
8396
8397/***/ }),
8398/* 228 */
8399/***/ (function(module, exports, __webpack_require__) {
8400
8401"use strict";
8402
8403var $ = __webpack_require__(4);
8404var fails = __webpack_require__(12);
8405var isArray = __webpack_require__(51);
8406var isObject = __webpack_require__(13);
8407var toObject = __webpack_require__(37);
8408var toLength = __webpack_require__(35);
8409var createProperty = __webpack_require__(89);
8410var arraySpeciesCreate = __webpack_require__(85);
8411var arrayMethodHasSpeciesSupport = __webpack_require__(52);
8412var wellKnownSymbol = __webpack_require__(9);
8413var V8_VERSION = __webpack_require__(82);
8414
8415var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
8416var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
8417var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
8418
8419// We can't use this feature detection in V8 since it causes
8420// deoptimization and serious performance degradation
8421// https://github.com/zloirock/core-js/issues/679
8422var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
8423 var array = [];
8424 array[IS_CONCAT_SPREADABLE] = false;
8425 return array.concat()[0] !== array;
8426});
8427
8428var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
8429
8430var isConcatSpreadable = function (O) {
8431 if (!isObject(O)) return false;
8432 var spreadable = O[IS_CONCAT_SPREADABLE];
8433 return spreadable !== undefined ? !!spreadable : isArray(O);
8434};
8435
8436var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
8437
8438// `Array.prototype.concat` method
8439// https://tc39.github.io/ecma262/#sec-array.prototype.concat
8440// with adding support of @@isConcatSpreadable and @@species
8441$({ target: 'Array', proto: true, forced: FORCED }, {
8442 concat: function concat(arg) { // eslint-disable-line no-unused-vars
8443 var O = toObject(this);
8444 var A = arraySpeciesCreate(O, 0);
8445 var n = 0;
8446 var i, k, length, len, E;
8447 for (i = -1, length = arguments.length; i < length; i++) {
8448 E = i === -1 ? O : arguments[i];
8449 if (isConcatSpreadable(E)) {
8450 len = toLength(E.length);
8451 if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
8452 for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
8453 } else {
8454 if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
8455 createProperty(A, n++, E);
8456 }
8457 }
8458 A.length = n;
8459 return A;
8460 }
8461});
8462
8463
8464/***/ }),
8465/* 229 */
8466/***/ (function(module, exports, __webpack_require__) {
8467
8468"use strict";
8469
8470var $ = __webpack_require__(4);
8471var global = __webpack_require__(8);
8472var getBuiltIn = __webpack_require__(26);
8473var IS_PURE = __webpack_require__(36);
8474var DESCRIPTORS = __webpack_require__(14);
8475var NATIVE_SYMBOL = __webpack_require__(76);
8476var USE_SYMBOL_AS_UID = __webpack_require__(100);
8477var fails = __webpack_require__(12);
8478var has = __webpack_require__(15);
8479var isArray = __webpack_require__(51);
8480var isObject = __webpack_require__(13);
8481var anObject = __webpack_require__(23);
8482var toObject = __webpack_require__(37);
8483var toIndexedObject = __webpack_require__(25);
8484var toPrimitive = __webpack_require__(56);
8485var createPropertyDescriptor = __webpack_require__(34);
8486var nativeObjectCreate = __webpack_require__(47);
8487var objectKeys = __webpack_require__(57);
8488var getOwnPropertyNamesModule = __webpack_require__(118);
8489var getOwnPropertyNamesExternal = __webpack_require__(230);
8490var getOwnPropertySymbolsModule = __webpack_require__(119);
8491var getOwnPropertyDescriptorModule = __webpack_require__(66);
8492var definePropertyModule = __webpack_require__(17);
8493var propertyIsEnumerableModule = __webpack_require__(55);
8494var createNonEnumerableProperty = __webpack_require__(16);
8495var redefine = __webpack_require__(49);
8496var shared = __webpack_require__(72);
8497var sharedKey = __webpack_require__(59);
8498var hiddenKeys = __webpack_require__(48);
8499var uid = __webpack_require__(60);
8500var wellKnownSymbol = __webpack_require__(9);
8501var wrappedWellKnownSymbolModule = __webpack_require__(92);
8502var defineWellKnownSymbol = __webpack_require__(11);
8503var setToStringTag = __webpack_require__(40);
8504var InternalStateModule = __webpack_require__(41);
8505var $forEach = __webpack_require__(42).forEach;
8506
8507var HIDDEN = sharedKey('hidden');
8508var SYMBOL = 'Symbol';
8509var PROTOTYPE = 'prototype';
8510var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
8511var setInternalState = InternalStateModule.set;
8512var getInternalState = InternalStateModule.getterFor(SYMBOL);
8513var ObjectPrototype = Object[PROTOTYPE];
8514var $Symbol = global.Symbol;
8515var $stringify = getBuiltIn('JSON', 'stringify');
8516var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
8517var nativeDefineProperty = definePropertyModule.f;
8518var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;
8519var nativePropertyIsEnumerable = propertyIsEnumerableModule.f;
8520var AllSymbols = shared('symbols');
8521var ObjectPrototypeSymbols = shared('op-symbols');
8522var StringToSymbolRegistry = shared('string-to-symbol-registry');
8523var SymbolToStringRegistry = shared('symbol-to-string-registry');
8524var WellKnownSymbolsStore = shared('wks');
8525var QObject = global.QObject;
8526// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
8527var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;
8528
8529// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
8530var setSymbolDescriptor = DESCRIPTORS && fails(function () {
8531 return nativeObjectCreate(nativeDefineProperty({}, 'a', {
8532 get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }
8533 })).a != 7;
8534}) ? function (O, P, Attributes) {
8535 var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);
8536 if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];
8537 nativeDefineProperty(O, P, Attributes);
8538 if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
8539 nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
8540 }
8541} : nativeDefineProperty;
8542
8543var wrap = function (tag, description) {
8544 var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);
8545 setInternalState(symbol, {
8546 type: SYMBOL,
8547 tag: tag,
8548 description: description
8549 });
8550 if (!DESCRIPTORS) symbol.description = description;
8551 return symbol;
8552};
8553
8554var isSymbol = USE_SYMBOL_AS_UID ? function (it) {
8555 return typeof it == 'symbol';
8556} : function (it) {
8557 return Object(it) instanceof $Symbol;
8558};
8559
8560var $defineProperty = function defineProperty(O, P, Attributes) {
8561 if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);
8562 anObject(O);
8563 var key = toPrimitive(P, true);
8564 anObject(Attributes);
8565 if (has(AllSymbols, key)) {
8566 if (!Attributes.enumerable) {
8567 if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));
8568 O[HIDDEN][key] = true;
8569 } else {
8570 if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;
8571 Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });
8572 } return setSymbolDescriptor(O, key, Attributes);
8573 } return nativeDefineProperty(O, key, Attributes);
8574};
8575
8576var $defineProperties = function defineProperties(O, Properties) {
8577 anObject(O);
8578 var properties = toIndexedObject(Properties);
8579 var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));
8580 $forEach(keys, function (key) {
8581 if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);
8582 });
8583 return O;
8584};
8585
8586var $create = function create(O, Properties) {
8587 return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);
8588};
8589
8590var $propertyIsEnumerable = function propertyIsEnumerable(V) {
8591 var P = toPrimitive(V, true);
8592 var enumerable = nativePropertyIsEnumerable.call(this, P);
8593 if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;
8594 return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;
8595};
8596
8597var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {
8598 var it = toIndexedObject(O);
8599 var key = toPrimitive(P, true);
8600 if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;
8601 var descriptor = nativeGetOwnPropertyDescriptor(it, key);
8602 if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {
8603 descriptor.enumerable = true;
8604 }
8605 return descriptor;
8606};
8607
8608var $getOwnPropertyNames = function getOwnPropertyNames(O) {
8609 var names = nativeGetOwnPropertyNames(toIndexedObject(O));
8610 var result = [];
8611 $forEach(names, function (key) {
8612 if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);
8613 });
8614 return result;
8615};
8616
8617var $getOwnPropertySymbols = function getOwnPropertySymbols(O) {
8618 var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;
8619 var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));
8620 var result = [];
8621 $forEach(names, function (key) {
8622 if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {
8623 result.push(AllSymbols[key]);
8624 }
8625 });
8626 return result;
8627};
8628
8629// `Symbol` constructor
8630// https://tc39.github.io/ecma262/#sec-symbol-constructor
8631if (!NATIVE_SYMBOL) {
8632 $Symbol = function Symbol() {
8633 if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');
8634 var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]);
8635 var tag = uid(description);
8636 var setter = function (value) {
8637 if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);
8638 if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
8639 setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));
8640 };
8641 if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });
8642 return wrap(tag, description);
8643 };
8644
8645 redefine($Symbol[PROTOTYPE], 'toString', function toString() {
8646 return getInternalState(this).tag;
8647 });
8648
8649 redefine($Symbol, 'withoutSetter', function (description) {
8650 return wrap(uid(description), description);
8651 });
8652
8653 propertyIsEnumerableModule.f = $propertyIsEnumerable;
8654 definePropertyModule.f = $defineProperty;
8655 getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
8656 getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
8657 getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;
8658
8659 wrappedWellKnownSymbolModule.f = function (name) {
8660 return wrap(wellKnownSymbol(name), name);
8661 };
8662
8663 if (DESCRIPTORS) {
8664 // https://github.com/tc39/proposal-Symbol-description
8665 nativeDefineProperty($Symbol[PROTOTYPE], 'description', {
8666 configurable: true,
8667 get: function description() {
8668 return getInternalState(this).description;
8669 }
8670 });
8671 if (!IS_PURE) {
8672 redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
8673 }
8674 }
8675}
8676
8677$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
8678 Symbol: $Symbol
8679});
8680
8681$forEach(objectKeys(WellKnownSymbolsStore), function (name) {
8682 defineWellKnownSymbol(name);
8683});
8684
8685$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {
8686 // `Symbol.for` method
8687 // https://tc39.github.io/ecma262/#sec-symbol.for
8688 'for': function (key) {
8689 var string = String(key);
8690 if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];
8691 var symbol = $Symbol(string);
8692 StringToSymbolRegistry[string] = symbol;
8693 SymbolToStringRegistry[symbol] = string;
8694 return symbol;
8695 },
8696 // `Symbol.keyFor` method
8697 // https://tc39.github.io/ecma262/#sec-symbol.keyfor
8698 keyFor: function keyFor(sym) {
8699 if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');
8700 if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];
8701 },
8702 useSetter: function () { USE_SETTER = true; },
8703 useSimple: function () { USE_SETTER = false; }
8704});
8705
8706$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {
8707 // `Object.create` method
8708 // https://tc39.github.io/ecma262/#sec-object.create
8709 create: $create,
8710 // `Object.defineProperty` method
8711 // https://tc39.github.io/ecma262/#sec-object.defineproperty
8712 defineProperty: $defineProperty,
8713 // `Object.defineProperties` method
8714 // https://tc39.github.io/ecma262/#sec-object.defineproperties
8715 defineProperties: $defineProperties,
8716 // `Object.getOwnPropertyDescriptor` method
8717 // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors
8718 getOwnPropertyDescriptor: $getOwnPropertyDescriptor
8719});
8720
8721$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {
8722 // `Object.getOwnPropertyNames` method
8723 // https://tc39.github.io/ecma262/#sec-object.getownpropertynames
8724 getOwnPropertyNames: $getOwnPropertyNames,
8725 // `Object.getOwnPropertySymbols` method
8726 // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols
8727 getOwnPropertySymbols: $getOwnPropertySymbols
8728});
8729
8730// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
8731// https://bugs.chromium.org/p/v8/issues/detail?id=3443
8732$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {
8733 getOwnPropertySymbols: function getOwnPropertySymbols(it) {
8734 return getOwnPropertySymbolsModule.f(toObject(it));
8735 }
8736});
8737
8738// `JSON.stringify` method behavior with symbols
8739// https://tc39.github.io/ecma262/#sec-json.stringify
8740if ($stringify) {
8741 var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {
8742 var symbol = $Symbol();
8743 // MS Edge converts symbol values to JSON as {}
8744 return $stringify([symbol]) != '[null]'
8745 // WebKit converts symbol values to JSON as null
8746 || $stringify({ a: symbol }) != '{}'
8747 // V8 throws on boxed symbols
8748 || $stringify(Object(symbol)) != '{}';
8749 });
8750
8751 $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {
8752 // eslint-disable-next-line no-unused-vars
8753 stringify: function stringify(it, replacer, space) {
8754 var args = [it];
8755 var index = 1;
8756 var $replacer;
8757 while (arguments.length > index) args.push(arguments[index++]);
8758 $replacer = replacer;
8759 if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
8760 if (!isArray(replacer)) replacer = function (key, value) {
8761 if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
8762 if (!isSymbol(value)) return value;
8763 };
8764 args[1] = replacer;
8765 return $stringify.apply(null, args);
8766 }
8767 });
8768}
8769
8770// `Symbol.prototype[@@toPrimitive]` method
8771// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive
8772if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {
8773 createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
8774}
8775// `Symbol.prototype[@@toStringTag]` property
8776// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag
8777setToStringTag($Symbol, SYMBOL);
8778
8779hiddenKeys[HIDDEN] = true;
8780
8781
8782/***/ }),
8783/* 230 */
8784/***/ (function(module, exports, __webpack_require__) {
8785
8786var toIndexedObject = __webpack_require__(25);
8787var nativeGetOwnPropertyNames = __webpack_require__(118).f;
8788
8789var toString = {}.toString;
8790
8791var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
8792 ? Object.getOwnPropertyNames(window) : [];
8793
8794var getWindowNames = function (it) {
8795 try {
8796 return nativeGetOwnPropertyNames(it);
8797 } catch (error) {
8798 return windowNames.slice();
8799 }
8800};
8801
8802// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
8803module.exports.f = function getOwnPropertyNames(it) {
8804 return windowNames && toString.call(it) == '[object Window]'
8805 ? getWindowNames(it)
8806 : nativeGetOwnPropertyNames(toIndexedObject(it));
8807};
8808
8809
8810/***/ }),
8811/* 231 */
8812/***/ (function(module, exports, __webpack_require__) {
8813
8814var defineWellKnownSymbol = __webpack_require__(11);
8815
8816// `Symbol.asyncIterator` well-known symbol
8817// https://tc39.github.io/ecma262/#sec-symbol.asynciterator
8818defineWellKnownSymbol('asyncIterator');
8819
8820
8821/***/ }),
8822/* 232 */
8823/***/ (function(module, exports) {
8824
8825// empty
8826
8827
8828/***/ }),
8829/* 233 */
8830/***/ (function(module, exports, __webpack_require__) {
8831
8832var defineWellKnownSymbol = __webpack_require__(11);
8833
8834// `Symbol.hasInstance` well-known symbol
8835// https://tc39.github.io/ecma262/#sec-symbol.hasinstance
8836defineWellKnownSymbol('hasInstance');
8837
8838
8839/***/ }),
8840/* 234 */
8841/***/ (function(module, exports, __webpack_require__) {
8842
8843var defineWellKnownSymbol = __webpack_require__(11);
8844
8845// `Symbol.isConcatSpreadable` well-known symbol
8846// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable
8847defineWellKnownSymbol('isConcatSpreadable');
8848
8849
8850/***/ }),
8851/* 235 */
8852/***/ (function(module, exports, __webpack_require__) {
8853
8854var defineWellKnownSymbol = __webpack_require__(11);
8855
8856// `Symbol.match` well-known symbol
8857// https://tc39.github.io/ecma262/#sec-symbol.match
8858defineWellKnownSymbol('match');
8859
8860
8861/***/ }),
8862/* 236 */
8863/***/ (function(module, exports, __webpack_require__) {
8864
8865var defineWellKnownSymbol = __webpack_require__(11);
8866
8867// `Symbol.matchAll` well-known symbol
8868defineWellKnownSymbol('matchAll');
8869
8870
8871/***/ }),
8872/* 237 */
8873/***/ (function(module, exports, __webpack_require__) {
8874
8875var defineWellKnownSymbol = __webpack_require__(11);
8876
8877// `Symbol.replace` well-known symbol
8878// https://tc39.github.io/ecma262/#sec-symbol.replace
8879defineWellKnownSymbol('replace');
8880
8881
8882/***/ }),
8883/* 238 */
8884/***/ (function(module, exports, __webpack_require__) {
8885
8886var defineWellKnownSymbol = __webpack_require__(11);
8887
8888// `Symbol.search` well-known symbol
8889// https://tc39.github.io/ecma262/#sec-symbol.search
8890defineWellKnownSymbol('search');
8891
8892
8893/***/ }),
8894/* 239 */
8895/***/ (function(module, exports, __webpack_require__) {
8896
8897var defineWellKnownSymbol = __webpack_require__(11);
8898
8899// `Symbol.species` well-known symbol
8900// https://tc39.github.io/ecma262/#sec-symbol.species
8901defineWellKnownSymbol('species');
8902
8903
8904/***/ }),
8905/* 240 */
8906/***/ (function(module, exports, __webpack_require__) {
8907
8908var defineWellKnownSymbol = __webpack_require__(11);
8909
8910// `Symbol.split` well-known symbol
8911// https://tc39.github.io/ecma262/#sec-symbol.split
8912defineWellKnownSymbol('split');
8913
8914
8915/***/ }),
8916/* 241 */
8917/***/ (function(module, exports, __webpack_require__) {
8918
8919var defineWellKnownSymbol = __webpack_require__(11);
8920
8921// `Symbol.toPrimitive` well-known symbol
8922// https://tc39.github.io/ecma262/#sec-symbol.toprimitive
8923defineWellKnownSymbol('toPrimitive');
8924
8925
8926/***/ }),
8927/* 242 */
8928/***/ (function(module, exports, __webpack_require__) {
8929
8930var defineWellKnownSymbol = __webpack_require__(11);
8931
8932// `Symbol.toStringTag` well-known symbol
8933// https://tc39.github.io/ecma262/#sec-symbol.tostringtag
8934defineWellKnownSymbol('toStringTag');
8935
8936
8937/***/ }),
8938/* 243 */
8939/***/ (function(module, exports, __webpack_require__) {
8940
8941var defineWellKnownSymbol = __webpack_require__(11);
8942
8943// `Symbol.unscopables` well-known symbol
8944// https://tc39.github.io/ecma262/#sec-symbol.unscopables
8945defineWellKnownSymbol('unscopables');
8946
8947
8948/***/ }),
8949/* 244 */
8950/***/ (function(module, exports, __webpack_require__) {
8951
8952var global = __webpack_require__(8);
8953var setToStringTag = __webpack_require__(40);
8954
8955// JSON[@@toStringTag] property
8956// https://tc39.github.io/ecma262/#sec-json-@@tostringtag
8957setToStringTag(global.JSON, 'JSON', true);
8958
8959
8960/***/ }),
8961/* 245 */
8962/***/ (function(module, exports) {
8963
8964// empty
8965
8966
8967/***/ }),
8968/* 246 */
8969/***/ (function(module, exports) {
8970
8971// empty
8972
8973
8974/***/ }),
8975/* 247 */
8976/***/ (function(module, exports, __webpack_require__) {
8977
8978var defineWellKnownSymbol = __webpack_require__(11);
8979
8980// `Symbol.asyncDispose` well-known symbol
8981// https://github.com/tc39/proposal-using-statement
8982defineWellKnownSymbol('asyncDispose');
8983
8984
8985/***/ }),
8986/* 248 */
8987/***/ (function(module, exports, __webpack_require__) {
8988
8989var defineWellKnownSymbol = __webpack_require__(11);
8990
8991// `Symbol.dispose` well-known symbol
8992// https://github.com/tc39/proposal-using-statement
8993defineWellKnownSymbol('dispose');
8994
8995
8996/***/ }),
8997/* 249 */
8998/***/ (function(module, exports, __webpack_require__) {
8999
9000var defineWellKnownSymbol = __webpack_require__(11);
9001
9002// `Symbol.observable` well-known symbol
9003// https://github.com/tc39/proposal-observable
9004defineWellKnownSymbol('observable');
9005
9006
9007/***/ }),
9008/* 250 */
9009/***/ (function(module, exports, __webpack_require__) {
9010
9011var defineWellKnownSymbol = __webpack_require__(11);
9012
9013// `Symbol.patternMatch` well-known symbol
9014// https://github.com/tc39/proposal-pattern-matching
9015defineWellKnownSymbol('patternMatch');
9016
9017
9018/***/ }),
9019/* 251 */
9020/***/ (function(module, exports, __webpack_require__) {
9021
9022// TODO: remove from `core-js@4`
9023var defineWellKnownSymbol = __webpack_require__(11);
9024
9025defineWellKnownSymbol('replaceAll');
9026
9027
9028/***/ }),
9029/* 252 */
9030/***/ (function(module, exports, __webpack_require__) {
9031
9032__webpack_require__(253);
9033var path = __webpack_require__(10);
9034
9035module.exports = path.setTimeout;
9036
9037
9038/***/ }),
9039/* 253 */
9040/***/ (function(module, exports, __webpack_require__) {
9041
9042var $ = __webpack_require__(4);
9043var global = __webpack_require__(8);
9044var userAgent = __webpack_require__(79);
9045
9046var slice = [].slice;
9047var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
9048
9049var wrap = function (scheduler) {
9050 return function (handler, timeout /* , ...arguments */) {
9051 var boundArgs = arguments.length > 2;
9052 var args = boundArgs ? slice.call(arguments, 2) : undefined;
9053 return scheduler(boundArgs ? function () {
9054 // eslint-disable-next-line no-new-func
9055 (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);
9056 } : handler, timeout);
9057 };
9058};
9059
9060// ie9- setTimeout & setInterval additional parameters fix
9061// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
9062$({ global: true, bind: true, forced: MSIE }, {
9063 // `setTimeout` method
9064 // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
9065 setTimeout: wrap(global.setTimeout),
9066 // `setInterval` method
9067 // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
9068 setInterval: wrap(global.setInterval)
9069});
9070
9071
9072/***/ }),
9073/* 254 */
9074/***/ (function(module, exports, __webpack_require__) {
9075
9076var parent = __webpack_require__(255);
9077
9078module.exports = parent;
9079
9080
9081/***/ }),
9082/* 255 */
9083/***/ (function(module, exports, __webpack_require__) {
9084
9085var slice = __webpack_require__(256);
9086
9087var ArrayPrototype = Array.prototype;
9088
9089module.exports = function (it) {
9090 var own = it.slice;
9091 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own;
9092};
9093
9094
9095/***/ }),
9096/* 256 */
9097/***/ (function(module, exports, __webpack_require__) {
9098
9099__webpack_require__(257);
9100var entryVirtual = __webpack_require__(18);
9101
9102module.exports = entryVirtual('Array').slice;
9103
9104
9105/***/ }),
9106/* 257 */
9107/***/ (function(module, exports, __webpack_require__) {
9108
9109"use strict";
9110
9111var $ = __webpack_require__(4);
9112var isObject = __webpack_require__(13);
9113var isArray = __webpack_require__(51);
9114var toAbsoluteIndex = __webpack_require__(70);
9115var toLength = __webpack_require__(35);
9116var toIndexedObject = __webpack_require__(25);
9117var createProperty = __webpack_require__(89);
9118var wellKnownSymbol = __webpack_require__(9);
9119var arrayMethodHasSpeciesSupport = __webpack_require__(52);
9120var arrayMethodUsesToLength = __webpack_require__(27);
9121
9122var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
9123var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
9124
9125var SPECIES = wellKnownSymbol('species');
9126var nativeSlice = [].slice;
9127var max = Math.max;
9128
9129// `Array.prototype.slice` method
9130// https://tc39.github.io/ecma262/#sec-array.prototype.slice
9131// fallback for not array-like ES3 strings and DOM objects
9132$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
9133 slice: function slice(start, end) {
9134 var O = toIndexedObject(this);
9135 var length = toLength(O.length);
9136 var k = toAbsoluteIndex(start, length);
9137 var fin = toAbsoluteIndex(end === undefined ? length : end, length);
9138 // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
9139 var Constructor, result, n;
9140 if (isArray(O)) {
9141 Constructor = O.constructor;
9142 // cross-realm fallback
9143 if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
9144 Constructor = undefined;
9145 } else if (isObject(Constructor)) {
9146 Constructor = Constructor[SPECIES];
9147 if (Constructor === null) Constructor = undefined;
9148 }
9149 if (Constructor === Array || Constructor === undefined) {
9150 return nativeSlice.call(O, k, fin);
9151 }
9152 }
9153 result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
9154 for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
9155 result.length = n;
9156 return result;
9157 }
9158});
9159
9160
9161/***/ }),
9162/* 258 */
9163/***/ (function(module, exports, __webpack_require__) {
9164
9165module.exports = __webpack_require__(259);
9166
9167/***/ }),
9168/* 259 */
9169/***/ (function(module, exports, __webpack_require__) {
9170
9171var parent = __webpack_require__(260);
9172
9173module.exports = parent;
9174
9175
9176/***/ }),
9177/* 260 */
9178/***/ (function(module, exports, __webpack_require__) {
9179
9180__webpack_require__(261);
9181var path = __webpack_require__(10);
9182
9183module.exports = path.parseInt;
9184
9185
9186/***/ }),
9187/* 261 */
9188/***/ (function(module, exports, __webpack_require__) {
9189
9190var $ = __webpack_require__(4);
9191var parseIntImplementation = __webpack_require__(262);
9192
9193// `parseInt` method
9194// https://tc39.github.io/ecma262/#sec-parseint-string-radix
9195$({ global: true, forced: parseInt != parseIntImplementation }, {
9196 parseInt: parseIntImplementation
9197});
9198
9199
9200/***/ }),
9201/* 262 */
9202/***/ (function(module, exports, __webpack_require__) {
9203
9204var global = __webpack_require__(8);
9205var trim = __webpack_require__(90).trim;
9206var whitespaces = __webpack_require__(65);
9207
9208var $parseInt = global.parseInt;
9209var hex = /^[+-]?0[Xx]/;
9210var FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;
9211
9212// `parseInt` method
9213// https://tc39.github.io/ecma262/#sec-parseint-string-radix
9214module.exports = FORCED ? function parseInt(string, radix) {
9215 var S = trim(String(string));
9216 return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));
9217} : $parseInt;
9218
9219
9220/***/ }),
9221/* 263 */
9222/***/ (function(module, exports, __webpack_require__) {
9223
9224"use strict";
9225
9226/**
9227 * @description 编辑器配置
9228 * @author wangfupeng
9229 */
9230
9231var _interopRequireDefault = __webpack_require__(0);
9232
9233var _assign = _interopRequireDefault(__webpack_require__(264));
9234
9235var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9236
9237var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
9238 return mod && mod.__esModule ? mod : {
9239 "default": mod
9240 };
9241};
9242
9243(0, _defineProperty["default"])(exports, "__esModule", {
9244 value: true
9245});
9246
9247var menus_1 = __importDefault(__webpack_require__(269));
9248
9249var events_1 = __importDefault(__webpack_require__(270));
9250
9251var style_1 = __importDefault(__webpack_require__(121));
9252
9253var paste_1 = __importDefault(__webpack_require__(271));
9254
9255var cmd_1 = __importDefault(__webpack_require__(272));
9256
9257var image_1 = __importDefault(__webpack_require__(273));
9258
9259var text_1 = __importDefault(__webpack_require__(274));
9260
9261var lang_1 = __importDefault(__webpack_require__(275));
9262
9263var history_1 = __importDefault(__webpack_require__(276)); // 合并所有的配置信息
9264
9265
9266var defaultConfig = (0, _assign["default"])({}, menus_1["default"], events_1["default"], style_1["default"], cmd_1["default"], paste_1["default"], image_1["default"], text_1["default"], lang_1["default"], history_1["default"], //链接校验的配置函数
9267{
9268 linkCheck: function linkCheck(text, link) {
9269 return true;
9270 }
9271}, //网络图片校验的配置函数
9272{
9273 linkImgCheck: function linkImgCheck(src) {
9274 return true;
9275 }
9276});
9277exports["default"] = defaultConfig;
9278
9279/***/ }),
9280/* 264 */
9281/***/ (function(module, exports, __webpack_require__) {
9282
9283module.exports = __webpack_require__(265);
9284
9285/***/ }),
9286/* 265 */
9287/***/ (function(module, exports, __webpack_require__) {
9288
9289var parent = __webpack_require__(266);
9290
9291module.exports = parent;
9292
9293
9294/***/ }),
9295/* 266 */
9296/***/ (function(module, exports, __webpack_require__) {
9297
9298__webpack_require__(267);
9299var path = __webpack_require__(10);
9300
9301module.exports = path.Object.assign;
9302
9303
9304/***/ }),
9305/* 267 */
9306/***/ (function(module, exports, __webpack_require__) {
9307
9308var $ = __webpack_require__(4);
9309var assign = __webpack_require__(268);
9310
9311// `Object.assign` method
9312// https://tc39.github.io/ecma262/#sec-object.assign
9313$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
9314 assign: assign
9315});
9316
9317
9318/***/ }),
9319/* 268 */
9320/***/ (function(module, exports, __webpack_require__) {
9321
9322"use strict";
9323
9324var DESCRIPTORS = __webpack_require__(14);
9325var fails = __webpack_require__(12);
9326var objectKeys = __webpack_require__(57);
9327var getOwnPropertySymbolsModule = __webpack_require__(119);
9328var propertyIsEnumerableModule = __webpack_require__(55);
9329var toObject = __webpack_require__(37);
9330var IndexedObject = __webpack_require__(67);
9331
9332var nativeAssign = Object.assign;
9333var defineProperty = Object.defineProperty;
9334
9335// `Object.assign` method
9336// https://tc39.github.io/ecma262/#sec-object.assign
9337module.exports = !nativeAssign || fails(function () {
9338 // should have correct order of operations (Edge bug)
9339 if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {
9340 enumerable: true,
9341 get: function () {
9342 defineProperty(this, 'b', {
9343 value: 3,
9344 enumerable: false
9345 });
9346 }
9347 }), { b: 2 })).b !== 1) return true;
9348 // should work with symbols and should have deterministic property order (V8 bug)
9349 var A = {};
9350 var B = {};
9351 // eslint-disable-next-line no-undef
9352 var symbol = Symbol();
9353 var alphabet = 'abcdefghijklmnopqrst';
9354 A[symbol] = 7;
9355 alphabet.split('').forEach(function (chr) { B[chr] = chr; });
9356 return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
9357}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
9358 var T = toObject(target);
9359 var argumentsLength = arguments.length;
9360 var index = 1;
9361 var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
9362 var propertyIsEnumerable = propertyIsEnumerableModule.f;
9363 while (argumentsLength > index) {
9364 var S = IndexedObject(arguments[index++]);
9365 var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
9366 var length = keys.length;
9367 var j = 0;
9368 var key;
9369 while (length > j) {
9370 key = keys[j++];
9371 if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];
9372 }
9373 } return T;
9374} : nativeAssign;
9375
9376
9377/***/ }),
9378/* 269 */
9379/***/ (function(module, exports, __webpack_require__) {
9380
9381"use strict";
9382
9383/**
9384 * @description 菜单配置
9385 * @author wangfupeng
9386 */
9387
9388var _interopRequireDefault = __webpack_require__(0);
9389
9390var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9391
9392(0, _defineProperty["default"])(exports, "__esModule", {
9393 value: true
9394});
9395var SINA_PATH1 = 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal';
9396var SINA_PATH2 = 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal';
9397/*表情菜单数据结构类型END*/
9398
9399exports["default"] = {
9400 menus: ['head', 'bold', 'fontSize', // 'customFontSize',
9401 'fontName', 'italic', 'underline', 'strikeThrough', 'indent', 'lineHeight', 'foreColor', 'backColor', 'link', 'list', 'justify', 'quote', 'emoticon', 'image', 'video', 'table', 'code', 'splitLine', 'undo', 'redo'],
9402 fontNames: ['黑体', '仿宋', '楷体', '标楷体', '华文仿宋', '华文楷体', '宋体', '微软雅黑', 'Arial', 'Tahoma', 'Verdana', 'Times New Roman', 'Courier New'],
9403 fontSizes: {
9404 'x-small': {
9405 name: '10px',
9406 value: '1'
9407 },
9408 small: {
9409 name: '13px',
9410 value: '2'
9411 },
9412 normal: {
9413 name: '16px',
9414 value: '3'
9415 },
9416 large: {
9417 name: '18px',
9418 value: '4'
9419 },
9420 'x-large': {
9421 name: '24px',
9422 value: '5'
9423 },
9424 'xx-large': {
9425 name: '32px',
9426 value: '6'
9427 },
9428 'xxx-large': {
9429 name: '48px',
9430 value: '7'
9431 }
9432 },
9433 // customFontSize: [ // 该菜单暂时不用 - 王福朋 20200924
9434 // { value: '9px', text: '9' },
9435 // { value: '10px', text: '10' },
9436 // { value: '12px', text: '12' },
9437 // { value: '14px', text: '14' },
9438 // { value: '16px', text: '16' },
9439 // { value: '20px', text: '20' },
9440 // { value: '42px', text: '42' },
9441 // { value: '72px', text: '72' },
9442 // ],
9443 colors: ['#000000', '#eeece0', '#1c487f', '#4d80bf', '#c24f4a', '#8baa4a', '#7b5ba1', '#46acc8', '#f9963b', '#ffffff'],
9444 //插入代码语言配置
9445 languageType: ['Bash', 'C', 'C#', 'C++', 'CSS', 'Java', 'JavaScript', 'JSON', 'TypeScript', 'Plain text', 'Html', 'XML', 'SQL', 'Go', 'Kotlin', 'Lua', 'Markdown', 'PHP', 'Python', 'Shell Session', 'Ruby'],
9446 languageTab: '    ',
9447
9448 /**
9449 * 表情配置菜单
9450 * 如果为emoji表情直接作为元素插入
9451 * emoticon:Array<EmotionsType>
9452 */
9453 emotions: [{
9454 // tab 的标题
9455 title: '默认',
9456 // type -> 'emoji' / 'image'
9457 type: 'image',
9458 // content -> 数组
9459 content: [{
9460 alt: '[坏笑]',
9461 src: SINA_PATH1 + "/50/pcmoren_huaixiao_org.png"
9462 }, {
9463 alt: '[舔屏]',
9464 src: SINA_PATH1 + "/40/pcmoren_tian_org.png"
9465 }, {
9466 alt: '[污]',
9467 src: SINA_PATH1 + "/3c/pcmoren_wu_org.png"
9468 }]
9469 }, {
9470 // tab 的标题
9471 title: '新浪',
9472 // type -> 'emoji' / 'image'
9473 type: 'image',
9474 // content -> 数组
9475 content: [{
9476 src: SINA_PATH2 + "/7a/shenshou_thumb.gif",
9477 alt: '[草泥马]'
9478 }, {
9479 src: SINA_PATH2 + "/60/horse2_thumb.gif",
9480 alt: '[神马]'
9481 }, {
9482 src: SINA_PATH2 + "/bc/fuyun_thumb.gif",
9483 alt: '[浮云]'
9484 }]
9485 }, {
9486 // tab 的标题
9487 title: 'emoji',
9488 // type -> 'emoji' / 'image'
9489 type: 'emoji',
9490 // content -> 数组
9491 content: '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐'.split(/\s/)
9492 }, {
9493 // tab 的标题
9494 title: '手势',
9495 // type -> 'emoji' / 'image'
9496 type: 'emoji',
9497 // content -> 数组
9498 content: ['🙌', '👏', '👋', '👍', '👎', '👊', '✊', '️👌', '✋', '👐', '💪', '🙏', '️👆', '👇', '👈', '👉', '🖕', '🖐', '🤘']
9499 }],
9500 lineHeights: ['1', '1.15', '1.6', '2', '2.5', '3'],
9501 undoLimit: 20,
9502 indentation: '2em'
9503};
9504
9505/***/ }),
9506/* 270 */
9507/***/ (function(module, exports, __webpack_require__) {
9508
9509"use strict";
9510
9511/**
9512 * @description 事件配置
9513 * @author wangfupeng
9514 */
9515
9516var _interopRequireDefault = __webpack_require__(0);
9517
9518var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9519
9520(0, _defineProperty["default"])(exports, "__esModule", {
9521 value: true
9522});
9523
9524var const_1 = __webpack_require__(31);
9525/**
9526 * 提示信息
9527 * @param alertInfo alert info
9528 * @param alertType 错误提示类型
9529 * @param debugInfo debug info
9530 */
9531
9532
9533function customAlert(alertInfo, alertType, debugInfo) {
9534 window.alert(alertInfo);
9535
9536 if (debugInfo) {
9537 console.error('wangEditor: ' + debugInfo);
9538 }
9539}
9540
9541exports["default"] = {
9542 onchangeTimeout: 200,
9543 onchange: const_1.EMPTY_FN,
9544 onfocus: const_1.EMPTY_FN,
9545 onblur: const_1.EMPTY_FN,
9546 onCatalogChange: null,
9547 customAlert: customAlert
9548};
9549
9550/***/ }),
9551/* 271 */
9552/***/ (function(module, exports, __webpack_require__) {
9553
9554"use strict";
9555
9556/**
9557 * @description 粘贴,配置文件
9558 * @author wangfupeng
9559 */
9560
9561var _interopRequireDefault = __webpack_require__(0);
9562
9563var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9564
9565(0, _defineProperty["default"])(exports, "__esModule", {
9566 value: true
9567});
9568exports["default"] = {
9569 // 粘贴过滤样式,默认开启
9570 pasteFilterStyle: true,
9571 // 粘贴内容时,忽略图片。默认关闭
9572 pasteIgnoreImg: false,
9573 // 对粘贴的文字进行自定义处理,返回处理后的结果。编辑器会将处理后的结果粘贴到编辑区域中。
9574 // IE 暂时不支持
9575 pasteTextHandle: function pasteTextHandle(content) {
9576 // content 即粘贴过来的内容(html 或 纯文本),可进行自定义处理然后返回
9577 return content;
9578 }
9579};
9580
9581/***/ }),
9582/* 272 */
9583/***/ (function(module, exports, __webpack_require__) {
9584
9585"use strict";
9586
9587/**
9588 * @description 命令配置项
9589 * @author wangfupeng
9590 */
9591
9592var _interopRequireDefault = __webpack_require__(0);
9593
9594var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9595
9596(0, _defineProperty["default"])(exports, "__esModule", {
9597 value: true
9598});
9599exports["default"] = {
9600 styleWithCSS: false
9601};
9602
9603/***/ }),
9604/* 273 */
9605/***/ (function(module, exports, __webpack_require__) {
9606
9607"use strict";
9608
9609/**
9610 * @description 图片相关的配置
9611 * @author wangfupeng
9612 */
9613
9614var _interopRequireDefault = __webpack_require__(0);
9615
9616var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9617
9618(0, _defineProperty["default"])(exports, "__esModule", {
9619 value: true
9620});
9621
9622var const_1 = __webpack_require__(31);
9623
9624exports["default"] = {
9625 // 显示“插入网络图片”
9626 showLinkImg: true,
9627 // 插入图片成功之后的回调函数
9628 linkImgCallback: const_1.EMPTY_FN,
9629 // accept
9630 uploadImgAccept: ['jpg', 'jpeg', 'png', 'gif', 'bmp'],
9631 // 服务端地址
9632 uploadImgServer: '',
9633 // 使用 base64 存储图片
9634 uploadImgShowBase64: false,
9635 // 上传图片的最大体积,默认 5M
9636 uploadImgMaxSize: 5 * 1024 * 1024,
9637 // 一次最多上传多少个图片
9638 uploadImgMaxLength: 100,
9639 // 自定义上传图片的名称
9640 uploadFileName: '',
9641 // 上传图片自定义参数
9642 uploadImgParams: {},
9643 // 自定义参数拼接到 url 中
9644 uploadImgParamsWithUrl: false,
9645 // 上传图片自定义 header
9646 uploadImgHeaders: {},
9647 // 钩子函数
9648 uploadImgHooks: {},
9649 // 上传图片超时时间 ms
9650 uploadImgTimeout: 10 * 1000,
9651 // 跨域带 cookie
9652 withCredentials: false,
9653 // 自定义上传
9654 customUploadImg: null
9655};
9656
9657/***/ }),
9658/* 274 */
9659/***/ (function(module, exports, __webpack_require__) {
9660
9661"use strict";
9662
9663/**
9664 * @description 默认常量配置
9665 * @author xiaokyo
9666 */
9667
9668var _interopRequireDefault = __webpack_require__(0);
9669
9670var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9671
9672(0, _defineProperty["default"])(exports, "__esModule", {
9673 value: true
9674});
9675exports["default"] = {
9676 focus: true,
9677 height: 300,
9678 placeholder: '请输入正文',
9679 zIndexFullScreen: 10002,
9680 showFullScreen: true
9681};
9682
9683/***/ }),
9684/* 275 */
9685/***/ (function(module, exports, __webpack_require__) {
9686
9687"use strict";
9688
9689
9690var _interopRequireDefault = __webpack_require__(0);
9691
9692var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9693
9694(0, _defineProperty["default"])(exports, "__esModule", {
9695 value: true
9696});
9697exports["default"] = {
9698 lang: 'zh-CN',
9699 languages: {
9700 'zh-CN': {
9701 wangEditor: {
9702 重置: '重置',
9703 插入: '插入',
9704 默认: '默认',
9705 创建: '创建',
9706 修改: '修改',
9707 如: '如',
9708 请输入正文: '请输入正文',
9709 menus: {
9710 dropListMenu: {
9711 设置标题: '设置标题',
9712 背景颜色: '背景颜色',
9713 文字颜色: '文字颜色',
9714 设置字号: '设置字号',
9715 设置字体: '设置字体',
9716 设置缩进: '设置缩进',
9717 对齐方式: '对齐方式',
9718 设置行高: '设置行高',
9719 序列: '序列',
9720 head: {
9721 正文: '正文'
9722 },
9723 indent: {
9724 增加缩进: '增加缩进',
9725 减少缩进: '减少缩进'
9726 },
9727 justify: {
9728 靠左: '靠左',
9729 居中: '居中',
9730 靠右: '靠右',
9731 两端: '两端'
9732 },
9733 list: {
9734 无序列表: '无序列表',
9735 有序列表: '有序列表'
9736 }
9737 },
9738 panelMenus: {
9739 emoticon: {
9740 默认: '默认',
9741 新浪: '新浪',
9742 emoji: 'emoji',
9743 手势: '手势'
9744 },
9745 image: {
9746 图片链接: '图片链接',
9747 上传图片: '上传图片',
9748 网络图片: '网络图片'
9749 },
9750 link: {
9751 链接: '链接',
9752 链接文字: '链接文字',
9753 取消链接: '取消链接',
9754 查看链接: '查看链接'
9755 },
9756 video: {
9757 插入视频: '插入视频'
9758 },
9759 table: {
9760 行: '行',
9761 列: '列',
9762 的: '的',
9763 表格: '表格',
9764 添加行: '添加行',
9765 删除行: '删除行',
9766 添加列: '添加列',
9767 删除列: '删除列',
9768 设置表头: '设置表头',
9769 取消表头: '取消表头',
9770 插入表格: '插入表格',
9771 删除表格: '删除表格'
9772 },
9773 code: {
9774 删除代码: '删除代码',
9775 修改代码: '修改代码',
9776 插入代码: '插入代码'
9777 }
9778 }
9779 },
9780 validate: {
9781 张图片: '张图片',
9782 大于: '大于',
9783 图片链接: '图片链接',
9784 不是图片: '不是图片',
9785 返回结果: '返回结果',
9786 上传图片超时: '上传图片超时',
9787 上传图片错误: '上传图片错误',
9788 上传图片失败: '上传图片失败',
9789 插入图片错误: '插入图片错误',
9790 一次最多上传: '一次最多上传',
9791 下载链接失败: '下载链接失败',
9792 图片验证未通过: '图片验证未通过',
9793 服务器返回状态: '服务器返回状态',
9794 上传图片返回结果错误: '上传图片返回结果错误',
9795 请替换为支持的图片类型: '请替换为支持的图片类型',
9796 您插入的网络图片无法识别: '您插入的网络图片无法识别',
9797 您刚才插入的图片链接未通过编辑器校验: '您刚才插入的图片链接未通过编辑器校验'
9798 }
9799 }
9800 },
9801 en: {
9802 wangEditor: {
9803 重置: 'reset',
9804 插入: 'insert',
9805 默认: 'default',
9806 创建: 'create',
9807 修改: 'edit',
9808 如: 'like',
9809 请输入正文: 'please enter the text',
9810 menus: {
9811 dropListMenu: {
9812 设置标题: 'title',
9813 背景颜色: 'background',
9814 文字颜色: 'font color',
9815 设置字号: 'font size',
9816 设置字体: 'font family',
9817 设置缩进: 'indent',
9818 对齐方式: 'align',
9819 设置行高: 'line heihgt',
9820 序列: 'list',
9821 head: {
9822 正文: 'text'
9823 },
9824 indent: {
9825 增加缩进: 'indent',
9826 减少缩进: 'outdent'
9827 },
9828 justify: {
9829 靠左: 'left',
9830 居中: 'center',
9831 靠右: 'right',
9832 两端: 'justify'
9833 },
9834 list: {
9835 无序列表: 'unordered',
9836 有序列表: 'ordered'
9837 }
9838 },
9839 panelMenus: {
9840 emoticon: {
9841 默认: 'default',
9842 新浪: 'sina',
9843 emoji: 'emoji',
9844 手势: 'gesture'
9845 },
9846 image: {
9847 图片链接: 'image link',
9848 上传图片: 'upload image',
9849 网络图片: 'network image'
9850 },
9851 link: {
9852 链接: 'link',
9853 链接文字: 'link text',
9854 取消链接: 'unlink',
9855 查看链接: 'view links'
9856 },
9857 video: {
9858 插入视频: 'insert video'
9859 },
9860 table: {
9861 行: 'rows',
9862 列: 'columns',
9863 的: ' ',
9864 表格: 'table',
9865 添加行: 'insert row',
9866 删除行: 'delete row',
9867 添加列: 'insert column',
9868 删除列: 'delete column',
9869 设置表头: 'set header',
9870 取消表头: 'cancel header',
9871 插入表格: 'insert table',
9872 删除表格: 'delete table'
9873 },
9874 code: {
9875 删除代码: 'delete code',
9876 修改代码: 'edit code',
9877 插入代码: 'insert code'
9878 }
9879 }
9880 },
9881 validate: {
9882 张图片: 'images',
9883 大于: 'greater than',
9884 图片链接: 'image link',
9885 不是图片: 'is not image',
9886 返回结果: 'return results',
9887 上传图片超时: 'upload image timeout',
9888 上传图片错误: 'upload image error',
9889 上传图片失败: 'upload image failed',
9890 插入图片错误: 'insert image error',
9891 一次最多上传: 'once most at upload',
9892 下载链接失败: 'download link failed',
9893 图片验证未通过: 'image validate failed',
9894 服务器返回状态: 'server return status',
9895 上传图片返回结果错误: 'upload image return results error',
9896 请替换为支持的图片类型: 'please replace with a supported image type',
9897 您插入的网络图片无法识别: 'the network picture you inserted is not recognized',
9898 您刚才插入的图片链接未通过编辑器校验: 'the image link you just inserted did not pass the editor verification'
9899 }
9900 }
9901 }
9902 }
9903};
9904
9905/***/ }),
9906/* 276 */
9907/***/ (function(module, exports, __webpack_require__) {
9908
9909"use strict";
9910
9911/**
9912 * @description 历史记录 - 数据缓存的模式
9913 * @author fangzhicong
9914 */
9915
9916var _interopRequireDefault = __webpack_require__(0);
9917
9918var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9919
9920(0, _defineProperty["default"])(exports, "__esModule", {
9921 value: true
9922});
9923
9924var util_1 = __webpack_require__(7);
9925/**
9926 * 是否为兼容模式。返回 true 表示当前使用兼容(内容备份)模式,否则使用标准(差异备份)模式
9927 */
9928
9929
9930function compatibleMode() {
9931 if (util_1.UA.isIE() || util_1.UA.isOldEdge) {
9932 return true;
9933 }
9934
9935 return false;
9936}
9937
9938exports["default"] = {
9939 compatibleMode: compatibleMode,
9940 historyMaxSize: 30
9941};
9942
9943/***/ }),
9944/* 277 */
9945/***/ (function(module, exports, __webpack_require__) {
9946
9947"use strict";
9948
9949
9950var _interopRequireDefault = __webpack_require__(0);
9951
9952var _defineProperty = _interopRequireDefault(__webpack_require__(1));
9953
9954var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
9955 return mod && mod.__esModule ? mod : {
9956 "default": mod
9957 };
9958};
9959
9960(0, _defineProperty["default"])(exports, "__esModule", {
9961 value: true
9962});
9963/**
9964 * @description selection range API
9965 * @author wangfupeng
9966 */
9967
9968var dom_core_1 = __importDefault(__webpack_require__(2));
9969
9970var util_1 = __webpack_require__(7);
9971
9972var index_1 = __importDefault(__webpack_require__(278));
9973
9974var SelectionAndRange =
9975/** @class */
9976function () {
9977 function SelectionAndRange(editor) {
9978 this._currentRange = null;
9979 this.editor = editor;
9980 }
9981 /**
9982 * 获取当前 range
9983 */
9984
9985
9986 SelectionAndRange.prototype.getRange = function () {
9987 return this._currentRange;
9988 };
9989 /**
9990 * 保存选区范围
9991 * @param _range 选区范围
9992 */
9993
9994
9995 SelectionAndRange.prototype.saveRange = function (_range) {
9996 if (_range) {
9997 // 保存已有选区
9998 this._currentRange = _range;
9999 return;
10000 } // 获取当前的选区
10001
10002
10003 var selection = window.getSelection();
10004
10005 if (selection.rangeCount === 0) {
10006 return;
10007 }
10008
10009 var range = selection.getRangeAt(0); // 获取选区范围的 DOM 元素
10010
10011 var $containerElem = this.getSelectionContainerElem(range);
10012
10013 if (!$containerElem) {
10014 // 当 选区范围内没有 DOM元素 则抛出
10015 return;
10016 }
10017
10018 if ($containerElem.attr('contenteditable') === 'false' || $containerElem.parentUntil('[contenteditable=false]')) {
10019 // 这里大体意义上就是个保险
10020 // 确保 编辑区域 的 contenteditable属性 的值为 true
10021 return;
10022 }
10023
10024 var editor = this.editor;
10025 var $textElem = editor.$textElem;
10026
10027 if ($textElem.isContain($containerElem)) {
10028 if ($textElem.elems[0] === $containerElem.elems[0]) {
10029 if ($textElem.html() === '<p><br></p>') {
10030 var $children = $textElem.children();
10031 var $last = $children === null || $children === void 0 ? void 0 : $children.last();
10032 editor.selection.createRangeByElem($last, true, true);
10033 editor.selection.restoreSelection();
10034 }
10035 } // 是编辑内容之内的
10036
10037
10038 this._currentRange = range;
10039 }
10040 };
10041 /**
10042 * 折叠选区范围
10043 * @param toStart true 开始位置,false 结束位置
10044 */
10045
10046
10047 SelectionAndRange.prototype.collapseRange = function (toStart) {
10048 if (toStart === void 0) {
10049 toStart = false;
10050 }
10051
10052 var range = this._currentRange;
10053
10054 if (range) {
10055 range.collapse(toStart);
10056 }
10057 };
10058 /**
10059 * 获取选区范围内的文字
10060 */
10061
10062
10063 SelectionAndRange.prototype.getSelectionText = function () {
10064 var range = this._currentRange;
10065
10066 if (range) {
10067 return range.toString();
10068 } else {
10069 return '';
10070 }
10071 };
10072 /**
10073 * 获取选区范围的 DOM 元素
10074 * @param range 选区范围
10075 */
10076
10077
10078 SelectionAndRange.prototype.getSelectionContainerElem = function (range) {
10079 var r;
10080 r = range || this._currentRange;
10081 var elem;
10082
10083 if (r) {
10084 elem = r.commonAncestorContainer;
10085 return dom_core_1["default"](elem.nodeType === 1 ? elem : elem.parentNode);
10086 }
10087 };
10088 /**
10089 * 选区范围开始的 DOM 元素
10090 * @param range 选区范围
10091 */
10092
10093
10094 SelectionAndRange.prototype.getSelectionStartElem = function (range) {
10095 var r;
10096 r = range || this._currentRange;
10097 var elem;
10098
10099 if (r) {
10100 elem = r.startContainer;
10101 return dom_core_1["default"](elem.nodeType === 1 ? elem : elem.parentNode);
10102 }
10103 };
10104 /**
10105 * 选区范围结束的 DOM 元素
10106 * @param range 选区范围
10107 */
10108
10109
10110 SelectionAndRange.prototype.getSelectionEndElem = function (range) {
10111 var r;
10112 r = range || this._currentRange;
10113 var elem;
10114
10115 if (r) {
10116 elem = r.endContainer;
10117 return dom_core_1["default"](elem.nodeType === 1 ? elem : elem.parentNode);
10118 }
10119 };
10120 /**
10121 * 选区是否为空(没有选择文字)
10122 */
10123
10124
10125 SelectionAndRange.prototype.isSelectionEmpty = function () {
10126 var range = this._currentRange;
10127
10128 if (range && range.startContainer) {
10129 if (range.startContainer === range.endContainer) {
10130 if (range.startOffset === range.endOffset) {
10131 return true;
10132 }
10133 }
10134 }
10135
10136 return false;
10137 };
10138 /**
10139 * 恢复选区范围
10140 */
10141
10142
10143 SelectionAndRange.prototype.restoreSelection = function () {
10144 var selection = window.getSelection();
10145 var r = this._currentRange;
10146
10147 if (selection && r) {
10148 selection.removeAllRanges();
10149 selection.addRange(r);
10150 }
10151 };
10152 /**
10153 * 创建一个空白(即 &#8203 字符)选区
10154 */
10155
10156
10157 SelectionAndRange.prototype.createEmptyRange = function () {
10158 var editor = this.editor;
10159 var range = this.getRange();
10160 var $elem;
10161
10162 if (!range) {
10163 // 当前无 range
10164 return;
10165 }
10166
10167 if (!this.isSelectionEmpty()) {
10168 // 当前选区必须没有内容才可以,有内容就直接 return
10169 return;
10170 }
10171
10172 try {
10173 // 目前只支持 webkit 内核
10174 if (util_1.UA.isWebkit()) {
10175 // 插入 &#8203
10176 editor.cmd["do"]('insertHTML', '&#8203;'); // 修改 offset 位置
10177
10178 range.setEnd(range.endContainer, range.endOffset + 1); // 存储
10179
10180 this.saveRange(range);
10181 } else {
10182 $elem = dom_core_1["default"]('<strong>&#8203;</strong>');
10183 editor.cmd["do"]('insertElem', $elem);
10184 this.createRangeByElem($elem, true);
10185 }
10186 } catch (ex) {// 部分情况下会报错,兼容一下
10187 }
10188 };
10189 /**
10190 * 根据 DOM 元素设置选区
10191 * @param $elem DOM 元素
10192 * @param toStart true 开始位置,false 结束位置
10193 * @param isContent 是否选中 $elem 的内容
10194 */
10195
10196
10197 SelectionAndRange.prototype.createRangeByElem = function ($elem, toStart, isContent) {
10198 if (!$elem.length) {
10199 return;
10200 }
10201
10202 var elem = $elem.elems[0];
10203 var range = document.createRange();
10204
10205 if (isContent) {
10206 range.selectNodeContents(elem);
10207 } else {
10208 // 如果用户没有传入 isContent 参数,那就默认为 false
10209 range.selectNode(elem);
10210 }
10211
10212 if (toStart != null) {
10213 // 传入了 toStart 参数,折叠选区。如果没传入 toStart 参数,则忽略这一步
10214 range.collapse(toStart);
10215 } // 存储 range
10216
10217
10218 this.saveRange(range);
10219 };
10220 /**
10221 * 获取 当前 选取范围的 顶级(段落) 元素
10222 * @param $editor
10223 */
10224
10225
10226 SelectionAndRange.prototype.getSelectionRangeTopNodes = function (editor) {
10227 var item = new index_1["default"](editor);
10228 item.init();
10229 return item.getSelectionNodes();
10230 };
10231 /**
10232 * 移动光标位置
10233 * @param {Node} node 元素节点
10234 * @param {Boolean} toStart 为true光标在开始位置 为false在结束位置 默认在结束位置
10235 */
10236
10237
10238 SelectionAndRange.prototype.moveCursor = function (node, toStart) {
10239 if (toStart === void 0) {
10240 toStart = false;
10241 }
10242
10243 var range = this.getRange();
10244 var pos = toStart ? 0 : node.childNodes.length;
10245
10246 if (!range) {
10247 return;
10248 }
10249
10250 if (node) {
10251 range.setStart(node, pos);
10252 range.setEnd(node, pos);
10253 this.restoreSelection();
10254 }
10255 };
10256
10257 return SelectionAndRange;
10258}();
10259
10260exports["default"] = SelectionAndRange;
10261
10262/***/ }),
10263/* 278 */
10264/***/ (function(module, exports, __webpack_require__) {
10265
10266"use strict";
10267
10268/**
10269 * @description 选取范围所有顶级(段落)节点
10270 * @author tonghan
10271 */
10272
10273var _interopRequireDefault = __webpack_require__(0);
10274
10275var _defineProperty = _interopRequireDefault(__webpack_require__(1));
10276
10277var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
10278 return mod && mod.__esModule ? mod : {
10279 "default": mod
10280 };
10281};
10282
10283(0, _defineProperty["default"])(exports, "__esModule", {
10284 value: true
10285});
10286
10287var dom_core_1 = __importDefault(__webpack_require__(2)); // 构造函数
10288
10289
10290var SelectionRangeTopNodes =
10291/** @class */
10292function () {
10293 /**
10294 * 构造函数
10295 * @param editor
10296 */
10297 function SelectionRangeTopNodes(editor) {
10298 // 初始化属性
10299 this.editor = editor;
10300 this.$nodeList = [];
10301 this.$startElem = dom_core_1["default"](editor.selection.getSelectionStartElem()).getNodeTop(this.editor);
10302 this.$endElem = dom_core_1["default"](editor.selection.getSelectionEndElem()).getNodeTop(this.editor);
10303 }
10304 /**
10305 * 初始化
10306 */
10307
10308
10309 SelectionRangeTopNodes.prototype.init = function () {
10310 this.recordSelectionNodes(dom_core_1["default"](this.$startElem));
10311 };
10312 /**
10313 * 添加 节点 到nodeList
10314 * @param $node 节点
10315 */
10316
10317
10318 SelectionRangeTopNodes.prototype.addNodeList = function ($node) {
10319 this.$nodeList.push(dom_core_1["default"]($node));
10320 };
10321 /**
10322 * 是否是 选区结束 节点
10323 * @param $node 节点
10324 */
10325
10326
10327 SelectionRangeTopNodes.prototype.isEndElem = function ($node) {
10328 var _a;
10329
10330 return (_a = this.$endElem) === null || _a === void 0 ? void 0 : _a.equal($node);
10331 };
10332 /**
10333 * 获取当前节点的下一个兄弟节点
10334 * @param $node 节点
10335 */
10336
10337
10338 SelectionRangeTopNodes.prototype.getNextSibling = function ($node) {
10339 return dom_core_1["default"]($node.elems[0].nextSibling);
10340 };
10341 /**
10342 * 记录节点 - 从选区开始节点开始 一直到匹配到选区结束节点为止
10343 * @param $node 节点
10344 */
10345
10346
10347 SelectionRangeTopNodes.prototype.recordSelectionNodes = function ($node) {
10348 var $elem = $node.getNodeTop(this.editor);
10349
10350 if ($elem.length > 0) {
10351 this.addNodeList($elem);
10352
10353 if (!this.isEndElem($elem)) {
10354 this.recordSelectionNodes(this.getNextSibling($elem));
10355 }
10356 }
10357 };
10358 /**
10359 * 获取 选中节点列表
10360 */
10361
10362
10363 SelectionRangeTopNodes.prototype.getSelectionNodes = function () {
10364 return this.$nodeList;
10365 };
10366
10367 return SelectionRangeTopNodes;
10368}();
10369/**
10370 * 导出
10371 */
10372
10373
10374exports["default"] = SelectionRangeTopNodes;
10375
10376/***/ }),
10377/* 279 */
10378/***/ (function(module, exports, __webpack_require__) {
10379
10380"use strict";
10381
10382/**
10383 * @description 封装 document.execCommand
10384 * @author wangfupeng
10385 */
10386
10387var _interopRequireDefault = __webpack_require__(0);
10388
10389var _defineProperty = _interopRequireDefault(__webpack_require__(1));
10390
10391var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
10392 return mod && mod.__esModule ? mod : {
10393 "default": mod
10394 };
10395};
10396
10397(0, _defineProperty["default"])(exports, "__esModule", {
10398 value: true
10399});
10400
10401var dom_core_1 = __importDefault(__webpack_require__(2));
10402
10403var Command =
10404/** @class */
10405function () {
10406 function Command(editor) {
10407 this.editor = editor;
10408 }
10409 /**
10410 * 执行富文本操作的命令
10411 * @param name name
10412 * @param value value
10413 */
10414
10415
10416 Command.prototype["do"] = function (name, value) {
10417 var editor = this.editor;
10418
10419 if (editor.config.styleWithCSS) {
10420 document.execCommand('styleWithCSS', false, 'true');
10421 }
10422
10423 var selection = editor.selection; // 如果无选区,忽略
10424
10425 if (!selection.getRange()) {
10426 return;
10427 } // 恢复选取
10428
10429
10430 selection.restoreSelection(); // 执行
10431
10432 switch (name) {
10433 case 'insertHTML':
10434 this.insertHTML(value);
10435 break;
10436
10437 case 'insertElem':
10438 this.insertElem(value);
10439 break;
10440
10441 default:
10442 // 默认 command
10443 this.execCommand(name, value);
10444 break;
10445 } // 修改菜单状态
10446
10447
10448 editor.menus.changeActive(); // 最后,恢复选取保证光标在原来的位置闪烁
10449
10450 selection.saveRange();
10451 selection.restoreSelection();
10452 };
10453 /**
10454 * 插入 html
10455 * @param html html 字符串
10456 */
10457
10458
10459 Command.prototype.insertHTML = function (html) {
10460 var editor = this.editor;
10461 var range = editor.selection.getRange();
10462 if (range == null) return;
10463
10464 if (this.queryCommandSupported('insertHTML')) {
10465 // W3C
10466 this.execCommand('insertHTML', html);
10467 } else if (range.insertNode) {
10468 // IE
10469 range.deleteContents();
10470 range.insertNode(dom_core_1["default"](html).elems[0]);
10471 editor.selection.collapseRange();
10472 } // else if (range.pasteHTML) {
10473 // // IE <= 10
10474 // range.pasteHTML(html)
10475 // }
10476
10477 };
10478 /**
10479 * 插入 DOM 元素
10480 * @param $elem DOM 元素
10481 */
10482
10483
10484 Command.prototype.insertElem = function ($elem) {
10485 var editor = this.editor;
10486 var range = editor.selection.getRange();
10487 if (range == null) return;
10488
10489 if (range.insertNode) {
10490 range.deleteContents();
10491 range.insertNode($elem.elems[0]);
10492 }
10493 };
10494 /**
10495 * 执行 document.execCommand
10496 * @param name name
10497 * @param value value
10498 */
10499
10500
10501 Command.prototype.execCommand = function (name, value) {
10502 document.execCommand(name, false, value);
10503 };
10504 /**
10505 * 执行 document.queryCommandValue
10506 * @param name name
10507 */
10508
10509
10510 Command.prototype.queryCommandValue = function (name) {
10511 return document.queryCommandValue(name);
10512 };
10513 /**
10514 * 执行 document.queryCommandState
10515 * @param name name
10516 */
10517
10518
10519 Command.prototype.queryCommandState = function (name) {
10520 return document.queryCommandState(name);
10521 };
10522 /**
10523 * 执行 document.queryCommandSupported
10524 * @param name name
10525 */
10526
10527
10528 Command.prototype.queryCommandSupported = function (name) {
10529 return document.queryCommandSupported(name);
10530 };
10531
10532 return Command;
10533}();
10534
10535exports["default"] = Command;
10536
10537/***/ }),
10538/* 280 */
10539/***/ (function(module, exports, __webpack_require__) {
10540
10541"use strict";
10542
10543/**
10544 * @description 编辑区域,入口文件
10545 * @author wangfupeng
10546 */
10547
10548var _interopRequireDefault = __webpack_require__(0);
10549
10550var _forEach = _interopRequireDefault(__webpack_require__(6));
10551
10552var _indexOf = _interopRequireDefault(__webpack_require__(53));
10553
10554var _trim = _interopRequireDefault(__webpack_require__(21));
10555
10556var _find = _interopRequireDefault(__webpack_require__(32));
10557
10558var _defineProperty = _interopRequireDefault(__webpack_require__(1));
10559
10560var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
10561 return mod && mod.__esModule ? mod : {
10562 "default": mod
10563 };
10564};
10565
10566(0, _defineProperty["default"])(exports, "__esModule", {
10567 value: true
10568});
10569
10570var dom_core_1 = __importDefault(__webpack_require__(2));
10571
10572var index_1 = __importDefault(__webpack_require__(285));
10573
10574var util_1 = __webpack_require__(7);
10575
10576var getChildrenJSON_1 = __importDefault(__webpack_require__(297));
10577
10578var getHtmlByNodeList_1 = __importDefault(__webpack_require__(298));
10579
10580var Text =
10581/** @class */
10582function () {
10583 function Text(editor) {
10584 this.editor = editor;
10585 this.eventHooks = {
10586 changeEvents: [],
10587 dropEvents: [],
10588 clickEvents: [],
10589 keyupEvents: [],
10590 tabUpEvents: [],
10591 tabDownEvents: [],
10592 enterUpEvents: [],
10593 enterDownEvents: [],
10594 deleteUpEvents: [],
10595 deleteDownEvents: [],
10596 pasteEvents: [],
10597 linkClickEvents: [],
10598 codeClickEvents: [],
10599 textScrollEvents: [],
10600 toolbarClickEvents: [],
10601 imgClickEvents: [],
10602 imgDragBarMouseDownEvents: [],
10603 tableClickEvents: [],
10604 menuClickEvents: [],
10605 dropListMenuHoverEvents: [],
10606 splitLineEvents: []
10607 };
10608 }
10609 /**
10610 * 初始化
10611 */
10612
10613
10614 Text.prototype.init = function () {
10615 // 实时保存选取范围
10616 this._saveRange(); // 绑定事件
10617
10618
10619 this._bindEventHooks(); // 初始化 text 事件钩子函数
10620
10621
10622 index_1["default"](this);
10623 };
10624 /**
10625 * 切换placeholder
10626 */
10627
10628
10629 Text.prototype.togglePlaceholder = function () {
10630 var _context;
10631
10632 var html = this.html();
10633 var $placeholder = (0, _find["default"])(_context = this.editor.$textContainerElem).call(_context, '.placeholder');
10634 $placeholder.hide();
10635 if (!html || html === ' ') $placeholder.show();
10636 };
10637 /**
10638 * 清空内容
10639 */
10640
10641
10642 Text.prototype.clear = function () {
10643 this.html('<p><br></p>');
10644 };
10645 /**
10646 * 设置/获取 html
10647 * @param val html 字符串
10648 */
10649
10650
10651 Text.prototype.html = function (val) {
10652 var editor = this.editor;
10653 var $textElem = editor.$textElem; // 没有 val ,则是获取 html
10654
10655 if (val == null) {
10656 var html = $textElem.html(); // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 &#8203 ,这里替换掉
10657
10658 html = html.replace(/\u200b/gm, '');
10659 html = html.replace(/<p><\/p>/gim, ''); // 去掉空行
10660
10661 html = html.replace(/<p><br\/?><\/p>$/gim, ''); // 去掉最后的 <p><br><p>
10662
10663 /**
10664 * 这里的代码为了处理火狐多余的空行标签,但是强制删除空行标签会带来其他问题
10665 * html()方法返回的的值,"<p><br></p>"中pr会被删除,只留下<p>,点不进去,从而产生垃圾数据
10666 * 目前在末位有多个空行的情况下执行撤销重做操作,会产生一种不记录末尾空行的错觉
10667 * 暂时注释, 等待进一步的兼容处理
10668 */
10669 // html = html.replace(/><br>(?!<)/gi, '>') // 过滤 <p><br>内容</p> 中的br
10670 // html = html.replace(/(?!>)<br></gi, '<') // 过滤 <p>内容<br></p> 中的br
10671
10672 /**
10673 * pre标签格式化
10674 * html()方法理论上应当输出纯净的代码文本,但是对于是否解析html标签还没有良好的判断
10675 * 如果去除hljs的标签,在解析状态下回显,会造成显示错误并且无法再通过hljs方法渲染
10676 * 暂且其弃用
10677 */
10678 // html = formatCodeHtml(editor, html)
10679
10680 return html;
10681 } // 有 val ,则是设置 html
10682
10683
10684 val = (0, _trim["default"])(val).call(val);
10685
10686 if (val === '') {
10687 val = "<p><br></p>";
10688 }
10689
10690 if ((0, _indexOf["default"])(val).call(val, '<') !== 0) {
10691 // 内容用 p 标签包裹
10692 val = "<p>" + val + "</p>";
10693 }
10694
10695 $textElem.html(val); // 初始化选区,将光标定位到内容尾部
10696
10697 editor.initSelection();
10698 };
10699 /**
10700 * 将json设置成html至编辑器
10701 * @param nodeList json格式
10702 */
10703
10704
10705 Text.prototype.setJSON = function (nodeList) {
10706 var html = getHtmlByNodeList_1["default"](nodeList).children();
10707 var editor = this.editor;
10708 var $textElem = editor.$textElem; // 没有获取到元素的情况
10709
10710 if (!html) return; // 替换文本节点下全部子节点
10711
10712 $textElem.replaceChildAll(html);
10713 };
10714 /**
10715 * 获取 json 格式的数据
10716 */
10717
10718
10719 Text.prototype.getJSON = function () {
10720 var editor = this.editor;
10721 var $textElem = editor.$textElem;
10722 return getChildrenJSON_1["default"]($textElem);
10723 };
10724
10725 Text.prototype.text = function (val) {
10726 var editor = this.editor;
10727 var $textElem = editor.$textElem; // 没有 val ,是获取 text
10728
10729 if (val == null) {
10730 var text = $textElem.text(); // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 &#8203 ,这里替换掉
10731
10732 text = text.replace(/\u200b/gm, '');
10733 return text;
10734 } // 有 val ,则是设置 text
10735
10736
10737 $textElem.text("<p>" + val + "</p>"); // 初始化选区,将光标定位到内容尾部
10738
10739 editor.initSelection();
10740 };
10741 /**
10742 * 追加 html 内容
10743 * @param html html 字符串
10744 */
10745
10746
10747 Text.prototype.append = function (html) {
10748 var editor = this.editor;
10749 var $textElem = editor.$textElem;
10750
10751 if ((0, _indexOf["default"])(html).call(html, '<') !== 0) {
10752 // 普通字符串,用 <p> 包裹
10753 html = "<p>" + html + "</p>";
10754 }
10755
10756 $textElem.append(dom_core_1["default"](html)); // 初始化选区,将光标定位到内容尾部
10757
10758 editor.initSelection();
10759 };
10760 /**
10761 * 每一步操作,都实时保存选区范围
10762 */
10763
10764
10765 Text.prototype._saveRange = function () {
10766 var editor = this.editor;
10767 var $textElem = editor.$textElem; // 保存当前的选区
10768
10769 function saveRange() {
10770 // 随时保存选区
10771 editor.selection.saveRange(); // 更新按钮 active 状态
10772
10773 editor.menus.changeActive();
10774 } // 按键后保存
10775
10776
10777 $textElem.on('keyup', saveRange);
10778 $textElem.on('mousedown', function () {
10779 // mousedown 状态下,鼠标滑动到编辑区域外面,也需要保存选区
10780 $textElem.on('mouseleave', saveRange);
10781 });
10782 $textElem.on('mouseup', function () {
10783 var selection = editor.selection;
10784 var range = selection.getRange();
10785 if (range == null) return;
10786 var startOffset = range.startOffset,
10787 endOffset = range.endOffset;
10788 var endContainer = range === null || range === void 0 ? void 0 : range.endContainer; // 修复当selection结束时,点击编辑器内部,保存选区异常的情况
10789
10790 if (startOffset !== endOffset && endContainer != null) {
10791 range === null || range === void 0 ? void 0 : range.setStart(endContainer, endOffset);
10792 }
10793
10794 saveRange(); // 在编辑器区域之内完成点击,取消鼠标滑动到编辑区外面的事件
10795
10796 $textElem.off('mouseleave', saveRange);
10797 });
10798 };
10799 /**
10800 * 绑定事件,事件会触发钩子函数
10801 */
10802
10803
10804 Text.prototype._bindEventHooks = function () {
10805 var editor = this.editor;
10806 var $textElem = editor.$textElem;
10807 var eventHooks = this.eventHooks; // click hooks
10808
10809 $textElem.on('click', function (e) {
10810 var clickEvents = eventHooks.clickEvents;
10811 (0, _forEach["default"])(clickEvents).call(clickEvents, function (fn) {
10812 return fn(e);
10813 });
10814 }); // enter 键 up 时的 hooks
10815
10816 $textElem.on('keyup', function (e) {
10817 if (e.keyCode !== 13) return;
10818 var enterUpEvents = eventHooks.enterUpEvents;
10819 (0, _forEach["default"])(enterUpEvents).call(enterUpEvents, function (fn) {
10820 return fn(e);
10821 });
10822 }); // 键盘 up 时的 hooks
10823
10824 $textElem.on('keyup', function (e) {
10825 var keyupEvents = eventHooks.keyupEvents;
10826 (0, _forEach["default"])(keyupEvents).call(keyupEvents, function (fn) {
10827 return fn(e);
10828 });
10829 }); // delete 键 up 时 hooks
10830
10831 $textElem.on('keyup', function (e) {
10832 if (e.keyCode !== 8) return;
10833 var deleteUpEvents = eventHooks.deleteUpEvents;
10834 (0, _forEach["default"])(deleteUpEvents).call(deleteUpEvents, function (fn) {
10835 return fn(e);
10836 });
10837 }); // delete 键 down 时 hooks
10838
10839 $textElem.on('keydown', function (e) {
10840 if (e.keyCode !== 8) return;
10841 var deleteDownEvents = eventHooks.deleteDownEvents;
10842 (0, _forEach["default"])(deleteDownEvents).call(deleteDownEvents, function (fn) {
10843 return fn(e);
10844 });
10845 }); // 粘贴
10846
10847 $textElem.on('paste', function (e) {
10848 if (util_1.UA.isIE()) return; // IE 不支持
10849 // 阻止默认行为,使用 execCommand 的粘贴命令
10850
10851 e.preventDefault();
10852 var pasteEvents = eventHooks.pasteEvents;
10853 (0, _forEach["default"])(pasteEvents).call(pasteEvents, function (fn) {
10854 return fn(e);
10855 });
10856 }); // 撤销/恢复 快捷键
10857
10858 $textElem.on('keydown', function (e) {
10859 if ( // 编辑器处于聚焦状态下(多编辑器实例) || 当前处于兼容模式(兼容模式撤销/恢复后不聚焦,所以直接过,但会造成多编辑器同时撤销/恢复)
10860 (editor.isFocus || editor.isCompatibleMode) && (e.ctrlKey || e.metaKey) && e.keyCode === 90) {
10861 // 取消默认行为
10862 e.preventDefault(); // 执行事件
10863
10864 if (e.shiftKey) {
10865 // 恢复
10866 editor.history.restore();
10867 } else {
10868 // 撤销
10869 editor.history.revoke();
10870 }
10871 }
10872 }); // tab up
10873
10874 $textElem.on('keyup', function (e) {
10875 if (e.keyCode !== 9) return;
10876 e.preventDefault();
10877 var tabUpEvents = eventHooks.tabUpEvents;
10878 (0, _forEach["default"])(tabUpEvents).call(tabUpEvents, function (fn) {
10879 return fn(e);
10880 });
10881 }); // tab down
10882
10883 $textElem.on('keydown', function (e) {
10884 if (e.keyCode !== 9) return;
10885 e.preventDefault();
10886 var tabDownEvents = eventHooks.tabDownEvents;
10887 (0, _forEach["default"])(tabDownEvents).call(tabDownEvents, function (fn) {
10888 return fn(e);
10889 });
10890 }); // 文本编辑区域 滚动时触发
10891
10892 $textElem.on('scroll', // 使用节流
10893 util_1.throttle(function (e) {
10894 var textScrollEvents = eventHooks.textScrollEvents;
10895 (0, _forEach["default"])(textScrollEvents).call(textScrollEvents, function (fn) {
10896 return fn(e);
10897 });
10898 }, 100)); // 拖拽相关的事件
10899
10900 function preventDefault(e) {
10901 // 禁用 document 拖拽事件
10902 e.preventDefault();
10903 }
10904
10905 dom_core_1["default"](document).on('dragleave', preventDefault).on('drop', preventDefault).on('dragenter', preventDefault).on('dragover', preventDefault); // 全局事件在编辑器实例销毁的时候进行解绑
10906
10907 editor.beforeDestroy(function () {
10908 dom_core_1["default"](document).off('dragleave', preventDefault).off('drop', preventDefault).off('dragenter', preventDefault).off('dragover', preventDefault);
10909 });
10910 $textElem.on('drop', function (e) {
10911 e.preventDefault();
10912 var events = eventHooks.dropEvents;
10913 (0, _forEach["default"])(events).call(events, function (fn) {
10914 return fn(e);
10915 });
10916 }); // link click
10917
10918 $textElem.on('click', function (e) {
10919 // 存储链接元素
10920 var $link = null;
10921 var target = e.target;
10922 var $target = dom_core_1["default"](target);
10923
10924 if ($target.getNodeName() === 'A') {
10925 // 当前点击的就是一个链接
10926 $link = $target;
10927 } else {
10928 // 否则,向父节点中寻找链接
10929 var $parent = $target.parentUntil('a');
10930
10931 if ($parent != null) {
10932 // 找到了
10933 $link = $parent;
10934 }
10935 }
10936
10937 if (!$link) return; // 没有点击链接,则返回
10938
10939 var linkClickEvents = eventHooks.linkClickEvents;
10940 (0, _forEach["default"])(linkClickEvents).call(linkClickEvents, function (fn) {
10941 return fn($link);
10942 });
10943 }); // img click
10944
10945 $textElem.on('click', function (e) {
10946 // 存储图片元素
10947 var $img = null;
10948 var target = e.target;
10949 var $target = dom_core_1["default"](target); //处理图片点击 判断是否是表情 根据 不存在class或者className!==eleImg、没有alt属性
10950
10951 if ($target.getNodeName() === 'IMG' && (!$target.elems[0].getAttribute('class') || $target.elems[0].getAttribute('class') !== 'eleImg') && !$target.elems[0].getAttribute('alt')) {
10952 // 当前点击的就是img
10953 e.stopPropagation();
10954 $img = $target;
10955 }
10956
10957 if (!$img) return; // 没有点击图片,则返回
10958
10959 var imgClickEvents = eventHooks.imgClickEvents;
10960 (0, _forEach["default"])(imgClickEvents).call(imgClickEvents, function (fn) {
10961 return fn($img);
10962 });
10963 }); // code click
10964
10965 $textElem.on('click', function (e) {
10966 // 存储代码元素
10967 var $code = null;
10968 var target = e.target;
10969 var $target = dom_core_1["default"](target);
10970
10971 if ($target.getNodeName() === 'PRE') {
10972 // 当前点击的就是一个链接
10973 $code = $target;
10974 } else {
10975 // 否则,向父节点中寻找链接
10976 var $parent = $target.parentUntil('pre');
10977
10978 if ($parent !== null) {
10979 // 找到了
10980 $code = $parent;
10981 }
10982 }
10983
10984 if (!$code) return;
10985 var codeClickEvents = eventHooks.codeClickEvents;
10986 (0, _forEach["default"])(codeClickEvents).call(codeClickEvents, function (fn) {
10987 return fn($code);
10988 });
10989 }); // splitLine click
10990
10991 $textElem.on('click', function (e) {
10992 // 存储分割线元素
10993 var $splitLine = null;
10994 var target = e.target;
10995 var $target = dom_core_1["default"](target); // 判断当前点击元素
10996
10997 if ($target.getNodeName() === 'HR') {
10998 $splitLine = $target;
10999 } else {
11000 $target == null;
11001 }
11002
11003 if (!$splitLine) return; // 没有点击分割线,则返回
11004 // 设置、恢复选区
11005
11006 editor.selection.createRangeByElem($splitLine);
11007 editor.selection.restoreSelection();
11008 var splitLineClickEvents = eventHooks.splitLineEvents;
11009 (0, _forEach["default"])(splitLineClickEvents).call(splitLineClickEvents, function (fn) {
11010 return fn($splitLine);
11011 });
11012 }); // 菜单栏被点击
11013
11014 editor.$toolbarElem.on('click', function (e) {
11015 var toolbarClickEvents = eventHooks.toolbarClickEvents;
11016 (0, _forEach["default"])(toolbarClickEvents).call(toolbarClickEvents, function (fn) {
11017 return fn(e);
11018 });
11019 }); //mousedown事件
11020
11021 editor.$textContainerElem.on('mousedown', function (e) {
11022 var target = e.target;
11023 var $target = dom_core_1["default"](target);
11024
11025 if ($target.hasClass('w-e-img-drag-rb')) {
11026 // 点击的元素,是图片拖拽调整大小的 bar
11027 var imgDragBarMouseDownEvents = eventHooks.imgDragBarMouseDownEvents;
11028 (0, _forEach["default"])(imgDragBarMouseDownEvents).call(imgDragBarMouseDownEvents, function (fn) {
11029 return fn();
11030 });
11031 }
11032 }); //table click
11033
11034 $textElem.on('click', function (e) {
11035 // 存储元素
11036 var $dom = null;
11037 var target = e.target; //获取最祖父元素
11038
11039 $dom = dom_core_1["default"](target).parentUntil('TABLE', target); // 没有table范围内,则返回
11040
11041 if (!$dom) return;
11042 var tableClickEvents = eventHooks.tableClickEvents;
11043 (0, _forEach["default"])(tableClickEvents).call(tableClickEvents, function (fn) {
11044 return fn($dom);
11045 });
11046 }); // enter 键 down
11047
11048 $textElem.on('keydown', function (e) {
11049 if (e.keyCode !== 13) return;
11050 var enterDownEvents = eventHooks.enterDownEvents;
11051 (0, _forEach["default"])(enterDownEvents).call(enterDownEvents, function (fn) {
11052 return fn(e);
11053 });
11054 });
11055 };
11056
11057 return Text;
11058}();
11059
11060exports["default"] = Text;
11061
11062/***/ }),
11063/* 281 */
11064/***/ (function(module, exports, __webpack_require__) {
11065
11066var parent = __webpack_require__(282);
11067
11068module.exports = parent;
11069
11070
11071/***/ }),
11072/* 282 */
11073/***/ (function(module, exports, __webpack_require__) {
11074
11075var find = __webpack_require__(283);
11076
11077var ArrayPrototype = Array.prototype;
11078
11079module.exports = function (it) {
11080 var own = it.find;
11081 return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.find) ? find : own;
11082};
11083
11084
11085/***/ }),
11086/* 283 */
11087/***/ (function(module, exports, __webpack_require__) {
11088
11089__webpack_require__(284);
11090var entryVirtual = __webpack_require__(18);
11091
11092module.exports = entryVirtual('Array').find;
11093
11094
11095/***/ }),
11096/* 284 */
11097/***/ (function(module, exports, __webpack_require__) {
11098
11099"use strict";
11100
11101var $ = __webpack_require__(4);
11102var $find = __webpack_require__(42).find;
11103var addToUnscopables = __webpack_require__(84);
11104var arrayMethodUsesToLength = __webpack_require__(27);
11105
11106var FIND = 'find';
11107var SKIPS_HOLES = true;
11108
11109var USES_TO_LENGTH = arrayMethodUsesToLength(FIND);
11110
11111// Shouldn't skip holes
11112if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
11113
11114// `Array.prototype.find` method
11115// https://tc39.github.io/ecma262/#sec-array.prototype.find
11116$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
11117 find: function find(callbackfn /* , that = undefined */) {
11118 return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
11119 }
11120});
11121
11122// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
11123addToUnscopables(FIND);
11124
11125
11126/***/ }),
11127/* 285 */
11128/***/ (function(module, exports, __webpack_require__) {
11129
11130"use strict";
11131
11132/**
11133 * @description Text 事件钩子函数。Text 公共的,不是某个菜单独有的
11134 * @wangfupeng
11135 */
11136
11137var _interopRequireDefault = __webpack_require__(0);
11138
11139var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11140
11141var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
11142 return mod && mod.__esModule ? mod : {
11143 "default": mod
11144 };
11145};
11146
11147(0, _defineProperty["default"])(exports, "__esModule", {
11148 value: true
11149});
11150
11151var enter_to_create_p_1 = __importDefault(__webpack_require__(286));
11152
11153var del_to_keep_p_1 = __importDefault(__webpack_require__(287));
11154
11155var tab_to_space_1 = __importDefault(__webpack_require__(288));
11156
11157var paste_text_html_1 = __importDefault(__webpack_require__(289));
11158
11159var img_click_active_1 = __importDefault(__webpack_require__(296));
11160/**
11161 * 初始化 text 事件钩子函数
11162 * @param text text 实例
11163 */
11164
11165
11166function initTextHooks(text) {
11167 var editor = text.editor;
11168 var eventHooks = text.eventHooks; // 回车时,保证生成的是 <p> 标签
11169
11170 enter_to_create_p_1["default"](editor, eventHooks.enterUpEvents, eventHooks.enterDownEvents); // 删除时,保留 <p><br></p>
11171
11172 del_to_keep_p_1["default"](editor, eventHooks.deleteUpEvents, eventHooks.deleteDownEvents); // tab 转换为空格
11173
11174 tab_to_space_1["default"](editor, eventHooks.tabDownEvents); // 粘贴 text html
11175
11176 paste_text_html_1["default"](editor, eventHooks.pasteEvents); // img click active
11177
11178 img_click_active_1["default"](editor, eventHooks.imgClickEvents);
11179}
11180
11181exports["default"] = initTextHooks;
11182
11183/***/ }),
11184/* 286 */
11185/***/ (function(module, exports, __webpack_require__) {
11186
11187"use strict";
11188
11189/**
11190 * @description 回车时,保证生成的是 <p> 标签
11191 * @author wangfupeng
11192 */
11193
11194var _interopRequireDefault = __webpack_require__(0);
11195
11196var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11197
11198var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
11199 return mod && mod.__esModule ? mod : {
11200 "default": mod
11201 };
11202};
11203
11204(0, _defineProperty["default"])(exports, "__esModule", {
11205 value: true
11206});
11207
11208var dom_core_1 = __importDefault(__webpack_require__(2));
11209/**
11210 * 回车时,保证生成的是 <p> 标签
11211 * @param editor 编辑器实例
11212 * @param enterUpEvents enter 键 up 时的 hooks
11213 * @param enterDownEvents enter 键 down 时的 hooks
11214 */
11215
11216
11217function enterToCreateP(editor, enterUpEvents, enterDownEvents) {
11218 function insertEmptyP($selectionElem) {
11219 var $p = dom_core_1["default"]('<p><br></p>');
11220 $p.insertBefore($selectionElem);
11221 editor.selection.createRangeByElem($p, true);
11222 editor.selection.restoreSelection();
11223 $selectionElem.remove();
11224 } // enter up 时
11225
11226
11227 function fn() {
11228 var $textElem = editor.$textElem;
11229 var $selectionElem = editor.selection.getSelectionContainerElem();
11230 var $parentElem = $selectionElem.parent();
11231
11232 if ($parentElem.html() === '<code><br></code>') {
11233 // 回车之前光标所在一个 <p><code>.....</code></p> ,忽然回车生成一个空的 <p><code><br></code></p>
11234 // 而且继续回车跳不出去,因此只能特殊处理
11235 insertEmptyP($selectionElem);
11236 return;
11237 }
11238
11239 if (!$parentElem.equal($textElem)) {
11240 // 不是顶级标签
11241 return;
11242 }
11243
11244 var nodeName = $selectionElem.getNodeName();
11245
11246 if (nodeName === 'P') {
11247 // 当前的标签是 P ,不用做处理
11248 return;
11249 }
11250
11251 if ($selectionElem.text()) {
11252 // 有内容,不做处理
11253 return;
11254 } // 插入 <p> ,并将选取定位到 <p>,删除当前标签
11255
11256
11257 insertEmptyP($selectionElem);
11258 }
11259
11260 enterUpEvents.push(fn); // enter down 时
11261
11262 function createPWhenEnterText(e) {
11263 var _a; // selection中的range缓存还有问题,更新不及时,此处手动更新range,处理enter的bug
11264
11265
11266 editor.selection.saveRange((_a = getSelection()) === null || _a === void 0 ? void 0 : _a.getRangeAt(0));
11267 var $selectElem = editor.selection.getSelectionContainerElem();
11268
11269 if ($selectElem.id === editor.textElemId) {
11270 // 回车时,默认创建了 text 标签(没有 p 标签包裹),父元素直接就是 $textElem
11271 // 例如,光标放在 table 最后侧,回车时,默认就是这个情况
11272 e.preventDefault();
11273 editor.cmd["do"]('insertHTML', '<p><br></p>');
11274 }
11275 }
11276
11277 enterDownEvents.push(createPWhenEnterText);
11278}
11279
11280exports["default"] = enterToCreateP;
11281
11282/***/ }),
11283/* 287 */
11284/***/ (function(module, exports, __webpack_require__) {
11285
11286"use strict";
11287
11288/**
11289 * @description 删除时保留 <p><br></p>
11290 * @author wangfupeng
11291 */
11292
11293var _interopRequireDefault = __webpack_require__(0);
11294
11295var _trim = _interopRequireDefault(__webpack_require__(21));
11296
11297var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11298
11299var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
11300 return mod && mod.__esModule ? mod : {
11301 "default": mod
11302 };
11303};
11304
11305(0, _defineProperty["default"])(exports, "__esModule", {
11306 value: true
11307});
11308
11309var dom_core_1 = __importDefault(__webpack_require__(2));
11310/**
11311 * 删除时保留 <p><br></p>
11312 * @param editor 编辑器实例
11313 * @param deleteUpEvents delete 键 up 时的 hooks
11314 * @param deleteDownEvents delete 建 down 时的 hooks
11315 */
11316
11317
11318function deleteToKeepP(editor, deleteUpEvents, deleteDownEvents) {
11319 function upFn() {
11320 var _context;
11321
11322 var $textElem = editor.$textElem;
11323 var txtHtml = (0, _trim["default"])(_context = $textElem.html().toLowerCase()).call(_context); // firefox 时用 txtHtml === '<br>' 判断,其他用 !txtHtml 判断
11324
11325 if (!txtHtml || txtHtml === '<br>') {
11326 // 内容空了
11327 var $p = dom_core_1["default"]('<p><br/></p>');
11328 $textElem.html(' '); // 一定要先清空,否则在 firefox 下有问题
11329
11330 $textElem.append($p);
11331 editor.selection.createRangeByElem($p, false, true);
11332 editor.selection.restoreSelection(); // 设置折叠后的光标位置,在firebox等浏览器下
11333 // 光标设置在end位置会自动换行
11334
11335 editor.selection.moveCursor($p.getNode(), true);
11336 }
11337 }
11338
11339 deleteUpEvents.push(upFn);
11340
11341 function downFn(e) {
11342 var _context2;
11343
11344 var $textElem = editor.$textElem;
11345 var txtHtml = (0, _trim["default"])(_context2 = $textElem.html().toLowerCase()).call(_context2);
11346
11347 if (txtHtml === '<p><br></p>') {
11348 // 最后剩下一个空行,就不再删除了
11349 e.preventDefault();
11350 return;
11351 }
11352 }
11353
11354 deleteDownEvents.push(downFn);
11355}
11356
11357exports["default"] = deleteToKeepP;
11358
11359/***/ }),
11360/* 288 */
11361/***/ (function(module, exports, __webpack_require__) {
11362
11363"use strict";
11364
11365/**
11366 * @description 编辑区域 tab 的特殊处理
11367 * @author wangfupeng
11368 */
11369
11370var _interopRequireDefault = __webpack_require__(0);
11371
11372var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11373
11374(0, _defineProperty["default"])(exports, "__esModule", {
11375 value: true
11376});
11377/**
11378 * 编辑区域 tab 的特殊处理,转换为空格
11379 * @param editor 编辑器实例
11380 * @param tabDownEvents tab down 事件钩子
11381 */
11382
11383function tabHandler(editor, tabDownEvents) {
11384 // 定义函数
11385 function fn() {
11386 if (!editor.cmd.queryCommandSupported('insertHTML')) {
11387 // 必须原生支持 insertHTML 命令
11388 return;
11389 }
11390
11391 var $selectionElem = editor.selection.getSelectionContainerElem();
11392
11393 if (!$selectionElem) {
11394 return;
11395 }
11396
11397 var $parentElem = $selectionElem.parent();
11398 var selectionNodeName = $selectionElem.getNodeName();
11399 var parentNodeName = $parentElem.getNodeName();
11400
11401 if (selectionNodeName == 'CODE' || parentNodeName === 'CODE' || parentNodeName === 'PRE' || /hljs/.test(parentNodeName)) {
11402 // <pre><code> 里面
11403 editor.cmd["do"]('insertHTML', editor.config.languageTab);
11404 } else {
11405 // 普通文字
11406 editor.cmd["do"]('insertHTML', '&nbsp;&nbsp;&nbsp;&nbsp;');
11407 }
11408 } // 保留函数
11409
11410
11411 tabDownEvents.push(fn);
11412}
11413
11414exports["default"] = tabHandler;
11415
11416/***/ }),
11417/* 289 */
11418/***/ (function(module, exports, __webpack_require__) {
11419
11420"use strict";
11421
11422/**
11423 * @description 粘贴 text html
11424 * @author wangfupeng
11425 */
11426
11427var _interopRequireDefault = __webpack_require__(0);
11428
11429var _trim = _interopRequireDefault(__webpack_require__(21));
11430
11431var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11432
11433(0, _defineProperty["default"])(exports, "__esModule", {
11434 value: true
11435});
11436
11437var paste_event_1 = __webpack_require__(122);
11438
11439var util_1 = __webpack_require__(7);
11440
11441var const_1 = __webpack_require__(31);
11442/**
11443 * 格式化html
11444 * @param val 粘贴的html
11445 * @author liuwei
11446 */
11447
11448
11449function formatHtml(val) {
11450 var pasteText = val; // div 全部替换为 p 标签
11451
11452 pasteText = pasteText.replace(/<div>/gim, '<p>').replace(/<\/div>/gim, '</p>'); // 不允许空行,放在最后
11453
11454 pasteText = pasteText.replace(/<p><\/p>/gim, '<p><br></p>'); // 去除''
11455
11456 return (0, _trim["default"])(pasteText).call(pasteText);
11457}
11458/**
11459 * 格式化html
11460 * @param val 粘贴的html
11461 * @author liuwei
11462 */
11463
11464
11465function formatCode(val) {
11466 var pasteText = val.replace(/<br>|<br\/>/gm, '\n').replace(/<[^>]+>/gm, '');
11467 return pasteText;
11468}
11469/**
11470 * 粘贴文本和 html
11471 * @param editor 编辑器对象
11472 * @param pasteEvents 粘贴事件列表
11473 */
11474
11475
11476function pasteTextHtml(editor, pasteEvents) {
11477 function fn(e) {
11478 // 获取配置
11479 var config = editor.config;
11480 var pasteFilterStyle = config.pasteFilterStyle;
11481 var pasteIgnoreImg = config.pasteIgnoreImg;
11482 var pasteTextHandle = config.pasteTextHandle; // 获取粘贴的文字
11483
11484 var pasteHtml = paste_event_1.getPasteHtml(e, pasteFilterStyle, pasteIgnoreImg);
11485 var pasteText = paste_event_1.getPasteText(e);
11486 pasteText = pasteText.replace(/\n/gm, '<br>'); // 当前选区所在的 DOM 节点
11487
11488 var $selectionElem = editor.selection.getSelectionContainerElem();
11489
11490 if (!$selectionElem) {
11491 return;
11492 }
11493
11494 var nodeName = $selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getNodeName();
11495 var $topElem = $selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getNodeTop(editor); // 当前节点顶级可能没有
11496
11497 var topNodeName = '';
11498
11499 if ($topElem.elems[0]) {
11500 topNodeName = $topElem === null || $topElem === void 0 ? void 0 : $topElem.getNodeName();
11501 } // code 中只能粘贴纯文本
11502
11503
11504 if (nodeName === 'CODE' || topNodeName === 'PRE') {
11505 if (pasteTextHandle && util_1.isFunction(pasteTextHandle)) {
11506 // 用户自定义过滤处理粘贴内容
11507 pasteText = '' + (pasteTextHandle(pasteText) || '');
11508 }
11509
11510 editor.cmd["do"]('insertHTML', formatCode(pasteText));
11511 return;
11512 } // 如果复制进来的是url链接则插入时将它转为链接
11513
11514
11515 if (const_1.urlRegex.test(pasteText)) {
11516 return editor.cmd["do"]('insertHTML', "<a href=\"" + pasteText + "\" target=\"_blank\">" + pasteText + "</a>");
11517 } // table 中(td、th),待开发。。。
11518
11519
11520 if (!pasteHtml) {
11521 return;
11522 }
11523
11524 try {
11525 // firefox 中,获取的 pasteHtml 可能是没有 <ul> 包裹的 <li>
11526 // 因此执行 insertHTML 会报错
11527 if (pasteTextHandle && util_1.isFunction(pasteTextHandle)) {
11528 // 用户自定义过滤处理粘贴内容
11529 pasteHtml = '' + (pasteTextHandle(pasteHtml) || ''); // html
11530 }
11531
11532 editor.cmd["do"]('insertHTML', "" + formatHtml(pasteHtml));
11533 } catch (ex) {
11534 // 此时使用 pasteText 来兼容一下
11535 if (pasteTextHandle && util_1.isFunction(pasteTextHandle)) {
11536 // 用户自定义过滤处理粘贴内容
11537 pasteText = '' + (pasteTextHandle(pasteText) || '');
11538 }
11539
11540 editor.cmd["do"]('insertHTML', "" + formatHtml(pasteText)); // text
11541 }
11542 }
11543
11544 pasteEvents.push(fn);
11545}
11546
11547exports["default"] = pasteTextHtml;
11548
11549/***/ }),
11550/* 290 */
11551/***/ (function(module, exports, __webpack_require__) {
11552
11553"use strict";
11554
11555/**
11556 * @description 将粘贴的 html 字符串,转换为正确、简洁的 html 代码。剔除不必要的标签和属性。
11557 * @author wangfupeng
11558 */
11559
11560var _interopRequireDefault = __webpack_require__(0);
11561
11562var _includes = _interopRequireDefault(__webpack_require__(111));
11563
11564var _forEach = _interopRequireDefault(__webpack_require__(6));
11565
11566var _trim = _interopRequireDefault(__webpack_require__(21));
11567
11568var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11569
11570var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
11571 return mod && mod.__esModule ? mod : {
11572 "default": mod
11573 };
11574};
11575
11576(0, _defineProperty["default"])(exports, "__esModule", {
11577 value: true
11578});
11579
11580var tags_1 = __webpack_require__(291);
11581
11582var simplehtmlparser_js_1 = __importDefault(__webpack_require__(295));
11583/**
11584 * 过滤掉空 span
11585 * @param html html
11586 */
11587
11588
11589function filterEmptySpan(html) {
11590 var regForReplace = /<span>.*?<\/span>/gi;
11591 var regForMatch = /<span>(.*?)<\/span>/;
11592 return html.replace(regForReplace, function (s) {
11593 // s 是单个 span ,如 <span>文字</span>
11594 var result = s.match(regForMatch);
11595 if (result == null) return '';
11596 return result[1];
11597 });
11598}
11599/**
11600 * 是否忽略标签
11601 * @param tag tag
11602 * @param ignoreImg 是否忽略 img 标签
11603 */
11604
11605
11606function isIgnoreTag(tag, ignoreImg) {
11607 var _context;
11608
11609 tag = (0, _trim["default"])(_context = tag.toLowerCase()).call(_context); // 忽略的标签
11610
11611 if (tags_1.IGNORE_TAGS.has(tag)) {
11612 return true;
11613 } // 是否忽略图片
11614
11615
11616 if (ignoreImg) {
11617 if (tag === 'img') {
11618 return true;
11619 }
11620 }
11621
11622 return false;
11623}
11624/**
11625 * 为 tag 生成 html 字符串,开始部分
11626 * @param tag tag
11627 * @param attrs 属性
11628 */
11629
11630
11631function genStartHtml(tag, attrs) {
11632 var result = ''; // tag < 符号
11633
11634 result = "<" + tag; // 拼接属性
11635
11636 var attrStrArr = [];
11637 (0, _forEach["default"])(attrs).call(attrs, function (attr) {
11638 attrStrArr.push(attr.name + "=\"" + attr.value + "\"");
11639 });
11640
11641 if (attrStrArr.length > 0) {
11642 result = result + ' ' + attrStrArr.join(' ');
11643 } // tag > 符号
11644
11645
11646 var isEmpty = tags_1.EMPTY_TAGS.has(tag); // 没有子节点或文本的标签,如 img
11647
11648 result = result + (isEmpty ? '/' : '') + '>';
11649 return result;
11650}
11651/**
11652 * 为 tag 生成 html 字符串,结尾部分
11653 * @param tag tag
11654 */
11655
11656
11657function genEndHtml(tag) {
11658 return "</" + tag + ">";
11659}
11660/**
11661 * 处理粘贴的 html
11662 * @param html html 字符串
11663 * @param filterStyle 是否过滤 style 样式
11664 * @param ignoreImg 是否忽略 img 标签
11665 */
11666
11667
11668function parseHtml(html, filterStyle, ignoreImg) {
11669 if (filterStyle === void 0) {
11670 filterStyle = true;
11671 }
11672
11673 if (ignoreImg === void 0) {
11674 ignoreImg = false;
11675 }
11676
11677 var resultArr = []; // 存储结果,数组形式,最后再 join
11678 // 当前正在处理的标签,以及记录和清除的方法
11679
11680 var CUR_TAG = '';
11681
11682 function markTagStart(tag) {
11683 tag = (0, _trim["default"])(tag).call(tag);
11684 if (!tag) return;
11685 if (tags_1.EMPTY_TAGS.has(tag)) return; // 内容为空的标签,如 img ,不用记录
11686
11687 CUR_TAG = tag;
11688 }
11689
11690 function markTagEnd() {
11691 CUR_TAG = '';
11692 } // 能通过 'text/html' 格式获取 html
11693
11694
11695 var htmlParser = new simplehtmlparser_js_1["default"]();
11696 htmlParser.parse(html, {
11697 startElement: function startElement(tag, attrs) {
11698 // 首先,标记开始
11699 markTagStart(tag); // 忽略的标签
11700
11701 if (isIgnoreTag(tag, ignoreImg)) {
11702 return;
11703 } // 找出该标签必须的属性(其他的属性忽略)
11704
11705
11706 var necessaryAttrKeys = tags_1.NECESSARY_ATTRS.get(tag) || [];
11707 var attrsForTag = [];
11708 (0, _forEach["default"])(attrs).call(attrs, function (attr) {
11709 // 属性名
11710 var name = attr.name; // style 单独处理
11711
11712 if (name === 'style') {
11713 // 保留 style 样式
11714 if (!filterStyle) {
11715 attrsForTag.push(attr);
11716 }
11717
11718 return;
11719 } // 除了 style 之外的其他属性
11720
11721
11722 if ((0, _includes["default"])(necessaryAttrKeys).call(necessaryAttrKeys, name) === false) {
11723 // 不是必须的属性,忽略
11724 return;
11725 }
11726
11727 attrsForTag.push(attr);
11728 }); // 拼接为 HTML 标签
11729
11730 var html = genStartHtml(tag, attrsForTag);
11731 resultArr.push(html);
11732 },
11733 characters: function characters(str) {
11734 str = (0, _trim["default"])(str).call(str);
11735 if (!str) return; // 忽略的标签
11736 // 如果复制拿到的内容是 `<body><html>这种形式无法成功粘贴</html></body>`
11737
11738 if (isIgnoreTag(CUR_TAG, ignoreImg) && /^</.test(str)) {
11739 return;
11740 }
11741
11742 resultArr.push(str);
11743 },
11744 endElement: function endElement(tag) {
11745 // 忽略的标签
11746 if (isIgnoreTag(tag, ignoreImg)) {
11747 return;
11748 } // 拼接为 HTML 标签
11749
11750
11751 var html = genEndHtml(tag);
11752 resultArr.push(html); // 最后,标记结束
11753
11754 markTagEnd();
11755 },
11756 comment: function comment(str) {
11757 /* 注释,不做处理 */
11758 }
11759 });
11760 var result = resultArr.join(''); // 转换为字符串
11761 // 过滤掉空 span 标签
11762
11763 result = filterEmptySpan(result);
11764 return result;
11765}
11766
11767exports["default"] = parseHtml;
11768
11769/***/ }),
11770/* 291 */
11771/***/ (function(module, exports, __webpack_require__) {
11772
11773"use strict";
11774
11775/**
11776 * @description 粘贴相关的 tags
11777 * @author wangfupeng
11778 */
11779
11780var _interopRequireDefault = __webpack_require__(0);
11781
11782var _map = _interopRequireDefault(__webpack_require__(112));
11783
11784var _set = _interopRequireDefault(__webpack_require__(123));
11785
11786var _defineProperty = _interopRequireDefault(__webpack_require__(1));
11787
11788(0, _defineProperty["default"])(exports, "__esModule", {
11789 value: true
11790});
11791exports.TOP_LEVEL_TAGS = exports.EMPTY_TAGS = exports.NECESSARY_ATTRS = exports.IGNORE_TAGS = void 0; // 忽略的标签
11792
11793exports.IGNORE_TAGS = new _set["default"](['doctype', '!doctype', 'html', 'head', 'meta', 'body', 'script', 'style', 'link', 'frame', 'iframe', 'title', 'svg', 'center']); // 指定标签必要的属性
11794
11795exports.NECESSARY_ATTRS = new _map["default"]([['img', ['src', 'alt']], ['a', ['href', 'target']], ['td', ['colspan', 'rowspan']], ['th', ['colspan', 'rowspan']]]); // 没有子节点或文本的标签
11796
11797exports.EMPTY_TAGS = new _set["default"](['area', 'base', 'basefont', 'br', 'col', 'hr', 'img', 'input', 'isindex', 'embed']); // 编辑区域顶级节点
11798
11799exports.TOP_LEVEL_TAGS = new _set["default"](['h1', 'h2', 'h3', 'h4', 'h5', 'p', 'ul', 'ol', 'table', 'blockquote', 'pre', 'hr', 'form']);
11800
11801/***/ }),
11802/* 292 */
11803/***/ (function(module, exports, __webpack_require__) {
11804
11805var parent = __webpack_require__(293);
11806
11807module.exports = parent;
11808
11809
11810/***/ }),
11811/* 293 */
11812/***/ (function(module, exports, __webpack_require__) {
11813
11814__webpack_require__(294);
11815__webpack_require__(62);
11816__webpack_require__(64);
11817__webpack_require__(50);
11818var path = __webpack_require__(10);
11819
11820module.exports = path.Set;
11821
11822
11823/***/ }),
11824/* 294 */
11825/***/ (function(module, exports, __webpack_require__) {
11826
11827"use strict";
11828
11829var collection = __webpack_require__(113);
11830var collectionStrong = __webpack_require__(115);
11831
11832// `Set` constructor
11833// https://tc39.github.io/ecma262/#sec-set-objects
11834module.exports = collection('Set', function (init) {
11835 return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
11836}, collectionStrong);
11837
11838
11839/***/ }),
11840/* 295 */
11841/***/ (function(module, exports) {
11842
11843// Copyright 2004 Erik Arvidsson. All Rights Reserved.
11844//
11845// This code is triple licensed using Apache Software License 2.0,
11846// Mozilla Public License or GNU Public License
11847//
11848///////////////////////////////////////////////////////////////////////////////
11849//
11850// Licensed under the Apache License, Version 2.0 (the "License"); you may not
11851// use this file except in compliance with the License. You may obtain a copy
11852// of the License at http://www.apache.org/licenses/LICENSE-2.0
11853//
11854///////////////////////////////////////////////////////////////////////////////
11855//
11856// The contents of this file are subject to the Mozilla Public License
11857// Version 1.1 (the "License"); you may not use this file except in
11858// compliance with the License. You may obtain a copy of the License at
11859// http://www.mozilla.org/MPL/
11860//
11861// Software distributed under the License is distributed on an "AS IS"
11862// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11863// License for the specific language governing rights and limitations
11864// under the License.
11865//
11866// The Original Code is Simple HTML Parser.
11867//
11868// The Initial Developer of the Original Code is Erik Arvidsson.
11869// Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights
11870// Reserved.
11871//
11872///////////////////////////////////////////////////////////////////////////////
11873//
11874// This program is free software; you can redistribute it and/or
11875// modify it under the terms of the GNU General Public License
11876// as published by the Free Software Foundation; either version 2
11877// of the License, or (at your option) any later version.
11878//
11879// This program is distributed in the hope that it will be useful,
11880// but WITHOUT ANY WARRANTY; without even the implied warranty of
11881// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11882// GNU General Public License for more details.
11883//
11884// You should have received a copy of the GNU General Public License
11885// along with this program; if not, write to the Free Software
11886// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
11887//
11888///////////////////////////////////////////////////////////////////////////////
11889
11890/*
11891var handler ={
11892 startElement: function (sTagName, oAttrs) {},
11893 endElement: function (sTagName) {},
11894 characters: function (s) {},
11895 comment: function (s) {}
11896};
11897*/
11898
11899function SimpleHtmlParser() {}
11900
11901SimpleHtmlParser.prototype = {
11902 handler: null,
11903
11904 // regexps
11905
11906 startTagRe: /^<([^>\s\/]+)((\s+[^=>\s]+(\s*=\s*((\"[^"]*\")|(\'[^']*\')|[^>\s]+))?)*)\s*\/?\s*>/m,
11907 endTagRe: /^<\/([^>\s]+)[^>]*>/m,
11908 attrRe: /([^=\s]+)(\s*=\s*((\"([^"]*)\")|(\'([^']*)\')|[^>\s]+))?/gm,
11909
11910 parse: function (s, oHandler) {
11911 if (oHandler) this.contentHandler = oHandler
11912
11913 var i = 0
11914 var res, lc, lm, rc, index
11915 var treatAsChars = false
11916 var oThis = this
11917 while (s.length > 0) {
11918 // Comment
11919 if (s.substring(0, 4) == '<!--') {
11920 index = s.indexOf('-->')
11921 if (index != -1) {
11922 this.contentHandler.comment(s.substring(4, index))
11923 s = s.substring(index + 3)
11924 treatAsChars = false
11925 } else {
11926 treatAsChars = true
11927 }
11928 }
11929
11930 // end tag
11931 else if (s.substring(0, 2) == '</') {
11932 if (this.endTagRe.test(s)) {
11933 lc = RegExp.leftContext
11934 lm = RegExp.lastMatch
11935 rc = RegExp.rightContext
11936
11937 lm.replace(this.endTagRe, function () {
11938 return oThis.parseEndTag.apply(oThis, arguments)
11939 })
11940
11941 s = rc
11942 treatAsChars = false
11943 } else {
11944 treatAsChars = true
11945 }
11946 }
11947 // start tag
11948 else if (s.charAt(0) == '<') {
11949 if (this.startTagRe.test(s)) {
11950 lc = RegExp.leftContext
11951 lm = RegExp.lastMatch
11952 rc = RegExp.rightContext
11953
11954 lm.replace(this.startTagRe, function () {
11955 return oThis.parseStartTag.apply(oThis, arguments)
11956 })
11957
11958 s = rc
11959 treatAsChars = false
11960 } else {
11961 treatAsChars = true
11962 }
11963 }
11964
11965 if (treatAsChars) {
11966 index = s.indexOf('<')
11967 if (index == -1) {
11968 this.contentHandler.characters(s)
11969 s = ''
11970 } else {
11971 this.contentHandler.characters(s.substring(0, index))
11972 s = s.substring(index)
11973 }
11974 }
11975
11976 treatAsChars = true
11977 }
11978 },
11979
11980 parseStartTag: function (sTag, sTagName, sRest) {
11981 var attrs = this.parseAttributes(sTagName, sRest)
11982 this.contentHandler.startElement(sTagName, attrs)
11983 },
11984
11985 parseEndTag: function (sTag, sTagName) {
11986 this.contentHandler.endElement(sTagName)
11987 },
11988
11989 parseAttributes: function (sTagName, s) {
11990 var oThis = this
11991 var attrs = []
11992 s.replace(this.attrRe, function (a0, a1, a2, a3, a4, a5, a6) {
11993 attrs.push(oThis.parseAttribute(sTagName, a0, a1, a2, a3, a4, a5, a6))
11994 })
11995 return attrs
11996 },
11997
11998 parseAttribute: function (sTagName, sAttribute, sName) {
11999 var value = ''
12000 if (arguments[7]) value = arguments[8]
12001 else if (arguments[5]) value = arguments[6]
12002 else if (arguments[3]) value = arguments[4]
12003
12004 var empty = !value && !arguments[3]
12005 return { name: sName, value: empty ? null : value }
12006 },
12007}
12008
12009// export default SimpleHtmlParser
12010module.exports = SimpleHtmlParser
12011
12012
12013/***/ }),
12014/* 296 */
12015/***/ (function(module, exports, __webpack_require__) {
12016
12017"use strict";
12018
12019/**
12020 * @description 图片点击后选区更新到img的位置
12021 * @author tonghan
12022 */
12023
12024var _interopRequireDefault = __webpack_require__(0);
12025
12026var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12027
12028(0, _defineProperty["default"])(exports, "__esModule", {
12029 value: true
12030});
12031/**
12032 * 图片点击后选区更新到img的位置
12033 * @param editor 编辑器实例
12034 * @param imgClickEvents delete 键 up 时的 hooks
12035 */
12036
12037function imgClickActive(editor, imgClickEvents) {
12038 function clickFn($img) {
12039 editor.selection.createRangeByElem($img);
12040 editor.selection.restoreSelection();
12041 }
12042
12043 imgClickEvents.push(clickFn);
12044}
12045
12046exports["default"] = imgClickActive;
12047
12048/***/ }),
12049/* 297 */
12050/***/ (function(module, exports, __webpack_require__) {
12051
12052"use strict";
12053
12054/**
12055 * @description 获取子元素的 JSON 格式数据
12056 * @author wangfupeng
12057 */
12058
12059var _interopRequireDefault = __webpack_require__(0);
12060
12061var _forEach = _interopRequireDefault(__webpack_require__(6));
12062
12063var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12064
12065var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12066 return mod && mod.__esModule ? mod : {
12067 "default": mod
12068 };
12069};
12070
12071(0, _defineProperty["default"])(exports, "__esModule", {
12072 value: true
12073});
12074
12075var util_1 = __webpack_require__(7);
12076
12077var dom_core_1 = __importDefault(__webpack_require__(2));
12078/**
12079 * 获取子元素的 JSON 格式数据
12080 * @param $elem DOM 节点
12081 */
12082
12083
12084function getChildrenJSON($elem) {
12085 var result = []; // 存储结果
12086
12087 var $children = $elem.childNodes() || []; // 注意 childNodes() 可以获取文本节点
12088
12089 (0, _forEach["default"])($children).call($children, function (curElem) {
12090 var elemResult;
12091 var nodeType = curElem.nodeType; // 文本节点
12092
12093 if (nodeType === 3) {
12094 elemResult = curElem.textContent || '';
12095 elemResult = util_1.replaceHtmlSymbol(elemResult);
12096 } // 普通 DOM 节点
12097
12098
12099 if (nodeType === 1) {
12100 elemResult = {};
12101 elemResult = elemResult; // tag
12102
12103 elemResult.tag = curElem.nodeName.toLowerCase(); // attr
12104
12105 var attrData = [];
12106 var attrList = curElem.attributes || [];
12107 var attrListLength = attrList.length || 0;
12108
12109 for (var i = 0; i < attrListLength; i++) {
12110 var attr = attrList[i];
12111 attrData.push({
12112 name: attr.name,
12113 value: attr.value
12114 });
12115 }
12116
12117 elemResult.attrs = attrData; // children(递归)
12118
12119 elemResult.children = getChildrenJSON(dom_core_1["default"](curElem));
12120 }
12121
12122 if (elemResult) {
12123 result.push(elemResult);
12124 }
12125 });
12126 return result;
12127}
12128
12129exports["default"] = getChildrenJSON;
12130
12131/***/ }),
12132/* 298 */
12133/***/ (function(module, exports, __webpack_require__) {
12134
12135"use strict";
12136
12137/**
12138 * @description 从nodeList json格式中遍历生成dom元素
12139 * @author zhengwenjian
12140 */
12141
12142var _interopRequireDefault = __webpack_require__(0);
12143
12144var _typeof2 = _interopRequireDefault(__webpack_require__(91));
12145
12146var _forEach = _interopRequireDefault(__webpack_require__(6));
12147
12148var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12149
12150var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12151 return mod && mod.__esModule ? mod : {
12152 "default": mod
12153 };
12154};
12155
12156(0, _defineProperty["default"])(exports, "__esModule", {
12157 value: true
12158});
12159
12160var dom_core_1 = __importDefault(__webpack_require__(2));
12161
12162function getHtmlByNodeList(nodeList, parent) {
12163 if (parent === void 0) {
12164 parent = document.createElement('div');
12165 } // 设置一个父节点存储所有子节点
12166
12167
12168 var root = parent; // 遍历节点JSON
12169
12170 (0, _forEach["default"])(nodeList).call(nodeList, function (item) {
12171 var elem; // 当为文本节点时
12172
12173 if (typeof item === 'string') {
12174 elem = document.createTextNode(item);
12175 } // 当为普通节点时
12176
12177
12178 if ((0, _typeof2["default"])(item) === 'object') {
12179 var _context;
12180
12181 elem = document.createElement(item.tag);
12182 (0, _forEach["default"])(_context = item.attrs).call(_context, function (attr) {
12183 dom_core_1["default"](elem).attr(attr.name, attr.value);
12184 }); // 有子节点时递归将子节点加入当前节点
12185
12186 if (item.children && item.children.length > 0) {
12187 getHtmlByNodeList(item.children, elem.getRootNode());
12188 }
12189 }
12190
12191 elem && root.appendChild(elem);
12192 });
12193 return dom_core_1["default"](root);
12194}
12195
12196exports["default"] = getHtmlByNodeList;
12197
12198/***/ }),
12199/* 299 */
12200/***/ (function(module, exports, __webpack_require__) {
12201
12202"use strict";
12203
12204/**
12205 * @description Menus 菜单栏 入口文件
12206 * @author wangfupeng
12207 */
12208
12209var _interopRequireDefault = __webpack_require__(0);
12210
12211var _bind = _interopRequireDefault(__webpack_require__(86));
12212
12213var _setTimeout2 = _interopRequireDefault(__webpack_require__(120));
12214
12215var _forEach = _interopRequireDefault(__webpack_require__(6));
12216
12217var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12218
12219var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12220 return mod && mod.__esModule ? mod : {
12221 "default": mod
12222 };
12223};
12224
12225(0, _defineProperty["default"])(exports, "__esModule", {
12226 value: true
12227});
12228
12229var menu_list_1 = __importDefault(__webpack_require__(300)); // import { MenuActive } from './menu-constructors/Menu'
12230
12231
12232var Menus =
12233/** @class */
12234function () {
12235 function Menus(editor) {
12236 this.editor = editor;
12237 this.menuList = [];
12238 this.constructorList = menu_list_1["default"]; // 所有菜单构造函数的列表
12239 }
12240 /**
12241 * 自定义添加菜单
12242 * @param key 菜单 key ,和 editor.config.menus 对应
12243 * @param Menu 菜单构造函数
12244 */
12245
12246
12247 Menus.prototype.extend = function (key, Menu) {
12248 if (!Menu || typeof Menu !== 'function') return;
12249 this.constructorList[key] = Menu;
12250 }; // 初始化菜单
12251
12252
12253 Menus.prototype.init = function () {
12254 var _context;
12255
12256 var _this = this; // 从用户配置的 menus 入手,看需要初始化哪些菜单
12257
12258
12259 var config = this.editor.config;
12260 (0, _forEach["default"])(_context = config.menus).call(_context, function (menuKey) {
12261 var MenuConstructor = _this.constructorList[menuKey]; // 暂用 any ,后面再替换
12262
12263 if (MenuConstructor == null || typeof MenuConstructor !== 'function') {
12264 // 必须是 class
12265 return;
12266 } // 创建 menu 实例,并放到 menuList 中
12267
12268
12269 var m = new MenuConstructor(_this.editor);
12270 m.key = menuKey;
12271
12272 _this.menuList.push(m);
12273 }); // 渲染 DOM
12274
12275 this._addToToolbar();
12276 }; // 添加到菜单栏
12277
12278
12279 Menus.prototype._addToToolbar = function () {
12280 var _context2;
12281
12282 var editor = this.editor;
12283 var $toolbarElem = editor.$toolbarElem; // 遍历添加到 DOM
12284
12285 (0, _forEach["default"])(_context2 = this.menuList).call(_context2, function (menu) {
12286 var $elem = menu.$elem;
12287
12288 if ($elem) {
12289 $toolbarElem.append($elem);
12290 }
12291 });
12292 };
12293 /**
12294 * 获取菜单对象
12295 * @param 菜单名称 小写
12296 * @return Menus 菜单对象
12297 */
12298
12299
12300 Menus.prototype.menuFind = function (key) {
12301 var menuList = this.menuList;
12302
12303 for (var i = 0, l = menuList.length; i < l; i++) {
12304 if (menuList[i].key === key) return menuList[i];
12305 }
12306
12307 return menuList[0];
12308 };
12309 /**
12310 * @description 修改菜单激活状态
12311 */
12312
12313
12314 Menus.prototype.changeActive = function () {
12315 var _context3;
12316
12317 (0, _forEach["default"])(_context3 = this.menuList).call(_context3, function (menu) {
12318 var _context4;
12319
12320 (0, _setTimeout2["default"])((0, _bind["default"])(_context4 = menu.tryChangeActive).call(_context4, menu), 100); // 暂用 any ,后面再替换
12321 });
12322 };
12323
12324 return Menus;
12325}();
12326
12327exports["default"] = Menus;
12328
12329/***/ }),
12330/* 300 */
12331/***/ (function(module, exports, __webpack_require__) {
12332
12333"use strict";
12334
12335/**
12336 * @description 所有菜单的构造函数
12337 * @author wangfupeng
12338 */
12339
12340var _interopRequireDefault = __webpack_require__(0);
12341
12342var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12343
12344var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12345 return mod && mod.__esModule ? mod : {
12346 "default": mod
12347 };
12348};
12349
12350(0, _defineProperty["default"])(exports, "__esModule", {
12351 value: true
12352});
12353
12354var index_1 = __importDefault(__webpack_require__(301));
12355
12356var index_2 = __importDefault(__webpack_require__(305));
12357
12358var index_3 = __importDefault(__webpack_require__(310));
12359
12360var index_4 = __importDefault(__webpack_require__(314));
12361
12362var index_5 = __importDefault(__webpack_require__(315));
12363
12364var index_6 = __importDefault(__webpack_require__(316));
12365
12366var index_7 = __importDefault(__webpack_require__(317));
12367
12368var font_size_1 = __importDefault(__webpack_require__(319));
12369
12370var index_8 = __importDefault(__webpack_require__(321));
12371
12372var index_9 = __importDefault(__webpack_require__(322));
12373
12374var index_10 = __importDefault(__webpack_require__(325));
12375
12376var index_11 = __importDefault(__webpack_require__(326));
12377
12378var index_12 = __importDefault(__webpack_require__(327));
12379
12380var index_13 = __importDefault(__webpack_require__(329));
12381
12382var index_14 = __importDefault(__webpack_require__(349));
12383
12384var index_15 = __importDefault(__webpack_require__(353));
12385
12386var index_16 = __importDefault(__webpack_require__(355));
12387
12388var index_17 = __importDefault(__webpack_require__(356));
12389
12390var index_18 = __importDefault(__webpack_require__(358));
12391
12392var index_19 = __importDefault(__webpack_require__(359));
12393
12394var index_20 = __importDefault(__webpack_require__(360));
12395
12396var code_1 = __importDefault(__webpack_require__(369));
12397
12398var index_21 = __importDefault(__webpack_require__(373));
12399
12400exports["default"] = {
12401 bold: index_1["default"],
12402 head: index_2["default"],
12403 italic: index_4["default"],
12404 link: index_3["default"],
12405 underline: index_5["default"],
12406 strikeThrough: index_6["default"],
12407 fontName: index_7["default"],
12408 fontSize: font_size_1["default"],
12409 justify: index_8["default"],
12410 quote: index_9["default"],
12411 backColor: index_10["default"],
12412 foreColor: index_11["default"],
12413 video: index_12["default"],
12414 image: index_13["default"],
12415 indent: index_14["default"],
12416 emoticon: index_15["default"],
12417 list: index_16["default"],
12418 lineHeight: index_17["default"],
12419 undo: index_18["default"],
12420 redo: index_19["default"],
12421 table: index_20["default"],
12422 code: code_1["default"],
12423 splitLine: index_21["default"]
12424};
12425
12426/***/ }),
12427/* 301 */
12428/***/ (function(module, exports, __webpack_require__) {
12429
12430"use strict";
12431
12432/**
12433 * @description 加粗
12434 * @author wangfupeng
12435 */
12436
12437var _interopRequireDefault = __webpack_require__(0);
12438
12439var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12440
12441var _create = _interopRequireDefault(__webpack_require__(3));
12442
12443var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
12444
12445var __extends = void 0 && (void 0).__extends || function () {
12446 var _extendStatics = function extendStatics(d, b) {
12447 _extendStatics = _setPrototypeOf["default"] || {
12448 __proto__: []
12449 } instanceof Array && function (d, b) {
12450 d.__proto__ = b;
12451 } || function (d, b) {
12452 for (var p in b) {
12453 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
12454 }
12455 };
12456
12457 return _extendStatics(d, b);
12458 };
12459
12460 return function (d, b) {
12461 _extendStatics(d, b);
12462
12463 function __() {
12464 this.constructor = d;
12465 }
12466
12467 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
12468 };
12469}();
12470
12471var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12472 return mod && mod.__esModule ? mod : {
12473 "default": mod
12474 };
12475};
12476
12477(0, _defineProperty["default"])(exports, "__esModule", {
12478 value: true
12479});
12480
12481var BtnMenu_1 = __importDefault(__webpack_require__(24));
12482
12483var dom_core_1 = __importDefault(__webpack_require__(2));
12484
12485var Bold =
12486/** @class */
12487function (_super) {
12488 __extends(Bold, _super);
12489
12490 function Bold(editor) {
12491 var _this = this;
12492
12493 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-bold\"></i>\n </div>");
12494 _this = _super.call(this, $elem, editor) || this;
12495 return _this;
12496 }
12497 /**
12498 * 点击事件
12499 */
12500
12501
12502 Bold.prototype.clickHandler = function () {
12503 var editor = this.editor;
12504 var isSelectEmpty = editor.selection.isSelectionEmpty();
12505
12506 if (isSelectEmpty) {
12507 // 选区范围是空的,插入并选中一个“空白”
12508 editor.selection.createEmptyRange();
12509 } // 执行 bold 命令
12510
12511
12512 editor.cmd["do"]('bold');
12513
12514 if (isSelectEmpty) {
12515 // 需要将选区范围折叠起来
12516 editor.selection.collapseRange();
12517 editor.selection.restoreSelection();
12518 }
12519 };
12520 /**
12521 * 尝试修改菜单激活状态
12522 */
12523
12524
12525 Bold.prototype.tryChangeActive = function () {
12526 var editor = this.editor;
12527
12528 if (editor.cmd.queryCommandState('bold')) {
12529 this.active();
12530 } else {
12531 this.unActive();
12532 }
12533 };
12534
12535 return Bold;
12536}(BtnMenu_1["default"]);
12537
12538exports["default"] = Bold;
12539
12540/***/ }),
12541/* 302 */
12542/***/ (function(module, exports, __webpack_require__) {
12543
12544var parent = __webpack_require__(303);
12545
12546module.exports = parent;
12547
12548
12549/***/ }),
12550/* 303 */
12551/***/ (function(module, exports, __webpack_require__) {
12552
12553__webpack_require__(304);
12554var path = __webpack_require__(10);
12555
12556module.exports = path.Object.setPrototypeOf;
12557
12558
12559/***/ }),
12560/* 304 */
12561/***/ (function(module, exports, __webpack_require__) {
12562
12563var $ = __webpack_require__(4);
12564var setPrototypeOf = __webpack_require__(75);
12565
12566// `Object.setPrototypeOf` method
12567// https://tc39.github.io/ecma262/#sec-object.setprototypeof
12568$({ target: 'Object', stat: true }, {
12569 setPrototypeOf: setPrototypeOf
12570});
12571
12572
12573/***/ }),
12574/* 305 */
12575/***/ (function(module, exports, __webpack_require__) {
12576
12577"use strict";
12578
12579/**
12580 * @description 标题
12581 * @author wangfupeng
12582 */
12583
12584var _interopRequireDefault = __webpack_require__(0);
12585
12586var _stringify = _interopRequireDefault(__webpack_require__(306));
12587
12588var _forEach = _interopRequireDefault(__webpack_require__(6));
12589
12590var _find = _interopRequireDefault(__webpack_require__(32));
12591
12592var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12593
12594var _create = _interopRequireDefault(__webpack_require__(3));
12595
12596var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
12597
12598var __extends = void 0 && (void 0).__extends || function () {
12599 var _extendStatics = function extendStatics(d, b) {
12600 _extendStatics = _setPrototypeOf["default"] || {
12601 __proto__: []
12602 } instanceof Array && function (d, b) {
12603 d.__proto__ = b;
12604 } || function (d, b) {
12605 for (var p in b) {
12606 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
12607 }
12608 };
12609
12610 return _extendStatics(d, b);
12611 };
12612
12613 return function (d, b) {
12614 _extendStatics(d, b);
12615
12616 function __() {
12617 this.constructor = d;
12618 }
12619
12620 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
12621 };
12622}();
12623
12624var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12625 return mod && mod.__esModule ? mod : {
12626 "default": mod
12627 };
12628};
12629
12630(0, _defineProperty["default"])(exports, "__esModule", {
12631 value: true
12632});
12633
12634var DropListMenu_1 = __importDefault(__webpack_require__(22));
12635
12636var dom_core_1 = __importDefault(__webpack_require__(2));
12637
12638var util_1 = __webpack_require__(7);
12639
12640var Head =
12641/** @class */
12642function (_super) {
12643 __extends(Head, _super);
12644
12645 function Head(editor) {
12646 var _this = this;
12647
12648 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-header"></i></div>');
12649 var dropListConf = {
12650 width: 100,
12651 title: '设置标题',
12652 type: 'list',
12653 list: [{
12654 $elem: dom_core_1["default"]('<h1>H1</h1>'),
12655 value: '<h1>'
12656 }, {
12657 $elem: dom_core_1["default"]('<h2>H2</h2>'),
12658 value: '<h2>'
12659 }, {
12660 $elem: dom_core_1["default"]('<h3>H3</h3>'),
12661 value: '<h3>'
12662 }, {
12663 $elem: dom_core_1["default"]('<h4>H4</h4>'),
12664 value: '<h4>'
12665 }, {
12666 $elem: dom_core_1["default"]('<h5>H5</h5>'),
12667 value: '<h5>'
12668 }, {
12669 $elem: dom_core_1["default"]("<p>" + editor.i18next.t('menus.dropListMenu.head.正文') + "</p>"),
12670 value: '<p>'
12671 }],
12672 clickHandler: function clickHandler(value) {
12673 // 注意 this 是指向当前的 Head 对象
12674 _this.command(value);
12675 }
12676 };
12677 _this = _super.call(this, $elem, editor, dropListConf) || this;
12678 var onCatalogChange = editor.config.onCatalogChange; // 未配置目录change监听回调时不运行下面操作
12679
12680 if (onCatalogChange) {
12681 _this.oldCatalogs = [];
12682
12683 _this.addListenerCatalog(); // 监听文本框编辑时的大纲信息
12684
12685
12686 _this.getCatalogs(); // 初始有值的情况获取一遍大纲信息
12687
12688 }
12689
12690 return _this;
12691 }
12692 /**
12693 * 执行命令
12694 * @param value value
12695 */
12696
12697
12698 Head.prototype.command = function (value) {
12699 var editor = this.editor;
12700 var $selectionElem = editor.selection.getSelectionContainerElem();
12701
12702 if ($selectionElem && editor.$textElem.equal($selectionElem)) {
12703 // 不能选中多行来设置标题,否则会出现问题
12704 // 例如选中的是 <p>xxx</p><p>yyy</p> 来设置标题,设置之后会成为 <h1>xxx<br>yyy</h1> 不符合预期
12705 return;
12706 }
12707
12708 editor.cmd["do"]('formatBlock', value); // 标题设置成功且不是<p>正文标签就配置大纲id
12709
12710 value !== '<p>' && this.addUidForSelectionElem();
12711 };
12712 /**
12713 * 为标题设置大纲
12714 */
12715
12716
12717 Head.prototype.addUidForSelectionElem = function () {
12718 var editor = this.editor;
12719 var tag = editor.selection.getSelectionContainerElem();
12720 var id = util_1.getRandomCode(); // 默认五位数id
12721
12722 dom_core_1["default"](tag).attr('id', id);
12723 };
12724 /**
12725 * 监听change事件来返回大纲信息
12726 */
12727
12728
12729 Head.prototype.addListenerCatalog = function () {
12730 var _this = this;
12731
12732 var editor = this.editor;
12733 editor.txt.eventHooks.changeEvents.push(function () {
12734 _this.getCatalogs();
12735 });
12736 };
12737 /**
12738 * 获取大纲数组
12739 */
12740
12741
12742 Head.prototype.getCatalogs = function () {
12743 var editor = this.editor;
12744 var $textElem = this.editor.$textElem;
12745 var onCatalogChange = editor.config.onCatalogChange;
12746 var elems = (0, _find["default"])($textElem).call($textElem, 'h1,h2,h3,h4,h5');
12747 var catalogs = [];
12748 (0, _forEach["default"])(elems).call(elems, function (elem, index) {
12749 var $elem = dom_core_1["default"](elem);
12750 var id = $elem.attr('id');
12751 var tag = $elem.getNodeName();
12752 var text = $elem.text();
12753
12754 if (!id) {
12755 id = util_1.getRandomCode();
12756 $elem.attr('id', id);
12757 } // 标题为空的情况不生成目录
12758
12759
12760 if (!text) return;
12761 catalogs.push({
12762 tag: tag,
12763 id: id,
12764 text: text
12765 });
12766 }); // 旧目录和新目录对比是否相等,不相等则运行回调并保存新目录到旧目录变量,以方便下一次对比
12767
12768 if ((0, _stringify["default"])(this.oldCatalogs) !== (0, _stringify["default"])(catalogs)) {
12769 this.oldCatalogs = catalogs;
12770 onCatalogChange && onCatalogChange(catalogs);
12771 }
12772 };
12773 /**
12774 * 尝试改变菜单激活(高亮)状态
12775 */
12776
12777
12778 Head.prototype.tryChangeActive = function () {
12779 var editor = this.editor;
12780 var reg = /^h/i;
12781 var cmdValue = editor.cmd.queryCommandValue('formatBlock');
12782
12783 if (reg.test(cmdValue)) {
12784 this.active();
12785 } else {
12786 this.unActive();
12787 }
12788 };
12789
12790 return Head;
12791}(DropListMenu_1["default"]);
12792
12793exports["default"] = Head;
12794
12795/***/ }),
12796/* 306 */
12797/***/ (function(module, exports, __webpack_require__) {
12798
12799module.exports = __webpack_require__(307);
12800
12801/***/ }),
12802/* 307 */
12803/***/ (function(module, exports, __webpack_require__) {
12804
12805var parent = __webpack_require__(308);
12806
12807module.exports = parent;
12808
12809
12810/***/ }),
12811/* 308 */
12812/***/ (function(module, exports, __webpack_require__) {
12813
12814__webpack_require__(309);
12815var core = __webpack_require__(10);
12816
12817if (!core.JSON) core.JSON = { stringify: JSON.stringify };
12818
12819// eslint-disable-next-line no-unused-vars
12820module.exports = function stringify(it, replacer, space) {
12821 return core.JSON.stringify.apply(null, arguments);
12822};
12823
12824
12825/***/ }),
12826/* 309 */
12827/***/ (function(module, exports, __webpack_require__) {
12828
12829var $ = __webpack_require__(4);
12830var getBuiltIn = __webpack_require__(26);
12831var fails = __webpack_require__(12);
12832
12833var $stringify = getBuiltIn('JSON', 'stringify');
12834var re = /[\uD800-\uDFFF]/g;
12835var low = /^[\uD800-\uDBFF]$/;
12836var hi = /^[\uDC00-\uDFFF]$/;
12837
12838var fix = function (match, offset, string) {
12839 var prev = string.charAt(offset - 1);
12840 var next = string.charAt(offset + 1);
12841 if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {
12842 return '\\u' + match.charCodeAt(0).toString(16);
12843 } return match;
12844};
12845
12846var FORCED = fails(function () {
12847 return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"'
12848 || $stringify('\uDEAD') !== '"\\udead"';
12849});
12850
12851if ($stringify) {
12852 // https://github.com/tc39/proposal-well-formed-stringify
12853 $({ target: 'JSON', stat: true, forced: FORCED }, {
12854 // eslint-disable-next-line no-unused-vars
12855 stringify: function stringify(it, replacer, space) {
12856 var result = $stringify.apply(null, arguments);
12857 return typeof result == 'string' ? result.replace(re, fix) : result;
12858 }
12859 });
12860}
12861
12862
12863/***/ }),
12864/* 310 */
12865/***/ (function(module, exports, __webpack_require__) {
12866
12867"use strict";
12868
12869/**
12870 * @description 链接 菜单
12871 * @author wangfupeng
12872 */
12873
12874var _interopRequireDefault = __webpack_require__(0);
12875
12876var _defineProperty = _interopRequireDefault(__webpack_require__(1));
12877
12878var _create = _interopRequireDefault(__webpack_require__(3));
12879
12880var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
12881
12882var __extends = void 0 && (void 0).__extends || function () {
12883 var _extendStatics = function extendStatics(d, b) {
12884 _extendStatics = _setPrototypeOf["default"] || {
12885 __proto__: []
12886 } instanceof Array && function (d, b) {
12887 d.__proto__ = b;
12888 } || function (d, b) {
12889 for (var p in b) {
12890 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
12891 }
12892 };
12893
12894 return _extendStatics(d, b);
12895 };
12896
12897 return function (d, b) {
12898 _extendStatics(d, b);
12899
12900 function __() {
12901 this.constructor = d;
12902 }
12903
12904 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
12905 };
12906}();
12907
12908var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12909 return mod && mod.__esModule ? mod : {
12910 "default": mod
12911 };
12912};
12913
12914(0, _defineProperty["default"])(exports, "__esModule", {
12915 value: true
12916});
12917
12918var PanelMenu_1 = __importDefault(__webpack_require__(33));
12919
12920var dom_core_1 = __importDefault(__webpack_require__(2));
12921
12922var create_panel_conf_1 = __importDefault(__webpack_require__(311));
12923
12924var is_active_1 = __importDefault(__webpack_require__(125));
12925
12926var Panel_1 = __importDefault(__webpack_require__(29));
12927
12928var index_1 = __importDefault(__webpack_require__(312));
12929
12930var Link =
12931/** @class */
12932function (_super) {
12933 __extends(Link, _super);
12934
12935 function Link(editor) {
12936 var _this = this;
12937
12938 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-link"></i></div>');
12939 _this = _super.call(this, $elem, editor) || this; // 绑定事件,如点击链接时,可以查看链接
12940
12941 index_1["default"](editor);
12942 return _this;
12943 }
12944 /**
12945 * 菜单点击事件
12946 */
12947
12948
12949 Link.prototype.clickHandler = function () {
12950 var editor = this.editor;
12951 var $linkElem;
12952
12953 if (this.isActive) {
12954 // 菜单被激活,说明选区在链接里
12955 $linkElem = editor.selection.getSelectionContainerElem();
12956
12957 if (!$linkElem) {
12958 return;
12959 } // 弹出 panel
12960
12961
12962 this.createPanel($linkElem.text(), $linkElem.attr('href'));
12963 } else {
12964 // 菜单未被激活,说明选区不在链接里
12965 if (editor.selection.isSelectionEmpty()) {
12966 // 选区是空的,未选中内容
12967 this.createPanel('', '');
12968 } else {
12969 // 选中内容了
12970 this.createPanel(editor.selection.getSelectionText(), '');
12971 }
12972 }
12973 };
12974 /**
12975 * 创建 panel
12976 * @param text 文本
12977 * @param link 链接
12978 */
12979
12980
12981 Link.prototype.createPanel = function (text, link) {
12982 var conf = create_panel_conf_1["default"](this.editor, text, link);
12983 var panel = new Panel_1["default"](this, conf);
12984 panel.create();
12985 };
12986 /**
12987 * 尝试修改菜单 active 状态
12988 */
12989
12990
12991 Link.prototype.tryChangeActive = function () {
12992 var editor = this.editor;
12993
12994 if (is_active_1["default"](editor)) {
12995 this.active();
12996 } else {
12997 this.unActive();
12998 }
12999 };
13000
13001 return Link;
13002}(PanelMenu_1["default"]);
13003
13004exports["default"] = Link;
13005
13006/***/ }),
13007/* 311 */
13008/***/ (function(module, exports, __webpack_require__) {
13009
13010"use strict";
13011
13012/**
13013 * @description link 菜单 panel tab 配置
13014 * @author wangfupeng
13015 */
13016
13017var _interopRequireDefault = __webpack_require__(0);
13018
13019var _trim = _interopRequireDefault(__webpack_require__(21));
13020
13021var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13022
13023var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13024 return mod && mod.__esModule ? mod : {
13025 "default": mod
13026 };
13027};
13028
13029(0, _defineProperty["default"])(exports, "__esModule", {
13030 value: true
13031});
13032
13033var util_1 = __webpack_require__(7);
13034
13035var dom_core_1 = __importDefault(__webpack_require__(2));
13036
13037var is_active_1 = __importDefault(__webpack_require__(125));
13038
13039function default_1(editor, text, link) {
13040 // panel 中需要用到的id
13041 var inputLinkId = util_1.getRandom('input-link');
13042 var inputTextId = util_1.getRandom('input-text');
13043 var btnOkId = util_1.getRandom('btn-ok');
13044 var btnDelId = util_1.getRandom('btn-del'); // 是否显示“取消链接”
13045
13046 var delBtnDisplay = is_active_1["default"](editor) ? 'inline-block' : 'none';
13047 var $selectedLink;
13048 /**
13049 * 选中整个链接元素
13050 */
13051
13052 function selectLinkElem() {
13053 if (!is_active_1["default"](editor)) return;
13054 var $linkElem = editor.selection.getSelectionContainerElem();
13055 if (!$linkElem) return;
13056 editor.selection.createRangeByElem($linkElem);
13057 editor.selection.restoreSelection();
13058 $selectedLink = $linkElem; // 赋值给函数内全局变量
13059 }
13060 /**
13061 * 插入链接
13062 * @param text 文字
13063 * @param link 链接
13064 */
13065
13066
13067 function insertLink(text, link) {
13068 if (is_active_1["default"](editor)) {
13069 // 选区处于链接中,则选中整个菜单,再执行 insertHTML
13070 selectLinkElem();
13071 editor.cmd["do"]('insertHTML', "<a href=\"" + link + "\" target=\"_blank\">" + text + "</a>");
13072 } else {
13073 // 选区未处于链接中,直接插入即可
13074 editor.cmd["do"]('insertHTML', "<a href=\"" + link + "\" target=\"_blank\">" + text + "</a>");
13075 }
13076 }
13077 /**
13078 * 取消链接
13079 */
13080
13081
13082 function delLink() {
13083 if (!is_active_1["default"](editor)) {
13084 return;
13085 } // 选中整个链接
13086
13087
13088 selectLinkElem(); // 用文本替换链接
13089
13090 var selectionText = $selectedLink.text();
13091 editor.cmd["do"]('insertHTML', '<span>' + selectionText + '</span>');
13092 }
13093 /**
13094 * 校验链接是否合法
13095 * @param link 链接
13096 */
13097
13098
13099 function checkLink(text, link) {
13100 //查看开发者自定义配置的返回值
13101 var check = editor.config.linkCheck(text, link);
13102
13103 if (check === undefined) {//用户未能通过开发者的校验,且开发者不希望编辑器提示用户
13104 } else if (check === true) {
13105 //用户通过了开发者的校验
13106 return true;
13107 } else {
13108 //用户未能通过开发者的校验,开发者希望我们提示这一字符串
13109 editor.config.customAlert(check, 'warning');
13110 }
13111
13112 return false;
13113 }
13114
13115 var conf = {
13116 width: 300,
13117 height: 0,
13118 // panel 中可包含多个 tab
13119 tabs: [{
13120 // tab 的标题
13121 title: editor.i18next.t('menus.panelMenus.link.链接'),
13122 // 模板
13123 tpl: "<div>\n <input\n id=\"" + inputTextId + "\"\n type=\"text\"\n class=\"block\"\n value=\"" + text + "\"\n placeholder=\"" + editor.i18next.t('menus.panelMenus.link.链接文字') + "\"/>\n </td>\n <input\n id=\"" + inputLinkId + "\"\n type=\"text\"\n class=\"block\"\n value=\"" + link + "\"\n placeholder=\"" + editor.i18next.t('如') + " https://...\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button id=\"" + btnOkId + "\" class=\"right\">\n " + editor.i18next.t('插入') + "\n </button>\n <button id=\"" + btnDelId + "\" class=\"gray right\" style=\"display:" + delBtnDisplay + "\">\n " + editor.i18next.t('menus.panelMenus.link.取消链接') + "\n </button>\n </div>\n </div>",
13124 // 事件绑定
13125 events: [// 插入链接
13126 {
13127 selector: '#' + btnOkId,
13128 type: 'click',
13129 fn: function fn() {
13130 var _context, _context2;
13131
13132 // 执行插入链接
13133 var $link = dom_core_1["default"]('#' + inputLinkId);
13134 var $text = dom_core_1["default"]('#' + inputTextId);
13135 var link = (0, _trim["default"])(_context = $link.val()).call(_context);
13136 var text = (0, _trim["default"])(_context2 = $text.val()).call(_context2); // 链接为空,则不插入
13137
13138 if (!link) return; // 文本为空,则用链接代替
13139
13140 if (!text) text = link; // 校验链接是否满足用户的规则,若不满足则不插入
13141
13142 if (!checkLink(text, link)) return;
13143 insertLink(text, link); // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
13144
13145 return true;
13146 }
13147 }, // 取消链接
13148 {
13149 selector: '#' + btnDelId,
13150 type: 'click',
13151 fn: function fn() {
13152 // 执行取消链接
13153 delLink(); // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
13154
13155 return true;
13156 }
13157 }]
13158 }]
13159 };
13160 return conf;
13161}
13162
13163exports["default"] = default_1;
13164
13165/***/ }),
13166/* 312 */
13167/***/ (function(module, exports, __webpack_require__) {
13168
13169"use strict";
13170
13171/**
13172 * @description 绑定链接元素的事件,入口
13173 * @author wangfupeng
13174 */
13175
13176var _interopRequireDefault = __webpack_require__(0);
13177
13178var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13179
13180var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13181 return mod && mod.__esModule ? mod : {
13182 "default": mod
13183 };
13184};
13185
13186(0, _defineProperty["default"])(exports, "__esModule", {
13187 value: true
13188});
13189
13190var tooltip_event_1 = __importDefault(__webpack_require__(313));
13191/**
13192 * 绑定事件
13193 * @param editor 编辑器实例
13194 */
13195
13196
13197function bindEvent(editor) {
13198 // tooltip 事件
13199 tooltip_event_1["default"](editor);
13200}
13201
13202exports["default"] = bindEvent;
13203
13204/***/ }),
13205/* 313 */
13206/***/ (function(module, exports, __webpack_require__) {
13207
13208"use strict";
13209
13210/**
13211 * @description tooltip 事件
13212 * @author wangfupeng
13213 */
13214
13215var _interopRequireDefault = __webpack_require__(0);
13216
13217var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13218
13219var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13220 return mod && mod.__esModule ? mod : {
13221 "default": mod
13222 };
13223};
13224
13225(0, _defineProperty["default"])(exports, "__esModule", {
13226 value: true
13227});
13228
13229var dom_core_1 = __importDefault(__webpack_require__(2));
13230
13231var Tooltip_1 = __importDefault(__webpack_require__(43));
13232/**
13233 * 生成 Tooltip 的显示隐藏函数
13234 */
13235
13236
13237function createShowHideFn(editor) {
13238 var tooltip;
13239 /**
13240 * 显示 tooltip
13241 * @param $link 链接元素
13242 */
13243
13244 function showLinkTooltip($link) {
13245 var conf = [{
13246 $elem: dom_core_1["default"]("<span>" + editor.i18next.t('menus.panelMenus.link.查看链接') + "</span>"),
13247 onClick: function onClick(editor, $link) {
13248 var link = $link.attr('href');
13249 window.open(link, '_target'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
13250
13251 return true;
13252 }
13253 }, {
13254 $elem: dom_core_1["default"]("<span>" + editor.i18next.t('menus.panelMenus.link.取消链接') + "</span>"),
13255 onClick: function onClick(editor, $link) {
13256 // 选中链接元素
13257 editor.selection.createRangeByElem($link);
13258 editor.selection.restoreSelection(); // 用文字,替换链接
13259
13260 var selectionText = $link.text();
13261 editor.cmd["do"]('insertHTML', '<span>' + selectionText + '</span>'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
13262
13263 return true;
13264 }
13265 }]; // 创建 tooltip
13266
13267 tooltip = new Tooltip_1["default"](editor, $link, conf);
13268 tooltip.create();
13269 }
13270 /**
13271 * 隐藏 tooltip
13272 */
13273
13274
13275 function hideLinkTooltip() {
13276 // 移除 tooltip
13277 if (tooltip) {
13278 tooltip.remove();
13279 tooltip = null;
13280 }
13281 }
13282
13283 return {
13284 showLinkTooltip: showLinkTooltip,
13285 hideLinkTooltip: hideLinkTooltip
13286 };
13287}
13288/**
13289 * 绑定 tooltip 事件
13290 * @param editor 编辑器实例
13291 */
13292
13293
13294function bindTooltipEvent(editor) {
13295 var _a = createShowHideFn(editor),
13296 showLinkTooltip = _a.showLinkTooltip,
13297 hideLinkTooltip = _a.hideLinkTooltip; // 点击链接元素是,显示 tooltip
13298
13299
13300 editor.txt.eventHooks.linkClickEvents.push(showLinkTooltip); // 点击其他地方,或者滚动时,隐藏 tooltip
13301
13302 editor.txt.eventHooks.clickEvents.push(hideLinkTooltip);
13303 editor.txt.eventHooks.keyupEvents.push(hideLinkTooltip);
13304 editor.txt.eventHooks.toolbarClickEvents.push(hideLinkTooltip);
13305 editor.txt.eventHooks.menuClickEvents.push(hideLinkTooltip);
13306 editor.txt.eventHooks.textScrollEvents.push(hideLinkTooltip);
13307}
13308
13309exports["default"] = bindTooltipEvent;
13310
13311/***/ }),
13312/* 314 */
13313/***/ (function(module, exports, __webpack_require__) {
13314
13315"use strict";
13316
13317/**
13318 * @description 斜体
13319 * @author liuwei
13320 */
13321
13322var _interopRequireDefault = __webpack_require__(0);
13323
13324var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13325
13326var _create = _interopRequireDefault(__webpack_require__(3));
13327
13328var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
13329
13330var __extends = void 0 && (void 0).__extends || function () {
13331 var _extendStatics = function extendStatics(d, b) {
13332 _extendStatics = _setPrototypeOf["default"] || {
13333 __proto__: []
13334 } instanceof Array && function (d, b) {
13335 d.__proto__ = b;
13336 } || function (d, b) {
13337 for (var p in b) {
13338 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
13339 }
13340 };
13341
13342 return _extendStatics(d, b);
13343 };
13344
13345 return function (d, b) {
13346 _extendStatics(d, b);
13347
13348 function __() {
13349 this.constructor = d;
13350 }
13351
13352 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
13353 };
13354}();
13355
13356var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13357 return mod && mod.__esModule ? mod : {
13358 "default": mod
13359 };
13360};
13361
13362(0, _defineProperty["default"])(exports, "__esModule", {
13363 value: true
13364});
13365
13366var BtnMenu_1 = __importDefault(__webpack_require__(24));
13367
13368var dom_core_1 = __importDefault(__webpack_require__(2));
13369
13370var Italic =
13371/** @class */
13372function (_super) {
13373 __extends(Italic, _super);
13374
13375 function Italic(editor) {
13376 var _this = this;
13377
13378 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-italic\"></i>\n </div>");
13379 _this = _super.call(this, $elem, editor) || this;
13380 return _this;
13381 }
13382 /**
13383 * 点击事件
13384 */
13385
13386
13387 Italic.prototype.clickHandler = function () {
13388 var editor = this.editor;
13389 var isSelectEmpty = editor.selection.isSelectionEmpty();
13390
13391 if (isSelectEmpty) {
13392 // 选区范围是空的,插入并选中一个“空白”
13393 editor.selection.createEmptyRange();
13394 } // 执行 italic 命令
13395
13396
13397 editor.cmd["do"]('italic');
13398
13399 if (isSelectEmpty) {
13400 // 需要将选区范围折叠起来
13401 editor.selection.collapseRange();
13402 editor.selection.restoreSelection();
13403 }
13404 };
13405 /**
13406 * 尝试修改菜单激活状态
13407 */
13408
13409
13410 Italic.prototype.tryChangeActive = function () {
13411 var editor = this.editor;
13412
13413 if (editor.cmd.queryCommandState('italic')) {
13414 this.active();
13415 } else {
13416 this.unActive();
13417 }
13418 };
13419
13420 return Italic;
13421}(BtnMenu_1["default"]);
13422
13423exports["default"] = Italic;
13424
13425/***/ }),
13426/* 315 */
13427/***/ (function(module, exports, __webpack_require__) {
13428
13429"use strict";
13430
13431/**
13432 * @description 下划线 underline
13433 * @author dyl
13434 *
13435 */
13436
13437var _interopRequireDefault = __webpack_require__(0);
13438
13439var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13440
13441var _create = _interopRequireDefault(__webpack_require__(3));
13442
13443var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
13444
13445var __extends = void 0 && (void 0).__extends || function () {
13446 var _extendStatics = function extendStatics(d, b) {
13447 _extendStatics = _setPrototypeOf["default"] || {
13448 __proto__: []
13449 } instanceof Array && function (d, b) {
13450 d.__proto__ = b;
13451 } || function (d, b) {
13452 for (var p in b) {
13453 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
13454 }
13455 };
13456
13457 return _extendStatics(d, b);
13458 };
13459
13460 return function (d, b) {
13461 _extendStatics(d, b);
13462
13463 function __() {
13464 this.constructor = d;
13465 }
13466
13467 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
13468 };
13469}();
13470
13471var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13472 return mod && mod.__esModule ? mod : {
13473 "default": mod
13474 };
13475};
13476
13477(0, _defineProperty["default"])(exports, "__esModule", {
13478 value: true
13479});
13480
13481var BtnMenu_1 = __importDefault(__webpack_require__(24));
13482
13483var dom_core_1 = __importDefault(__webpack_require__(2));
13484
13485var Underline =
13486/** @class */
13487function (_super) {
13488 __extends(Underline, _super);
13489
13490 function Underline(editor) {
13491 var _this = this;
13492
13493 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-underline\"></i>\n </div>");
13494 _this = _super.call(this, $elem, editor) || this;
13495 return _this;
13496 }
13497 /**
13498 * 点击事件
13499 */
13500
13501
13502 Underline.prototype.clickHandler = function () {
13503 var editor = this.editor;
13504 var isSelectEmpty = editor.selection.isSelectionEmpty();
13505
13506 if (isSelectEmpty) {
13507 // 选区范围是空的,插入并选中一个“空白”
13508 editor.selection.createEmptyRange();
13509 } // 执行 Underline 命令
13510
13511
13512 editor.cmd["do"]('underline');
13513
13514 if (isSelectEmpty) {
13515 // 需要将选区范围折叠起来
13516 editor.selection.collapseRange();
13517 editor.selection.restoreSelection();
13518 }
13519 };
13520 /**
13521 * 尝试修改菜单激活状态
13522 */
13523
13524
13525 Underline.prototype.tryChangeActive = function () {
13526 var editor = this.editor;
13527
13528 if (editor.cmd.queryCommandState('underline')) {
13529 this.active();
13530 } else {
13531 this.unActive();
13532 }
13533 };
13534
13535 return Underline;
13536}(BtnMenu_1["default"]);
13537
13538exports["default"] = Underline;
13539
13540/***/ }),
13541/* 316 */
13542/***/ (function(module, exports, __webpack_require__) {
13543
13544"use strict";
13545
13546/**
13547 * @description 删除线
13548 * @author lkw
13549 */
13550
13551var _interopRequireDefault = __webpack_require__(0);
13552
13553var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13554
13555var _create = _interopRequireDefault(__webpack_require__(3));
13556
13557var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
13558
13559var __extends = void 0 && (void 0).__extends || function () {
13560 var _extendStatics = function extendStatics(d, b) {
13561 _extendStatics = _setPrototypeOf["default"] || {
13562 __proto__: []
13563 } instanceof Array && function (d, b) {
13564 d.__proto__ = b;
13565 } || function (d, b) {
13566 for (var p in b) {
13567 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
13568 }
13569 };
13570
13571 return _extendStatics(d, b);
13572 };
13573
13574 return function (d, b) {
13575 _extendStatics(d, b);
13576
13577 function __() {
13578 this.constructor = d;
13579 }
13580
13581 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
13582 };
13583}();
13584
13585var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13586 return mod && mod.__esModule ? mod : {
13587 "default": mod
13588 };
13589};
13590
13591(0, _defineProperty["default"])(exports, "__esModule", {
13592 value: true
13593});
13594
13595var BtnMenu_1 = __importDefault(__webpack_require__(24));
13596
13597var dom_core_1 = __importDefault(__webpack_require__(2));
13598
13599var StrikeThrough =
13600/** @class */
13601function (_super) {
13602 __extends(StrikeThrough, _super);
13603
13604 function StrikeThrough(editor) {
13605 var _this = this;
13606
13607 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-strikethrough\"></i>\n </div>");
13608 _this = _super.call(this, $elem, editor) || this;
13609 return _this;
13610 }
13611 /**
13612 * 点击事件
13613 */
13614
13615
13616 StrikeThrough.prototype.clickHandler = function () {
13617 var editor = this.editor;
13618 var isSelectEmpty = editor.selection.isSelectionEmpty();
13619
13620 if (isSelectEmpty) {
13621 // 选区范围是空的,插入并选中一个“空白”
13622 editor.selection.createEmptyRange();
13623 } // 执行 strikeThrough 命令
13624
13625
13626 editor.cmd["do"]('strikeThrough');
13627
13628 if (isSelectEmpty) {
13629 // 需要将选区范围折叠起来
13630 editor.selection.collapseRange();
13631 editor.selection.restoreSelection();
13632 }
13633 };
13634 /**
13635 * 尝试修改菜单激活状态
13636 */
13637
13638
13639 StrikeThrough.prototype.tryChangeActive = function () {
13640 var editor = this.editor;
13641
13642 if (editor.cmd.queryCommandState('strikeThrough')) {
13643 this.active();
13644 } else {
13645 this.unActive();
13646 }
13647 };
13648
13649 return StrikeThrough;
13650}(BtnMenu_1["default"]);
13651
13652exports["default"] = StrikeThrough;
13653
13654/***/ }),
13655/* 317 */
13656/***/ (function(module, exports, __webpack_require__) {
13657
13658"use strict";
13659
13660/**
13661 * @description 字体样式 FontStyle
13662 * @author dyl
13663 *
13664 */
13665
13666var _interopRequireDefault = __webpack_require__(0);
13667
13668var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13669
13670var _create = _interopRequireDefault(__webpack_require__(3));
13671
13672var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
13673
13674var __extends = void 0 && (void 0).__extends || function () {
13675 var _extendStatics = function extendStatics(d, b) {
13676 _extendStatics = _setPrototypeOf["default"] || {
13677 __proto__: []
13678 } instanceof Array && function (d, b) {
13679 d.__proto__ = b;
13680 } || function (d, b) {
13681 for (var p in b) {
13682 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
13683 }
13684 };
13685
13686 return _extendStatics(d, b);
13687 };
13688
13689 return function (d, b) {
13690 _extendStatics(d, b);
13691
13692 function __() {
13693 this.constructor = d;
13694 }
13695
13696 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
13697 };
13698}();
13699
13700var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13701 return mod && mod.__esModule ? mod : {
13702 "default": mod
13703 };
13704};
13705
13706(0, _defineProperty["default"])(exports, "__esModule", {
13707 value: true
13708});
13709
13710var DropListMenu_1 = __importDefault(__webpack_require__(22));
13711
13712var dom_core_1 = __importDefault(__webpack_require__(2));
13713
13714var FontStyleList_1 = __importDefault(__webpack_require__(318));
13715
13716var FontStyle =
13717/** @class */
13718function (_super) {
13719 __extends(FontStyle, _super);
13720
13721 function FontStyle(editor) {
13722 var _this = this;
13723
13724 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-font\"></i>\n </div>");
13725 var fontStyleList = new FontStyleList_1["default"](editor.config.fontNames);
13726 var fontListConf = {
13727 width: 100,
13728 title: '设置字体',
13729 type: 'list',
13730 list: fontStyleList.getItemList(),
13731 clickHandler: function clickHandler(value) {
13732 // this 是指向当前的 FontStyle 对象
13733 _this.command(value);
13734 }
13735 };
13736 _this = _super.call(this, $elem, editor, fontListConf) || this;
13737 return _this;
13738 }
13739 /**
13740 * 执行命令
13741 * @param value value
13742 */
13743
13744
13745 FontStyle.prototype.command = function (value) {
13746 var _a;
13747
13748 var editor = this.editor;
13749 var isEmptySelection = editor.selection.isSelectionEmpty();
13750 var $selectionElem = (_a = editor.selection.getSelectionContainerElem()) === null || _a === void 0 ? void 0 : _a.elems[0];
13751 var isFont = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.nodeName.toLowerCase()) !== 'p';
13752 var isSameValue = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getAttribute('face')) === value;
13753
13754 if (isEmptySelection) {
13755 if (isFont && !isSameValue) {
13756 var $elems = editor.selection.getSelectionRangeTopNodes(editor);
13757 editor.selection.createRangeByElem($elems[0]);
13758 editor.selection.moveCursor($elems[0].elems[0]);
13759 } // 插入空白选区
13760
13761
13762 editor.selection.createEmptyRange();
13763 }
13764
13765 editor.cmd["do"]('fontName', value);
13766
13767 if (isEmptySelection) {
13768 // 需要将选区范围折叠起来
13769 editor.selection.collapseRange();
13770 editor.selection.restoreSelection();
13771 }
13772 };
13773 /**
13774 * 尝试修改菜单激活状态
13775 * ?字体是否需要有激活状态这个操作?
13776 */
13777
13778
13779 FontStyle.prototype.tryChangeActive = function () {// const editor = this.editor
13780 // const cmdValue = editor.cmd.queryCommandValue('fontName')
13781 // if (menusConfig.fontNames.indexOf(cmdValue) >= 0) {
13782 // this.active()
13783 // } else {
13784 // this.unActive()
13785 // }
13786 };
13787
13788 return FontStyle;
13789}(DropListMenu_1["default"]);
13790
13791exports["default"] = FontStyle;
13792
13793/***/ }),
13794/* 318 */
13795/***/ (function(module, exports, __webpack_require__) {
13796
13797"use strict";
13798
13799
13800var _interopRequireDefault = __webpack_require__(0);
13801
13802var _forEach = _interopRequireDefault(__webpack_require__(6));
13803
13804var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13805
13806var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13807 return mod && mod.__esModule ? mod : {
13808 "default": mod
13809 };
13810};
13811
13812(0, _defineProperty["default"])(exports, "__esModule", {
13813 value: true
13814});
13815/**
13816 * @description 字体 class
13817 * @author dyl
13818 */
13819
13820var dom_core_1 = __importDefault(__webpack_require__(2));
13821/**
13822 * 封装的一个字体菜单列表数据的组装对象,
13823 * 原因是因为在constructor函数中,直接执行此流程,会让代码量看起来较多,
13824 * 如果要在constructor调用外部函数,个人目前发现会有错误提示,
13825 * 因此,想着顺便研究实践下ts,遍创建了这样一个类
13826 */
13827
13828
13829var FontStyleList =
13830/** @class */
13831function () {
13832 function FontStyleList(list) {
13833 var _this = this;
13834
13835 this.itemList = [];
13836 (0, _forEach["default"])(list).call(list, function (fontValue) {
13837 _this.itemList.push({
13838 $elem: dom_core_1["default"]("<p style=\"font-family:'" + fontValue + "'\">" + fontValue + "</p>"),
13839 value: fontValue
13840 });
13841 });
13842 }
13843
13844 FontStyleList.prototype.getItemList = function () {
13845 return this.itemList;
13846 };
13847
13848 return FontStyleList;
13849}();
13850
13851exports["default"] = FontStyleList;
13852
13853/***/ }),
13854/* 319 */
13855/***/ (function(module, exports, __webpack_require__) {
13856
13857"use strict";
13858
13859/**
13860 * @description 字号 FontSize
13861 * @author lkw
13862 *
13863 */
13864
13865var _interopRequireDefault = __webpack_require__(0);
13866
13867var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13868
13869var _create = _interopRequireDefault(__webpack_require__(3));
13870
13871var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
13872
13873var __extends = void 0 && (void 0).__extends || function () {
13874 var _extendStatics = function extendStatics(d, b) {
13875 _extendStatics = _setPrototypeOf["default"] || {
13876 __proto__: []
13877 } instanceof Array && function (d, b) {
13878 d.__proto__ = b;
13879 } || function (d, b) {
13880 for (var p in b) {
13881 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
13882 }
13883 };
13884
13885 return _extendStatics(d, b);
13886 };
13887
13888 return function (d, b) {
13889 _extendStatics(d, b);
13890
13891 function __() {
13892 this.constructor = d;
13893 }
13894
13895 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
13896 };
13897}();
13898
13899var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13900 return mod && mod.__esModule ? mod : {
13901 "default": mod
13902 };
13903};
13904
13905(0, _defineProperty["default"])(exports, "__esModule", {
13906 value: true
13907});
13908
13909var DropListMenu_1 = __importDefault(__webpack_require__(22));
13910
13911var dom_core_1 = __importDefault(__webpack_require__(2));
13912
13913var FontSizeList_1 = __importDefault(__webpack_require__(320));
13914
13915var FontSize =
13916/** @class */
13917function (_super) {
13918 __extends(FontSize, _super);
13919
13920 function FontSize(editor) {
13921 var _this = this;
13922
13923 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-text-heigh\"></i>\n </div>");
13924 var fontStyleList = new FontSizeList_1["default"](editor.config.fontSizes);
13925 var fontListConf = {
13926 width: 160,
13927 title: '设置字号',
13928 type: 'list',
13929 list: fontStyleList.getItemList(),
13930 clickHandler: function clickHandler(value) {
13931 // this 是指向当前的 FontSize 对象
13932 _this.command(value);
13933 }
13934 };
13935 _this = _super.call(this, $elem, editor, fontListConf) || this;
13936 return _this;
13937 }
13938 /**
13939 * 执行命令
13940 * @param value value
13941 */
13942
13943
13944 FontSize.prototype.command = function (value) {
13945 var _a;
13946
13947 var editor = this.editor;
13948 var isEmptySelection = editor.selection.isSelectionEmpty();
13949 var $selectionElem = (_a = editor.selection.getSelectionContainerElem()) === null || _a === void 0 ? void 0 : _a.elems[0];
13950 var isFont = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.nodeName.toLowerCase()) !== 'p';
13951 var isSameSize = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getAttribute('size')) === value;
13952
13953 if (isEmptySelection) {
13954 if (isFont && !isSameSize) {
13955 var $elems = editor.selection.getSelectionRangeTopNodes(editor);
13956 editor.selection.createRangeByElem($elems[0]);
13957 editor.selection.moveCursor($elems[0].elems[0]);
13958 } // 插入空白选区
13959
13960
13961 editor.selection.createEmptyRange();
13962 }
13963
13964 editor.cmd["do"]('fontSize', value);
13965
13966 if (isEmptySelection) {
13967 // 需要将选区范围折叠起来
13968 editor.selection.collapseRange();
13969 editor.selection.restoreSelection();
13970 }
13971 };
13972 /**
13973 * 尝试修改菜单激活状态
13974 * ?字号是否需要有激活状态这个操作?
13975 */
13976
13977
13978 FontSize.prototype.tryChangeActive = function () {};
13979
13980 return FontSize;
13981}(DropListMenu_1["default"]);
13982
13983exports["default"] = FontSize;
13984
13985/***/ }),
13986/* 320 */
13987/***/ (function(module, exports, __webpack_require__) {
13988
13989"use strict";
13990
13991
13992var _interopRequireDefault = __webpack_require__(0);
13993
13994var _defineProperty = _interopRequireDefault(__webpack_require__(1));
13995
13996var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
13997 return mod && mod.__esModule ? mod : {
13998 "default": mod
13999 };
14000};
14001
14002(0, _defineProperty["default"])(exports, "__esModule", {
14003 value: true
14004});
14005/**
14006 * @description 字号 class
14007 * @author lkw
14008 */
14009
14010var dom_core_1 = __importDefault(__webpack_require__(2));
14011/**
14012 * FontSizeList 字号配置列表
14013 */
14014
14015
14016var FontSizeList =
14017/** @class */
14018function () {
14019 function FontSizeList(list) {
14020 this.itemList = [];
14021
14022 for (var key in list) {
14023 var item = list[key];
14024 this.itemList.push({
14025 $elem: dom_core_1["default"]("<p style=\"font-size:" + key + "\">" + item.name + "</p>"),
14026 value: item.value
14027 });
14028 }
14029 }
14030
14031 FontSizeList.prototype.getItemList = function () {
14032 return this.itemList;
14033 };
14034
14035 return FontSizeList;
14036}();
14037
14038exports["default"] = FontSizeList;
14039
14040/***/ }),
14041/* 321 */
14042/***/ (function(module, exports, __webpack_require__) {
14043
14044"use strict";
14045
14046/**
14047 * @description 对齐方式
14048 * @author liuwei
14049 */
14050
14051var _interopRequireDefault = __webpack_require__(0);
14052
14053var _forEach = _interopRequireDefault(__webpack_require__(6));
14054
14055var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14056
14057var _create = _interopRequireDefault(__webpack_require__(3));
14058
14059var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14060
14061var __extends = void 0 && (void 0).__extends || function () {
14062 var _extendStatics = function extendStatics(d, b) {
14063 _extendStatics = _setPrototypeOf["default"] || {
14064 __proto__: []
14065 } instanceof Array && function (d, b) {
14066 d.__proto__ = b;
14067 } || function (d, b) {
14068 for (var p in b) {
14069 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14070 }
14071 };
14072
14073 return _extendStatics(d, b);
14074 };
14075
14076 return function (d, b) {
14077 _extendStatics(d, b);
14078
14079 function __() {
14080 this.constructor = d;
14081 }
14082
14083 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14084 };
14085}();
14086
14087var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14088 return mod && mod.__esModule ? mod : {
14089 "default": mod
14090 };
14091};
14092
14093(0, _defineProperty["default"])(exports, "__esModule", {
14094 value: true
14095});
14096
14097var DropListMenu_1 = __importDefault(__webpack_require__(22));
14098
14099var dom_core_1 = __importDefault(__webpack_require__(2));
14100
14101var Justify =
14102/** @class */
14103function (_super) {
14104 __extends(Justify, _super);
14105
14106 function Justify(editor) {
14107 var _this = this;
14108
14109 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-paragraph-left"></i></div>');
14110 var dropListConf = {
14111 width: 100,
14112 title: '对齐方式',
14113 type: 'list',
14114 list: [{
14115 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-paragraph-left w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.justify.靠左') + "\n </p>"),
14116 value: 'justifyLeft'
14117 }, {
14118 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-paragraph-center w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.justify.居中') + "\n </p>"),
14119 value: 'justifyCenter'
14120 }, {
14121 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-paragraph-right w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.justify.靠右') + "\n </p>"),
14122 value: 'justifyRight'
14123 }, {
14124 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-paragraph-justify w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.justify.两端') + "\n </p>"),
14125 value: 'justifyFull'
14126 }],
14127 clickHandler: function clickHandler(value) {
14128 // 执行对应的value操作
14129 _this.command(value);
14130 }
14131 };
14132 _this = _super.call(this, $elem, editor, dropListConf) || this;
14133 return _this;
14134 }
14135 /**
14136 * 执行命令
14137 * @param value value
14138 */
14139
14140
14141 Justify.prototype.command = function (value) {
14142 var editor = this.editor;
14143 var selection = editor.selection;
14144 var $selectionElem = selection.getSelectionContainerElem(); // 保存选区
14145
14146 selection.saveRange(); // 数据项
14147
14148 var justifyClass = {
14149 justifyLeft: 'left',
14150 justifyCenter: 'center',
14151 justifyRight: 'right',
14152 justifyFull: 'justify'
14153 }; // 获取顶级元素
14154
14155 var $elems = editor.selection.getSelectionRangeTopNodes(editor); // 选区等于textElem时表示选择了多个段落
14156
14157 if ($selectionElem && editor.$textElem.equal($selectionElem)) {
14158 // 获取在css中对应style的值
14159 var justifyValue_1 = justifyClass[value];
14160 (0, _forEach["default"])($elems).call($elems, function (el) {
14161 el.css('text-align', justifyValue_1);
14162 });
14163 } else {
14164 // 如果单行的使用execcommand实现
14165 editor.cmd["do"](value, value);
14166 } //恢复选区
14167
14168
14169 selection.restoreSelection();
14170 };
14171 /**
14172 * 尝试改变菜单激活(高亮)状态
14173 * 默认左对齐,若选择其他对其方式对active进行高亮否则unActive
14174 * ?考虑优化的话 是否可以对具体选中的进行高亮
14175 */
14176
14177
14178 Justify.prototype.tryChangeActive = function () {// const editor = this.editor
14179 // let isjustify = ['justifyCenter', 'justifyRight'].some(e => editor.cmd.queryCommandState(e))
14180 // if (isjustify) {
14181 // this.active()
14182 // } else {
14183 // this.unActive()
14184 // }
14185 };
14186
14187 return Justify;
14188}(DropListMenu_1["default"]);
14189
14190exports["default"] = Justify;
14191
14192/***/ }),
14193/* 322 */
14194/***/ (function(module, exports, __webpack_require__) {
14195
14196"use strict";
14197
14198/**
14199 * @description 引用
14200 * @author tonghan
14201 */
14202
14203var _interopRequireDefault = __webpack_require__(0);
14204
14205var _forEach = _interopRequireDefault(__webpack_require__(6));
14206
14207var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14208
14209var _create = _interopRequireDefault(__webpack_require__(3));
14210
14211var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14212
14213var __extends = void 0 && (void 0).__extends || function () {
14214 var _extendStatics = function extendStatics(d, b) {
14215 _extendStatics = _setPrototypeOf["default"] || {
14216 __proto__: []
14217 } instanceof Array && function (d, b) {
14218 d.__proto__ = b;
14219 } || function (d, b) {
14220 for (var p in b) {
14221 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14222 }
14223 };
14224
14225 return _extendStatics(d, b);
14226 };
14227
14228 return function (d, b) {
14229 _extendStatics(d, b);
14230
14231 function __() {
14232 this.constructor = d;
14233 }
14234
14235 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14236 };
14237}();
14238
14239var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14240 return mod && mod.__esModule ? mod : {
14241 "default": mod
14242 };
14243};
14244
14245(0, _defineProperty["default"])(exports, "__esModule", {
14246 value: true
14247});
14248
14249var dom_core_1 = __importDefault(__webpack_require__(2));
14250
14251var BtnMenu_1 = __importDefault(__webpack_require__(24));
14252
14253var bind_event_1 = __importDefault(__webpack_require__(323));
14254
14255var create_quote_node_1 = __importDefault(__webpack_require__(324));
14256
14257var Quote =
14258/** @class */
14259function (_super) {
14260 __extends(Quote, _super);
14261
14262 function Quote(editor) {
14263 var _this = this;
14264
14265 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-quotes-left\"></i>\n </div>");
14266 _this = _super.call(this, $elem, editor) || this;
14267 bind_event_1["default"](editor);
14268 return _this;
14269 }
14270 /**
14271 * 点击事件
14272 */
14273
14274
14275 Quote.prototype.clickHandler = function () {
14276 var _a;
14277
14278 var editor = this.editor;
14279 var isSelectEmpty = editor.selection.isSelectionEmpty();
14280 var topNodeElem = editor.selection.getSelectionRangeTopNodes(editor);
14281 var $topNodeElem = topNodeElem[topNodeElem.length - 1];
14282 var nodeName = this.getTopNodeName(); // IE 中不支持 formatBlock <BLOCKQUOTE> ,要用其他方式兼容
14283 // 兼容firefox无法取消blockquote的问题
14284
14285 if (nodeName === 'BLOCKQUOTE') {
14286 // 撤销 quote
14287 var $targetELem = dom_core_1["default"]($topNodeElem.childNodes());
14288 var len = $targetELem.length;
14289 var $middle_1 = $topNodeElem;
14290 (0, _forEach["default"])($targetELem).call($targetELem, function (elem) {
14291 var $elem = dom_core_1["default"](elem);
14292 $elem.insertAfter($middle_1);
14293 $middle_1 = $elem;
14294 });
14295 $topNodeElem.remove();
14296 editor.selection.moveCursor($targetELem.elems[len - 1]); // 即时更新btn状态
14297
14298 this.tryChangeActive();
14299 } else {
14300 // 将 P 转换为 quote
14301 var $quote = create_quote_node_1["default"](topNodeElem);
14302 $quote.insertAfter($topNodeElem);
14303 this.delSelectNode(topNodeElem);
14304 var moveNode = (_a = $quote.childNodes()) === null || _a === void 0 ? void 0 : _a.last().getNode(); // 兼容firefox(firefox下空行情况下选区会在br后,造成自动换行的问题)
14305
14306 moveNode.textContent ? editor.selection.moveCursor(moveNode) : editor.selection.moveCursor(moveNode, true); // 即时更新btn状态
14307
14308 this.tryChangeActive(); // 防止最后一行无法跳出
14309
14310 dom_core_1["default"]("<p><br></p>").insertAfter($quote);
14311 return;
14312 }
14313
14314 if (isSelectEmpty) {
14315 // 需要将选区范围折叠起来
14316 editor.selection.collapseRange();
14317 editor.selection.restoreSelection();
14318 }
14319 };
14320 /**
14321 * 尝试修改菜单激活状态
14322 */
14323
14324
14325 Quote.prototype.tryChangeActive = function () {
14326 var _a;
14327
14328 var editor = this.editor;
14329 var cmdValue = (_a = editor.selection.getSelectionRangeTopNodes(editor)[0]) === null || _a === void 0 ? void 0 : _a.getNodeName();
14330
14331 if (cmdValue === 'BLOCKQUOTE') {
14332 this.active();
14333 } else {
14334 this.unActive();
14335 }
14336 };
14337 /**
14338 * 获取包裹在最外层的节点(防止内部嵌入多个样式)
14339 * @param selectionElem 选中的节点
14340 * @returns {string} 最终要处理的节点名称
14341 */
14342
14343
14344 Quote.prototype.getTopNodeName = function () {
14345 var editor = this.editor;
14346 var $topNodeElem = editor.selection.getSelectionRangeTopNodes(editor)[0];
14347 var nodeName = $topNodeElem === null || $topNodeElem === void 0 ? void 0 : $topNodeElem.getNodeName();
14348 return nodeName;
14349 };
14350 /**
14351 * 删除选中的元素
14352 * @param selectElem 选中的元素节点数组
14353 */
14354
14355
14356 Quote.prototype.delSelectNode = function (selectElem) {
14357 (0, _forEach["default"])(selectElem).call(selectElem, function (node) {
14358 node.remove();
14359 });
14360 };
14361
14362 return Quote;
14363}(BtnMenu_1["default"]);
14364
14365exports["default"] = Quote;
14366
14367/***/ }),
14368/* 323 */
14369/***/ (function(module, exports, __webpack_require__) {
14370
14371"use strict";
14372
14373
14374var _interopRequireDefault = __webpack_require__(0);
14375
14376var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14377
14378var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14379 return mod && mod.__esModule ? mod : {
14380 "default": mod
14381 };
14382};
14383
14384(0, _defineProperty["default"])(exports, "__esModule", {
14385 value: true
14386});
14387
14388var dom_core_1 = __importDefault(__webpack_require__(2));
14389
14390function bindEvent(editor) {
14391 function quoteEnter(e) {
14392 var _a;
14393
14394 var $selectElem = editor.selection.getSelectionContainerElem();
14395 var $topSelectElem = editor.selection.getSelectionRangeTopNodes(editor)[0]; // 对quote的enter进行特殊处理
14396 //最后一行为<p><br></p>时再按会出跳出blockquote
14397
14398 if (($topSelectElem === null || $topSelectElem === void 0 ? void 0 : $topSelectElem.getNodeName()) === 'BLOCKQUOTE') {
14399 // firefox下点击引用按钮会选中外容器<blockquote></blockquote>
14400 if ($selectElem.getNodeName() === 'BLOCKQUOTE') {
14401 var selectNode = (_a = $selectElem.childNodes()) === null || _a === void 0 ? void 0 : _a.getNode();
14402 editor.selection.moveCursor(selectNode);
14403 }
14404
14405 if ($selectElem.text() === '') {
14406 e.preventDefault();
14407 $selectElem.remove();
14408 var $newLine = dom_core_1["default"]('<p><br></p>');
14409 $newLine.insertAfter($topSelectElem); // 将光标移动br前面
14410
14411 editor.selection.moveCursor($newLine.getNode(), true);
14412 } // 当blockQuote中没有内容回车后移除blockquote
14413
14414
14415 if ($topSelectElem.text() === '') {
14416 $topSelectElem.remove();
14417 }
14418 }
14419 }
14420
14421 editor.txt.eventHooks.enterDownEvents.push(quoteEnter);
14422}
14423
14424exports["default"] = bindEvent;
14425
14426/***/ }),
14427/* 324 */
14428/***/ (function(module, exports, __webpack_require__) {
14429
14430"use strict";
14431
14432
14433var _interopRequireDefault = __webpack_require__(0);
14434
14435var _forEach = _interopRequireDefault(__webpack_require__(6));
14436
14437var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14438
14439var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14440 return mod && mod.__esModule ? mod : {
14441 "default": mod
14442 };
14443};
14444
14445(0, _defineProperty["default"])(exports, "__esModule", {
14446 value: true
14447});
14448
14449var dom_core_1 = __importDefault(__webpack_require__(2));
14450/**
14451 * 创建一个blockquote元素节点
14452 * @param editor 编辑器实例
14453 */
14454
14455
14456function createQuote($childElem) {
14457 var $targetElem = dom_core_1["default"]("<blockquote></blockquote>");
14458 (0, _forEach["default"])($childElem).call($childElem, function (node) {
14459 $targetElem.append(node.clone(true));
14460 });
14461 return $targetElem;
14462}
14463
14464exports["default"] = createQuote;
14465
14466/***/ }),
14467/* 325 */
14468/***/ (function(module, exports, __webpack_require__) {
14469
14470"use strict";
14471
14472/**
14473 * @description 背景颜色 BackColor
14474 * @author lkw
14475 *
14476 */
14477
14478var _interopRequireDefault = __webpack_require__(0);
14479
14480var _map = _interopRequireDefault(__webpack_require__(28));
14481
14482var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14483
14484var _create = _interopRequireDefault(__webpack_require__(3));
14485
14486var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14487
14488var __extends = void 0 && (void 0).__extends || function () {
14489 var _extendStatics = function extendStatics(d, b) {
14490 _extendStatics = _setPrototypeOf["default"] || {
14491 __proto__: []
14492 } instanceof Array && function (d, b) {
14493 d.__proto__ = b;
14494 } || function (d, b) {
14495 for (var p in b) {
14496 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14497 }
14498 };
14499
14500 return _extendStatics(d, b);
14501 };
14502
14503 return function (d, b) {
14504 _extendStatics(d, b);
14505
14506 function __() {
14507 this.constructor = d;
14508 }
14509
14510 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14511 };
14512}();
14513
14514var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14515 return mod && mod.__esModule ? mod : {
14516 "default": mod
14517 };
14518};
14519
14520(0, _defineProperty["default"])(exports, "__esModule", {
14521 value: true
14522});
14523
14524var DropListMenu_1 = __importDefault(__webpack_require__(22));
14525
14526var dom_core_1 = __importDefault(__webpack_require__(2));
14527
14528var util_1 = __webpack_require__(7);
14529
14530var BackColor =
14531/** @class */
14532function (_super) {
14533 __extends(BackColor, _super);
14534
14535 function BackColor(editor) {
14536 var _context;
14537
14538 var _this = this;
14539
14540 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-paint-brush\"></i>\n </div>");
14541 var colorListConf = {
14542 width: 120,
14543 title: '背景颜色',
14544 // droplist 内容以 block 形式展示
14545 type: 'inline-block',
14546 list: (0, _map["default"])(_context = editor.config.colors).call(_context, function (color) {
14547 return {
14548 $elem: dom_core_1["default"]("<i style=\"color:" + color + ";\" class=\"w-e-icon-paint-brush\"></i>"),
14549 value: color
14550 };
14551 }),
14552 clickHandler: function clickHandler(value) {
14553 // this 是指向当前的 BackColor 对象
14554 _this.command(value);
14555 }
14556 };
14557 _this = _super.call(this, $elem, editor, colorListConf) || this;
14558 return _this;
14559 }
14560 /**
14561 * 执行命令
14562 * @param value value
14563 */
14564
14565
14566 BackColor.prototype.command = function (value) {
14567 var _a;
14568
14569 var editor = this.editor;
14570 var isEmptySelection = editor.selection.isSelectionEmpty();
14571 var $selectionElem = (_a = editor.selection.getSelectionContainerElem()) === null || _a === void 0 ? void 0 : _a.elems[0];
14572 var isSpan = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.nodeName.toLowerCase()) !== 'p';
14573 var bgColor = $selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.style.backgroundColor;
14574 var isSameColor = util_1.hexToRgb(value) === bgColor;
14575
14576 if (isEmptySelection) {
14577 if (isSpan && !isSameColor) {
14578 var $elems = editor.selection.getSelectionRangeTopNodes(editor);
14579 editor.selection.createRangeByElem($elems[0]);
14580 editor.selection.moveCursor($elems[0].elems[0]);
14581 } // 插入空白选区
14582
14583
14584 editor.selection.createEmptyRange();
14585 }
14586
14587 editor.cmd["do"]('backColor', value);
14588
14589 if (isEmptySelection) {
14590 // 需要将选区范围折叠起来
14591 editor.selection.collapseRange();
14592 editor.selection.restoreSelection();
14593 }
14594 };
14595 /**
14596 * 尝试修改菜单激活状态
14597 */
14598
14599
14600 BackColor.prototype.tryChangeActive = function () {};
14601
14602 return BackColor;
14603}(DropListMenu_1["default"]);
14604
14605exports["default"] = BackColor;
14606
14607/***/ }),
14608/* 326 */
14609/***/ (function(module, exports, __webpack_require__) {
14610
14611"use strict";
14612
14613/**
14614 * @description 文字颜色 FontColor
14615 * @author lkw
14616 *
14617 */
14618
14619var _interopRequireDefault = __webpack_require__(0);
14620
14621var _map = _interopRequireDefault(__webpack_require__(28));
14622
14623var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14624
14625var _create = _interopRequireDefault(__webpack_require__(3));
14626
14627var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14628
14629var __extends = void 0 && (void 0).__extends || function () {
14630 var _extendStatics = function extendStatics(d, b) {
14631 _extendStatics = _setPrototypeOf["default"] || {
14632 __proto__: []
14633 } instanceof Array && function (d, b) {
14634 d.__proto__ = b;
14635 } || function (d, b) {
14636 for (var p in b) {
14637 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14638 }
14639 };
14640
14641 return _extendStatics(d, b);
14642 };
14643
14644 return function (d, b) {
14645 _extendStatics(d, b);
14646
14647 function __() {
14648 this.constructor = d;
14649 }
14650
14651 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14652 };
14653}();
14654
14655var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14656 return mod && mod.__esModule ? mod : {
14657 "default": mod
14658 };
14659};
14660
14661(0, _defineProperty["default"])(exports, "__esModule", {
14662 value: true
14663});
14664
14665var DropListMenu_1 = __importDefault(__webpack_require__(22));
14666
14667var dom_core_1 = __importDefault(__webpack_require__(2));
14668
14669var FontColor =
14670/** @class */
14671function (_super) {
14672 __extends(FontColor, _super);
14673
14674 function FontColor(editor) {
14675 var _context;
14676
14677 var _this = this;
14678
14679 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-pencil2\"></i>\n </div>");
14680 var colorListConf = {
14681 width: 120,
14682 title: '文字颜色',
14683 // droplist 内容以 block 形式展示
14684 type: 'inline-block',
14685 list: (0, _map["default"])(_context = editor.config.colors).call(_context, function (color) {
14686 return {
14687 $elem: dom_core_1["default"]("<i style=\"color:" + color + ";\" class=\"w-e-icon-pencil2\"></i>"),
14688 value: color
14689 };
14690 }),
14691 clickHandler: function clickHandler(value) {
14692 // this 是指向当前的 BackColor 对象
14693 _this.command(value);
14694 }
14695 };
14696 _this = _super.call(this, $elem, editor, colorListConf) || this;
14697 return _this;
14698 }
14699 /**
14700 * 执行命令
14701 * @param value value
14702 */
14703
14704
14705 FontColor.prototype.command = function (value) {
14706 var _a;
14707
14708 var editor = this.editor;
14709 var isEmptySelection = editor.selection.isSelectionEmpty();
14710 var $selectionElem = (_a = editor.selection.getSelectionContainerElem()) === null || _a === void 0 ? void 0 : _a.elems[0];
14711 var isFont = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.nodeName.toLowerCase()) !== 'p';
14712 var isSameColor = ($selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getAttribute('color')) === value;
14713
14714 if (isEmptySelection) {
14715 if (isFont && !isSameColor) {
14716 var $elems = editor.selection.getSelectionRangeTopNodes(editor);
14717 editor.selection.createRangeByElem($elems[0]);
14718 editor.selection.moveCursor($elems[0].elems[0]);
14719 } // 插入空白选区
14720
14721
14722 editor.selection.createEmptyRange();
14723 }
14724
14725 editor.cmd["do"]('foreColor', value);
14726
14727 if (isEmptySelection) {
14728 // 需要将选区范围折叠起来
14729 editor.selection.collapseRange();
14730 editor.selection.restoreSelection();
14731 }
14732 };
14733 /**
14734 * 尝试修改菜单激活状态
14735 */
14736
14737
14738 FontColor.prototype.tryChangeActive = function () {};
14739
14740 return FontColor;
14741}(DropListMenu_1["default"]);
14742
14743exports["default"] = FontColor;
14744
14745/***/ }),
14746/* 327 */
14747/***/ (function(module, exports, __webpack_require__) {
14748
14749"use strict";
14750
14751/**
14752 * @description 视频 菜单
14753 * @author tonghan
14754 */
14755
14756var _interopRequireDefault = __webpack_require__(0);
14757
14758var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14759
14760var _create = _interopRequireDefault(__webpack_require__(3));
14761
14762var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14763
14764var __extends = void 0 && (void 0).__extends || function () {
14765 var _extendStatics = function extendStatics(d, b) {
14766 _extendStatics = _setPrototypeOf["default"] || {
14767 __proto__: []
14768 } instanceof Array && function (d, b) {
14769 d.__proto__ = b;
14770 } || function (d, b) {
14771 for (var p in b) {
14772 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14773 }
14774 };
14775
14776 return _extendStatics(d, b);
14777 };
14778
14779 return function (d, b) {
14780 _extendStatics(d, b);
14781
14782 function __() {
14783 this.constructor = d;
14784 }
14785
14786 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14787 };
14788}();
14789
14790var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14791 return mod && mod.__esModule ? mod : {
14792 "default": mod
14793 };
14794};
14795
14796(0, _defineProperty["default"])(exports, "__esModule", {
14797 value: true
14798});
14799
14800var dom_core_1 = __importDefault(__webpack_require__(2));
14801
14802var Panel_1 = __importDefault(__webpack_require__(29));
14803
14804var PanelMenu_1 = __importDefault(__webpack_require__(33));
14805
14806var create_panel_conf_1 = __importDefault(__webpack_require__(328));
14807
14808var Video =
14809/** @class */
14810function (_super) {
14811 __extends(Video, _super);
14812
14813 function Video(editor) {
14814 var _this = this;
14815
14816 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-play\"></i>\n </div>");
14817 _this = _super.call(this, $elem, editor) || this;
14818 return _this;
14819 }
14820 /**
14821 * 菜单点击事件
14822 */
14823
14824
14825 Video.prototype.clickHandler = function () {
14826 // 弹出 panel
14827 this.createPanel('');
14828 };
14829 /**
14830 * 创建 panel
14831 * @param link 链接
14832 */
14833
14834
14835 Video.prototype.createPanel = function (iframe) {
14836 var conf = create_panel_conf_1["default"](this.editor, iframe);
14837 var panel = new Panel_1["default"](this, conf);
14838 panel.create();
14839 };
14840 /**
14841 * 尝试修改菜单 active 状态
14842 */
14843
14844
14845 Video.prototype.tryChangeActive = function () {};
14846
14847 return Video;
14848}(PanelMenu_1["default"]);
14849
14850exports["default"] = Video;
14851
14852/***/ }),
14853/* 328 */
14854/***/ (function(module, exports, __webpack_require__) {
14855
14856"use strict";
14857
14858/**
14859 * @description video 菜单 panel tab 配置
14860 * @author tonghan
14861 */
14862
14863var _interopRequireDefault = __webpack_require__(0);
14864
14865var _trim = _interopRequireDefault(__webpack_require__(21));
14866
14867var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14868
14869var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14870 return mod && mod.__esModule ? mod : {
14871 "default": mod
14872 };
14873};
14874
14875(0, _defineProperty["default"])(exports, "__esModule", {
14876 value: true
14877});
14878
14879var util_1 = __webpack_require__(7);
14880
14881var dom_core_1 = __importDefault(__webpack_require__(2));
14882
14883function default_1(editor, video) {
14884 // panel 中需要用到的id
14885 var inputIFrameId = util_1.getRandom('input-iframe');
14886 var btnOkId = util_1.getRandom('btn-ok');
14887 /**
14888 * 插入链接
14889 * @param iframe html标签
14890 */
14891
14892 function insertVideo(video) {
14893 editor.cmd["do"]('insertHTML', video + '<p><br></p>');
14894 }
14895
14896 var conf = {
14897 width: 300,
14898 height: 0,
14899 // panel 中可包含多个 tab
14900 tabs: [{
14901 // tab 的标题
14902 title: editor.i18next.t('menus.panelMenus.video.插入视频'),
14903 // 模板
14904 tpl: "<div>\n <input \n id=\"" + inputIFrameId + "\" \n type=\"text\" \n class=\"block\" \n placeholder=\"" + editor.i18next.t('如') + "\uFF1A<iframe src=... ></iframe>\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button id=\"" + btnOkId + "\" class=\"right\">\n " + editor.i18next.t('插入') + "\n </button>\n </div>\n </div>",
14905 // 事件绑定
14906 events: [// 插入视频
14907 {
14908 selector: '#' + btnOkId,
14909 type: 'click',
14910 fn: function fn() {
14911 var _context;
14912
14913 // 执行插入视频
14914 var $video = dom_core_1["default"]('#' + inputIFrameId);
14915 var video = (0, _trim["default"])(_context = $video.val()).call(_context); // 视频为空,则不插入
14916
14917 if (!video) return;
14918 insertVideo(video); // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
14919
14920 return true;
14921 }
14922 }]
14923 }]
14924 };
14925 return conf;
14926}
14927
14928exports["default"] = default_1;
14929
14930/***/ }),
14931/* 329 */
14932/***/ (function(module, exports, __webpack_require__) {
14933
14934"use strict";
14935
14936/**
14937 * @description 插入、上传图片
14938 * @author wangfupeng
14939 */
14940
14941var _interopRequireDefault = __webpack_require__(0);
14942
14943var _defineProperty = _interopRequireDefault(__webpack_require__(1));
14944
14945var _create = _interopRequireDefault(__webpack_require__(3));
14946
14947var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
14948
14949var __extends = void 0 && (void 0).__extends || function () {
14950 var _extendStatics = function extendStatics(d, b) {
14951 _extendStatics = _setPrototypeOf["default"] || {
14952 __proto__: []
14953 } instanceof Array && function (d, b) {
14954 d.__proto__ = b;
14955 } || function (d, b) {
14956 for (var p in b) {
14957 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
14958 }
14959 };
14960
14961 return _extendStatics(d, b);
14962 };
14963
14964 return function (d, b) {
14965 _extendStatics(d, b);
14966
14967 function __() {
14968 this.constructor = d;
14969 }
14970
14971 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
14972 };
14973}();
14974
14975var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
14976 return mod && mod.__esModule ? mod : {
14977 "default": mod
14978 };
14979};
14980
14981(0, _defineProperty["default"])(exports, "__esModule", {
14982 value: true
14983});
14984
14985var PanelMenu_1 = __importDefault(__webpack_require__(33));
14986
14987var dom_core_1 = __importDefault(__webpack_require__(2));
14988
14989var create_panel_conf_1 = __importDefault(__webpack_require__(330));
14990
14991var Panel_1 = __importDefault(__webpack_require__(29));
14992
14993var index_1 = __importDefault(__webpack_require__(337));
14994
14995var Image =
14996/** @class */
14997function (_super) {
14998 __extends(Image, _super);
14999
15000 function Image(editor) {
15001 var _this = this;
15002
15003 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-image"></i></div>');
15004 _this = _super.call(this, $elem, editor) || this; // 绑定事件,如粘贴图片
15005
15006 index_1["default"](editor);
15007 return _this;
15008 }
15009 /**
15010 * 菜单点击事件
15011 */
15012
15013
15014 Image.prototype.clickHandler = function () {
15015 this.createPanel();
15016 };
15017 /**
15018 * 创建 panel
15019 */
15020
15021
15022 Image.prototype.createPanel = function () {
15023 var conf = create_panel_conf_1["default"](this.editor);
15024 var panel = new Panel_1["default"](this, conf);
15025 panel.create();
15026 };
15027 /**
15028 * 尝试修改菜单 active 状态
15029 */
15030
15031
15032 Image.prototype.tryChangeActive = function () {};
15033
15034 return Image;
15035}(PanelMenu_1["default"]);
15036
15037exports["default"] = Image;
15038
15039/***/ }),
15040/* 330 */
15041/***/ (function(module, exports, __webpack_require__) {
15042
15043"use strict";
15044
15045/**
15046 * @description image 菜单 panel tab 配置
15047 * @author wangfupeng
15048 */
15049
15050var _interopRequireDefault = __webpack_require__(0);
15051
15052var _trim = _interopRequireDefault(__webpack_require__(21));
15053
15054var _map = _interopRequireDefault(__webpack_require__(28));
15055
15056var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15057
15058var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15059 return mod && mod.__esModule ? mod : {
15060 "default": mod
15061 };
15062};
15063
15064(0, _defineProperty["default"])(exports, "__esModule", {
15065 value: true
15066});
15067
15068var util_1 = __webpack_require__(7);
15069
15070var dom_core_1 = __importDefault(__webpack_require__(2));
15071
15072var upload_img_1 = __importDefault(__webpack_require__(94));
15073
15074var const_1 = __webpack_require__(31);
15075
15076function default_1(editor) {
15077 var _context;
15078
15079 var config = editor.config;
15080 var uploadImg = new upload_img_1["default"](editor); // panel 中需要用到的id
15081
15082 var upTriggerId = util_1.getRandom('up-trigger-id');
15083 var upFileId = util_1.getRandom('up-file-id');
15084 var linkUrlId = util_1.getRandom('input-link-url');
15085 var linkBtnId = util_1.getRandom('btn-link');
15086 var i18nPrefix = 'menus.panelMenus.image.';
15087
15088 var t = function t(text, prefix) {
15089 if (prefix === void 0) {
15090 prefix = i18nPrefix;
15091 }
15092
15093 return editor.i18next.t(prefix + text);
15094 };
15095 /**
15096 * 校验网络图片链接是否合法
15097 * @param linkImg 网络图片链接
15098 */
15099
15100
15101 function checkLinkImg(src) {
15102 //编辑器进行正常校验,图片合规则使指针为true,不合规为false
15103 var flag = true;
15104
15105 if (!const_1.imgRegex.test(src)) {
15106 flag = false;
15107 } //查看开发者自定义配置的返回值
15108
15109
15110 var check = config.linkImgCheck(src);
15111
15112 if (check === undefined) {
15113 //用户未能通过开发者的校验,且开发者不希望编辑器提示用户
15114 if (flag === false) console.log(t('您刚才插入的图片链接未通过编辑器校验', 'validate.'));
15115 } else if (check === true) {
15116 //用户通过了开发者的校验
15117 if (flag === false) {
15118 config.customAlert(t('您插入的网络图片无法识别', 'validate.') + "\uFF0C" + t('请替换为支持的图片类型', 'validate.') + "\uFF1Ajpg | png | gif ...", 'warning');
15119 } else return true;
15120 } else {
15121 //用户未能通过开发者的校验,开发者希望我们提示这一字符串
15122 config.customAlert(check, 'error');
15123 }
15124
15125 return false;
15126 } // tabs 配置 -----------------------------------------
15127
15128
15129 var fileMultipleAttr = config.uploadImgMaxLength === 1 ? '' : 'multiple="multiple"';
15130 var accepts = (0, _map["default"])(_context = config.uploadImgAccept).call(_context, function (item) {
15131 return "image/" + item;
15132 }).join(',');
15133 var tabsConf = [// first tab
15134 {
15135 // 标题
15136 title: t('上传图片'),
15137 // 模板
15138 tpl: "<div class=\"w-e-up-img-container\">\n <div id=\"" + upTriggerId + "\" class=\"w-e-up-btn\">\n <i class=\"w-e-icon-upload2\"></i>\n </div>\n <div style=\"display:none;\">\n <input id=\"" + upFileId + "\" type=\"file\" " + fileMultipleAttr + " accept=\"" + accepts + "\"/>\n </div>\n </div>",
15139 // 事件绑定
15140 events: [// 触发选择图片
15141 {
15142 selector: '#' + upTriggerId,
15143 type: 'click',
15144 fn: function fn() {
15145 var $file = dom_core_1["default"]('#' + upFileId);
15146 var fileElem = $file.elems[0];
15147
15148 if (fileElem) {
15149 fileElem.click();
15150 } else {
15151 // 返回 true 可关闭 panel
15152 return true;
15153 }
15154 }
15155 }, // 选择图片完毕
15156 {
15157 selector: '#' + upFileId,
15158 type: 'change',
15159 fn: function fn() {
15160 var $file = dom_core_1["default"]('#' + upFileId);
15161 var fileElem = $file.elems[0];
15162
15163 if (!fileElem) {
15164 // 返回 true 可关闭 panel
15165 return true;
15166 } // 获取选中的 file 对象列表
15167
15168
15169 var fileList = fileElem.files;
15170
15171 if (fileList.length) {
15172 uploadImg.uploadImg(fileList);
15173 } // 返回 true 可关闭 panel
15174
15175
15176 return true;
15177 }
15178 }]
15179 }, // second tab
15180 {
15181 title: t('网络图片'),
15182 tpl: "<div>\n <input\n id=\"" + linkUrlId + "\"\n type=\"text\"\n class=\"block\"\n placeholder=\"" + t('图片链接') + "\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button id=\"" + linkBtnId + "\" class=\"right\">" + t('插入', '') + "</button>\n </div>\n </div>",
15183 events: [{
15184 selector: '#' + linkBtnId,
15185 type: 'click',
15186 fn: function fn() {
15187 var _context2;
15188
15189 var $linkUrl = dom_core_1["default"]('#' + linkUrlId);
15190 var url = (0, _trim["default"])(_context2 = $linkUrl.val()).call(_context2); //如果url为空则直接返回
15191
15192 if (!url) return; //如果不能通过校验也直接返回
15193
15194 if (!checkLinkImg(url)) return; //插入图片url
15195
15196 uploadImg.insertImg(url); // 返回 true 表示函数执行结束之后关闭 panel
15197
15198 return true;
15199 }
15200 }]
15201 }]; // tabs end
15202 // 最终的配置 -----------------------------------------
15203
15204 var conf = {
15205 width: 300,
15206 height: 0,
15207 tabs: []
15208 }; // 显示“上传图片”
15209
15210 if (window.FileReader && (config.uploadImgShowBase64 || config.uploadImgServer || config.customUploadImg)) {
15211 conf.tabs.push(tabsConf[0]);
15212 } // 显示“插入网络图片”
15213
15214
15215 if (config.showLinkImg) {
15216 conf.tabs.push(tabsConf[1]);
15217 }
15218
15219 return conf;
15220}
15221
15222exports["default"] = default_1;
15223
15224/***/ }),
15225/* 331 */
15226/***/ (function(module, exports, __webpack_require__) {
15227
15228"use strict";
15229
15230/**
15231 * @description 上传的核心方法
15232 * @author wangfupeng
15233 */
15234
15235var _interopRequireDefault = __webpack_require__(0);
15236
15237var _typeof2 = _interopRequireDefault(__webpack_require__(91));
15238
15239var _forEach = _interopRequireDefault(__webpack_require__(6));
15240
15241var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15242
15243(0, _defineProperty["default"])(exports, "__esModule", {
15244 value: true
15245});
15246
15247var util_1 = __webpack_require__(7);
15248/**
15249 * 发送 post 请求(用于文件上传)
15250 * @param url url
15251 * @param option 配置项
15252 */
15253
15254
15255function post(url, option) {
15256 var xhr = new XMLHttpRequest();
15257 xhr.open('POST', url); // 超时,默认 10s
15258
15259 xhr.timeout = option.timeout || 10 * 1000;
15260
15261 xhr.ontimeout = function () {
15262 console.error('wangEditor - 请求超时');
15263 option.onTimeout && option.onTimeout(xhr);
15264 }; // 进度
15265
15266
15267 if (xhr.upload) {
15268 xhr.upload.onprogress = function (e) {
15269 var percent = e.loaded / e.total;
15270 option.onProgress && option.onProgress(percent, e);
15271 };
15272 } // 自定义 header
15273
15274
15275 if (option.headers) {
15276 (0, _forEach["default"])(util_1).call(util_1, option.headers, function (key, val) {
15277 xhr.setRequestHeader(key, val);
15278 });
15279 } // 跨域传 cookie
15280
15281
15282 xhr.withCredentials = !!option.withCredentials; // 上传之前的钩子函数,在 xhr.send() 之前执行
15283
15284 if (option.beforeSend) {
15285 var beforeResult = option.beforeSend(xhr);
15286
15287 if (beforeResult && (0, _typeof2["default"])(beforeResult) === 'object') {
15288 if (beforeResult.prevent) {
15289 // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
15290 return beforeResult.msg;
15291 }
15292 }
15293 } // 服务端返回之后
15294
15295
15296 xhr.onreadystatechange = function () {
15297 if (xhr.readyState !== 4) return;
15298 var status = xhr.status;
15299 if (status < 200) return; // 请求发送过程中,尚未返回
15300
15301 if (status >= 300 && status < 400) return; // 重定向
15302
15303 if (status >= 400) {
15304 // 40x 50x 报错
15305 console.error('wangEditor - XHR 报错,状态码 ' + status);
15306 if (option.onError) option.onError(xhr); // 有,则执行 onError 函数即可
15307
15308 return;
15309 } // status = 200 ,得到结果
15310
15311
15312 var resultStr = xhr.responseText;
15313 var result;
15314
15315 if ((0, _typeof2["default"])(resultStr) !== 'object') {
15316 try {
15317 result = JSON.parse(resultStr);
15318 } catch (ex) {
15319 console.error('wangEditor - 返回结果不是 JSON 格式', resultStr);
15320 if (option.onFail) option.onFail(xhr, resultStr);
15321 return;
15322 }
15323 } else {
15324 result = resultStr;
15325 }
15326
15327 option.onSuccess(xhr, result);
15328 }; // 发送请求
15329
15330
15331 xhr.send(option.formData || null);
15332 return xhr;
15333}
15334
15335exports["default"] = post;
15336
15337/***/ }),
15338/* 332 */
15339/***/ (function(module, exports, __webpack_require__) {
15340
15341"use strict";
15342
15343/**
15344 * @description 上传进度条
15345 * @author wangfupeng
15346 */
15347
15348var _interopRequireDefault = __webpack_require__(0);
15349
15350var _now = _interopRequireDefault(__webpack_require__(333));
15351
15352var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15353
15354var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15355 return mod && mod.__esModule ? mod : {
15356 "default": mod
15357 };
15358};
15359
15360(0, _defineProperty["default"])(exports, "__esModule", {
15361 value: true
15362});
15363
15364var dom_core_1 = __importDefault(__webpack_require__(2));
15365
15366var Progress =
15367/** @class */
15368function () {
15369 function Progress(editor) {
15370 this.editor = editor;
15371 this.$textContainer = editor.$textContainerElem;
15372 this.$bar = dom_core_1["default"]('<div class="w-e-progress"></div>');
15373 this.isShow = false;
15374 this.time = 0;
15375 this.timeoutId = 0;
15376 }
15377 /**
15378 * 显示进度条
15379 * @param progress 进度百分比
15380 */
15381
15382
15383 Progress.prototype.show = function (progress) {
15384 var _this = this; // 不要重新显示
15385
15386
15387 if (this.isShow) {
15388 return;
15389 }
15390
15391 this.isShow = true; // 渲染 $bar
15392
15393 var $bar = this.$bar;
15394 var $textContainer = this.$textContainer;
15395 $textContainer.append($bar); // 改变进度条(防抖,100ms 渲染一次)
15396
15397 if ((0, _now["default"])() - this.time > 100) {
15398 if (progress <= 1) {
15399 $bar.css('width', progress * 100 + '%');
15400 this.time = (0, _now["default"])();
15401 }
15402 } // 500ms 之后隐藏
15403
15404
15405 var timeoutId = this.timeoutId;
15406
15407 if (timeoutId) {
15408 clearTimeout(timeoutId);
15409 }
15410
15411 this.timeoutId = window.setTimeout(function () {
15412 _this.hide();
15413 }, 500);
15414 };
15415 /**
15416 * 隐藏
15417 */
15418
15419
15420 Progress.prototype.hide = function () {
15421 var $bar = this.$bar;
15422 $bar.remove();
15423 this.isShow = false;
15424 this.time = 0;
15425 this.timeoutId = 0;
15426 };
15427
15428 return Progress;
15429}();
15430
15431exports["default"] = Progress;
15432
15433/***/ }),
15434/* 333 */
15435/***/ (function(module, exports, __webpack_require__) {
15436
15437module.exports = __webpack_require__(334);
15438
15439/***/ }),
15440/* 334 */
15441/***/ (function(module, exports, __webpack_require__) {
15442
15443var parent = __webpack_require__(335);
15444
15445module.exports = parent;
15446
15447
15448/***/ }),
15449/* 335 */
15450/***/ (function(module, exports, __webpack_require__) {
15451
15452__webpack_require__(336);
15453var path = __webpack_require__(10);
15454
15455module.exports = path.Date.now;
15456
15457
15458/***/ }),
15459/* 336 */
15460/***/ (function(module, exports, __webpack_require__) {
15461
15462var $ = __webpack_require__(4);
15463
15464// `Date.now` method
15465// https://tc39.github.io/ecma262/#sec-date.now
15466$({ target: 'Date', stat: true }, {
15467 now: function now() {
15468 return new Date().getTime();
15469 }
15470});
15471
15472
15473/***/ }),
15474/* 337 */
15475/***/ (function(module, exports, __webpack_require__) {
15476
15477"use strict";
15478
15479/**
15480 * @description 绑定图片的事件
15481 * @author wangfupeng
15482 */
15483
15484var _interopRequireDefault = __webpack_require__(0);
15485
15486var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15487
15488var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15489 return mod && mod.__esModule ? mod : {
15490 "default": mod
15491 };
15492};
15493
15494(0, _defineProperty["default"])(exports, "__esModule", {
15495 value: true
15496});
15497
15498var paste_img_1 = __importDefault(__webpack_require__(338));
15499
15500var drop_img_1 = __importDefault(__webpack_require__(339));
15501
15502var drag_size_1 = __importDefault(__webpack_require__(340));
15503
15504var tooltip_event_1 = __importDefault(__webpack_require__(348));
15505/**
15506 * 绑定事件
15507 * @param editor 编辑器实例
15508 */
15509
15510
15511function bindEvent(editor) {
15512 // 粘贴图片
15513 paste_img_1["default"](editor); // 拖拽图片
15514
15515 drop_img_1["default"](editor); // 可再扩展其他事件...如图片 tooltip 等
15516 // 拖拽图片尺寸
15517
15518 drag_size_1["default"](editor); //Tooltip
15519
15520 tooltip_event_1["default"](editor);
15521}
15522
15523exports["default"] = bindEvent;
15524
15525/***/ }),
15526/* 338 */
15527/***/ (function(module, exports, __webpack_require__) {
15528
15529"use strict";
15530
15531/**
15532 * @description 粘贴图片
15533 * @author wangfupeng
15534 */
15535
15536var _interopRequireDefault = __webpack_require__(0);
15537
15538var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15539
15540var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15541 return mod && mod.__esModule ? mod : {
15542 "default": mod
15543 };
15544};
15545
15546(0, _defineProperty["default"])(exports, "__esModule", {
15547 value: true
15548});
15549
15550var paste_event_1 = __webpack_require__(122);
15551
15552var upload_img_1 = __importDefault(__webpack_require__(94));
15553/**
15554 * 剪切板是否有 text 或者 html ?
15555 * @param editor 编辑器对象
15556 * @param e 粘贴事件参数
15557 */
15558
15559
15560function _haveTextOrHtml(editor, e) {
15561 var config = editor.config;
15562 var pasteFilterStyle = config.pasteFilterStyle;
15563 var pasteIgnoreImg = config.pasteIgnoreImg;
15564 var pasteHtml = paste_event_1.getPasteHtml(e, pasteFilterStyle, pasteIgnoreImg);
15565 if (pasteHtml) return true;
15566 var pasteText = paste_event_1.getPasteText(e);
15567 if (pasteText) return true;
15568 return false; // text html 都没有,则返回 false
15569}
15570/**
15571 * 粘贴图片事件方法
15572 * @param e 事件参数
15573 */
15574
15575
15576function pasteImgHandler(e, editor) {
15577 if (_haveTextOrHtml(editor, e)) {
15578 // 粘贴过来的有 text 或者 html ,则不执行粘贴图片逻辑
15579 return;
15580 } // 获取粘贴的图片列表
15581
15582
15583 var pastedFiles = paste_event_1.getPasteImgs(e);
15584
15585 if (!pastedFiles.length) {
15586 return;
15587 } // code 中忽略(暂不管它)
15588 // 执行上传
15589
15590
15591 var uploadImg = new upload_img_1["default"](editor);
15592 uploadImg.uploadImg(pastedFiles);
15593}
15594/**
15595 * 粘贴图片
15596 * @param editor 编辑器对象
15597 * @param pasteEvents 粘贴事件列表
15598 */
15599
15600
15601function bindPasteImg(editor) {
15602 // 绑定 paste 事件
15603 editor.txt.eventHooks.pasteEvents.push(function (e) {
15604 pasteImgHandler(e, editor);
15605 });
15606}
15607
15608exports["default"] = bindPasteImg;
15609
15610/***/ }),
15611/* 339 */
15612/***/ (function(module, exports, __webpack_require__) {
15613
15614"use strict";
15615
15616/**
15617 * @description 拖拽上传图片
15618 * @author wangfupeng
15619 */
15620
15621var _interopRequireDefault = __webpack_require__(0);
15622
15623var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15624
15625var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15626 return mod && mod.__esModule ? mod : {
15627 "default": mod
15628 };
15629};
15630
15631(0, _defineProperty["default"])(exports, "__esModule", {
15632 value: true
15633});
15634
15635var upload_img_1 = __importDefault(__webpack_require__(94));
15636
15637function bindDropImg(editor) {
15638 /**
15639 * 拖拽图片的事件
15640 * @param e 事件参数
15641 */
15642 function dropImgHandler(e) {
15643 var files = e.dataTransfer && e.dataTransfer.files;
15644
15645 if (!files || !files.length) {
15646 return;
15647 } // 上传图片
15648
15649
15650 var uploadImg = new upload_img_1["default"](editor);
15651 uploadImg.uploadImg(files);
15652 } // 绑定 drop 事件
15653
15654
15655 editor.txt.eventHooks.dropEvents.push(dropImgHandler);
15656}
15657
15658exports["default"] = bindDropImg;
15659
15660/***/ }),
15661/* 340 */
15662/***/ (function(module, exports, __webpack_require__) {
15663
15664"use strict";
15665
15666/**
15667 * @description 图片拖拽事件绑定
15668 * @author xiaokyo
15669 */
15670
15671var _interopRequireDefault = __webpack_require__(0);
15672
15673var _parseFloat2 = _interopRequireDefault(__webpack_require__(341));
15674
15675var _find = _interopRequireDefault(__webpack_require__(32));
15676
15677var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15678
15679var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15680 return mod && mod.__esModule ? mod : {
15681 "default": mod
15682 };
15683};
15684
15685(0, _defineProperty["default"])(exports, "__esModule", {
15686 value: true
15687});
15688
15689var dom_core_1 = __importDefault(__webpack_require__(2));
15690
15691__webpack_require__(346);
15692
15693var util_1 = __webpack_require__(7);
15694/**
15695 * 设置拖拽框的rect
15696 * @param $drag drag Dom
15697 * @param width 要设置的宽度
15698 * @param height 要设置的高度
15699 * @param left 要设置的左边
15700 * @param top 要设置的顶部距离
15701 */
15702
15703
15704function setDragStyle($drag, width, height, left, top) {
15705 $drag.attr('style', "width:" + width + "px; height:" + height + "px; left:" + left + "px; top:" + top + "px;");
15706}
15707/**
15708 * 生成一个图片指定大小的拖拽框
15709 * @param editor 编辑器实例
15710 * @param $textContainerElem 编辑框对象
15711 */
15712
15713
15714function createDragBox(editor, $textContainerElem) {
15715 var $drag = dom_core_1["default"]("<div class=\"w-e-img-drag-mask\">\n <div class=\"w-e-img-drag-show-size\"></div>\n <div class=\"w-e-img-drag-rb\"></div>\n </div>");
15716 $drag.hide();
15717 $textContainerElem.append($drag);
15718 return $drag;
15719}
15720/**
15721 * 显示拖拽框并设置宽度
15722 * @param $textContainerElem 编辑框实例
15723 * @param $drag 拖拽框对象
15724 */
15725
15726
15727function showDargBox($textContainerElem, $drag, $img) {
15728 var boxRect = $textContainerElem.getBoundingClientRect();
15729 var rect = $img.getBoundingClientRect();
15730 var rectW = rect.width.toFixed(2);
15731 var rectH = rect.height.toFixed(2);
15732 (0, _find["default"])($drag).call($drag, '.w-e-img-drag-show-size').text(rectW + "px * " + rectH + "px");
15733 setDragStyle($drag, (0, _parseFloat2["default"])(rectW), (0, _parseFloat2["default"])(rectH), rect.left - boxRect.left, rect.top - boxRect.top);
15734 $drag.show();
15735}
15736/**
15737 * 生成图片拖拽框的 显示/隐藏 函数
15738 */
15739
15740
15741function createShowHideFn(editor) {
15742 var $textContainerElem = editor.$textContainerElem;
15743 var $imgTarget; // 生成拖拽框
15744
15745 var $drag = createDragBox(editor, $textContainerElem);
15746 /**
15747 * 设置拖拽事件
15748 * @param $drag 拖拽框的domElement
15749 * @param $textContainerElem 编辑器实例
15750 */
15751
15752 function bindDragEvents($drag, $container) {
15753 $drag.on('click', function (e) {
15754 e.stopPropagation();
15755 });
15756 $drag.on('mousedown', '.w-e-img-drag-rb', function (e) {
15757 // e.stopPropagation()
15758 e.preventDefault();
15759 if (!$imgTarget) return;
15760 var firstX = e.clientX;
15761 var firstY = e.clientY;
15762 var boxRect = $container.getBoundingClientRect();
15763 var imgRect = $imgTarget.getBoundingClientRect();
15764 var width = imgRect.width;
15765 var height = imgRect.height;
15766 var left = imgRect.left - boxRect.left;
15767 var top = imgRect.top - boxRect.top;
15768 var ratio = width / height;
15769 var setW = width;
15770 var setH = height;
15771 var $document = dom_core_1["default"](document);
15772
15773 function offEvents() {
15774 $document.off('mousemove', mouseMoveHandler);
15775 $document.off('mouseup', mouseUpHandler);
15776 }
15777
15778 function mouseMoveHandler(ev) {
15779 ev.stopPropagation();
15780 ev.preventDefault();
15781 setW = width + (ev.clientX - firstX);
15782 setH = height + (ev.clientY - firstY); // 等比计算
15783
15784 if (setW / setH != ratio) {
15785 setH = setW / ratio;
15786 }
15787
15788 setW = (0, _parseFloat2["default"])(setW.toFixed(2));
15789 setH = (0, _parseFloat2["default"])(setH.toFixed(2));
15790 (0, _find["default"])($drag).call($drag, '.w-e-img-drag-show-size').text(setW.toFixed(2).replace('.00', '') + "px * " + setH.toFixed(2).replace('.00', '') + "px");
15791 setDragStyle($drag, setW, setH, left, top);
15792 }
15793
15794 $document.on('mousemove', mouseMoveHandler);
15795
15796 function mouseUpHandler() {
15797 $imgTarget.attr('width', setW + '');
15798 $imgTarget.attr('height', setH + '');
15799 var newImgRect = $imgTarget.getBoundingClientRect();
15800 setDragStyle($drag, setW, setH, newImgRect.left - boxRect.left, newImgRect.top - boxRect.top); // 解绑事件
15801
15802 offEvents();
15803 }
15804
15805 $document.on('mouseup', mouseUpHandler); // 解绑事件
15806
15807 $document.on('mouseleave', offEvents);
15808 });
15809 } // 显示拖拽框
15810
15811
15812 function showDrag($target) {
15813 if (util_1.UA.isIE()) return false;
15814
15815 if ($target) {
15816 $imgTarget = $target;
15817 showDargBox($textContainerElem, $drag, $imgTarget);
15818 }
15819 } // 隐藏拖拽框
15820
15821
15822 function hideDrag() {
15823 (0, _find["default"])($textContainerElem).call($textContainerElem, '.w-e-img-drag-mask').hide();
15824 } // 事件绑定
15825
15826
15827 bindDragEvents($drag, $textContainerElem); // 后期改成 blur 触发
15828
15829 dom_core_1["default"](document).on('click', hideDrag);
15830 editor.beforeDestroy(function () {
15831 dom_core_1["default"](document).off('click', hideDrag);
15832 });
15833 return {
15834 showDrag: showDrag,
15835 hideDrag: hideDrag
15836 };
15837}
15838/**
15839 * 点击事件委托
15840 * @param editor 编辑器实例
15841 */
15842
15843
15844function bindDragImgSize(editor) {
15845 var _a = createShowHideFn(editor),
15846 showDrag = _a.showDrag,
15847 hideDrag = _a.hideDrag; // 显示拖拽框
15848
15849
15850 editor.txt.eventHooks.imgClickEvents.push(showDrag); // 隐藏拖拽框
15851
15852 editor.txt.eventHooks.textScrollEvents.push(hideDrag);
15853 editor.txt.eventHooks.keyupEvents.push(hideDrag);
15854 editor.txt.eventHooks.toolbarClickEvents.push(hideDrag);
15855 editor.txt.eventHooks.menuClickEvents.push(hideDrag);
15856 editor.txt.eventHooks.changeEvents.push(hideDrag);
15857}
15858
15859exports["default"] = bindDragImgSize;
15860
15861/***/ }),
15862/* 341 */
15863/***/ (function(module, exports, __webpack_require__) {
15864
15865module.exports = __webpack_require__(342);
15866
15867/***/ }),
15868/* 342 */
15869/***/ (function(module, exports, __webpack_require__) {
15870
15871var parent = __webpack_require__(343);
15872
15873module.exports = parent;
15874
15875
15876/***/ }),
15877/* 343 */
15878/***/ (function(module, exports, __webpack_require__) {
15879
15880__webpack_require__(344);
15881var path = __webpack_require__(10);
15882
15883module.exports = path.parseFloat;
15884
15885
15886/***/ }),
15887/* 344 */
15888/***/ (function(module, exports, __webpack_require__) {
15889
15890var $ = __webpack_require__(4);
15891var parseFloatImplementation = __webpack_require__(345);
15892
15893// `parseFloat` method
15894// https://tc39.github.io/ecma262/#sec-parsefloat-string
15895$({ global: true, forced: parseFloat != parseFloatImplementation }, {
15896 parseFloat: parseFloatImplementation
15897});
15898
15899
15900/***/ }),
15901/* 345 */
15902/***/ (function(module, exports, __webpack_require__) {
15903
15904var global = __webpack_require__(8);
15905var trim = __webpack_require__(90).trim;
15906var whitespaces = __webpack_require__(65);
15907
15908var $parseFloat = global.parseFloat;
15909var FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;
15910
15911// `parseFloat` method
15912// https://tc39.github.io/ecma262/#sec-parsefloat-string
15913module.exports = FORCED ? function parseFloat(string) {
15914 var trimmedString = trim(String(string));
15915 var result = $parseFloat(trimmedString);
15916 return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;
15917} : $parseFloat;
15918
15919
15920/***/ }),
15921/* 346 */
15922/***/ (function(module, exports, __webpack_require__) {
15923
15924var api = __webpack_require__(19);
15925 var content = __webpack_require__(347);
15926
15927 content = content.__esModule ? content.default : content;
15928
15929 if (typeof content === 'string') {
15930 content = [[module.i, content, '']];
15931 }
15932
15933var options = {};
15934
15935options.insert = "head";
15936options.singleton = false;
15937
15938var update = api(content, options);
15939
15940
15941
15942module.exports = content.locals || {};
15943
15944/***/ }),
15945/* 347 */
15946/***/ (function(module, exports, __webpack_require__) {
15947
15948// Imports
15949var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
15950exports = ___CSS_LOADER_API_IMPORT___(false);
15951// Module
15952exports.push([module.i, ".w-e-text-container {\n overflow: hidden;\n}\n.w-e-img-drag-mask {\n position: absolute;\n z-index: 1;\n border: 1px dashed #ccc;\n box-sizing: border-box;\n}\n.w-e-img-drag-mask .w-e-img-drag-rb {\n position: absolute;\n right: -5px;\n bottom: -5px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #ccc;\n cursor: se-resize;\n}\n.w-e-img-drag-mask .w-e-img-drag-show-size {\n min-width: 110px;\n height: 22px;\n line-height: 22px;\n font-size: 14px;\n color: #999;\n position: absolute;\n left: 0;\n top: 0;\n background-color: #999;\n color: #fff;\n border-radius: 2px;\n padding: 0 5px;\n}\n", ""]);
15953// Exports
15954module.exports = exports;
15955
15956
15957/***/ }),
15958/* 348 */
15959/***/ (function(module, exports, __webpack_require__) {
15960
15961"use strict";
15962
15963/**
15964 * @description tooltip 事件
15965 * @author lichunlin
15966 */
15967
15968var _interopRequireDefault = __webpack_require__(0);
15969
15970var _defineProperty = _interopRequireDefault(__webpack_require__(1));
15971
15972var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
15973 return mod && mod.__esModule ? mod : {
15974 "default": mod
15975 };
15976};
15977
15978(0, _defineProperty["default"])(exports, "__esModule", {
15979 value: true
15980});
15981
15982var dom_core_1 = __importDefault(__webpack_require__(2));
15983
15984var Tooltip_1 = __importDefault(__webpack_require__(43));
15985/**
15986 * 生成 Tooltip 的显示隐藏函数
15987 */
15988
15989
15990function createShowHideFn(editor) {
15991 var tooltip;
15992
15993 var t = function t(text, prefix) {
15994 if (prefix === void 0) {
15995 prefix = '';
15996 }
15997
15998 return editor.i18next.t(prefix + text);
15999 };
16000 /**
16001 * 显示 tooltip
16002 * @param $node 链接元素
16003 */
16004
16005
16006 function showImgTooltip($node) {
16007 var conf = [{
16008 $elem: dom_core_1["default"]("<span class='w-e-icon-trash-o'></span>"),
16009 onClick: function onClick(editor, $node) {
16010 // 选中img元素
16011 editor.selection.createRangeByElem($node);
16012 editor.selection.restoreSelection();
16013 editor.cmd["do"]('delete'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
16014
16015 return true;
16016 }
16017 }, {
16018 $elem: dom_core_1["default"]('<span>30%</span>'),
16019 onClick: function onClick(editor, $node) {
16020 $node.attr('width', '30%');
16021 $node.removeAttr('height'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
16022
16023 return true;
16024 }
16025 }, {
16026 $elem: dom_core_1["default"]('<span>50%</span>'),
16027 onClick: function onClick(editor, $node) {
16028 $node.attr('width', '50%');
16029 $node.removeAttr('height'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
16030
16031 return true;
16032 }
16033 }, {
16034 $elem: dom_core_1["default"]('<span>100%</span>'),
16035 onClick: function onClick(editor, $node) {
16036 $node.attr('width', '100%');
16037 $node.removeAttr('height'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
16038
16039 return true;
16040 }
16041 }, {
16042 $elem: dom_core_1["default"]("<span>" + t('重置') + "</span>"),
16043 onClick: function onClick(editor, $node) {
16044 $node.removeAttr('width');
16045 $node.removeAttr('height'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
16046
16047 return true;
16048 }
16049 }];
16050 tooltip = new Tooltip_1["default"](editor, $node, conf);
16051 tooltip.create();
16052 }
16053 /**
16054 * 隐藏 tooltip
16055 */
16056
16057
16058 function hideImgTooltip() {
16059 // 移除 tooltip
16060 if (tooltip) {
16061 tooltip.remove();
16062 tooltip = null;
16063 }
16064 }
16065
16066 return {
16067 showImgTooltip: showImgTooltip,
16068 hideImgTooltip: hideImgTooltip
16069 };
16070}
16071/**
16072 * 绑定 tooltip 事件
16073 * @param editor 编辑器实例
16074 */
16075
16076
16077function bindTooltipEvent(editor) {
16078 var _a = createShowHideFn(editor),
16079 showImgTooltip = _a.showImgTooltip,
16080 hideImgTooltip = _a.hideImgTooltip; // 点击图片元素是,显示 tooltip
16081
16082
16083 editor.txt.eventHooks.imgClickEvents.push(showImgTooltip); // 点击其他地方,或者滚动时,隐藏 tooltip
16084
16085 editor.txt.eventHooks.clickEvents.push(hideImgTooltip);
16086 editor.txt.eventHooks.keyupEvents.push(hideImgTooltip);
16087 editor.txt.eventHooks.toolbarClickEvents.push(hideImgTooltip);
16088 editor.txt.eventHooks.menuClickEvents.push(hideImgTooltip);
16089 editor.txt.eventHooks.textScrollEvents.push(hideImgTooltip);
16090 editor.txt.eventHooks.imgDragBarMouseDownEvents.push(hideImgTooltip); // change 时隐藏
16091
16092 editor.txt.eventHooks.changeEvents.push(hideImgTooltip);
16093}
16094
16095exports["default"] = bindTooltipEvent;
16096
16097/***/ }),
16098/* 349 */
16099/***/ (function(module, exports, __webpack_require__) {
16100
16101"use strict";
16102
16103/**
16104 * @description 增加缩进/减少缩进
16105 * @author tonghan
16106 */
16107
16108var _interopRequireDefault = __webpack_require__(0);
16109
16110var _forEach = _interopRequireDefault(__webpack_require__(6));
16111
16112var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16113
16114var _create = _interopRequireDefault(__webpack_require__(3));
16115
16116var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
16117
16118var __extends = void 0 && (void 0).__extends || function () {
16119 var _extendStatics = function extendStatics(d, b) {
16120 _extendStatics = _setPrototypeOf["default"] || {
16121 __proto__: []
16122 } instanceof Array && function (d, b) {
16123 d.__proto__ = b;
16124 } || function (d, b) {
16125 for (var p in b) {
16126 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
16127 }
16128 };
16129
16130 return _extendStatics(d, b);
16131 };
16132
16133 return function (d, b) {
16134 _extendStatics(d, b);
16135
16136 function __() {
16137 this.constructor = d;
16138 }
16139
16140 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
16141 };
16142}();
16143
16144var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16145 return mod && mod.__esModule ? mod : {
16146 "default": mod
16147 };
16148};
16149
16150(0, _defineProperty["default"])(exports, "__esModule", {
16151 value: true
16152});
16153
16154var dom_core_1 = __importDefault(__webpack_require__(2));
16155
16156var DropListMenu_1 = __importDefault(__webpack_require__(22));
16157
16158var operate_element_1 = __importDefault(__webpack_require__(350));
16159
16160var Indent =
16161/** @class */
16162function (_super) {
16163 __extends(Indent, _super);
16164
16165 function Indent(editor) {
16166 var _this = this;
16167
16168 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-indent-increase\"></i>\n </div>");
16169 var dropListConf = {
16170 width: 130,
16171 title: '设置缩进',
16172 type: 'list',
16173 list: [{
16174 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-indent-increase w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.indent.增加缩进') + "\n <p>"),
16175 value: 'increase'
16176 }, {
16177 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-indent-decrease w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.indent.减少缩进') + "\n <p>"),
16178 value: 'decrease'
16179 }],
16180 clickHandler: function clickHandler(value) {
16181 // 注意 this 是指向当前的 Indent 对象
16182 _this.command(value);
16183 }
16184 };
16185 _this = _super.call(this, $elem, editor, dropListConf) || this;
16186 return _this;
16187 }
16188 /**
16189 * 执行命令
16190 * @param value value
16191 */
16192
16193
16194 Indent.prototype.command = function (value) {
16195 var editor = this.editor;
16196 var $selectionElem = editor.selection.getSelectionContainerElem(); // 判断 当前选区为 textElem 时
16197
16198 if ($selectionElem && editor.$textElem.equal($selectionElem)) {
16199 // 当 当前选区 等于 textElem 时
16200 // 代表 当前选区 可能是一个选择了一个完整的段落或者多个段落
16201 var $elems = editor.selection.getSelectionRangeTopNodes(editor);
16202
16203 if ($elems.length > 0) {
16204 (0, _forEach["default"])($elems).call($elems, function (item) {
16205 operate_element_1["default"](dom_core_1["default"](item), value, editor);
16206 });
16207 }
16208 } else {
16209 // 当 当前选区 不等于 textElem 时
16210 // 代表 当前选区要么是一个段落,要么是段落中的一部分
16211 if ($selectionElem && $selectionElem.length > 0) {
16212 (0, _forEach["default"])($selectionElem).call($selectionElem, function (item) {
16213 operate_element_1["default"](dom_core_1["default"](item), value, editor);
16214 });
16215 }
16216 } // 恢复选区
16217
16218
16219 editor.selection.restoreSelection();
16220 this.tryChangeActive();
16221 };
16222 /**
16223 * 尝试改变菜单激活(高亮)状态
16224 */
16225
16226
16227 Indent.prototype.tryChangeActive = function () {
16228 var editor = this.editor;
16229 var $selectionElem = editor.selection.getSelectionStartElem();
16230 var $selectionStartElem = dom_core_1["default"]($selectionElem).getNodeTop(editor);
16231 if ($selectionStartElem.length <= 0) return;
16232
16233 if ($selectionStartElem.elems[0].style['paddingLeft'] != '') {
16234 this.active();
16235 } else {
16236 this.unActive();
16237 }
16238 };
16239
16240 return Indent;
16241}(DropListMenu_1["default"]);
16242
16243exports["default"] = Indent;
16244
16245/***/ }),
16246/* 350 */
16247/***/ (function(module, exports, __webpack_require__) {
16248
16249"use strict";
16250
16251/**
16252 * @description 对节点 操作 进行封装
16253 * 获取当前节点的段落
16254 * 根据type判断是增加还是减少缩进
16255 * @author tonghan
16256 */
16257
16258var _interopRequireDefault = __webpack_require__(0);
16259
16260var _trim = _interopRequireDefault(__webpack_require__(21));
16261
16262var _slice = _interopRequireDefault(__webpack_require__(54));
16263
16264var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16265
16266var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16267 return mod && mod.__esModule ? mod : {
16268 "default": mod
16269 };
16270};
16271
16272(0, _defineProperty["default"])(exports, "__esModule", {
16273 value: true
16274});
16275
16276var increase_indent_style_1 = __importDefault(__webpack_require__(351));
16277
16278var decrease_indent_style_1 = __importDefault(__webpack_require__(352));
16279
16280var lengthRegex = /^(\d+)(\w+)$/;
16281var percentRegex = /^(\d+)%$/;
16282
16283function parseIndentation(editor) {
16284 var indentation = editor.config.indentation;
16285
16286 if (typeof indentation === 'string') {
16287 if (lengthRegex.test(indentation)) {
16288 var _context;
16289
16290 var _a = (0, _slice["default"])(_context = (0, _trim["default"])(indentation).call(indentation).match(lengthRegex)).call(_context, 1, 3),
16291 value = _a[0],
16292 unit = _a[1];
16293
16294 return {
16295 value: Number(value),
16296 unit: unit
16297 };
16298 } else if (percentRegex.test(indentation)) {
16299 return {
16300 value: Number((0, _trim["default"])(indentation).call(indentation).match(percentRegex)[1]),
16301 unit: '%'
16302 };
16303 }
16304 } else if (indentation.value !== void 0 && indentation.unit) {
16305 return indentation;
16306 }
16307
16308 return {
16309 value: 2,
16310 unit: 'em'
16311 };
16312}
16313
16314function operateElement($node, type, editor) {
16315 var $elem = $node.getNodeTop(editor);
16316 var reg = /^P$/i;
16317
16318 if (reg.test($elem.getNodeName())) {
16319 if (type === 'increase') increase_indent_style_1["default"]($elem, parseIndentation(editor));else if (type === 'decrease') decrease_indent_style_1["default"]($elem, parseIndentation(editor));
16320 }
16321}
16322
16323exports["default"] = operateElement;
16324
16325/***/ }),
16326/* 351 */
16327/***/ (function(module, exports, __webpack_require__) {
16328
16329"use strict";
16330
16331/**
16332 * @description 增加缩进
16333 * @author tonghan
16334 */
16335
16336var _interopRequireDefault = __webpack_require__(0);
16337
16338var _slice = _interopRequireDefault(__webpack_require__(54));
16339
16340var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16341
16342(0, _defineProperty["default"])(exports, "__esModule", {
16343 value: true
16344});
16345
16346function increaseIndentStyle($node, options) {
16347 var $elem = $node.elems[0];
16348
16349 if ($elem.style['paddingLeft'] === '') {
16350 $node.css('padding-left', options.value + options.unit);
16351 } else {
16352 var oldPL = $elem.style['paddingLeft'];
16353 var oldVal = (0, _slice["default"])(oldPL).call(oldPL, 0, oldPL.length - options.unit.length);
16354 var newVal = Number(oldVal) + options.value;
16355 $node.css('padding-left', "" + newVal + options.unit);
16356 }
16357}
16358
16359exports["default"] = increaseIndentStyle;
16360
16361/***/ }),
16362/* 352 */
16363/***/ (function(module, exports, __webpack_require__) {
16364
16365"use strict";
16366
16367/**
16368 * @description 减少缩进
16369 * @author tonghan
16370 */
16371
16372var _interopRequireDefault = __webpack_require__(0);
16373
16374var _slice = _interopRequireDefault(__webpack_require__(54));
16375
16376var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16377
16378(0, _defineProperty["default"])(exports, "__esModule", {
16379 value: true
16380});
16381
16382function decreaseIndentStyle($node, options) {
16383 var $elem = $node.elems[0];
16384
16385 if ($elem.style['paddingLeft'] !== '') {
16386 var oldPL = $elem.style['paddingLeft'];
16387 var oldVal = (0, _slice["default"])(oldPL).call(oldPL, 0, oldPL.length - options.unit.length);
16388 var newVal = Number(oldVal) - options.value;
16389
16390 if (newVal > 0) {
16391 $node.css('padding-left', "" + newVal + options.unit);
16392 } else {
16393 $node.css('padding-left', '');
16394 }
16395 }
16396}
16397
16398exports["default"] = decreaseIndentStyle;
16399
16400/***/ }),
16401/* 353 */
16402/***/ (function(module, exports, __webpack_require__) {
16403
16404"use strict";
16405
16406
16407var _interopRequireDefault = __webpack_require__(0);
16408
16409var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16410
16411var _create = _interopRequireDefault(__webpack_require__(3));
16412
16413var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
16414
16415var __extends = void 0 && (void 0).__extends || function () {
16416 var _extendStatics = function extendStatics(d, b) {
16417 _extendStatics = _setPrototypeOf["default"] || {
16418 __proto__: []
16419 } instanceof Array && function (d, b) {
16420 d.__proto__ = b;
16421 } || function (d, b) {
16422 for (var p in b) {
16423 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
16424 }
16425 };
16426
16427 return _extendStatics(d, b);
16428 };
16429
16430 return function (d, b) {
16431 _extendStatics(d, b);
16432
16433 function __() {
16434 this.constructor = d;
16435 }
16436
16437 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
16438 };
16439}();
16440
16441var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16442 return mod && mod.__esModule ? mod : {
16443 "default": mod
16444 };
16445};
16446
16447(0, _defineProperty["default"])(exports, "__esModule", {
16448 value: true
16449});
16450/**
16451 * @description 插入表情
16452 * @author liuwe
16453 */
16454
16455var dom_core_1 = __importDefault(__webpack_require__(2));
16456
16457var PanelMenu_1 = __importDefault(__webpack_require__(33));
16458
16459var Panel_1 = __importDefault(__webpack_require__(29));
16460
16461var create_panel_conf_1 = __importDefault(__webpack_require__(354));
16462
16463var Emoticon =
16464/** @class */
16465function (_super) {
16466 __extends(Emoticon, _super);
16467
16468 function Emoticon(editor) {
16469 var _this = this;
16470
16471 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-happy\"></i>\n </div>");
16472 _this = _super.call(this, $elem, editor) || this;
16473 return _this;
16474 }
16475 /**
16476 * 创建 panel
16477 */
16478
16479
16480 Emoticon.prototype.createPanel = function () {
16481 var conf = create_panel_conf_1["default"](this.editor);
16482 var panel = new Panel_1["default"](this, conf);
16483 panel.create();
16484 };
16485 /**
16486 * 菜单表情点击事件
16487 */
16488
16489
16490 Emoticon.prototype.clickHandler = function () {
16491 this.createPanel();
16492 };
16493
16494 Emoticon.prototype.tryChangeActive = function () {};
16495
16496 return Emoticon;
16497}(PanelMenu_1["default"]);
16498
16499exports["default"] = Emoticon;
16500
16501/***/ }),
16502/* 354 */
16503/***/ (function(module, exports, __webpack_require__) {
16504
16505"use strict";
16506
16507/**
16508 * @description 表情菜单 panel配置
16509 * @author liuwei
16510 */
16511
16512var _interopRequireDefault = __webpack_require__(0);
16513
16514var _trim = _interopRequireDefault(__webpack_require__(21));
16515
16516var _filter = _interopRequireDefault(__webpack_require__(87));
16517
16518var _map = _interopRequireDefault(__webpack_require__(28));
16519
16520var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16521
16522var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16523 return mod && mod.__esModule ? mod : {
16524 "default": mod
16525 };
16526};
16527
16528(0, _defineProperty["default"])(exports, "__esModule", {
16529 value: true
16530});
16531
16532var dom_core_1 = __importDefault(__webpack_require__(2));
16533
16534function default_1(editor) {
16535 // 声明emotions数据结构
16536 var emotions = editor.config.emotions;
16537 /* tabs配置项 ==================================================================*/
16538 // 生成表情结构 TODO jele type类型待优化
16539
16540 function GenerateExpressionStructure(ele) {
16541 // 返回为一个数组对象
16542 var res = []; // 如果type是image类型则生成一个img标签
16543
16544 if (ele.type == 'image') {
16545 var _context;
16546
16547 res = (0, _map["default"])(_context = ele.content).call(_context, function (con) {
16548 if (typeof con == 'string') return '';
16549 return "<span title=\"" + con.alt + "\">\n <img class=\"eleImg\" style src=\"" + con.src + "\" alt=\"[" + con.alt + "]\">\n </span>";
16550 });
16551 res = (0, _filter["default"])(res).call(res, function (s) {
16552 return s !== '';
16553 });
16554 } //否则直接当内容处理
16555 else {
16556 var _context2;
16557
16558 res = (0, _map["default"])(_context2 = ele.content).call(_context2, function (con) {
16559 return "<span class=\"eleImg\" title=\"" + con + "\">" + con + "</span>";
16560 });
16561 }
16562
16563 return res.join('').replace(/&nbsp;/g, '');
16564 }
16565
16566 var tabsConf = (0, _map["default"])(emotions).call(emotions, function (ele) {
16567 return {
16568 title: editor.i18next.t("menus.panelMenus.emoticon." + ele.title),
16569 // 判断type类型如果是image则以img的形式插入否则以内容
16570 tpl: "<div>" + GenerateExpressionStructure(ele) + "</div>",
16571 events: [{
16572 selector: '.eleImg',
16573 type: 'click',
16574 fn: function fn(e) {
16575 // e为事件对象
16576 var $target = dom_core_1["default"](e.target);
16577 var nodeName = $target.getNodeName();
16578 var insertHtml;
16579
16580 if (nodeName === 'IMG') {
16581 var _context3;
16582
16583 // 插入图片
16584 insertHtml = (0, _trim["default"])(_context3 = $target.parent().html()).call(_context3);
16585 } else {
16586 // 插入 emoji
16587 insertHtml = '<span>' + $target.html() + '</span>';
16588 }
16589
16590 editor.cmd["do"]('insertHTML', insertHtml); // 示函数执行结束之后关闭 panel
16591
16592 return true;
16593 }
16594 }]
16595 };
16596 });
16597 /* tabs配置项 =================================================================end*/
16598 // 最终的配置 -----------------------------------------
16599
16600 var conf = {
16601 width: 300,
16602 height: 230,
16603 tabs: tabsConf
16604 };
16605 return conf;
16606}
16607
16608exports["default"] = default_1;
16609
16610/***/ }),
16611/* 355 */
16612/***/ (function(module, exports, __webpack_require__) {
16613
16614"use strict";
16615
16616/**
16617 * @description 无序列表/有序列表
16618 * @author tonghan
16619 */
16620
16621var _interopRequireDefault = __webpack_require__(0);
16622
16623var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16624
16625var _create = _interopRequireDefault(__webpack_require__(3));
16626
16627var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
16628
16629var __extends = void 0 && (void 0).__extends || function () {
16630 var _extendStatics = function extendStatics(d, b) {
16631 _extendStatics = _setPrototypeOf["default"] || {
16632 __proto__: []
16633 } instanceof Array && function (d, b) {
16634 d.__proto__ = b;
16635 } || function (d, b) {
16636 for (var p in b) {
16637 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
16638 }
16639 };
16640
16641 return _extendStatics(d, b);
16642 };
16643
16644 return function (d, b) {
16645 _extendStatics(d, b);
16646
16647 function __() {
16648 this.constructor = d;
16649 }
16650
16651 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
16652 };
16653}();
16654
16655var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16656 return mod && mod.__esModule ? mod : {
16657 "default": mod
16658 };
16659};
16660
16661(0, _defineProperty["default"])(exports, "__esModule", {
16662 value: true
16663});
16664
16665var dom_core_1 = __importDefault(__webpack_require__(2));
16666
16667var DropListMenu_1 = __importDefault(__webpack_require__(22));
16668
16669var List =
16670/** @class */
16671function (_super) {
16672 __extends(List, _super);
16673
16674 function List(editor) {
16675 var _this = this;
16676
16677 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-list2\"></i>\n </div>");
16678 var dropListConf = {
16679 width: 130,
16680 title: '序列',
16681 type: 'list',
16682 list: [{
16683 $elem: dom_core_1["default"]("\n <p>\n <i class=\"w-e-icon-list2 w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.list.无序列表') + "\n <p>"),
16684 value: 'insertUnorderedList'
16685 }, {
16686 $elem: dom_core_1["default"]("<p>\n <i class=\"w-e-icon-list-numbered w-e-drop-list-item\"></i>\n " + editor.i18next.t('menus.dropListMenu.list.有序列表') + "\n <p>"),
16687 value: 'insertOrderedList'
16688 }],
16689 clickHandler: function clickHandler(value) {
16690 // 注意 this 是指向当前的 List 对象
16691 _this.command(value);
16692 }
16693 };
16694 _this = _super.call(this, $elem, editor, dropListConf) || this;
16695 return _this;
16696 }
16697
16698 List.prototype.command = function (value) {
16699 var editor = this.editor;
16700 var $textElem = editor.$textElem;
16701 editor.selection.restoreSelection(); // 判断是否已经执行了命令
16702
16703 if (editor.cmd.queryCommandState(value)) {
16704 return;
16705 } //禁止在table中添加列表
16706
16707
16708 var $selectionElem = dom_core_1["default"](editor.selection.getSelectionContainerElem());
16709 var $dom = dom_core_1["default"]($selectionElem.elems[0]).parentUntil('TABLE', $selectionElem.elems[0]);
16710
16711 if ($dom && dom_core_1["default"]($dom.elems[0]).getNodeName() === 'TABLE') {
16712 return;
16713 }
16714
16715 editor.cmd["do"](value); // 验证列表是否被包裹在 <p> 之内
16716
16717 if ($selectionElem.getNodeName() === 'LI') {
16718 $selectionElem = $selectionElem.parent();
16719 }
16720
16721 if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) {
16722 return;
16723 }
16724
16725 if ($selectionElem.equal($textElem)) {
16726 // 证明是顶级标签,没有被 <p> 包裹
16727 return;
16728 }
16729
16730 var $parent = $selectionElem.parent();
16731
16732 if ($parent.equal($textElem)) {
16733 // $parent 是顶级标签,不能删除
16734 return;
16735 }
16736
16737 $selectionElem.insertAfter($parent);
16738 $parent.remove(); // 恢复选区
16739
16740 editor.selection.restoreSelection();
16741 this.tryChangeActive();
16742 };
16743
16744 List.prototype.tryChangeActive = function () {};
16745
16746 return List;
16747}(DropListMenu_1["default"]);
16748
16749exports["default"] = List;
16750
16751/***/ }),
16752/* 356 */
16753/***/ (function(module, exports, __webpack_require__) {
16754
16755"use strict";
16756
16757/**
16758 * @description 段落行高 LineHeight
16759 * @author lichunlin
16760 *
16761 */
16762
16763var _interopRequireDefault = __webpack_require__(0);
16764
16765var _indexOf = _interopRequireDefault(__webpack_require__(53));
16766
16767var _forEach = _interopRequireDefault(__webpack_require__(6));
16768
16769var _defineProperty = _interopRequireDefault(__webpack_require__(1));
16770
16771var _create = _interopRequireDefault(__webpack_require__(3));
16772
16773var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
16774
16775var __extends = void 0 && (void 0).__extends || function () {
16776 var _extendStatics = function extendStatics(d, b) {
16777 _extendStatics = _setPrototypeOf["default"] || {
16778 __proto__: []
16779 } instanceof Array && function (d, b) {
16780 d.__proto__ = b;
16781 } || function (d, b) {
16782 for (var p in b) {
16783 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
16784 }
16785 };
16786
16787 return _extendStatics(d, b);
16788 };
16789
16790 return function (d, b) {
16791 _extendStatics(d, b);
16792
16793 function __() {
16794 this.constructor = d;
16795 }
16796
16797 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
16798 };
16799}();
16800
16801var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
16802 return mod && mod.__esModule ? mod : {
16803 "default": mod
16804 };
16805};
16806
16807(0, _defineProperty["default"])(exports, "__esModule", {
16808 value: true
16809});
16810
16811var DropListMenu_1 = __importDefault(__webpack_require__(22));
16812
16813var dom_core_1 = __importDefault(__webpack_require__(2));
16814
16815var lineHeightList_1 = __importDefault(__webpack_require__(357));
16816
16817var util_1 = __webpack_require__(7);
16818
16819var LineHeight =
16820/** @class */
16821function (_super) {
16822 __extends(LineHeight, _super);
16823
16824 function LineHeight(editor) {
16825 var _this = this;
16826
16827 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-row-height\"></i>\n </div>");
16828 var lineHeightMenu = new lineHeightList_1["default"](editor, editor.config.lineHeights);
16829 var DropListMenu = {
16830 width: 100,
16831 title: '设置行高',
16832 type: 'list',
16833 list: lineHeightMenu.getItemList(),
16834 clickHandler: function clickHandler(value) {
16835 //保存焦点
16836 editor.selection.saveRange();
16837
16838 _this.command(value);
16839 }
16840 };
16841 _this = _super.call(this, $elem, editor, DropListMenu) || this;
16842 return _this;
16843 }
16844 /**
16845 * 执行命令
16846 * @param value value
16847 */
16848
16849
16850 LineHeight.prototype.command = function (value) {
16851 var _this = this;
16852
16853 var _a;
16854
16855 var selection = window.getSelection ? window.getSelection() : document.getSelection(); //允许设置dom
16856
16857 var allowArray = ['P'];
16858 var editor = this.editor;
16859 var st = ''; //恢复焦点
16860
16861 editor.selection.restoreSelection();
16862 var $selectionElem = dom_core_1["default"](editor.selection.getSelectionContainerElem());
16863 var $selectionAll = dom_core_1["default"](editor.selection.getSelectionContainerElem()); // let dom:HTMLElement= $selectionElem.elems[0]
16864
16865 var dom = dom_core_1["default"](editor.selection.getSelectionStartElem()).elems[0]; //获取元素的style
16866
16867 var style = '';
16868 var styleList = []; //点击默认的时候删除line-height属性 并重新设置 style
16869
16870 var styleStr = ''; //选中多行操作
16871
16872 if ($selectionElem && editor.$textElem.equal($selectionElem)) {
16873 var isIE = util_1.UA.isIE();
16874
16875 if (isIE) {
16876 // ie下禁止多行操作 避免多行造成除第一行外的段落内容都被删除
16877 return;
16878 } //获取range 开头结束的dom在 祖父元素的下标
16879
16880
16881 var indexStore_1 = [];
16882 var arrayDom_a = [];
16883 var arrayDom_b = []; //获取range 开头结束的dom
16884
16885 var StartElem_1 = dom_core_1["default"](editor.selection.getSelectionStartElem());
16886 var EndElem_1 = dom_core_1["default"](editor.selection.getSelectionEndElem());
16887 var childList = (_a = editor.selection.getRange()) === null || _a === void 0 ? void 0 : _a.commonAncestorContainer.childNodes;
16888 arrayDom_a.push(this.getDom(StartElem_1.elems[0]));
16889 childList === null || childList === void 0 ? void 0 : (0, _forEach["default"])(childList).call(childList, function (item, index) {
16890 if (item === _this.getDom(StartElem_1.elems[0])) {
16891 indexStore_1.push(index);
16892 }
16893
16894 if (item === _this.getDom(EndElem_1.elems[0])) {
16895 indexStore_1.push(index);
16896 }
16897 }); //遍历 获取头尾之间的dom元素
16898
16899 var i = 0;
16900 var d = void 0;
16901 arrayDom_b.push(this.getDom(StartElem_1.elems[0]));
16902
16903 while (arrayDom_a[i] !== this.getDom(EndElem_1.elems[0])) {
16904 d = dom_core_1["default"](arrayDom_a[i].nextElementSibling).elems[0];
16905
16906 if ((0, _indexOf["default"])(allowArray).call(allowArray, dom_core_1["default"](d).getNodeName()) !== -1) {
16907 arrayDom_b.push(d);
16908 arrayDom_a.push(d);
16909 } else {
16910 arrayDom_a.push(d);
16911 }
16912
16913 i++;
16914 } //设置段落选取 全选
16915
16916
16917 if (dom_core_1["default"](arrayDom_a[0]).getNodeName() !== 'P') {
16918 i = 0; //遍历集合得到第一个p标签的下标
16919
16920 for (var k = 0; k < arrayDom_a.length; k++) {
16921 if (dom_core_1["default"](arrayDom_a[k]).getNodeName() === 'P') {
16922 i = k;
16923 break;
16924 }
16925 } //i===0 说明选区中没有p段落
16926
16927
16928 if (i === 0) {
16929 return;
16930 }
16931
16932 var _i = 0;
16933
16934 while (_i !== i) {
16935 arrayDom_a.shift();
16936 _i++;
16937 }
16938 } //设置替换的选区
16939
16940
16941 this.setRange(arrayDom_a[0], arrayDom_a[arrayDom_a.length - 1]); //生成innerHtml html字符串
16942
16943 (0, _forEach["default"])(arrayDom_a).call(arrayDom_a, function (item) {
16944 style = item.getAttribute('style');
16945 styleList = style ? style.split(';') : [];
16946 styleStr = '';
16947
16948 if (dom_core_1["default"](item).getNodeName() === 'P') {
16949 //判断是否 点击默认
16950 value ? styleStr = _this.styleProcessing(styleList) + ("line-height:" + value + ";") : styleStr = _this.styleProcessing(styleList);
16951 st = st + ("<" + dom_core_1["default"](item).getNodeName().toLowerCase() + " style=\"" + styleStr + "\">" + item.innerHTML + "</" + dom_core_1["default"](item).getNodeName().toLowerCase() + ">");
16952 } else {
16953 styleStr = _this.styleProcessing(styleList);
16954 st = st + ("<" + dom_core_1["default"](item).getNodeName().toLowerCase() + " style=\"" + styleStr + "\">" + item.innerHTML + "</" + dom_core_1["default"](item).getNodeName().toLowerCase() + ">");
16955 }
16956 });
16957 this.action(st, editor); //恢复已选择的选区
16958
16959 dom = $selectionAll.elems[0];
16960 this.setRange(dom.children[indexStore_1[0]], dom.children[indexStore_1[1]]);
16961 return;
16962 } //遍历dom 获取祖父元素 直到contenteditable属性的div标签
16963
16964
16965 dom = this.getDom(dom); //校验允许lineheight设置标签
16966
16967 if ((0, _indexOf["default"])(allowArray).call(allowArray, dom_core_1["default"](dom).getNodeName()) === -1) {
16968 return;
16969 }
16970
16971 style = dom.getAttribute('style');
16972 styleList = style ? style.split(';') : []; //全选 dom下所有的内容
16973
16974 selection === null || selection === void 0 ? void 0 : selection.selectAllChildren(dom); //保存range
16975
16976 editor.selection.saveRange(); //判断是否存在value 默认 移除line-height
16977
16978 if (!value) {
16979 if (style) {
16980 styleStr = this.styleProcessing(styleList); //避免没有其它属性 只留下 ‘style’ 减少代码
16981
16982 if (styleStr === '') {
16983 st = "<" + dom_core_1["default"](dom).getNodeName().toLowerCase() + ">" + dom.innerHTML + "</" + dom_core_1["default"](dom).getNodeName().toLowerCase() + ">";
16984 } else {
16985 st = "<" + dom_core_1["default"](dom).getNodeName().toLowerCase() + " style=\"" + styleStr + "\">" + dom.innerHTML + "</" + dom_core_1["default"](dom).getNodeName().toLowerCase() + ">";
16986 }
16987
16988 this.action(st, editor);
16989 }
16990
16991 return;
16992 }
16993
16994 if (style) {
16995 //存在style 检索其它style属性
16996 styleStr = this.styleProcessing(styleList) + ("line-height:" + value + ";");
16997 } else {
16998 styleStr = "line-height:" + value + ";";
16999 }
17000
17001 st = "<" + dom_core_1["default"](dom).getNodeName().toLowerCase() + " style=\"" + styleStr + "\">" + dom.innerHTML + "</" + dom_core_1["default"](dom).getNodeName().toLowerCase() + ">"; //防止BLOCKQUOTE叠加
17002
17003 if (dom_core_1["default"](dom).getNodeName() === 'BLOCKQUOTE') {
17004 dom_core_1["default"](dom).css('line-height', value);
17005 } else {
17006 this.action(st, editor);
17007 }
17008 };
17009 /**
17010 * 遍历dom 获取祖父元素 直到contenteditable属性的div标签
17011 *
17012 */
17013
17014
17015 LineHeight.prototype.getDom = function (dom) {
17016 var DOM = dom_core_1["default"](dom).elems[0];
17017
17018 if (!DOM.parentNode) {
17019 return DOM;
17020 }
17021
17022 function getParentNode($node, editor) {
17023 var $parent = dom_core_1["default"]($node.parentNode);
17024
17025 if (editor.$textElem.equal($parent)) {
17026 return $node;
17027 } else {
17028 return getParentNode($parent.elems[0], editor);
17029 }
17030 }
17031
17032 DOM = getParentNode(DOM, this.editor);
17033 return DOM;
17034 };
17035 /**
17036 * 执行 document.execCommand
17037 *
17038 */
17039
17040
17041 LineHeight.prototype.action = function (html_str, editor) {
17042 editor.cmd["do"]('insertHTML', html_str);
17043 };
17044 /**
17045 * style 处理
17046 */
17047
17048
17049 LineHeight.prototype.styleProcessing = function (styleList) {
17050 var styleStr = '';
17051 (0, _forEach["default"])(styleList).call(styleList, function (item) {
17052 item !== '' && (0, _indexOf["default"])(item).call(item, 'line-height') === -1 ? styleStr = styleStr + item + ';' : '';
17053 });
17054 return styleStr;
17055 };
17056 /**
17057 * 段落全选 比如:避免11变成111
17058 */
17059
17060
17061 LineHeight.prototype.setRange = function (startDom, endDom) {
17062 var editor = this.editor;
17063 var selection = window.getSelection ? window.getSelection() : document.getSelection(); //清除所有的选区
17064
17065 selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
17066 var range = document.createRange();
17067 var star = startDom;
17068 var end = endDom;
17069 range.setStart(star, 0);
17070 range.setEnd(end, 1);
17071 selection === null || selection === void 0 ? void 0 : selection.addRange(range); //保存设置好的选区
17072
17073 editor.selection.saveRange(); //清除所有的选区
17074
17075 selection === null || selection === void 0 ? void 0 : selection.removeAllRanges(); //恢复选区
17076
17077 editor.selection.restoreSelection();
17078 };
17079 /**
17080 * 尝试修改菜单激活状态
17081 */
17082
17083
17084 LineHeight.prototype.tryChangeActive = function () {
17085 var editor = this.editor;
17086 var $selectionElem = editor.selection.getSelectionContainerElem();
17087
17088 if ($selectionElem && editor.$textElem.equal($selectionElem)) {
17089 //避免选中多行设置
17090 return;
17091 }
17092
17093 var dom = dom_core_1["default"](editor.selection.getSelectionStartElem());
17094 dom = this.getDom(dom.elems[0]);
17095 var style = dom.getAttribute('style') ? dom.getAttribute('style') : ''; //判断当前标签是否具有line-height属性
17096
17097 if (style && (0, _indexOf["default"])(style).call(style, 'line-height') !== -1) {
17098 this.active();
17099 } else {
17100 this.unActive();
17101 }
17102 };
17103
17104 return LineHeight;
17105}(DropListMenu_1["default"]);
17106
17107exports["default"] = LineHeight;
17108
17109/***/ }),
17110/* 357 */
17111/***/ (function(module, exports, __webpack_require__) {
17112
17113"use strict";
17114
17115
17116var _interopRequireDefault = __webpack_require__(0);
17117
17118var _forEach = _interopRequireDefault(__webpack_require__(6));
17119
17120var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17121
17122var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17123 return mod && mod.__esModule ? mod : {
17124 "default": mod
17125 };
17126};
17127
17128(0, _defineProperty["default"])(exports, "__esModule", {
17129 value: true
17130});
17131/**
17132 * @description 行高 菜单
17133 * @author lichunlin
17134 */
17135
17136var dom_core_1 = __importDefault(__webpack_require__(2));
17137
17138var lineHeightList =
17139/** @class */
17140function () {
17141 function lineHeightList(editor, list) {
17142 var _this = this;
17143
17144 this.itemList = [{
17145 $elem: dom_core_1["default"]("<span>" + editor.i18next.t('默认') + "</span>"),
17146 value: ''
17147 }];
17148 (0, _forEach["default"])(list).call(list, function (item) {
17149 _this.itemList.push({
17150 $elem: dom_core_1["default"]("<span>" + item + "</span>"),
17151 value: item
17152 });
17153 });
17154 }
17155
17156 lineHeightList.prototype.getItemList = function () {
17157 return this.itemList;
17158 };
17159
17160 return lineHeightList;
17161}();
17162
17163exports["default"] = lineHeightList;
17164
17165/***/ }),
17166/* 358 */
17167/***/ (function(module, exports, __webpack_require__) {
17168
17169"use strict";
17170
17171/**
17172 * @description 撤销
17173 * @author tonghan
17174 */
17175
17176var _interopRequireDefault = __webpack_require__(0);
17177
17178var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17179
17180var _create = _interopRequireDefault(__webpack_require__(3));
17181
17182var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
17183
17184var __extends = void 0 && (void 0).__extends || function () {
17185 var _extendStatics = function extendStatics(d, b) {
17186 _extendStatics = _setPrototypeOf["default"] || {
17187 __proto__: []
17188 } instanceof Array && function (d, b) {
17189 d.__proto__ = b;
17190 } || function (d, b) {
17191 for (var p in b) {
17192 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
17193 }
17194 };
17195
17196 return _extendStatics(d, b);
17197 };
17198
17199 return function (d, b) {
17200 _extendStatics(d, b);
17201
17202 function __() {
17203 this.constructor = d;
17204 }
17205
17206 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
17207 };
17208}();
17209
17210var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17211 return mod && mod.__esModule ? mod : {
17212 "default": mod
17213 };
17214};
17215
17216(0, _defineProperty["default"])(exports, "__esModule", {
17217 value: true
17218});
17219
17220var dom_core_1 = __importDefault(__webpack_require__(2));
17221
17222var BtnMenu_1 = __importDefault(__webpack_require__(24));
17223
17224var Undo =
17225/** @class */
17226function (_super) {
17227 __extends(Undo, _super);
17228
17229 function Undo(editor) {
17230 var _this = this;
17231
17232 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-undo\"></i>\n </div>");
17233 _this = _super.call(this, $elem, editor) || this;
17234 return _this;
17235 }
17236 /**
17237 * 点击事件
17238 */
17239
17240
17241 Undo.prototype.clickHandler = function () {
17242 this.editor.history.revoke();
17243 };
17244 /**
17245 * 尝试修改菜单激活状态
17246 */
17247
17248
17249 Undo.prototype.tryChangeActive = function () {
17250 // 标准模式下才进行操作
17251 if (!this.editor.isCompatibleMode) {
17252 if (this.editor.history.size[0]) {
17253 this.active();
17254 } else {
17255 this.unActive();
17256 }
17257 }
17258 };
17259
17260 return Undo;
17261}(BtnMenu_1["default"]);
17262
17263exports["default"] = Undo;
17264
17265/***/ }),
17266/* 359 */
17267/***/ (function(module, exports, __webpack_require__) {
17268
17269"use strict";
17270
17271/**
17272 * @description 重做
17273 * @author tonghan
17274 */
17275
17276var _interopRequireDefault = __webpack_require__(0);
17277
17278var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17279
17280var _create = _interopRequireDefault(__webpack_require__(3));
17281
17282var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
17283
17284var __extends = void 0 && (void 0).__extends || function () {
17285 var _extendStatics = function extendStatics(d, b) {
17286 _extendStatics = _setPrototypeOf["default"] || {
17287 __proto__: []
17288 } instanceof Array && function (d, b) {
17289 d.__proto__ = b;
17290 } || function (d, b) {
17291 for (var p in b) {
17292 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
17293 }
17294 };
17295
17296 return _extendStatics(d, b);
17297 };
17298
17299 return function (d, b) {
17300 _extendStatics(d, b);
17301
17302 function __() {
17303 this.constructor = d;
17304 }
17305
17306 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
17307 };
17308}();
17309
17310var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17311 return mod && mod.__esModule ? mod : {
17312 "default": mod
17313 };
17314};
17315
17316(0, _defineProperty["default"])(exports, "__esModule", {
17317 value: true
17318});
17319
17320var dom_core_1 = __importDefault(__webpack_require__(2));
17321
17322var BtnMenu_1 = __importDefault(__webpack_require__(24));
17323
17324var Redo =
17325/** @class */
17326function (_super) {
17327 __extends(Redo, _super);
17328
17329 function Redo(editor) {
17330 var _this = this;
17331
17332 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"w-e-icon-redo\"></i>\n </div>");
17333 _this = _super.call(this, $elem, editor) || this;
17334 return _this;
17335 }
17336 /**
17337 * 点击事件
17338 */
17339
17340
17341 Redo.prototype.clickHandler = function () {
17342 this.editor.history.restore();
17343 };
17344 /**
17345 * 尝试修改菜单激活状态
17346 */
17347
17348
17349 Redo.prototype.tryChangeActive = function () {
17350 // 标准模式下才进行操作
17351 if (!this.editor.isCompatibleMode) {
17352 if (this.editor.history.size[1]) {
17353 this.active();
17354 } else {
17355 this.unActive();
17356 }
17357 }
17358 };
17359
17360 return Redo;
17361}(BtnMenu_1["default"]);
17362
17363exports["default"] = Redo;
17364
17365/***/ }),
17366/* 360 */
17367/***/ (function(module, exports, __webpack_require__) {
17368
17369"use strict";
17370
17371/**
17372 * @description 创建table
17373 * @author lichunlin
17374 */
17375
17376var _interopRequireDefault = __webpack_require__(0);
17377
17378var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17379
17380var _create = _interopRequireDefault(__webpack_require__(3));
17381
17382var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
17383
17384var __extends = void 0 && (void 0).__extends || function () {
17385 var _extendStatics = function extendStatics(d, b) {
17386 _extendStatics = _setPrototypeOf["default"] || {
17387 __proto__: []
17388 } instanceof Array && function (d, b) {
17389 d.__proto__ = b;
17390 } || function (d, b) {
17391 for (var p in b) {
17392 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
17393 }
17394 };
17395
17396 return _extendStatics(d, b);
17397 };
17398
17399 return function (d, b) {
17400 _extendStatics(d, b);
17401
17402 function __() {
17403 this.constructor = d;
17404 }
17405
17406 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
17407 };
17408}();
17409
17410var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17411 return mod && mod.__esModule ? mod : {
17412 "default": mod
17413 };
17414};
17415
17416(0, _defineProperty["default"])(exports, "__esModule", {
17417 value: true
17418});
17419
17420var PanelMenu_1 = __importDefault(__webpack_require__(33));
17421
17422var dom_core_1 = __importDefault(__webpack_require__(2));
17423
17424var create_panel_conf_1 = __importDefault(__webpack_require__(361));
17425
17426var Panel_1 = __importDefault(__webpack_require__(29));
17427
17428var index_1 = __importDefault(__webpack_require__(365));
17429
17430var Table =
17431/** @class */
17432function (_super) {
17433 __extends(Table, _super);
17434
17435 function Table(editor) {
17436 var _this = this;
17437
17438 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-table2"></i></div>');
17439 _this = _super.call(this, $elem, editor) || this; // 绑定事件
17440
17441 index_1["default"](editor);
17442 return _this;
17443 }
17444 /**
17445 * 菜单点击事件
17446 */
17447
17448
17449 Table.prototype.clickHandler = function () {
17450 this.createPanel();
17451 };
17452 /**
17453 * 创建 panel
17454 */
17455
17456
17457 Table.prototype.createPanel = function () {
17458 var conf = create_panel_conf_1["default"](this.editor);
17459 var panel = new Panel_1["default"](this, conf);
17460 panel.create();
17461 };
17462 /**
17463 * 尝试修改菜单 active 状态
17464 */
17465
17466
17467 Table.prototype.tryChangeActive = function () {};
17468
17469 return Table;
17470}(PanelMenu_1["default"]);
17471
17472exports["default"] = Table;
17473
17474/***/ }),
17475/* 361 */
17476/***/ (function(module, exports, __webpack_require__) {
17477
17478"use strict";
17479
17480/**
17481 * @description table 菜单 panel tab 配置
17482 * @author lichunlin
17483 */
17484
17485var _interopRequireDefault = __webpack_require__(0);
17486
17487var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17488
17489var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17490 return mod && mod.__esModule ? mod : {
17491 "default": mod
17492 };
17493};
17494
17495(0, _defineProperty["default"])(exports, "__esModule", {
17496 value: true
17497});
17498
17499var util_1 = __webpack_require__(7);
17500
17501var dom_core_1 = __importDefault(__webpack_require__(2));
17502
17503__webpack_require__(362);
17504
17505var create_table_1 = __importDefault(__webpack_require__(364));
17506
17507function default_1(editor) {
17508 var createTable = new create_table_1["default"](editor); // panel 中需要用到的id
17509
17510 var colId = util_1.getRandom('w-col-id');
17511 var rowId = util_1.getRandom('w-row-id');
17512 var insertBtnId = util_1.getRandom('btn-link');
17513 var i18nPrefix = 'menus.panelMenus.table.';
17514
17515 var t = function t(text) {
17516 return editor.i18next.t(text);
17517 }; // tabs 配置 -----------------------------------------
17518
17519
17520 var tabsConf = [{
17521 title: t(i18nPrefix + "\u63D2\u5165\u8868\u683C"),
17522 tpl: "<div>\n <div class=\"w-e-table\">\n <span>" + t('创建') + "</span>\n <input id=\"" + rowId + "\" type=\"text\" class=\"w-e-table-input\" value=\"5\"/></td>\n <span>" + t(i18nPrefix + "\u884C") + "</span>\n <input id=\"" + colId + "\" type=\"text\" class=\"w-e-table-input\" value=\"5\"/></td>\n <span>" + (t(i18nPrefix + "\u5217") + t(i18nPrefix + "\u7684") + t(i18nPrefix + "\u8868\u683C")) + "</span>\n </div>\n <div class=\"w-e-button-container\">\n <button id=\"" + insertBtnId + "\" class=\"right\">" + t('插入') + "</button>\n </div>\n </div>",
17523 events: [{
17524 selector: '#' + insertBtnId,
17525 type: 'click',
17526 fn: function fn() {
17527 var colValue = Number(dom_core_1["default"]('#' + colId).val());
17528 var rowValue = Number(dom_core_1["default"]('#' + rowId).val()); //校验是否传值
17529
17530 if (colValue && rowValue) {
17531 createTable.createAction(rowValue, colValue);
17532 } // 返回 true 表示函数执行结束之后关闭 panel
17533
17534
17535 return true;
17536 }
17537 }]
17538 }]; // tabs end
17539 // 最终的配置 -----------------------------------------
17540
17541 var conf = {
17542 width: 330,
17543 height: 0,
17544 tabs: []
17545 };
17546 conf.tabs.push(tabsConf[0]);
17547 return conf;
17548}
17549
17550exports["default"] = default_1;
17551
17552/***/ }),
17553/* 362 */
17554/***/ (function(module, exports, __webpack_require__) {
17555
17556var api = __webpack_require__(19);
17557 var content = __webpack_require__(363);
17558
17559 content = content.__esModule ? content.default : content;
17560
17561 if (typeof content === 'string') {
17562 content = [[module.i, content, '']];
17563 }
17564
17565var options = {};
17566
17567options.insert = "head";
17568options.singleton = false;
17569
17570var update = api(content, options);
17571
17572
17573
17574module.exports = content.locals || {};
17575
17576/***/ }),
17577/* 363 */
17578/***/ (function(module, exports, __webpack_require__) {
17579
17580// Imports
17581var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
17582exports = ___CSS_LOADER_API_IMPORT___(false);
17583// Module
17584exports.push([module.i, ".w-e-table {\n display: flex;\n}\n.w-e-table .w-e-table-input {\n width: 40px;\n text-align: center!important;\n margin: 0 5px;\n}\n", ""]);
17585// Exports
17586module.exports = exports;
17587
17588
17589/***/ }),
17590/* 364 */
17591/***/ (function(module, exports, __webpack_require__) {
17592
17593"use strict";
17594
17595/**
17596 * @description 创建tabel
17597 * @author lichunlin
17598 */
17599
17600var _interopRequireDefault = __webpack_require__(0);
17601
17602var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17603
17604var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17605 return mod && mod.__esModule ? mod : {
17606 "default": mod
17607 };
17608};
17609
17610(0, _defineProperty["default"])(exports, "__esModule", {
17611 value: true
17612});
17613
17614var dom_core_1 = __importDefault(__webpack_require__(2));
17615
17616var CreateTable =
17617/** @class */
17618function () {
17619 function CreateTable(editor) {
17620 this.editor = editor;
17621 }
17622 /**
17623 * 执行创建
17624 * @param rowValue 行数
17625 * @param colValue 列数
17626 */
17627
17628
17629 CreateTable.prototype.createAction = function (rowValue, colValue) {
17630 var editor = this.editor; //不允许在有序列表中添加table
17631
17632 var $selectionElem = dom_core_1["default"](editor.selection.getSelectionContainerElem());
17633 var $ul = dom_core_1["default"]($selectionElem.elems[0]).parentUntil('UL', $selectionElem.elems[0]);
17634 var $ol = dom_core_1["default"]($selectionElem.elems[0]).parentUntil('OL', $selectionElem.elems[0]);
17635
17636 if ($ul || $ol) {
17637 return;
17638 }
17639
17640 var tableDom = this.createTableHtml(rowValue, colValue);
17641 editor.cmd["do"]('insertHTML', tableDom);
17642 };
17643 /**
17644 * 创建table、行、列
17645 * @param rowValue 行数
17646 * @param colValue 列数
17647 */
17648
17649
17650 CreateTable.prototype.createTableHtml = function (rowValue, colValue) {
17651 var rowStr = '';
17652 var colStr = '';
17653
17654 for (var i = 0; i < rowValue; i++) {
17655 colStr = '';
17656
17657 for (var j = 0; j < colValue; j++) {
17658 if (i === 0) {
17659 colStr = colStr + '<th></th>';
17660 } else {
17661 colStr = colStr + '<td></td>';
17662 }
17663 }
17664
17665 rowStr = rowStr + '<tr>' + colStr + '</tr>';
17666 }
17667
17668 var tableDom = "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tbody>" + rowStr + '</tbody></table><p><br></p>';
17669 return tableDom;
17670 };
17671
17672 return CreateTable;
17673}();
17674
17675exports["default"] = CreateTable;
17676
17677/***/ }),
17678/* 365 */
17679/***/ (function(module, exports, __webpack_require__) {
17680
17681"use strict";
17682
17683/**
17684 * @description 绑定点击事件
17685 * @author lichunlin
17686 */
17687
17688var _interopRequireDefault = __webpack_require__(0);
17689
17690var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17691
17692var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17693 return mod && mod.__esModule ? mod : {
17694 "default": mod
17695 };
17696};
17697
17698(0, _defineProperty["default"])(exports, "__esModule", {
17699 value: true
17700});
17701
17702var tooltip_event_1 = __importDefault(__webpack_require__(366));
17703/**
17704 * 绑定事件
17705 * @param editor 编辑器实例
17706 */
17707
17708
17709function bindEvent(editor) {
17710 //Tooltip
17711 tooltip_event_1["default"](editor);
17712}
17713
17714exports["default"] = bindEvent;
17715
17716/***/ }),
17717/* 366 */
17718/***/ (function(module, exports, __webpack_require__) {
17719
17720"use strict";
17721
17722/**
17723 * @description tooltip 事件
17724 * @author lichunlin
17725 */
17726
17727var _interopRequireDefault = __webpack_require__(0);
17728
17729var _defineProperty = _interopRequireDefault(__webpack_require__(1));
17730
17731var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
17732 return mod && mod.__esModule ? mod : {
17733 "default": mod
17734 };
17735};
17736
17737(0, _defineProperty["default"])(exports, "__esModule", {
17738 value: true
17739});
17740
17741var dom_core_1 = __importDefault(__webpack_require__(2));
17742
17743var Tooltip_1 = __importDefault(__webpack_require__(43)); //操作事件
17744
17745
17746var operating_event_1 = __importDefault(__webpack_require__(367));
17747
17748var getNode_1 = __importDefault(__webpack_require__(368));
17749/**
17750 * 生成 Tooltip 的显示隐藏函数
17751 */
17752
17753
17754function createShowHideFn(editor) {
17755 var tooltip;
17756 /**
17757 * 显示 tooltip
17758 * @param table元素
17759 */
17760
17761 function showTableTooltip($node) {
17762 var getnode = new getNode_1["default"](editor);
17763 var i18nPrefix = 'menus.panelMenus.table.';
17764
17765 var t = function t(text, prefix) {
17766 if (prefix === void 0) {
17767 prefix = i18nPrefix;
17768 }
17769
17770 return editor.i18next.t(prefix + text);
17771 };
17772
17773 var conf = [{
17774 // $elem: $("<span class='w-e-icon-trash-o'></span>"),
17775 $elem: dom_core_1["default"]("<span>" + t('删除表格') + "</span>"),
17776 onClick: function onClick(editor, $node) {
17777 // 选中img元素
17778 editor.selection.createRangeByElem($node);
17779 editor.selection.restoreSelection();
17780 editor.cmd["do"]('insertHTML', '<p><br></p>'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
17781
17782 return true;
17783 }
17784 }, {
17785 $elem: dom_core_1["default"]("<span>" + t('添加行') + "</span>"),
17786 onClick: function onClick(editor, $node) {
17787 // 禁止多选操作
17788 var isMore = isMoreRowAction(editor);
17789
17790 if (isMore) {
17791 return true;
17792 } //当前元素
17793
17794
17795 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前行
17796
17797 var $currentRow = getnode.getRowNode(selectDom.elems[0]);
17798
17799 if (!$currentRow) {
17800 return true;
17801 } //获取当前行的index
17802
17803
17804 var index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow)); //生成要替换的html
17805
17806 var htmlStr = getnode.getTableHtml($node.elems[0]); //生成新的table
17807
17808 var newdom = getnode.getTableHtml(operating_event_1["default"].ProcessingRow(dom_core_1["default"](htmlStr), index).elems[0]); // 选中table
17809
17810 editor.selection.createRangeByElem($node);
17811 editor.selection.restoreSelection();
17812 editor.cmd["do"]('insertHTML', newdom);
17813 return true;
17814 }
17815 }, {
17816 $elem: dom_core_1["default"]("<span>" + t('删除行') + "</span>"),
17817 onClick: function onClick(editor, $node) {
17818 // 禁止多选操作
17819 var isMore = isMoreRowAction(editor);
17820
17821 if (isMore) {
17822 return true;
17823 } //当前元素
17824
17825
17826 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前行
17827
17828 var $currentRow = getnode.getRowNode(selectDom.elems[0]);
17829
17830 if (!$currentRow) {
17831 return true;
17832 } //获取当前行的index
17833
17834
17835 var index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow)); //生成要替换的html
17836
17837 var htmlStr = getnode.getTableHtml($node.elems[0]); //获取新生成的table 判断是否是最后一行被删除 是 删除整个table
17838
17839 var trLength = operating_event_1["default"].DeleteRow(dom_core_1["default"](htmlStr), index).elems[0].childNodes[0].childNodes.length; //生成新的table
17840
17841 var newdom = ''; // 选中table
17842
17843 editor.selection.createRangeByElem($node);
17844 editor.selection.restoreSelection();
17845
17846 if (trLength === 0) {
17847 newdom = '<p><br></p>';
17848 } else {
17849 newdom = getnode.getTableHtml(operating_event_1["default"].DeleteRow(dom_core_1["default"](htmlStr), index).elems[0]);
17850 }
17851
17852 editor.cmd["do"]('insertHTML', newdom);
17853 return true;
17854 }
17855 }, {
17856 $elem: dom_core_1["default"]("<span>" + t('添加列') + "</span>"),
17857 onClick: function onClick(editor, $node) {
17858 // 禁止多选操作
17859 var isMore = isMoreRowAction(editor);
17860
17861 if (isMore) {
17862 return true;
17863 } //当前元素
17864
17865
17866 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前列的index
17867
17868 var index = getnode.getCurrentColIndex(selectDom.elems[0]); //生成要替换的html
17869
17870 var htmlStr = getnode.getTableHtml($node.elems[0]); //生成新的table
17871
17872 var newdom = getnode.getTableHtml(operating_event_1["default"].ProcessingCol(dom_core_1["default"](htmlStr), index).elems[0]); // 选中table
17873
17874 editor.selection.createRangeByElem($node);
17875 editor.selection.restoreSelection();
17876 editor.cmd["do"]('insertHTML', newdom);
17877 return true;
17878 }
17879 }, {
17880 $elem: dom_core_1["default"]("<span>" + t('删除列') + "</span>"),
17881 onClick: function onClick(editor, $node) {
17882 // 禁止多选操作
17883 var isMore = isMoreRowAction(editor);
17884
17885 if (isMore) {
17886 return true;
17887 } //当前元素
17888
17889
17890 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前列的index
17891
17892 var index = getnode.getCurrentColIndex(selectDom.elems[0]); //生成要替换的html
17893
17894 var htmlStr = getnode.getTableHtml($node.elems[0]); //获取新生成的table 判断是否是最后一列被删除 是 删除整个table
17895
17896 var tdLength = operating_event_1["default"].DeleteCol(dom_core_1["default"](htmlStr), index).elems[0].childNodes[0].childNodes[0].childNodes.length; //生成新的table
17897
17898 var newdom = ''; // 选中table
17899
17900 editor.selection.createRangeByElem($node);
17901 editor.selection.restoreSelection();
17902
17903 if (tdLength === 1) {
17904 newdom = '<p><br></p>';
17905 } else {
17906 newdom = getnode.getTableHtml(operating_event_1["default"].DeleteCol(dom_core_1["default"](htmlStr), index).elems[0]);
17907 }
17908
17909 editor.cmd["do"]('insertHTML', newdom);
17910 return true;
17911 }
17912 }, {
17913 $elem: dom_core_1["default"]("<span>" + t('设置表头') + "</span>"),
17914 onClick: function onClick(editor, $node) {
17915 // 禁止多选操作
17916 var isMore = isMoreRowAction(editor);
17917
17918 if (isMore) {
17919 return true;
17920 } //当前元素
17921
17922
17923 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前行
17924
17925 var $currentRow = getnode.getRowNode(selectDom.elems[0]);
17926
17927 if (!$currentRow) {
17928 return true;
17929 } //获取当前行的index
17930
17931
17932 var index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow));
17933
17934 if (index !== 0) {
17935 //控制在table的第一行
17936 index = 0;
17937 } //生成要替换的html
17938
17939
17940 var htmlStr = getnode.getTableHtml($node.elems[0]); //生成新的table
17941
17942 var newdom = getnode.getTableHtml(operating_event_1["default"].setTheHeader(dom_core_1["default"](htmlStr), index, 'th').elems[0]); // 选中table
17943
17944 editor.selection.createRangeByElem($node);
17945 editor.selection.restoreSelection();
17946 editor.cmd["do"]('insertHTML', newdom);
17947 return true;
17948 }
17949 }, {
17950 $elem: dom_core_1["default"]("<span>" + t('取消表头') + "</span>"),
17951 onClick: function onClick(editor, $node) {
17952 //当前元素
17953 var selectDom = dom_core_1["default"](editor.selection.getSelectionStartElem()); //当前行
17954
17955 var $currentRow = getnode.getRowNode(selectDom.elems[0]);
17956
17957 if (!$currentRow) {
17958 return true;
17959 } //获取当前行的index
17960
17961
17962 var index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow));
17963
17964 if (index !== 0) {
17965 //控制在table的第一行
17966 index = 0;
17967 } //生成要替换的html
17968
17969
17970 var htmlStr = getnode.getTableHtml($node.elems[0]); //生成新的table
17971
17972 var newdom = getnode.getTableHtml(operating_event_1["default"].setTheHeader(dom_core_1["default"](htmlStr), index, 'td').elems[0]); // 选中table
17973
17974 editor.selection.createRangeByElem($node);
17975 editor.selection.restoreSelection();
17976 editor.cmd["do"]('insertHTML', newdom);
17977 return true;
17978 }
17979 }];
17980 tooltip = new Tooltip_1["default"](editor, $node, conf);
17981 tooltip.create();
17982 }
17983 /**
17984 * 隐藏 tooltip
17985 */
17986
17987
17988 function hideTableTooltip() {
17989 // 移除 tooltip
17990 if (tooltip) {
17991 tooltip.remove();
17992 tooltip = null;
17993 }
17994 }
17995
17996 return {
17997 showTableTooltip: showTableTooltip,
17998 hideTableTooltip: hideTableTooltip
17999 };
18000}
18001/**
18002 * 判断是否是多行
18003 */
18004
18005
18006function isMoreRowAction(editor) {
18007 var $startElem = editor.selection.getSelectionStartElem();
18008 var $endElem = editor.selection.getSelectionEndElem();
18009
18010 if (($startElem === null || $startElem === void 0 ? void 0 : $startElem.elems[0]) !== ($endElem === null || $endElem === void 0 ? void 0 : $endElem.elems[0])) {
18011 return true;
18012 } else {
18013 return false;
18014 }
18015}
18016/**
18017 * 绑定 tooltip 事件
18018 * @param editor 编辑器实例
18019 */
18020
18021
18022function bindTooltipEvent(editor) {
18023 var _a = createShowHideFn(editor),
18024 showTableTooltip = _a.showTableTooltip,
18025 hideTableTooltip = _a.hideTableTooltip; // 点击table元素是,显示 tooltip
18026
18027
18028 editor.txt.eventHooks.tableClickEvents.push(showTableTooltip); // 点击其他地方,或者滚动时,隐藏 tooltip
18029
18030 editor.txt.eventHooks.clickEvents.push(hideTableTooltip);
18031 editor.txt.eventHooks.keyupEvents.push(hideTableTooltip);
18032 editor.txt.eventHooks.toolbarClickEvents.push(hideTableTooltip);
18033 editor.txt.eventHooks.menuClickEvents.push(hideTableTooltip);
18034 editor.txt.eventHooks.textScrollEvents.push(hideTableTooltip);
18035}
18036
18037exports["default"] = bindTooltipEvent;
18038
18039/***/ }),
18040/* 367 */
18041/***/ (function(module, exports, __webpack_require__) {
18042
18043"use strict";
18044
18045
18046var _interopRequireDefault = __webpack_require__(0);
18047
18048var _forEach = _interopRequireDefault(__webpack_require__(6));
18049
18050var _splice = _interopRequireDefault(__webpack_require__(88));
18051
18052var _slice = _interopRequireDefault(__webpack_require__(54));
18053
18054var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18055
18056var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18057 return mod && mod.__esModule ? mod : {
18058 "default": mod
18059 };
18060};
18061
18062(0, _defineProperty["default"])(exports, "__esModule", {
18063 value: true
18064});
18065
18066var dom_core_1 = __importDefault(__webpack_require__(2));
18067/**
18068 * 处理新添加行
18069 * @param $node 整个table
18070 * @param _index 行的inde
18071 */
18072
18073
18074function ProcessingRow($node, _index) {
18075 //执行获取tbody节点
18076 var $dom = generateDomAction($node); //取出所有的行
18077
18078 var domArray = (0, _slice["default"])(Array.prototype).apply($dom.childNodes); //列的数量
18079
18080 var childNodesLenght = domArray[0].childNodes.length; //创建新tr
18081
18082 var tr = document.createElement('tr');
18083
18084 for (var i = 0; i < childNodesLenght; i++) {
18085 var td = document.createElement('td');
18086 tr.appendChild(td);
18087 } //插入集合中
18088
18089
18090 (0, _splice["default"])(domArray).call(domArray, _index + 1, 0, tr); //移除、新增节点事件
18091
18092 removeAndInsertAction($dom, domArray);
18093 return dom_core_1["default"]($dom.parentNode);
18094}
18095/**
18096 * 处理新添加列
18097 * @param $node 整个table
18098 * @param _index 列的inde
18099 */
18100
18101
18102function ProcessingCol($node, _index) {
18103 //执行获取tbody节点
18104 var $dom = generateDomAction($node); //取出所有的行
18105
18106 var domArray = (0, _slice["default"])(Array.prototype).apply($dom.childNodes);
18107
18108 var _loop_1 = function _loop_1(i) {
18109 var _context;
18110
18111 var cArray = []; //取出所有的列
18112
18113 (0, _forEach["default"])(_context = domArray[i].childNodes).call(_context, function (item) {
18114 cArray.push(item);
18115 }); //移除行的旧的子节点
18116
18117 while (domArray[i].childNodes.length !== 0) {
18118 domArray[i].removeChild(domArray[i].childNodes[0]);
18119 } //列分th td
18120
18121
18122 var td = dom_core_1["default"](cArray[0]).getNodeName() !== 'TH' ? document.createElement('td') : document.createElement('th'); // let td = document.createElement('td')
18123
18124 (0, _splice["default"])(cArray).call(cArray, _index + 1, 0, td); //插入新的子节点
18125
18126 for (var j = 0; j < cArray.length; j++) {
18127 domArray[i].appendChild(cArray[j]);
18128 }
18129 }; //创建td
18130
18131
18132 for (var i = 0; i < domArray.length; i++) {
18133 _loop_1(i);
18134 } //移除、新增节点事件
18135
18136
18137 removeAndInsertAction($dom, domArray);
18138 return dom_core_1["default"]($dom.parentNode);
18139}
18140/**
18141 * 处理删除行
18142 * @param $node 整个table
18143 * @param _index 行的inde
18144 */
18145
18146
18147function DeleteRow($node, _index) {
18148 //执行获取tbody节点
18149 var $dom = generateDomAction($node); //取出所有的行
18150
18151 var domArray = (0, _slice["default"])(Array.prototype).apply($dom.childNodes); //删除行
18152
18153 (0, _splice["default"])(domArray).call(domArray, _index, 1); //移除、新增节点事件
18154
18155 removeAndInsertAction($dom, domArray);
18156 return dom_core_1["default"]($dom.parentNode);
18157}
18158/**
18159 * 处理删除列
18160 * @param $node
18161 * @param _index
18162 */
18163
18164
18165function DeleteCol($node, _index) {
18166 //执行获取tbody节点
18167 var $dom = generateDomAction($node); //取出所有的行
18168
18169 var domArray = (0, _slice["default"])(Array.prototype).apply($dom.childNodes);
18170
18171 var _loop_2 = function _loop_2(i) {
18172 var _context2;
18173
18174 var cArray = []; //取出所有的列
18175
18176 (0, _forEach["default"])(_context2 = domArray[i].childNodes).call(_context2, function (item) {
18177 cArray.push(item);
18178 }); //移除行的旧的子节点
18179
18180 while (domArray[i].childNodes.length !== 0) {
18181 domArray[i].removeChild(domArray[i].childNodes[0]);
18182 }
18183
18184 (0, _splice["default"])(cArray).call(cArray, _index, 1); //插入新的子节点
18185
18186 for (var j = 0; j < cArray.length; j++) {
18187 domArray[i].appendChild(cArray[j]);
18188 }
18189 }; //创建td
18190
18191
18192 for (var i = 0; i < domArray.length; i++) {
18193 _loop_2(i);
18194 } //移除、新增节点事件
18195
18196
18197 removeAndInsertAction($dom, domArray);
18198 return dom_core_1["default"]($dom.parentNode);
18199}
18200/**
18201 * 处理设置/取消表头
18202 * @param $node
18203 * @param _index
18204 * @type 替换的列 th 还是td
18205 */
18206
18207
18208function setTheHeader($node, _index, type) {
18209 //执行获取tbody节点
18210 var $dom = generateDomAction($node); //取出所有的行
18211
18212 var domArray = (0, _slice["default"])(Array.prototype).apply($dom.childNodes); //列的数量
18213
18214 var childNodesLenght = domArray[_index].childNodes; //创建新tr
18215
18216 var tr = document.createElement('tr');
18217
18218 var _loop_3 = function _loop_3(i) {
18219 var _context3;
18220
18221 //替换td为th
18222 var th = document.createElement(type);
18223 (0, _forEach["default"])(_context3 = childNodesLenght[i].childNodes).call(_context3, function (item) {
18224 th.appendChild(item);
18225 });
18226 tr.appendChild(th);
18227 };
18228
18229 for (var i = 0; i < childNodesLenght.length; i++) {
18230 _loop_3(i);
18231 } //插入集合中
18232
18233
18234 (0, _splice["default"])(domArray).call(domArray, _index, 1, tr); //移除、新增节点事件
18235
18236 removeAndInsertAction($dom, domArray);
18237 return dom_core_1["default"]($dom.parentNode);
18238}
18239/**
18240 * 封装移除、新增节点事件
18241 * @param $dom tbody节点
18242 * @param domArray 所有的行
18243 */
18244
18245
18246function removeAndInsertAction($dom, domArray) {
18247 //移除所有的旧的子节点
18248 while ($dom.childNodes.length !== 0) {
18249 $dom.removeChild($dom.childNodes[0]);
18250 } //插入新的子节点
18251
18252
18253 for (var i = 0; i < domArray.length; i++) {
18254 $dom.appendChild(domArray[i]);
18255 }
18256}
18257/**
18258 * 封装判断是否tbody节点
18259 * 粘贴的table 第一个节点是<colgroup> 最后的节点<tbody>
18260 * @param dom
18261 */
18262
18263
18264function generateDomAction($node) {
18265 var $dom = $node.elems[0].childNodes[0];
18266
18267 if ($dom.nodeName === 'COLGROUP') {
18268 $dom = $node.elems[0].childNodes[$node.elems[0].childNodes.length - 1];
18269 }
18270
18271 return $dom;
18272}
18273
18274exports["default"] = {
18275 ProcessingRow: ProcessingRow,
18276 ProcessingCol: ProcessingCol,
18277 DeleteRow: DeleteRow,
18278 DeleteCol: DeleteCol,
18279 setTheHeader: setTheHeader
18280};
18281
18282/***/ }),
18283/* 368 */
18284/***/ (function(module, exports, __webpack_require__) {
18285
18286"use strict";
18287
18288/**
18289 * @description 获取dom节点
18290 * @author lichunlin
18291 */
18292
18293var _interopRequireDefault = __webpack_require__(0);
18294
18295var _forEach = _interopRequireDefault(__webpack_require__(6));
18296
18297var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18298
18299var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18300 return mod && mod.__esModule ? mod : {
18301 "default": mod
18302 };
18303};
18304
18305(0, _defineProperty["default"])(exports, "__esModule", {
18306 value: true
18307});
18308
18309var dom_core_1 = __importDefault(__webpack_require__(2));
18310
18311var getNode =
18312/** @class */
18313function () {
18314 function getNode(editor) {
18315 this.editor = editor;
18316 }
18317 /**
18318 * 获取焦点所在行
18319 * @param $node 当前table
18320 */
18321
18322
18323 getNode.prototype.getRowNode = function ($node) {
18324 var _a;
18325
18326 var DOM = dom_core_1["default"]($node).elems[0];
18327
18328 if (!DOM.parentNode) {
18329 return DOM;
18330 }
18331
18332 DOM = (_a = dom_core_1["default"](DOM).parentUntil('TR', DOM)) === null || _a === void 0 ? void 0 : _a.elems[0];
18333 return DOM;
18334 };
18335 /**
18336 * 获取当前行的下标
18337 * @param $node 当前table
18338 * @param $dmo 当前行节点
18339 */
18340
18341
18342 getNode.prototype.getCurrentRowIndex = function ($node, $dom) {
18343 var _context;
18344
18345 var _index = 0;
18346 var $nodeChild = $node.childNodes[0]; //粘贴的table 最后一个节点才是tbody
18347
18348 if ($nodeChild.nodeName === 'COLGROUP') {
18349 $nodeChild = $node.childNodes[$node.childNodes.length - 1];
18350 }
18351
18352 (0, _forEach["default"])(_context = $nodeChild.childNodes).call(_context, function (item, index) {
18353 item === $dom ? _index = index : '';
18354 });
18355 return _index;
18356 };
18357 /**
18358 * 获取当前列的下标
18359 * @param $node 当前点击元素
18360 */
18361
18362
18363 getNode.prototype.getCurrentColIndex = function ($node) {
18364 var _context2;
18365
18366 var _a; //当前行
18367
18368
18369 var _index = 0; //获取当前列 td或th
18370
18371 var rowDom = dom_core_1["default"]($node).getNodeName() === 'TD' || dom_core_1["default"]($node).getNodeName() === 'TH' ? $node : (_a = dom_core_1["default"]($node).parentUntil('TD', $node)) === null || _a === void 0 ? void 0 : _a.elems[0];
18372 var colDom = dom_core_1["default"](rowDom).parent();
18373 (0, _forEach["default"])(_context2 = colDom.elems[0].childNodes).call(_context2, function (item, index) {
18374 item === rowDom ? _index = index : '';
18375 });
18376 return _index;
18377 };
18378 /**
18379 * 返回元素html字符串
18380 * @param $node
18381 */
18382
18383
18384 getNode.prototype.getTableHtml = function ($node) {
18385 var htmlStr = "<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">" + dom_core_1["default"]($node).html() + "</table>";
18386 return htmlStr;
18387 };
18388
18389 return getNode;
18390}();
18391
18392exports["default"] = getNode;
18393
18394/***/ }),
18395/* 369 */
18396/***/ (function(module, exports, __webpack_require__) {
18397
18398"use strict";
18399
18400/**
18401 * @description 代码 菜单
18402 * @author lkw
18403 */
18404
18405var _interopRequireDefault = __webpack_require__(0);
18406
18407var _map = _interopRequireDefault(__webpack_require__(28));
18408
18409var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18410
18411var _create = _interopRequireDefault(__webpack_require__(3));
18412
18413var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
18414
18415var __extends = void 0 && (void 0).__extends || function () {
18416 var _extendStatics = function extendStatics(d, b) {
18417 _extendStatics = _setPrototypeOf["default"] || {
18418 __proto__: []
18419 } instanceof Array && function (d, b) {
18420 d.__proto__ = b;
18421 } || function (d, b) {
18422 for (var p in b) {
18423 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
18424 }
18425 };
18426
18427 return _extendStatics(d, b);
18428 };
18429
18430 return function (d, b) {
18431 _extendStatics(d, b);
18432
18433 function __() {
18434 this.constructor = d;
18435 }
18436
18437 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
18438 };
18439}();
18440
18441var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18442 return mod && mod.__esModule ? mod : {
18443 "default": mod
18444 };
18445};
18446
18447(0, _defineProperty["default"])(exports, "__esModule", {
18448 value: true
18449});
18450exports.formatCodeHtml = void 0;
18451
18452var PanelMenu_1 = __importDefault(__webpack_require__(33));
18453
18454var dom_core_1 = __importDefault(__webpack_require__(2));
18455
18456var util_1 = __webpack_require__(7);
18457
18458var create_panel_conf_1 = __importDefault(__webpack_require__(370));
18459
18460var is_active_1 = __importDefault(__webpack_require__(126));
18461
18462var Panel_1 = __importDefault(__webpack_require__(29));
18463
18464var index_1 = __importDefault(__webpack_require__(371));
18465
18466function formatCodeHtml(editor, html) {
18467 if (!html) return html;
18468 html = deleteHighlightCode(html);
18469 html = formatEnterCode(html);
18470 html = util_1.replaceSpecialSymbol(html);
18471 return html; // 格式化换换所产生的code标签
18472
18473 function formatEnterCode(html) {
18474 var preArr = html.match(/<pre[\s|\S]+?\/pre>/g);
18475 if (preArr === null) return html;
18476 (0, _map["default"])(preArr).call(preArr, function (item) {
18477 //将连续的code标签换为\n换行
18478 html = html.replace(item, item.replace(/<\/code><code>/g, '\n').replace(/<br>/g, ''));
18479 });
18480 return html;
18481 } // highlight格式化方法
18482
18483
18484 function deleteHighlightCode(html) {
18485 var _context;
18486
18487 // 获取所有hljs文本
18488 var m = html.match(/<span\sclass="hljs[\s|\S]+?\/span>/gm); // 没有代码渲染文本则退出
18489 // @ts-ignore
18490
18491 if (!m || !m.length) return html; // 获取替换文本
18492
18493 var r = (0, _map["default"])(_context = util_1.deepClone(m)).call(_context, function (i) {
18494 i = i.replace(/<span\sclass="hljs[^>]+>/, '');
18495 return i.replace(/<\/span>/, '');
18496 }); // @ts-ignore
18497
18498 for (var i = 0; i < m.length; i++) {
18499 html = html.replace(m[i], r[i]);
18500 }
18501
18502 return deleteHighlightCode(html);
18503 }
18504}
18505
18506exports.formatCodeHtml = formatCodeHtml;
18507
18508var Code =
18509/** @class */
18510function (_super) {
18511 __extends(Code, _super);
18512
18513 function Code(editor) {
18514 var _this = this;
18515
18516 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-terminal"></i></div>');
18517 _this = _super.call(this, $elem, editor) || this; // 绑定事件,如点击链接时,可以查看链接
18518
18519 index_1["default"](editor);
18520 return _this;
18521 }
18522 /**
18523 * 插入行内代码
18524 * @param text
18525 * @return null
18526 */
18527
18528
18529 Code.prototype.insertLineCode = function (text) {
18530 var editor = this.editor; // 行内代码处理
18531
18532 var $code = dom_core_1["default"]("<code>" + text + "</code>");
18533 editor.cmd["do"]('insertElem', $code);
18534 editor.selection.createRangeByElem($code, false);
18535 editor.selection.restoreSelection();
18536 };
18537 /**
18538 * 菜单点击事件
18539 */
18540
18541
18542 Code.prototype.clickHandler = function () {
18543 var editor = this.editor;
18544 var selectionText = editor.selection.getSelectionText();
18545
18546 if (this.isActive) {
18547 return;
18548 } else {
18549 // 菜单未被激活,说明选区不在链接里
18550 if (editor.selection.isSelectionEmpty()) {
18551 // 选区是空的,未选中内容
18552 this.createPanel('', '');
18553 } else {
18554 // 行内代码处理 选中了非代码内容
18555 this.insertLineCode(selectionText);
18556 }
18557 }
18558 };
18559 /**
18560 * 创建 panel
18561 * @param text 代码文本
18562 * @param languageType 代码类型
18563 */
18564
18565
18566 Code.prototype.createPanel = function (text, languageType) {
18567 var conf = create_panel_conf_1["default"](this.editor, text, languageType);
18568 var panel = new Panel_1["default"](this, conf);
18569 panel.create();
18570 };
18571 /**
18572 * 尝试修改菜单 active 状态
18573 */
18574
18575
18576 Code.prototype.tryChangeActive = function () {
18577 var editor = this.editor;
18578
18579 if (is_active_1["default"](editor)) {
18580 this.active();
18581 } else {
18582 this.unActive();
18583 }
18584 };
18585
18586 return Code;
18587}(PanelMenu_1["default"]);
18588
18589exports["default"] = Code;
18590
18591/***/ }),
18592/* 370 */
18593/***/ (function(module, exports, __webpack_require__) {
18594
18595"use strict";
18596
18597/**
18598 * @description code 菜单 panel tab 配置
18599 * @author lkw
18600 */
18601
18602var _interopRequireDefault = __webpack_require__(0);
18603
18604var _map = _interopRequireDefault(__webpack_require__(28));
18605
18606var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18607
18608var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18609 return mod && mod.__esModule ? mod : {
18610 "default": mod
18611 };
18612};
18613
18614(0, _defineProperty["default"])(exports, "__esModule", {
18615 value: true
18616});
18617
18618var util_1 = __webpack_require__(7);
18619
18620var dom_core_1 = __importDefault(__webpack_require__(2));
18621
18622var is_active_1 = __importDefault(__webpack_require__(126));
18623
18624function default_1(editor, text, languageType) {
18625 var _context;
18626
18627 // panel 中需要用到的id
18628 var inputIFrameId = util_1.getRandom('input-iframe');
18629 var languageId = util_1.getRandom('select');
18630 var btnOkId = util_1.getRandom('btn-ok');
18631 /**
18632 * 插入链接
18633 * @param text 文字
18634 * @param code 链接
18635 */
18636
18637 function insertCode(text) {
18638 // 选区处于链接中,则选中整个菜单,再执行 insertHTML
18639 var active = is_active_1["default"](editor);
18640
18641 if (active) {
18642 selectCodeElem();
18643 }
18644
18645 editor.cmd["do"]('insertHTML', text);
18646 var $code = editor.selection.getSelectionStartElem();
18647 var $codeElem = $code === null || $code === void 0 ? void 0 : $code.getNodeTop(editor); // 通过dom操作添加换行标签
18648 // @ts-ignore
18649
18650 dom_core_1["default"]('<p><br></p>').insertAfter($codeElem);
18651 }
18652 /**
18653 * 选中整个链接元素
18654 */
18655
18656
18657 function selectCodeElem() {
18658 if (!is_active_1["default"](editor)) return; // eslint-disable-next-line @typescript-eslint/no-unused-vars
18659
18660 var $selectedCode;
18661 var $code = editor.selection.getSelectionStartElem();
18662 var $codeElem = $code === null || $code === void 0 ? void 0 : $code.getNodeTop(editor);
18663 if (!$codeElem) return;
18664 editor.selection.createRangeByElem($codeElem);
18665 editor.selection.restoreSelection();
18666 $selectedCode = $codeElem; // 赋值给函数内全局变量
18667 }
18668
18669 var t = function t(text) {
18670 return editor.i18next.t(text);
18671 }; // @ts-ignore
18672
18673
18674 var conf = {
18675 width: 500,
18676 height: 0,
18677 // panel 中可包含多个 tab
18678 tabs: [{
18679 // tab 的标题
18680 title: t('menus.panelMenus.code.插入代码'),
18681 // 模板
18682 tpl: "<div>\n <select name=\"\" id=\"" + languageId + "\">\n " + (0, _map["default"])(_context = editor.config.languageType).call(_context, function (language) {
18683 return '<option ' + (languageType == language ? 'selected' : '') + ' value ="' + language + '">' + language + '</option>';
18684 }) + "\n </select>\n <textarea id=\"" + inputIFrameId + "\" type=\"text\" class=\"wang-code-textarea\" placeholder=\"\" style=\"height: 160px\">" + text.replace(/&quot;/g, '"') + "</textarea>\n <div class=\"w-e-button-container\">\n <button id=\"" + btnOkId + "\" class=\"right\">" + (is_active_1["default"](editor) ? t('修改') : t('插入')) + "</button>\n </div>\n </div>",
18685 // 事件绑定
18686 events: [// 插入链接
18687 {
18688 selector: '#' + btnOkId,
18689 type: 'click',
18690 fn: function fn() {
18691 var formatCode, codeDom;
18692 var $code = document.getElementById(inputIFrameId);
18693 var $select = dom_core_1["default"]('#' + languageId);
18694 var languageType = $select.val(); // @ts-ignore
18695
18696 var code = $code.value; // 高亮渲染
18697
18698 if (editor.highlight) {
18699 formatCode = editor.highlight.highlightAuto(code).value;
18700 } else {
18701 formatCode = "<xmp>" + code + "</xmp>";
18702 } // 代码为空,则不插入
18703
18704
18705 if (!code) return; //增加标签
18706
18707 if (is_active_1["default"](editor)) {
18708 return false;
18709 } else {
18710 //增加pre标签
18711 codeDom = "<pre type=\"" + languageType + "\"><code>" + formatCode + "</code></pre>"; // @ts-ignore
18712
18713 insertCode(codeDom);
18714 } // 返回 true,表示该事件执行完之后,panel 要关闭。否则 panel 不会关闭
18715
18716
18717 return true;
18718 }
18719 }]
18720 }]
18721 };
18722 return conf;
18723}
18724
18725exports["default"] = default_1;
18726
18727/***/ }),
18728/* 371 */
18729/***/ (function(module, exports, __webpack_require__) {
18730
18731"use strict";
18732
18733/**
18734 * @description 绑定链接元素的事件,入口
18735 * @author lkw
18736 */
18737
18738var _interopRequireDefault = __webpack_require__(0);
18739
18740var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18741
18742var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18743 return mod && mod.__esModule ? mod : {
18744 "default": mod
18745 };
18746};
18747
18748(0, _defineProperty["default"])(exports, "__esModule", {
18749 value: true
18750});
18751
18752var tooltip_event_1 = __importDefault(__webpack_require__(372));
18753/**
18754 * 绑定事件
18755 * @param editor 编辑器实例
18756 */
18757
18758
18759function bindEvent(editor) {
18760 // tooltip 事件
18761 tooltip_event_1["default"](editor);
18762}
18763
18764exports["default"] = bindEvent;
18765
18766/***/ }),
18767/* 372 */
18768/***/ (function(module, exports, __webpack_require__) {
18769
18770"use strict";
18771
18772/**
18773 * @description tooltip 事件
18774 * @author lkw
18775 */
18776
18777var _interopRequireDefault = __webpack_require__(0);
18778
18779var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18780
18781var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18782 return mod && mod.__esModule ? mod : {
18783 "default": mod
18784 };
18785};
18786
18787(0, _defineProperty["default"])(exports, "__esModule", {
18788 value: true
18789});
18790
18791var dom_core_1 = __importDefault(__webpack_require__(2));
18792
18793var Tooltip_1 = __importDefault(__webpack_require__(43));
18794/**
18795 * 生成 Tooltip 的显示隐藏函数
18796 */
18797
18798
18799function createShowHideFn(editor) {
18800 var tooltip;
18801 /**
18802 * 显示 tooltip
18803 * @param $code 链接元素
18804 */
18805
18806 function showCodeTooltip($code) {
18807 var i18nPrefix = 'menus.panelMenus.code.';
18808
18809 var t = function t(text, prefix) {
18810 if (prefix === void 0) {
18811 prefix = i18nPrefix;
18812 }
18813
18814 return editor.i18next.t(prefix + text);
18815 };
18816
18817 var conf = [{
18818 $elem: dom_core_1["default"]("<span>" + t('删除代码') + "</span>"),
18819 onClick: function onClick(editor, $code) {
18820 //dom操作删除
18821 $code.remove(); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
18822
18823 return true;
18824 }
18825 }]; // 创建 tooltip
18826
18827 tooltip = new Tooltip_1["default"](editor, $code, conf);
18828 tooltip.create();
18829 }
18830 /**
18831 * 隐藏 tooltip
18832 */
18833
18834
18835 function hideCodeTooltip() {
18836 // 移除 tooltip
18837 if (tooltip) {
18838 tooltip.remove();
18839 tooltip = null;
18840 }
18841 }
18842
18843 return {
18844 showCodeTooltip: showCodeTooltip,
18845 hideCodeTooltip: hideCodeTooltip
18846 };
18847}
18848/**
18849 * preEnterListener是为了统一浏览器 在pre标签内的enter行为而进行的监听
18850 * 目前并没有使用, 但是在未来处理与Firefox和ie的兼容性时需要用到 暂且放置
18851 * pre标签内的回车监听
18852 * @param e
18853 * @param editor
18854 */
18855// eslint-disable-next-line @typescript-eslint/no-unused-vars
18856
18857
18858function preEnterListener(e, editor) {
18859 // 获取当前标签元素
18860 var $selectionElem = editor.selection.getSelectionContainerElem(); // 获取当前节点最顶级标签元素
18861
18862 var $topElem = $selectionElem === null || $selectionElem === void 0 ? void 0 : $selectionElem.getNodeTop(editor); // 获取顶级节点节点名
18863
18864 var topNodeName = $topElem === null || $topElem === void 0 ? void 0 : $topElem.getNodeName(); // 非pre标签退出
18865
18866 if (topNodeName !== 'PRE') return; // 取消默认行为
18867
18868 e.preventDefault(); // 执行换行
18869
18870 editor.cmd["do"]('insertHTML', '\n\r');
18871}
18872/**
18873 * 绑定 tooltip 事件
18874 * @param editor 编辑器实例
18875 */
18876
18877
18878function bindTooltipEvent(editor) {
18879 var _a = createShowHideFn(editor),
18880 showCodeTooltip = _a.showCodeTooltip,
18881 hideCodeTooltip = _a.hideCodeTooltip; // 点击代码元素时,显示 tooltip
18882
18883
18884 editor.txt.eventHooks.codeClickEvents.push(showCodeTooltip); // 点击其他地方,或者滚动时,隐藏 tooltip
18885
18886 editor.txt.eventHooks.clickEvents.push(hideCodeTooltip);
18887 editor.txt.eventHooks.toolbarClickEvents.push(hideCodeTooltip);
18888 editor.txt.eventHooks.menuClickEvents.push(hideCodeTooltip);
18889 editor.txt.eventHooks.textScrollEvents.push(hideCodeTooltip);
18890}
18891
18892exports["default"] = bindTooltipEvent;
18893
18894/***/ }),
18895/* 373 */
18896/***/ (function(module, exports, __webpack_require__) {
18897
18898"use strict";
18899
18900
18901var _interopRequireDefault = __webpack_require__(0);
18902
18903var _defineProperty = _interopRequireDefault(__webpack_require__(1));
18904
18905var _create = _interopRequireDefault(__webpack_require__(3));
18906
18907var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
18908
18909var __extends = void 0 && (void 0).__extends || function () {
18910 var _extendStatics = function extendStatics(d, b) {
18911 _extendStatics = _setPrototypeOf["default"] || {
18912 __proto__: []
18913 } instanceof Array && function (d, b) {
18914 d.__proto__ = b;
18915 } || function (d, b) {
18916 for (var p in b) {
18917 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
18918 }
18919 };
18920
18921 return _extendStatics(d, b);
18922 };
18923
18924 return function (d, b) {
18925 _extendStatics(d, b);
18926
18927 function __() {
18928 this.constructor = d;
18929 }
18930
18931 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
18932 };
18933}();
18934
18935var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
18936 return mod && mod.__esModule ? mod : {
18937 "default": mod
18938 };
18939};
18940
18941(0, _defineProperty["default"])(exports, "__esModule", {
18942 value: true
18943});
18944/**
18945 * @description 分割线
18946 * @author wangqiaoling
18947 */
18948
18949var BtnMenu_1 = __importDefault(__webpack_require__(24));
18950
18951var dom_core_1 = __importDefault(__webpack_require__(2));
18952
18953var index_1 = __importDefault(__webpack_require__(374));
18954
18955var splitLine =
18956/** @class */
18957function (_super) {
18958 __extends(splitLine, _super);
18959
18960 function splitLine(editor) {
18961 var _this = this;
18962
18963 var $elem = dom_core_1["default"]('<div class="w-e-menu"><i class="w-e-icon-split-line"></i></div>');
18964 _this = _super.call(this, $elem, editor) || this; // 绑定事件
18965
18966 index_1["default"](editor);
18967 return _this;
18968 }
18969 /**
18970 * 菜单点击事件
18971 */
18972
18973
18974 splitLine.prototype.clickHandler = function () {
18975 var editor = this.editor;
18976 var range = editor.selection.getRange();
18977 var $selectionElem = editor.selection.getSelectionContainerElem();
18978 if (!$selectionElem) return;
18979 var $DomElement = dom_core_1["default"]($selectionElem.elems[0]);
18980 var $tableDOM = $DomElement.parentUntil('TABLE', $selectionElem.elems[0]);
18981 var $imgDOM = $DomElement.children(); // 禁止在代码块中添加分割线
18982
18983 if ($DomElement.getNodeName() === 'CODE') return; // 禁止在表格中添加分割线
18984
18985 if ($tableDOM && dom_core_1["default"]($tableDOM.elems[0]).getNodeName() === 'TABLE') return; // 禁止在图片处添加分割线
18986
18987 if ($imgDOM && $imgDOM.length !== 0 && dom_core_1["default"]($imgDOM.elems[0]).getNodeName() === 'IMG' && !(range === null || range === void 0 ? void 0 : range.collapsed) // 处理光标在 img 后面的情况
18988 ) {
18989 return;
18990 }
18991
18992 this.createSplitLine();
18993 };
18994 /**
18995 * 创建 splitLine
18996 */
18997
18998
18999 splitLine.prototype.createSplitLine = function () {
19000 var splitLineDOM = '<hr/>';
19001 this.editor.cmd["do"]('insertHTML', splitLineDOM);
19002 };
19003 /**
19004 * 尝试修改菜单激活状态
19005 */
19006
19007
19008 splitLine.prototype.tryChangeActive = function () {};
19009
19010 return splitLine;
19011}(BtnMenu_1["default"]);
19012
19013exports["default"] = splitLine;
19014
19015/***/ }),
19016/* 374 */
19017/***/ (function(module, exports, __webpack_require__) {
19018
19019"use strict";
19020
19021
19022var _interopRequireDefault = __webpack_require__(0);
19023
19024var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19025
19026var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19027 return mod && mod.__esModule ? mod : {
19028 "default": mod
19029 };
19030};
19031
19032(0, _defineProperty["default"])(exports, "__esModule", {
19033 value: true
19034});
19035
19036var tooltip_event_1 = __importDefault(__webpack_require__(375));
19037/**
19038 * 绑定事件
19039 * @param editor 编辑器实例
19040 */
19041
19042
19043function bindEvent(editor) {
19044 // 分割线的 tooltip 事件
19045 tooltip_event_1["default"](editor);
19046}
19047
19048exports["default"] = bindEvent;
19049
19050/***/ }),
19051/* 375 */
19052/***/ (function(module, exports, __webpack_require__) {
19053
19054"use strict";
19055
19056
19057var _interopRequireDefault = __webpack_require__(0);
19058
19059var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19060
19061var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19062 return mod && mod.__esModule ? mod : {
19063 "default": mod
19064 };
19065};
19066
19067(0, _defineProperty["default"])(exports, "__esModule", {
19068 value: true
19069});
19070/**
19071 * @description tooltip 事件
19072 * @author wangqiaoling
19073 */
19074
19075var dom_core_1 = __importDefault(__webpack_require__(2));
19076
19077var Tooltip_1 = __importDefault(__webpack_require__(43));
19078/**
19079 * 生成 Tooltip 的显示隐藏函数
19080 */
19081
19082
19083function createShowHideFn(editor) {
19084 var tooltip;
19085 /**
19086 * 显示分割线的 tooltip
19087 * @param $splitLine 分割线元素
19088 */
19089
19090 function showSplitLineTooltip($splitLine) {
19091 // 定义 splitLine tooltip 配置
19092 var conf = [{
19093 $elem: dom_core_1["default"]("<span>" + editor.i18next.t('menus.panelMenus.删除') + "</span>"),
19094 onClick: function onClick(editor, $splitLine) {
19095 // 选中 分割线 元素
19096 editor.selection.createRangeByElem($splitLine);
19097 editor.selection.restoreSelection();
19098 editor.cmd["do"]('delete'); // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。
19099
19100 return true;
19101 }
19102 }]; // 实例化 tooltip
19103
19104 tooltip = new Tooltip_1["default"](editor, $splitLine, conf); // 创建 tooltip
19105
19106 tooltip.create();
19107 }
19108 /**
19109 * 隐藏分割线的 tooltip
19110 */
19111
19112
19113 function hideSplitLineTooltip() {
19114 if (tooltip) {
19115 tooltip.remove();
19116 tooltip = null;
19117 }
19118 }
19119
19120 return {
19121 showSplitLineTooltip: showSplitLineTooltip,
19122 hideSplitLineTooltip: hideSplitLineTooltip
19123 };
19124}
19125
19126function bindTooltipEvent(editor) {
19127 var _a = createShowHideFn(editor),
19128 showSplitLineTooltip = _a.showSplitLineTooltip,
19129 hideSplitLineTooltip = _a.hideSplitLineTooltip; // 点击分割线时,显示 tooltip
19130
19131
19132 editor.txt.eventHooks.splitLineEvents.push(showSplitLineTooltip); // 点击其他地方(工具栏、滚动、keyup)时,隐藏 tooltip
19133
19134 editor.txt.eventHooks.clickEvents.push(hideSplitLineTooltip);
19135 editor.txt.eventHooks.keyupEvents.push(hideSplitLineTooltip);
19136 editor.txt.eventHooks.toolbarClickEvents.push(hideSplitLineTooltip);
19137 editor.txt.eventHooks.menuClickEvents.push(hideSplitLineTooltip);
19138 editor.txt.eventHooks.textScrollEvents.push(hideSplitLineTooltip);
19139}
19140
19141exports["default"] = bindTooltipEvent;
19142
19143/***/ }),
19144/* 376 */
19145/***/ (function(module, exports, __webpack_require__) {
19146
19147"use strict";
19148
19149/**
19150 * @description 初始化编辑器 DOM 结构
19151 * @author wangfupeng
19152 */
19153
19154var _interopRequireDefault = __webpack_require__(0);
19155
19156var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19157
19158var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19159 return mod && mod.__esModule ? mod : {
19160 "default": mod
19161 };
19162};
19163
19164(0, _defineProperty["default"])(exports, "__esModule", {
19165 value: true
19166});
19167
19168var dom_core_1 = __importDefault(__webpack_require__(2));
19169
19170var util_1 = __webpack_require__(7);
19171
19172var styleSettings = {
19173 border: '1px solid #c9d8db',
19174 toolbarBgColor: '#FFF',
19175 toolbarBottomBorder: '1px solid #EEE'
19176};
19177
19178function default_1(editor) {
19179 var toolbarSelector = editor.toolbarSelector;
19180 var $toolbarSelector = dom_core_1["default"](toolbarSelector);
19181 var textSelector = editor.textSelector;
19182 var config = editor.config;
19183 var height = config.height;
19184 var i18next = editor.i18next;
19185 var $toolbarElem;
19186 var $textContainerElem;
19187 var $textElem;
19188 var $children;
19189
19190 if (textSelector == null) {
19191 // 只有 toolbarSelector ,即是容器的选择器或元素,toolbar 和 text 的元素自行创建
19192 $toolbarElem = dom_core_1["default"]('<div></div>');
19193 $textContainerElem = dom_core_1["default"]('<div></div>'); // 将编辑器区域原有的内容,暂存起来
19194
19195 $children = $toolbarSelector.children(); // 添加到 DOM 结构中
19196
19197 $toolbarSelector.append($toolbarElem).append($textContainerElem); // 自行创建的,需要配置默认的样式
19198
19199 $toolbarElem.css('background-color', styleSettings.toolbarBgColor).css('border', styleSettings.border).css('border-bottom', styleSettings.toolbarBottomBorder);
19200 $textContainerElem.css('border', styleSettings.border).css('border-top', 'none').css('height', height + "px");
19201 } else {
19202 // toolbarSelector 和 textSelector 都有
19203 $toolbarElem = $toolbarSelector;
19204 $textContainerElem = dom_core_1["default"](textSelector); // 将编辑器区域原有的内容,暂存起来
19205
19206 $children = $textContainerElem.children();
19207 } // 编辑区域
19208
19209
19210 $textElem = dom_core_1["default"]('<div></div>');
19211 $textElem.attr('contenteditable', 'true').css('width', '100%').css('height', '100%'); // 添加 placeholder
19212
19213 var $placeholder = dom_core_1["default"]("<div>" + i18next.t(editor.config.placeholder) + "</div>");
19214 $placeholder.addClass('placeholder'); // 初始化编辑区域内容
19215
19216 if ($children && $children.length) {
19217 $textElem.append($children); // 编辑器有默认值的时候隐藏placeholder
19218
19219 $placeholder.hide();
19220 } else {
19221 $textElem.append(dom_core_1["default"]('<p><br></p>')); // 新增一行,方便继续编辑
19222 } // 编辑区域加入DOM
19223
19224
19225 $textContainerElem.append($textElem); // 添加placeholder
19226
19227 $textContainerElem.append($placeholder); // 设置通用的 class
19228
19229 $toolbarElem.addClass('w-e-toolbar').css('z-index', editor.zIndex.get('toolbar'));
19230 $textContainerElem.addClass('w-e-text-container');
19231 $textContainerElem.css('z-index', editor.zIndex.get());
19232 $textElem.addClass('w-e-text'); // 添加 ID
19233
19234 var toolbarElemId = util_1.getRandom('toolbar-elem');
19235 $toolbarElem.attr('id', toolbarElemId);
19236 var textElemId = util_1.getRandom('text-elem');
19237 $textElem.attr('id', textElemId); // 判断编辑区与容器高度是否一致
19238
19239 var textContainerCliheight = $textContainerElem.getClientHeight();
19240 var textElemClientHeight = $textElem.getClientHeight();
19241
19242 if (textContainerCliheight !== textElemClientHeight) {
19243 $textElem.css('min-height', textContainerCliheight + 'px');
19244 } // 记录属性
19245
19246
19247 editor.$toolbarElem = $toolbarElem;
19248 editor.$textContainerElem = $textContainerElem;
19249 editor.$textElem = $textElem;
19250 editor.toolbarElemId = toolbarElemId;
19251 editor.textElemId = textElemId;
19252}
19253
19254exports["default"] = default_1;
19255
19256/***/ }),
19257/* 377 */
19258/***/ (function(module, exports, __webpack_require__) {
19259
19260"use strict";
19261
19262/**
19263 * @description 初始化编辑器选区,将光标定位到文档末尾
19264 * @author wangfupeng
19265 */
19266
19267var _interopRequireDefault = __webpack_require__(0);
19268
19269var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19270
19271var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19272 return mod && mod.__esModule ? mod : {
19273 "default": mod
19274 };
19275};
19276
19277(0, _defineProperty["default"])(exports, "__esModule", {
19278 value: true
19279});
19280
19281var dom_core_1 = __importDefault(__webpack_require__(2));
19282/**
19283 * 初始化编辑器选区,将光标定位到文档末尾
19284 * @param editor 编辑器实例
19285 * @param newLine 是否新增一行
19286 */
19287
19288
19289function initSelection(editor, newLine) {
19290 var $textElem = editor.$textElem;
19291 var $children = $textElem.children();
19292
19293 if (!$children || !$children.length) {
19294 // 如果编辑器区域无内容,添加一个空行,重新设置选区
19295 $textElem.append(dom_core_1["default"]('<p><br></p>'));
19296 initSelection(editor);
19297 return;
19298 }
19299
19300 var $last = $children.last();
19301
19302 if (newLine) {
19303 // 新增一个空行
19304 var html = $last.html().toLowerCase();
19305 var nodeName = $last.getNodeName();
19306
19307 if (html !== '<br>' && html !== '<br/>' || nodeName !== 'P') {
19308 // 最后一个元素不是 <p><br></p>,添加一个空行,重新设置选区
19309 $textElem.append(dom_core_1["default"]('<p><br></p>'));
19310 initSelection(editor);
19311 return;
19312 }
19313 }
19314
19315 if (editor.config.focus) {
19316 editor.selection.createRangeByElem($last, true, true);
19317 editor.selection.restoreSelection();
19318 }
19319}
19320
19321exports["default"] = initSelection;
19322
19323/***/ }),
19324/* 378 */
19325/***/ (function(module, exports, __webpack_require__) {
19326
19327"use strict";
19328
19329/**
19330 * @description 绑定编辑器事件 change blur focus
19331 * @author wangfupeng
19332 */
19333
19334var _interopRequireDefault = __webpack_require__(0);
19335
19336var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19337
19338var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19339 return mod && mod.__esModule ? mod : {
19340 "default": mod
19341 };
19342};
19343
19344(0, _defineProperty["default"])(exports, "__esModule", {
19345 value: true
19346});
19347
19348var dom_core_1 = __importDefault(__webpack_require__(2));
19349
19350function bindEvent(editor) {
19351 // 绑定 change 事件
19352 _bindChange(editor); // 绑定 focus blur 事件
19353
19354
19355 _bindFocusAndBlur(editor); // 绑定 input 输入
19356
19357
19358 _bindInput(editor);
19359}
19360/**
19361 * 绑定 change 事件
19362 * @param editor 编辑器实例
19363 */
19364
19365
19366function _bindChange(editor) {
19367 var onchange = editor.config.onchange;
19368 editor.txt.eventHooks.changeEvents.push(function () {
19369 var html = editor.txt.html() || '';
19370 onchange(html);
19371 editor.txt.togglePlaceholder();
19372 });
19373}
19374/**
19375 * 绑定 focus blur 事件
19376 * @param editor 编辑器实例
19377 */
19378
19379
19380function _bindFocusAndBlur(editor) {
19381 // 当前编辑器是否是焦点状态
19382 editor.isFocus = false;
19383
19384 function listener(e) {
19385 var target = e.target;
19386 var $target = dom_core_1["default"](target);
19387 var $textElem = editor.$textElem;
19388 var $toolbarElem = editor.$toolbarElem; //判断当前点击元素是否在编辑器内
19389
19390 var isChild = $textElem.isContain($target); //判断当前点击元素是否为工具栏
19391
19392 var isToolbar = $toolbarElem.isContain($target);
19393 var isMenu = $toolbarElem.elems[0] == e.target ? true : false;
19394
19395 if (!isChild) {
19396 // 若为选择工具栏中的功能,则不视为成 blur 操作
19397 if (isToolbar && !isMenu) {
19398 return;
19399 }
19400
19401 if (editor.isFocus) {
19402 _blurHandler(editor);
19403 }
19404
19405 editor.isFocus = false;
19406 } else {
19407 if (!editor.isFocus) {
19408 _focusHandler(editor);
19409 }
19410
19411 editor.isFocus = true;
19412 }
19413 }
19414
19415 if (document.activeElement === editor.$textElem.elems[0]) {
19416 _focusHandler(editor);
19417
19418 editor.isFocus = true;
19419 }
19420
19421 dom_core_1["default"](document).on('click', listener); // 全局事件在编辑器实例销毁的时候进行解绑
19422
19423 editor.beforeDestroy(function () {
19424 dom_core_1["default"](document).off('click', listener);
19425 });
19426}
19427/**
19428 * 绑定 input 事件
19429 * @param editor 编辑器实例
19430 */
19431
19432
19433function _bindInput(editor) {
19434 // 绑定中文输入
19435 editor.$textElem.on('compositionstart', function () {
19436 editor.isComposing = true;
19437 }).on('compositionend', function () {
19438 editor.isComposing = false;
19439 });
19440}
19441/**
19442 * blur 事件
19443 * @param editor 编辑器实例
19444 */
19445
19446
19447function _blurHandler(editor) {
19448 var config = editor.config;
19449 var onblur = config.onblur;
19450 var currentHtml = editor.txt.html() || '';
19451 onblur(currentHtml);
19452}
19453/**
19454 * focus 事件
19455 * @param editor 编辑器实例
19456 */
19457
19458
19459function _focusHandler(editor) {
19460 var config = editor.config;
19461 var onfocus = config.onfocus;
19462 var currentHtml = editor.txt.html() || '';
19463 onfocus(currentHtml);
19464}
19465
19466exports["default"] = bindEvent;
19467
19468/***/ }),
19469/* 379 */
19470/***/ (function(module, exports, __webpack_require__) {
19471
19472"use strict";
19473
19474/**
19475 * @description 国际化 初始化
19476 * @author tonghan
19477 * i18next 是使用 JavaScript 编写的国际化框架
19478 * i18next 提供了标准的i18n功能,例如(复数,上下文,插值,格式)等
19479 * i18next 文档地址: https://www.i18next.com/overview/getting-started
19480 */
19481
19482var _interopRequireDefault = __webpack_require__(0);
19483
19484var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19485
19486(0, _defineProperty["default"])(exports, "__esModule", {
19487 value: true
19488});
19489
19490function i18nextInit(editor) {
19491 var _a = editor.config,
19492 lang = _a.lang,
19493 languages = _a.languages;
19494
19495 if (editor.i18next != null) {
19496 try {
19497 editor.i18next.init({
19498 ns: 'wangEditor',
19499 lng: lang,
19500 defaultNS: 'wangEditor',
19501 resources: languages
19502 });
19503 } catch (error) {
19504 throw new Error('i18next:' + error);
19505 }
19506
19507 return;
19508 } // 没有引入 i18next 的替代品
19509
19510
19511 editor.i18next = {
19512 t: function t(str) {
19513 var strArr = str.split('.');
19514 return strArr[strArr.length - 1];
19515 }
19516 };
19517}
19518
19519exports["default"] = i18nextInit;
19520
19521/***/ }),
19522/* 380 */
19523/***/ (function(module, exports, __webpack_require__) {
19524
19525"use strict";
19526
19527/**
19528 * @description 全屏功能
19529 * @author xiaokyo
19530 */
19531
19532var _interopRequireDefault = __webpack_require__(0);
19533
19534var _find = _interopRequireDefault(__webpack_require__(32));
19535
19536var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19537
19538var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19539 return mod && mod.__esModule ? mod : {
19540 "default": mod
19541 };
19542};
19543
19544(0, _defineProperty["default"])(exports, "__esModule", {
19545 value: true
19546});
19547exports.setUnFullScreen = exports.setFullScreen = void 0;
19548
19549var dom_core_1 = __importDefault(__webpack_require__(2));
19550
19551__webpack_require__(381);
19552
19553var iconFullScreenText = 'w-e-icon-fullscreen'; // 全屏icon class
19554
19555var iconExitFullScreenText = 'w-e-icon-fullscreen_exit'; // 退出全屏icon class
19556
19557var classfullScreenEditor = 'w-e-full-screen-editor'; // 全屏添加至编辑器的class
19558
19559/**
19560 * 设置全屏
19561 * @param editor 编辑器实例
19562 */
19563
19564var setFullScreen = function setFullScreen(editor) {
19565 var $editorParent = dom_core_1["default"](editor.toolbarSelector);
19566 var $textContainerElem = editor.$textContainerElem;
19567 var $toolbarElem = editor.$toolbarElem;
19568 var $iconElem = (0, _find["default"])($toolbarElem).call($toolbarElem, "i." + iconFullScreenText);
19569 var config = editor.config;
19570 $iconElem.removeClass(iconFullScreenText);
19571 $iconElem.addClass(iconExitFullScreenText);
19572 $editorParent.addClass(classfullScreenEditor);
19573 $editorParent.css('z-index', config.zIndexFullScreen);
19574 $textContainerElem.css('height', '100%');
19575};
19576
19577exports.setFullScreen = setFullScreen;
19578/**
19579 * 取消全屏
19580 * @param editor 编辑器实例
19581 */
19582
19583var setUnFullScreen = function setUnFullScreen(editor) {
19584 var $editorParent = dom_core_1["default"](editor.toolbarSelector);
19585 var $textContainerElem = editor.$textContainerElem;
19586 var $toolbarElem = editor.$toolbarElem;
19587 var $iconElem = (0, _find["default"])($toolbarElem).call($toolbarElem, "i." + iconExitFullScreenText);
19588 var config = editor.config;
19589 $iconElem.removeClass(iconExitFullScreenText);
19590 $iconElem.addClass(iconFullScreenText);
19591 $editorParent.removeClass(classfullScreenEditor);
19592 $editorParent.css('z-index', 'auto');
19593 $textContainerElem.css('height', config.height + 'px');
19594};
19595
19596exports.setUnFullScreen = setUnFullScreen;
19597/**
19598 * 初始化全屏功能
19599 * @param editor 编辑器实例
19600 */
19601
19602var initFullScreen = function initFullScreen(editor) {
19603 // 当textSelector有值的时候,也就是编辑器是工具栏和编辑区域分离的情况, 则不生成全屏功能按钮
19604 if (editor.textSelector) return;
19605 if (!editor.config.showFullScreen) return;
19606 var $toolbarElem = editor.$toolbarElem;
19607 var $elem = dom_core_1["default"]("<div class=\"w-e-menu\">\n <i class=\"" + iconFullScreenText + "\"></i>\n </div>");
19608 $elem.on('click', function (e) {
19609 var _context;
19610
19611 var $elemIcon = (0, _find["default"])(_context = dom_core_1["default"](e.currentTarget)).call(_context, 'i');
19612
19613 if ($elemIcon.hasClass(iconFullScreenText)) {
19614 exports.setFullScreen(editor);
19615 } else {
19616 exports.setUnFullScreen(editor);
19617 }
19618 });
19619 $toolbarElem.append($elem);
19620};
19621
19622exports["default"] = initFullScreen;
19623
19624/***/ }),
19625/* 381 */
19626/***/ (function(module, exports, __webpack_require__) {
19627
19628var api = __webpack_require__(19);
19629 var content = __webpack_require__(382);
19630
19631 content = content.__esModule ? content.default : content;
19632
19633 if (typeof content === 'string') {
19634 content = [[module.i, content, '']];
19635 }
19636
19637var options = {};
19638
19639options.insert = "head";
19640options.singleton = false;
19641
19642var update = api(content, options);
19643
19644
19645
19646module.exports = content.locals || {};
19647
19648/***/ }),
19649/* 382 */
19650/***/ (function(module, exports, __webpack_require__) {
19651
19652// Imports
19653var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
19654exports = ___CSS_LOADER_API_IMPORT___(false);
19655// Module
19656exports.push([module.i, ".w-e-full-screen-editor {\n position: fixed;\n width: 100%!important;\n height: 100%!important;\n left: 0;\n top: 0;\n}\n", ""]);
19657// Exports
19658module.exports = exports;
19659
19660
19661/***/ }),
19662/* 383 */
19663/***/ (function(module, exports, __webpack_require__) {
19664
19665"use strict";
19666
19667/**
19668 * @description 滚动到指定锚点
19669 * @author zhengwenjian
19670 */
19671
19672var _interopRequireDefault = __webpack_require__(0);
19673
19674var _find = _interopRequireDefault(__webpack_require__(32));
19675
19676var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19677
19678(0, _defineProperty["default"])(exports, "__esModule", {
19679 value: true
19680});
19681/**
19682 * 编辑器滚动到指定锚点
19683 * @param editor 编辑器实例
19684 * @param id 标题锚点id
19685 */
19686
19687var scrollToHead = function scrollToHead(editor, id) {
19688 var $textElem = editor.$textElem;
19689 var $targetHead = (0, _find["default"])($textElem).call($textElem, "[id='" + id + "']");
19690 var targetTop = $targetHead.getOffsetData().top;
19691 $textElem.scrollTop(targetTop);
19692};
19693
19694exports["default"] = scrollToHead;
19695
19696/***/ }),
19697/* 384 */
19698/***/ (function(module, exports, __webpack_require__) {
19699
19700"use strict";
19701
19702
19703var _interopRequireDefault = __webpack_require__(0);
19704
19705var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19706
19707var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19708 return mod && mod.__esModule ? mod : {
19709 "default": mod
19710 };
19711};
19712
19713(0, _defineProperty["default"])(exports, "__esModule", {
19714 value: true
19715});
19716
19717var style_1 = __importDefault(__webpack_require__(121));
19718
19719var tier = {
19720 menu: 2,
19721 panel: 2,
19722 toolbar: 1,
19723 tooltip: 1,
19724 textContainer: 1
19725};
19726
19727var ZIndex =
19728/** @class */
19729function () {
19730 function ZIndex() {
19731 // 层级参数
19732 this.tier = tier; // 默认值
19733
19734 this.baseZIndex = style_1["default"].zIndex;
19735 } // 获取 tierName 对应的 z-index 的值。如果 tierName 未定义则返回默认的 z-index 值
19736
19737
19738 ZIndex.prototype.get = function (tierName) {
19739 if (tierName && this.tier[tierName]) {
19740 return this.baseZIndex + this.tier[tierName];
19741 }
19742
19743 return this.baseZIndex;
19744 }; // 初始化
19745
19746
19747 ZIndex.prototype.init = function (editor) {
19748 if (this.baseZIndex == style_1["default"].zIndex) {
19749 this.baseZIndex = editor.config.zIndex;
19750 }
19751 };
19752
19753 return ZIndex;
19754}();
19755
19756exports["default"] = ZIndex;
19757
19758/***/ }),
19759/* 385 */
19760/***/ (function(module, exports, __webpack_require__) {
19761
19762"use strict";
19763
19764/**
19765 * @description 编辑器 change 事件
19766 * @author fangzhicong
19767 */
19768
19769var _interopRequireDefault = __webpack_require__(0);
19770
19771var _forEach = _interopRequireDefault(__webpack_require__(6));
19772
19773var _filter = _interopRequireDefault(__webpack_require__(87));
19774
19775var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19776
19777var _create = _interopRequireDefault(__webpack_require__(3));
19778
19779var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
19780
19781var __extends = void 0 && (void 0).__extends || function () {
19782 var _extendStatics = function extendStatics(d, b) {
19783 _extendStatics = _setPrototypeOf["default"] || {
19784 __proto__: []
19785 } instanceof Array && function (d, b) {
19786 d.__proto__ = b;
19787 } || function (d, b) {
19788 for (var p in b) {
19789 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
19790 }
19791 };
19792
19793 return _extendStatics(d, b);
19794 };
19795
19796 return function (d, b) {
19797 _extendStatics(d, b);
19798
19799 function __() {
19800 this.constructor = d;
19801 }
19802
19803 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
19804 };
19805}();
19806
19807var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
19808 return mod && mod.__esModule ? mod : {
19809 "default": mod
19810 };
19811};
19812
19813(0, _defineProperty["default"])(exports, "__esModule", {
19814 value: true
19815});
19816
19817var mutation_1 = __importDefault(__webpack_require__(386));
19818
19819var util_1 = __webpack_require__(7);
19820
19821var const_1 = __webpack_require__(31);
19822/**
19823 * 剔除编辑区容器的 attribute 变化中的非 contenteditable 变化
19824 * @param mutations MutationRecord[]
19825 * @param tar 编辑区容器的 DOM 节点
19826 */
19827
19828
19829function mutationsFilter(mutations, tar) {
19830 // 剔除编辑区容器的 attribute 变化中的非 contenteditable 变化
19831 return (0, _filter["default"])(mutations).call(mutations, function (_a) {
19832 var type = _a.type,
19833 target = _a.target,
19834 attributeName = _a.attributeName;
19835 return type != 'attributes' || type == 'attributes' && (attributeName == 'contenteditable' || target != tar);
19836 });
19837}
19838/**
19839 * Change 实现
19840 */
19841
19842
19843var Change =
19844/** @class */
19845function (_super) {
19846 __extends(Change, _super);
19847
19848 function Change(editor) {
19849 var _this = _super.call(this, function (mutations, observer) {
19850 var _a; // 数据过滤
19851
19852
19853 mutations = mutationsFilter(mutations, observer.target); // 存储数据
19854
19855 (_a = _this.data).push.apply(_a, mutations); // 标准模式下
19856
19857
19858 if (!editor.isCompatibleMode) {
19859 // 在非中文输入状态下时才保存数据
19860 if (!editor.isComposing) {
19861 return _this.asyncSave();
19862 }
19863 } // 兼容模式下
19864 else {
19865 _this.asyncSave();
19866 }
19867 }) || this;
19868
19869 _this.editor = editor;
19870 /**
19871 * 变化的数据集合
19872 */
19873
19874 _this.data = [];
19875 /**
19876 * 异步保存数据
19877 */
19878
19879 _this.asyncSave = const_1.EMPTY_FN;
19880 return _this;
19881 }
19882 /**
19883 * 保存变化的数据并发布 change event
19884 */
19885
19886
19887 Change.prototype.save = function () {
19888 // 有数据
19889 if (this.data.length) {
19890 // 保存变化数据
19891 this.editor.history.save(this.data); // 清除缓存
19892
19893 this.data.length = 0;
19894 this.emit();
19895 }
19896 };
19897 /**
19898 * 发布 change event
19899 */
19900
19901
19902 Change.prototype.emit = function () {
19903 var _context;
19904
19905 // 执行 onchange 回调
19906 (0, _forEach["default"])(_context = this.editor.txt.eventHooks.changeEvents).call(_context, function (fn) {
19907 return fn();
19908 });
19909 }; // 重写 observe
19910
19911
19912 Change.prototype.observe = function () {
19913 var _this = this;
19914
19915 _super.prototype.observe.call(this, this.editor.$textElem.elems[0]);
19916
19917 var timeout = this.editor.config.onchangeTimeout;
19918 this.asyncSave = util_1.debounce(function () {
19919 _this.save();
19920 }, timeout);
19921
19922 if (!this.editor.isCompatibleMode) {
19923 this.editor.$textElem.on('compositionend', function () {
19924 _this.asyncSave();
19925 });
19926 }
19927 };
19928
19929 return Change;
19930}(mutation_1["default"]);
19931
19932exports["default"] = Change;
19933
19934/***/ }),
19935/* 386 */
19936/***/ (function(module, exports, __webpack_require__) {
19937
19938"use strict";
19939
19940/**
19941 * @description 封装 MutationObserver
19942 * @author fangzhicong
19943 */
19944
19945var _interopRequireDefault = __webpack_require__(0);
19946
19947var _defineProperty = _interopRequireDefault(__webpack_require__(1));
19948
19949(0, _defineProperty["default"])(exports, "__esModule", {
19950 value: true
19951});
19952/**
19953 * 封装 MutationObserver,抽离成公共类
19954 */
19955
19956var Mutation =
19957/** @class */
19958function () {
19959 /**
19960 * 构造器
19961 * @param fn 发生变化时执行的回调函数
19962 * @param options 自定义配置项
19963 */
19964 function Mutation(fn, options) {
19965 var _this = this;
19966 /**
19967 * 默认的 MutationObserverInit 配置
19968 */
19969
19970
19971 this.options = {
19972 subtree: true,
19973 childList: true,
19974 attributes: true,
19975 attributeOldValue: true,
19976 characterData: true,
19977 characterDataOldValue: true
19978 };
19979
19980 this.callback = function (mutations) {
19981 fn(mutations, _this);
19982 };
19983
19984 this.observer = new MutationObserver(this.callback);
19985 options && (this.options = options);
19986 }
19987
19988 (0, _defineProperty["default"])(Mutation.prototype, "target", {
19989 get: function get() {
19990 return this.node;
19991 },
19992 enumerable: false,
19993 configurable: true
19994 });
19995 /**
19996 * 绑定监听节点(初次绑定有效)
19997 * @param node 需要被监听的节点
19998 */
19999
20000 Mutation.prototype.observe = function (node) {
20001 if (!(this.node instanceof Node)) {
20002 this.node = node;
20003 this.connect();
20004 }
20005 };
20006 /**
20007 * 连接监听器(开始观察)
20008 */
20009
20010
20011 Mutation.prototype.connect = function () {
20012 if (this.node) {
20013 this.observer.observe(this.node, this.options);
20014 return this;
20015 }
20016
20017 throw new Error('还未初始化绑定,请您先绑定有效的 Node 节点');
20018 };
20019 /**
20020 * 断开监听器(停止观察)
20021 */
20022
20023
20024 Mutation.prototype.disconnect = function () {
20025 var list = this.observer.takeRecords();
20026 list.length && this.callback(list);
20027 this.observer.disconnect();
20028 };
20029
20030 return Mutation;
20031}();
20032
20033exports["default"] = Mutation;
20034
20035/***/ }),
20036/* 387 */
20037/***/ (function(module, exports, __webpack_require__) {
20038
20039"use strict";
20040
20041/**
20042 * @description 历史记录
20043 * @author fangzhicong
20044 */
20045
20046var _interopRequireDefault = __webpack_require__(0);
20047
20048var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20049
20050var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
20051 return mod && mod.__esModule ? mod : {
20052 "default": mod
20053 };
20054};
20055
20056(0, _defineProperty["default"])(exports, "__esModule", {
20057 value: true
20058});
20059
20060var content_1 = __importDefault(__webpack_require__(388));
20061
20062var scroll_1 = __importDefault(__webpack_require__(400));
20063
20064var range_1 = __importDefault(__webpack_require__(401));
20065/**
20066 * 历史记录(撤销、恢复)
20067 */
20068
20069
20070var History =
20071/** @class */
20072function () {
20073 function History(editor) {
20074 this.editor = editor;
20075 this.content = new content_1["default"](editor);
20076 this.scroll = new scroll_1["default"](editor);
20077 this.range = new range_1["default"](editor);
20078 }
20079
20080 (0, _defineProperty["default"])(History.prototype, "size", {
20081 /**
20082 * 获取缓存中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]
20083 */
20084 get: function get() {
20085 return this.scroll.size;
20086 },
20087 enumerable: false,
20088 configurable: true
20089 });
20090 /**
20091 * 初始化绑定。在 editor.create() 结尾时调用
20092 */
20093
20094 History.prototype.observe = function () {
20095 this.content.observe();
20096 this.scroll.observe(); // 标准模式下才进行初始化绑定
20097
20098 !this.editor.isCompatibleMode && this.range.observe();
20099 };
20100 /**
20101 * 保存数据
20102 */
20103
20104
20105 History.prototype.save = function (mutations) {
20106 if (mutations.length) {
20107 this.content.save(mutations);
20108 this.scroll.save(); // 标准模式下才进行缓存
20109
20110 !this.editor.isCompatibleMode && this.range.save();
20111 }
20112 };
20113 /**
20114 * 撤销
20115 */
20116
20117
20118 History.prototype.revoke = function () {
20119 this.editor.change.disconnect();
20120 var res = this.content.revoke();
20121
20122 if (res) {
20123 this.scroll.revoke(); // 标准模式下才执行
20124
20125 if (!this.editor.isCompatibleMode) {
20126 this.range.revoke();
20127 this.editor.$textElem.focus();
20128 }
20129 }
20130
20131 this.editor.change.connect(); // 如果用户在 onchange 中修改了内容(DOM),那么缓存中的节点数据可能不连贯了,不连贯的数据必将导致恢复失败,所以必须将用户的 onchange 处于监控状态中
20132
20133 res && this.editor.change.emit();
20134 };
20135 /**
20136 * 恢复
20137 */
20138
20139
20140 History.prototype.restore = function () {
20141 this.editor.change.disconnect();
20142 var res = this.content.restore();
20143
20144 if (res) {
20145 this.scroll.restore(); // 标准模式下才执行
20146
20147 if (!this.editor.isCompatibleMode) {
20148 this.range.restore();
20149 this.editor.$textElem.focus();
20150 }
20151 }
20152
20153 this.editor.change.connect(); // 与 revoke 同理
20154
20155 res && this.editor.change.emit();
20156 };
20157
20158 return History;
20159}();
20160
20161exports["default"] = History;
20162
20163/***/ }),
20164/* 388 */
20165/***/ (function(module, exports, __webpack_require__) {
20166
20167"use strict";
20168
20169/**
20170 * @description 整合差异备份和内容备份,进行统一管理
20171 * @author fangzhicong
20172 */
20173
20174var _interopRequireDefault = __webpack_require__(0);
20175
20176var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20177
20178var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
20179 return mod && mod.__esModule ? mod : {
20180 "default": mod
20181 };
20182};
20183
20184(0, _defineProperty["default"])(exports, "__esModule", {
20185 value: true
20186});
20187
20188var node_1 = __importDefault(__webpack_require__(389));
20189
20190var html_1 = __importDefault(__webpack_require__(398));
20191
20192var ContentCache =
20193/** @class */
20194function () {
20195 function ContentCache(editor) {
20196 this.editor = editor;
20197 }
20198 /**
20199 * 初始化绑定
20200 */
20201
20202
20203 ContentCache.prototype.observe = function () {
20204 if (this.editor.isCompatibleMode) {
20205 // 兼容模式(内容备份)
20206 this.cache = new html_1["default"](this.editor);
20207 } else {
20208 // 标准模式(差异备份/节点备份)
20209 this.cache = new node_1["default"](this.editor);
20210 }
20211
20212 this.cache.observe();
20213 };
20214 /**
20215 * 保存
20216 */
20217
20218
20219 ContentCache.prototype.save = function (mutations) {
20220 if (this.editor.isCompatibleMode) {
20221 ;
20222 this.cache.save();
20223 } else {
20224 ;
20225 this.cache.compile(mutations);
20226 }
20227 };
20228 /**
20229 * 撤销
20230 */
20231
20232
20233 ContentCache.prototype.revoke = function () {
20234 var _a;
20235
20236 return (_a = this.cache) === null || _a === void 0 ? void 0 : _a.revoke();
20237 };
20238 /**
20239 * 恢复
20240 */
20241
20242
20243 ContentCache.prototype.restore = function () {
20244 var _a;
20245
20246 return (_a = this.cache) === null || _a === void 0 ? void 0 : _a.restore();
20247 };
20248
20249 return ContentCache;
20250}();
20251
20252exports["default"] = ContentCache;
20253
20254/***/ }),
20255/* 389 */
20256/***/ (function(module, exports, __webpack_require__) {
20257
20258"use strict";
20259
20260/**
20261 * @description 差异备份
20262 * @author fangzhicong
20263 */
20264
20265var _interopRequireDefault = __webpack_require__(0);
20266
20267var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20268
20269var _create = _interopRequireDefault(__webpack_require__(3));
20270
20271var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
20272
20273var __extends = void 0 && (void 0).__extends || function () {
20274 var _extendStatics = function extendStatics(d, b) {
20275 _extendStatics = _setPrototypeOf["default"] || {
20276 __proto__: []
20277 } instanceof Array && function (d, b) {
20278 d.__proto__ = b;
20279 } || function (d, b) {
20280 for (var p in b) {
20281 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
20282 }
20283 };
20284
20285 return _extendStatics(d, b);
20286 };
20287
20288 return function (d, b) {
20289 _extendStatics(d, b);
20290
20291 function __() {
20292 this.constructor = d;
20293 }
20294
20295 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
20296 };
20297}();
20298
20299var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
20300 return mod && mod.__esModule ? mod : {
20301 "default": mod
20302 };
20303};
20304
20305(0, _defineProperty["default"])(exports, "__esModule", {
20306 value: true
20307});
20308
20309var cache_1 = __importDefault(__webpack_require__(95));
20310
20311var compile_1 = __importDefault(__webpack_require__(391));
20312
20313var decompilation_1 = __webpack_require__(392);
20314
20315var NodeCache =
20316/** @class */
20317function (_super) {
20318 __extends(NodeCache, _super);
20319
20320 function NodeCache(editor) {
20321 var _this = _super.call(this, editor.config.historyMaxSize) || this;
20322
20323 _this.editor = editor;
20324 return _this;
20325 }
20326
20327 NodeCache.prototype.observe = function () {
20328 this.resetMaxSize(this.editor.config.historyMaxSize);
20329 };
20330 /**
20331 * 编译并保存数据
20332 */
20333
20334
20335 NodeCache.prototype.compile = function (data) {
20336 this.save(compile_1["default"](data));
20337 return this;
20338 };
20339 /**
20340 * 撤销
20341 */
20342
20343
20344 NodeCache.prototype.revoke = function () {
20345 return _super.prototype.revoke.call(this, function (data) {
20346 decompilation_1.revoke(data);
20347 });
20348 };
20349 /**
20350 * 恢复
20351 */
20352
20353
20354 NodeCache.prototype.restore = function () {
20355 return _super.prototype.restore.call(this, function (data) {
20356 decompilation_1.restore(data);
20357 });
20358 };
20359
20360 return NodeCache;
20361}(cache_1["default"]);
20362
20363exports["default"] = NodeCache;
20364
20365/***/ }),
20366/* 390 */
20367/***/ (function(module, exports, __webpack_require__) {
20368
20369"use strict";
20370
20371/**
20372 * @description 数据结构 - 栈
20373 * @author fangzhicong
20374 */
20375
20376var _interopRequireDefault = __webpack_require__(0);
20377
20378var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20379
20380(0, _defineProperty["default"])(exports, "__esModule", {
20381 value: true
20382});
20383exports.CeilStack = void 0;
20384/**
20385 * 栈(限制最大数据条数,栈满后可以继续入栈,而先入栈的数据将失效)
20386 */
20387// 取名灵感来自 Math.ceil,向上取有效值
20388
20389var CeilStack =
20390/** @class */
20391function () {
20392 function CeilStack(max) {
20393 if (max === void 0) {
20394 max = 0;
20395 }
20396 /**
20397 * 数据缓存
20398 */
20399
20400
20401 this.data = [];
20402 /**
20403 * 栈的最大长度。为零则长度不限
20404 */
20405
20406 this.max = 0;
20407 /**
20408 * 标识是否重设过 max 值
20409 */
20410
20411 this.reset = false;
20412 max = Math.abs(max);
20413 max && (this.max = max);
20414 }
20415 /**
20416 * 允许用户重设一次 max 值
20417 */
20418
20419
20420 CeilStack.prototype.resetMax = function (maxSize) {
20421 maxSize = Math.abs(maxSize);
20422
20423 if (!this.reset && !isNaN(maxSize)) {
20424 this.max = maxSize;
20425 this.reset = true;
20426 }
20427 };
20428
20429 (0, _defineProperty["default"])(CeilStack.prototype, "size", {
20430 /**
20431 * 当前栈中的数据条数
20432 */
20433 get: function get() {
20434 return this.data.length;
20435 },
20436 enumerable: false,
20437 configurable: true
20438 });
20439 /**
20440 * 入栈
20441 * @param data 入栈的数据
20442 */
20443
20444 CeilStack.prototype.instack = function (data) {
20445 this.data.unshift(data);
20446
20447 if (this.max && this.size > this.max) {
20448 this.data.length = this.max;
20449 }
20450
20451 return this;
20452 };
20453 /**
20454 * 出栈
20455 */
20456
20457
20458 CeilStack.prototype.outstack = function () {
20459 return this.data.shift();
20460 };
20461 /**
20462 * 清空栈
20463 */
20464
20465
20466 CeilStack.prototype.clear = function () {
20467 this.data.length = 0;
20468 return this;
20469 };
20470
20471 return CeilStack;
20472}();
20473
20474exports.CeilStack = CeilStack;
20475
20476/***/ }),
20477/* 391 */
20478/***/ (function(module, exports, __webpack_require__) {
20479
20480"use strict";
20481
20482/**
20483 * @description 数据整理
20484 * @author fangzhicong
20485 */
20486
20487var _interopRequireDefault = __webpack_require__(0);
20488
20489var _indexOf = _interopRequireDefault(__webpack_require__(53));
20490
20491var _forEach = _interopRequireDefault(__webpack_require__(6));
20492
20493var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20494
20495(0, _defineProperty["default"])(exports, "__esModule", {
20496 value: true
20497});
20498
20499var util_1 = __webpack_require__(7);
20500/**
20501 * 数据类型
20502 */
20503
20504
20505function compileType(data) {
20506 switch (data) {
20507 case 'childList':
20508 return 'node';
20509
20510 case 'attributes':
20511 return 'attr';
20512
20513 default:
20514 return 'text';
20515 }
20516}
20517/**
20518 * 获取当前的文本内容
20519 */
20520
20521
20522function compileValue(data) {
20523 switch (data.type) {
20524 case 'attributes':
20525 return data.target.getAttribute(data.attributeName) || '';
20526
20527 case 'characterData':
20528 return data.target.textContent;
20529
20530 default:
20531 return '';
20532 }
20533}
20534/**
20535 * addedNodes/removedNodes
20536 */
20537
20538
20539function complieNodes(data) {
20540 var temp = {};
20541
20542 if (data.addedNodes.length) {
20543 temp.add = util_1.toArray(data.addedNodes);
20544 }
20545
20546 if (data.removedNodes.length) {
20547 temp.remove = util_1.toArray(data.removedNodes);
20548 }
20549
20550 return temp;
20551}
20552/**
20553 * addedNodes/removedNodes 的相对位置
20554 */
20555
20556
20557function compliePosition(data) {
20558 var temp;
20559
20560 if (data.previousSibling) {
20561 temp = {
20562 type: 'before',
20563 target: data.previousSibling
20564 };
20565 } else if (data.nextSibling) {
20566 temp = {
20567 type: 'after',
20568 target: data.nextSibling
20569 };
20570 } else {
20571 temp = {
20572 type: 'parent',
20573 target: data.target
20574 };
20575 }
20576
20577 return temp;
20578}
20579/**
20580 * 补全 Firefox 数据的特殊标签
20581 */
20582
20583
20584var tag = ['UL', 'OL', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
20585/**
20586 * 将 MutationRecord 转换成自定义格式的数据
20587 */
20588
20589function compile(data) {
20590 var temp = []; // 以下两个变量是兼容 Firefox 时使用到的
20591 // 前一次操作为删除元素节点
20592
20593 var removeNode = false; // 连续的节点删除记录
20594
20595 var removeCache = [];
20596 (0, _forEach["default"])(data).call(data, function (record, index) {
20597 var item = {
20598 type: compileType(record.type),
20599 target: record.target,
20600 attr: record.attributeName || '',
20601 value: compileValue(record) || '',
20602 oldValue: record.oldValue || '',
20603 nodes: complieNodes(record),
20604 position: compliePosition(record)
20605 };
20606 temp.push(item); // 兼容 Firefox,补全数据(这几十行代码写得吐血,跟 IE 有得一拼)
20607
20608 if (!util_1.UA.isFirefox) {
20609 return;
20610 } // 正常的数据:缩进、行高、超链接、对齐方式、引用、插入表情、插入图片、分割线、表格、插入代码
20611 // 普通的数据补全:标题(纯文本内容)、加粗、斜体、删除线、下划线、颜色、背景色、字体、字号、列表(纯文本内容)
20612 // 特殊的数据补全:标题(包含 HTMLElement)、列表(包含 HTMLElement 或 ul -> ol 或 ol -> ul 或 Enter)
20613
20614
20615 if (removeNode && record.addedNodes.length && record.addedNodes[0].nodeType == 1) {
20616 // 需要被全数据的目标节点
20617 var replenishNode = record.addedNodes[0];
20618 var replenishData = {
20619 type: 'node',
20620 target: replenishNode,
20621 attr: '',
20622 value: '',
20623 oldValue: '',
20624 nodes: {
20625 add: [removeNode]
20626 },
20627 position: {
20628 type: 'parent',
20629 target: replenishNode
20630 }
20631 }; // 特殊的标签:['UL', 'OL', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6']
20632
20633 if ((0, _indexOf["default"])(tag).call(tag, replenishNode.nodeName) != -1) {
20634 replenishData.nodes.add = util_1.toArray(replenishNode.childNodes);
20635 temp.push(replenishData);
20636 } // 上一个删除元素是文本节点
20637 else if (removeNode.nodeType == 3) {
20638 if (contains(replenishNode, removeCache)) {
20639 replenishData.nodes.add = util_1.toArray(replenishNode.childNodes);
20640 }
20641
20642 temp.push(replenishData);
20643 } // 上一个删除元素是 Element && 由近到远的删除元素至少有一个是需要补全数据节点的子节点
20644 else if ((0, _indexOf["default"])(tag).call(tag, record.target.nodeName) == -1 && contains(replenishNode, removeCache)) {
20645 replenishData.nodes.add = util_1.toArray(replenishNode.childNodes);
20646 temp.push(replenishData);
20647 }
20648 } // 记录本次的节点信息
20649
20650
20651 if (item.type == 'node' && record.removedNodes.length == 1) {
20652 removeNode = record.removedNodes[0];
20653 removeCache.push(removeNode);
20654 } else {
20655 removeNode = false;
20656 removeCache.length = 0;
20657 }
20658 });
20659 return temp;
20660}
20661
20662exports["default"] = compile; // 删除元素的历史记录中包含有多少个目标节点的子元素
20663
20664function contains(tar, childs) {
20665 var count = 0;
20666
20667 for (var i = childs.length - 1; i > 0; i--) {
20668 if (tar.contains(childs[i])) {
20669 count++;
20670 } else {
20671 break;
20672 }
20673 }
20674
20675 return count;
20676}
20677
20678/***/ }),
20679/* 392 */
20680/***/ (function(module, exports, __webpack_require__) {
20681
20682"use strict";
20683
20684
20685var _interopRequireDefault = __webpack_require__(0);
20686
20687var _entries = _interopRequireDefault(__webpack_require__(393));
20688
20689var _forEach = _interopRequireDefault(__webpack_require__(6));
20690
20691var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20692
20693(0, _defineProperty["default"])(exports, "__esModule", {
20694 value: true
20695});
20696exports.restore = exports.revoke = void 0;
20697/**
20698 * 将节点添加到 DOM 树中
20699 * @param data 数据项
20700 * @param list 节点集合(addedNodes 或 removedNodes)
20701 */
20702
20703function insertNode(data, list) {
20704 var reference = data.position.target;
20705
20706 switch (data.position.type) {
20707 // reference 在这些节点的前面
20708 case 'before':
20709 if (reference.nextSibling) {
20710 reference = reference.nextSibling;
20711 (0, _forEach["default"])(list).call(list, function (item) {
20712 data.target.insertBefore(item, reference);
20713 });
20714 } else {
20715 (0, _forEach["default"])(list).call(list, function (item) {
20716 data.target.appendChild(item);
20717 });
20718 }
20719
20720 break;
20721 // reference 在这些节点的后面
20722
20723 case 'after':
20724 (0, _forEach["default"])(list).call(list, function (item) {
20725 data.target.insertBefore(item, reference);
20726 });
20727 break;
20728 // parent
20729 // reference 是这些节点的父节点
20730
20731 default:
20732 (0, _forEach["default"])(list).call(list, function (item) {
20733 reference.appendChild(item);
20734 });
20735 break;
20736 }
20737}
20738/* ------------------------------------------------------------------ 撤销逻辑 ------------------------------------------------------------------ */
20739
20740
20741function revokeNode(data) {
20742 for (var _i = 0, _a = (0, _entries["default"])(data.nodes); _i < _a.length; _i++) {
20743 var _b = _a[_i],
20744 relative = _b[0],
20745 list = _b[1];
20746
20747 switch (relative) {
20748 // 反向操作,将这些节点从 DOM 中移除
20749 case 'add':
20750 (0, _forEach["default"])(list).call(list, function (item) {
20751 data.target.removeChild(item);
20752 });
20753 break;
20754 // remove(反向操作,将这些节点添加到 DOM 中)
20755
20756 default:
20757 {
20758 insertNode(data, list);
20759 break;
20760 }
20761 }
20762 }
20763}
20764/**
20765 * 撤销 attribute
20766 */
20767
20768
20769function revokeAttr(data) {
20770 var target = data.target;
20771
20772 if (data.oldValue == null) {
20773 target.removeAttribute(data.attr);
20774 } else {
20775 target.setAttribute(data.attr, data.oldValue);
20776 }
20777}
20778/**
20779 * 撤销文本内容
20780 */
20781
20782
20783function revokeText(data) {
20784 data.target.textContent = data.oldValue;
20785}
20786
20787var revokeFns = {
20788 node: revokeNode,
20789 text: revokeText,
20790 attr: revokeAttr
20791}; // 撤销 - 对外暴露的接口
20792
20793function revoke(data) {
20794 for (var i = data.length - 1; i > -1; i--) {
20795 var item = data[i];
20796 revokeFns[item.type](item);
20797 }
20798}
20799
20800exports.revoke = revoke;
20801/* ------------------------------------------------------------------ 恢复逻辑 ------------------------------------------------------------------ */
20802
20803function restoreNode(data) {
20804 for (var _i = 0, _a = (0, _entries["default"])(data.nodes); _i < _a.length; _i++) {
20805 var _b = _a[_i],
20806 relative = _b[0],
20807 list = _b[1];
20808
20809 switch (relative) {
20810 case 'add':
20811 {
20812 insertNode(data, list);
20813 break;
20814 }
20815 // remove
20816
20817 default:
20818 {
20819 (0, _forEach["default"])(list).call(list, function (item) {
20820 ;
20821 item.parentNode.removeChild(item);
20822 });
20823 break;
20824 }
20825 }
20826 }
20827}
20828
20829function restoreText(data) {
20830 data.target.textContent = data.value;
20831}
20832
20833function restoreAttr(data) {
20834 ;
20835 data.target.setAttribute(data.attr, data.value);
20836}
20837
20838var restoreFns = {
20839 node: restoreNode,
20840 text: restoreText,
20841 attr: restoreAttr
20842}; // 恢复 - 对外暴露的接口
20843
20844function restore(data) {
20845 for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
20846 var item = data_1[_i];
20847 restoreFns[item.type](item);
20848 }
20849}
20850
20851exports.restore = restore;
20852
20853/***/ }),
20854/* 393 */
20855/***/ (function(module, exports, __webpack_require__) {
20856
20857module.exports = __webpack_require__(394);
20858
20859/***/ }),
20860/* 394 */
20861/***/ (function(module, exports, __webpack_require__) {
20862
20863var parent = __webpack_require__(395);
20864
20865module.exports = parent;
20866
20867
20868/***/ }),
20869/* 395 */
20870/***/ (function(module, exports, __webpack_require__) {
20871
20872__webpack_require__(396);
20873var path = __webpack_require__(10);
20874
20875module.exports = path.Object.entries;
20876
20877
20878/***/ }),
20879/* 396 */
20880/***/ (function(module, exports, __webpack_require__) {
20881
20882var $ = __webpack_require__(4);
20883var $entries = __webpack_require__(397).entries;
20884
20885// `Object.entries` method
20886// https://tc39.github.io/ecma262/#sec-object.entries
20887$({ target: 'Object', stat: true }, {
20888 entries: function entries(O) {
20889 return $entries(O);
20890 }
20891});
20892
20893
20894/***/ }),
20895/* 397 */
20896/***/ (function(module, exports, __webpack_require__) {
20897
20898var DESCRIPTORS = __webpack_require__(14);
20899var objectKeys = __webpack_require__(57);
20900var toIndexedObject = __webpack_require__(25);
20901var propertyIsEnumerable = __webpack_require__(55).f;
20902
20903// `Object.{ entries, values }` methods implementation
20904var createMethod = function (TO_ENTRIES) {
20905 return function (it) {
20906 var O = toIndexedObject(it);
20907 var keys = objectKeys(O);
20908 var length = keys.length;
20909 var i = 0;
20910 var result = [];
20911 var key;
20912 while (length > i) {
20913 key = keys[i++];
20914 if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {
20915 result.push(TO_ENTRIES ? [key, O[key]] : O[key]);
20916 }
20917 }
20918 return result;
20919 };
20920};
20921
20922module.exports = {
20923 // `Object.entries` method
20924 // https://tc39.github.io/ecma262/#sec-object.entries
20925 entries: createMethod(true),
20926 // `Object.values` method
20927 // https://tc39.github.io/ecma262/#sec-object.values
20928 values: createMethod(false)
20929};
20930
20931
20932/***/ }),
20933/* 398 */
20934/***/ (function(module, exports, __webpack_require__) {
20935
20936"use strict";
20937
20938
20939var _interopRequireDefault = __webpack_require__(0);
20940
20941var _defineProperty = _interopRequireDefault(__webpack_require__(1));
20942
20943(0, _defineProperty["default"])(exports, "__esModule", {
20944 value: true
20945});
20946
20947var chain_1 = __webpack_require__(399);
20948
20949var HtmlCache =
20950/** @class */
20951function () {
20952 function HtmlCache(editor) {
20953 this.editor = editor;
20954 this.data = new chain_1.TailChain();
20955 }
20956 /**
20957 * 初始化绑定
20958 */
20959
20960
20961 HtmlCache.prototype.observe = function () {
20962 this.data.resetMax(this.editor.config.historyMaxSize); // 保存初始化值
20963
20964 this.data.insertLast(this.editor.$textElem.html());
20965 };
20966 /**
20967 * 保存
20968 */
20969
20970
20971 HtmlCache.prototype.save = function () {
20972 this.data.insertLast(this.editor.$textElem.html());
20973 return this;
20974 };
20975 /**
20976 * 撤销
20977 */
20978
20979
20980 HtmlCache.prototype.revoke = function () {
20981 var data = this.data.prev();
20982
20983 if (data) {
20984 this.editor.$textElem.html(data);
20985 return true;
20986 }
20987
20988 return false;
20989 };
20990 /**
20991 * 恢复
20992 */
20993
20994
20995 HtmlCache.prototype.restore = function () {
20996 var data = this.data.next();
20997
20998 if (data) {
20999 this.editor.$textElem.html(data);
21000 return true;
21001 }
21002
21003 return false;
21004 };
21005
21006 return HtmlCache;
21007}();
21008
21009exports["default"] = HtmlCache;
21010
21011/***/ }),
21012/* 399 */
21013/***/ (function(module, exports, __webpack_require__) {
21014
21015"use strict";
21016
21017/**
21018 * @description 数据结构 - 链表
21019 * @author fangzhicong
21020 */
21021
21022var _interopRequireDefault = __webpack_require__(0);
21023
21024var _splice = _interopRequireDefault(__webpack_require__(88));
21025
21026var _defineProperty = _interopRequireDefault(__webpack_require__(1));
21027
21028(0, _defineProperty["default"])(exports, "__esModule", {
21029 value: true
21030});
21031exports.TailChain = void 0;
21032/**
21033 * 特殊链表(数据尾插入、插入前自动清理指针后边的数据、插入后指针永远定位于最后一位元素、可限制链表长度、指针双向移动)
21034 */
21035
21036var TailChain =
21037/** @class */
21038function () {
21039 function TailChain() {
21040 /**
21041 * 链表数据
21042 */
21043 this.data = [];
21044 /**
21045 * 链表最大长度,零表示长度不限
21046 */
21047
21048 this.max = 0;
21049 /**
21050 * 指针
21051 */
21052
21053 this.point = 0; // 当前指针是否人为操作过
21054
21055 this.isRe = false;
21056 }
21057 /**
21058 * 允许用户重设一次 max 值
21059 */
21060
21061
21062 TailChain.prototype.resetMax = function (maxSize) {
21063 maxSize = Math.abs(maxSize);
21064 maxSize && (this.max = maxSize);
21065 };
21066
21067 (0, _defineProperty["default"])(TailChain.prototype, "size", {
21068 /**
21069 * 当前链表的长度
21070 */
21071 get: function get() {
21072 return this.data.length;
21073 },
21074 enumerable: false,
21075 configurable: true
21076 });
21077 /**
21078 * 尾插入
21079 * @param data 插入的数据
21080 */
21081
21082 TailChain.prototype.insertLast = function (data) {
21083 // 人为操作过指针,清除指针后面的元素
21084 if (this.isRe) {
21085 var _context;
21086
21087 (0, _splice["default"])(_context = this.data).call(_context, this.point + 1);
21088 this.isRe = false;
21089 }
21090
21091 this.data.push(data); // 超出链表最大长度
21092
21093 while (this.max && this.size > this.max) {
21094 this.data.shift();
21095 } // 从新定位指针到最后一个元素
21096
21097
21098 this.point = this.size - 1;
21099 return this;
21100 };
21101 /**
21102 * 获取当前指针元素
21103 */
21104
21105
21106 TailChain.prototype.current = function () {
21107 return this.data[this.point];
21108 };
21109 /**
21110 * 获取上一指针元素
21111 */
21112
21113
21114 TailChain.prototype.prev = function () {
21115 !this.isRe && (this.isRe = true);
21116 this.point--;
21117
21118 if (this.point < 0) {
21119 this.point = 0;
21120 return undefined;
21121 }
21122
21123 return this.current();
21124 };
21125 /**
21126 * 下一指针元素
21127 */
21128
21129
21130 TailChain.prototype.next = function () {
21131 !this.isRe && (this.isRe = true);
21132 this.point++;
21133
21134 if (this.point >= this.size) {
21135 this.point = this.size - 1;
21136 return undefined;
21137 }
21138
21139 return this.current();
21140 };
21141
21142 return TailChain;
21143}();
21144
21145exports.TailChain = TailChain;
21146
21147/***/ }),
21148/* 400 */
21149/***/ (function(module, exports, __webpack_require__) {
21150
21151"use strict";
21152
21153/**
21154 * @description 记录 scrollTop
21155 * @author fangzhicong
21156 */
21157
21158var _interopRequireDefault = __webpack_require__(0);
21159
21160var _defineProperty = _interopRequireDefault(__webpack_require__(1));
21161
21162var _create = _interopRequireDefault(__webpack_require__(3));
21163
21164var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
21165
21166var __extends = void 0 && (void 0).__extends || function () {
21167 var _extendStatics = function extendStatics(d, b) {
21168 _extendStatics = _setPrototypeOf["default"] || {
21169 __proto__: []
21170 } instanceof Array && function (d, b) {
21171 d.__proto__ = b;
21172 } || function (d, b) {
21173 for (var p in b) {
21174 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
21175 }
21176 };
21177
21178 return _extendStatics(d, b);
21179 };
21180
21181 return function (d, b) {
21182 _extendStatics(d, b);
21183
21184 function __() {
21185 this.constructor = d;
21186 }
21187
21188 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
21189 };
21190}();
21191
21192var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
21193 return mod && mod.__esModule ? mod : {
21194 "default": mod
21195 };
21196};
21197
21198(0, _defineProperty["default"])(exports, "__esModule", {
21199 value: true
21200});
21201
21202var cache_1 = __importDefault(__webpack_require__(95));
21203
21204var ScrollCache =
21205/** @class */
21206function (_super) {
21207 __extends(ScrollCache, _super);
21208
21209 function ScrollCache(editor) {
21210 var _this = _super.call(this, editor.config.historyMaxSize) || this;
21211
21212 _this.editor = editor;
21213 /**
21214 * 上一次的 scrollTop
21215 */
21216
21217 _this.last = 0;
21218 _this.target = editor.$textElem.elems[0];
21219 return _this;
21220 }
21221 /**
21222 * 给编辑区容器绑定 scroll 事件
21223 */
21224
21225
21226 ScrollCache.prototype.observe = function () {
21227 var _this = this;
21228
21229 this.target = this.editor.$textElem.elems[0];
21230 this.editor.$textElem.on('scroll', function () {
21231 _this.last = _this.target.scrollTop;
21232 });
21233 this.resetMaxSize(this.editor.config.historyMaxSize);
21234 };
21235 /**
21236 * 保存 scrollTop 值
21237 */
21238
21239
21240 ScrollCache.prototype.save = function () {
21241 _super.prototype.save.call(this, [this.last, this.target.scrollTop]);
21242
21243 return this;
21244 };
21245 /**
21246 * 撤销
21247 */
21248
21249
21250 ScrollCache.prototype.revoke = function () {
21251 var _this = this;
21252
21253 return _super.prototype.revoke.call(this, function (data) {
21254 _this.target.scrollTop = data[0];
21255 });
21256 };
21257 /**
21258 * 恢复
21259 */
21260
21261
21262 ScrollCache.prototype.restore = function () {
21263 var _this = this;
21264
21265 return _super.prototype.restore.call(this, function (data) {
21266 _this.target.scrollTop = data[1];
21267 });
21268 };
21269
21270 return ScrollCache;
21271}(cache_1["default"]);
21272
21273exports["default"] = ScrollCache;
21274
21275/***/ }),
21276/* 401 */
21277/***/ (function(module, exports, __webpack_require__) {
21278
21279"use strict";
21280
21281/**
21282 * @description 记录 range 变化
21283 * @author fangzhicong
21284 */
21285
21286var _interopRequireDefault = __webpack_require__(0);
21287
21288var _defineProperty = _interopRequireDefault(__webpack_require__(1));
21289
21290var _create = _interopRequireDefault(__webpack_require__(3));
21291
21292var _setPrototypeOf = _interopRequireDefault(__webpack_require__(5));
21293
21294var __extends = void 0 && (void 0).__extends || function () {
21295 var _extendStatics = function extendStatics(d, b) {
21296 _extendStatics = _setPrototypeOf["default"] || {
21297 __proto__: []
21298 } instanceof Array && function (d, b) {
21299 d.__proto__ = b;
21300 } || function (d, b) {
21301 for (var p in b) {
21302 if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
21303 }
21304 };
21305
21306 return _extendStatics(d, b);
21307 };
21308
21309 return function (d, b) {
21310 _extendStatics(d, b);
21311
21312 function __() {
21313 this.constructor = d;
21314 }
21315
21316 d.prototype = b === null ? (0, _create["default"])(b) : (__.prototype = b.prototype, new __());
21317 };
21318}();
21319
21320var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
21321 return mod && mod.__esModule ? mod : {
21322 "default": mod
21323 };
21324};
21325
21326(0, _defineProperty["default"])(exports, "__esModule", {
21327 value: true
21328});
21329
21330var cache_1 = __importDefault(__webpack_require__(95));
21331
21332var dom_core_1 = __importDefault(__webpack_require__(2));
21333
21334var util_1 = __webpack_require__(7);
21335/**
21336 * 把 Range 对象转换成缓存对象
21337 * @param range Range 对象
21338 */
21339
21340
21341function rangeToObject(range) {
21342 return {
21343 start: [range.startContainer, range.startOffset],
21344 end: [range.endContainer, range.endOffset],
21345 root: range.commonAncestorContainer,
21346 collapsed: range.collapsed
21347 };
21348}
21349/**
21350 * 编辑区 range 缓存管理器
21351 */
21352
21353
21354var RangeCache =
21355/** @class */
21356function (_super) {
21357 __extends(RangeCache, _super);
21358
21359 function RangeCache(editor) {
21360 var _this = _super.call(this, editor.config.historyMaxSize) || this;
21361
21362 _this.editor = editor;
21363 _this.lastRange = rangeToObject(document.createRange());
21364 _this.root = editor.$textElem.elems[0];
21365 _this.updateLastRange = util_1.debounce(function () {
21366 _this.lastRange = rangeToObject(_this.rangeHandle);
21367 }, editor.config.onchangeTimeout);
21368 return _this;
21369 }
21370
21371 (0, _defineProperty["default"])(RangeCache.prototype, "rangeHandle", {
21372 /**
21373 * 获取 Range 对象
21374 */
21375 get: function get() {
21376 var selection = document.getSelection();
21377 return selection && selection.rangeCount ? selection.getRangeAt(0) : document.createRange();
21378 },
21379 enumerable: false,
21380 configurable: true
21381 });
21382 /**
21383 * 初始化绑定
21384 */
21385
21386 RangeCache.prototype.observe = function () {
21387 var self = this; // 同步节点数据
21388
21389 this.root = this.editor.$textElem.elems[0];
21390 this.resetMaxSize(this.editor.config.historyMaxSize); // selection change 回调函数
21391
21392 function selectionchange() {
21393 var handle = self.rangeHandle;
21394
21395 if (self.root === handle.commonAncestorContainer || self.root.contains(handle.commonAncestorContainer)) {
21396 // 非中文输入状态下才进行记录
21397 if (!self.editor.isComposing) {
21398 self.updateLastRange();
21399 }
21400 }
21401 } // backspace 和 delete 手动更新 Range 缓存
21402
21403
21404 function deletecallback(e) {
21405 if (e.key == 'Backspace' || e.key == 'Delete') {
21406 // self.lastRange = rangeToObject(self.rangeHandle)
21407 self.updateLastRange();
21408 }
21409 } // 绑定事件(必须绑定在 document 上,不能绑定在 window 上)
21410
21411
21412 dom_core_1["default"](document).on('selectionchange', selectionchange); // 解除事件绑定
21413
21414 this.editor.beforeDestroy(function () {
21415 dom_core_1["default"](document).off('selectionchange', selectionchange);
21416 }); // 删除文本时手动更新 range
21417
21418 self.editor.$textElem.on('keydown', deletecallback);
21419 };
21420 /**
21421 * 保存 Range
21422 */
21423
21424
21425 RangeCache.prototype.save = function () {
21426 var current = rangeToObject(this.rangeHandle);
21427
21428 _super.prototype.save.call(this, [this.lastRange, current]);
21429
21430 this.lastRange = current;
21431 return this;
21432 };
21433 /**
21434 * 设置 Range,在 撤销/恢复 中调用
21435 * @param range 缓存的 Range 数据
21436 */
21437
21438
21439 RangeCache.prototype.set = function (range) {
21440 if (range) {
21441 var handle = this.rangeHandle;
21442 handle.setStart.apply(handle, range.start);
21443 handle.setEnd.apply(handle, range.end);
21444 this.editor.menus.changeActive();
21445 return true;
21446 }
21447
21448 return false;
21449 };
21450 /**
21451 * 撤销
21452 */
21453
21454
21455 RangeCache.prototype.revoke = function () {
21456 var _this = this;
21457
21458 return _super.prototype.revoke.call(this, function (data) {
21459 _this.set(data[0]);
21460 });
21461 };
21462 /**
21463 * 恢复
21464 */
21465
21466
21467 RangeCache.prototype.restore = function () {
21468 var _this = this;
21469
21470 return _super.prototype.restore.call(this, function (data) {
21471 _this.set(data[1]);
21472 });
21473 };
21474
21475 return RangeCache;
21476}(cache_1["default"]);
21477
21478exports["default"] = RangeCache;
21479
21480/***/ }),
21481/* 402 */
21482/***/ (function(module, exports, __webpack_require__) {
21483
21484"use strict";
21485
21486
21487var _interopRequireDefault = __webpack_require__(0);
21488
21489var _find = _interopRequireDefault(__webpack_require__(32));
21490
21491var _defineProperty = _interopRequireDefault(__webpack_require__(1));
21492
21493var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
21494 return mod && mod.__esModule ? mod : {
21495 "default": mod
21496 };
21497};
21498
21499(0, _defineProperty["default"])(exports, "__esModule", {
21500 value: true
21501});
21502
21503var dom_core_1 = __importDefault(__webpack_require__(2));
21504
21505__webpack_require__(403);
21506
21507function disableInit(editor) {
21508 var isCurtain = false; // 避免重复生成幕布
21509
21510 var $contentDom;
21511 var $menuDom; // 禁用期间,通过 js 修改内容后,刷新内容
21512
21513 editor.txt.eventHooks.changeEvents.push(function () {
21514 if (isCurtain) {
21515 (0, _find["default"])($contentDom).call($contentDom, '.w-e-content-preview').html(editor.$textElem.html());
21516 }
21517 }); // 创建幕布
21518
21519 function disable() {
21520 if (isCurtain) return; // 隐藏编辑区域
21521
21522 editor.$textElem.hide(); // 生成div 渲染编辑内容
21523
21524 var textContainerZindexValue = editor.zIndex.get('textContainer');
21525 var content = editor.txt.html();
21526 $contentDom = dom_core_1["default"]("<div class=\"w-e-content-mantle\" style=\"z-index:" + textContainerZindexValue + "\">\n <div class=\"w-e-content-preview w-e-text\">" + content + "</div>\n </div>");
21527 editor.$textContainerElem.append($contentDom); // 生成div 菜单膜布
21528
21529 var menuZindexValue = editor.zIndex.get('menu');
21530 $menuDom = dom_core_1["default"]("<div class=\"w-e-menue-mantle\" style=\"z-index:" + menuZindexValue + "\"></div>");
21531 editor.$toolbarElem.append($menuDom);
21532 isCurtain = true;
21533 } // 销毁幕布并显示可编辑区域
21534
21535
21536 function enable() {
21537 if (!isCurtain) return;
21538 $contentDom.remove();
21539 $menuDom.remove();
21540 editor.$textElem.show();
21541 isCurtain = false;
21542 }
21543
21544 return {
21545 disable: disable,
21546 enable: enable
21547 };
21548}
21549
21550exports["default"] = disableInit;
21551
21552/***/ }),
21553/* 403 */
21554/***/ (function(module, exports, __webpack_require__) {
21555
21556var api = __webpack_require__(19);
21557 var content = __webpack_require__(404);
21558
21559 content = content.__esModule ? content.default : content;
21560
21561 if (typeof content === 'string') {
21562 content = [[module.i, content, '']];
21563 }
21564
21565var options = {};
21566
21567options.insert = "head";
21568options.singleton = false;
21569
21570var update = api(content, options);
21571
21572
21573
21574module.exports = content.locals || {};
21575
21576/***/ }),
21577/* 404 */
21578/***/ (function(module, exports, __webpack_require__) {
21579
21580// Imports
21581var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(20);
21582exports = ___CSS_LOADER_API_IMPORT___(false);
21583// Module
21584exports.push([module.i, ".w-e-content-mantle {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n}\n.w-e-content-mantle .w-e-content-preview {\n width: 100%;\n min-height: 100%;\n padding: 0 10px;\n line-height: 1.5;\n}\n.w-e-content-mantle .w-e-content-preview img {\n cursor: default;\n}\n.w-e-content-mantle .w-e-content-preview img:hover {\n box-shadow: none;\n}\n.w-e-menue-mantle {\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n}\n", ""]);
21585// Exports
21586module.exports = exports;
21587
21588
21589/***/ }),
21590/* 405 */
21591/***/ (function(module, exports, __webpack_require__) {
21592
21593"use strict";
21594
21595
21596var _interopRequireDefault = __webpack_require__(0);
21597
21598var _defineProperty = _interopRequireDefault(__webpack_require__(1));
21599
21600(0, _defineProperty["default"])(exports, "__esModule", {
21601 value: true
21602});
21603
21604/***/ })
21605/******/ ])["default"];
21606});
21607//# sourceMappingURL=wangEditor.js.map
\No newline at end of file