1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | Object.defineProperty(exports, "__esModule", { value: true });
|
10 | exports.setMode = exports.isInDoc = exports.isBeforeInputEventAvailable = exports.mergePlugins = exports.isTextareaOrInput = exports.uuid = exports.configHandlers = exports.configHandlers2 = exports.isFunction = void 0;
|
11 | var EditorPropTypes_1 = require("./components/EditorPropTypes");
|
12 | var isFunction = function (x) { return typeof x === 'function'; };
|
13 | exports.isFunction = isFunction;
|
14 | var isEventProp = function (name) { return name in EditorPropTypes_1.eventPropTypes; };
|
15 | var eventAttrToEventName = function (attrName) { return attrName.substr(2); };
|
16 | var configHandlers2 = function (handlerLookup, on, off, adapter, prevProps, props, boundHandlers) {
|
17 | var prevEventKeys = Object.keys(prevProps).filter(isEventProp);
|
18 | var currEventKeys = Object.keys(props).filter(isEventProp);
|
19 | var removedKeys = prevEventKeys.filter(function (key) { return props[key] === undefined; });
|
20 | var addedKeys = currEventKeys.filter(function (key) { return prevProps[key] === undefined; });
|
21 | removedKeys.forEach(function (key) {
|
22 |
|
23 | var eventName = eventAttrToEventName(key);
|
24 | var wrappedHandler = boundHandlers[eventName];
|
25 | off(eventName, wrappedHandler);
|
26 | delete boundHandlers[eventName];
|
27 | });
|
28 | addedKeys.forEach(function (key) {
|
29 | var wrappedHandler = adapter(handlerLookup, key);
|
30 | var eventName = eventAttrToEventName(key);
|
31 | boundHandlers[eventName] = wrappedHandler;
|
32 | on(eventName, wrappedHandler);
|
33 | });
|
34 | };
|
35 | exports.configHandlers2 = configHandlers2;
|
36 | var configHandlers = function (editor, prevProps, props, boundHandlers, lookup) {
|
37 | return (0, exports.configHandlers2)(lookup, editor.on.bind(editor), editor.off.bind(editor),
|
38 |
|
39 | function (handlerLookup, key) { return function (e) { var _a; return (_a = handlerLookup(key)) === null || _a === void 0 ? void 0 : _a(e, editor); }; }, prevProps, props, boundHandlers);
|
40 | };
|
41 | exports.configHandlers = configHandlers;
|
42 | var unique = 0;
|
43 | var uuid = function (prefix) {
|
44 | var time = Date.now();
|
45 | var random = Math.floor(Math.random() * 1000000000);
|
46 | unique++;
|
47 | return prefix + '_' + random + unique + String(time);
|
48 | };
|
49 | exports.uuid = uuid;
|
50 | var isTextareaOrInput = function (element) {
|
51 | return element !== null && (element.tagName.toLowerCase() === 'textarea' || element.tagName.toLowerCase() === 'input');
|
52 | };
|
53 | exports.isTextareaOrInput = isTextareaOrInput;
|
54 | var normalizePluginArray = function (plugins) {
|
55 | if (typeof plugins === 'undefined' || plugins === '') {
|
56 | return [];
|
57 | }
|
58 | return Array.isArray(plugins) ? plugins : plugins.split(' ');
|
59 | };
|
60 |
|
61 | var mergePlugins = function (initPlugins, inputPlugins) { return normalizePluginArray(initPlugins).concat(normalizePluginArray(inputPlugins)); };
|
62 | exports.mergePlugins = mergePlugins;
|
63 | var isBeforeInputEventAvailable = function () { return window.InputEvent && typeof InputEvent.prototype.getTargetRanges === 'function'; };
|
64 | exports.isBeforeInputEventAvailable = isBeforeInputEventAvailable;
|
65 | var isInDoc = function (elem) {
|
66 | if (!('isConnected' in Node.prototype)) {
|
67 |
|
68 | var current = elem;
|
69 | var parent_1 = elem.parentNode;
|
70 | while (parent_1 != null) {
|
71 | current = parent_1;
|
72 | parent_1 = current.parentNode;
|
73 | }
|
74 | return current === elem.ownerDocument;
|
75 | }
|
76 | return elem.isConnected;
|
77 | };
|
78 | exports.isInDoc = isInDoc;
|
79 | var setMode = function (editor, mode) {
|
80 | if (editor !== undefined) {
|
81 | if (editor.mode != null && typeof editor.mode === 'object' && typeof editor.mode.set === 'function') {
|
82 | editor.mode.set(mode);
|
83 | }
|
84 | else {
|
85 | editor.setMode(mode);
|
86 | }
|
87 | }
|
88 | };
|
89 | exports.setMode = setMode;
|