dext5editor-react
Version:
React component for DEXT5 Editor
997 lines (985 loc) • 43.6 kB
JavaScript
/**
* @license Copyright (c) 2003-2022, RAONWIZ DevTeam. All rights reserved.
*/
;
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;