UNPKG

@intenda/opus-ui-json-builder

Version:

Provides the `jsonBuilder` component type for use by Opus UI applications.

114 lines (108 loc) 4.29 kB
/* 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, {})] }) }); };