@mieweb/forms-editor 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/jsx-runtime.js","../src/components/Header.jsx","../src/components/desktopLayout/toolPanel/ToolPanel.jsx","../src/components/desktopLayout/editPanel/types/DraftIdEditor.jsx","../src/components/desktopLayout/editPanel/types/InputTypeEditor.jsx","../src/components/desktopLayout/editPanel/types/CommonEditor.jsx","../src/components/desktopLayout/editPanel/types/OptionListEditor.jsx","../src/components/desktopLayout/editPanel/types/MatrixEditor.jsx","../src/components/desktopLayout/editPanel/types/NonSectionEditor.jsx","../src/components/desktopLayout/editPanel/types/SectionEditor.jsx","../src/components/desktopLayout/editPanel/types/LogicEditor.jsx","../src/components/desktopLayout/editPanel/EditPanel.jsx","../src/components/FormBuilderMain.jsx","../../../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","../../../node_modules/state-local/lib/es/state-local.js","../../../node_modules/@monaco-editor/loader/lib/es/config/index.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/curry.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","../../../node_modules/@monaco-editor/loader/lib/es/validators/index.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/compose.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","../../../node_modules/@monaco-editor/loader/lib/es/loader/index.js","../../../node_modules/@monaco-editor/react/dist/index.mjs","../src/components/CodeEditor.jsx","../src/components/desktopLayout/Layout.jsx","../src/QuestionnaireEditor.jsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from \"react\";\r\nimport { useFormStore, useFormData, useUIApi, adaptSchema, parseAndDetect, useAlert, CODE_ICON, VEDITOR_ICON, PICTURE_ICON, UPLOAD_ICON, DOWNLOAD_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function Header() {\r\n const [showSchemaConfirm, setShowSchemaConfirm] = React.useState(false);\r\n const [pendingImport, setPendingImport] = React.useState(null);\r\n const replaceAll = useFormStore((s) => s.replaceAll);\r\n const formData = useFormData(); // Get complete form data with metadata\r\n const { showAlert } = useAlert();\r\n\r\n const ui = useUIApi();\r\n const isPreview = ui.state.isPreview;\r\n const isCodeEditor = ui.state.isCodeEditor ?? false;\r\n const codeEditorHasError = ui.state.codeEditorHasError ?? false;\r\n\r\n // ────────── Import handler with auto-detection ──────────\r\n const handleFileSelect = (fileContent) => {\r\n try {\r\n const text = String(fileContent).replace(/^\\uFEFF/, \"\").trim();\r\n const { data, schemaType } = parseAndDetect(text);\r\n\r\n if (schemaType !== 'mieforms' && schemaType !== 'surveyjs') {\r\n showAlert(\r\n `Expected: MIE Forms or SurveyJS\\nDetected: ${schemaType}`,\r\n { title: 'Unsupported Schema Format' }\r\n );\r\n return;\r\n }\r\n\r\n setPendingImport({ data, detectedSchemaType: schemaType });\r\n setShowSchemaConfirm(true);\r\n } catch (err) {\r\n showAlert(\r\n err?.message || \"Invalid file format\",\r\n { title: 'Failed to Parse File' }\r\n );\r\n }\r\n };\r\n\r\n const confirmImport = (confirmedSchemaType) => {\r\n if (!pendingImport) return;\r\n\r\n try {\r\n const { data } = pendingImport;\r\n const result = adaptSchema(data, confirmedSchemaType);\r\n const fields = result.fields || [];\r\n\r\n if (!Array.isArray(fields)) {\r\n throw new Error(\"Expected array of fields\");\r\n }\r\n\r\n if (result.conversionReport) {\r\n ui.setConversionReport(result.conversionReport);\r\n }\r\n\r\n const schemaObject = {\r\n schemaType: confirmedSchemaType === 'surveyjs' ? 'mieforms-v1.0' : (data.schemaType || 'mieforms-v1.0'),\r\n ...(result.conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n\r\n // For MIE Forms schemas, preserve any extra metadata that's not in surveyMetadata\r\n if (confirmedSchemaType === 'mieforms') {\r\n // For MIE Forms, preserve any metadata that's not fields or schemaType\r\n const { fields: _f, schemaType: _st, ...metadata } = data;\r\n if (Object.keys(metadata).length > 0) {\r\n Object.assign(schemaObject, metadata);\r\n }\r\n }\r\n\r\n replaceAll(schemaObject);\r\n ui.selectedFieldId.clear();\r\n ui.preview.set(false);\r\n\r\n // Show conversion details for SurveyJS imports\r\n if (confirmedSchemaType === 'surveyjs' && result.conversionReport) {\r\n const report = result.conversionReport;\r\n const unsupportedCount = report.unsupportedFields?.length || 0;\r\n showAlert(\r\n `Format: SurveyJS → MIE Forms\\n\\n` +\r\n `Converted: ${report.convertedFields || 0} field(s)\\n` +\r\n `Unsupported: ${unsupportedCount} field(s)${unsupportedCount > 0 ? ' ⚠️' : ''}`,\r\n { title: '✅ Import Successful' }\r\n );\r\n } else {\r\n showAlert(\r\n `Format: ${confirmedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}\\nLoaded ${fields.length} field(s)`,\r\n { title: '✅ Import Successful' }\r\n );\r\n }\r\n\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n } catch (err) {\r\n showAlert(\r\n err?.message || \"Invalid format\",\r\n { title: 'Import Failed' }\r\n );\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n }\r\n };\r\n\r\n const cancelImport = () => {\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n };\r\n\r\n // ────────── Preview/Edit toggles ──────────\r\n const onEdit = () => {\r\n ui.preview.set(false);\r\n ui.codeEditor.set(false);\r\n };\r\n\r\n const onCodeEditor = () => {\r\n ui.preview.set(false);\r\n ui.codeEditor.set(true);\r\n };\r\n\r\n const onPreview = () => {\r\n ui.preview.set(true);\r\n ui.codeEditor.set(false);\r\n ui.selectedFieldId.clear();\r\n };\r\n\r\n const onExport = () => {\r\n const json = JSON.stringify(formData, null, 2);\r\n const blob = new Blob([json], { type: \"application/json\" });\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = \"questionnaire.json\";\r\n a.click();\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n return (\r\n <header className=\"editor-header mie:w-full mie:bg-white mie:border mie:border-gray-200 mie:rounded-lg mie:shadow-sm\">\r\n <div className=\"mie:px-4 mie:py-4\">\r\n {/* Top row: Logo/Title */}\r\n <div className=\"mie:mb-4\">\r\n <h1 className=\"mie:text-lg mie:lg:text-2xl mie:font-bold mie:text-slate-900\">Editor</h1>\r\n </div>\r\n\r\n {/* Bottom row: View Mode Tabs + Import/Export */}\r\n <div className=\"mie:flex mie:flex-wrap mie:items-center mie:justify-between mie:gap-3\">\r\n <div className=\"header-mode-toggle mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-black/10 mie:bg-black/5 mie:p-1 mie:w-fit\">\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors ${\r\n !isPreview && !isCodeEditor\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : codeEditorHasError\r\n ? \"mie:text-slate-400 mie:cursor-not-allowed\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n onClick={onEdit}\r\n disabled={codeEditorHasError}\r\n title={codeEditorHasError ? \"Fix code errors before switching\" : \"Visual Editor\"}\r\n >\r\n <VEDITOR_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Build</span>\r\n </button>\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors ${isCodeEditor\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n onClick={onCodeEditor}\r\n title=\"Code Editor\"\r\n >\r\n <CODE_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Code</span>\r\n </button>\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors ${\r\n isPreview\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : codeEditorHasError\r\n ? \"mie:text-slate-400 mie:cursor-not-allowed\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n onClick={onPreview}\r\n disabled={codeEditorHasError}\r\n title={codeEditorHasError ? \"Fix code errors before switching\" : \"Preview Form\"}\r\n >\r\n <PICTURE_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Preview</span>\r\n </button>\r\n </div>\r\n\r\n <div className=\"header-actions mie:flex mie:gap-1 mie:items-center\">\r\n <label className=\"header-import-label mie:px-2 mie:py-2 mie:lg:px-3 mie:lg:py-2 mie:rounded-lg mie:border mie:border-black/15 mie:bg-white mie:hover:bg-black/5 mie:cursor-pointer mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:flex mie:items-center mie:lg:gap-2 mie:gap-0\">\r\n <UPLOAD_ICON className=\"mie:w-4 mie:h-4 mie:lg:w-4 mie:lg:h-4\" />\r\n <span className=\"mie:hidden min-[445px]:inline\">Import</span>\r\n <input\r\n className=\"mie:hidden\"\r\n type=\"file\"\r\n accept=\".json,.yaml,.yml,application/json,text/yaml\"\r\n onChange={(e) => {\r\n const file = e.target.files?.[0];\r\n if (!file) return;\r\n const reader = new FileReader();\r\n reader.onload = (ev) => handleFileSelect(ev.target?.result ?? \"\");\r\n reader.readAsText(file);\r\n e.target.value = \"\";\r\n }}\r\n />\r\n </label>\r\n\r\n <button\r\n className=\"mie:px-2 mie:py-2 mie:lg:px-3 mie:lg:py-2 mie:rounded-lg mie:border mie:border-black/15 mie:bg-white mie:hover:bg-black/5 mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:flex mie:items-center mie:lg:gap-2 mie:gap-0\"\r\n onClick={onExport}\r\n title=\"Export\"\r\n >\r\n <DOWNLOAD_ICON className=\"mie:w-4 mie:h-4 mie:lg:w-4 mie:lg:h-4\" />\r\n <span className=\"mie:hidden min-[445px]:inline\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Schema Type Confirmation Modal */}\r\n {showSchemaConfirm && pendingImport && (\r\n <div className=\"import-modal-overlay mie:fixed mie:inset-0 mie:z-50 mie:flex mie:items-center mie:justify-center mie:bg-black/50 mie:p-4\">\r\n <div className=\"import-modal-content mie:bg-white mie:rounded-2xl mie:shadow-2xl mie:max-w-md mie:w-full mie:p-6\">\r\n <div className=\"import-modal-header mie:mb-6\">\r\n <h3 className=\"mie:text-xl mie:font-semibold mie:text-slate-900 mie:mb-2\">\r\n Confirm Schema Type\r\n </h3>\r\n <p className=\"mie:text-sm mie:text-slate-600\">\r\n Is this a <strong className=\"mie:text-slate-900\">{pendingImport.detectedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}</strong> schema?\r\n </p>\r\n {pendingImport.detectedSchemaType === 'surveyjs' && (\r\n <p className=\"mie:text-xs mie:text-slate-500 mie:mt-2\">\r\n SurveyJS schemas will be converted to MIE Forms format.\r\n </p>\r\n )}\r\n </div>\r\n\r\n <div className=\"import-modal-actions mie:flex mie:gap-3\">\r\n <button\r\n onClick={() => confirmImport(pendingImport.detectedSchemaType)}\r\n className=\"mie:flex-1 mie:px-6 mie:py-3 mie:rounded-xl mie:bg-blue-500 mie:text-white mie:font-semibold mie:hover:bg-blue-600 mie:transition-colors mie:shadow-sm mie:hover:shadow\"\r\n >\r\n Yes, Import\r\n </button>\r\n\r\n <button\r\n onClick={cancelImport}\r\n className=\"mie:flex-1 mie:px-6 mie:py-3 mie:rounded-xl mie:border-2 mie:border-slate-300 mie:bg-white mie:hover:bg-slate-50 mie:text-slate-700 mie:font-semibold mie:transition-colors\"\r\n >\r\n Abort\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </header>\r\n );\r\n}\r\n","import React, { useMemo, useCallback } from \"react\";\r\nimport { fieldTypes, useFormStore, useUIApi, TEXTINPUT_ICON, FOLDERS_ICON, SELECTINPUT_ICON, RANKING_ICON, MATRIX_ICON, PAPERCLIP_ICON, TOOLS_ICON, X_ICON } from \"@mieweb/forms-engine\";\r\n\r\nconst getCategoryIcon = (categoryName) => {\r\n switch (categoryName) {\r\n case \"Text Fields\":\r\n return TEXTINPUT_ICON;\r\n case \"Organization\":\r\n return FOLDERS_ICON;\r\n case \"Selection Fields\":\r\n return SELECTINPUT_ICON;\r\n case \"Rating & Ranking\":\r\n return RANKING_ICON;\r\n case \"Matrix Fields\":\r\n return MATRIX_ICON;\r\n case \"Rich Content\":\r\n return PAPERCLIP_ICON;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst ToolPanelImpl = ({ isPreview = false }) => {\r\n if (isPreview) return null;\r\n\r\n const addField = useFormStore((s) => s.addField);\r\n const ui = useUIApi();\r\n \r\n // Get the selected field (same as EditPanel)\r\n const selectedField = useFormStore(\r\n useCallback(\r\n (s) => (ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null),\r\n [ui.selectedFieldId.value]\r\n )\r\n );\r\n\r\n const isSectionSelected = selectedField?.fieldType === \"section\";\r\n const sectionTitle = selectedField?.title || \"Section\";\r\n \r\n const handleClearSelection = React.useCallback(() => {\r\n ui.selectedFieldId.set(null);\r\n }, [ui.selectedFieldId]);\r\n\r\n // Handle Escape key to clear any selection\r\n React.useEffect(() => {\r\n const handleKeyDown = (e) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n handleClearSelection();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [handleClearSelection]);\r\n\r\n const categories = useMemo(() => {\r\n const result = {};\r\n\r\n Object.entries(fieldTypes)\r\n .filter(([type]) => type !== \"unsupported\") \r\n .forEach(([type, config]) => {\r\n const category = config.category || \"Other\";\r\n if (!result[category]) result[category] = [];\r\n result[category].push({\r\n type,\r\n label: config.label,\r\n });\r\n });\r\n\r\n return result;\r\n }, []);\r\n\r\n const handlers = useMemo(() => {\r\n const m = {};\r\n Object.values(categories).forEach(items => {\r\n items.forEach(({ type }) => {\r\n m[type] = () => {\r\n if (isSectionSelected && selectedField?.id) {\r\n // Add to section by passing sectionId in options\r\n addField(type, { sectionId: selectedField.id });\r\n } else {\r\n addField(type);\r\n }\r\n };\r\n });\r\n });\r\n return m;\r\n }, [categories, addField, isSectionSelected, selectedField?.id]);\r\n\r\n return (\r\n <div \r\n className=\" mie:border mie:border-gray-200 mie:rounded-lg mie:bg-white mie:overflow-y-auto mie:custom-scrollbar mie:max-h-[calc(100svh-24rem)] mie:lg:max-h-[calc(100dvh-20rem)]\"\r\n tabIndex=\"-1\"\r\n >\r\n <div className=\"tool-panel-container mie:pb-4 mie:rounded-lg mie:shadow-sm\">\r\n <h3 className=\"tool-panel-title mie:sticky mie:top-0 mie:z-20 mie:bg-white mie:text-base mie:font-semibold mie:pb-2 mie:pt-3 mie:px-4 mie:border-b mie:border-gray-200 mie:flex mie:items-center mie:justify-between mie:gap-2\">\r\n <span className=\"mie:flex mie:items-center mie:gap-2 mie:min-w-0\">\r\n <TOOLS_ICON className=\"mie:w-5 mie:h-5 mie:text-gray-700 mie:shrink-0\" />\r\n <span className=\"mie:truncate\">{isSectionSelected ? `Add to \"${sectionTitle}\"` : \"Tools\"}</span>\r\n </span>\r\n {isSectionSelected && (\r\n <button\r\n onClick={handleClearSelection}\r\n className=\"mie:bg-transparent mie:text-gray-600 mie:hover:text-red-600 mie:hover:bg-red-50 mie:p-1 mie:rounded mie:transition-colors mie:shrink-0\"\r\n title=\"Unselect section\"\r\n >\r\n <X_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n )}\r\n </h3>\r\n \r\n {Object.entries(categories).map(([categoryName, items]) => (\r\n <div key={categoryName} className=\"tool-category\">\r\n <h4 className=\"mie:sticky mie:top-11 mie:z-10 mie:bg-gray-50 mie:text-sm mie:font-semibold mie:text-gray-700 mie:px-4 mie:py-3 mie:border-b mie:border-gray-100 mie:uppercase mie:tracking-wide mie:flex mie:items-center mie:gap-2\">\r\n {(() => {\r\n const IconComponent = getCategoryIcon(categoryName);\r\n return IconComponent ? <IconComponent className=\"mie:w-4 mie:h-4 mie:text-gray-600\" /> : null;\r\n })()}\r\n {categoryName}\r\n </h4>\r\n <div className=\"tool-items mie:grid mie:grid-cols-1 mie:gap-2 mie:px-4 mie:py-3\">\r\n {items.map(({ type, label }) => {\r\n // Disable section field when adding to a section\r\n const isDisabled = isSectionSelected && type === \"section\";\r\n return (\r\n <button\r\n key={type}\r\n disabled={isDisabled}\r\n className={`mie:px-3 mie:py-2 mie:text-sm mie:text-left mie:border mie:rounded-md mie:transition-colors mie:duration-150 ${\r\n isDisabled\r\n ? \"mie:border-gray-200 mie:bg-gray-50 mie:text-gray-400 mie:cursor-not-allowed\"\r\n : \"mie:bg-white mie:text-gray-900 mie:border-gray-300 mie:hover:bg-blue-50 mie:hover:border-blue-400 mie:hover:text-blue-700\"\r\n }`}\r\n onClick={handlers[type]}\r\n title={isDisabled ? \"Cannot add section to a section\" : `Add ${label}`}\r\n >\r\n + {label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/* ────────── Memo: only re-render if isPreview changes ────────── */\r\nconst ToolPanel = React.memo(ToolPanelImpl, (prev, next) => prev.isPreview === next.isPreview);\r\n\r\nexport default ToolPanel;\r\n","import React from \"react\";\r\n\r\nexport default function DraftIdEditor({\r\n id = \"\",\r\n label = \"ID\",\r\n onCommit, \r\n validate, \r\n placeholder = \"Enter unique ID…\",\r\n className = \"\",\r\n}) {\r\n const [draft, setDraft] = React.useState(id ?? \"\");\r\n const [err, setErr] = React.useState(\"\");\r\n\r\n // ────────── Reset when external id changes ──────────\r\n React.useEffect(() => {\r\n setDraft(id ?? \"\");\r\n setErr(\"\");\r\n }, [id]);\r\n\r\n const commit = React.useCallback(() => {\r\n const next = String(draft ?? \"\").trim();\r\n\r\n // ────────── Basic checks ──────────\r\n if (!next) {\r\n setErr(\"ID cannot be empty.\");\r\n setDraft(id ?? \"\");\r\n return;\r\n }\r\n if (next === (id ?? \"\")) return;\r\n\r\n if (typeof validate === \"function\") {\r\n const msg = validate(next, id ?? \"\");\r\n if (msg) {\r\n setErr(msg);\r\n return;\r\n }\r\n }\r\n\r\n onCommit?.(next);\r\n }, [draft, id, onCommit, validate]);\r\n\r\n return (\r\n <div className={className ? `draft-id-editor-container ${className}` : \"draft-id-editor-container\"}>\r\n <label className=\"mie:block mie:text-sm mie:mb-1\">{label}</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded\"\r\n value={draft}\r\n onChange={(e) => {\r\n if (err) setErr(\"\");\r\n setDraft(e.target.value);\r\n }}\r\n onBlur={commit}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n commit();\r\n }\r\n }}\r\n placeholder={placeholder}\r\n />\r\n {err ? <p className=\"mie:text-xs mie:text-red-600 mie:mt-1\">{err}</p> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst INPUT_TYPES = [\r\n { value: \"text\", label: \"Text\" },\r\n { value: \"number\", label: \"Number\" },\r\n { value: \"email\", label: \"Email\" },\r\n { value: \"tel\", label: \"Phone Number\" },\r\n { value: \"date\", label: \"Date\" },\r\n { value: \"datetime-local\", label: \"Date & Time\" },\r\n { value: \"month\", label: \"Month\" },\r\n { value: \"time\", label: \"Time\" },\r\n { value: \"range\", label: \"Range\" }\r\n];\r\n\r\nconst UNITS = {\r\n Length: [\r\n { value: \"mm\", label: \"Millimeters (mm)\" },\r\n { value: \"cm\", label: \"Centimeters (cm)\" },\r\n { value: \"m\", label: \"Meters (m)\" },\r\n { value: \"km\", label: \"Kilometers (km)\" },\r\n { value: \"in\", label: \"Inches (in)\" },\r\n { value: \"ft\", label: \"Feet (ft)\" },\r\n { value: \"yd\", label: \"Yards (yd)\" },\r\n { value: \"mi\", label: \"Miles (mi)\" }\r\n ],\r\n Weight: [\r\n { value: \"mg\", label: \"Milligrams (mg)\" },\r\n { value: \"g\", label: \"Grams (g)\" },\r\n { value: \"kg\", label: \"Kilograms (kg)\" },\r\n { value: \"oz\", label: \"Ounces (oz)\" },\r\n { value: \"lb\", label: \"Pounds (lb)\" }\r\n ],\r\n Volume: [\r\n { value: \"ml\", label: \"Milliliters (ml)\" },\r\n { value: \"l\", label: \"Liters (l)\" },\r\n { value: \"fl-oz\", label: \"Fluid Ounces (fl oz)\" },\r\n { value: \"cup\", label: \"Cups\" },\r\n { value: \"pt\", label: \"Pints (pt)\" },\r\n { value: \"qt\", label: \"Quarts (qt)\" },\r\n { value: \"gal\", label: \"Gallons (gal)\" }\r\n ],\r\n Temperature: [\r\n { value: \"c\", label: \"Celsius (°C)\" },\r\n { value: \"f\", label: \"Fahrenheit (°F)\" },\r\n { value: \"k\", label: \"Kelvin (K)\" }\r\n ],\r\n Other: [\r\n { value: \"percent\", label: \"Percent (%)\" },\r\n { value: \"bpm\", label: \"Beats per minute (bpm)\" },\r\n { value: \"mmHg\", label: \"mmHg (blood pressure)\" }\r\n ]\r\n};\r\n\r\nexport default function InputTypeEditor({ field, onUpdate }) {\r\n const inputType = field.inputType || \"text\";\r\n const unit = field.unit || \"\";\r\n const showUnitSelector = inputType === \"number\" || inputType === \"range\";\r\n\r\n return (\r\n <div className=\"mie:space-y-3\">\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:mb-1\">Input Type</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded\"\r\n value={inputType}\r\n onChange={(e) => onUpdate(\"inputType\", e.target.value)}\r\n >\r\n {INPUT_TYPES.map(type => (\r\n <option key={type.value} value={type.value}>{type.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n \r\n {showUnitSelector && (\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:mb-1\">Unit (optional)</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded\"\r\n value={unit}\r\n onChange={(e) => onUpdate(\"unit\", e.target.value)}\r\n >\r\n <option value=\"\">None</option>\r\n {Object.entries(UNITS).map(([category, units]) => (\r\n <optgroup key={category} label={category}>\r\n {units.map(u => (\r\n <option key={u.value} value={u.value}>{u.label}</option>\r\n ))}\r\n </optgroup>\r\n ))}\r\n </select>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useFormStore } from \"@mieweb/forms-engine\";\r\nimport DraftIdEditor from \"./DraftIdEditor\"\r\nimport InputTypeEditor from \"./InputTypeEditor\";\r\n\r\nfunction CommonEditor({ f, onUpdateField }) {\r\n const byId = useFormStore(React.useCallback(s => s.byId, []));\r\n\r\n const validateId = React.useCallback((newId, oldId) => {\r\n // Empty ID check\r\n if (!newId?.trim()) return \"ID cannot be empty.\";\r\n \r\n // Unchanged ID is OK\r\n if (newId === oldId) return \"\";\r\n \r\n // Collect all existing IDs (root + children of all sections)\r\n const allIds = new Set(Object.keys(byId));\r\n Object.values(byId).forEach((field) => {\r\n if (field?.fieldType === \"section\" && Array.isArray(field.fields)) {\r\n field.fields.forEach((child) => allIds.add(child.id));\r\n }\r\n });\r\n \r\n // Check for collision\r\n if (allIds.has(newId)) {\r\n return `ID \"${newId}\" already exists.`;\r\n }\r\n \r\n return \"\";\r\n }, [byId]);\r\n\r\n return (\r\n <div className=\"common-editor-container mie:space-y-3\">\r\n <DraftIdEditor\r\n id={f.id ?? \"\"}\r\n validate={validateId}\r\n onCommit={(next) => onUpdateField?.(\"id\", next)}\r\n />\r\n\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:mb-1\">Label / Question</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded\"\r\n value={f.question || \"\"}\r\n onChange={(e) => onUpdateField?.(\"question\", e.target.value)}\r\n placeholder=\"Enter question text\"\r\n />\r\n </div>\r\n\r\n {(f.fieldType === \"text\" || f.fieldType === \"longtext\") && (\r\n <InputTypeEditor field={f} onUpdate={onUpdateField} />\r\n )}\r\n\r\n <div className=\"mie:min-w-0\">\r\n <label className=\"mie:block mie:text-sm mie:mb-1\">Sublabel (optional)</label>\r\n <textarea\r\n className=\"mie:w-full mie:min-w-0 mie:max-h-32 mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded mie:resize-y\"\r\n value={f.sublabel || \"\"}\r\n onChange={(e) => onUpdateField(\"sublabel\", e.target.value)}\r\n placeholder=\"Helper text / description\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"mie:inline-flex mie:items-center mie:gap-2 mie:text-sm\">\r\n <input\r\n type=\"checkbox\"\r\n checked={!!f.required}\r\n onChange={(e) => onUpdateField?.(\"required\", e.target.checked)}\r\n />\r\n Required\r\n </label>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CommonEditor;\r\n","import React from \"react\";\r\nimport { TRASHCANTWO_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function OptionListEditor({ field, api }) {\r\n const opts = field.options || [];\r\n const isBoolean = field.fieldType === \"boolean\";\r\n const isMultitext = field.fieldType === \"multitext\";\r\n const containerRef = React.useRef(null);\r\n const prevCountRef = React.useRef(opts.length);\r\n\r\n const label = isMultitext ? \"Text Inputs\" : \"Options\";\r\n const singular = isMultitext ? \"Text Input\" : \"Option\";\r\n const placeholder = isMultitext ? \"Input label\" : \"Option text\";\r\n\r\n // Auto-scroll when new option is added\r\n React.useEffect(() => {\r\n if (opts.length > prevCountRef.current && containerRef.current) {\r\n const lastChild = containerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevCountRef.current = opts.length;\r\n }, [opts.length]);\r\n\r\n return (\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700\">{label}</label>\r\n <div ref={containerRef} className=\"mie:space-y-2\">\r\n {opts.map((opt) => (\r\n <div key={opt.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:shadow-sm mie:hover:border-gray-400 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent\"\r\n value={opt.value}\r\n onChange={(e) => api.option.update(opt.id, e.target.value)}\r\n placeholder={placeholder}\r\n />\r\n {!isBoolean && (\r\n <button\r\n onClick={() => api.option.remove(opt.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-gray-400 mie:hover:text-red-600 mie:transition-colors\"\r\n title=\"Remove option\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {!isBoolean && (\r\n <button\r\n onClick={() => api.option.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-white mie:text-blue-600 mie:border mie:border-blue-300 mie:rounded-lg mie:hover:bg-blue-50 mie:transition-colors\"\r\n >\r\n + Add {singular}\r\n </button>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { TRASHCANTWO_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function MatrixEditor({ field, api }) {\r\n const rows = field.rows || [];\r\n const columns = field.columns || [];\r\n const rowsContainerRef = React.useRef(null);\r\n const colsContainerRef = React.useRef(null);\r\n const prevRowCountRef = React.useRef(rows.length);\r\n const prevColCountRef = React.useRef(columns.length);\r\n\r\n // Auto-scroll when new row is added\r\n React.useEffect(() => {\r\n if (rows.length > prevRowCountRef.current && rowsContainerRef.current) {\r\n const lastChild = rowsContainerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevRowCountRef.current = rows.length;\r\n }, [rows.length]);\r\n\r\n // Auto-scroll when new column is added\r\n React.useEffect(() => {\r\n if (columns.length > prevColCountRef.current && colsContainerRef.current) {\r\n const lastChild = colsContainerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevColCountRef.current = columns.length;\r\n }, [columns.length]);\r\n\r\n return (\r\n <div className=\"mie:space-y-4\">\r\n {/* Rows Section */}\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700\">Rows</label>\r\n <div ref={rowsContainerRef} className=\"mie:space-y-2\">\r\n {rows.map((row) => (\r\n <div key={row.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:shadow-sm mie:hover:border-gray-400 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent\"\r\n value={row.value}\r\n onChange={(e) => api.row.update(row.id, e.target.value)}\r\n placeholder=\"Row text\"\r\n />\r\n <button\r\n onClick={() => api.row.remove(row.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-gray-400 mie:hover:text-red-600 mie:transition-colors\"\r\n title=\"Remove row\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {rows.length >= 10 ? (\r\n <div className=\"mie:px-3 mie:py-2 mie:text-sm mie:text-gray-500 mie:text-center mie:bg-gray-50 mie:rounded-lg\">Max rows reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.row.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-white mie:text-blue-600 mie:border mie:border-blue-300 mie:rounded-lg mie:hover:bg-blue-50 mie:transition-colors\"\r\n >\r\n + Add Row\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Columns Section */}\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700\">Columns</label>\r\n <div ref={colsContainerRef} className=\"mie:space-y-2\">\r\n {columns.map((col) => (\r\n <div key={col.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:shadow-sm mie:hover:border-gray-400 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent\"\r\n value={col.value}\r\n onChange={(e) => api.column.update(col.id, e.target.value)}\r\n placeholder=\"Column text\"\r\n />\r\n <button\r\n onClick={() => api.column.remove(col.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-gray-400 mie:hover:text-red-600 mie:transition-colors\"\r\n title=\"Remove column\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {columns.length >= 10 ? (\r\n <div className=\"mie:px-3 mie:py-2 mie:text-sm mie:text-gray-500 mie:text-center mie:bg-gray-50 mie:rounded-lg\">Max columns reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.column.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-white mie:text-blue-600 mie:border mie:border-blue-300 mie:rounded-lg mie:hover:bg-blue-50 mie:transition-colors\"\r\n >\r\n + Add Column\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport CommonEditor from \"./CommonEditor\";\r\nimport OptionListEditor from \"./OptionListEditor\";\r\nimport MatrixEditor from \"./MatrixEditor\";\r\nimport { useFormApi, fieldTypes } from \"@mieweb/forms-engine\";\r\n\r\nfunction NonSectionEditor({ f }) {\r\n const api = useFormApi(f.id);\r\n\r\n const onUpdateField = React.useCallback(\r\n (key, value) => api.field.update(key, value),\r\n [api]\r\n );\r\n\r\n const fieldConfig = fieldTypes[f.fieldType] || {};\r\n const hasOptions = fieldConfig.hasOptions || false;\r\n const hasMatrix = fieldConfig.hasMatrix || false;\r\n\r\n return (\r\n <>\r\n <CommonEditor f={f} onUpdateField={onUpdateField} />\r\n\r\n {f.fieldType === \"input\" && (\r\n <div className=\"non-section-editor-default-answer mie:mt-4\">\r\n <div className=\"mie:text-sm mie:font-medium mie:mb-1\">Default Answer</div>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-black/20 mie:rounded\"\r\n value={f.answer || \"\"}\r\n onChange={(e) => onUpdateField(\"answer\", e.target.value)}\r\n placeholder=\"Default value\"\r\n />\r\n </div>\r\n )}\r\n\r\n {hasOptions && <OptionListEditor field={f} api={api} />}\r\n\r\n {hasMatrix && <MatrixEditor field={f} api={api} />}\r\n </>\r\n );\r\n}\r\n\r\nexport default NonSectionEditor;\r\n","import React from \"react\";\r\nimport OptionListEditor from \"./OptionListEditor\";\r\nimport MatrixEditor from \"./MatrixEditor\";\r\nimport CommonEditor from \"./CommonEditor\";\r\nimport { fieldTypes, FormStoreContext, useFormApi, useUIApi, TRASHCANTWO_ICON, ARROWDOWN_ICON } from \"@mieweb/forms-engine\";\r\nimport DraftIdEditor from \"./DraftIdEditor\"\r\n\r\nfunction SectionEditor({ section, onActiveChildChange }) {\r\n const sectionApi = useFormApi(section.id);\r\n const formStore = React.useContext(FormStoreContext);\r\n const ui = useUIApi();\r\n\r\n if (!formStore) throw new Error('Missing FormStoreContext.Provider in the tree');\r\n\r\n const children = Array.isArray(section.fields) ? section.fields : [];\r\n \r\n // Initialize from global selectedChildId if valid for this section, otherwise first child\r\n const globalParentId = ui.selectedChildId.ParentId;\r\n const globalChildId = ui.selectedChildId.ChildId;\r\n const initialChildId = React.useMemo(() => {\r\n if (globalParentId === section.id && globalChildId && children.some((c) => c.id === globalChildId)) {\r\n return globalChildId;\r\n }\r\n return children[0]?.id || null;\r\n }, []); // Only compute once on mount\r\n \r\n const [activeChildId, setActiveChildId] = React.useState(initialChildId);\r\n\r\n // Sync with global selectedChildId from section (only when global changes externally)\r\n const prevGlobalChildIdRef = React.useRef(globalChildId);\r\n React.useEffect(() => {\r\n // Only sync if global changed AND it's for this section AND different from current\r\n if (prevGlobalChildIdRef.current !== globalChildId) {\r\n prevGlobalChildIdRef.current = globalChildId;\r\n if (globalParentId === section.id && globalChildId && globalChildId !== activeChildId) {\r\n setActiveChildId(globalChildId);\r\n }\r\n }\r\n }, [globalParentId, globalChildId, section.id, activeChildId]);\r\n\r\n React.useEffect(() => {\r\n if (!children.length) {\r\n if (activeChildId !== null) setActiveChildId(null);\r\n return;\r\n }\r\n const stillExists = children.some((c) => c.id === activeChildId);\r\n if (!stillExists) setActiveChildId(children[0].id);\r\n }, [children, activeChildId]);\r\n\r\n React.useEffect(() => {\r\n onActiveChildChange?.(section.id, activeChildId || null);\r\n }, [section.id, activeChildId, onActiveChildChange]);\r\n\r\n const handleChildSelect = React.useCallback(\r\n (childId) => {\r\n setActiveChildId(childId);\r\n // Also update the global UI state for highlighting in the section\r\n ui.selectedChildId.set(section.id, childId);\r\n },\r\n [section.id, ui.selectedChildId]\r\n );\r\n\r\n const getFieldLabel = React.useCallback((field) => {\r\n return field.question?.trim() || fieldTypes[field.fieldType]?.label || \"Untitled\";\r\n }, []);\r\n\r\n const onUpdateSection = React.useCallback(\r\n (key, value) => sectionApi.field.update(key, value),\r\n [sectionApi]\r\n );\r\n\r\n const activeChild = React.useMemo(\r\n () => children.find((c) => c.id === activeChildId) || null,\r\n [children, activeChildId]\r\n );\r\n\r\n const childApi = useFormApi(activeChild?.id || '', section.id);\r\n const validChildApi = activeChild && childApi ? childApi : null;\r\n\r\n const onUpdateChild = React.useCallback(\r\n (key, value) => {\r\n if (!activeChild) return;\r\n if (key === \"id\") {\r\n const next = String(value ?? \"\").trim();\r\n if (!next) return;\r\n\r\n formStore.getState().updateField(\r\n activeChild.id,\r\n { id: next },\r\n {\r\n sectionId: section.id,\r\n onIdChange: (newId, oldId) => {\r\n setActiveChildId((curr) => (curr === oldId ? newId : curr));\r\n },\r\n }\r\n );\r\n return;\r\n }\r\n\r\n formStore.getState().updateField(\r\n activeChild.id,\r\n { [key]: value },\r\n { sectionId: section.id }\r\n );\r\n },\r\n [activeChild, section.id, formStore]\r\n );\r\n\r\n const onDeleteChild = React.useCallback(() => {\r\n if (!activeChild) return;\r\n formStore.getState().deleteField(activeChild.id, { sectionId: section.id });\r\n }, [activeChild, section.id, formStore]);\r\n\r\n const hasOptionsChild = React.useMemo(\r\n () => {\r\n if (!activeChild) return false;\r\n const childConfig = fieldTypes[activeChild.fieldType] || {};\r\n return childConfig.hasOptions || false;\r\n },\r\n [activeChild]\r\n );\r\n\r\n const hasMatrixChild = React.useMemo(\r\n () => {\r\n if (!activeChild) return false;\r\n const childConfig = fieldTypes[activeChild.fieldType] || {};\r\n return childConfig.hasMatrix || false;\r\n },\r\n [activeChild]\r\n );\r\n\r\n return (\r\n <div className=\"mie:space-y-4\">\r\n {/* Section Properties */}\r\n <div className=\"mie:space-y-3\">\r\n <h3 className=\"mie:text-sm mie:font-semibold mie:text-gray-700 mie:uppercase mie:tracking-wide\">Section Properties</h3>\r\n\r\n <DraftIdEditor\r\n id={section.id}\r\n onCommit={(next) => sectionApi.field.renameId(next)}\r\n />\r\n\r\n <div className=\"section-editor-title\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700 mie:mb-1\">Section Title</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none\"\r\n value={section.title || \"\"}\r\n onChange={(e) => onUpdateSection(\"title\", e.target.value)}\r\n placeholder=\"e.g., Patient Information\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {/* Field Selection */}\r\n <div className=\"mie:space-y-3\">\r\n <h3 className=\"mie:text-sm mie:font-semibold mie:text-gray-700 mie:uppercase mie:tracking-wide\">\r\n Fields ({children.length})\r\n </h3>\r\n \r\n {children.length === 0 ? (\r\n <div className=\"mie:flex mie:flex-col mie:items-center mie:justify-center mie:p-6 mie:bg-gray-50 mie:border-2 mie:border-dashed mie:border-gray-200 mie:rounded-lg mie:text-center\">\r\n <p className=\"mie:text-sm mie:text-gray-500\">No fields in this section</p>\r\n <p className=\"mie:text-xs mie:text-gray-400 mie:mt-1\">Use the Tool Panel to add fields</p>\r\n </div>\r\n ) : (\r\n <>\r\n {/* Dropdown Field Selector */}\r\n <div className=\"mie:relative\">\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:pr-10 mie:border mie:border-gray-300 mie:rounded mie:bg-white mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:appearance-none mie:cursor-pointer\"\r\n value={activeChildId || \"\"}\r\n onChange={(e) => handleChildSelect(e.target.value)}\r\n >\r\n {children.map((c) => (\r\n <option key={c.id} value={c.id}>\r\n {getFieldLabel(c)} — {fieldTypes[c.fieldType]?.label}\r\n </option>\r\n ))}\r\n </select>\r\n <ARROWDOWN_ICON className=\"mie:absolute mie:right-3 mie:top-1/2 mie:-translate-y-1/2 mie:w-4 mie:h-4 mie:text-gray-500 mie:pointer-events-none\" />\r\n </div>\r\n\r\n {activeChild && (\r\n <div className=\"mie:space-y-4 mie:p-4 mie:bg-gray-50 mie:border mie:border-gray-200 mie:rounded-lg\">\r\n {/* Field Type Badge */}\r\n <div className=\"mie:flex mie:items-center mie:justify-between\">\r\n <span className=\"mie:inline-flex mie:items-center mie:px-2.5 mie:py-0.5 mie:rounded-full mie:text-xs mie:font-medium mie:bg-blue-100 mie:text-blue-800\">\r\n {fieldTypes[activeChild.fieldType]?.label || activeChild.fieldType}\r\n </span>\r\n <button\r\n className=\"mie:flex mie:items-center mie:gap-1.5 mie:px-3 mie:py-1.5 mie:text-xs mie:font-medium mie:bg-white mie:text-red-600 mie:hover:text-red-700 mie:hover:bg-red-50 mie:border mie:border-red-300 mie:rounded mie:transition-colors\"\r\n onClick={onDeleteChild}\r\n title=\"Delete this field\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-3.5 mie:h-3.5\" />\r\n Delete\r\n </button>\r\n </div>\r\n\r\n {/* Field Editor */}\r\n <CommonEditor f={activeChild} onUpdateField={onUpdateChild} />\r\n\r\n {activeChild.fieldType === \"input\" && (\r\n <div className=\"section-editor-default-answer\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700 mie:mb-1\">Default Answer</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none\"\r\n value={activeChild.answer || \"\"}\r\n onChange={(e) => onUpdateChild(\"answer\", e.target.value)}\r\n placeholder=\"Default value\"\r\n />\r\n </div>\r\n )}\r\n\r\n {hasOptionsChild && validChildApi && <OptionListEditor field={activeChild} api={validChildApi} />}\r\n\r\n {hasMatrixChild && validChildApi && <MatrixEditor field={activeChild} api={validChildApi} />}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default SectionEditor;\r\n","import React from \"react\";\r\nimport { useUIApi, useFormStore, TRASHCANTWO_ICON, NUMERIC_EXPRESSION_FORMATS } from \"@mieweb/forms-engine\";\r\n\r\n// ────────── Operators by field type ──────────\r\nfunction getOperatorsForFieldType(fieldType, displayFormat, inputType) {\r\n // Numeric expression fields get comparison operators\r\n if (fieldType === \"expression\") {\r\n const isNumeric = NUMERIC_EXPRESSION_FORMATS.includes(displayFormat);\r\n if (isNumeric) {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\"];\r\n }\r\n return [\"equals\", \"notEquals\", \"contains\", \"empty\", \"notEmpty\"];\r\n }\r\n \r\n switch (fieldType) {\r\n case \"text\":\r\n case \"longtext\":\r\n // Number, range, and date/time inputs support numeric/comparison operators\r\n if (inputType === \"number\" || inputType === \"range\") {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"empty\", \"notEmpty\"];\r\n }\r\n if (inputType === \"date\" || inputType === \"datetime-local\" || inputType === \"month\" || inputType === \"time\") {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"empty\", \"notEmpty\"];\r\n }\r\n // Text, email, tel get text operators\r\n return [\"equals\", \"notEquals\", \"contains\", \"empty\", \"notEmpty\"];\r\n case \"radio\":\r\n case \"dropdown\":\r\n case \"boolean\":\r\n return [\"equals\", \"notEquals\"];\r\n case \"check\":\r\n case \"multiselectdropdown\":\r\n return [\"includes\", \"empty\", \"notEmpty\"];\r\n case \"rating\":\r\n case \"slider\":\r\n case \"ranking\":\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\"];\r\n default:\r\n return [\"equals\", \"notEquals\"];\r\n }\r\n}\r\n\r\n// ────────── Property accessors available for field types ──────────\r\nfunction getPropertyAccessorsForFieldType(fieldType) {\r\n switch (fieldType) {\r\n case \"check\":\r\n case \"multiselectdropdown\":\r\n case \"ranking\":\r\n return [\"length\", \"count\"];\r\n case \"text\":\r\n case \"longtext\":\r\n return [\"length\"];\r\n default:\r\n return [];\r\n }\r\n}\r\n\r\n// ────────── Operator labels for display ──────────\r\nfunction getOperatorLabel(op) {\r\n switch (op) {\r\n case \"equals\": return \"= (equals)\";\r\n case \"notEquals\": return \"≠ (not equals)\";\r\n case \"greaterThan\": return \"> (greater than)\";\r\n case \"greaterThanOrEqual\": return \"≥ (greater than or equal)\";\r\n case \"lessThan\": return \"< (less than)\";\r\n case \"lessThanOrEqual\": return \"≤ (less than or equal)\";\r\n case \"contains\": return \"contains\";\r\n case \"includes\": return \"includes\";\r\n case \"empty\": return \"is empty\";\r\n case \"notEmpty\": return \"is not empty\";\r\n default: return op;\r\n }\r\n}\r\n\r\n// ────────── Normalize options ──────────\r\nfunction normOption(opt) {\r\n if (opt && typeof opt === \"object\") {\r\n const id = opt.id ?? String(opt.value ?? \"\");\r\n const value = String(opt.value ?? opt.label ?? opt.id ?? \"\");\r\n return { id, value };\r\n }\r\n const s = String(opt ?? \"\");\r\n return { id: s, value: s };\r\n}\r\n\r\nexport default function LogicEditor() {\r\n const ui = useUIApi();\r\n\r\n // stable store slices (hooks always called)\r\n const byId = useFormStore((s) => s.byId);\r\n const setEnableWhen = useFormStore((s) => s.setEnableWhen);\r\n const updateField = useFormStore((s) => s.updateField);\r\n\r\n // read selection (plain values)\r\n const selectedId = ui?.selectedFieldId?.value ?? null;\r\n const rawParentId = ui?.selectedChildId?.ParentId ?? null;\r\n const rawChildId = ui?.selectedChildId?.ChildId ?? null;\r\n\r\n // resolve current selected field and whether it is a section\r\n const selectedField = selectedId ? byId[selectedId] : null;\r\n const isSectionCtx = selectedField?.fieldType === \"section\";\r\n\r\n // children list for the current section (empty when not a section)\r\n const sectionChildren = React.useMemo(() => {\r\n if (!isSectionCtx) return [];\r\n const arr = Array.isArray(selectedField?.fields) ? selectedField.fields : [];\r\n return arr;\r\n }, [isSectionCtx, selectedField]);\r\n\r\n // validate the previously selected child against current section\r\n const childValidForSection = React.useMemo(() => {\r\n if (!isSectionCtx || !rawChildId) return false;\r\n return sectionChildren.some((c) => c.id === rawChildId);\r\n }, [isSectionCtx, rawChildId, sectionChildren]);\r\n\r\n // target: \"\" => section; \"child:<id>\" => child under current section\r\n const initialTarget = React.useMemo(() => {\r\n if (!isSectionCtx) return \"\"; // treat non-section as \"section scope\" on that field\r\n if (childValidForSection) return `child:${rawChildId}`;\r\n return \"\";\r\n }, [isSectionCtx, childValidForSection, rawChildId]);\r\n\r\n const [target, setTarget] = React.useState(initialTarget);\r\n\r\n // keep target in sync when switching selected field/section OR when initial target changes\r\n React.useEffect(() => {\r\n setTarget(initialTarget);\r\n }, [initialTarget]);\r\n\r\n // sync UI child selection when user changes the dropdown (not on every target change)\r\n const handleTargetChange = React.useCallback((newTarget) => {\r\n setTarget(newTarget);\r\n if (!isSectionCtx) return;\r\n if (newTarget && newTarget.startsWith(\"child:\")) {\r\n const cid = newTarget.slice(6);\r\n ui.selectedChildId.set(selectedId, cid);\r\n } else {\r\n ui.selectedChildId.set(null, null);\r\n }\r\n }, [isSectionCtx, selectedId, ui]);\r\n\r\n // compute effective scope\r\n const isChildScope = Boolean(isSectionCtx && target && target.startsWith(\"child:\"));\r\n const effectiveChildId = isChildScope ? target.slice(6) : null;\r\n const effectiveId = isChildScope ? effectiveChildId : selectedId;\r\n\r\n // read the field we're editing logic for (may be null; we still render safely)\r\n const field = React.useMemo(() => {\r\n if (!effectiveId) return null;\r\n if (isChildScope) {\r\n return sectionChildren.find((c) => c.id === effectiveChildId) ?? null;\r\n }\r\n return byId[effectiveId] ?? null;\r\n }, [byId, effectiveId, isChildScope, effectiveChildId, sectionChildren]);\r\n\r\n // Build list of possible condition targets (all fields, including children)\r\n const targets = React.useMemo(() => {\r\n const out = [];\r\n for (const f of Object.values(byId)) {\r\n if (!f) continue;\r\n if (f.fieldType === \"section\" && Array.isArray(f.fields)) {\r\n const sectTitle = f.title?.trim() || \"Section\";\r\n f.fields.forEach((c) => {\r\n out.push({\r\n id: c.id,\r\n parentId: f.id,\r\n label: `${sectTitle} › ${c.question?.trim() || c.id}`,\r\n fieldType: c.fieldType,\r\n displayFormat: c.displayFormat,\r\n options: Array.isArray(c.options) ? c.options : [],\r\n });\r\n });\r\n } else {\r\n out.push({\r\n id: f.id,\r\n parentId: null,\r\n label: f.question?.trim() || f.title?.trim() || f.id,\r\n fieldType: f.fieldType,\r\n displayFormat: f.displayFormat,\r\n options: Array.isArray(f.options) ? f.options : [],\r\n });\r\n }\r\n }\r\n return out;\r\n }, [byId]);\r\n\r\n const findTarget = React.useCallback(\r\n (tid) => targets.find((t) => t.id === tid) || null,\r\n [targets]\r\n );\r\n\r\n // writer: section/top-level vs child\r\n const writeEnableWhen = React.useCallback(\r\n (next) => {\r\n if (!effectiveId) return;\r\n\r\n const normalized =\r\n next && Array.isArray(next.conditions)\r\n ? { logic: next.logic || \"AND\", conditions: next.conditions }\r\n : undefined;\r\n\r\n if (isChildScope && selectedId) {\r\n updateField(effectiveId, { enableWhen: normalized }, { sectionId: selectedId });\r\n } else {\r\n setEnableWhen(effectiveId, normalized);\r\n }\r\n },\r\n [effectiveId, isChildScope, selectedId, setEnableWhen, updateField]\r\n );\r\n\r\n // current ew (safe default even if field null)\r\n const ew = React.useMemo(() => {\r\n return field?.enableWhen && Array.isArray(field.enableWhen.conditions)\r\n ? { logic: field.enableWhen.logic || \"AND\", conditions: field.enableWhen.conditions }\r\n : { logic: \"AND\", conditions: [] };\r\n }, [field]);\r\n\r\n // events (pure; never add/remove hooks)\r\n const addCond = React.useCallback(() => {\r\n const next = {\r\n logic: ew.logic || \"AND\",\r\n conditions: [\r\n ...(Array.isArray(ew.conditions) ? ew.conditions : []),\r\n { targetId: \"\", operator: \"equals\", value: \"\" },\r\n ],\r\n };\r\n writeEnableWhen(next);\r\n }, [ew, writeEnableWhen]);\r\n\r\n const clear = React.useCallback(() => writeEnableWhen(null), [writeEnableWhen]);\r\n\r\n const removeCond = React.useCallback(\r\n (idx) => {\r\n const base = Array.isArray(ew.conditions) ? ew.conditions : [];\r\n const nextConds = base.filter((_, i) => i !== idx);\r\n writeEnableWhen({ ...ew, conditions: nextConds });\r\n },\r\n [ew, writeEnableWhen]\r\n );\r\n\r\n const updateCond = React.useCallback(\r\n (idx, patch) => {\r\n const base = Array.isArray(ew.conditions) ? ew.conditions : [];\r\n const nextConds = [...base];\r\n const curr = nextConds[idx] || { targetId: \"\", operator: \"equals\", value: \"\" };\r\n const updated = { ...curr, ...patch };\r\n\r\n if (\"targetId\" in patch) {\r\n const meta = findTarget(updated.targetId);\r\n const ops = getOperatorsForFieldType(meta?.fieldType, meta?.displayFormat, meta?.inputType);\r\n if (!ops.includes(updated.operator)) updated.operator = ops[0] || \"equals\";\r\n\r\n const opts = Array.isArray(meta?.options) ? meta.options.map(normOption) : [];\r\n if (opts.length > 0) {\r\n const valid = new Set(opts.map((o) => o.id));\r\n if (!valid.has(updated.value)) updated.value = \"\";\r\n }\r\n }\r\n\r\n nextConds[idx] = updated;\r\n writeEnableWhen({ ...ew, conditions: nextConds });\r\n },\r\n [ew, findTarget, writeEnableWhen]\r\n );\r\n\r\n // filteredTargets: prevent self-targeting\r\n const filteredTargets = React.useMemo(\r\n () => targets.filter((t) => t.id !== effectiveId),\r\n [targets, effectiveId]\r\n );\r\n\r\n // ────────── Render (no early return before hooks) ──────────\r\n const isDisabled = !field || !effectiveId;\r\n\r\n return (\r\n <div className=\"logic-editor-container mie:space-y-4\">\r\n {/* Target picker when a section is selected */}\r\n {isSectionCtx && (\r\n <div className=\"mie:space-y-2\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700\">Target Field</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white\"\r\n value={target}\r\n onChange={(e) => handleTargetChange(e.target.value)}\r\n >\r\n <option value=\"\">Section (this)</option>\r\n {sectionChildren.map((c) => (\r\n <option key={c.id} value={`child:${c.id}`}>\r\n {c.question?.trim() || c.title?.trim() || c.id}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n )}\r\n\r\n <div className=\"mie:space-y-3\">\r\n <div className=\"mie:space-y-2\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-gray-700\">Logic Operator</label>\r\n <select\r\n value={ew.logic || \"AND\"}\r\n onChange={(e) => writeEnableWhen({ ...ew, logic: e.target.value })}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white\"\r\n disabled={isDisabled}\r\n >\r\n <option value=\"AND\">AND — All conditions must be true</option>\r\n <option value=\"OR\">OR — Any condition must be true</option>\r\n </select>\r\n </div>\r\n \r\n <div className=\"mie:flex mie:gap-2\">\r\n <button \r\n type=\"button\" \r\n className=\"mie:flex-1 mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-white mie:text-blue-600 mie:border mie:border-blue-300 mie:rounded-lg mie:hover:bg-blue-50 mie:transition-colors mie:disabled:opacity-50 mie:disabled:cursor-not-allowed\" \r\n onClick={addCond} \r\n disabled={isDisabled}\r\n >\r\n + Add Condition\r\n </button>\r\n <button \r\n type=\"button\" \r\n className=\"mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-white mie:text-red-600 mie:border mie:border-red-300 mie:rounded-lg mie:hover:bg-red-50 mie:transition-colors mie:disabled:opacity-50 mie:disabled:cursor-not-allowed\" \r\n onClick={clear} \r\n disabled={isDisabled}\r\n >\r\n Clear All\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Conditions list */}\r\n {ew.conditions.length > 0 && (\r\n <div className=\"mie:space-y-3\">\r\n <h4 className=\"mie:text-sm mie:font-medium mie:text-gray-700\">Conditions ({ew.conditions.length})</h4>\r\n <div className=\"mie:space-y-3\">\r\n {ew.conditions.map((c, i) => {\r\n const meta = findTarget(c.targetId);\r\n const allowedOps = getOperatorsForFieldType(meta?.fieldType, meta?.displayFormat, meta?.inputType);\r\n const propertyAccessors = meta ? getPropertyAccessorsForFieldType(meta.fieldType) : [];\r\n const hasPropertyAccessors = propertyAccessors.length > 0;\r\n const optList = Array.isArray(meta?.options) ? meta.options.map(normOption) : [];\r\n const hasOptions = optList.length > 0;\r\n const needsValue = !['empty', 'notEmpty'].includes(c.operator);\r\n \r\n // Numeric operators use number input for threshold comparison, not option dropdown\r\n const numericOperators = ['greaterThan', 'greaterThanOrEqual', 'lessThan', 'lessThanOrEqual'];\r\n const isNumericComparison = numericOperators.includes(c.operator);\r\n\r\n return (\r\n <div key={i} className=\"mie:p-3 mie:bg-gray-50 mie:border mie:border-gray-200 mie:rounded-lg mie:space-y-2\">\r\n <div className=\"mie:flex mie:items-center mie:justify-between mie:mb-2\">\r\n <span className=\"mie:text-xs mie:font-semibold mie:text-gray-500 mie:uppercase mie:tracking-wide\">Condition {i + 1}</span>\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCond(i)}\r\n className=\"mie:bg-transparent mie:text-gray-400 mie:hover:text-red-600 mie:transition-colors\"\r\n title=\"Remove condition\"\r\n disabled={isDisabled}\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-4 mie:h-4\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"mie:space-y-2\">\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-gray-600 mie:mb-1\">When Field</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white mie:text-sm\"\r\n value={c.targetId}\r\n onChange={(e) => updateCond(i, { targetId: e.target.value })}\r\n disabled={isDisabled}\r\n >\r\n <option value=\"\">— Select field —</option>\r\n {filteredTargets.map((t) => (\r\n <option key={t.id} value={t.id}>\r\n {t.label}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n {/* Property Accessor (optional - only for certain field types) */}\r\n {hasPropertyAccessors && (\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-gray-600 mie:mb-1\">Property (optional)</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white mie:text-sm\"\r\n value={c.propertyAccessor || ''}\r\n onChange={(e) => updateCond(i, { propertyAccessor: e.target.value || undefined })}\r\n disabled={isDisabled || !meta}\r\n >\r\n <option value=\"\">— Direct value —</option>\r\n {propertyAccessors.map((prop) => (\r\n <option key={prop} value={prop}>\r\n .{prop} (get {prop})\r\n </option>\r\n ))}\r\n </select>\r\n <p className=\"mie:text-xs mie:text-gray-500 mie:mt-1\">\r\n Use .length or .count to compare the number of items\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"mie:grid mie:grid-cols-2 mie:gap-2\">\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-gray-600 mie:mb-1\">Operator</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white mie:text-sm\"\r\n value={c.operator}\r\n onChange={(e) => updateCond(i, { operator: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n >\r\n {(meta ? allowedOps : [\"equals\"]).map((op) => (\r\n <option key={op} value={op}>\r\n {getOperatorLabel(op)}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-gray-600 mie:mb-1\">Value</label>\r\n {!needsValue ? (\r\n <div className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-200 mie:rounded-lg mie:bg-gray-100 mie:text-sm mie:text-gray-500 mie:flex mie:items-center\">\r\n (no value needed)\r\n </div>\r\n ) : hasOptions && !c.propertyAccessor && !isNumericComparison ? (\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:bg-white mie:text-sm\"\r\n value={c.value}\r\n onChange={(e) => updateCond(i, { value: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n >\r\n <option value=\"\">— Select option —</option>\r\n {optList.map((opt) => (\r\n <option key={opt.id} value={opt.id}>\r\n {opt.value}\r\n </option>\r\n ))}\r\n </select>\r\n ) : (\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-gray-300 mie:rounded-lg mie:focus:border-blue-400 mie:focus:ring-1 mie:focus:ring-blue-400 mie:outline-none mie:text-sm\"\r\n placeholder={c.propertyAccessor || isNumericComparison ? \"Enter number\" : \"Enter value\"}\r\n type={c.propertyAccessor || isNumericComparison ? \"number\" : \"text\"}\r\n value={c.value}\r\n onChange={(e) => updateCond(i, { value: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport NonSectionEditor from \"./types/NonSectionEditor\";\r\nimport SectionEditor from \"./types/SectionEditor\";\r\nimport LogicEditor from \"./types/LogicEditor\";\r\nimport { useUIApi, useFormStore, EDIT_ICON, EYEEDIT_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function EditPanel({ isMobileModal = false }) {\r\n const ui = useUIApi();\r\n\r\n const selectedField = useFormStore(\r\n React.useCallback(\r\n (s) => (ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null),\r\n [ui.selectedFieldId.value]\r\n )\r\n );\r\n\r\n const [tab, setTab] = React.useState(\"EDIT\");\r\n\r\n const handleActiveChildChange = React.useCallback(\r\n (sectionId, childId) => {\r\n ui.selectedChildId.set(sectionId, childId);\r\n },\r\n [ui.selectedChildId.set]\r\n );\r\n\r\n React.useEffect(() => {\r\n ui.selectedChildId.set(null, null);\r\n setTab(\"EDIT\");\r\n }, [ui.selectedFieldId.value]);\r\n\r\n if (ui.state.isPreview) return null;\r\n\r\n const isNone = !selectedField;\r\n const isSection = selectedField?.fieldType === \"section\";\r\n\r\n return (\r\n <div\r\n className={`edit-panel-container mie:bg-white mie:border mie:border-gray-200 mie:rounded-lg mie:shadow-sm ${\r\n isMobileModal\r\n ? \"mie:overflow-visible mie:max-h-none\"\r\n : \"mie:overflow-y-auto mie:custom-scrollbar mie:max-h-[calc(100svh-24rem)] mie:lg:max-h-[calc(100dvh-20rem)]\"\r\n }`}\r\n >\r\n {/* Sticky Header with Mode Toggle */}\r\n <div className=\"mie:sticky mie:top-0 mie:z-20 mie:bg-white mie:border-b mie:border-gray-200 mie:px-4 mie:pt-3 mie:pb-2\">\r\n {/* Mode Toggle */}\r\n <div className=\"mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-black/10 mie:bg-black/5 mie:p-1 mie:w-full\">\r\n <button\r\n type=\"button\"\r\n onClick={() => setTab(\"EDIT\")}\r\n className={`mie:flex-1 mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-3 mie:py-2 mie:rounded-lg mie:text-xs mie:font-medium mie:transition-colors ${\r\n tab === \"EDIT\"\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n >\r\n <EDIT_ICON className=\"mie:w-4 mie:h-4\" />\r\n <span>Edit</span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => setTab(\"LOGIC\")}\r\n className={`mie:flex-1 mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-3 mie:py-2 mie:rounded-lg mie:text-xs mie:font-medium mie:transition-colors ${\r\n tab === \"LOGIC\"\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n >\r\n <EYEEDIT_ICON className=\"mie:w-4 mie:h-4\" />\r\n <span>Logic</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Content Area */}\r\n <div className=\"mie:p-4\">\r\n {isNone && (\r\n <div className=\"edit-panel-empty mie:text-gray-600\">\r\n <p>Select a field in the center panel to edit its properties.</p>\r\n </div>\r\n )}\r\n\r\n {!isNone && tab === \"EDIT\" && (\r\n <>\r\n {!isSection && <NonSectionEditor f={selectedField} />}\r\n {isSection && (\r\n <SectionEditor\r\n section={selectedField}\r\n onActiveChildChange={handleActiveChildChange}\r\n />\r\n )}\r\n </>\r\n )}\r\n \r\n {!isNone && tab === \"LOGIC\" && <LogicEditor />}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { fieldTypes, getFieldComponent, useVisibleFields, useFormStore, useUIApi, useUIStore } from \"@mieweb/forms-engine\";\r\n\r\nexport default function FormBuilderMain() {\r\n const ui = useUIApi();\r\n const { fields: visibleFields } = useVisibleFields(ui.state.isPreview);\r\n const hideUnsupportedFields = useUIStore((s) => s.hideUnsupportedFields);\r\n const order = useFormStore((s) => s.order);\r\n const containerRef = React.useRef(null);\r\n const previousOrderLengthRef = React.useRef(0);\r\n\r\n const visibleIds = useMemo(() => {\r\n const filtered = hideUnsupportedFields\r\n ? visibleFields.filter(f => f.fieldType !== 'unsupported')\r\n : visibleFields;\r\n return filtered.map(f => f.id);\r\n }, [visibleFields, hideUnsupportedFields]);\r\n\r\n // Auto-scroll and auto-select newly added field (only in edit mode, only when order length increases)\r\n React.useEffect(() => {\r\n if (ui.state.isPreview) return; // Don't auto-select in preview mode\r\n if (order.length > previousOrderLengthRef.current) {\r\n // A field was actually added to the form (order array increased)\r\n const lastFieldId = order[order.length - 1];\r\n const lastField = containerRef.current?.querySelector(`[data-field-id=\"${lastFieldId}\"]`);\r\n if (lastField) {\r\n lastField.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n ui.selectedFieldId.set(lastFieldId);\r\n }\r\n }\r\n previousOrderLengthRef.current = order.length;\r\n }, [order, ui.selectedFieldId, ui.state.isPreview]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={\r\n `form-builder-main \r\n ${ui.state.isPreview ? `mie:max-w-4xl` : `mie:max-w-xl`} \r\n mie:mx-auto mie:rounded-lg mie:overflow-y-auto mie:max-h-[calc(100svh-13rem)] mie:lg:max-h-[calc(100dvh-11rem)] mie:custom-scrollbar mie:lg:pr-2`\r\n }\r\n onClick={() => !ui.state.isPreview && ui.selectedFieldId.clear()}\r\n >\r\n {visibleIds.length === 0\r\n ? <EmptyState />\r\n : visibleIds.map((id) => <FieldRow key={id} id={id} />)}\r\n </div>\r\n );\r\n}\r\n\r\nconst FieldRow = React.memo(function FieldRow({ id }) {\r\n const field = useFormStore(React.useCallback((s) => s.byId[id], [id]));\r\n\r\n if (!field) return null;\r\n\r\n const FieldComponent = getFieldComponent(field.fieldType);\r\n\r\n if (!FieldComponent) return null;\r\n\r\n return (\r\n <div className=\"mie:mb-1.5\" data-field-type={field.fieldType} data-field-id={field.id}>\r\n <FieldComponent field={field} />\r\n </div>\r\n );\r\n});\r\n\r\nfunction EmptyState() {\r\n return (\r\n <div className=\"form-builder-empty-state mie:flex mie:flex-col mie:items-center mie:justify-center mie:h-72 mie:bg-linear-to-br mie:from-gray-50 mie:to-gray-100 mie:border-2 mie:border-dashed mie:border-blue-200 mie:rounded-xl mie:shadow-md mie:text-center mie:px-8 mie:py-10\"\r\n >\r\n <div className=\"empty-state-title mie:text-xl mie:font-semibold mie:text-gray-700 mie:mb-2\">Forms</div>\r\n <div className=\"empty-state-description mie:text-base mie:text-gray-500\">\r\n <div className=\"mie:lg:hidden\">\r\n Tap the <span className=\"mie:font-semibold mie:text-blue-500\">Tool Panel</span> button to add fields.\r\n </div>\r\n <div className=\"mie:hidden mie:lg:block\">\r\n Add fields using the <span className=\"mie:font-semibold mie:text-blue-500\">Tool Panel</span> on the left.<br />\r\n Edit field properties using the <span className=\"mie:font-semibold mie:text-blue-500\">Edit Panel</span> on the right.\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs'\n }\n};\n\nexport { config as default };\n","function curry(fn) {\n return function curried() {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport { curry as default };\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport { isObject as default };\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n return config;\n}\n\n/**\n * logs deprecation message\n */\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport { validators as default, errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport { compose as default };\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport { merge as default };\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\n\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport { CANCELATION_MESSAGE, makeCancelable as default };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\nvar _excluded = [\"monaco\"];\n\n/** the local state of the module */\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n }),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, _excluded);\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n return makeCancelable(wrapperPromise);\n}\n\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n loaderScript.onload = function () {\n return configureLoader();\n };\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n\n/**\n * configures the monaco loader\n */\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n require.config(state.config);\n require(['vs/editor/editor.main'], function (loaded) {\n var monaco = loaded.m /* for 0.53 & 0.54 */ || loaded /* for other versions */;\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n\n/**\n * store monaco instance in local state\n */\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport { loader as default };\n","import _t from\"@monaco-editor/loader\";import{memo as Te}from\"react\";import ke,{useState as re,useRef as S,useCallback as oe,useEffect as ne}from\"react\";import Se from\"@monaco-editor/loader\";import{memo as ye}from\"react\";import K from\"react\";var le={wrapper:{display:\"flex\",position:\"relative\",textAlign:\"initial\"},fullWidth:{width:\"100%\"},hide:{display:\"none\"}},v=le;import me from\"react\";var ae={container:{display:\"flex\",height:\"100%\",width:\"100%\",justifyContent:\"center\",alignItems:\"center\"}},Y=ae;function Me({children:e}){return me.createElement(\"div\",{style:Y.container},e)}var Z=Me;var $=Z;function Ee({width:e,height:r,isEditorReady:n,loading:t,_ref:a,className:m,wrapperProps:E}){return K.createElement(\"section\",{style:{...v.wrapper,width:e,height:r},...E},!n&&K.createElement($,null,t),K.createElement(\"div\",{ref:a,style:{...v.fullWidth,...!n&&v.hide},className:m}))}var ee=Ee;var H=ye(ee);import{useEffect as xe}from\"react\";function Ce(e){xe(e,[])}var k=Ce;import{useEffect as ge,useRef as Re}from\"react\";function he(e,r,n=!0){let t=Re(!0);ge(t.current||!n?()=>{t.current=!1}:e,r)}var l=he;function D(){}function h(e,r,n,t){return De(e,t)||be(e,r,n,t)}function De(e,r){return e.editor.getModel(te(e,r))}function be(e,r,n,t){return e.editor.createModel(r,n,t?te(e,t):void 0)}function te(e,r){return e.Uri.parse(r)}function Oe({original:e,modified:r,language:n,originalLanguage:t,modifiedLanguage:a,originalModelPath:m,modifiedModelPath:E,keepCurrentOriginalModel:g=!1,keepCurrentModifiedModel:N=!1,theme:x=\"light\",loading:P=\"Loading...\",options:y={},height:V=\"100%\",width:z=\"100%\",className:F,wrapperProps:j={},beforeMount:A=D,onMount:q=D}){let[M,O]=re(!1),[T,s]=re(!0),u=S(null),c=S(null),w=S(null),d=S(q),o=S(A),b=S(!1);k(()=>{let i=Se.init();return i.then(f=>(c.current=f)&&s(!1)).catch(f=>f?.type!==\"cancelation\"&&console.error(\"Monaco initialization: error:\",f)),()=>u.current?I():i.cancel()}),l(()=>{if(u.current&&c.current){let i=u.current.getOriginalEditor(),f=h(c.current,e||\"\",t||n||\"text\",m||\"\");f!==i.getModel()&&i.setModel(f)}},[m],M),l(()=>{if(u.current&&c.current){let i=u.current.getModifiedEditor(),f=h(c.current,r||\"\",a||n||\"text\",E||\"\");f!==i.getModel()&&i.setModel(f)}},[E],M),l(()=>{let i=u.current.getModifiedEditor();i.getOption(c.current.editor.EditorOption.readOnly)?i.setValue(r||\"\"):r!==i.getValue()&&(i.executeEdits(\"\",[{range:i.getModel().getFullModelRange(),text:r||\"\",forceMoveMarkers:!0}]),i.pushUndoStop())},[r],M),l(()=>{u.current?.getModel()?.original.setValue(e||\"\")},[e],M),l(()=>{let{original:i,modified:f}=u.current.getModel();c.current.editor.setModelLanguage(i,t||n||\"text\"),c.current.editor.setModelLanguage(f,a||n||\"text\")},[n,t,a],M),l(()=>{c.current?.editor.setTheme(x)},[x],M),l(()=>{u.current?.updateOptions(y)},[y],M);let L=oe(()=>{if(!c.current)return;o.current(c.current);let i=h(c.current,e||\"\",t||n||\"text\",m||\"\"),f=h(c.current,r||\"\",a||n||\"text\",E||\"\");u.current?.setModel({original:i,modified:f})},[n,r,a,e,t,m,E]),U=oe(()=>{!b.current&&w.current&&(u.current=c.current.editor.createDiffEditor(w.current,{automaticLayout:!0,...y}),L(),c.current?.editor.setTheme(x),O(!0),b.current=!0)},[y,x,L]);ne(()=>{M&&d.current(u.current,c.current)},[M]),ne(()=>{!T&&!M&&U()},[T,M,U]);function I(){let i=u.current?.getModel();g||i?.original?.dispose(),N||i?.modified?.dispose(),u.current?.dispose()}return ke.createElement(H,{width:z,height:V,isEditorReady:M,loading:P,_ref:w,className:F,wrapperProps:j})}var ie=Oe;var we=Te(ie);import{useState as Ie}from\"react\";import ce from\"@monaco-editor/loader\";function Pe(){let[e,r]=Ie(ce.__getMonacoInstance());return k(()=>{let n;return e||(n=ce.init(),n.then(t=>{r(t)})),()=>n?.cancel()}),e}var Le=Pe;import{memo as ze}from\"react\";import We,{useState as ue,useEffect as W,useRef as C,useCallback as _e}from\"react\";import Ne from\"@monaco-editor/loader\";import{useEffect as Ue,useRef as ve}from\"react\";function He(e){let r=ve();return Ue(()=>{r.current=e},[e]),r.current}var se=He;var _=new Map;function Ve({defaultValue:e,defaultLanguage:r,defaultPath:n,value:t,language:a,path:m,theme:E=\"light\",line:g,loading:N=\"Loading...\",options:x={},overrideServices:P={},saveViewState:y=!0,keepCurrentModel:V=!1,width:z=\"100%\",height:F=\"100%\",className:j,wrapperProps:A={},beforeMount:q=D,onMount:M=D,onChange:O,onValidate:T=D}){let[s,u]=ue(!1),[c,w]=ue(!0),d=C(null),o=C(null),b=C(null),L=C(M),U=C(q),I=C(),i=C(t),f=se(m),Q=C(!1),B=C(!1);k(()=>{let p=Ne.init();return p.then(R=>(d.current=R)&&w(!1)).catch(R=>R?.type!==\"cancelation\"&&console.error(\"Monaco initialization: error:\",R)),()=>o.current?pe():p.cancel()}),l(()=>{let p=h(d.current,e||t||\"\",r||a||\"\",m||n||\"\");p!==o.current?.getModel()&&(y&&_.set(f,o.current?.saveViewState()),o.current?.setModel(p),y&&o.current?.restoreViewState(_.get(m)))},[m],s),l(()=>{o.current?.updateOptions(x)},[x],s),l(()=>{!o.current||t===void 0||(o.current.getOption(d.current.editor.EditorOption.readOnly)?o.current.setValue(t):t!==o.current.getValue()&&(B.current=!0,o.current.executeEdits(\"\",[{range:o.current.getModel().getFullModelRange(),text:t,forceMoveMarkers:!0}]),o.current.pushUndoStop(),B.current=!1))},[t],s),l(()=>{let p=o.current?.getModel();p&&a&&d.current?.editor.setModelLanguage(p,a)},[a],s),l(()=>{g!==void 0&&o.current?.revealLine(g)},[g],s),l(()=>{d.current?.editor.setTheme(E)},[E],s);let X=_e(()=>{if(!(!b.current||!d.current)&&!Q.current){U.current(d.current);let p=m||n,R=h(d.current,t||e||\"\",r||a||\"\",p||\"\");o.current=d.current?.editor.create(b.current,{model:R,automaticLayout:!0,...x},P),y&&o.current.restoreViewState(_.get(p)),d.current.editor.setTheme(E),g!==void 0&&o.current.revealLine(g),u(!0),Q.current=!0}},[e,r,n,t,a,m,x,P,y,E,g]);W(()=>{s&&L.current(o.current,d.current)},[s]),W(()=>{!c&&!s&&X()},[c,s,X]),i.current=t,W(()=>{s&&O&&(I.current?.dispose(),I.current=o.current?.onDidChangeModelContent(p=>{B.current||O(o.current.getValue(),p)}))},[s,O]),W(()=>{if(s){let p=d.current.editor.onDidChangeMarkers(R=>{let G=o.current.getModel()?.uri;if(G&&R.find(J=>J.path===G.path)){let J=d.current.editor.getModelMarkers({resource:G});T?.(J)}});return()=>{p?.dispose()}}return()=>{}},[s,T]);function pe(){I.current?.dispose(),V?y&&_.set(m,o.current.saveViewState()):o.current.getModel()?.dispose(),o.current.dispose()}return We.createElement(H,{width:z,height:F,isEditorReady:s,loading:N,_ref:b,className:j,wrapperProps:A})}var fe=Ve;var de=ze(fe);var Ft=de;export{we as DiffEditor,de as Editor,Ft as default,_t as loader,Le as useMonaco};\n//# sourceMappingURL=index.mjs.map","import React from \"react\";\r\nimport Editor from \"@monaco-editor/react\";\r\nimport { useFormStore, useFormData, useUIApi, parseAndDetect, adaptSchema, MIE_FORMS_SCHEMA_TYPE, useAlert } from \"@mieweb/forms-engine\";\r\nimport YAML from \"js-yaml\";\r\n\r\nexport default function CodeEditor() {\r\n const formData = useFormData();\r\n const replaceAll = useFormStore((s) => s.replaceAll);\r\n const ui = useUIApi();\r\n const { showAlert } = useAlert();\r\n const containerRef = React.useRef(null);\r\n const codeRef = React.useRef(\"\");\r\n const editorRef = React.useRef(null);\r\n const hasUnsavedChanges = React.useRef(false);\r\n \r\n const [format, setFormat] = React.useState(\"yaml\"); // \"json\" or \"yaml\"\r\n const [editorHeight, setEditorHeight] = React.useState(640);\r\n const [code, setCode] = React.useState(() => {\r\n try {\r\n return YAML.dump(formData, { indent: 2, lineWidth: -1 });\r\n } catch {\r\n return \"\";\r\n }\r\n });\r\n const [error, setError] = React.useState(\"\");\r\n\r\n // Clear error state on mount if we have valid initial code\r\n React.useEffect(() => {\r\n ui.setCodeEditorHasError(false);\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Parse code based on format\r\n const parseCode = React.useCallback((codeText) => {\r\n if (format === \"json\") {\r\n return JSON.parse(codeText);\r\n } else {\r\n return YAML.load(codeText);\r\n }\r\n }, [format]);\r\n\r\n // Serialize data to code based on format\r\n const serializeData = React.useCallback((data) => {\r\n if (format === \"json\") {\r\n return JSON.stringify(data, null, 2);\r\n } else {\r\n return YAML.dump(data, { indent: 2, lineWidth: -1 });\r\n }\r\n }, [format]);\r\n\r\n // Calculate available height on mount and resize\r\n React.useEffect(() => {\r\n const calculateHeight = () => {\r\n if (containerRef.current) {\r\n const containerTop = containerRef.current.getBoundingClientRect().top;\r\n const availableHeight = window.innerHeight - containerTop - 20; // 20px bottom margin\r\n setEditorHeight(Math.max(400, availableHeight)); // min 400px\r\n }\r\n };\r\n\r\n calculateHeight();\r\n window.addEventListener(\"resize\", calculateHeight);\r\n return () => window.removeEventListener(\"resize\", calculateHeight);\r\n }, []);\r\n\r\n // Update code when formData changes (syncing from visual editor)\r\n React.useEffect(() => {\r\n // Don't overwrite if user has unsaved pasted content\r\n if (hasUnsavedChanges.current) return;\r\n \r\n try {\r\n const newCode = serializeData(formData);\r\n setCode(newCode);\r\n codeRef.current = newCode;\r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n setError(`Failed to serialize: ${err.message}`);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n }, [formData, serializeData, ui]);\r\n\r\n const handleCodeChange = (value) => {\r\n setCode(value || \"\");\r\n codeRef.current = value || \"\";\r\n hasUnsavedChanges.current = true;\r\n \r\n // Live validation\r\n try {\r\n const parsed = parseCode(value || \"{}\");\r\n \r\n if (!parsed || typeof parsed !== \"object\") {\r\n throw new Error(\"Invalid form data: must be an object\");\r\n }\r\n \r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n const errorMsg = `Invalid ${format.toUpperCase()}: ${err.message}`;\r\n setError(errorMsg);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n };\r\n\r\n const handleEditorDidMount = (editor) => {\r\n editorRef.current = editor;\r\n \r\n // Listen for paste events\r\n editor.onDidPaste((e) => {\r\n const beforePaste = code;\r\n const fullText = editor.getModel().getValue();\r\n \r\n try {\r\n const parsed = parseCode(fullText);\r\n \r\n if (parsed && typeof parsed === \"object\") {\r\n const { schemaType } = parseAndDetect(parsed);\r\n \r\n if (schemaType === 'surveyjs') {\r\n showAlert(\r\n `This SurveyJS schema will be converted to MIE Forms format.\\n\\nDo you want to proceed with the conversion?`,\r\n {\r\n title: 'ℹ️ SurveyJS Schema Detected',\r\n confirmText: 'Yes, Convert',\r\n cancelText: 'No, Cancel Paste',\r\n onConfirm: () => {\r\n const { fields, conversionReport } = adaptSchema(parsed, schemaType);\r\n const finalSchema = {\r\n schemaType: parsed.schemaType || MIE_FORMS_SCHEMA_TYPE,\r\n ...(conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n \r\n replaceAll(finalSchema);\r\n \r\n const convertedCode = serializeData(finalSchema);\r\n setCode(convertedCode);\r\n codeRef.current = convertedCode;\r\n editor.setValue(convertedCode);\r\n setError(\"\");\r\n hasUnsavedChanges.current = false;\r\n \r\n if (conversionReport) {\r\n ui.setConversionReport(conversionReport);\r\n setTimeout(() => {\r\n const unsupportedCount = conversionReport?.unsupportedFields?.length || 0;\r\n showAlert(\r\n `This schema has been converted to MIE Forms format.\\n\\n` +\r\n `Converted: ${conversionReport?.convertedFields || 0} field(s)\\n` +\r\n `Unsupported: ${unsupportedCount} field(s)${unsupportedCount > 0 ? ' ⚠️' : ''}\\n\\n` +\r\n `Please use MIE Forms schema inside of code editor for the best experience in the future.`,\r\n { title: 'ℹ️ SurveyJS Schema Detected' }\r\n );\r\n }, 100);\r\n }\r\n },\r\n onCancel: () => {\r\n editor.setValue(beforePaste);\r\n setCode(beforePaste);\r\n codeRef.current = beforePaste;\r\n }\r\n }\r\n );\r\n }\r\n }\r\n } catch (err) {\r\n // Invalid JSON/YAML - ignore, validation will handle it\r\n }\r\n });\r\n };\r\n\r\n const handleFormatChange = (newFormat) => {\r\n try {\r\n const currentData = parseCode(code);\r\n const newCode = newFormat === \"json\"\r\n ? JSON.stringify(currentData, null, 2)\r\n : YAML.dump(currentData, { indent: 2, lineWidth: -1 });\r\n \r\n setCode(newCode);\r\n codeRef.current = newCode;\r\n setFormat(newFormat);\r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n setError(`Cannot convert: ${err.message}`);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n };\r\n\r\n // Auto-save when switching away from code editor (component unmounting)\r\n React.useEffect(() => {\r\n return () => {\r\n const currentCode = codeRef.current?.trim();\r\n \r\n if (!currentCode) {\r\n replaceAll({ schemaType: MIE_FORMS_SCHEMA_TYPE, fields: [] });\r\n hasUnsavedChanges.current = false;\r\n return;\r\n }\r\n\r\n try {\r\n const parsed = parseCode(currentCode);\r\n\r\n if (!parsed || typeof parsed !== \"object\") return;\r\n\r\n // Compare with current formData - only save if different\r\n if (JSON.stringify(formData) === JSON.stringify(parsed)) return;\r\n\r\n const { schemaType } = parseAndDetect(parsed);\r\n const { fields, conversionReport } = adaptSchema(parsed, schemaType);\r\n\r\n const finalSchema = {\r\n schemaType: parsed.schemaType || MIE_FORMS_SCHEMA_TYPE,\r\n ...(conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n\r\n if (conversionReport) {\r\n ui.setConversionReport(conversionReport);\r\n }\r\n\r\n replaceAll(finalSchema);\r\n ui.setCodeEditorHasError(false);\r\n hasUnsavedChanges.current = false;\r\n } catch (err) {\r\n // Silently fail - error already shown in editor header\r\n }\r\n };\r\n }, [parseCode, replaceAll, ui, formData]);\r\n\r\n return (\r\n <div ref={containerRef} className=\"code-editor-container mie:flex mie:flex-col mie:bg-gray-50 mie:max-w-7xl mie:w-full\" style={{ height: `${editorHeight}px` }}>\r\n {/* Header with format toggle and save button */}\r\n <div className=\"code-editor-header mie:flex mie:items-center mie:justify-between mie:gap-3 mie:p-4 mie:bg-white mie:border-b mie:border-black/10\">\r\n <div className=\"mie:flex mie:items-center mie:gap-2\">\r\n <div className=\"mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-black/10 mie:bg-black/5 mie:p-1\">\r\n <button\r\n onClick={() => handleFormatChange(\"yaml\")}\r\n className={`mie:px-3 mie:py-1 mie:rounded-md mie:text-sm mie:font-medium mie:transition-colors ${\r\n format === \"yaml\"\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n >\r\n YAML\r\n </button>\r\n <button\r\n onClick={() => handleFormatChange(\"json\")}\r\n className={`mie:px-3 mie:py-1 mie:rounded-md mie:text-sm mie:font-medium mie:transition-colors ${\r\n format === \"json\"\r\n ? \"mie:bg-white mie:text-slate-900 mie:shadow-sm\"\r\n : \"mie:text-slate-600 mie:hover:text-slate-900\"\r\n }`}\r\n >\r\n JSON\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mie:flex mie:items-center mie:gap-2\">\r\n <div className=\"mie:text-xs mie:text-gray-500 mie:px-3 mie:py-1\">\r\n Auto-saves when switching tabs\r\n </div>\r\n {error && (\r\n <div className=\"mie:text-xs mie:text-red-600 mie:bg-red-50 mie:px-3 mie:py-1 mie:rounded-lg\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Editor */}\r\n <div className=\"code-editor-content mie:flex-1 mie:overflow-hidden\">\r\n <Editor\r\n height=\"100%\"\r\n language={format}\r\n value={code}\r\n onChange={handleCodeChange}\r\n onMount={handleEditorDidMount}\r\n theme=\"light\"\r\n options={{\r\n minimap: { enabled: false },\r\n fontSize: 13,\r\n lineHeight: 1.5,\r\n wordWrap: \"on\",\r\n formatOnPaste: true,\r\n formatOnType: true,\r\n tabSize: 2,\r\n automaticLayout: true,\r\n scrollBeyondLastLine: false,\r\n padding: { top: 16 },\r\n contextmenu: true,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport ToolPanel from \"./toolPanel/ToolPanel\";\r\nimport EditPanel from \"./editPanel/EditPanel\";\r\nimport FormBuilderMain from \"../FormBuilderMain\";\r\nimport CodeEditor from \"../CodeEditor\";\r\nimport { useUIApi } from \"@mieweb/forms-engine\";\r\n\r\nexport default function Layout({ selectedField }) {\r\n const ui = useUIApi();\r\n const [isMobileToolPanelOpen, setIsMobileToolPanelOpen] = React.useState(false);\r\n\r\n const isPreview = ui.state.isPreview;\r\n const isCodeEditor = ui.state.isCodeEditor;\r\n const isEditModalOpen = ui.state.isEditModalOpen;\r\n const panelResetKey = ui.state.panelResetKey;\r\n\r\n const editMode = !isPreview;\r\n\r\n return (\r\n <div className=\"layout-container mie:w-full mie:h-fit mie:rounded-lg mie:mt-2 mie:md:mt-4 mie:lg:mt-6\">\r\n {isCodeEditor ? (\r\n <div className=\"mie:border mie:border-gray-200 mie:rounded-lg\">\r\n <CodeEditor />\r\n </div>\r\n\r\n ) : (\r\n <div className={`layout-grid mie:flex mie:lg:gap-3 mie:h-full`}>\r\n {editMode && (\r\n <div className=\"layout-tool-panel mie:hidden mie:lg:block mie:lg:w-72\">\r\n <ToolPanel />\r\n </div>\r\n )}\r\n\r\n <div className=\"layout-main-content mie:flex-1 mie:min-w-0\">\r\n <FormBuilderMain />\r\n </div>\r\n\r\n {editMode && (\r\n <div className=\"layout-edit-panel mie:hidden mie:lg:block mie:lg:w-90 mie:md:w-80\">\r\n <EditPanel key={panelResetKey} />\r\n </div>\r\n )}\r\n\r\n {editMode && (\r\n <div className=\"layout-mobile-modal mie:lg:hidden\">\r\n {isEditModalOpen && selectedField && (\r\n <>\r\n <div\r\n className=\"mie:fixed mie:inset-0 mie:z-40 mie:bg-black/30 mie:lg:hidden\"\r\n onClick={() => ui.modal.set(false)}\r\n />\r\n <div className=\"mie:fixed mie:bottom-0 mie:left-0 mie:right-0 mie:z-50 mie:bg-white mie:rounded-t-2xl mie:shadow-2xl mie:max-h-[60vh] mie:overflow-y-auto mie:custom-scrollbar mie:lg:hidden\">\r\n <EditPanel key={panelResetKey} isMobileModal={true} />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Mobile Tool Panel - Slides up above keyboard */}\r\n {editMode && !isCodeEditor && (\r\n <>\r\n {/* Floating button to open mobile tool panel */}\r\n <button\r\n onClick={() => setIsMobileToolPanelOpen(!isMobileToolPanelOpen)}\r\n className=\"mie:lg:hidden mie:fixed mie:bottom-5 mie:left-5 mie:z-40 mie:bg-blue-500 mie:hover:bg-blue-600 mie:text-white mie:rounded-full mie:w-12 mie:h-12 mie:flex mie:items-center mie:justify-center mie:shadow-lg mie:transition-all\"\r\n title=\"Add field\"\r\n >\r\n <svg className=\"mie:w-6 mie:h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\r\n </svg>\r\n </button>\r\n\r\n {/* Mobile Tool Panel Sheet */}\r\n {isMobileToolPanelOpen && (\r\n <>\r\n <div className=\"mie:fixed mie:inset-0 mie:z-40 mie:bg-black/30 mie:lg:hidden\"\r\n onClick={() => setIsMobileToolPanelOpen(false)}\r\n />\r\n <div className=\"mie:fixed mie:bottom-0 mie:left-0 mie:right-0 mie:z-50 mie:bg-white mie:rounded-t-2xl mie:shadow-2xl mie:max-h-[60vh] mie:overflow-y-auto mie:custom-scrollbar mie:lg:hidden\">\r\n <ToolPanel />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport Header from './components/Header.jsx';\r\nimport Layout from './components/desktopLayout/Layout.jsx';\r\n\r\nimport {\r\n FormStoreContext,\r\n UIStoreContext,\r\n createFormStore,\r\n createUIStore,\r\n useUIApi,\r\n adaptSchema,\r\n parseAndDetect,\r\n AlertProvider,\r\n} from '@mieweb/forms-engine';\r\nimport { useStore } from 'zustand';\r\nimport './index.css';\r\n\r\n/**\r\n * QuestionnaireEditor - Interactive questionnaire builder/editor\r\n * @param {string|object} initialFormData - YAML string, JSON string, or form data object\r\n * @param {string} [schemaType] - Optional: 'mieforms' or 'surveyjs' (auto-detected if not provided)\r\n * @param {function} [onChange] - Callback fired when form data changes\r\n * @param {string} [className] - Additional CSS classes\r\n * @param {boolean} [showHeader=true] - Show editor header\r\n * @param {boolean} [startInPreview=false] - Start in preview mode\r\n * @param {boolean} [hideUnsupportedFields=false] - Hide unsupported field types\r\n */\r\nfunction QuestionnaireEditorInner({\r\n initialFormData,\r\n schemaType,\r\n onChange,\r\n className = '',\r\n showHeader = true,\r\n startInPreview = false,\r\n hideUnsupportedFields = false,\r\n}) {\r\n const [codeFormat, setCodeFormat] = React.useState(\"json\");\r\n const ui = useUIApi();\r\n const formStoreInitialized = React.useRef(false);\r\n const formStore = React.useContext(FormStoreContext);\r\n\r\n React.useEffect(() => {\r\n if (formStoreInitialized.current || !formStore) return;\r\n if (initialFormData) {\r\n try {\r\n const { data, schemaType: detectedType } = parseAndDetect(initialFormData, schemaType);\r\n const result = adaptSchema(data, detectedType);\r\n \r\n if (result.conversionReport) {\r\n ui.setConversionReport(result.conversionReport);\r\n }\r\n \r\n const schemaObject = {\r\n schemaType: detectedType === 'surveyjs' ? 'mieforms-v1.0' : (data.schemaType || 'mieforms-v1.0'),\r\n fields: result.fields || []\r\n };\r\n \r\n // Preserve original metadata for SurveyJS schemas\r\n if (detectedType === 'surveyjs' && result.conversionReport?.surveyMetadata) {\r\n Object.assign(schemaObject, result.conversionReport.surveyMetadata);\r\n } else if (detectedType === 'mieforms') {\r\n // For MIE Forms, preserve any metadata that's not fields or schemaType\r\n const { fields: _f, schemaType: _st, ...metadata } = data;\r\n if (Object.keys(metadata).length > 0) {\r\n Object.assign(schemaObject, metadata);\r\n }\r\n }\r\n \r\n if (Array.isArray(schemaObject.fields) && schemaObject.fields.length) {\r\n formStore.getState().replaceAll(schemaObject);\r\n }\r\n } catch {\r\n formStore.getState().replaceAll({ schemaType: 'mieforms-v1.0', fields: [] });\r\n }\r\n }\r\n ui.preview.set(!!startInPreview);\r\n formStoreInitialized.current = true;\r\n }, [initialFormData, schemaType, startInPreview, ui, formStore]);\r\n\r\n React.useEffect(() => {\r\n ui.setHideUnsupportedFields(hideUnsupportedFields);\r\n }, [hideUnsupportedFields, ui]);\r\n\r\n React.useEffect(() => {\r\n if (!onChange || !formStore) return;\r\n return formStore.subscribe((s) => {\r\n onChange({\r\n schemaType: s.schemaType || 'mieforms-v1.0',\r\n ...s.schemaMetadata,\r\n fields: s.order.map(id => s.byId[id])\r\n });\r\n });\r\n }, [onChange, formStore]);\r\n\r\n const selectedField = useStore(formStore, (s) => \r\n ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null\r\n );\r\n\r\n return (\r\n <div className={`qb-editor-root editor-container mie:w-full mie:max-w-7xl mie:mx-auto mie:bg-gray-100 mie:font-titillium ${className}`}>\r\n {showHeader && <Header codeFormat={codeFormat} onCodeFormatChange={setCodeFormat} />}\r\n <Layout selectedField={selectedField} codeFormat={codeFormat} />\r\n </div>\r\n );\r\n}\r\n\r\nexport function QuestionnaireEditor(props) {\r\n const formStore = React.useRef(createFormStore()).current;\r\n const uiStore = React.useRef(createUIStore()).current;\r\n\r\n return (\r\n <AlertProvider>\r\n <FormStoreContext.Provider value={formStore}>\r\n <UIStoreContext.Provider value={uiStore}>\r\n <QuestionnaireEditorInner {...props} />\r\n </UIStoreContext.Provider>\r\n </FormStoreContext.Provider>\r\n </AlertProvider>\r\n );\r\n}\r\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","Header","showSchemaConfirm","setShowSchemaConfirm","pendingImport","setPendingImport","replaceAll","useFormStore","s","formData","useFormData","showAlert","useAlert","ui","useUIApi","isPreview","isCodeEditor","codeEditorHasError","handleFileSelect","fileContent","text","data","schemaType","parseAndDetect","err","confirmImport","confirmedSchemaType","result","adaptSchema","fields","schemaObject","_f","_st","metadata","report","unsupportedCount","cancelImport","onEdit","onCodeEditor","onPreview","onExport","json","blob","url","a","jsxs","jsx","VEDITOR_ICON","CODE_ICON","PICTURE_ICON","UPLOAD_ICON","e","file","reader","ev","DOWNLOAD_ICON","getCategoryIcon","categoryName","TEXTINPUT_ICON","FOLDERS_ICON","SELECTINPUT_ICON","RANKING_ICON","MATRIX_ICON","PAPERCLIP_ICON","ToolPanelImpl","addField","selectedField","useCallback","isSectionSelected","sectionTitle","handleClearSelection","handleKeyDown","categories","useMemo","fieldTypes","category","handlers","m","items","TOOLS_ICON","X_ICON","IconComponent","label","isDisabled","ToolPanel","prev","next","DraftIdEditor","id","onCommit","validate","placeholder","className","draft","setDraft","setErr","commit","msg","INPUT_TYPES","UNITS","InputTypeEditor","field","onUpdate","inputType","unit","showUnitSelector","units","u","CommonEditor","f","onUpdateField","byId","validateId","newId","oldId","allIds","child","OptionListEditor","api","opts","isBoolean","isMultitext","containerRef","prevCountRef","singular","lastChild","opt","TRASHCANTWO_ICON","MatrixEditor","rows","columns","rowsContainerRef","colsContainerRef","prevRowCountRef","prevColCountRef","row","col","NonSectionEditor","useFormApi","fieldConfig","hasOptions","hasMatrix","Fragment","SectionEditor","section","onActiveChildChange","sectionApi","formStore","FormStoreContext","globalParentId","globalChildId","initialChildId","c","activeChildId","setActiveChildId","prevGlobalChildIdRef","handleChildSelect","childId","getFieldLabel","onUpdateSection","activeChild","childApi","validChildApi","onUpdateChild","curr","onDeleteChild","hasOptionsChild","hasMatrixChild","ARROWDOWN_ICON","getOperatorsForFieldType","fieldType","displayFormat","NUMERIC_EXPRESSION_FORMATS","getPropertyAccessorsForFieldType","getOperatorLabel","op","normOption","LogicEditor","setEnableWhen","updateField","selectedId","rawChildId","isSectionCtx","sectionChildren","childValidForSection","initialTarget","target","setTarget","handleTargetChange","newTarget","cid","isChildScope","effectiveChildId","effectiveId","targets","out","sectTitle","findTarget","tid","t","writeEnableWhen","normalized","ew","addCond","clear","removeCond","idx","nextConds","_","i","updateCond","patch","updated","meta","ops","o","filteredTargets","allowedOps","propertyAccessors","hasPropertyAccessors","optList","needsValue","isNumericComparison","prop","EditPanel","isMobileModal","tab","setTab","handleActiveChildChange","sectionId","isNone","isSection","EDIT_ICON","EYEEDIT_ICON","FormBuilderMain","visibleFields","useVisibleFields","hideUnsupportedFields","useUIStore","order","previousOrderLengthRef","visibleIds","lastFieldId","lastField","EmptyState","FieldRow","FieldComponent","getFieldComponent","_arrayLikeToArray","r","_arrayWithHoles","_defineProperty","_toPropertyKey","_iterableToArrayLimit","l","n","_nonIterableRest","ownKeys","_objectSpread2","_objectWithoutProperties","_objectWithoutPropertiesLoose","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","obj","enumerableOnly","symbols","sym","source","compose","_len","fns","_key","x","y","curry","fn","curried","_this","_len2","args","_key2","_len3","nextArgs","_key3","isObject","isEmpty","isFunction","property","validateChanges","initial","changes","errorHandler","validateSelector","selector","validateHandler","handler","_handler","validateInitial","throwError","errorMessages","validators","create","state","didUpdate","didStateUpdate","update","updateState","getChanges","extractChanges","getState","setState","causedChanges","_handler$field","index","validateConfig","informAboutDeprecation","merge","CANCELATION_MESSAGE","makeCancelable","promise","hasCanceled_","wrappedPromise","resolve","reject","val","_excluded","_state$create","config$1","_state$create2","globalConfig","_validators$config","monaco","init","_ref","isInitialized","wrapperPromise","storeMonacoInstance","injectScripts","getMonacoLoaderScript","configureLoader","script","createScript","src","_ref2","loaderScript","_ref3","require","loaded","error","__getMonacoInstance","_ref4","loader","le","v","ae","Y","Me","me","Z","$","Ee","E","K","ee","H","ye","Ce","xe","he","Re","ge","D","h","De","be","te","Oe","g","N","P","V","z","F","j","A","q","M","O","re","S","w","d","b","Se","I","L","oe","U","ne","ke","ie","Te","He","ve","Ue","se","Ve","ue","C","Q","B","p","Ne","R","pe","X","_e","W","G","J","We","fe","de","ze","Ft","CodeEditor","codeRef","editorRef","hasUnsavedChanges","format","setFormat","editorHeight","setEditorHeight","code","setCode","YAML","setError","parseCode","codeText","serializeData","calculateHeight","containerTop","availableHeight","newCode","handleCodeChange","parsed","errorMsg","handleEditorDidMount","editor","beforePaste","fullText","conversionReport","finalSchema","MIE_FORMS_SCHEMA_TYPE","convertedCode","handleFormatChange","newFormat","currentData","currentCode","Editor","Layout","isMobileToolPanelOpen","setIsMobileToolPanelOpen","isEditModalOpen","panelResetKey","editMode","QuestionnaireEditorInner","initialFormData","onChange","showHeader","startInPreview","codeFormat","setCodeFormat","formStoreInitialized","detectedType","useStore","QuestionnaireEditor","createFormStore","uiStore","createUIStore","AlertProvider","UIStoreContext"],"mappings":"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","x_google_ignoreList":[0,1,2,15,16,17,18,19,20,21,22,23,24,25]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/jsx-runtime.js","../src/components/Header.jsx","../src/components/desktopLayout/toolPanel/ToolPanel.jsx","../src/components/desktopLayout/editPanel/types/DraftIdEditor.jsx","../src/components/desktopLayout/editPanel/types/InputTypeEditor.jsx","../src/components/desktopLayout/editPanel/types/CommonEditor.jsx","../src/components/desktopLayout/editPanel/types/OptionListEditor.jsx","../src/components/desktopLayout/editPanel/types/MatrixEditor.jsx","../src/components/desktopLayout/editPanel/types/NonSectionEditor.jsx","../src/components/desktopLayout/editPanel/types/SectionEditor.jsx","../src/components/desktopLayout/editPanel/types/LogicEditor.jsx","../src/components/desktopLayout/editPanel/EditPanel.jsx","../src/components/FormBuilderMain.jsx","../../../node_modules/@monaco-editor/loader/lib/es/_virtual/_rollupPluginBabelHelpers.js","../../../node_modules/state-local/lib/es/state-local.js","../../../node_modules/@monaco-editor/loader/lib/es/config/index.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/curry.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/isObject.js","../../../node_modules/@monaco-editor/loader/lib/es/validators/index.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/compose.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/deepMerge.js","../../../node_modules/@monaco-editor/loader/lib/es/utils/makeCancelable.js","../../../node_modules/@monaco-editor/loader/lib/es/loader/index.js","../../../node_modules/@monaco-editor/react/dist/index.mjs","../src/components/CodeEditor.jsx","../src/components/desktopLayout/Layout.jsx","../src/QuestionnaireEditor.jsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React from \"react\";\r\nimport { useFormStore, useFormData, useUIApi, adaptSchema, parseAndDetect, useAlert, CODE_ICON, VEDITOR_ICON, PICTURE_ICON, UPLOAD_ICON, DOWNLOAD_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function Header() {\r\n const [showSchemaConfirm, setShowSchemaConfirm] = React.useState(false);\r\n const [pendingImport, setPendingImport] = React.useState(null);\r\n const replaceAll = useFormStore((s) => s.replaceAll);\r\n const formData = useFormData(); // Get complete form data with metadata\r\n const { showAlert } = useAlert();\r\n\r\n const ui = useUIApi();\r\n const isPreview = ui.state.isPreview;\r\n const isCodeEditor = ui.state.isCodeEditor ?? false;\r\n const codeEditorHasError = ui.state.codeEditorHasError ?? false;\r\n\r\n // ────────── Import handler with auto-detection ──────────\r\n const handleFileSelect = (fileContent) => {\r\n try {\r\n const text = String(fileContent).replace(/^\\uFEFF/, \"\").trim();\r\n const { data, schemaType } = parseAndDetect(text);\r\n\r\n if (schemaType !== 'mieforms' && schemaType !== 'surveyjs') {\r\n showAlert(\r\n `Expected: MIE Forms or SurveyJS\\nDetected: ${schemaType}`,\r\n { title: 'Unsupported Schema Format' }\r\n );\r\n return;\r\n }\r\n\r\n setPendingImport({ data, detectedSchemaType: schemaType });\r\n setShowSchemaConfirm(true);\r\n } catch (err) {\r\n showAlert(\r\n err?.message || \"Invalid file format\",\r\n { title: 'Failed to Parse File' }\r\n );\r\n }\r\n };\r\n\r\n const confirmImport = (confirmedSchemaType) => {\r\n if (!pendingImport) return;\r\n\r\n try {\r\n const { data } = pendingImport;\r\n const result = adaptSchema(data, confirmedSchemaType);\r\n const fields = result.fields || [];\r\n\r\n if (!Array.isArray(fields)) {\r\n throw new Error(\"Expected array of fields\");\r\n }\r\n\r\n if (result.conversionReport) {\r\n ui.setConversionReport(result.conversionReport);\r\n }\r\n\r\n const schemaObject = {\r\n schemaType: confirmedSchemaType === 'surveyjs' ? 'mieforms-v1.0' : (data.schemaType || 'mieforms-v1.0'),\r\n ...(result.conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n\r\n // For MIE Forms schemas, preserve any extra metadata that's not in surveyMetadata\r\n if (confirmedSchemaType === 'mieforms') {\r\n // For MIE Forms, preserve any metadata that's not fields or schemaType\r\n const { fields: _f, schemaType: _st, ...metadata } = data;\r\n if (Object.keys(metadata).length > 0) {\r\n Object.assign(schemaObject, metadata);\r\n }\r\n }\r\n\r\n replaceAll(schemaObject);\r\n ui.selectedFieldId.clear();\r\n ui.preview.set(false);\r\n\r\n // Show conversion details for SurveyJS imports\r\n if (confirmedSchemaType === 'surveyjs' && result.conversionReport) {\r\n const report = result.conversionReport;\r\n const unsupportedCount = report.unsupportedFields?.length || 0;\r\n showAlert(\r\n `Format: SurveyJS → MIE Forms\\n\\n` +\r\n `Converted: ${report.convertedFields || 0} field(s)\\n` +\r\n `Unsupported: ${unsupportedCount} field(s)${unsupportedCount > 0 ? ' ⚠️' : ''}`,\r\n { title: '✅ Import Successful' }\r\n );\r\n } else {\r\n showAlert(\r\n `Format: ${confirmedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}\\nLoaded ${fields.length} field(s)`,\r\n { title: '✅ Import Successful' }\r\n );\r\n }\r\n\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n } catch (err) {\r\n showAlert(\r\n err?.message || \"Invalid format\",\r\n { title: 'Import Failed' }\r\n );\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n }\r\n };\r\n\r\n const cancelImport = () => {\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n };\r\n\r\n // ────────── Preview/Edit toggles ──────────\r\n const onEdit = () => {\r\n ui.preview.set(false);\r\n ui.codeEditor.set(false);\r\n };\r\n\r\n const onCodeEditor = () => {\r\n ui.preview.set(false);\r\n ui.codeEditor.set(true);\r\n };\r\n\r\n const onPreview = () => {\r\n ui.preview.set(true);\r\n ui.codeEditor.set(false);\r\n ui.selectedFieldId.clear();\r\n };\r\n\r\n const onExport = () => {\r\n const json = JSON.stringify(formData, null, 2);\r\n const blob = new Blob([json], { type: \"application/json\" });\r\n const url = URL.createObjectURL(blob);\r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = \"questionnaire.json\";\r\n a.click();\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n return (\r\n <header className=\"editor-header mie:w-full mie:bg-miesurface mie:border mie:border-mieborder mie:rounded-lg mie:shadow-sm\">\r\n <div className=\"mie:px-4 mie:py-4\">\r\n {/* View Mode Tabs + Import/Export */}\r\n <div className=\"mie:flex mie:flex-wrap mie:items-center mie:justify-between mie:gap-3\">\r\n <div className=\"header-mode-toggle mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-mieborder mie:bg-miebackground mie:p-1 mie:w-fit\">\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n !isPreview && !isCodeEditor\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : codeEditorHasError\r\n ? \"mie:bg-transparent mie:text-mietextmuted/50 mie:cursor-not-allowed\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n onClick={onEdit}\r\n disabled={codeEditorHasError}\r\n title={codeEditorHasError ? \"Fix code errors before switching\" : \"Visual Editor\"}\r\n >\r\n <VEDITOR_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Build</span>\r\n </button>\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${isCodeEditor\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n onClick={onCodeEditor}\r\n title=\"Code Editor\"\r\n >\r\n <CODE_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Code</span>\r\n </button>\r\n <button\r\n className={`mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-2 mie:lg:px-4 mie:py-2 mie:lg:py-2 mie:rounded-lg mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n isPreview\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : codeEditorHasError\r\n ? \"mie:bg-transparent mie:text-mietextmuted/50 mie:cursor-not-allowed\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n onClick={onPreview}\r\n disabled={codeEditorHasError}\r\n title={codeEditorHasError ? \"Fix code errors before switching\" : \"Preview Form\"}\r\n >\r\n <PICTURE_ICON className=\"mie:w-5 mie:h-5\" />\r\n <span>Preview</span>\r\n </button>\r\n </div>\r\n\r\n <div className=\"header-actions mie:flex mie:gap-1 mie:items-center\">\r\n <label className=\"header-import-label mie:group mie:px-2 mie:py-2 mie:lg:px-3 mie:lg:py-2 mie:rounded-lg mie:border mie:border-mieborder mie:bg-miesurface mie:hover:bg-mieprimary mie:hover:text-mietextsecondary mie:hover:border-mieprimary mie:cursor-pointer mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:flex mie:items-center mie:lg:gap-2 mie:gap-0 mie:text-mietext\">\r\n <UPLOAD_ICON className=\"mie:w-4 mie:h-4 mie:lg:w-4 mie:lg:h-4 mie:text-mietext mie:group-hover:text-mietextsecondary mie:transition-colors\" />\r\n <span className=\"mie:hidden min-[445px]:inline\">Import</span>\r\n <input\r\n className=\"mie:hidden\"\r\n type=\"file\"\r\n accept=\".json,.yaml,.yml,application/json,text/yaml\"\r\n onChange={(e) => {\r\n const file = e.target.files?.[0];\r\n if (!file) return;\r\n const reader = new FileReader();\r\n reader.onload = (ev) => handleFileSelect(ev.target?.result ?? \"\");\r\n reader.readAsText(file);\r\n e.target.value = \"\";\r\n }}\r\n />\r\n </label>\r\n\r\n <button\r\n className=\"mie:group mie:px-2 mie:py-2 mie:lg:px-3 mie:lg:py-2 mie:rounded-lg mie:border mie:border-mieborder mie:bg-miesurface mie:hover:bg-mieprimary mie:hover:text-mietextsecondary mie:hover:border-mieprimary mie:text-xs mie:lg:text-sm mie:font-medium mie:transition-colors mie:flex mie:items-center mie:lg:gap-2 mie:gap-0 mie:outline-none mie:focus:outline-none mie:text-mietext\"\r\n onClick={onExport}\r\n title=\"Export\"\r\n >\r\n <DOWNLOAD_ICON className=\"mie:w-4 mie:h-4 mie:lg:w-4 mie:lg:h-4 mie:text-mietext mie:group-hover:text-mietextsecondary mie:transition-colors\" />\r\n <span className=\"mie:hidden min-[445px]:inline\">Export</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Schema Type Confirmation Modal */}\r\n {showSchemaConfirm && pendingImport && (\r\n <div className=\"import-modal-overlay mie:fixed mie:inset-0 mie:z-50 mie:flex mie:items-center mie:justify-center mie:bg-mieoverlay mie:p-4\">\r\n <div className=\"import-modal-content mie:bg-miesurface mie:rounded-2xl mie:shadow-2xl mie:max-w-md mie:w-full mie:p-6\">\r\n <div className=\"import-modal-header mie:mb-6\">\r\n <h3 className=\"mie:text-xl mie:font-semibold mie:text-mietext mie:mb-2\">\r\n Confirm Schema Type\r\n </h3>\r\n <p className=\"mie:text-sm mie:text-mietextmuted\">\r\n Is this a <strong className=\"mie:text-mietext\">{pendingImport.detectedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}</strong> schema?\r\n </p>\r\n {pendingImport.detectedSchemaType === 'surveyjs' && (\r\n <p className=\"mie:text-xs mie:text-mietextmuted mie:mt-2\">\r\n SurveyJS schemas will be converted to MIE Forms format.\r\n </p>\r\n )}\r\n </div>\r\n\r\n <div className=\"import-modal-actions mie:flex mie:gap-3\">\r\n <button\r\n onClick={() => confirmImport(pendingImport.detectedSchemaType)}\r\n className=\"mie:flex-1 mie:px-6 mie:py-3 mie:rounded-xl mie:bg-mieprimary mie:text-miesurface mie:font-semibold mie:hover:bg-mieprimary/90 mie:transition-colors mie:shadow-sm mie:hover:shadow\"\r\n >\r\n Yes, Import\r\n </button>\r\n\r\n <button\r\n onClick={cancelImport}\r\n className=\"mie:flex-1 mie:px-6 mie:py-3 mie:rounded-xl mie:border-2 mie:border-mieborder mie:bg-miesurface mie:hover:bg-miebackground mie:text-mietext mie:font-semibold mie:transition-colors\"\r\n >\r\n Abort\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </header>\r\n );\r\n}\r\n","import React, { useMemo, useCallback } from \"react\";\r\nimport { fieldTypes, useFormStore, useUIApi, TEXTINPUT_ICON, FOLDERS_ICON, SELECTINPUT_ICON, RANKING_ICON, MATRIX_ICON, PAPERCLIP_ICON, TOOLS_ICON, X_ICON } from \"@mieweb/forms-engine\";\r\n\r\nconst getCategoryIcon = (categoryName) => {\r\n switch (categoryName) {\r\n case \"Text Fields\":\r\n return TEXTINPUT_ICON;\r\n case \"Organization\":\r\n return FOLDERS_ICON;\r\n case \"Selection Fields\":\r\n return SELECTINPUT_ICON;\r\n case \"Rating & Ranking\":\r\n return RANKING_ICON;\r\n case \"Matrix Fields\":\r\n return MATRIX_ICON;\r\n case \"Rich Content\":\r\n return PAPERCLIP_ICON;\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nconst ToolPanelImpl = ({ isPreview = false }) => {\r\n if (isPreview) return null;\r\n\r\n const addField = useFormStore((s) => s.addField);\r\n const ui = useUIApi();\r\n \r\n // Get the selected field (same as EditPanel)\r\n const selectedField = useFormStore(\r\n useCallback(\r\n (s) => (ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null),\r\n [ui.selectedFieldId.value]\r\n )\r\n );\r\n\r\n const isSectionSelected = selectedField?.fieldType === \"section\";\r\n const sectionTitle = selectedField?.title || \"Section\";\r\n \r\n const handleClearSelection = React.useCallback(() => {\r\n ui.selectedFieldId.set(null);\r\n }, [ui.selectedFieldId]);\r\n\r\n // Handle Escape key to clear any selection\r\n React.useEffect(() => {\r\n const handleKeyDown = (e) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n handleClearSelection();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [handleClearSelection]);\r\n\r\n const categories = useMemo(() => {\r\n const result = {};\r\n\r\n Object.entries(fieldTypes)\r\n .filter(([type]) => type !== \"unsupported\") \r\n .forEach(([type, config]) => {\r\n const category = config.category || \"Other\";\r\n if (!result[category]) result[category] = [];\r\n result[category].push({\r\n type,\r\n label: config.label,\r\n });\r\n });\r\n\r\n return result;\r\n }, []);\r\n\r\n const handlers = useMemo(() => {\r\n const m = {};\r\n Object.values(categories).forEach(items => {\r\n items.forEach(({ type }) => {\r\n m[type] = () => {\r\n if (isSectionSelected && selectedField?.id) {\r\n // Add to section by passing sectionId in options\r\n addField(type, { sectionId: selectedField.id });\r\n } else {\r\n addField(type);\r\n }\r\n };\r\n });\r\n });\r\n return m;\r\n }, [categories, addField, isSectionSelected, selectedField?.id]);\r\n\r\n return (\r\n <div \r\n className=\" mie:border mie:border-mieborder mie:rounded-lg mie:bg-miesurface mie:overflow-y-auto mie:custom-scrollbar mie:max-h-[calc(100svh-24rem)] mie:lg:max-h-[calc(100dvh-20rem)]\"\r\n tabIndex=\"-1\"\r\n >\r\n <div className=\"tool-panel-container mie:pb-4 mie:rounded-lg mie:shadow-sm\">\r\n <h3 className=\"tool-panel-title mie:sticky mie:top-0 mie:z-20 mie:bg-miesurface mie:text-base mie:font-semibold mie:text-mietext mie:pb-2 mie:pt-3 mie:px-4 mie:border-b mie:border-mieborder mie:flex mie:items-center mie:justify-between mie:gap-2\">\r\n <span className=\"mie:flex mie:items-center mie:gap-2 mie:min-w-0\">\r\n <TOOLS_ICON className=\"mie:w-5 mie:h-5 mie:text-mietext mie:shrink-0\" />\r\n <span className=\"mie:truncate mie:text-mietext\">{isSectionSelected ? `Add to \"${sectionTitle}\"` : \"Tools\"}</span>\r\n </span>\r\n {isSectionSelected && (\r\n <button\r\n onClick={handleClearSelection}\r\n className=\"mie:bg-transparent mie:text-mietextmuted mie:hover:text-miedanger mie:hover:bg-miedanger/10 mie:p-1 mie:rounded mie:transition-colors mie:shrink-0\"\r\n title=\"Unselect section\"\r\n >\r\n <X_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n )}\r\n </h3>\r\n \r\n {Object.entries(categories).map(([categoryName, items]) => (\r\n <div key={categoryName} className=\"tool-category\">\r\n <h4 className=\"mie:sticky mie:top-11 mie:z-10 mie:bg-miebackground mie:text-sm mie:font-semibold mie:text-mietext mie:px-4 mie:py-3 mie:border-b mie:border-mieborder mie:uppercase mie:tracking-wide mie:flex mie:items-center mie:gap-2\">\r\n {(() => {\r\n const IconComponent = getCategoryIcon(categoryName);\r\n return IconComponent ? <IconComponent className=\"mie:w-4 mie:h-4 mie:text-mietextmuted\" /> : null;\r\n })()}\r\n {categoryName}\r\n </h4>\r\n <div className=\"tool-items mie:grid mie:grid-cols-1 mie:gap-2 mie:px-4 mie:py-3\">\r\n {items.map(({ type, label }) => {\r\n // Disable section field when adding to a section\r\n const isDisabled = isSectionSelected && type === \"section\";\r\n return (\r\n <button\r\n key={type}\r\n disabled={isDisabled}\r\n className={`mie:px-3 mie:py-2 mie:text-sm mie:text-left mie:border mie:rounded-md mie:transition-colors mie:duration-150 ${\r\n isDisabled\r\n ? \"mie:border-mieborder mie:bg-miebackground mie:text-mietextmuted/50 mie:cursor-not-allowed\"\r\n : \"mie:bg-miesurface mie:text-mietext mie:border-mieborder mie:hover:bg-mieprimary/10 mie:hover:border-mieprimary/50 mie:hover:text-mieprimary\"\r\n }`}\r\n onClick={handlers[type]}\r\n title={isDisabled ? \"Cannot add section to a section\" : `Add ${label}`}\r\n >\r\n + {label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n/* ────────── Memo: only re-render if isPreview changes ────────── */\r\nconst ToolPanel = React.memo(ToolPanelImpl, (prev, next) => prev.isPreview === next.isPreview);\r\n\r\nexport default ToolPanel;\r\n","import React from \"react\";\r\n\r\nexport default function DraftIdEditor({\r\n id = \"\",\r\n label = \"ID\",\r\n onCommit, \r\n validate, \r\n placeholder = \"Enter unique ID…\",\r\n className = \"\",\r\n}) {\r\n const [draft, setDraft] = React.useState(id ?? \"\");\r\n const [err, setErr] = React.useState(\"\");\r\n\r\n // ────────── Reset when external id changes ──────────\r\n React.useEffect(() => {\r\n setDraft(id ?? \"\");\r\n setErr(\"\");\r\n }, [id]);\r\n\r\n const commit = React.useCallback(() => {\r\n const next = String(draft ?? \"\").trim();\r\n\r\n // ────────── Basic checks ──────────\r\n if (!next) {\r\n setErr(\"ID cannot be empty.\");\r\n setDraft(id ?? \"\");\r\n return;\r\n }\r\n if (next === (id ?? \"\")) return;\r\n\r\n if (typeof validate === \"function\") {\r\n const msg = validate(next, id ?? \"\");\r\n if (msg) {\r\n setErr(msg);\r\n return;\r\n }\r\n }\r\n\r\n onCommit?.(next);\r\n }, [draft, id, onCommit, validate]);\r\n\r\n return (\r\n <div className={className ? `draft-id-editor-container ${className}` : \"draft-id-editor-container\"}>\r\n <label className=\"mie:block mie:text-sm mie:text-mietext mie:mb-1\">{label}</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:transition-colors\"\r\n value={draft}\r\n onChange={(e) => {\r\n if (err) setErr(\"\");\r\n setDraft(e.target.value);\r\n }}\r\n onBlur={commit}\r\n onKeyDown={(e) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n commit();\r\n }\r\n }}\r\n placeholder={placeholder}\r\n />\r\n {err ? <p className=\"mie:text-xs mie:text-miedanger mie:mt-1\">{err}</p> : null}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\n\r\nconst INPUT_TYPES = [\r\n { value: \"text\", label: \"Text\" },\r\n { value: \"number\", label: \"Number\" },\r\n { value: \"email\", label: \"Email\" },\r\n { value: \"tel\", label: \"Phone Number\" },\r\n { value: \"date\", label: \"Date\" },\r\n { value: \"datetime-local\", label: \"Date & Time\" },\r\n { value: \"month\", label: \"Month\" },\r\n { value: \"time\", label: \"Time\" },\r\n { value: \"range\", label: \"Range\" }\r\n];\r\n\r\nconst UNITS = {\r\n Length: [\r\n { value: \"mm\", label: \"Millimeters (mm)\" },\r\n { value: \"cm\", label: \"Centimeters (cm)\" },\r\n { value: \"m\", label: \"Meters (m)\" },\r\n { value: \"km\", label: \"Kilometers (km)\" },\r\n { value: \"in\", label: \"Inches (in)\" },\r\n { value: \"ft\", label: \"Feet (ft)\" },\r\n { value: \"yd\", label: \"Yards (yd)\" },\r\n { value: \"mi\", label: \"Miles (mi)\" }\r\n ],\r\n Weight: [\r\n { value: \"mg\", label: \"Milligrams (mg)\" },\r\n { value: \"g\", label: \"Grams (g)\" },\r\n { value: \"kg\", label: \"Kilograms (kg)\" },\r\n { value: \"oz\", label: \"Ounces (oz)\" },\r\n { value: \"lb\", label: \"Pounds (lb)\" }\r\n ],\r\n Volume: [\r\n { value: \"ml\", label: \"Milliliters (ml)\" },\r\n { value: \"l\", label: \"Liters (l)\" },\r\n { value: \"fl-oz\", label: \"Fluid Ounces (fl oz)\" },\r\n { value: \"cup\", label: \"Cups\" },\r\n { value: \"pt\", label: \"Pints (pt)\" },\r\n { value: \"qt\", label: \"Quarts (qt)\" },\r\n { value: \"gal\", label: \"Gallons (gal)\" }\r\n ],\r\n Temperature: [\r\n { value: \"c\", label: \"Celsius (°C)\" },\r\n { value: \"f\", label: \"Fahrenheit (°F)\" },\r\n { value: \"k\", label: \"Kelvin (K)\" }\r\n ],\r\n Other: [\r\n { value: \"percent\", label: \"Percent (%)\" },\r\n { value: \"bpm\", label: \"Beats per minute (bpm)\" },\r\n { value: \"mmHg\", label: \"mmHg (blood pressure)\" }\r\n ]\r\n};\r\n\r\nexport default function InputTypeEditor({ field, onUpdate }) {\r\n const inputType = field.inputType || \"text\";\r\n const unit = field.unit || \"\";\r\n const showUnitSelector = inputType === \"number\" || inputType === \"range\";\r\n\r\n return (\r\n <div className=\"mie:space-y-3\">\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:text-mietext mie:mb-1\">Input Type</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:cursor-pointer mie:transition-colors\"\r\n value={inputType}\r\n onChange={(e) => onUpdate(\"inputType\", e.target.value)}\r\n >\r\n {INPUT_TYPES.map(type => (\r\n <option key={type.value} value={type.value}>{type.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n \r\n {showUnitSelector && (\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:text-mietext mie:mb-1\">Unit (optional)</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:cursor-pointer mie:transition-colors\"\r\n value={unit}\r\n onChange={(e) => onUpdate(\"unit\", e.target.value)}\r\n >\r\n <option value=\"\">None</option>\r\n {Object.entries(UNITS).map(([category, units]) => (\r\n <optgroup key={category} label={category}>\r\n {units.map(u => (\r\n <option key={u.value} value={u.value}>{u.label}</option>\r\n ))}\r\n </optgroup>\r\n ))}\r\n </select>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { useFormStore, CustomCheckbox } from \"@mieweb/forms-engine\";\r\nimport DraftIdEditor from \"./DraftIdEditor\"\r\nimport InputTypeEditor from \"./InputTypeEditor\";\r\n\r\nfunction CommonEditor({ f, onUpdateField }) {\r\n const byId = useFormStore(React.useCallback(s => s.byId, []));\r\n\r\n const validateId = React.useCallback((newId, oldId) => {\r\n // Empty ID check\r\n if (!newId?.trim()) return \"ID cannot be empty.\";\r\n \r\n // Unchanged ID is OK\r\n if (newId === oldId) return \"\";\r\n \r\n // Collect all existing IDs (root + children of all sections)\r\n const allIds = new Set(Object.keys(byId));\r\n Object.values(byId).forEach((field) => {\r\n if (field?.fieldType === \"section\" && Array.isArray(field.fields)) {\r\n field.fields.forEach((child) => allIds.add(child.id));\r\n }\r\n });\r\n \r\n // Check for collision\r\n if (allIds.has(newId)) {\r\n return `ID \"${newId}\" already exists.`;\r\n }\r\n \r\n return \"\";\r\n }, [byId]);\r\n\r\n return (\r\n <div className=\"common-editor-container mie:space-y-3\">\r\n <DraftIdEditor\r\n id={f.id ?? \"\"}\r\n validate={validateId}\r\n onCommit={(next) => onUpdateField?.(\"id\", next)}\r\n />\r\n\r\n <div>\r\n <label className=\"mie:block mie:text-sm mie:text-mietext mie:mb-1\">Label / Question</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:transition-colors\"\r\n value={f.question || \"\"}\r\n onChange={(e) => onUpdateField?.(\"question\", e.target.value)}\r\n placeholder=\"Enter question text\"\r\n />\r\n </div>\r\n\r\n {(f.fieldType === \"text\" || f.fieldType === \"longtext\") && (\r\n <InputTypeEditor field={f} onUpdate={onUpdateField} />\r\n )}\r\n\r\n <div className=\"mie:min-w-0\">\r\n <label className=\"mie:block mie:text-sm mie:text-mietext mie:mb-1\">Sublabel (optional)</label>\r\n <textarea\r\n className=\"mie:w-full mie:min-w-0 mie:max-h-32 mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:resize-y mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:transition-colors\"\r\n value={f.sublabel || \"\"}\r\n onChange={(e) => onUpdateField(\"sublabel\", e.target.value)}\r\n placeholder=\"Helper text / description\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"mie:inline-flex mie:items-center mie:gap-2 mie:text-sm mie:text-mietext mie:cursor-pointer\">\r\n <CustomCheckbox\r\n checked={!!f.required}\r\n onChange={(checked) => onUpdateField?.(\"required\", checked)}\r\n size=\"md\"\r\n />\r\n Required\r\n </label>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CommonEditor;\r\n","import React from \"react\";\r\nimport { TRASHCANTWO_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function OptionListEditor({ field, api }) {\r\n const opts = field.options || [];\r\n const isBoolean = field.fieldType === \"boolean\";\r\n const isMultitext = field.fieldType === \"multitext\";\r\n const containerRef = React.useRef(null);\r\n const prevCountRef = React.useRef(opts.length);\r\n\r\n const label = isMultitext ? \"Text Inputs\" : \"Options\";\r\n const singular = isMultitext ? \"Text Input\" : \"Option\";\r\n const placeholder = isMultitext ? \"Input label\" : \"Option text\";\r\n\r\n // Auto-scroll when new option is added\r\n React.useEffect(() => {\r\n if (opts.length > prevCountRef.current && containerRef.current) {\r\n const lastChild = containerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevCountRef.current = opts.length;\r\n }, [opts.length]);\r\n\r\n return (\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext\">{label}</label>\r\n <div ref={containerRef} className=\"mie:space-y-2\">\r\n {opts.map((opt) => (\r\n <div key={opt.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:shadow-sm mie:hover:border-mieprimary/50 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent\"\r\n value={opt.value}\r\n onChange={(e) => api.option.update(opt.id, e.target.value)}\r\n placeholder={placeholder}\r\n />\r\n {!isBoolean && (\r\n <button\r\n onClick={() => api.option.remove(opt.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-mietextmuted/70 mie:hover:text-miedanger mie:transition-colors\"\r\n title=\"Remove option\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {!isBoolean && (\r\n <button\r\n onClick={() => api.option.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-miesurface mie:text-mieprimary mie:border mie:border-mieprimary/50 mie:rounded-lg mie:hover:bg-mieprimary/10 mie:transition-colors\"\r\n >\r\n + Add {singular}\r\n </button>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport { TRASHCANTWO_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function MatrixEditor({ field, api }) {\r\n const rows = field.rows || [];\r\n const columns = field.columns || [];\r\n const rowsContainerRef = React.useRef(null);\r\n const colsContainerRef = React.useRef(null);\r\n const prevRowCountRef = React.useRef(rows.length);\r\n const prevColCountRef = React.useRef(columns.length);\r\n\r\n // Auto-scroll when new row is added\r\n React.useEffect(() => {\r\n if (rows.length > prevRowCountRef.current && rowsContainerRef.current) {\r\n const lastChild = rowsContainerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevRowCountRef.current = rows.length;\r\n }, [rows.length]);\r\n\r\n // Auto-scroll when new column is added\r\n React.useEffect(() => {\r\n if (columns.length > prevColCountRef.current && colsContainerRef.current) {\r\n const lastChild = colsContainerRef.current.lastElementChild;\r\n if (lastChild) {\r\n lastChild.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n }\r\n }\r\n prevColCountRef.current = columns.length;\r\n }, [columns.length]);\r\n\r\n return (\r\n <div className=\"mie:space-y-4\">\r\n {/* Rows Section */}\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext\">Rows</label>\r\n <div ref={rowsContainerRef} className=\"mie:space-y-2\">\r\n {rows.map((row) => (\r\n <div key={row.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:shadow-sm mie:hover:border-mieprimary/50 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent mie:text-mietext mie:placeholder:text-mietextmuted\"\r\n value={row.value}\r\n onChange={(e) => api.row.update(row.id, e.target.value)}\r\n placeholder=\"Row text\"\r\n />\r\n <button\r\n onClick={() => api.row.remove(row.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-mietextmuted/70 mie:hover:text-miedanger mie:transition-colors\"\r\n title=\"Remove row\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {rows.length >= 10 ? (\r\n <div className=\"mie:px-3 mie:py-2 mie:text-sm mie:text-mietextmuted mie:text-center mie:bg-miebackground mie:rounded-lg\">Max rows reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.row.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-miesurface mie:text-mieprimary mie:border mie:border-mieprimary/50 mie:rounded-lg mie:hover:bg-mieprimary/10 mie:transition-colors\"\r\n >\r\n + Add Row\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Columns Section */}\r\n <div className=\"mie:space-y-3\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext\">Columns</label>\r\n <div ref={colsContainerRef} className=\"mie:space-y-2\">\r\n {columns.map((col) => (\r\n <div key={col.id} className=\"mie:flex mie:items-center mie:gap-2 mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:shadow-sm mie:hover:border-mieprimary/50 mie:transition-colors\">\r\n <input\r\n className=\"mie:flex-1 mie:min-w-0 mie:outline-none mie:bg-transparent mie:text-mietext mie:placeholder:text-mietextmuted\"\r\n value={col.value}\r\n onChange={(e) => api.column.update(col.id, e.target.value)}\r\n placeholder=\"Column text\"\r\n />\r\n <button\r\n onClick={() => api.column.remove(col.id)}\r\n className=\"mie:shrink-0 mie:bg-transparent mie:text-mietextmuted/70 mie:hover:text-miedanger mie:transition-colors\"\r\n title=\"Remove column\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-5 mie:h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {columns.length >= 10 ? (\r\n <div className=\"mie:px-3 mie:py-2 mie:text-sm mie:text-mietextmuted mie:text-center mie:bg-miebackground mie:rounded-lg\">Max columns reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.column.add(\"\")}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-miesurface mie:text-mieprimary mie:border mie:border-mieprimary/50 mie:rounded-lg mie:hover:bg-mieprimary/10 mie:transition-colors\"\r\n >\r\n + Add Column\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport CommonEditor from \"./CommonEditor\";\r\nimport OptionListEditor from \"./OptionListEditor\";\r\nimport MatrixEditor from \"./MatrixEditor\";\r\nimport { useFormApi, fieldTypes } from \"@mieweb/forms-engine\";\r\n\r\nfunction NonSectionEditor({ f }) {\r\n const api = useFormApi(f.id);\r\n\r\n const onUpdateField = React.useCallback(\r\n (key, value) => api.field.update(key, value),\r\n [api]\r\n );\r\n\r\n const fieldConfig = fieldTypes[f.fieldType] || {};\r\n const hasOptions = fieldConfig.hasOptions || false;\r\n const hasMatrix = fieldConfig.hasMatrix || false;\r\n\r\n return (\r\n <>\r\n <CommonEditor f={f} onUpdateField={onUpdateField} />\r\n\r\n {f.fieldType === \"input\" && (\r\n <div className=\"non-section-editor-default-answer mie:mt-4\">\r\n <div className=\"mie:text-sm mie:font-medium mie:mb-1\">Default Answer</div>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary mie:outline-none mie:transition-colors\"\r\n value={f.answer || \"\"}\r\n onChange={(e) => onUpdateField(\"answer\", e.target.value)}\r\n placeholder=\"Default value\"\r\n />\r\n </div>\r\n )}\r\n\r\n {hasOptions && <OptionListEditor field={f} api={api} />}\r\n\r\n {hasMatrix && <MatrixEditor field={f} api={api} />}\r\n </>\r\n );\r\n}\r\n\r\nexport default NonSectionEditor;\r\n","import React from \"react\";\r\nimport OptionListEditor from \"./OptionListEditor\";\r\nimport MatrixEditor from \"./MatrixEditor\";\r\nimport CommonEditor from \"./CommonEditor\";\r\nimport { fieldTypes, FormStoreContext, useFormApi, useUIApi, TRASHCANTWO_ICON, ARROWDOWN_ICON } from \"@mieweb/forms-engine\";\r\nimport DraftIdEditor from \"./DraftIdEditor\"\r\n\r\nfunction SectionEditor({ section, onActiveChildChange }) {\r\n const sectionApi = useFormApi(section.id);\r\n const formStore = React.useContext(FormStoreContext);\r\n const ui = useUIApi();\r\n\r\n if (!formStore) throw new Error('Missing FormStoreContext.Provider in the tree');\r\n\r\n const children = Array.isArray(section.fields) ? section.fields : [];\r\n \r\n // Initialize from global selectedChildId if valid for this section, otherwise first child\r\n const globalParentId = ui.selectedChildId.ParentId;\r\n const globalChildId = ui.selectedChildId.ChildId;\r\n const initialChildId = React.useMemo(() => {\r\n if (globalParentId === section.id && globalChildId && children.some((c) => c.id === globalChildId)) {\r\n return globalChildId;\r\n }\r\n return children[0]?.id || null;\r\n }, []); // Only compute once on mount\r\n \r\n const [activeChildId, setActiveChildId] = React.useState(initialChildId);\r\n\r\n // Sync with global selectedChildId from section (only when global changes externally)\r\n const prevGlobalChildIdRef = React.useRef(globalChildId);\r\n React.useEffect(() => {\r\n // Only sync if global changed AND it's for this section AND different from current\r\n if (prevGlobalChildIdRef.current !== globalChildId) {\r\n prevGlobalChildIdRef.current = globalChildId;\r\n if (globalParentId === section.id && globalChildId && globalChildId !== activeChildId) {\r\n setActiveChildId(globalChildId);\r\n }\r\n }\r\n }, [globalParentId, globalChildId, section.id, activeChildId]);\r\n\r\n React.useEffect(() => {\r\n if (!children.length) {\r\n if (activeChildId !== null) setActiveChildId(null);\r\n return;\r\n }\r\n const stillExists = children.some((c) => c.id === activeChildId);\r\n if (!stillExists) setActiveChildId(children[0].id);\r\n }, [children, activeChildId]);\r\n\r\n React.useEffect(() => {\r\n onActiveChildChange?.(section.id, activeChildId || null);\r\n }, [section.id, activeChildId, onActiveChildChange]);\r\n\r\n const handleChildSelect = React.useCallback(\r\n (childId) => {\r\n setActiveChildId(childId);\r\n // Also update the global UI state for highlighting in the section\r\n ui.selectedChildId.set(section.id, childId);\r\n },\r\n [section.id, ui.selectedChildId]\r\n );\r\n\r\n const getFieldLabel = React.useCallback((field) => {\r\n return field.question?.trim() || fieldTypes[field.fieldType]?.label || \"Untitled\";\r\n }, []);\r\n\r\n const onUpdateSection = React.useCallback(\r\n (key, value) => sectionApi.field.update(key, value),\r\n [sectionApi]\r\n );\r\n\r\n const activeChild = React.useMemo(\r\n () => children.find((c) => c.id === activeChildId) || null,\r\n [children, activeChildId]\r\n );\r\n\r\n const childApi = useFormApi(activeChild?.id || '', section.id);\r\n const validChildApi = activeChild && childApi ? childApi : null;\r\n\r\n const onUpdateChild = React.useCallback(\r\n (key, value) => {\r\n if (!activeChild) return;\r\n if (key === \"id\") {\r\n const next = String(value ?? \"\").trim();\r\n if (!next) return;\r\n\r\n formStore.getState().updateField(\r\n activeChild.id,\r\n { id: next },\r\n {\r\n sectionId: section.id,\r\n onIdChange: (newId, oldId) => {\r\n setActiveChildId((curr) => (curr === oldId ? newId : curr));\r\n },\r\n }\r\n );\r\n return;\r\n }\r\n\r\n formStore.getState().updateField(\r\n activeChild.id,\r\n { [key]: value },\r\n { sectionId: section.id }\r\n );\r\n },\r\n [activeChild, section.id, formStore]\r\n );\r\n\r\n const onDeleteChild = React.useCallback(() => {\r\n if (!activeChild) return;\r\n formStore.getState().deleteField(activeChild.id, { sectionId: section.id });\r\n }, [activeChild, section.id, formStore]);\r\n\r\n const hasOptionsChild = React.useMemo(\r\n () => {\r\n if (!activeChild) return false;\r\n const childConfig = fieldTypes[activeChild.fieldType] || {};\r\n return childConfig.hasOptions || false;\r\n },\r\n [activeChild]\r\n );\r\n\r\n const hasMatrixChild = React.useMemo(\r\n () => {\r\n if (!activeChild) return false;\r\n const childConfig = fieldTypes[activeChild.fieldType] || {};\r\n return childConfig.hasMatrix || false;\r\n },\r\n [activeChild]\r\n );\r\n\r\n return (\r\n <div className=\"mie:space-y-4\">\r\n {/* Section Properties */}\r\n <div className=\"mie:space-y-3\">\r\n <h3 className=\"mie:text-sm mie:font-semibold mie:text-mietext mie:uppercase mie:tracking-wide\">Section Properties</h3>\r\n\r\n <DraftIdEditor\r\n id={section.id}\r\n onCommit={(next) => sectionApi.field.renameId(next)}\r\n />\r\n\r\n <div className=\"section-editor-title\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext mie:mb-1\">Section Title</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none\"\r\n value={section.title || \"\"}\r\n onChange={(e) => onUpdateSection(\"title\", e.target.value)}\r\n placeholder=\"e.g., Patient Information\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {/* Field Selection */}\r\n <div className=\"mie:space-y-3\">\r\n <h3 className=\"mie:text-sm mie:font-semibold mie:text-mietext mie:uppercase mie:tracking-wide\">\r\n Fields ({children.length})\r\n </h3>\r\n \r\n {children.length === 0 ? (\r\n <div className=\"mie:flex mie:flex-col mie:items-center mie:justify-center mie:p-6 mie:bg-miebackground mie:border-2 mie:border-dashed mie:border-mieborder mie:rounded-lg mie:text-center\">\r\n <p className=\"mie:text-sm mie:text-mietextmuted\">No fields in this section</p>\r\n <p className=\"mie:text-xs mie:text-mietextmuted/70 mie:mt-1\">Use the Tool Panel to add fields</p>\r\n </div>\r\n ) : (\r\n <>\r\n {/* Dropdown Field Selector */}\r\n <div className=\"mie:relative\">\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:pr-10 mie:border mie:border-mieborder mie:rounded mie:bg-miesurface mie:text-mietext mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:appearance-none mie:cursor-pointer\"\r\n value={activeChildId || \"\"}\r\n onChange={(e) => handleChildSelect(e.target.value)}\r\n >\r\n {children.map((c) => (\r\n <option key={c.id} value={c.id}>\r\n {getFieldLabel(c)} — {fieldTypes[c.fieldType]?.label}\r\n </option>\r\n ))}\r\n </select>\r\n <ARROWDOWN_ICON className=\"mie:absolute mie:right-3 mie:top-1/2 mie:-translate-y-1/2 mie:w-4 mie:h-4 mie:text-mietextmuted mie:pointer-events-none\" />\r\n </div>\r\n\r\n {activeChild && (\r\n <div className=\"mie:space-y-4 mie:p-4 mie:bg-miebackground mie:border mie:border-mieborder mie:rounded-lg\">\r\n {/* Field Type Badge */}\r\n <div className=\"mie:flex mie:items-center mie:justify-between\">\r\n <span className=\"mie:inline-flex mie:items-center mie:px-2.5 mie:py-0.5 mie:rounded-full mie:text-xs mie:font-medium mie:bg-mieprimary/10 mie:text-mieprimary\">\r\n {fieldTypes[activeChild.fieldType]?.label || activeChild.fieldType}\r\n </span>\r\n <button\r\n className=\"mie:flex mie:items-center mie:gap-1.5 mie:px-3 mie:py-1.5 mie:text-xs mie:font-medium mie:bg-miesurface mie:text-miedanger mie:hover:text-miedanger mie:hover:bg-miedanger/10 mie:border mie:border-miedanger/50 mie:rounded mie:transition-colors\"\r\n onClick={onDeleteChild}\r\n title=\"Delete this field\"\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-3.5 mie:h-3.5\" />\r\n Delete\r\n </button>\r\n </div>\r\n\r\n {/* Field Editor */}\r\n <CommonEditor f={activeChild} onUpdateField={onUpdateChild} />\r\n\r\n {activeChild.fieldType === \"input\" && (\r\n <div className=\"section-editor-default-answer\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext mie:mb-1\">Default Answer</label>\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:bg-miesurface mie:text-mietext mie:rounded mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none\"\r\n value={activeChild.answer || \"\"}\r\n onChange={(e) => onUpdateChild(\"answer\", e.target.value)}\r\n placeholder=\"Default value\"\r\n />\r\n </div>\r\n )}\r\n\r\n {hasOptionsChild && validChildApi && <OptionListEditor field={activeChild} api={validChildApi} />}\r\n\r\n {hasMatrixChild && validChildApi && <MatrixEditor field={activeChild} api={validChildApi} />}\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default SectionEditor;\r\n","import React from \"react\";\r\nimport { useUIApi, useFormStore, TRASHCANTWO_ICON, NUMERIC_EXPRESSION_FORMATS } from \"@mieweb/forms-engine\";\r\n\r\n// ────────── Operators by field type ──────────\r\nfunction getOperatorsForFieldType(fieldType, displayFormat, inputType) {\r\n // Numeric expression fields get comparison operators\r\n if (fieldType === \"expression\") {\r\n const isNumeric = NUMERIC_EXPRESSION_FORMATS.includes(displayFormat);\r\n if (isNumeric) {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\"];\r\n }\r\n return [\"equals\", \"notEquals\", \"contains\", \"empty\", \"notEmpty\"];\r\n }\r\n \r\n switch (fieldType) {\r\n case \"text\":\r\n case \"longtext\":\r\n // Number, range, and date/time inputs support numeric/comparison operators\r\n if (inputType === \"number\" || inputType === \"range\") {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"empty\", \"notEmpty\"];\r\n }\r\n if (inputType === \"date\" || inputType === \"datetime-local\" || inputType === \"month\" || inputType === \"time\") {\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\", \"empty\", \"notEmpty\"];\r\n }\r\n // Text, email, tel get text operators\r\n return [\"equals\", \"notEquals\", \"contains\", \"empty\", \"notEmpty\"];\r\n case \"radio\":\r\n case \"dropdown\":\r\n case \"boolean\":\r\n return [\"equals\", \"notEquals\"];\r\n case \"check\":\r\n case \"multiselectdropdown\":\r\n return [\"includes\", \"empty\", \"notEmpty\"];\r\n case \"rating\":\r\n case \"slider\":\r\n case \"ranking\":\r\n return [\"equals\", \"notEquals\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\"];\r\n default:\r\n return [\"equals\", \"notEquals\"];\r\n }\r\n}\r\n\r\n// ────────── Property accessors available for field types ──────────\r\nfunction getPropertyAccessorsForFieldType(fieldType) {\r\n switch (fieldType) {\r\n case \"check\":\r\n case \"multiselectdropdown\":\r\n case \"ranking\":\r\n return [\"length\", \"count\"];\r\n case \"text\":\r\n case \"longtext\":\r\n return [\"length\"];\r\n default:\r\n return [];\r\n }\r\n}\r\n\r\n// ────────── Operator labels for display ──────────\r\nfunction getOperatorLabel(op) {\r\n switch (op) {\r\n case \"equals\": return \"= (equals)\";\r\n case \"notEquals\": return \"≠ (not equals)\";\r\n case \"greaterThan\": return \"> (greater than)\";\r\n case \"greaterThanOrEqual\": return \"≥ (greater than or equal)\";\r\n case \"lessThan\": return \"< (less than)\";\r\n case \"lessThanOrEqual\": return \"≤ (less than or equal)\";\r\n case \"contains\": return \"contains\";\r\n case \"includes\": return \"includes\";\r\n case \"empty\": return \"is empty\";\r\n case \"notEmpty\": return \"is not empty\";\r\n default: return op;\r\n }\r\n}\r\n\r\n// ────────── Normalize options ──────────\r\nfunction normOption(opt) {\r\n if (opt && typeof opt === \"object\") {\r\n const id = opt.id ?? String(opt.value ?? \"\");\r\n const value = String(opt.value ?? opt.label ?? opt.id ?? \"\");\r\n return { id, value };\r\n }\r\n const s = String(opt ?? \"\");\r\n return { id: s, value: s };\r\n}\r\n\r\nexport default function LogicEditor() {\r\n const ui = useUIApi();\r\n\r\n // stable store slices (hooks always called)\r\n const byId = useFormStore((s) => s.byId);\r\n const setEnableWhen = useFormStore((s) => s.setEnableWhen);\r\n const updateField = useFormStore((s) => s.updateField);\r\n\r\n // read selection (plain values)\r\n const selectedId = ui?.selectedFieldId?.value ?? null;\r\n const rawParentId = ui?.selectedChildId?.ParentId ?? null;\r\n const rawChildId = ui?.selectedChildId?.ChildId ?? null;\r\n\r\n // resolve current selected field and whether it is a section\r\n const selectedField = selectedId ? byId[selectedId] : null;\r\n const isSectionCtx = selectedField?.fieldType === \"section\";\r\n\r\n // children list for the current section (empty when not a section)\r\n const sectionChildren = React.useMemo(() => {\r\n if (!isSectionCtx) return [];\r\n const arr = Array.isArray(selectedField?.fields) ? selectedField.fields : [];\r\n return arr;\r\n }, [isSectionCtx, selectedField]);\r\n\r\n // validate the previously selected child against current section\r\n const childValidForSection = React.useMemo(() => {\r\n if (!isSectionCtx || !rawChildId) return false;\r\n return sectionChildren.some((c) => c.id === rawChildId);\r\n }, [isSectionCtx, rawChildId, sectionChildren]);\r\n\r\n // target: \"\" => section; \"child:<id>\" => child under current section\r\n const initialTarget = React.useMemo(() => {\r\n if (!isSectionCtx) return \"\"; // treat non-section as \"section scope\" on that field\r\n if (childValidForSection) return `child:${rawChildId}`;\r\n return \"\";\r\n }, [isSectionCtx, childValidForSection, rawChildId]);\r\n\r\n const [target, setTarget] = React.useState(initialTarget);\r\n\r\n // keep target in sync when switching selected field/section OR when initial target changes\r\n React.useEffect(() => {\r\n setTarget(initialTarget);\r\n }, [initialTarget]);\r\n\r\n // sync UI child selection when user changes the dropdown (not on every target change)\r\n const handleTargetChange = React.useCallback((newTarget) => {\r\n setTarget(newTarget);\r\n if (!isSectionCtx) return;\r\n if (newTarget && newTarget.startsWith(\"child:\")) {\r\n const cid = newTarget.slice(6);\r\n ui.selectedChildId.set(selectedId, cid);\r\n } else {\r\n ui.selectedChildId.set(null, null);\r\n }\r\n }, [isSectionCtx, selectedId, ui]);\r\n\r\n // compute effective scope\r\n const isChildScope = Boolean(isSectionCtx && target && target.startsWith(\"child:\"));\r\n const effectiveChildId = isChildScope ? target.slice(6) : null;\r\n const effectiveId = isChildScope ? effectiveChildId : selectedId;\r\n\r\n // read the field we're editing logic for (may be null; we still render safely)\r\n const field = React.useMemo(() => {\r\n if (!effectiveId) return null;\r\n if (isChildScope) {\r\n return sectionChildren.find((c) => c.id === effectiveChildId) ?? null;\r\n }\r\n return byId[effectiveId] ?? null;\r\n }, [byId, effectiveId, isChildScope, effectiveChildId, sectionChildren]);\r\n\r\n // Build list of possible condition targets (all fields, including children)\r\n const targets = React.useMemo(() => {\r\n const out = [];\r\n for (const f of Object.values(byId)) {\r\n if (!f) continue;\r\n if (f.fieldType === \"section\" && Array.isArray(f.fields)) {\r\n const sectTitle = f.title?.trim() || \"Section\";\r\n f.fields.forEach((c) => {\r\n out.push({\r\n id: c.id,\r\n parentId: f.id,\r\n label: `${sectTitle} › ${c.question?.trim() || c.id}`,\r\n fieldType: c.fieldType,\r\n displayFormat: c.displayFormat,\r\n options: Array.isArray(c.options) ? c.options : [],\r\n });\r\n });\r\n } else {\r\n out.push({\r\n id: f.id,\r\n parentId: null,\r\n label: f.question?.trim() || f.title?.trim() || f.id,\r\n fieldType: f.fieldType,\r\n displayFormat: f.displayFormat,\r\n options: Array.isArray(f.options) ? f.options : [],\r\n });\r\n }\r\n }\r\n return out;\r\n }, [byId]);\r\n\r\n const findTarget = React.useCallback(\r\n (tid) => targets.find((t) => t.id === tid) || null,\r\n [targets]\r\n );\r\n\r\n // writer: section/top-level vs child\r\n const writeEnableWhen = React.useCallback(\r\n (next) => {\r\n if (!effectiveId) return;\r\n\r\n const normalized =\r\n next && Array.isArray(next.conditions)\r\n ? { logic: next.logic || \"AND\", conditions: next.conditions }\r\n : undefined;\r\n\r\n if (isChildScope && selectedId) {\r\n updateField(effectiveId, { enableWhen: normalized }, { sectionId: selectedId });\r\n } else {\r\n setEnableWhen(effectiveId, normalized);\r\n }\r\n },\r\n [effectiveId, isChildScope, selectedId, setEnableWhen, updateField]\r\n );\r\n\r\n // current ew (safe default even if field null)\r\n const ew = React.useMemo(() => {\r\n return field?.enableWhen && Array.isArray(field.enableWhen.conditions)\r\n ? { logic: field.enableWhen.logic || \"AND\", conditions: field.enableWhen.conditions }\r\n : { logic: \"AND\", conditions: [] };\r\n }, [field]);\r\n\r\n // events (pure; never add/remove hooks)\r\n const addCond = React.useCallback(() => {\r\n const next = {\r\n logic: ew.logic || \"AND\",\r\n conditions: [\r\n ...(Array.isArray(ew.conditions) ? ew.conditions : []),\r\n { targetId: \"\", operator: \"equals\", value: \"\" },\r\n ],\r\n };\r\n writeEnableWhen(next);\r\n }, [ew, writeEnableWhen]);\r\n\r\n const clear = React.useCallback(() => writeEnableWhen(null), [writeEnableWhen]);\r\n\r\n const removeCond = React.useCallback(\r\n (idx) => {\r\n const base = Array.isArray(ew.conditions) ? ew.conditions : [];\r\n const nextConds = base.filter((_, i) => i !== idx);\r\n writeEnableWhen({ ...ew, conditions: nextConds });\r\n },\r\n [ew, writeEnableWhen]\r\n );\r\n\r\n const updateCond = React.useCallback(\r\n (idx, patch) => {\r\n const base = Array.isArray(ew.conditions) ? ew.conditions : [];\r\n const nextConds = [...base];\r\n const curr = nextConds[idx] || { targetId: \"\", operator: \"equals\", value: \"\" };\r\n const updated = { ...curr, ...patch };\r\n\r\n if (\"targetId\" in patch) {\r\n const meta = findTarget(updated.targetId);\r\n const ops = getOperatorsForFieldType(meta?.fieldType, meta?.displayFormat, meta?.inputType);\r\n if (!ops.includes(updated.operator)) updated.operator = ops[0] || \"equals\";\r\n\r\n const opts = Array.isArray(meta?.options) ? meta.options.map(normOption) : [];\r\n if (opts.length > 0) {\r\n const valid = new Set(opts.map((o) => o.id));\r\n if (!valid.has(updated.value)) updated.value = \"\";\r\n }\r\n }\r\n\r\n nextConds[idx] = updated;\r\n writeEnableWhen({ ...ew, conditions: nextConds });\r\n },\r\n [ew, findTarget, writeEnableWhen]\r\n );\r\n\r\n // filteredTargets: prevent self-targeting\r\n const filteredTargets = React.useMemo(\r\n () => targets.filter((t) => t.id !== effectiveId),\r\n [targets, effectiveId]\r\n );\r\n\r\n // ────────── Render (no early return before hooks) ──────────\r\n const isDisabled = !field || !effectiveId;\r\n\r\n return (\r\n <div className=\"logic-editor-container mie:space-y-4\">\r\n {/* Target picker when a section is selected */}\r\n {isSectionCtx && (\r\n <div className=\"mie:space-y-2\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext\">Target Field</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:cursor-pointer mie:transition-colors\"\r\n value={target}\r\n onChange={(e) => handleTargetChange(e.target.value)}\r\n >\r\n <option value=\"\">Section (this)</option>\r\n {sectionChildren.map((c) => (\r\n <option key={c.id} value={`child:${c.id}`}>\r\n {c.question?.trim() || c.title?.trim() || c.id}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n )}\r\n\r\n <div className=\"mie:space-y-3\">\r\n <div className=\"mie:space-y-2\">\r\n <label className=\"mie:block mie:text-sm mie:font-medium mie:text-mietext\">Logic Operator</label>\r\n <select\r\n value={ew.logic || \"AND\"}\r\n onChange={(e) => writeEnableWhen({ ...ew, logic: e.target.value })}\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:cursor-pointer mie:transition-colors\"\r\n disabled={isDisabled}\r\n >\r\n <option value=\"AND\">AND — All conditions must be true</option>\r\n <option value=\"OR\">OR — Any condition must be true</option>\r\n </select>\r\n </div>\r\n \r\n <div className=\"mie:flex mie:gap-2\">\r\n <button \r\n type=\"button\" \r\n className=\"mie:flex-1 mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-miesurface mie:text-mieprimary mie:border mie:border-mieprimary/50 mie:rounded-lg mie:hover:bg-mieprimary/10 mie:transition-colors mie:disabled:opacity-50 mie:disabled:cursor-not-allowed\" \r\n onClick={addCond} \r\n disabled={isDisabled}\r\n >\r\n + Add Condition\r\n </button>\r\n <button \r\n type=\"button\" \r\n className=\"mie:px-3 mie:py-2 mie:text-sm mie:font-medium mie:bg-miesurface mie:text-miedanger mie:border mie:border-miedanger/50 mie:rounded-lg mie:hover:bg-miedanger/10 mie:transition-colors mie:disabled:opacity-50 mie:disabled:cursor-not-allowed\" \r\n onClick={clear} \r\n disabled={isDisabled}\r\n >\r\n Clear All\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Conditions list */}\r\n {ew.conditions.length > 0 && (\r\n <div className=\"mie:space-y-3\">\r\n <h4 className=\"mie:text-sm mie:font-medium mie:text-mietext\">Conditions ({ew.conditions.length})</h4>\r\n <div className=\"mie:space-y-3\">\r\n {ew.conditions.map((c, i) => {\r\n const meta = findTarget(c.targetId);\r\n const allowedOps = getOperatorsForFieldType(meta?.fieldType, meta?.displayFormat, meta?.inputType);\r\n const propertyAccessors = meta ? getPropertyAccessorsForFieldType(meta.fieldType) : [];\r\n const hasPropertyAccessors = propertyAccessors.length > 0;\r\n const optList = Array.isArray(meta?.options) ? meta.options.map(normOption) : [];\r\n const hasOptions = optList.length > 0;\r\n const needsValue = !['empty', 'notEmpty'].includes(c.operator);\r\n \r\n // Numeric operators use number input for threshold comparison, not option dropdown\r\n const numericOperators = ['greaterThan', 'greaterThanOrEqual', 'lessThan', 'lessThanOrEqual'];\r\n const isNumericComparison = numericOperators.includes(c.operator);\r\n\r\n return (\r\n <div key={i} className=\"mie:p-3 mie:bg-miebackground mie:border mie:border-mieborder mie:rounded-lg mie:space-y-2\">\r\n <div className=\"mie:flex mie:items-center mie:justify-between mie:mb-2\">\r\n <span className=\"mie:text-xs mie:font-semibold mie:text-mietextmuted mie:uppercase mie:tracking-wide\">Condition {i + 1}</span>\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCond(i)}\r\n className=\"mie:bg-transparent mie:text-mietextmuted/70 mie:hover:text-miedanger mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none\"\r\n title=\"Remove condition\"\r\n disabled={isDisabled}\r\n >\r\n <TRASHCANTWO_ICON className=\"mie:w-4 mie:h-4\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"mie:space-y-2\">\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-mietextmuted mie:mb-1\">When Field</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:text-sm mie:cursor-pointer mie:transition-colors\"\r\n value={c.targetId}\r\n onChange={(e) => updateCond(i, { targetId: e.target.value })}\r\n disabled={isDisabled}\r\n >\r\n <option value=\"\">— Select field —</option>\r\n {filteredTargets.map((t) => (\r\n <option key={t.id} value={t.id}>\r\n {t.label}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n {/* Property Accessor (optional - only for certain field types) */}\r\n {hasPropertyAccessors && (\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-mietextmuted mie:mb-1\">Property (optional)</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:text-sm mie:cursor-pointer mie:transition-colors\"\r\n value={c.propertyAccessor || ''}\r\n onChange={(e) => updateCond(i, { propertyAccessor: e.target.value || undefined })}\r\n disabled={isDisabled || !meta}\r\n >\r\n <option value=\"\">— Direct value —</option>\r\n {propertyAccessors.map((prop) => (\r\n <option key={prop} value={prop}>\r\n .{prop} (get {prop})\r\n </option>\r\n ))}\r\n </select>\r\n <p className=\"mie:text-xs mie:text-mietextmuted mie:mt-1\">\r\n Use .length or .count to compare the number of items\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div className=\"mie:grid mie:grid-cols-2 mie:gap-2\">\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-mietextmuted mie:mb-1\">Operator</label>\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:text-sm mie:cursor-pointer mie:transition-colors\"\r\n value={c.operator}\r\n onChange={(e) => updateCond(i, { operator: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n >\r\n {(meta ? allowedOps : [\"equals\"]).map((op) => (\r\n <option key={op} value={op}>\r\n {getOperatorLabel(op)}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"mie:block mie:text-xs mie:font-medium mie:text-mietextmuted mie:mb-1\">Value</label>\r\n {!needsValue ? (\r\n <div className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:bg-miebackground mie:text-sm mie:text-mietextmuted mie:flex mie:items-center\">\r\n (no value needed)\r\n </div>\r\n ) : hasOptions && !c.propertyAccessor && !isNumericComparison ? (\r\n <select\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:text-sm mie:cursor-pointer mie:transition-colors\"\r\n value={c.value}\r\n onChange={(e) => updateCond(i, { value: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n >\r\n <option value=\"\">— Select option —</option>\r\n {optList.map((opt) => (\r\n <option key={opt.id} value={opt.id}>\r\n {opt.value}\r\n </option>\r\n ))}\r\n </select>\r\n ) : (\r\n <input\r\n className=\"mie:w-full mie:px-3 mie:py-2 mie:border mie:border-mieborder mie:rounded-lg mie:focus:border-mieprimary mie:focus:ring-1 mie:focus:ring-mieprimary/30 mie:outline-none mie:bg-miesurface mie:text-mietext mie:text-sm mie:transition-colors\"\r\n placeholder={c.propertyAccessor || isNumericComparison ? \"Enter number\" : \"Enter value\"}\r\n type={c.propertyAccessor || isNumericComparison ? \"number\" : \"text\"}\r\n value={c.value}\r\n onChange={(e) => updateCond(i, { value: e.target.value })}\r\n disabled={isDisabled || !meta}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport NonSectionEditor from \"./types/NonSectionEditor\";\r\nimport SectionEditor from \"./types/SectionEditor\";\r\nimport LogicEditor from \"./types/LogicEditor\";\r\nimport { useUIApi, useFormStore, EDIT_ICON, EYEEDIT_ICON } from \"@mieweb/forms-engine\";\r\n\r\nexport default function EditPanel({ isMobileModal = false }) {\r\n const ui = useUIApi();\r\n\r\n const selectedField = useFormStore(\r\n React.useCallback(\r\n (s) => (ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null),\r\n [ui.selectedFieldId.value]\r\n )\r\n );\r\n\r\n const [tab, setTab] = React.useState(\"EDIT\");\r\n\r\n const handleActiveChildChange = React.useCallback(\r\n (sectionId, childId) => {\r\n ui.selectedChildId.set(sectionId, childId);\r\n },\r\n [ui.selectedChildId.set]\r\n );\r\n\r\n React.useEffect(() => {\r\n ui.selectedChildId.set(null, null);\r\n setTab(\"EDIT\");\r\n }, [ui.selectedFieldId.value]);\r\n\r\n if (ui.state.isPreview) return null;\r\n\r\n const isNone = !selectedField;\r\n const isSection = selectedField?.fieldType === \"section\";\r\n\r\n return (\r\n <div\r\n className={`edit-panel-container mie:bg-miesurface mie:border mie:border-mieborder mie:rounded-lg mie:shadow-sm ${\r\n isMobileModal\r\n ? \"mie:overflow-visible mie:max-h-none\"\r\n : \"mie:overflow-y-auto mie:custom-scrollbar mie:max-h-[calc(100svh-24rem)] mie:lg:max-h-[calc(100dvh-20rem)]\"\r\n }`}\r\n >\r\n {/* Sticky Header with Mode Toggle */}\r\n <div className=\"mie:sticky mie:top-0 mie:z-20 mie:bg-miesurface mie:border-b mie:border-mieborder mie:px-4 mie:pt-3 mie:pb-2\">\r\n {/* Mode Toggle */}\r\n <div className=\"mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-mieborder mie:bg-miebackground mie:p-1 mie:w-full\">\r\n <button\r\n type=\"button\"\r\n onClick={() => setTab(\"EDIT\")}\r\n className={`mie:flex-1 mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-3 mie:py-2 mie:rounded-lg mie:text-xs mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n tab === \"EDIT\"\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n >\r\n <EDIT_ICON className=\"mie:w-4 mie:h-4\" />\r\n <span>Edit</span>\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => setTab(\"LOGIC\")}\r\n className={`mie:flex-1 mie:flex mie:items-center mie:justify-center mie:gap-2 mie:px-3 mie:py-2 mie:rounded-lg mie:text-xs mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n tab === \"LOGIC\"\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n >\r\n <EYEEDIT_ICON className=\"mie:w-4 mie:h-4\" />\r\n <span>Logic</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Content Area */}\r\n <div className=\"mie:p-4\">\r\n {isNone && (\r\n <div className=\"edit-panel-empty mie:text-mietextmuted\">\r\n <p>Select a field in the center panel to edit its properties.</p>\r\n </div>\r\n )}\r\n\r\n {!isNone && tab === \"EDIT\" && (\r\n <>\r\n {!isSection && <NonSectionEditor f={selectedField} />}\r\n {isSection && (\r\n <SectionEditor\r\n section={selectedField}\r\n onActiveChildChange={handleActiveChildChange}\r\n />\r\n )}\r\n </>\r\n )}\r\n \r\n {!isNone && tab === \"LOGIC\" && <LogicEditor />}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport { fieldTypes, getFieldComponent, useVisibleFields, useFormStore, useUIApi, useUIStore } from \"@mieweb/forms-engine\";\r\n\r\nexport default function FormBuilderMain() {\r\n const ui = useUIApi();\r\n const { fields: visibleFields } = useVisibleFields(ui.state.isPreview);\r\n const hideUnsupportedFields = useUIStore((s) => s.hideUnsupportedFields);\r\n const order = useFormStore((s) => s.order);\r\n const containerRef = React.useRef(null);\r\n const previousOrderLengthRef = React.useRef(0);\r\n\r\n const visibleIds = useMemo(() => {\r\n const filtered = hideUnsupportedFields\r\n ? visibleFields.filter(f => f.fieldType !== 'unsupported')\r\n : visibleFields;\r\n return filtered.map(f => f.id);\r\n }, [visibleFields, hideUnsupportedFields]);\r\n\r\n // Auto-scroll and auto-select newly added field (only in edit mode, only when order length increases)\r\n React.useEffect(() => {\r\n if (ui.state.isPreview) return; // Don't auto-select in preview mode\r\n if (order.length > previousOrderLengthRef.current) {\r\n // A field was actually added to the form (order array increased)\r\n const lastFieldId = order[order.length - 1];\r\n const lastField = containerRef.current?.querySelector(`[data-field-id=\"${lastFieldId}\"]`);\r\n if (lastField) {\r\n lastField.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\r\n ui.selectedFieldId.set(lastFieldId);\r\n }\r\n }\r\n previousOrderLengthRef.current = order.length;\r\n }, [order, ui.selectedFieldId, ui.state.isPreview]);\r\n\r\n return (\r\n <div\r\n ref={containerRef}\r\n className={\r\n `form-builder-main \r\n ${ui.state.isPreview ? `mie:max-w-4xl` : `mie:max-w-xl`} \r\n mie:mx-auto mie:rounded-lg mie:overflow-y-auto mie:max-h-[calc(100svh-13rem)] mie:lg:max-h-[calc(100dvh-11rem)] mie:custom-scrollbar mie:lg:pr-2`\r\n }\r\n onClick={() => !ui.state.isPreview && ui.selectedFieldId.clear()}\r\n >\r\n {visibleIds.length === 0\r\n ? <EmptyState />\r\n : visibleIds.map((id) => <FieldRow key={id} id={id} />)}\r\n </div>\r\n );\r\n}\r\n\r\nconst FieldRow = React.memo(function FieldRow({ id }) {\r\n const field = useFormStore(React.useCallback((s) => s.byId[id], [id]));\r\n\r\n if (!field) return null;\r\n\r\n const FieldComponent = getFieldComponent(field.fieldType);\r\n\r\n if (!FieldComponent) return null;\r\n\r\n return (\r\n <div className=\"mie:mb-1.5\" data-field-type={field.fieldType} data-field-id={field.id}>\r\n <FieldComponent field={field} />\r\n </div>\r\n );\r\n});\r\n\r\nfunction EmptyState() {\r\n return (\r\n <div className=\"form-builder-empty-state mie:flex mie:flex-col mie:items-center mie:justify-center mie:h-72 mie:bg-miebackground mie:border-2 mie:border-dashed mie:border-mieprimary/30 mie:rounded-xl mie:shadow-md mie:text-center mie:px-8 mie:py-10\"\r\n >\r\n <div className=\"empty-state-title mie:text-xl mie:font-semibold mie:text-mietext mie:mb-2\">Forms</div>\r\n <div className=\"empty-state-description mie:text-base mie:text-mietextmuted\">\r\n <div className=\"mie:lg:hidden\">\r\n Tap the <span className=\"mie:font-semibold mie:text-mieprimary\">Tool Panel</span> button to add fields.\r\n </div>\r\n <div className=\"mie:hidden mie:lg:block\">\r\n Add fields using the <span className=\"mie:font-semibold mie:text-mieprimary\">Tool Panel</span> on the left.<br />\r\n Edit field properties using the <span className=\"mie:font-semibold mie:text-mieprimary\">Edit Panel</span> on the right.\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nexport { _arrayLikeToArray as arrayLikeToArray, _arrayWithHoles as arrayWithHoles, _defineProperty as defineProperty, _iterableToArrayLimit as iterableToArrayLimit, _nonIterableRest as nonIterableRest, _objectSpread2 as objectSpread2, _objectWithoutProperties as objectWithoutProperties, _objectWithoutPropertiesLoose as objectWithoutPropertiesLoose, _slicedToArray as slicedToArray, _toPrimitive as toPrimitive, _toPropertyKey as toPropertyKey, _unsupportedIterableToArray as unsupportedIterableToArray };\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n}\n\nfunction curry(fn) {\n return function curried() {\n var _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n nextArgs[_key3] = arguments[_key3];\n }\n\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nfunction isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nfunction isEmpty(obj) {\n return !Object.keys(obj).length;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction validateChanges(initial, changes) {\n if (!isObject(changes)) errorHandler('changeType');\n if (Object.keys(changes).some(function (field) {\n return !hasOwnProperty(initial, field);\n })) errorHandler('changeField');\n return changes;\n}\n\nfunction validateSelector(selector) {\n if (!isFunction(selector)) errorHandler('selectorType');\n}\n\nfunction validateHandler(handler) {\n if (!(isFunction(handler) || isObject(handler))) errorHandler('handlerType');\n if (isObject(handler) && Object.values(handler).some(function (_handler) {\n return !isFunction(_handler);\n })) errorHandler('handlersType');\n}\n\nfunction validateInitial(initial) {\n if (!initial) errorHandler('initialIsRequired');\n if (!isObject(initial)) errorHandler('initialType');\n if (isEmpty(initial)) errorHandler('initialContent');\n}\n\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\n\nvar errorMessages = {\n initialIsRequired: 'initial state is required',\n initialType: 'initial state should be an object',\n initialContent: 'initial state shouldn\\'t be an empty object',\n handlerType: 'handler should be an object or a function',\n handlersType: 'all handlers should be a functions',\n selectorType: 'selector should be a function',\n changeType: 'provided value of changes should be an object',\n changeField: 'it seams you want to change a field in the state which is not specified in the \"initial\" state',\n \"default\": 'an unknown error accured in `state-local` package'\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n changes: validateChanges,\n selector: validateSelector,\n handler: validateHandler,\n initial: validateInitial\n};\n\nfunction create(initial) {\n var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n validators.initial(initial);\n validators.handler(handler);\n var state = {\n current: initial\n };\n var didUpdate = curry(didStateUpdate)(state, handler);\n var update = curry(updateState)(state);\n var validate = curry(validators.changes)(initial);\n var getChanges = curry(extractChanges)(state);\n\n function getState() {\n var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function (state) {\n return state;\n };\n validators.selector(selector);\n return selector(state.current);\n }\n\n function setState(causedChanges) {\n compose(didUpdate, update, validate, getChanges)(causedChanges);\n }\n\n return [getState, setState];\n}\n\nfunction extractChanges(state, causedChanges) {\n return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;\n}\n\nfunction updateState(state, changes) {\n state.current = _objectSpread2(_objectSpread2({}, state.current), changes);\n return changes;\n}\n\nfunction didStateUpdate(state, handler, changes) {\n isFunction(handler) ? handler(state.current) : Object.keys(changes).forEach(function (field) {\n var _handler$field;\n\n return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);\n });\n return changes;\n}\n\nvar index = {\n create: create\n};\n\nexport default index;\n","var config = {\n paths: {\n vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs'\n }\n};\n\nexport { config as default };\n","function curry(fn) {\n return function curried() {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return args.length >= fn.length ? fn.apply(this, args) : function () {\n for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n nextArgs[_key2] = arguments[_key2];\n }\n return curried.apply(_this, [].concat(args, nextArgs));\n };\n };\n}\n\nexport { curry as default };\n","function isObject(value) {\n return {}.toString.call(value).includes('Object');\n}\n\nexport { isObject as default };\n","import curry from '../utils/curry.js';\nimport isObject from '../utils/isObject.js';\n\n/**\n * validates the configuration object and informs about deprecation\n * @param {Object} config - the configuration object \n * @return {Object} config - the validated configuration object\n */\nfunction validateConfig(config) {\n if (!config) errorHandler('configIsRequired');\n if (!isObject(config)) errorHandler('configType');\n if (config.urls) {\n informAboutDeprecation();\n return {\n paths: {\n vs: config.urls.monacoBase\n }\n };\n }\n return config;\n}\n\n/**\n * logs deprecation message\n */\nfunction informAboutDeprecation() {\n console.warn(errorMessages.deprecation);\n}\nfunction throwError(errorMessages, type) {\n throw new Error(errorMessages[type] || errorMessages[\"default\"]);\n}\nvar errorMessages = {\n configIsRequired: 'the configuration object is required',\n configType: 'the configuration object should be an object',\n \"default\": 'an unknown error accured in `@monaco-editor/loader` package',\n deprecation: \"Deprecation warning!\\n You are using deprecated way of configuration.\\n\\n Instead of using\\n monaco.config({ urls: { monacoBase: '...' } })\\n use\\n monaco.config({ paths: { vs: '...' } })\\n\\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\\n \"\n};\nvar errorHandler = curry(throwError)(errorMessages);\nvar validators = {\n config: validateConfig\n};\n\nexport { validators as default, errorHandler, errorMessages };\n","var compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function (x) {\n return fns.reduceRight(function (y, f) {\n return f(y);\n }, x);\n };\n};\n\nexport { compose as default };\n","import { objectSpread2 as _objectSpread2 } from '../_virtual/_rollupPluginBabelHelpers.js';\n\nfunction merge(target, source) {\n Object.keys(source).forEach(function (key) {\n if (source[key] instanceof Object) {\n if (target[key]) {\n Object.assign(source[key], merge(target[key], source[key]));\n }\n }\n });\n return _objectSpread2(_objectSpread2({}, target), source);\n}\n\nexport { merge as default };\n","// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325\n\nvar CANCELATION_MESSAGE = {\n type: 'cancelation',\n msg: 'operation is manually canceled'\n};\nfunction makeCancelable(promise) {\n var hasCanceled_ = false;\n var wrappedPromise = new Promise(function (resolve, reject) {\n promise.then(function (val) {\n return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);\n });\n promise[\"catch\"](reject);\n });\n return wrappedPromise.cancel = function () {\n return hasCanceled_ = true;\n }, wrappedPromise;\n}\n\nexport { CANCELATION_MESSAGE, makeCancelable as default };\n","import { slicedToArray as _slicedToArray, objectWithoutProperties as _objectWithoutProperties } from '../_virtual/_rollupPluginBabelHelpers.js';\nimport state from 'state-local';\nimport config$1 from '../config/index.js';\nimport validators from '../validators/index.js';\nimport compose from '../utils/compose.js';\nimport merge from '../utils/deepMerge.js';\nimport makeCancelable from '../utils/makeCancelable.js';\n\nvar _excluded = [\"monaco\"];\n\n/** the local state of the module */\nvar _state$create = state.create({\n config: config$1,\n isInitialized: false,\n resolve: null,\n reject: null,\n monaco: null\n }),\n _state$create2 = _slicedToArray(_state$create, 2),\n getState = _state$create2[0],\n setState = _state$create2[1];\n\n/**\n * set the loader configuration\n * @param {Object} config - the configuration object\n */\nfunction config(globalConfig) {\n var _validators$config = validators.config(globalConfig),\n monaco = _validators$config.monaco,\n config = _objectWithoutProperties(_validators$config, _excluded);\n setState(function (state) {\n return {\n config: merge(state.config, config),\n monaco: monaco\n };\n });\n}\n\n/**\n * handles the initialization of the monaco-editor\n * @return {Promise} - returns an instance of monaco (with a cancelable promise)\n */\nfunction init() {\n var state = getState(function (_ref) {\n var monaco = _ref.monaco,\n isInitialized = _ref.isInitialized,\n resolve = _ref.resolve;\n return {\n monaco: monaco,\n isInitialized: isInitialized,\n resolve: resolve\n };\n });\n if (!state.isInitialized) {\n setState({\n isInitialized: true\n });\n if (state.monaco) {\n state.resolve(state.monaco);\n return makeCancelable(wrapperPromise);\n }\n if (window.monaco && window.monaco.editor) {\n storeMonacoInstance(window.monaco);\n state.resolve(window.monaco);\n return makeCancelable(wrapperPromise);\n }\n compose(injectScripts, getMonacoLoaderScript)(configureLoader);\n }\n return makeCancelable(wrapperPromise);\n}\n\n/**\n * injects provided scripts into the document.body\n * @param {Object} script - an HTML script element\n * @return {Object} - the injected HTML script element\n */\nfunction injectScripts(script) {\n return document.body.appendChild(script);\n}\n\n/**\n * creates an HTML script element with/without provided src\n * @param {string} [src] - the source path of the script\n * @return {Object} - the created HTML script element\n */\nfunction createScript(src) {\n var script = document.createElement('script');\n return src && (script.src = src), script;\n}\n\n/**\n * creates an HTML script element with the monaco loader src\n * @return {Object} - the created HTML script element\n */\nfunction getMonacoLoaderScript(configureLoader) {\n var state = getState(function (_ref2) {\n var config = _ref2.config,\n reject = _ref2.reject;\n return {\n config: config,\n reject: reject\n };\n });\n var loaderScript = createScript(\"\".concat(state.config.paths.vs, \"/loader.js\"));\n loaderScript.onload = function () {\n return configureLoader();\n };\n loaderScript.onerror = state.reject;\n return loaderScript;\n}\n\n/**\n * configures the monaco loader\n */\nfunction configureLoader() {\n var state = getState(function (_ref3) {\n var config = _ref3.config,\n resolve = _ref3.resolve,\n reject = _ref3.reject;\n return {\n config: config,\n resolve: resolve,\n reject: reject\n };\n });\n var require = window.require;\n require.config(state.config);\n require(['vs/editor/editor.main'], function (loaded) {\n var monaco = loaded.m /* for 0.53 & 0.54 */ || loaded /* for other versions */;\n storeMonacoInstance(monaco);\n state.resolve(monaco);\n }, function (error) {\n state.reject(error);\n });\n}\n\n/**\n * store monaco instance in local state\n */\nfunction storeMonacoInstance(monaco) {\n if (!getState().monaco) {\n setState({\n monaco: monaco\n });\n }\n}\n\n/**\n * internal helper function\n * extracts stored monaco instance\n * @return {Object|null} - the monaco instance\n */\nfunction __getMonacoInstance() {\n return getState(function (_ref4) {\n var monaco = _ref4.monaco;\n return monaco;\n });\n}\nvar wrapperPromise = new Promise(function (resolve, reject) {\n return setState({\n resolve: resolve,\n reject: reject\n });\n});\nvar loader = {\n config: config,\n init: init,\n __getMonacoInstance: __getMonacoInstance\n};\n\nexport { loader as default };\n","import _t from\"@monaco-editor/loader\";import{memo as Te}from\"react\";import ke,{useState as re,useRef as S,useCallback as oe,useEffect as ne}from\"react\";import Se from\"@monaco-editor/loader\";import{memo as ye}from\"react\";import K from\"react\";var le={wrapper:{display:\"flex\",position:\"relative\",textAlign:\"initial\"},fullWidth:{width:\"100%\"},hide:{display:\"none\"}},v=le;import me from\"react\";var ae={container:{display:\"flex\",height:\"100%\",width:\"100%\",justifyContent:\"center\",alignItems:\"center\"}},Y=ae;function Me({children:e}){return me.createElement(\"div\",{style:Y.container},e)}var Z=Me;var $=Z;function Ee({width:e,height:r,isEditorReady:n,loading:t,_ref:a,className:m,wrapperProps:E}){return K.createElement(\"section\",{style:{...v.wrapper,width:e,height:r},...E},!n&&K.createElement($,null,t),K.createElement(\"div\",{ref:a,style:{...v.fullWidth,...!n&&v.hide},className:m}))}var ee=Ee;var H=ye(ee);import{useEffect as xe}from\"react\";function Ce(e){xe(e,[])}var k=Ce;import{useEffect as ge,useRef as Re}from\"react\";function he(e,r,n=!0){let t=Re(!0);ge(t.current||!n?()=>{t.current=!1}:e,r)}var l=he;function D(){}function h(e,r,n,t){return De(e,t)||be(e,r,n,t)}function De(e,r){return e.editor.getModel(te(e,r))}function be(e,r,n,t){return e.editor.createModel(r,n,t?te(e,t):void 0)}function te(e,r){return e.Uri.parse(r)}function Oe({original:e,modified:r,language:n,originalLanguage:t,modifiedLanguage:a,originalModelPath:m,modifiedModelPath:E,keepCurrentOriginalModel:g=!1,keepCurrentModifiedModel:N=!1,theme:x=\"light\",loading:P=\"Loading...\",options:y={},height:V=\"100%\",width:z=\"100%\",className:F,wrapperProps:j={},beforeMount:A=D,onMount:q=D}){let[M,O]=re(!1),[T,s]=re(!0),u=S(null),c=S(null),w=S(null),d=S(q),o=S(A),b=S(!1);k(()=>{let i=Se.init();return i.then(f=>(c.current=f)&&s(!1)).catch(f=>f?.type!==\"cancelation\"&&console.error(\"Monaco initialization: error:\",f)),()=>u.current?I():i.cancel()}),l(()=>{if(u.current&&c.current){let i=u.current.getOriginalEditor(),f=h(c.current,e||\"\",t||n||\"text\",m||\"\");f!==i.getModel()&&i.setModel(f)}},[m],M),l(()=>{if(u.current&&c.current){let i=u.current.getModifiedEditor(),f=h(c.current,r||\"\",a||n||\"text\",E||\"\");f!==i.getModel()&&i.setModel(f)}},[E],M),l(()=>{let i=u.current.getModifiedEditor();i.getOption(c.current.editor.EditorOption.readOnly)?i.setValue(r||\"\"):r!==i.getValue()&&(i.executeEdits(\"\",[{range:i.getModel().getFullModelRange(),text:r||\"\",forceMoveMarkers:!0}]),i.pushUndoStop())},[r],M),l(()=>{u.current?.getModel()?.original.setValue(e||\"\")},[e],M),l(()=>{let{original:i,modified:f}=u.current.getModel();c.current.editor.setModelLanguage(i,t||n||\"text\"),c.current.editor.setModelLanguage(f,a||n||\"text\")},[n,t,a],M),l(()=>{c.current?.editor.setTheme(x)},[x],M),l(()=>{u.current?.updateOptions(y)},[y],M);let L=oe(()=>{if(!c.current)return;o.current(c.current);let i=h(c.current,e||\"\",t||n||\"text\",m||\"\"),f=h(c.current,r||\"\",a||n||\"text\",E||\"\");u.current?.setModel({original:i,modified:f})},[n,r,a,e,t,m,E]),U=oe(()=>{!b.current&&w.current&&(u.current=c.current.editor.createDiffEditor(w.current,{automaticLayout:!0,...y}),L(),c.current?.editor.setTheme(x),O(!0),b.current=!0)},[y,x,L]);ne(()=>{M&&d.current(u.current,c.current)},[M]),ne(()=>{!T&&!M&&U()},[T,M,U]);function I(){let i=u.current?.getModel();g||i?.original?.dispose(),N||i?.modified?.dispose(),u.current?.dispose()}return ke.createElement(H,{width:z,height:V,isEditorReady:M,loading:P,_ref:w,className:F,wrapperProps:j})}var ie=Oe;var we=Te(ie);import{useState as Ie}from\"react\";import ce from\"@monaco-editor/loader\";function Pe(){let[e,r]=Ie(ce.__getMonacoInstance());return k(()=>{let n;return e||(n=ce.init(),n.then(t=>{r(t)})),()=>n?.cancel()}),e}var Le=Pe;import{memo as ze}from\"react\";import We,{useState as ue,useEffect as W,useRef as C,useCallback as _e}from\"react\";import Ne from\"@monaco-editor/loader\";import{useEffect as Ue,useRef as ve}from\"react\";function He(e){let r=ve();return Ue(()=>{r.current=e},[e]),r.current}var se=He;var _=new Map;function Ve({defaultValue:e,defaultLanguage:r,defaultPath:n,value:t,language:a,path:m,theme:E=\"light\",line:g,loading:N=\"Loading...\",options:x={},overrideServices:P={},saveViewState:y=!0,keepCurrentModel:V=!1,width:z=\"100%\",height:F=\"100%\",className:j,wrapperProps:A={},beforeMount:q=D,onMount:M=D,onChange:O,onValidate:T=D}){let[s,u]=ue(!1),[c,w]=ue(!0),d=C(null),o=C(null),b=C(null),L=C(M),U=C(q),I=C(),i=C(t),f=se(m),Q=C(!1),B=C(!1);k(()=>{let p=Ne.init();return p.then(R=>(d.current=R)&&w(!1)).catch(R=>R?.type!==\"cancelation\"&&console.error(\"Monaco initialization: error:\",R)),()=>o.current?pe():p.cancel()}),l(()=>{let p=h(d.current,e||t||\"\",r||a||\"\",m||n||\"\");p!==o.current?.getModel()&&(y&&_.set(f,o.current?.saveViewState()),o.current?.setModel(p),y&&o.current?.restoreViewState(_.get(m)))},[m],s),l(()=>{o.current?.updateOptions(x)},[x],s),l(()=>{!o.current||t===void 0||(o.current.getOption(d.current.editor.EditorOption.readOnly)?o.current.setValue(t):t!==o.current.getValue()&&(B.current=!0,o.current.executeEdits(\"\",[{range:o.current.getModel().getFullModelRange(),text:t,forceMoveMarkers:!0}]),o.current.pushUndoStop(),B.current=!1))},[t],s),l(()=>{let p=o.current?.getModel();p&&a&&d.current?.editor.setModelLanguage(p,a)},[a],s),l(()=>{g!==void 0&&o.current?.revealLine(g)},[g],s),l(()=>{d.current?.editor.setTheme(E)},[E],s);let X=_e(()=>{if(!(!b.current||!d.current)&&!Q.current){U.current(d.current);let p=m||n,R=h(d.current,t||e||\"\",r||a||\"\",p||\"\");o.current=d.current?.editor.create(b.current,{model:R,automaticLayout:!0,...x},P),y&&o.current.restoreViewState(_.get(p)),d.current.editor.setTheme(E),g!==void 0&&o.current.revealLine(g),u(!0),Q.current=!0}},[e,r,n,t,a,m,x,P,y,E,g]);W(()=>{s&&L.current(o.current,d.current)},[s]),W(()=>{!c&&!s&&X()},[c,s,X]),i.current=t,W(()=>{s&&O&&(I.current?.dispose(),I.current=o.current?.onDidChangeModelContent(p=>{B.current||O(o.current.getValue(),p)}))},[s,O]),W(()=>{if(s){let p=d.current.editor.onDidChangeMarkers(R=>{let G=o.current.getModel()?.uri;if(G&&R.find(J=>J.path===G.path)){let J=d.current.editor.getModelMarkers({resource:G});T?.(J)}});return()=>{p?.dispose()}}return()=>{}},[s,T]);function pe(){I.current?.dispose(),V?y&&_.set(m,o.current.saveViewState()):o.current.getModel()?.dispose(),o.current.dispose()}return We.createElement(H,{width:z,height:F,isEditorReady:s,loading:N,_ref:b,className:j,wrapperProps:A})}var fe=Ve;var de=ze(fe);var Ft=de;export{we as DiffEditor,de as Editor,Ft as default,_t as loader,Le as useMonaco};\n//# sourceMappingURL=index.mjs.map","import React from \"react\";\r\nimport Editor from \"@monaco-editor/react\";\r\nimport { useFormStore, useFormData, useUIApi, parseAndDetect, adaptSchema, MIE_FORMS_SCHEMA_TYPE, useAlert } from \"@mieweb/forms-engine\";\r\nimport YAML from \"js-yaml\";\r\n\r\nexport default function CodeEditor() {\r\n const formData = useFormData();\r\n const replaceAll = useFormStore((s) => s.replaceAll);\r\n const ui = useUIApi();\r\n const { showAlert } = useAlert();\r\n const containerRef = React.useRef(null);\r\n const codeRef = React.useRef(\"\");\r\n const editorRef = React.useRef(null);\r\n const hasUnsavedChanges = React.useRef(false);\r\n \r\n const [format, setFormat] = React.useState(\"yaml\"); // \"json\" or \"yaml\"\r\n const [isDark, setIsDark] = React.useState(false);\r\n \r\n // Detect dark mode from parent .qb-editor-root element\r\n React.useEffect(() => {\r\n const editorRoot = document.querySelector(\".qb-editor-root\");\r\n if (!editorRoot) return;\r\n \r\n const checkDarkMode = () => {\r\n setIsDark(editorRoot.classList.contains(\"dark\"));\r\n };\r\n \r\n checkDarkMode();\r\n \r\n const observer = new MutationObserver(checkDarkMode);\r\n observer.observe(editorRoot, { attributes: true, attributeFilter: [\"class\"] });\r\n \r\n return () => observer.disconnect();\r\n }, []);\r\n const [editorHeight, setEditorHeight] = React.useState(640);\r\n const [code, setCode] = React.useState(() => {\r\n try {\r\n return YAML.dump(formData, { indent: 2, lineWidth: -1 });\r\n } catch {\r\n return \"\";\r\n }\r\n });\r\n const [error, setError] = React.useState(\"\");\r\n\r\n // Clear error state on mount if we have valid initial code\r\n React.useEffect(() => {\r\n ui.setCodeEditorHasError(false);\r\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Parse code based on format\r\n const parseCode = React.useCallback((codeText) => {\r\n if (format === \"json\") {\r\n return JSON.parse(codeText);\r\n } else {\r\n return YAML.load(codeText);\r\n }\r\n }, [format]);\r\n\r\n // Serialize data to code based on format\r\n const serializeData = React.useCallback((data) => {\r\n if (format === \"json\") {\r\n return JSON.stringify(data, null, 2);\r\n } else {\r\n return YAML.dump(data, { indent: 2, lineWidth: -1 });\r\n }\r\n }, [format]);\r\n\r\n // Calculate available height on mount and resize\r\n React.useEffect(() => {\r\n const calculateHeight = () => {\r\n if (containerRef.current) {\r\n const containerTop = containerRef.current.getBoundingClientRect().top;\r\n const availableHeight = window.innerHeight - containerTop - 20; // 20px bottom margin\r\n setEditorHeight(Math.max(400, availableHeight)); // min 400px\r\n }\r\n };\r\n\r\n calculateHeight();\r\n window.addEventListener(\"resize\", calculateHeight);\r\n return () => window.removeEventListener(\"resize\", calculateHeight);\r\n }, []);\r\n\r\n // Update code when formData changes (syncing from visual editor)\r\n React.useEffect(() => {\r\n // Don't overwrite if user has unsaved pasted content\r\n if (hasUnsavedChanges.current) return;\r\n \r\n try {\r\n const newCode = serializeData(formData);\r\n setCode(newCode);\r\n codeRef.current = newCode;\r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n setError(`Failed to serialize: ${err.message}`);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n }, [formData, serializeData, ui]);\r\n\r\n const handleCodeChange = (value) => {\r\n setCode(value || \"\");\r\n codeRef.current = value || \"\";\r\n hasUnsavedChanges.current = true;\r\n \r\n // Live validation\r\n try {\r\n const parsed = parseCode(value || \"{}\");\r\n \r\n if (!parsed || typeof parsed !== \"object\") {\r\n throw new Error(\"Invalid form data: must be an object\");\r\n }\r\n \r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n const errorMsg = `Invalid ${format.toUpperCase()}: ${err.message}`;\r\n setError(errorMsg);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n };\r\n\r\n const handleEditorDidMount = (editor) => {\r\n editorRef.current = editor;\r\n \r\n // Listen for paste events\r\n editor.onDidPaste((e) => {\r\n const beforePaste = code;\r\n const fullText = editor.getModel().getValue();\r\n \r\n try {\r\n const parsed = parseCode(fullText);\r\n \r\n if (parsed && typeof parsed === \"object\") {\r\n const { schemaType } = parseAndDetect(parsed);\r\n \r\n if (schemaType === 'surveyjs') {\r\n showAlert(\r\n `This SurveyJS schema will be converted to MIE Forms format.\\n\\nDo you want to proceed with the conversion?`,\r\n {\r\n title: 'ℹ️ SurveyJS Schema Detected',\r\n confirmText: 'Yes, Convert',\r\n cancelText: 'No, Cancel Paste',\r\n onConfirm: () => {\r\n const { fields, conversionReport } = adaptSchema(parsed, schemaType);\r\n const finalSchema = {\r\n schemaType: parsed.schemaType || MIE_FORMS_SCHEMA_TYPE,\r\n ...(conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n \r\n replaceAll(finalSchema);\r\n \r\n const convertedCode = serializeData(finalSchema);\r\n setCode(convertedCode);\r\n codeRef.current = convertedCode;\r\n editor.setValue(convertedCode);\r\n setError(\"\");\r\n hasUnsavedChanges.current = false;\r\n \r\n if (conversionReport) {\r\n ui.setConversionReport(conversionReport);\r\n setTimeout(() => {\r\n const unsupportedCount = conversionReport?.unsupportedFields?.length || 0;\r\n showAlert(\r\n `This schema has been converted to MIE Forms format.\\n\\n` +\r\n `Converted: ${conversionReport?.convertedFields || 0} field(s)\\n` +\r\n `Unsupported: ${unsupportedCount} field(s)${unsupportedCount > 0 ? ' ⚠️' : ''}\\n\\n` +\r\n `Please use MIE Forms schema inside of code editor for the best experience in the future.`,\r\n { title: 'ℹ️ SurveyJS Schema Detected' }\r\n );\r\n }, 100);\r\n }\r\n },\r\n onCancel: () => {\r\n editor.setValue(beforePaste);\r\n setCode(beforePaste);\r\n codeRef.current = beforePaste;\r\n }\r\n }\r\n );\r\n }\r\n }\r\n } catch (err) {\r\n // Invalid JSON/YAML - ignore, validation will handle it\r\n }\r\n });\r\n };\r\n\r\n const handleFormatChange = (newFormat) => {\r\n try {\r\n const currentData = parseCode(code);\r\n const newCode = newFormat === \"json\"\r\n ? JSON.stringify(currentData, null, 2)\r\n : YAML.dump(currentData, { indent: 2, lineWidth: -1 });\r\n \r\n setCode(newCode);\r\n codeRef.current = newCode;\r\n setFormat(newFormat);\r\n setError(\"\");\r\n ui.setCodeEditorHasError(false);\r\n } catch (err) {\r\n setError(`Cannot convert: ${err.message}`);\r\n ui.setCodeEditorHasError(true);\r\n }\r\n };\r\n\r\n // Auto-save when switching away from code editor (component unmounting)\r\n React.useEffect(() => {\r\n return () => {\r\n const currentCode = codeRef.current?.trim();\r\n \r\n if (!currentCode) {\r\n replaceAll({ schemaType: MIE_FORMS_SCHEMA_TYPE, fields: [] });\r\n hasUnsavedChanges.current = false;\r\n return;\r\n }\r\n\r\n try {\r\n const parsed = parseCode(currentCode);\r\n\r\n if (!parsed || typeof parsed !== \"object\") return;\r\n\r\n // Compare with current formData - only save if different\r\n if (JSON.stringify(formData) === JSON.stringify(parsed)) return;\r\n\r\n const { schemaType } = parseAndDetect(parsed);\r\n const { fields, conversionReport } = adaptSchema(parsed, schemaType);\r\n\r\n const finalSchema = {\r\n schemaType: parsed.schemaType || MIE_FORMS_SCHEMA_TYPE,\r\n ...(conversionReport?.surveyMetadata || {}),\r\n fields\r\n };\r\n\r\n if (conversionReport) {\r\n ui.setConversionReport(conversionReport);\r\n }\r\n\r\n replaceAll(finalSchema);\r\n ui.setCodeEditorHasError(false);\r\n hasUnsavedChanges.current = false;\r\n } catch (err) {\r\n // Silently fail - error already shown in editor header\r\n }\r\n };\r\n }, [parseCode, replaceAll, ui, formData]);\r\n\r\n return (\r\n <div ref={containerRef} className=\"code-editor-container mie:flex mie:flex-col mie:bg-miebackground mie:max-w-7xl mie:w-full\" style={{ height: `${editorHeight}px` }}>\r\n {/* Header with format toggle and save button */}\r\n <div className=\"code-editor-header mie:flex mie:items-center mie:justify-between mie:gap-3 mie:p-4 mie:bg-miesurface mie:border-b mie:border-mieborder\">\r\n <div className=\"mie:flex mie:items-center mie:gap-2\">\r\n <div className=\"mie:flex mie:gap-1 mie:rounded-lg mie:border mie:border-mieborder mie:bg-miebackground mie:p-1\">\r\n <button\r\n onClick={() => handleFormatChange(\"yaml\")}\r\n className={`mie:px-3 mie:py-1 mie:rounded-md mie:text-sm mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n format === \"yaml\"\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n >\r\n YAML\r\n </button>\r\n <button\r\n onClick={() => handleFormatChange(\"json\")}\r\n className={`mie:px-3 mie:py-1 mie:rounded-md mie:text-sm mie:font-medium mie:transition-colors mie:border-0 mie:outline-none mie:focus:outline-none ${\r\n format === \"json\"\r\n ? \"mie:bg-mieprimary mie:text-mietextsecondary mie:shadow-sm\"\r\n : \"mie:bg-transparent mie:text-mietextmuted mie:hover:text-mietext mie:hover:bg-miesurface\"\r\n }`}\r\n >\r\n JSON\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mie:flex mie:items-center mie:gap-2\">\r\n <div className=\"mie:text-xs mie:text-mietextmuted mie:px-3 mie:py-1\">\r\n Auto-saves when switching tabs\r\n </div>\r\n {error && (\r\n <div className=\"mie:text-xs mie:text-miedanger mie:bg-miedanger/10 mie:px-3 mie:py-1 mie:rounded-lg\">\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Editor */}\r\n <div className=\"code-editor-content mie:flex-1 mie:overflow-hidden\">\r\n <Editor\r\n height=\"100%\"\r\n language={format}\r\n value={code}\r\n onChange={handleCodeChange}\r\n onMount={handleEditorDidMount}\r\n theme={isDark ? \"vs-dark\" : \"light\"}\r\n options={{\r\n minimap: { enabled: false },\r\n fontSize: 13,\r\n lineHeight: 1.5,\r\n wordWrap: \"on\",\r\n formatOnPaste: true,\r\n formatOnType: true,\r\n tabSize: 2,\r\n automaticLayout: true,\r\n scrollBeyondLastLine: false,\r\n padding: { top: 16 },\r\n contextmenu: true,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport ToolPanel from \"./toolPanel/ToolPanel\";\r\nimport EditPanel from \"./editPanel/EditPanel\";\r\nimport FormBuilderMain from \"../FormBuilderMain\";\r\nimport CodeEditor from \"../CodeEditor\";\r\nimport { useUIApi } from \"@mieweb/forms-engine\";\r\n\r\nexport default function Layout({ selectedField }) {\r\n const ui = useUIApi();\r\n const [isMobileToolPanelOpen, setIsMobileToolPanelOpen] = React.useState(false);\r\n\r\n const isPreview = ui.state.isPreview;\r\n const isCodeEditor = ui.state.isCodeEditor;\r\n const isEditModalOpen = ui.state.isEditModalOpen;\r\n const panelResetKey = ui.state.panelResetKey;\r\n\r\n const editMode = !isPreview;\r\n\r\n return (\r\n <div className=\"layout-container mie:w-full mie:h-fit mie:rounded-lg mie:mt-3\">\r\n {isCodeEditor ? (\r\n <div className=\"mie:border mie:border-mieborder mie:rounded-lg\">\r\n <CodeEditor />\r\n </div>\r\n\r\n ) : (\r\n <div className={`layout-grid mie:flex mie:lg:gap-3 mie:h-full`}>\r\n {editMode && (\r\n <div className=\"layout-tool-panel mie:hidden mie:lg:block mie:lg:w-72\">\r\n <ToolPanel />\r\n </div>\r\n )}\r\n\r\n <div className=\"layout-main-content mie:flex-1 mie:min-w-0\">\r\n <FormBuilderMain />\r\n </div>\r\n\r\n {editMode && (\r\n <div className=\"layout-edit-panel mie:hidden mie:lg:block mie:lg:w-90 mie:md:w-80\">\r\n <EditPanel key={panelResetKey} />\r\n </div>\r\n )}\r\n\r\n {editMode && (\r\n <div className=\"layout-mobile-modal mie:lg:hidden\">\r\n {isEditModalOpen && selectedField && (\r\n <>\r\n <div\r\n className=\"mie:fixed mie:inset-0 mie:z-40 mie:bg-mieoverlay mie:lg:hidden\"\r\n onClick={() => ui.modal.set(false)}\r\n />\r\n <div className=\"mie:fixed mie:bottom-0 mie:left-0 mie:right-0 mie:z-50 mie:bg-miesurface mie:rounded-t-2xl mie:shadow-2xl mie:max-h-[60vh] mie:overflow-y-auto mie:custom-scrollbar mie:lg:hidden\">\r\n <EditPanel key={panelResetKey} isMobileModal={true} />\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Mobile Tool Panel - Slides up above keyboard */}\r\n {editMode && !isCodeEditor && (\r\n <>\r\n {/* Floating button to open mobile tool panel */}\r\n <button\r\n onClick={() => setIsMobileToolPanelOpen(!isMobileToolPanelOpen)}\r\n className=\"mie:lg:hidden mie:fixed mie:bottom-5 mie:left-5 mie:z-40 mie:bg-mieprimary mie:hover:bg-mieprimary/90 mie:text-miesurface mie:rounded-full mie:w-12 mie:h-12 mie:flex mie:items-center mie:justify-center mie:shadow-lg mie:transition-all\"\r\n title=\"Add field\"\r\n >\r\n <svg className=\"mie:w-6 mie:h-6\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 4v16m8-8H4\" />\r\n </svg>\r\n </button>\r\n\r\n {/* Mobile Tool Panel Sheet */}\r\n {isMobileToolPanelOpen && (\r\n <>\r\n <div className=\"mie:fixed mie:inset-0 mie:z-40 mie:bg-mieoverlay mie:lg:hidden\"\r\n onClick={() => setIsMobileToolPanelOpen(false)}\r\n />\r\n <div className=\"mie:fixed mie:bottom-0 mie:left-0 mie:right-0 mie:z-50 mie:bg-miesurface mie:rounded-t-2xl mie:shadow-2xl mie:max-h-[60vh] mie:overflow-y-auto mie:custom-scrollbar mie:lg:hidden\">\r\n <ToolPanel />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import React from 'react';\r\nimport Header from './components/Header.jsx';\r\nimport Layout from './components/desktopLayout/Layout.jsx';\r\n\r\nimport {\r\n FormStoreContext,\r\n UIStoreContext,\r\n createFormStore,\r\n createUIStore,\r\n useUIApi,\r\n adaptSchema,\r\n parseAndDetect,\r\n AlertProvider,\r\n} from '@mieweb/forms-engine';\r\nimport { useStore } from 'zustand';\r\nimport './index.css';\r\n\r\n/**\r\n * QuestionnaireEditor - Interactive questionnaire builder/editor\r\n * @param {string|object} initialFormData - YAML string, JSON string, or form data object\r\n * @param {string} [schemaType] - Optional: 'mieforms' or 'surveyjs' (auto-detected if not provided)\r\n * @param {function} [onChange] - Callback fired when form data changes\r\n * @param {string} [className] - Additional CSS classes\r\n * @param {boolean} [showHeader=true] - Show editor header\r\n * @param {boolean} [startInPreview=false] - Start in preview mode\r\n * @param {boolean} [hideUnsupportedFields=false] - Hide unsupported field types\r\n * @param {'light'|'dark'|'auto'} [theme='auto'] - Theme: 'light', 'dark', or 'auto' (detects from parent)\r\n */\r\nfunction QuestionnaireEditorInner({\r\n initialFormData,\r\n schemaType,\r\n onChange,\r\n className = '',\r\n showHeader = true,\r\n startInPreview = false,\r\n hideUnsupportedFields = false,\r\n theme = 'auto',\r\n}) {\r\n const [codeFormat, setCodeFormat] = React.useState(\"json\");\r\n const ui = useUIApi();\r\n const formStoreInitialized = React.useRef(false);\r\n const formStore = React.useContext(FormStoreContext);\r\n\r\n React.useEffect(() => {\r\n if (formStoreInitialized.current || !formStore) return;\r\n if (initialFormData) {\r\n try {\r\n const { data, schemaType: detectedType } = parseAndDetect(initialFormData, schemaType);\r\n const result = adaptSchema(data, detectedType);\r\n \r\n if (result.conversionReport) {\r\n ui.setConversionReport(result.conversionReport);\r\n }\r\n \r\n const schemaObject = {\r\n schemaType: detectedType === 'surveyjs' ? 'mieforms-v1.0' : (data.schemaType || 'mieforms-v1.0'),\r\n fields: result.fields || []\r\n };\r\n \r\n // Preserve original metadata for SurveyJS schemas\r\n if (detectedType === 'surveyjs' && result.conversionReport?.surveyMetadata) {\r\n Object.assign(schemaObject, result.conversionReport.surveyMetadata);\r\n } else if (detectedType === 'mieforms') {\r\n // For MIE Forms, preserve any metadata that's not fields or schemaType\r\n const { fields: _f, schemaType: _st, ...metadata } = data;\r\n if (Object.keys(metadata).length > 0) {\r\n Object.assign(schemaObject, metadata);\r\n }\r\n }\r\n \r\n if (Array.isArray(schemaObject.fields) && schemaObject.fields.length) {\r\n formStore.getState().replaceAll(schemaObject);\r\n }\r\n } catch {\r\n formStore.getState().replaceAll({ schemaType: 'mieforms-v1.0', fields: [] });\r\n }\r\n }\r\n ui.preview.set(!!startInPreview);\r\n formStoreInitialized.current = true;\r\n }, [initialFormData, schemaType, startInPreview, ui, formStore]);\r\n\r\n React.useEffect(() => {\r\n ui.setHideUnsupportedFields(hideUnsupportedFields);\r\n }, [hideUnsupportedFields, ui]);\r\n\r\n React.useEffect(() => {\r\n if (!onChange || !formStore) return;\r\n return formStore.subscribe((s) => {\r\n onChange({\r\n schemaType: s.schemaType || 'mieforms-v1.0',\r\n ...s.schemaMetadata,\r\n fields: s.order.map(id => s.byId[id])\r\n });\r\n });\r\n }, [onChange, formStore]);\r\n\r\n const selectedField = useStore(formStore, (s) => \r\n ui.selectedFieldId.value ? s.byId[ui.selectedFieldId.value] : null\r\n );\r\n\r\n // Theme detection\r\n const [isDark, setIsDark] = React.useState(() => {\r\n if (theme === 'dark') return true;\r\n if (theme === 'light') return false;\r\n // Auto-detect from document\r\n if (typeof document !== 'undefined') {\r\n return document.documentElement.getAttribute('data-theme') === 'dark' ||\r\n document.documentElement.classList.contains('dark') ||\r\n document.body.classList.contains('dark');\r\n }\r\n return false;\r\n });\r\n\r\n React.useEffect(() => {\r\n if (theme !== 'auto') {\r\n setIsDark(theme === 'dark');\r\n return;\r\n }\r\n // Watch for theme changes (Docusaurus, etc.)\r\n const observer = new MutationObserver(() => {\r\n const dark = document.documentElement.getAttribute('data-theme') === 'dark' ||\r\n document.documentElement.classList.contains('dark') ||\r\n document.body.classList.contains('dark');\r\n setIsDark(dark);\r\n });\r\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme', 'class'] });\r\n observer.observe(document.body, { attributes: true, attributeFilter: ['class'] });\r\n return () => observer.disconnect();\r\n }, [theme]);\r\n\r\n return (\r\n <div className={`qb-editor-root editor-container mie:w-full mie:max-w-7xl mie:mx-auto mie:bg-miebackground mie:font-titillium ${isDark ? 'dark' : ''} ${className}`}>\r\n <AlertProvider>\r\n {showHeader && <Header codeFormat={codeFormat} onCodeFormatChange={setCodeFormat} />}\r\n <Layout selectedField={selectedField} codeFormat={codeFormat} />\r\n </AlertProvider>\r\n </div>\r\n );\r\n}\r\n\r\nexport function QuestionnaireEditor(props) {\r\n const formStore = React.useRef(createFormStore()).current;\r\n const uiStore = React.useRef(createUIStore()).current;\r\n\r\n return (\r\n <FormStoreContext.Provider value={formStore}>\r\n <UIStoreContext.Provider value={uiStore}>\r\n <QuestionnaireEditorInner {...props} />\r\n </UIStoreContext.Provider>\r\n </FormStoreContext.Provider>\r\n );\r\n}\r\n"],"names":["REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","reactJsxRuntime_production","getComponentNameFromType","REACT_CLIENT_REFERENCE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","owner","debugStack","debugTask","refProp","jsxDEVImpl","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxRuntime_development","trackActualOwner","jsxRuntimeModule","require$$1","Header","showSchemaConfirm","setShowSchemaConfirm","pendingImport","setPendingImport","replaceAll","useFormStore","s","formData","useFormData","showAlert","useAlert","ui","useUIApi","isPreview","isCodeEditor","codeEditorHasError","handleFileSelect","fileContent","text","data","schemaType","parseAndDetect","err","confirmImport","confirmedSchemaType","result","adaptSchema","fields","schemaObject","_f","_st","metadata","report","unsupportedCount","cancelImport","onEdit","onCodeEditor","onPreview","onExport","json","blob","url","a","jsxs","jsx","VEDITOR_ICON","CODE_ICON","PICTURE_ICON","UPLOAD_ICON","e","file","reader","ev","DOWNLOAD_ICON","getCategoryIcon","categoryName","TEXTINPUT_ICON","FOLDERS_ICON","SELECTINPUT_ICON","RANKING_ICON","MATRIX_ICON","PAPERCLIP_ICON","ToolPanelImpl","addField","selectedField","useCallback","isSectionSelected","sectionTitle","handleClearSelection","handleKeyDown","categories","useMemo","fieldTypes","category","handlers","m","items","TOOLS_ICON","X_ICON","IconComponent","label","isDisabled","ToolPanel","prev","next","DraftIdEditor","id","onCommit","validate","placeholder","className","draft","setDraft","setErr","commit","msg","INPUT_TYPES","UNITS","InputTypeEditor","field","onUpdate","inputType","unit","showUnitSelector","units","u","CommonEditor","f","onUpdateField","byId","validateId","newId","oldId","allIds","child","CustomCheckbox","checked","OptionListEditor","api","opts","isBoolean","isMultitext","containerRef","prevCountRef","singular","lastChild","opt","TRASHCANTWO_ICON","MatrixEditor","rows","columns","rowsContainerRef","colsContainerRef","prevRowCountRef","prevColCountRef","row","col","NonSectionEditor","useFormApi","fieldConfig","hasOptions","hasMatrix","Fragment","SectionEditor","section","onActiveChildChange","sectionApi","formStore","FormStoreContext","globalParentId","globalChildId","initialChildId","c","activeChildId","setActiveChildId","prevGlobalChildIdRef","handleChildSelect","childId","getFieldLabel","onUpdateSection","activeChild","childApi","validChildApi","onUpdateChild","curr","onDeleteChild","hasOptionsChild","hasMatrixChild","ARROWDOWN_ICON","getOperatorsForFieldType","fieldType","displayFormat","NUMERIC_EXPRESSION_FORMATS","getPropertyAccessorsForFieldType","getOperatorLabel","op","normOption","LogicEditor","setEnableWhen","updateField","selectedId","rawChildId","isSectionCtx","sectionChildren","childValidForSection","initialTarget","target","setTarget","handleTargetChange","newTarget","cid","isChildScope","effectiveChildId","effectiveId","targets","out","sectTitle","findTarget","tid","t","writeEnableWhen","normalized","ew","addCond","clear","removeCond","idx","nextConds","_","i","updateCond","patch","updated","meta","ops","o","filteredTargets","allowedOps","propertyAccessors","hasPropertyAccessors","optList","needsValue","isNumericComparison","prop","EditPanel","isMobileModal","tab","setTab","handleActiveChildChange","sectionId","isNone","isSection","EDIT_ICON","EYEEDIT_ICON","FormBuilderMain","visibleFields","useVisibleFields","hideUnsupportedFields","useUIStore","order","previousOrderLengthRef","visibleIds","lastFieldId","lastField","EmptyState","FieldRow","FieldComponent","getFieldComponent","_arrayLikeToArray","r","_arrayWithHoles","_defineProperty","_toPropertyKey","_iterableToArrayLimit","l","n","_nonIterableRest","ownKeys","_objectSpread2","_objectWithoutProperties","_objectWithoutPropertiesLoose","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","obj","enumerableOnly","symbols","sym","source","compose","_len","fns","_key","x","y","curry","fn","curried","_this","_len2","args","_key2","_len3","nextArgs","_key3","isObject","isEmpty","isFunction","property","validateChanges","initial","changes","errorHandler","validateSelector","selector","validateHandler","handler","_handler","validateInitial","throwError","errorMessages","validators","create","state","didUpdate","didStateUpdate","update","updateState","getChanges","extractChanges","getState","setState","causedChanges","_handler$field","index","validateConfig","informAboutDeprecation","merge","CANCELATION_MESSAGE","makeCancelable","promise","hasCanceled_","wrappedPromise","resolve","reject","val","_excluded","_state$create","config$1","_state$create2","globalConfig","_validators$config","monaco","init","_ref","isInitialized","wrapperPromise","storeMonacoInstance","injectScripts","getMonacoLoaderScript","configureLoader","script","createScript","src","_ref2","loaderScript","_ref3","require","loaded","error","__getMonacoInstance","_ref4","loader","le","v","ae","Y","Me","me","Z","$","Ee","E","K","ee","H","ye","Ce","xe","he","Re","ge","D","h","De","be","te","Oe","g","N","P","V","z","F","j","A","q","M","O","re","T","S","w","d","b","Se","I","L","oe","U","ne","ke","ie","Te","He","ve","Ue","se","Ve","ue","C","Q","B","p","Ne","R","pe","X","_e","W","G","J","We","fe","de","ze","Ft","CodeEditor","codeRef","editorRef","hasUnsavedChanges","format","setFormat","isDark","setIsDark","editorRoot","checkDarkMode","observer","editorHeight","setEditorHeight","code","setCode","YAML","setError","parseCode","codeText","serializeData","calculateHeight","containerTop","availableHeight","newCode","handleCodeChange","parsed","errorMsg","handleEditorDidMount","editor","beforePaste","fullText","conversionReport","finalSchema","MIE_FORMS_SCHEMA_TYPE","convertedCode","handleFormatChange","newFormat","currentData","currentCode","Editor","Layout","isMobileToolPanelOpen","setIsMobileToolPanelOpen","isEditModalOpen","panelResetKey","editMode","QuestionnaireEditorInner","initialFormData","onChange","showHeader","startInPreview","theme","codeFormat","setCodeFormat","formStoreInitialized","detectedType","useStore","dark","AlertProvider","QuestionnaireEditor","createFormStore","uiStore","createUIStore","UIStoreContext"],"mappings":"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","x_google_ignoreList":[0,1,2,15,16,17,18,19,20,21,22,23,24,25]}