UNPKG

4.13 kBJavaScriptView Raw
1"use strict";
2/**
3 * Copyright (c) 2017-present, Ephox, Inc.
4 *
5 * This source code is licensed under the Apache 2 license found in the
6 * LICENSE file in the root directory of this source tree.
7 *
8 */
9Object.defineProperty(exports, "__esModule", { value: true });
10exports.setMode = exports.isInDoc = exports.isBeforeInputEventAvailable = exports.mergePlugins = exports.isTextareaOrInput = exports.uuid = exports.configHandlers = exports.configHandlers2 = exports.isFunction = void 0;
11var EditorPropTypes_1 = require("./components/EditorPropTypes");
12var isFunction = function (x) { return typeof x === 'function'; };
13exports.isFunction = isFunction;
14var isEventProp = function (name) { return name in EditorPropTypes_1.eventPropTypes; };
15var eventAttrToEventName = function (attrName) { return attrName.substr(2); };
16var 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 // remove event handler
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};
35exports.configHandlers2 = configHandlers2;
36var configHandlers = function (editor, prevProps, props, boundHandlers, lookup) {
37 return (0, exports.configHandlers2)(lookup, editor.on.bind(editor), editor.off.bind(editor),
38 // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
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};
41exports.configHandlers = configHandlers;
42var unique = 0;
43var 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};
49exports.uuid = uuid;
50var isTextareaOrInput = function (element) {
51 return element !== null && (element.tagName.toLowerCase() === 'textarea' || element.tagName.toLowerCase() === 'input');
52};
53exports.isTextareaOrInput = isTextareaOrInput;
54var normalizePluginArray = function (plugins) {
55 if (typeof plugins === 'undefined' || plugins === '') {
56 return [];
57 }
58 return Array.isArray(plugins) ? plugins : plugins.split(' ');
59};
60// eslint-disable-next-line max-len
61var mergePlugins = function (initPlugins, inputPlugins) { return normalizePluginArray(initPlugins).concat(normalizePluginArray(inputPlugins)); };
62exports.mergePlugins = mergePlugins;
63var isBeforeInputEventAvailable = function () { return window.InputEvent && typeof InputEvent.prototype.getTargetRanges === 'function'; };
64exports.isBeforeInputEventAvailable = isBeforeInputEventAvailable;
65var isInDoc = function (elem) {
66 if (!('isConnected' in Node.prototype)) {
67 // Fallback for IE and old Edge
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};
78exports.isInDoc = isInDoc;
79var 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 { // support TinyMCE 4
85 editor.setMode(mode);
86 }
87 }
88};
89exports.setMode = setMode;