@intenda/opus-ui-json-builder
Version:
Provides the `jsonBuilder` component type for use by Opus UI applications.
114 lines (108 loc) • 4.29 kB
JavaScript
/* eslint-disable max-lines-per-function */
//React
import React, { useEffect } from 'react';
//System
import { createContext } from '@intenda/opus-ui';
//Events
import onLoadJson from './events/onLoadJson';
import { onOpenEditorKey, onOpenEditorValue } from './events/onOpenEditor';
import onSaveValue from './events/onSaveValue';
import onBuildRows from './events/onBuildRows';
import onMagicAdd from './events/onMagicAdd';
import onMagicAddWidget from './events/onMagicAddWidget';
import onMagicAddFlow from './events/onMagicAddFlow';
import onPropertyAdd from './events/onPropertyAdd';
import onWidgetAdd from './events/onWidgetAdd';
import onFlowAdd from './events/onFlowAdd';
import onChangeCursorRow from './events/onChangeCursorRow';
import onChangeMinimapRow from './events/onChangeMinimapRow';
import onRowDelete from './events/onRowDelete';
import onWidgetDelete from './events/onWidgetDelete';
import onWidgetDuplicate from './events/onWidgetDuplicate';
import onUndo from './events/onUndo';
import onRedo from './events/onRedo';
import onTrackHistory from './events/onTrackHistory';
import onImport from './events/onImport';
import onScriptAdd from './events/onScriptAdd';
//Components
import Minimap from './components/minimap';
import Importer from './components/importer';
import Preview from './components/preview';
import PropertyAdder from './components/propertyAdder';
import WidgetAdder from './components/widgetAdder';
import FlowAdder from './components/flowAdder';
import ScriptAdder from './components/scriptAdder';
//Styles
import './styles.css';
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
const JsonBuilderContext = createContext('iconContext');
//Components
const Inner = /*#__PURE__*/React.memo(_ref => {
let {
props
} = _ref;
const {
ChildWgt,
state: {
mdaRows
}
} = props;
if (!mdaRows) return null;
return /*#__PURE__*/_jsx(ChildWgt, {
mda: mdaRows
});
}, (_ref2, _ref3) => {
let {
props: propsA
} = _ref2;
let {
props: propsB
} = _ref3;
return JSON.stringify(propsA.state.mdaRows) === JSON.stringify(propsB.state.mdaRows);
});
export const JsonBuilder = props => {
var _state$jsonFlatList;
const {
id,
style,
classNames,
getHandler,
attributes,
state
} = props;
useEffect(getHandler(onLoadJson), [state.json]);
useEffect(getHandler(onTrackHistory), [state.json]);
const delta = (_state$jsonFlatList = state.jsonFlatList) === null || _state$jsonFlatList === void 0 ? void 0 : _state$jsonFlatList.map(n => n.text).join('');
useEffect(getHandler(onBuildRows), [delta]);
useEffect(getHandler(onChangeCursorRow), [state.tChangeCursorRow]);
useEffect(getHandler(onChangeMinimapRow), [state.tChangeMinimapRow]);
useEffect(getHandler(onOpenEditorKey), [state.tOpenEditorKey]);
useEffect(getHandler(onOpenEditorValue), [state.tOpenEditorValue]);
useEffect(getHandler(onSaveValue), [state.tSaveValue]);
useEffect(getHandler(onMagicAdd), [state.tMagicAdd]);
useEffect(getHandler(onPropertyAdd), [state.tPropertyAdd]);
useEffect(getHandler(onMagicAddWidget), [state.tMagicAddWidget]);
useEffect(getHandler(onWidgetAdd), [state.tWidgetAdd]);
useEffect(getHandler(onMagicAddFlow), [state.tMagicAddFlow]);
useEffect(getHandler(onFlowAdd), [state.tFlowAdd]);
useEffect(getHandler(onScriptAdd), [state.tScriptAdd]);
useEffect(getHandler(onWidgetDelete), [state.tWidgetDelete]);
useEffect(getHandler(onRowDelete), [state.tRowDelete]);
useEffect(getHandler(onWidgetDuplicate), [state.tWidgetDuplicate]);
useEffect(getHandler(onUndo), [state.tUndo]);
useEffect(getHandler(onRedo), [state.tRedo]);
useEffect(getHandler(onImport), [state.tImport]);
return /*#__PURE__*/_jsx(JsonBuilderContext.Provider, {
value: props,
children: /*#__PURE__*/_jsxs("div", {
id: id,
className: classNames,
style: style,
...attributes,
children: [/*#__PURE__*/_jsx(Inner, {
props: props
}), /*#__PURE__*/_jsx(Minimap, {}), /*#__PURE__*/_jsx(Importer, {}), /*#__PURE__*/_jsx(Preview, {}), /*#__PURE__*/_jsx(PropertyAdder, {}), /*#__PURE__*/_jsx(WidgetAdder, {}), /*#__PURE__*/_jsx(FlowAdder, {}), /*#__PURE__*/_jsx(ScriptAdder, {})]
})
});
};