UNPKG

3.94 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.setMode = exports.isInDoc = exports.isBeforeInputEventAvailable = exports.mergePlugins = exports.isTextareaOrInput = exports.uuid = exports.configHandlers = exports.configHandlers2 = exports.isFunction = void 0;
4var EditorPropTypes_1 = require("./components/EditorPropTypes");
5var isFunction = function (x) { return typeof x === 'function'; };
6exports.isFunction = isFunction;
7var isEventProp = function (name) { return name in EditorPropTypes_1.eventPropTypes; };
8var eventAttrToEventName = function (attrName) { return attrName.substr(2); };
9var 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 // remove event handler
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};
28exports.configHandlers2 = configHandlers2;
29var configHandlers = function (editor, prevProps, props, boundHandlers, lookup) {
30 return (0, exports.configHandlers2)(lookup, editor.on.bind(editor), editor.off.bind(editor),
31 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
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};
34exports.configHandlers = configHandlers;
35var unique = 0;
36var 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};
42exports.uuid = uuid;
43var isTextareaOrInput = function (element) {
44 return element !== null && (element.tagName.toLowerCase() === 'textarea' || element.tagName.toLowerCase() === 'input');
45};
46exports.isTextareaOrInput = isTextareaOrInput;
47var normalizePluginArray = function (plugins) {
48 if (typeof plugins === 'undefined' || plugins === '') {
49 return [];
50 }
51 return Array.isArray(plugins) ? plugins : plugins.split(' ');
52};
53// eslint-disable-next-line max-len
54var mergePlugins = function (initPlugins, inputPlugins) { return normalizePluginArray(initPlugins).concat(normalizePluginArray(inputPlugins)); };
55exports.mergePlugins = mergePlugins;
56var isBeforeInputEventAvailable = function () { return window.InputEvent && typeof InputEvent.prototype.getTargetRanges === 'function'; };
57exports.isBeforeInputEventAvailable = isBeforeInputEventAvailable;
58var isInDoc = function (elem) {
59 if (!('isConnected' in Node.prototype)) {
60 // Fallback for IE and old Edge
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};
71exports.isInDoc = isInDoc;
72var 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 { // support TinyMCE 4
78 editor.setMode(mode);
79 }
80 }
81};
82exports.setMode = setMode;