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