UNPKG

dext5editor-react

Version:

React component for DEXT5 Editor

1,078 lines (1,065 loc) 85.9 kB
/** * @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved. */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) : typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.DEXT5EditorReact = {}, global.React)); })(this, (function (exports, React) { 'use strict'; function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/_interopNamespace(React); var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; var events = [ 'loaded', 'creationComplete', 'destroy' ]; var namespaceEvents = ['beforeLoad', 'namespaceLoaded']; var defaultEvents = __spreadArray(__spreadArray([], events, true), namespaceEvents, true); var EVENT_PREFIX = '__RDE__'; function prefixEventName(evtName) { return "".concat(EVENT_PREFIX).concat(evtName); } function stripPrefix(prefixedEventName) { return prefixedEventName.substr(EVENT_PREFIX.length); } function eventNameToHandlerName(evtName) { var cap = evtName.substr(0, 1).toUpperCase() + evtName.substr(1); return "on".concat(cap); } function handlerNameToEventName(handlerName) { return handlerName.substr(2, 1).toLowerCase() + handlerName.substr(3); } var ComponentEventAction = __spreadArray(__spreadArray([], events, true), namespaceEvents, true).reduce(function (acc, evtName) { var _a; return __assign(__assign({}, acc), (_a = {}, _a[evtName] = prefixEventName(evtName), _a)); }, {}); function uniqueName() { return Math.random() .toString(36) .replace(/[^a-z]+/g, '') .substr(0, 5); } function registerComponentEventHandler(_a) { var debug = _a.debug, component = _a.component, evtName = _a.evtName, handler = _a.handler; var handlerId = debug && uniqueName(); var _handler = handler; if (debug) { _handler = function (args) { console.log({ logType: "RAONWIZ Log - invoke", operation: 'invoke', component: component, componentName: component.object.ID, evtName: evtName, handlerId: handlerId, eventInfo: args.eventInfo }); return handler(args); }; } if (debug) { console.log({ logType: "RAONWIZ Log - register", operation: 'register', component: component, componentName: component.object.ID, evtName: evtName, handlerId: handlerId }); } DEXT5._ExternalAttachEvents(component.object, evtName, _handler); return function () { if (debug) { console.log({ logType: "RAONWIZ Log - unregister", operation: 'unregister', component: component, componentName: component.object.ID, evtName: evtName, handlerId: handlerId }); } }; } var index_cjs = {}; Object.defineProperty(index_cjs, '__esModule', { value: true }); function loadScript (src, opts, cb) { const head = document.head || document.getElementsByTagName('head')[0]; const script = document.createElement('script'); if (typeof opts === 'function') { cb = opts; opts = {}; } opts = opts || {}; cb = cb || function () {}; script.type = opts.type || 'text/javascript'; script.charset = opts.charset || 'utf8'; script.async = 'async' in opts ? !!opts.async : true; script.src = src; if (opts.attrs) { setAttributes(script, opts.attrs); } if (opts.text) { script.text = String(opts.text); } const onend = 'onload' in script ? stdOnEnd : ieOnEnd; onend(script, cb); if (!script.onload) { stdOnEnd(script, cb); } head.appendChild(script); } function setAttributes(script, attrs) { for (const attr in attrs) { script.setAttribute(attr, attrs[attr]); } } function stdOnEnd(script, cb) { script.onload = function () { this.onerror = this.onload = null; cb(null, script); }; script.onerror = function () { this.onerror = this.onload = null; cb(new Error('Failed to load ' + this.src), script); }; } function ieOnEnd(script, cb) { script.onreadystatechange = function () { if (this.readyState != 'complete' && this.readyState != 'loaded') { return; } this.onreadystatechange = null; cb(null, script); }; } function getRaonwizComponentNamespace(componentType, componentUrl, onNamespaceLoaded) { let promise; if (typeof componentType !== 'string' || componentType.length < 1) { return Promise.reject(new TypeError('Component TYPE must be a non-empty string.')); } if (componentType in window) { let _componentObj = null; switch (componentType) { case "RAONKUPLOAD": _componentObj = RAONKUPLOAD; break; case "RAONKEDITOR": _componentObj = RAONKEDITOR; break; case "DEXT5UPLOAD": _componentObj = DEXT5UPLOAD; break; case "DEXT5": _componentObj = DEXT5; } return Promise.resolve(_componentObj); } if (typeof componentUrl !== 'string' || componentUrl.length < 1) { return Promise.reject(new TypeError('Component URL must be a non-empty string.')); } if (!promise) { promise = getRaonwizComponentNamespace.scriptLoader(componentType, componentUrl).then(res => { if (onNamespaceLoaded) { onNamespaceLoaded(res); } return res; }); } return promise; } getRaonwizComponentNamespace.scriptLoader = (componentType, componentUrl) => new Promise((scriptResolve, scriptReject) => { loadScript(componentUrl, err => { let _componentObj = null; switch (componentType) { case "RAONKUPLOAD": _componentObj = window.RAONKUPLOAD; break; case "RAONKEDITOR": _componentObj = window.RAONKEDITOR; break; case "DEXT5UPLOAD": _componentObj = window.DEXT5UPLOAD; break; case "DEXT5": _componentObj = window.DEXT5; break; } if (err) { return scriptReject(err); } else if (!_componentObj) { return scriptReject(new Error('Script loaded from componentUrl doesn\'t provide Component namespace.')); } scriptResolve(_componentObj); }); }); function debounce(fn, delay) { let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; let cancel; return function () { clearTimeout(cancel); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } cancel = setTimeout(fn.bind(context, ...args), delay); }; } index_cjs.debounce = debounce; var getRaonwizComponentNamespace_1 = index_cjs.getRaonwizComponentNamespace = getRaonwizComponentNamespace; var useEffect$1 = React__namespace.useEffect, useReducer = React__namespace.useReducer, useRef$1 = React__namespace.useRef; var defComponentType = 'DEXT5'; var defComponentUrl = '/dext5editor/js/dext5editor.js'; var defConfig = {}; function useDEXT5Editor(_a) { var debug = _a.debug, element = _a.element, config = _a.config, componentUrl = _a.componentUrl, createMode = _a.createMode, initContent = _a.initContent, dispatchEvent = _a.dispatchEvent, _b = _a.subscribeTo, subscribeTo = _b === void 0 ? defaultEvents : _b; var componentUrlRef = useRef$1(componentUrl || defComponentUrl); var createModeRef = useRef$1(createMode); var subscribeToRef = useRef$1(subscribeTo !== null && subscribeTo !== void 0 ? subscribeTo : defaultEvents); var debugRef = useRef$1(debug); var dispatchEventRef = useRef$1(dispatchEvent); var configRef = useRef$1(config || defConfig); var initContentRef = useRef$1(initContent); var _c = useReducer(reducer, { component: undefined, hookStatus: 'init' }), _d = _c[0], component = _d.component, hookStatus = _d.hookStatus, dispatch = _c[1]; useEffect$1(function () { if (element && !component) { dispatch({ type: 'loading' }); var onNamespaceLoaded = function (namespace) { var _a; if (subscribeToRef.current.indexOf('namespaceLoaded') !== -1) { (_a = dispatchEventRef.current) === null || _a === void 0 ? void 0 : _a.call(dispatchEventRef, { type: ComponentEventAction.namespaceLoaded, payload: namespace }); } }; var initComponent = function (namespace) { var _a; if (subscribeToRef.current.indexOf('beforeLoad') !== -1) { (_a = dispatchEventRef.current) === null || _a === void 0 ? void 0 : _a.call(dispatchEventRef, { type: ComponentEventAction.beforeLoad, payload: namespace }); } if (typeof namespace['_ExternalMakeComponent'] === 'undefined') { _ExternalMakeComponent(namespace); } if (typeof namespace['_ExternalSetDestroyEvent'] === 'undefined') { _ExternalSetDestroyEvent(namespace); } if (typeof namespace['_ExternalAttachEvents'] === 'undefined') { _ExternalAttachEvents(namespace); } if (debug) { console.log({ logType: "RAONWIZ Log - initComponent", operation: 'makeComponent config', configRef: configRef.current, componentName: element.id, }); } var component = namespace['_ExternalMakeComponent'](element, configRef.current, createModeRef.current); var subscribedComponentEvents = subscribeToRef.current.filter(function (evtName) { return namespaceEvents.indexOf(evtName) === -1; }); subscribedComponentEvents.forEach(function (evtName) { registerComponentEventHandler({ debug: debugRef.current, component: component, evtName: evtName, handler: function (payload) { var _a; return (_a = dispatchEventRef.current) === null || _a === void 0 ? void 0 : _a.call(dispatchEventRef, { type: "".concat(EVENT_PREFIX).concat(evtName), payload: payload }); } }); }); registerComponentEventHandler({ debug: debugRef.current, component: component, evtName: 'loaded', handler: function () { dispatch({ type: 'loaded' }); } }); registerComponentEventHandler({ debug: debugRef.current, component: component, evtName: 'creationComplete', handler: function (_a) { dispatch({ type: 'ready' }); if (initContentRef.current) { DEXT5.SetHtmlContentsEw(initContentRef.current, component.object.ID); } } }); registerComponentEventHandler({ debug: debugRef.current, component: component, evtName: 'destroy', handler: function () { dispatch({ type: 'destroyed' }); } }); dispatch({ type: 'unloaded', payload: component }); }; getRaonwizComponentNamespace_1(defComponentType, componentUrlRef.current, onNamespaceLoaded) .then(initComponent) .catch(function (error) { { console.error(error); } dispatch({ type: 'error' }); }); } return function () { if (component && component.object && component.object.ID && document.getElementById(component.object.ID) === null && DEXT5) { if (DEXT5._ExternalLoadedEventMap.has(component.object.ID)) { DEXT5._ExternalLoadedEventMap.delete(component.object.ID); } if (DEXT5._ExternalCreationCompleteEventMap.has(component.object.ID)) { DEXT5._ExternalCreationCompleteEventMap.delete(component.object.ID); } if (DEXT5._ExternalDestroyEventMap.has(component.object.ID)) { DEXT5._ExternalDestroyEventMap.delete(component.object.ID); } DEXT5.Destroy(component.object.ID); } }; }, [component, element]); return { component: component, status: component === null || component === void 0 ? void 0 : component.status, error: hookStatus === 'error', loading: hookStatus === 'loading' }; } function reducer(state, action) { switch (action.type) { case 'init': return __assign(__assign({}, state), { hookStatus: 'init' }); case 'loading': return __assign(__assign({}, state), { hookStatus: 'loading' }); case 'unloaded': return { component: action.payload, hookStatus: 'unloaded' }; case 'loaded': return __assign(__assign({}, state), { hookStatus: 'loaded' }); case 'ready': return __assign(__assign({}, state), { hookStatus: 'ready' }); case 'destroyed': return { component: undefined, hookStatus: 'destroyed' }; case 'error': return { component: undefined, hookStatus: 'error' }; default: return state; } } function _ExternalMakeComponent(namespace) { namespace['_ExternalMakeComponent'] = function (element, options, createMode) { if (typeof DEXT5._ExternalCreationCompleteEventMap === 'undefined') { DEXT5._ExternalLoadedEventMap = new Map(); DEXT5._ExternalCreationCompleteEventMap = new Map(); DEXT5._ExternalDestroyEventMap = new Map(); } DEXT5._ExternalLoadedEventMap.set(element.id, []); DEXT5._ExternalCreationCompleteEventMap.set(element.id, []); DEXT5._ExternalDestroyEventMap.set(element.id, []); namespace._ExternalDestroy = true; var _compConfig = { EditorHolder: element.id, Id: element.id }; _compConfig = namespace.util.objectExtend(true, options, _compConfig); if (createMode && createMode.toLowerCase() == "object") { var _componentObject = new Dext5editor(_compConfig); return { object: _componentObject, status: 'ready' }; } else { for (var _i = 0, _a = Object.entries(_compConfig); _i < _a.length; _i++) { var _b = _a[_i], key = _b[0], value = _b[1]; DEXT5.config[key] = value; } var _componentObject = new Dext5editor(element.id); return { object: _componentObject, status: 'ready' }; } }; } function _ExternalAttachEvents(namespace) { namespace['_ExternalAttachEvents'] = function (componentObj, eventName, callbackFn) { var _componentConfig = componentObj._config; var _callbackFn = callbackFn; switch (eventName) { case "loaded": var _tempExternalLoadedEventListHT = DEXT5._ExternalLoadedEventMap.get(componentObj.ID); _tempExternalLoadedEventListHT.push(_callbackFn); DEXT5._ExternalLoadedEventMap.set(componentObj.ID, _tempExternalLoadedEventListHT); break; case "creationComplete": if (typeof (_componentConfig.event['loadedEvent']) == 'function') { break; } var _tempExternalCreationCompleteEventListHT = DEXT5._ExternalCreationCompleteEventMap.get(componentObj.ID); _tempExternalCreationCompleteEventListHT.push(_callbackFn); DEXT5._ExternalCreationCompleteEventMap.set(componentObj.ID, _tempExternalCreationCompleteEventListHT); var _dummyFn1 = function (paramObj) { var _tempLoaded = DEXT5._ExternalLoadedEventMap.get(componentObj.ID); for (var _idx = 0, _len = _tempLoaded.length; _idx < _len; _idx++) { try { _tempLoaded[_idx]({ eventInfo: { componentName: paramObj.ID, paramObj: paramObj } }); } catch (e) { } } var _tempCreationComplete = DEXT5._ExternalCreationCompleteEventMap.get(componentObj.ID); for (var _idx = 0, _len = _tempCreationComplete.length; _idx < _len; _idx++) { try { _tempCreationComplete[_idx]({ eventInfo: { componentName: paramObj.ID, paramObj: paramObj } }); } catch (e) { } } namespace._ExternalSetDestroyEvent(componentObj.ID); }; _componentConfig.event['loadedEvent'] = _dummyFn1; break; case "destroy": var _tempExternalDestroyEventListHT = DEXT5._ExternalDestroyEventMap.get(componentObj.ID); _tempExternalDestroyEventListHT.push(_callbackFn); DEXT5._ExternalDestroyEventMap.set(componentObj.ID, _tempExternalDestroyEventListHT); break; case "afterChangeMode": _componentConfig.event[eventName] = function (newMode, currentMode, componentName) { if (_callbackFn) { var paramObj = { newMode: newMode, currentMode: currentMode, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "afterPopupShow": _componentConfig.event[eventName] = function (componentName, targetObj, popupType) { if (_callbackFn) { var paramObj = { editorId: componentName, targetObj: targetObj, popupType: popupType }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "applyFontStyle": _componentConfig.event[eventName] = function (componentName, fontStyleObject) { if (_callbackFn) { var paramObj = { editorId: componentName, fontStyleObject: fontStyleObject }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "beforeFullScreen": _componentConfig.event[eventName] = function (componentName, editorFrameStatus) { if (_callbackFn) { var paramObj = { editorId: componentName, editorFrameStatus: editorFrameStatus }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "beforeInsertHyperlink": _componentConfig.event[eventName] = function (componentName, url) { if (_callbackFn) { var paramObj = { editorId: componentName, url: url }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "beforeInsertUrl": _componentConfig.event[eventName] = function (componentName, url) { if (_callbackFn) { var paramObj = { editorId: componentName, url: url }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "beforePaste": _componentConfig.event[eventName] = function (pasteSource) { if (_callbackFn) { var paramObj = { pasteSource: pasteSource }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "command": _componentConfig.event[eventName] = function (componentName, paramObject) { if (_callbackFn) { var paramObj = { editorId: componentName, paramObject: paramObject }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "contentSizeChange": _componentConfig.event[eventName] = function (componentName, sumOfSize) { if (_callbackFn) { var paramObj = { editorId: componentName, sumOfSize: sumOfSize }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "customAction": _componentConfig.event[eventName] = function (command, componentName) { if (_callbackFn) { var paramObj = { editorId: componentName, command: command }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "dialogLoaded": _componentConfig.event[eventName] = function (currentPageName, dialogDocument) { if (_callbackFn) { var paramObj = { currentPageName: currentPageName, dialogDocument: dialogDocument }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "drag": _componentConfig.event[eventName] = function (DragEvent, eventObject) { if (_callbackFn) { var paramObj = { DragEvent: DragEvent, eventObject: eventObject }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "editorLoaded": _componentConfig.event[eventName] = function (editor) { if (_callbackFn) { var paramObj = { editor: editor }; try { return _callbackFn({ eventInfo: { componentName: editor.ID, paramObj: paramObj } }); } catch (e) { } } }; break; case "focus": _componentConfig.event[eventName] = function (blur, eventObject) { if (_callbackFn) { var paramObj = { blur: blur, eventObject: eventObject }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "focusInEditorWhole": _componentConfig.event[eventName] = function (eventType, componentName) { if (_callbackFn) { var paramObj = { eventType: eventType, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "frameLoaded": _componentConfig.event[eventName] = function (componentName, config, frame) { if (_callbackFn) { var paramObj = { editorId: componentName, config: config, frame: frame }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "fullScreen": _componentConfig.event[eventName] = function (componentName, editorFrameStatus) { if (_callbackFn) { var paramObj = { editorId: componentName, editorFrameStatus: editorFrameStatus }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "input": _componentConfig.event[eventName] = function (inputStr, eventObject, currElem, componentName) { if (_callbackFn) { var paramObj = { inputStr: inputStr, eventObject: eventObject, currElem: currElem, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "insertEmoticon": _componentConfig.event[eventName] = function (componentName, eventObject) { if (_callbackFn) { var paramObj = { editorId: componentName, eventObject: eventObject }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "key": _componentConfig.event[eventName] = function (keyEvent, eventObject, currElem, componentName) { if (_callbackFn) { var paramObj = { keyEvent: keyEvent, eventObject: eventObject, currElem: currElem, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "languageDefinition": _componentConfig.event[eventName] = function (editorLang, componentName) { if (_callbackFn) { var paramObj = { editorLang: editorLang, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "loadedEvent": _componentConfig.event[eventName] = function (editor) { if (_callbackFn) { var paramObj = { editor: editor }; try { return _callbackFn({ eventInfo: { componentName: editor.ID, paramObj: paramObj } }); } catch (e) { } } }; break; case "managerImg": _componentConfig.event[eventName] = function (element, componentName) { if (_callbackFn) { var paramObj = { element: element, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "managerInput": _componentConfig.event[eventName] = function (element, componentName) { if (_callbackFn) { var paramObj = { element: element, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "managerSelect": _componentConfig.event[eventName] = function (element, componentName) { if (_callbackFn) { var paramObj = { element: element, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "managerTextArea": _componentConfig.event[eventName] = function (element, componentName) { if (_callbackFn) { var paramObj = { element: element, editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "mouse": _componentConfig.event[eventName] = function (mouseEvent, eventObject, currElem) { if (_callbackFn) { var paramObj = { mouseEvent: mouseEvent, eventObject: eventObject, currElem: currElem }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "onError": _componentConfig.event[eventName] = function (componentName, codemessage, response) { if (_callbackFn) { var paramObj = { editorId: componentName, codemessage: codemessage, response: response }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "pasteImage": _componentConfig.event[eventName] = function (HTMLCollection) { if (_callbackFn) { var paramObj = { HTMLCollection: HTMLCollection }; try { return _callbackFn({ eventInfo: { paramObj: paramObj } }); } catch (e) { } } }; break; case "resized": _componentConfig.event[eventName] = function (editor) { if (_callbackFn) { var paramObj = { editor: editor }; try { return _callbackFn({ eventInfo: { componentName: editor.ID, paramObj: paramObj } }); } catch (e) { } } }; break; case "setComplete": _componentConfig.event[eventName] = function (componentName) { if (_callbackFn) { var paramObj = { editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "setForbiddenWordComplete": _componentConfig.event[eventName] = function (componentName, paramObject) { if (_callbackFn) { var paramObj = { editorId: componentName, paramObject: paramObject }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; case "setInsertComplete": _componentConfig.event[eventName] = function (componentName) { if (_callbackFn) { var paramObj = { editorId: componentName }; try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; break; default: var _dummyFn2 = function (componentName, paramObj) { if (_callbackFn) { try { return _callbackFn({ eventInfo: { componentName: componentName, paramObj: paramObj } }); } catch (e) { } } }; _componentConfig.event[eventName] = _dummyFn2; } }; } function _ExternalSetDestroyEvent(namespace) { namespace['_ExternalSetDestroyEvent'] = function (componentName) { var _domNodeRemovedTargetNode; var _targetElem; if (typeof MutationObserver === 'function') { _targetElem = document.getElementById("dext_frame_holder" + componentName); if (_targetElem) { _domNodeRemovedTargetNode = _targetElem; } else { _domNodeRemovedTargetNode = document.getElementById("dext_frame_" + componentName); } if (_domNodeRemovedTargetNode) { new MutationObserver(function () { var _tempDestroy = DEXT5._ExternalDestroyEventMap.get(componentName); var editor = DEXT5.getEditorByName(componentName); if (typeof _tempDestroy !== 'undefined' && _tempDestroy.length > 0) { for (var _idx = 0, _len = _tempDestroy.length; _idx < _len; _idx++) { try { _tempDestroy[_idx]({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } } else if (!!editor && typeof editor._config !== 'undefined' && typeof editor._config.event.destroy === 'function') { try { editor._config.event.destroy({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } else if (typeof DEXTTOP.DEXTWIN.DEXT5_Destroy === 'function') { try { DEXTTOP.DEXTWIN.DEXT5_Destroy({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } }).observe(_domNodeRemovedTargetNode, { childList: true }); } } else { _targetElem = document.getElementById("dext_frame_" + componentName); if (_targetElem) { _domNodeRemovedTargetNode = _targetElem; } if (_domNodeRemovedTargetNode) { _domNodeRemovedTargetNode.addEventListener('DOMNodeRemoved', function (e) { var _tempDestroy = DEXT5._ExternalDestroyEventMap.get(componentName); if (typeof _tempDestroy !== 'undefined' && _tempDestroy.length > 0) { for (var _idx = 0, _len = _tempDestroy.length; _idx < _len; _idx++) { try { _tempDestroy[_idx]({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } } else if (!!DEXTTOP.G_CURREDITOR && typeof DEXTTOP.G_CURREDITOR._config !== 'undefined' && typeof DEXTTOP.G_CURREDITOR._config.event.destroy === 'function') { try { DEXTTOP.G_CURREDITOR._config.event.destroy({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } else if (typeof DEXTTOP.DEXTWIN.DEXT5_Destroy === 'function') { try { DEXTTOP.DEXTWIN.DEXT5_Destroy({ eventInfo: { componentName: componentName, paramObj: undefined } }); } catch (e) { } } }, false); } } }; } var propTypes$1 = {exports: {}}; var reactIs = {exports: {}}; var reactIs_development = {}; var hasRequiredReactIs_development; function requireReactIs_development () { if (hasRequiredReactIs_development) return reactIs_development; hasRequiredReactIs_development = 1; { (function() { var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') :