@mieweb/forms-editor 1.0.2 → 1.2.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/README.md +6 -6
- package/dist/index.js +1492 -1696
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/react/cjs/react-jsx-runtime.production.min.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/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.min.js\n *\n * Copyright (c) Facebook, Inc. and its 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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its 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\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%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://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` 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://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('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 {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.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, 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\r\n const ui = useUIApi();\r\n const isPreview = ui.state.isPreview;\r\n const isCodeEditor = ui.state.isCodeEditor ?? 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 alert(`Unsupported or invalid schema format.\\n\\nExpected: MIE Forms or SurveyJS\\nDetected: ${schemaType}`);\r\n return;\r\n }\r\n\r\n setPendingImport({ data, detectedSchemaType: schemaType });\r\n setShowSchemaConfirm(true);\r\n } catch (err) {\r\n alert(`Failed to parse file:\\n\\n${err?.message || \"Invalid file format\"}`);\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 fields\r\n };\r\n\r\n // Preserve original metadata for SurveyJS schemas\r\n if (confirmedSchemaType === 'surveyjs' && result.conversionReport?.surveyMetadata) {\r\n Object.assign(schemaObject, result.conversionReport.surveyMetadata);\r\n } else 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 alert(`✅ Import successful!\\n\\nFormat: ${confirmedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}\\nLoaded ${fields.length} field(s)`);\r\n\r\n setShowSchemaConfirm(false);\r\n setPendingImport(null);\r\n } catch (err) {\r\n alert(`Import failed:\\n\\n${err?.message || \"Invalid format\"}`);\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 w-full bg-white border border-gray-200 rounded-lg shadow-sm\">\r\n <div className=\"px-4 py-4\">\r\n {/* Top row: Logo/Title */}\r\n <div className=\"mb-4\">\r\n <h1 className=\"text-lg lg:text-2xl font-bold text-slate-900\">Editor</h1>\r\n </div>\r\n\r\n {/* Bottom row: View Mode Tabs + Import/Export */}\r\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\r\n <div className=\"header-mode-toggle flex gap-1 rounded-lg border border-black/10 bg-black/5 p-1 w-fit\">\r\n <button\r\n className={`flex items-center justify-center gap-2 px-2 lg:px-4 py-2 lg:py-2 rounded-lg text-xs lg:text-sm font-medium transition-colors ${!isPreview && !isCodeEditor\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 hover:text-slate-900\"\r\n }`}\r\n onClick={onEdit}\r\n title=\"Visual Editor\"\r\n >\r\n <VEDITOR_ICON className=\"w-5 h-5\" />\r\n <span>Build</span>\r\n </button>\r\n <button\r\n className={`flex items-center justify-center gap-2 px-2 lg:px-4 py-2 lg:py-2 rounded-lg text-xs lg:text-sm font-medium transition-colors ${isCodeEditor\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 hover:text-slate-900\"\r\n }`}\r\n onClick={onCodeEditor}\r\n title=\"Code Editor\"\r\n >\r\n <CODE_ICON className=\"w-5 h-5\" />\r\n <span>Code</span>\r\n </button>\r\n <button\r\n className={`flex items-center justify-center gap-2 px-2 lg:px-4 py-2 lg:py-2 rounded-lg text-xs lg:text-sm font-medium transition-colors ${isPreview\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 hover:text-slate-900\"\r\n }`}\r\n onClick={onPreview}\r\n title=\"Preview\"\r\n >\r\n <PICTURE_ICON className=\"w-5 h-5\" />\r\n <span>Preview</span>\r\n </button>\r\n </div>\r\n\r\n <div className=\"header-actions flex gap-1 items-center\">\r\n <label className=\"header-import-label px-2 py-2 lg:px-3 lg:py-2 rounded-lg border border-black/15 bg-white hover:bg-black/5 cursor-pointer text-xs lg:text-sm font-medium transition-colors flex items-center lg:gap-2 gap-0\">\r\n <UPLOAD_ICON className=\"w-4 h-4 lg:w-4 lg:h-4\" />\r\n <span className=\"hidden min-[445px]:inline\">Import</span>\r\n <input\r\n className=\"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=\"px-2 py-2 lg:px-3 lg:py-2 rounded-lg border border-black/15 bg-white hover:bg-black/5 text-xs lg:text-sm font-medium transition-colors flex items-center lg:gap-2 gap-0\"\r\n onClick={onExport}\r\n title=\"Export\"\r\n >\r\n <DOWNLOAD_ICON className=\"w-4 h-4 lg:w-4 lg:h-4\" />\r\n <span className=\"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 fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\r\n <div className=\"import-modal-content bg-white rounded-2xl shadow-2xl max-w-md w-full p-6\">\r\n <div className=\"import-modal-header mb-6\">\r\n <h3 className=\"text-xl font-semibold text-slate-900 mb-2\">\r\n Confirm Schema Type\r\n </h3>\r\n <p className=\"text-sm text-slate-600\">\r\n Is this a <strong className=\"text-slate-900\">{pendingImport.detectedSchemaType === 'surveyjs' ? 'SurveyJS' : 'MIE Forms'}</strong> schema?\r\n </p>\r\n {pendingImport.detectedSchemaType === 'surveyjs' && (\r\n <p className=\"text-xs text-slate-500 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 flex gap-3\">\r\n <button\r\n onClick={() => confirmImport(pendingImport.detectedSchemaType)}\r\n className=\"flex-1 px-6 py-3 rounded-xl bg-blue-500 text-white font-semibold hover:bg-blue-600 transition-colors shadow-sm hover:shadow\"\r\n >\r\n Yes, Import\r\n </button>\r\n\r\n <button\r\n onClick={cancelImport}\r\n className=\"flex-1 px-6 py-3 rounded-xl border-2 border-slate-300 bg-white hover:bg-slate-50 text-slate-700 font-semibold 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=\" border border-gray-200 rounded-lg bg-white overflow-y-auto custom-scrollbar max-h-[calc(100svh-24rem)] lg:max-h-[calc(100dvh-20rem)]\"\r\n tabIndex=\"-1\"\r\n >\r\n <div className=\"tool-panel-container pb-4 rounded-lg shadow-sm\">\r\n <h3 className=\"tool-panel-title sticky top-0 z-20 bg-white text-base font-semibold pb-2 pt-3 px-4 border-b border-gray-200 flex items-center justify-between gap-2\">\r\n <span className=\"flex items-center gap-2 min-w-0\">\r\n <TOOLS_ICON className=\"w-5 h-5 text-gray-700 shrink-0\" />\r\n <span className=\"truncate\">{isSectionSelected ? `Add to \"${sectionTitle}\"` : \"Tools\"}</span>\r\n </span>\r\n {isSectionSelected && (\r\n <button\r\n onClick={handleClearSelection}\r\n className=\"text-gray-600 hover:text-red-600 hover:bg-red-50 p-1 rounded transition-colors shrink-0\"\r\n title=\"Unselect section\"\r\n >\r\n <X_ICON className=\"w-5 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=\"sticky top-11 z-10 bg-gray-50 text-sm font-semibold text-gray-700 px-4 py-3 border-b border-gray-100 uppercase tracking-wide flex items-center gap-2\">\r\n {(() => {\r\n const IconComponent = getCategoryIcon(categoryName);\r\n return IconComponent ? <IconComponent className=\"w-4 h-4 text-gray-600\" /> : null;\r\n })()}\r\n {categoryName}\r\n </h4>\r\n <div className=\"tool-items grid grid-cols-1 gap-2 px-4 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={`px-3 py-2 text-sm text-left border rounded-md transition-colors duration-150 ${\r\n isDisabled\r\n ? \"border-gray-200 bg-gray-50 text-gray-400 cursor-not-allowed\"\r\n : \"border-gray-300 hover:bg-blue-50 hover:border-blue-400 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=\"block text-sm mb-1\">{label}</label>\r\n <input\r\n className=\"w-full px-3 py-2 border border-black/20 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=\"text-xs text-red-600 mt-1\">{err}</p> : null}\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\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 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=\"block text-sm mb-1\">Label / Question</label>\r\n <input\r\n className=\"w-full px-3 py-2 border border-black/20 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 <div>\r\n <label className=\"inline-flex items-center gap-2 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\r\n <div>\r\n <label className=\"block text-sm mb-1\">Sublabel (optional)</label>\r\n <textarea\r\n className=\"w-full px-3 py-2 border border-black/20 rounded\"\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 </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=\"space-y-3\">\r\n <label className=\"block text-sm font-medium text-gray-700\">{label}</label>\r\n <div ref={containerRef} className=\"space-y-2\">\r\n {opts.map((opt) => (\r\n <div key={opt.id} className=\"flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-lg shadow-sm hover:border-gray-400 transition-colors\">\r\n <input\r\n className=\"flex-1 min-w-0 outline-none 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=\"flex-shrink-0 text-gray-400 hover:text-red-600 transition-colors\"\r\n title=\"Remove option\"\r\n >\r\n <TRASHCANTWO_ICON className=\"w-5 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=\"w-full px-3 py-2 text-sm font-medium text-blue-600 border border-blue-300 rounded-lg hover:bg-blue-50 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=\"space-y-4\">\r\n {/* Rows Section */}\r\n <div className=\"space-y-3\">\r\n <label className=\"block text-sm font-medium text-gray-700\">Rows</label>\r\n <div ref={rowsContainerRef} className=\"space-y-2\">\r\n {rows.map((row) => (\r\n <div key={row.id} className=\"flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-lg shadow-sm hover:border-gray-400 transition-colors\">\r\n <input\r\n className=\"flex-1 min-w-0 outline-none 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=\"flex-shrink-0 text-gray-400 hover:text-red-600 transition-colors\"\r\n title=\"Remove row\"\r\n >\r\n <TRASHCANTWO_ICON className=\"w-5 h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {rows.length >= 10 ? (\r\n <div className=\"px-3 py-2 text-sm text-gray-500 text-center bg-gray-50 rounded-lg\">Max rows reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.row.add(\"\")}\r\n className=\"w-full px-3 py-2 text-sm font-medium text-blue-600 border border-blue-300 rounded-lg hover:bg-blue-50 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=\"space-y-3\">\r\n <label className=\"block text-sm font-medium text-gray-700\">Columns</label>\r\n <div ref={colsContainerRef} className=\"space-y-2\">\r\n {columns.map((col) => (\r\n <div key={col.id} className=\"flex items-center gap-2 px-3 py-2 border border-gray-300 rounded-lg shadow-sm hover:border-gray-400 transition-colors\">\r\n <input\r\n className=\"flex-1 min-w-0 outline-none 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=\"flex-shrink-0 text-gray-400 hover:text-red-600 transition-colors\"\r\n title=\"Remove column\"\r\n >\r\n <TRASHCANTWO_ICON className=\"w-5 h-5\" />\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n {columns.length >= 10 ? (\r\n <div className=\"px-3 py-2 text-sm text-gray-500 text-center bg-gray-50 rounded-lg\">Max columns reached (10)</div>\r\n ) : (\r\n <button\r\n onClick={() => api.column.add(\"\")}\r\n className=\"w-full px-3 py-2 text-sm font-medium text-blue-600 border border-blue-300 rounded-lg hover:bg-blue-50 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 <h3 className=\"text-lg font-semibold mb-3\">Edit</h3>\r\n <CommonEditor f={f} onUpdateField={onUpdateField} />\r\n\r\n {f.fieldType === \"input\" && (\r\n <div className=\"non-section-editor-default-answer mt-4\">\r\n <div className=\"text-sm font-medium mb-1\">Default Answer</div>\r\n <input\r\n className=\"w-full px-3 py-2 border border-black/20 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 const [activeChildId, setActiveChildId] = React.useState(children[0]?.id || null);\r\n\r\n // Sync with global selectedChildId from section\r\n React.useEffect(() => {\r\n const globalParentId = ui.selectedChildId.ParentId;\r\n const globalChildId = ui.selectedChildId.ChildId;\r\n if (globalParentId === section.id && globalChildId) {\r\n setActiveChildId(globalChildId);\r\n }\r\n }, [ui.selectedChildId.ParentId, ui.selectedChildId.ChildId, section.id]);\r\n\r\n React.useEffect(() => {\r\n setActiveChildId(children[0]?.id || null);\r\n }, [section.id]);\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=\"space-y-4\">\r\n {/* Section Properties */}\r\n <div className=\"space-y-3\">\r\n <h3 className=\"text-sm font-semibold text-gray-700 uppercase 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=\"block text-sm font-medium text-gray-700 mb-1\">Section Title</label>\r\n <input\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded focus:border-blue-400 focus:ring-1 focus:ring-blue-400 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=\"space-y-3\">\r\n <h3 className=\"text-sm font-semibold text-gray-700 uppercase tracking-wide\">\r\n Fields ({children.length})\r\n </h3>\r\n \r\n {children.length === 0 ? (\r\n <div className=\"flex flex-col items-center justify-center p-6 bg-gray-50 border-2 border-dashed border-gray-200 rounded-lg text-center\">\r\n <p className=\"text-sm text-gray-500\">No fields in this section</p>\r\n <p className=\"text-xs text-gray-400 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=\"relative\">\r\n <select\r\n className=\"w-full px-3 py-2 pr-10 border border-gray-300 rounded bg-white focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none appearance-none 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=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-500 pointer-events-none\" />\r\n </div>\r\n\r\n {activeChild && (\r\n <div className=\"space-y-4 p-4 bg-gray-50 border border-gray-200 rounded-lg\">\r\n {/* Field Type Badge */}\r\n <div className=\"flex items-center justify-between\">\r\n <span className=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800\">\r\n {fieldTypes[activeChild.fieldType]?.label || activeChild.fieldType}\r\n </span>\r\n <button\r\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium text-red-600 hover:text-red-700 hover:bg-red-50 border border-red-300 rounded transition-colors\"\r\n onClick={onDeleteChild}\r\n title=\"Delete this field\"\r\n >\r\n <TRASHCANTWO_ICON className=\"w-3.5 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=\"block text-sm font-medium text-gray-700 mb-1\">Default Answer</label>\r\n <input\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded focus:border-blue-400 focus:ring-1 focus:ring-blue-400 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) {\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\", \"greaterThan\", \"greaterThanOrEqual\", \"lessThan\", \"lessThanOrEqual\"];\r\n }\r\n return [\"equals\", \"contains\"];\r\n }\r\n \r\n switch (fieldType) {\r\n case \"input\": return [\"equals\", \"contains\"];\r\n case \"radio\":\r\n case \"selection\": return [\"equals\"];\r\n case \"check\": return [\"includes\"];\r\n default: return [\"equals\"];\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 \"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 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\r\n React.useEffect(() => {\r\n setTarget(initialTarget);\r\n }, [initialTarget]);\r\n\r\n // sync UI child selection for other panels (no-op if not a section)\r\n React.useEffect(() => {\r\n if (!isSectionCtx) return;\r\n if (target && target.startsWith(\"child:\")) {\r\n const cid = target.slice(6);\r\n ui.selectedChildId.set(selectedId, cid);\r\n } else {\r\n ui.selectedChildId.set(null, null);\r\n }\r\n }, [isSectionCtx, target, 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);\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 space-y-4\">\r\n {/* Target picker when a section is selected */}\r\n {isSectionCtx && (\r\n <div className=\"space-y-2\">\r\n <label className=\"block text-sm font-medium text-gray-700\">Target Field</label>\r\n <select\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none bg-white\"\r\n value={target}\r\n onChange={(e) => setTarget(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=\"space-y-3\">\r\n <div className=\"space-y-2\">\r\n <label className=\"block text-sm font-medium 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=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none 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=\"flex gap-2\">\r\n <button \r\n type=\"button\" \r\n className=\"flex-1 px-3 py-2 text-sm font-medium text-blue-600 border border-blue-300 rounded-lg hover:bg-blue-50 transition-colors disabled:opacity-50 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=\"px-3 py-2 text-sm font-medium text-red-600 border border-red-300 rounded-lg hover:bg-red-50 transition-colors disabled:opacity-50 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=\"space-y-3\">\r\n <h4 className=\"text-sm font-medium text-gray-700\">Conditions ({ew.conditions.length})</h4>\r\n <div className=\"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);\r\n const optList = Array.isArray(meta?.options) ? meta.options.map(normOption) : [];\r\n const hasOptions = optList.length > 0;\r\n\r\n return (\r\n <div key={i} className=\"p-3 bg-gray-50 border border-gray-200 rounded-lg space-y-2\">\r\n <div className=\"flex items-center justify-between mb-2\">\r\n <span className=\"text-xs font-semibold text-gray-500 uppercase tracking-wide\">Condition {i + 1}</span>\r\n <button\r\n type=\"button\"\r\n onClick={() => removeCond(i)}\r\n className=\"text-gray-400 hover:text-red-600 transition-colors\"\r\n title=\"Remove condition\"\r\n disabled={isDisabled}\r\n >\r\n <TRASHCANTWO_ICON className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <div>\r\n <label className=\"block text-xs font-medium text-gray-600 mb-1\">When Field</label>\r\n <select\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none bg-white 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 <div className=\"grid grid-cols-2 gap-2\">\r\n <div>\r\n <label className=\"block text-xs font-medium text-gray-600 mb-1\">Operator</label>\r\n <select\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none bg-white 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=\"block text-xs font-medium text-gray-600 mb-1\">Value</label>\r\n {hasOptions ? (\r\n <select\r\n className=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none bg-white 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=\"w-full px-3 py-2 border border-gray-300 rounded-lg focus:border-blue-400 focus:ring-1 focus:ring-blue-400 outline-none text-sm\"\r\n placeholder=\"Enter value\"\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() {\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 bg-white border border-gray-200 rounded-lg shadow-sm overflow-y-auto custom-scrollbar max-h-[calc(100svh-24rem)] lg:max-h-[calc(100dvh-20rem)]\"\r\n >\r\n {/* Sticky Header with Mode Toggle */}\r\n <div className=\"sticky top-0 z-20 bg-white border-b border-gray-200 px-4 pt-3 pb-2\">\r\n {/* Mode Toggle */}\r\n <div className=\"flex gap-1 rounded-lg border border-black/10 bg-black/5 p-1 w-full\">\r\n <button\r\n type=\"button\"\r\n onClick={() => setTab(\"EDIT\")}\r\n className={`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-lg text-xs font-medium transition-colors ${\r\n tab === \"EDIT\"\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 hover:text-slate-900\"\r\n }`}\r\n >\r\n <EDIT_ICON className=\"w-4 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={`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-lg text-xs font-medium transition-colors ${\r\n tab === \"LOGIC\"\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 hover:text-slate-900\"\r\n }`}\r\n >\r\n <EYEEDIT_ICON className=\"w-4 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=\"p-4\">\r\n {isNone && (\r\n <div className=\"edit-panel-empty 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 ? `max-w-4xl` : `max-w-xl`} \r\n mx-auto rounded-lg overflow-y-auto max-h-[calc(100svh-13rem)] lg:max-h-[calc(100dvh-11rem)] custom-scrollbar 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=\"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 flex flex-col\r\n items-center justify-center h-72 bg-linear-to-br from-gray-50 \r\n to-gray-100 border-2 border-dashed border-blue-200 rounded-xl \r\n shadow-md text-center px-8 py-10\"\r\n >\r\n <div className=\"empty-state-title text-xl font-semibold text-gray-700 mb-2\">Forms</div>\r\n <div className=\"empty-state-description text-base text-gray-500\">\r\n <div className=\"lg:hidden\">\r\n Tap the <span className=\"font-semibold text-blue-500\">Tool Panel</span> button to add fields.\r\n </div>\r\n <div className=\"hidden lg:block\">\r\n Add fields using the <span className=\"font-semibold text-blue-500\">Tool Panel</span> on the left.<br />\r\n Edit field properties using the <span className=\"font-semibold 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.54.0/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 (_ref4) {\n var monaco = _ref4.m;\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 (_ref5) {\n var monaco = _ref5.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 } 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 containerRef = React.useRef(null);\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 // 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 try {\r\n const newCode = format === \"json\"\r\n ? JSON.stringify(formData, null, 2)\r\n : YAML.dump(formData, { indent: 2, lineWidth: -1 });\r\n setCode(newCode);\r\n setError(\"\");\r\n } catch (err) {\r\n setError(`Failed to serialize: ${err.message}`);\r\n }\r\n }, [formData, format]);\r\n\r\n const handleCodeChange = (value) => {\r\n setCode(value || \"\");\r\n setError(\"\");\r\n };\r\n\r\n const handleSave = () => {\r\n try {\r\n let parsed;\r\n if (format === \"json\") {\r\n parsed = JSON.parse(code);\r\n } else {\r\n parsed = YAML.load(code);\r\n }\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 // Validate minimal structure\r\n if (!Array.isArray(parsed.fields)) {\r\n parsed.fields = parsed.fields || [];\r\n }\r\n\r\n replaceAll(parsed);\r\n setError(\"\");\r\n ui.preview.set(false);\r\n ui.codeEditor.set(false);\r\n } catch (err) {\r\n setError(`Invalid ${format.toUpperCase()}: ${err.message}`);\r\n }\r\n };\r\n\r\n const handleFormatChange = (newFormat) => {\r\n try {\r\n let newCode;\r\n const currentData = format === \"json\" ? JSON.parse(code) : YAML.load(code);\r\n \r\n if (newFormat === \"json\") {\r\n newCode = JSON.stringify(currentData, null, 2);\r\n } else {\r\n newCode = YAML.dump(currentData, { indent: 2, lineWidth: -1 });\r\n }\r\n \r\n setCode(newCode);\r\n setFormat(newFormat);\r\n setError(\"\");\r\n } catch (err) {\r\n setError(`Cannot convert: ${err.message}`);\r\n }\r\n };\r\n\r\n return (\r\n <div ref={containerRef} className=\"code-editor-container flex flex-col bg-gray-50 max-w-7xl w-full\" style={{ height: `${editorHeight}px` }}>\r\n {/* Header with format toggle and save button */}\r\n <div className=\"code-editor-header flex items-center justify-between gap-3 p-4 bg-white border-b border-black/10\">\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"flex gap-1 rounded-lg border border-black/10 bg-black/5 p-1\">\r\n <button\r\n onClick={() => handleFormatChange(\"yaml\")}\r\n className={`px-3 py-1 rounded-md text-sm font-medium transition-colors ${\r\n format === \"yaml\"\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 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={`px-3 py-1 rounded-md text-sm font-medium transition-colors ${\r\n format === \"json\"\r\n ? \"bg-white text-slate-900 shadow-sm\"\r\n : \"text-slate-600 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=\"flex items-center gap-2\">\r\n {error && (\r\n <div className=\"text-xs text-red-600 bg-red-50 px-3 py-1 rounded-lg\">\r\n {error}\r\n </div>\r\n )}\r\n <button\r\n onClick={handleSave}\r\n className=\"px-4 py-2 rounded-lg border border-black/15 bg-white hover:bg-black/5 text-sm font-medium transition-colors\"\r\n >\r\n Apply Changes\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Editor */}\r\n <div className=\"code-editor-content flex-1 overflow-hidden\">\r\n <Editor\r\n height=\"100%\"\r\n language={format}\r\n value={code}\r\n onChange={handleCodeChange}\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 }}\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 w-full h-fit rounded-lg mt-2 md:mt-4 lg:mt-6\">\r\n {isCodeEditor ? (\r\n <div className=\"border border-gray-200 rounded-lg\">\r\n <CodeEditor />\r\n </div>\r\n\r\n ) : (\r\n <div className={`layout-grid flex lg:gap-3 h-full`}>\r\n {editMode && (\r\n <div className=\"layout-tool-panel hidden lg:block lg:w-72\">\r\n <ToolPanel />\r\n </div>\r\n )}\r\n\r\n <div className=\"layout-main-content flex-1 min-w-0\">\r\n <FormBuilderMain />\r\n </div>\r\n\r\n {editMode && (\r\n <div className=\"layout-edit-panel hidden lg:block lg:w-90 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 lg:hidden\">\r\n {isEditModalOpen && selectedField && (\r\n <>\r\n <div\r\n className=\"fixed inset-0 z-40 bg-black/30 lg:hidden\"\r\n onClick={() => ui.modal.set(false)}\r\n />\r\n <div className=\"fixed bottom-0 left-0 right-0 z-50 bg-white rounded-t-2xl shadow-2xl max-h-[60vh] overflow-y-auto custom-scrollbar lg:hidden\">\r\n <div className=\"[&_.edit-panel-container]:overflow-visible [&_.edit-panel-container]:max-h-none\">\r\n <EditPanel key={panelResetKey} />\r\n </div>\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=\"lg:hidden fixed bottom-5 left-5 z-40 bg-blue-500 hover:bg-blue-600 text-white rounded-full w-12 h-12 flex items-center justify-center shadow-lg transition-all\"\r\n title=\"Add field\"\r\n >\r\n <svg className=\"w-6 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=\"fixed inset-0 z-40 bg-black/30 lg:hidden\"\r\n onClick={() => setIsMobileToolPanelOpen(false)}\r\n />\r\n <div className=\"fixed bottom-0 left-0 right-0 z-50 bg-white rounded-t-2xl shadow-2xl max-h-[60vh] overflow-y-auto custom-scrollbar 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} 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 w-full max-w-7xl mx-auto bg-gray-100 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 <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":["f","require$$0","k","l","m","n","p","q","c","a","g","b","d","e","h","reactJsxRuntime_production_min","React","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","ReactSharedInternals","error","format","_len2","args","_key2","printWarning","level","ReactDebugCurrentFrame","stack","argsWithFormat","item","enableScopeAPI","enableCacheElement","enableTransitionTracing","enableLegacyHidden","enableDebugTracing","REACT_MODULE_REFERENCE","isValidElementType","type","getWrappedName","outerType","innerType","wrapperName","displayName","functionName","getContextName","getComponentNameFromType","context","provider","outerName","lazyComponent","payload","init","assign","disabledDepth","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledLog","disableLogs","props","reenableLogs","ReactCurrentDispatcher","prefix","describeBuiltInComponentFrame","name","source","ownerFn","x","match","reentry","componentFrameCache","PossiblyWeakMap","describeNativeComponentFrame","fn","construct","frame","control","previousPrepareStackTrace","previousDispatcher","Fake","sample","sampleLines","controlLines","s","_frame","syntheticFrame","describeFunctionComponentFrame","shouldConstruct","Component","prototype","describeUnknownElementTypeFrameInDEV","hasOwnProperty","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","checkPropTypes","typeSpecs","values","location","componentName","has","typeSpecName","error$1","err","ex","isArrayImpl","isArray","typeName","value","hasToStringTag","willCoercionThrow","testStringCoercion","checkKeyStringCoercion","ReactCurrentOwner","RESERVED_PROPS","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","hasValidKey","warnIfStringRefCannotBeAutoConverted","self","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","key","ref","jsxDEV","maybeKey","propName","defaultProps","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","propTypesMisspellWarningShown","isValidElement","object","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","info","parentName","validateExplicitKey","currentComponentErrorInfo","childOwner","validateChildKeys","node","i","child","iteratorFn","iterator","step","validatePropTypes","propTypes","_name","validateFragmentProps","fragment","keys","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","sourceInfo","typeString","children","beforeExample","afterExample","jsxWithValidationStatic","jsxWithValidationDynamic","jsx","jsxs","reactJsxRuntime_development","jsxRuntimeModule","require$$1","Header","showSchemaConfirm","setShowSchemaConfirm","pendingImport","setPendingImport","replaceAll","useFormStore","formData","useFormData","ui","useUIApi","isPreview","isCodeEditor","handleFileSelect","fileContent","text","data","schemaType","parseAndDetect","confirmImport","confirmedSchemaType","result","adaptSchema","fields","schemaObject","_a","_f","_st","metadata","cancelImport","onEdit","onCodeEditor","onPreview","onExport","json","blob","url","VEDITOR_ICON","CODE_ICON","PICTURE_ICON","UPLOAD_ICON","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","items","TOOLS_ICON","X_ICON","IconComponent","label","isDisabled","ToolPanel","prev","next","DraftIdEditor","id","onCommit","validate","placeholder","className","draft","setDraft","setErr","commit","msg","CommonEditor","onUpdateField","byId","validateId","newId","oldId","allIds","field","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","activeChildId","setActiveChildId","globalParentId","globalChildId","handleChildSelect","childId","getFieldLabel","_b","onUpdateSection","activeChild","childApi","validChildApi","onUpdateChild","curr","onDeleteChild","hasOptionsChild","hasMatrixChild","ARROWDOWN_ICON","getOperatorsForFieldType","fieldType","displayFormat","NUMERIC_EXPRESSION_FORMATS","getOperatorLabel","op","normOption","LogicEditor","setEnableWhen","updateField","selectedId","rawChildId","_c","isSectionCtx","sectionChildren","childValidForSection","initialTarget","target","setTarget","cid","isChildScope","effectiveChildId","effectiveId","targets","out","sectTitle","findTarget","tid","t","writeEnableWhen","normalized","ew","addCond","clear","removeCond","idx","nextConds","_","updateCond","patch","updated","meta","ops","o","filteredTargets","allowedOps","optList","EditPanel","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","u","_nonIterableRest","ownKeys","_objectSpread2","_objectWithoutProperties","_objectWithoutPropertiesLoose","_slicedToArray","_unsupportedIterableToArray","_toPrimitive","obj","enumerableOnly","symbols","sym","compose","_len","fns","_key","y","curry","curried","_this","_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","_ref","isInitialized","wrapperPromise","storeMonacoInstance","injectScripts","getMonacoLoaderScript","configureLoader","script","createScript","src","_ref2","loaderScript","_ref3","require","_ref4","__getMonacoInstance","_ref5","loader","le","v","ae","Y","Me","me","Z","$","Ee","E","K","ee","H","ye","Ce","xe","he","Re","ge","D","De","be","te","Oe","N","P","V","z","F","A","M","O","re","T","S","w","Se","I","L","oe","U","ne","_d","ke","ie","Te","He","ve","Ue","se","Ve","ue","C","Q","B","Ne","R","pe","X","_e","W","G","J","We","fe","de","ze","Ft","CodeEditor","setFormat","editorHeight","setEditorHeight","code","setCode","YAML","setError","calculateHeight","containerTop","availableHeight","newCode","handleCodeChange","handleSave","parsed","handleFormatChange","newFormat","currentData","Editor","Layout","isMobileToolPanelOpen","setIsMobileToolPanelOpen","isEditModalOpen","panelResetKey","editMode","QuestionnaireEditorInner","initialFormData","onChange","showHeader","startInPreview","codeFormat","setCodeFormat","formStoreInitialized","detectedType","useStore","QuestionnaireEditor","createFormStore","uiStore","createUIStore","UIStoreContext"],"mappings":"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","x_google_ignoreList":[0,1,2,14,15,16,17,18,19,20,21,22,23,24]}
|
|
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]}
|