UNPKG

dext5editor-react

Version:

React component for DEXT5 Editor

997 lines (985 loc) 43.6 kB
/** * @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved. */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var raonwizIntegrationsCommon = require('raonwiz-integrations-common'); var PropTypes = require('prop-types'); 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 PropTypes__namespace = /*#__PURE__*/_interopNamespace(PropTypes); 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 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 }); }; raonwizIntegrationsCommon.getRaonwizComponentNamespace(defComponentType, componentUrlRef.current, onNamespaceLoaded) .then(initComponent) .catch(function (error) { if (process.env.NODE_ENV !== 'test') { 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 useEffect = React__namespace.useEffect, useRef = React__namespace.useRef, useState = React__namespace.useState; function getComponentUniqueName() { return 'dext5editor_' + Math.random() .toString(36) .replace(/[^a-z]+/g, '') .substr(0, 5); } function DEXT5Editor(_a) { var debug = _a.debug, _b = _a.id, id = _b === void 0 ? getComponentUniqueName() : _b, _c = _a.config, config = _c === void 0 ? {} : _c, componentUrl = _a.componentUrl, createMode = _a.createMode, initData = _a.initData, readOnly = _a.readOnly, handlers = __rest(_a, ["debug", "id", "config", "componentUrl", "createMode", "initData", "readOnly"]); var _d = useState(null), element = _d[0], setElement = _d[1]; var refs = useRef(handlers); var dispatchEvent = function (_a) { var type = _a.type, payload = _a.payload; var handlerName = eventNameToHandlerName(stripPrefix(type)); var handler = refs.current[handlerName]; if (handler) { return handler(payload); } }; var _e = useDEXT5Editor({ debug: debug, element: element, config: config, componentUrl: componentUrl, createMode: createMode, initContent: typeof initData === 'string' ? initData : undefined, dispatchEvent: dispatchEvent, subscribeTo: Object.keys(handlers) .filter(function (key) { return key.indexOf('on') === 0; }) .map(handlerNameToEventName) }), component = _e.component, status = _e.status; useEffect(function () { if (component && status === 'ready' && typeof readOnly === 'boolean') { var _isLoadedComponent = DEXT5.IsLoadedEditorEx(component.object.ID); if (debug) { console.log({ logType: 'RAONWIZ Log - useEffect', operation: 'useEffect', component: component, componentName: component.object.ID, readOnly: readOnly, status: status, IsLoadedComponentEx: _isLoadedComponent }); } (_isLoadedComponent) && (DEXT5.SetReadOnly(readOnly, '', component.object.ID)); } }, [component, status, readOnly]); return (React__namespace.createElement("div", { id: id !== null && id !== void 0 ? id : undefined, ref: setElement })); } var propTypes = __assign({ config: PropTypes__namespace.object, debug: PropTypes__namespace.bool, componentUrl: PropTypes__namespace.string, createMode: PropTypes__namespace.string, id: PropTypes__namespace.string, initData: PropTypes__namespace.node, readOnly: PropTypes__namespace.bool }, defaultEvents.reduce(function (acc, key) { var _a; return __assign(__assign({}, acc), (_a = {}, _a[eventNameToHandlerName(key)] = PropTypes__namespace.func, _a)); }, {})); DEXT5Editor.propTypes = propTypes; exports.ComponentEventAction = ComponentEventAction; exports.DEXT5Editor = DEXT5Editor; exports.prefixEventName = prefixEventName; exports.registerComponentEventHandler = registerComponentEventHandler; exports.stripPrefix = stripPrefix; exports.useDEXT5Editor = useDEXT5Editor;