@powerhousedao/powerhouse-vetra-packages 6.2.0-dev.1 → 6.2.0-dev.11

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.
Files changed (59) hide show
  1. package/dist/browser/assets/{entry-Bzani6_n.js → entry-D6VwthNk.js} +2 -2
  2. package/dist/browser/assets/{projection-entry-Bpu-8SnI.js → projection-entry-CemvPRT8.js} +2 -2
  3. package/dist/browser/{connect-ZnLjvmRt.js → connect-BMrgEG7X.js} +4 -4
  4. package/dist/browser/{connect-ZnLjvmRt.js.map → connect-BMrgEG7X.js.map} +1 -1
  5. package/dist/browser/{dist-C1nRM9t2.js → dist-B6zWOl4d.js} +44 -30
  6. package/dist/browser/dist-B6zWOl4d.js.map +1 -0
  7. package/dist/browser/{dist-DLFI75Zd.js → dist-DPeHVSov.js} +3 -3
  8. package/dist/browser/dist-DPeHVSov.js.map +1 -0
  9. package/dist/browser/{document-drive-oqv68jDU.js → document-drive-sTKoi6L4.js} +314 -9
  10. package/dist/browser/document-drive-sTKoi6L4.js.map +1 -0
  11. package/dist/browser/document-models/index.js +1 -1
  12. package/dist/browser/{editor-CoTq6fqT.js → editor-Clp9-uJE.js} +6 -6
  13. package/dist/browser/{editor-CoTq6fqT.js.map → editor-Clp9-uJE.js.map} +1 -1
  14. package/dist/browser/{editor-DC3bigBu.js → editor-CzsQw1pE.js} +5 -5
  15. package/dist/browser/{editor-DC3bigBu.js.map → editor-CzsQw1pE.js.map} +1 -1
  16. package/dist/browser/editors/document-model-editor/module.js +1 -1
  17. package/dist/browser/editors/generic-drive-explorer/index.js +4 -4
  18. package/dist/browser/editors/generic-drive-explorer/module.js +1 -1
  19. package/dist/browser/{folder-view-DmYBf2pP.js → folder-view-D9jBl4kJ.js} +3 -3
  20. package/dist/browser/{folder-view-DmYBf2pP.js.map → folder-view-D9jBl4kJ.js.map} +1 -1
  21. package/dist/browser/{graphql-editor-CiGd_Li7.js → graphql-editor-8bWqxqUN.js} +3 -3
  22. package/dist/browser/{graphql-editor-CiGd_Li7.js.map → graphql-editor-8bWqxqUN.js.map} +1 -1
  23. package/dist/browser/index.js +2 -2
  24. package/dist/browser/{json-editor-sEqd5piI.js → json-editor-DlvyzQQO.js} +3 -3
  25. package/dist/browser/{json-editor-sEqd5piI.js.map → json-editor-DlvyzQQO.js.map} +1 -1
  26. package/dist/browser/{state-schemas-DJmzG_M8.js → state-schemas-CVQyYhpH.js} +3 -3
  27. package/dist/browser/{state-schemas-DJmzG_M8.js.map → state-schemas-CVQyYhpH.js.map} +1 -1
  28. package/dist/node/{connect-BLC4PXD9.mjs → connect-C8Ur6M5x.mjs} +4 -4
  29. package/dist/node/{connect-BLC4PXD9.mjs.map → connect-C8Ur6M5x.mjs.map} +1 -1
  30. package/dist/node/{dist-Bm05eoTg.mjs → dist-D3qXr1ES.mjs} +44 -30
  31. package/dist/node/dist-D3qXr1ES.mjs.map +1 -0
  32. package/dist/node/{dist-Cn3iExnV.mjs → dist-vA9scgbK.mjs} +3 -3
  33. package/dist/node/dist-vA9scgbK.mjs.map +1 -0
  34. package/dist/node/{document-drive-sM33juXr.mjs → document-drive-DjL9iikf.mjs} +314 -9
  35. package/dist/node/document-drive-DjL9iikf.mjs.map +1 -0
  36. package/dist/node/document-models/index.mjs +1 -1
  37. package/dist/node/{editor-BrS98lEH.mjs → editor-B6gn6QpO.mjs} +5 -5
  38. package/dist/node/{editor-BrS98lEH.mjs.map → editor-B6gn6QpO.mjs.map} +1 -1
  39. package/dist/node/{editor-BFBa9nsO.mjs → editor-kdobbTut.mjs} +6 -6
  40. package/dist/node/{editor-BFBa9nsO.mjs.map → editor-kdobbTut.mjs.map} +1 -1
  41. package/dist/node/editors/document-model-editor/module.mjs +1 -1
  42. package/dist/node/editors/generic-drive-explorer/index.mjs +4 -4
  43. package/dist/node/editors/generic-drive-explorer/module.mjs +1 -1
  44. package/dist/node/{folder-view-DHph3Yuu.mjs → folder-view-C9m-Kbjh.mjs} +3 -3
  45. package/dist/node/{folder-view-DHph3Yuu.mjs.map → folder-view-C9m-Kbjh.mjs.map} +1 -1
  46. package/dist/node/{graphql-editor-CPq7oIbf.mjs → graphql-editor-BiK6s8_B.mjs} +3 -3
  47. package/dist/node/{graphql-editor-CPq7oIbf.mjs.map → graphql-editor-BiK6s8_B.mjs.map} +1 -1
  48. package/dist/node/index.mjs +2 -2
  49. package/dist/node/{json-editor-L32CP7TS.mjs → json-editor-rMZOlQFM.mjs} +3 -3
  50. package/dist/node/{json-editor-L32CP7TS.mjs.map → json-editor-rMZOlQFM.mjs.map} +1 -1
  51. package/dist/node/{state-schemas-XTTjQZOe.mjs → state-schemas-Dt2-S4R8.mjs} +3 -3
  52. package/dist/node/{state-schemas-XTTjQZOe.mjs.map → state-schemas-Dt2-S4R8.mjs.map} +1 -1
  53. package/package.json +6 -6
  54. package/dist/browser/dist-C1nRM9t2.js.map +0 -1
  55. package/dist/browser/dist-DLFI75Zd.js.map +0 -1
  56. package/dist/browser/document-drive-oqv68jDU.js.map +0 -1
  57. package/dist/node/dist-Bm05eoTg.mjs.map +0 -1
  58. package/dist/node/dist-Cn3iExnV.mjs.map +0 -1
  59. package/dist/node/document-drive-sM33juXr.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- import { r as driveDocumentModelModule, u as documentModelDocumentModelModule } from "../document-drive-oqv68jDU.js";
1
+ import { r as driveDocumentModelModule, u as documentModelDocumentModelModule } from "../document-drive-sTKoi6L4.js";
2
2
  export { documentModelDocumentModelModule, driveDocumentModelModule };
@@ -1,9 +1,9 @@
1
1
  import { C as parse, T as $ZodError, _ as string, a as snakeCase, b as url, h as object, n as constantCase, p as literal, r as pascalCase, v as union, w as parseAsync } from "./dist-CXoKspdx.js";
2
- import { B as setOperationDescription, E as deleteOperationError, F as setModelExtension, H as setOperationName, I as setModelId, L as setModelName, M as setAuthorWebsite, N as setInitialState, P as setModelDescription, R as setModuleName, T as deleteOperation, U as setOperationSchema, V as setOperationErrorName, W as setStateSchema, Y as generateId, f as addModule, j as setAuthorName, m as addOperationError, p as addOperation, w as deleteModule } from "./document-drive-oqv68jDU.js";
2
+ import { D as deleteOperationError, E as deleteOperation, F as setModelDescription, G as setStateSchema, H as setOperationErrorName, I as setModelExtension, L as setModelId, M as setAuthorName, N as setAuthorWebsite, P as setInitialState, R as setModelName, T as deleteModule, U as setOperationName, V as setOperationDescription, W as setOperationSchema, X as generateId, f as addModule, m as addOperationError, p as addOperation, z as setModuleName } from "./document-drive-sTKoi6L4.js";
3
3
  import { a as handleModelNameChange, c as makeEmptyOperationSchema, d as makeOperationInitialDoc, i as compareStringsWithoutWhitespace, l as makeInitialSchemaDoc, o as initializeModelSchema, p as renameSchemaType, s as isEmptyOperationSchema, t as ensureValidOperationSchemaInputName } from "./linting-Dn6pXRkK.js";
4
- import { c as FormProvider, d as set, f as useForm, l as appendErrors, p as useFormContext, r as DocumentToolbar, s as Controller, u as get } from "./connect-ZnLjvmRt.js";
4
+ import { c as FormProvider, d as set, f as useForm, l as appendErrors, p as useFormContext, r as DocumentToolbar, s as Controller, u as get } from "./connect-BMrgEG7X.js";
5
5
  import { C as twMerge, y as composeRefs } from "./dist-D8H48e8N.js";
6
- import { E as useSetPHDocumentEditorConfig, b as useSelectedDocumentOfType, y as usePHToast } from "./dist-C1nRM9t2.js";
6
+ import { E as useSetPHDocumentEditorConfig, b as useSelectedDocumentOfType, y as usePHToast } from "./dist-B6zWOl4d.js";
7
7
  import { t as SchemaContextProvider } from "./schema-context-DY-GEGnY.js";
8
8
  import * as React$1 from "react";
9
9
  import React, { Suspense, forwardRef, lazy, useCallback, useEffect, useId, useImperativeHandle, useRef, useState } from "react";
@@ -888,7 +888,7 @@ function OperationErrors({ operation, addOperationError, deleteOperationError, s
888
888
  }
889
889
  //#endregion
890
890
  //#region editors/document-model-editor/components/operation.tsx
891
- const GraphqlEditor = lazy(() => import("./graphql-editor-CiGd_Li7.js"));
891
+ const GraphqlEditor = lazy(() => import("./graphql-editor-8bWqxqUN.js"));
892
892
  function Operation(props) {
893
893
  const { operation, module, allOperationNames, lastCreatedOperationId, onAddOperationAndInitialSchema, updateOperationName, deleteOperation, updateOperationSchema, setOperationDescription, addOperationError, deleteOperationError, setOperationErrorName, toggleNoInputRequired } = props;
894
894
  const noInputRequired = isEmptyOperationSchema(operation.schema);
@@ -1110,7 +1110,7 @@ function useSelectedDocumentModelDocument() {
1110
1110
  }
1111
1111
  //#endregion
1112
1112
  //#region editors/document-model-editor/editor.tsx
1113
- const StateSchemas = lazy(() => import("./state-schemas-DJmzG_M8.js"));
1113
+ const StateSchemas = lazy(() => import("./state-schemas-CVQyYhpH.js"));
1114
1114
  function Editor() {
1115
1115
  useSetPHDocumentEditorConfig(editorConfig);
1116
1116
  const toast = usePHToast();
@@ -1371,4 +1371,4 @@ function Editor() {
1371
1371
  //#endregion
1372
1372
  export { Editor as default };
1373
1373
 
1374
- //# sourceMappingURL=editor-CoTq6fqT.js.map
1374
+ //# sourceMappingURL=editor-Clp9-uJE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-CoTq6fqT.js","names":["use","React","React","r","e","s","i","t","o","r","e","n.parse","n.parseAsync","n.$ZodError","z.string","z\n .string","z\n .object","z\n .union","z.url","z.literal","Label","React","React","LabelPrimitive.Root","React","zodResolver","z.object","z.object","z.string"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.14_react@19.2.6/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_c8c8fd2647f03197dbf56370d7498033/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/.pnpm/clsx@2.0.0/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/class-variance-authority@0.7.0/node_modules/class-variance-authority/dist/index.mjs","../../editors/document-model-editor/components/divider.tsx","../../../../node_modules/.pnpm/@hookform+resolvers@5.2.2_react-hook-form@7.71.2_react@19.2.6_/node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../../node_modules/.pnpm/@hookform+resolvers@5.2.2_react-hook-form@7.71.2_react@19.2.6_/node_modules/@hookform/resolvers/zod/dist/zod.mjs","../../editors/document-model-editor/schemas/inputs.ts","../../editors/document-model-editor/context/form-context.ts","../../editors/document-model-editor/hooks/useFormField.ts","../../../../node_modules/.pnpm/@radix-ui+react-label@2.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_8d35ec453e0b59eefe06771bb1432577/node_modules/@radix-ui/react-label/dist/index.mjs","../../editors/document-model-editor/components/label.tsx","../../editors/document-model-editor/components/form.tsx","../../editors/document-model-editor/components/text-area.tsx","../../editors/document-model-editor/components/text-field.tsx","../../editors/document-model-editor/components/model-metadata-form.tsx","../../editors/document-model-editor/components/module-form.tsx","../../editors/document-model-editor/components/operation-form.tsx","../../editors/document-model-editor/components/operation-description-form.tsx","../../editors/document-model-editor/components/operation-error-form.tsx","../../editors/document-model-editor/components/operation-errors.tsx","../../editors/document-model-editor/components/operation.tsx","../../editors/document-model-editor/components/operations.tsx","../../editors/document-model-editor/components/module.tsx","../../editors/document-model-editor/components/modules.tsx","../../editors/document-model-editor/config.ts","../../editors/document-model-editor/hooks/useDocumentModelDocument.ts","../../editors/document-model-editor/editor.tsx"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n margin?: \"sm\" | \"md\" | \"lg\";\n};\nexport function Divider({ className, size = \"sm\", margin = \"md\" }: Props) {\n function getSize() {\n if (size === \"sm\") return \"h-px\";\n if (size === \"md\") return \"h-1\";\n return \"h-1.5\";\n }\n\n function getMargin() {\n if (margin === \"sm\") return \"my-4\";\n if (margin === \"md\") return \"my-6\";\n return \"my-8\";\n }\n\n const sizeClass = getSize();\n const marginClass = getMargin();\n return (\n <div\n className={twMerge(\n \"bg-gray-200 dark:bg-slate-600 dark:text-slate-100\",\n sizeClass,\n marginClass,\n className,\n )}\n />\n );\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n","import { z } from \"zod\";\nimport { snakeCase, constantCase } from \"change-case\";\n\nconst isUppercase = (value: string) => !/\\p{Ll}/u.test(value);\nconst isLowercase = (value: string) => !/\\p{Lu}/u.test(value);\n\nconst whitespaceRegex = /\\s+/g;\n\nexport function containsSpaces(s: string) {\n return whitespaceRegex.test(s);\n}\n\nexport function replaceSpaces(s: string) {\n return s.replace(whitespaceRegex, \"_\");\n}\n\ntype SchemaOptions = {\n required?: boolean;\n allowEmpty?: boolean;\n unique?: string[];\n};\n\nexport function createNameSchema(options: SchemaOptions = {}) {\n const { required = false, allowEmpty = false, unique = [] } = options;\n\n const baseSchema = allowEmpty ? z.string() : z.string().min(1);\n\n const uniqueRefinement = baseSchema.refine(\n (value) => {\n if (!value && allowEmpty) return true;\n return !unique\n .map((n) => n.toLowerCase())\n .includes(value.replace(/^\\s+|\\s+$/g, \"_\").toLowerCase());\n },\n { message: \"Item with this name already exists\" },\n );\n\n if (!required) {\n return unique.length > 0\n ? z\n .string()\n .optional()\n .refine(\n (value) => {\n if (value === undefined) return true;\n if (!value && allowEmpty) return true;\n return !unique\n .map((n) => n.toLowerCase())\n .includes(value.replace(/^\\s+|\\s+$/g, \"_\").toLowerCase());\n },\n { message: \"Item with this name already exists\" },\n )\n : z.string().optional();\n }\n\n return unique.length > 0 ? uniqueRefinement : baseSchema;\n}\n\nexport function createConstantCaseSchema(options: SchemaOptions = {}) {\n return createNameSchema(options)\n .transform((value) => (value ? value.toUpperCase() : value))\n .refine((value) => !value || isUppercase(value), {\n message: \"Must be uppercase\",\n });\n}\n\nexport function createLowercaseSnakeCaseSchema(options: SchemaOptions = {}) {\n return createNameSchema(options)\n .transform((value) => (value ? value.toLowerCase() : value))\n .refine((value) => !value || isLowercase(value), {\n message: \"Must be lowercase\",\n });\n}\n\nexport function toLowercaseSnakeCase(\n value: string,\n options: SchemaOptions = {},\n) {\n return createLowercaseSnakeCaseSchema(options).parse(\n snakeCase(value),\n ) as LowercaseSnakeCase;\n}\n\nexport function toConstantCase(value: string, options: SchemaOptions = {}) {\n return createConstantCaseSchema(options).parse(\n constantCase(value),\n ) as ConstantCase;\n}\n\nexport type SnakeCase = `${string}_${string}`;\nexport type LowercaseSnakeCase = Lowercase<SnakeCase>;\nexport type ConstantCase = Uppercase<SnakeCase>;\nexport type Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\nexport const AuthorSchema = z\n .object({\n name: createNameSchema({ allowEmpty: true }),\n website: z\n .union([z.url(), z.literal(\"\")])\n .optional()\n .default(\"\"),\n })\n .default({\n name: \"\",\n website: \"\",\n });\n","import React from \"react\";\nimport type { FieldValues, FieldPath } from \"react-hook-form\";\n\nexport type FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nexport type FormItemContextValue = {\n id: string;\n};\n\nexport const FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n","import React from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context/form-context.js\";\n\nexport const useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cva } from \"class-variance-authority\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst labelVariants = cva(\n \"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={twMerge(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport type * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { ControllerProps, FieldPath, FieldValues } from \"react-hook-form\";\nimport { Controller, FormProvider } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context/form-context.js\";\nimport { useFormField } from \"../hooks/useFormField.js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Label } from \"./label.js\";\n\nconst Form = FormProvider;\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={className} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={twMerge(error && \"text-red-900 dark:text-red-400\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error ? formDescriptionId : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={twMerge(\n \"text-sm text-gray-700 dark:text-slate-200\",\n className,\n )}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={twMerge(\n \"text-sm font-medium text-red-800 dark:text-red-100\",\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import * as React from \"react\";\nimport { forwardRef, useImperativeHandle, useRef, useCallback } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport interface TextareaHandle {\n focus: () => void;\n element: HTMLTextAreaElement | null;\n}\n\nexport const Textarea = forwardRef<TextareaHandle, TextareaProps>(\n ({ className, ...props }, ref) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const adjustHeight = useCallback((textarea: HTMLTextAreaElement) => {\n textarea.style.height = \"auto\";\n const newHeight = Math.max(textarea.scrollHeight, textarea.offsetHeight);\n textarea.style.height = `${newHeight}px`;\n }, []);\n\n const handleInput = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n adjustHeight(e.currentTarget);\n },\n [adjustHeight],\n );\n\n React.useEffect(() => {\n if (textareaRef.current) {\n adjustHeight(textareaRef.current);\n }\n }, [adjustHeight]);\n\n useImperativeHandle(ref, () => ({\n focus: () => textareaRef.current?.focus(),\n element: textareaRef.current,\n }));\n\n return (\n <textarea\n {...props}\n className={twMerge(\n \"min-h-10 w-full resize-none rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-900 placeholder:text-gray-600 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100 dark:placeholder:text-slate-300\",\n className,\n )}\n ref={textareaRef}\n onInput={handleInput}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport type { FieldValues, Resolver } from \"react-hook-form\";\nimport { useForm } from \"react-hook-form\";\nimport { z } from \"zod\";\nimport { createNameSchema } from \"../schemas/inputs.js\";\nimport { compareStringsWithoutWhitespace } from \"../utils/helpers.js\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"./form.js\";\nimport type { TextareaHandle } from \"./text-area.js\";\nimport { Textarea } from \"./text-area.js\";\n\ntype TextFieldProps = {\n name: string;\n value: string | null | undefined;\n onSubmit: (value: string) => void;\n label?: string;\n placeholder?: string;\n className?: string;\n rows?: number;\n focusOnMount?: boolean;\n required?: boolean;\n allowEmpty?: boolean;\n unique?: string[];\n shouldReset?: boolean;\n onChange?: (value: string) => void;\n};\n\ntype TextFieldHandle = {\n focus: () => void;\n};\n\nexport const TextField = forwardRef<TextFieldHandle, TextFieldProps>(\n (\n {\n name,\n value,\n onSubmit,\n label,\n placeholder,\n unique,\n className = \"\",\n rows = 1,\n focusOnMount = false,\n required = false,\n allowEmpty = false,\n shouldReset = false,\n onChange,\n },\n ref,\n ) => {\n const textareaRef = useRef<TextareaHandle | null>(null);\n const id = useId();\n useEffect(() => {\n if (focusOnMount && textareaRef.current) {\n textareaRef.current.focus();\n }\n }, [focusOnMount]);\n\n const fieldSchema = z.object({\n [name]: createNameSchema({ required, allowEmpty, unique }),\n });\n\n const form = useForm({\n resolver: zodResolver(\n fieldSchema as unknown as Parameters<typeof zodResolver>[0],\n ) as Resolver<FieldValues>,\n defaultValues: {\n [name]: value ?? \"\",\n },\n });\n\n const handleSubmit = useCallback(\n (values: FieldValues) => {\n const newValue = values[name] as string | undefined;\n if (newValue === undefined || value === newValue) return;\n onSubmit(newValue);\n if (shouldReset) form.reset({ [name]: \"\" });\n },\n [name, value, onSubmit, form, shouldReset],\n );\n\n const handleBlur = useCallback(async () => {\n const currentValue = (form.getValues()[name] as string | undefined) ?? \"\";\n\n if (value === null || value === undefined) {\n if (!currentValue || currentValue.trim() === \"\") return;\n }\n\n if (compareStringsWithoutWhitespace(currentValue, value ?? \"\")) return;\n\n try {\n await form.trigger(); // Trigger validation\n if (form.formState.isValid) {\n await form.handleSubmit(handleSubmit)();\n }\n } catch (_e) {\n // Allow blur to proceed even if validation fails\n }\n }, [form, handleSubmit, name, value]);\n\n const onEnterKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n (e.target as HTMLTextAreaElement).blur();\n }\n },\n [],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n onChange?.(newValue);\n },\n [onChange],\n );\n\n useImperativeHandle(ref, () => ({\n focus: () => textareaRef.current?.focus(),\n }));\n\n useEffect(() => {\n form.reset({ [name]: value ?? \"\" });\n }, [form, name, value]);\n\n return (\n <Form {...form}>\n <FormField\n control={form.control}\n name={name}\n render={({ field }) => (\n <FormItem className=\"grid h-full grid-rows-[auto,1fr] gap-2 overflow-visible\">\n {!!label && (\n <FormLabel\n htmlFor={name}\n className=\"text-sm font-medium text-gray-700 dark:text-slate-200\"\n >\n {label}\n </FormLabel>\n )}\n <FormControl>\n <Textarea\n {...field}\n id={id}\n name={name}\n ref={(node) => {\n if (node) {\n field.ref(node.element);\n textareaRef.current = node;\n }\n }}\n placeholder={placeholder}\n onBlur={() => void handleBlur()}\n onChange={(e) => {\n field.onChange(e);\n handleChange(e);\n }}\n onKeyDown={onEnterKeyDown}\n rows={rows}\n className={className}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </Form>\n );\n },\n);\n\nTextField.displayName = \"TextField\";\n","import { useCallback } from \"react\";\nimport { z } from \"zod\";\nimport type { Scope } from \"../types/documents.js\";\nimport {\n handleModelNameChange,\n makeInitialSchemaDoc,\n renameSchemaType,\n} from \"../utils/helpers.js\";\nimport { TextField } from \"./text-field.js\";\n\nexport const MetadataFormSchema = z.object({\n name: z.string(),\n documentType: z.string(),\n extension: z.string().optional().default(\"\"),\n description: z.string(),\n authorName: z.string(),\n authorWebsite: z.string(),\n});\n\nexport type MetadataFormValues = z.infer<typeof MetadataFormSchema>;\n\ntype Props = MetadataFormValues & {\n globalStateSchema: string;\n localStateSchema: string;\n setModelName: (name: string) => void;\n setModelId: (id: string) => void;\n setModelExtension: (extension: string) => void;\n setModelDescription: (description: string) => void;\n setAuthorName: (authorName: string) => void;\n setAuthorWebsite: (authorWebsite: string) => void;\n setStateSchema: (schema: string, scope: Scope) => void;\n};\n\nexport default function ModelMetadata(props: Props) {\n return (\n <div>\n <ModelNameForm {...props} />\n <div className=\"flex h-full flex-col gap-4\">\n <div className=\"grid flex-1 grid-cols-3 items-start gap-4\">\n <div className=\"col-span-2 flex h-full flex-col gap-4\">\n <div className=\"shrink-0\">\n <DocumentTypeForm {...props} />\n </div>\n <div className=\"min-h-0 flex-1\">\n <DescriptionForm {...props} />\n </div>\n </div>\n <div className=\"col-span-1 flex flex-col gap-4\">\n <AuthorNameForm {...props} />\n <AuthorWebsiteForm {...props} />\n <ModelExtensionForm {...props} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function ModelNameForm(props: Props) {\n const {\n name,\n globalStateSchema,\n localStateSchema,\n setModelName,\n setStateSchema,\n } = props;\n\n const onSubmit = useCallback(\n (newName: string) => {\n if (name === newName) {\n return;\n }\n setModelName(newName);\n\n const hasExistingSchema = !!globalStateSchema;\n\n if (!hasExistingSchema) {\n const initialSchemaDoc = makeInitialSchemaDoc(newName, \"global\");\n setStateSchema(initialSchemaDoc, \"global\");\n return;\n }\n const newSchema = renameSchemaType(\n globalStateSchema,\n name,\n newName,\n \"global\",\n );\n setStateSchema(newSchema, \"global\");\n\n if (localStateSchema) {\n const newLocalStateSchema = renameSchemaType(\n localStateSchema,\n name,\n newName,\n \"local\",\n );\n setStateSchema(newLocalStateSchema, \"local\");\n }\n handleModelNameChange({\n oldName: name,\n newName,\n globalStateSchema,\n localStateSchema,\n setStateSchema,\n });\n },\n [name, globalStateSchema, localStateSchema, setStateSchema, setModelName],\n );\n\n return (\n <TextField\n name=\"name\"\n value={name}\n onSubmit={onSubmit}\n placeholder=\"Model name\"\n className=\"border-none pl-0 text-xl font-bold text-gray-900 dark:text-slate-50\"\n required\n focusOnMount\n />\n );\n}\n\nexport function DocumentTypeForm(props: Props) {\n const { documentType, setModelId } = props;\n\n return (\n <TextField\n label=\"Document Type *\"\n name=\"powerhouse/document-model\"\n value={documentType}\n onSubmit={setModelId}\n placeholder=\"Document Type\"\n required\n />\n );\n}\n\nexport function ModelExtensionForm(props: Props) {\n const { extension, setModelExtension } = props;\n\n return (\n <TextField\n name=\"extension\"\n value={extension}\n onSubmit={setModelExtension}\n label=\"Model Extension\"\n placeholder=\"Example .phdm\"\n allowEmpty\n />\n );\n}\n\nexport function DescriptionForm(props: Props) {\n const { description, setModelDescription } = props;\n\n return (\n <TextField\n name=\"description\"\n label=\"Model Description\"\n value={description}\n onSubmit={setModelDescription}\n placeholder=\"Describe your document to others\"\n allowEmpty\n className=\"h-full\"\n />\n );\n}\n\nexport function AuthorNameForm(props: Props) {\n const { authorName, setAuthorName } = props;\n\n return (\n <TextField\n name=\"authorName\"\n value={authorName}\n onSubmit={setAuthorName}\n label=\"Author Name\"\n placeholder=\"Username or organisation\"\n allowEmpty\n />\n );\n}\n\nexport function AuthorWebsiteForm(props: Props) {\n const { authorWebsite, setAuthorWebsite } = props;\n\n return (\n <TextField\n name=\"authorWebsite\"\n value={authorWebsite}\n label=\"Website URL\"\n onSubmit={(newAuthorWebsite) => {\n if (!!authorWebsite && !newAuthorWebsite) return;\n setAuthorWebsite(newAuthorWebsite);\n }}\n placeholder=\"https://www.powerhouse.inc/\"\n allowEmpty\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { toLowercaseSnakeCase } from \"../schemas/inputs.js\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n modules?: ModuleSpecification[];\n module?: ModuleSpecification;\n onAddModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n};\n\nexport function ModuleForm({\n module,\n onAddModule,\n updateModuleName,\n modules = [],\n}: Props) {\n const isEdit = !!module;\n const moduleNames = modules.map((m) => m.name);\n\n const handleSubmit = async (name: string) => {\n const formattedName = toLowercaseSnakeCase(name);\n if (!formattedName.length) return;\n\n if (isEdit) {\n if (formattedName !== module.name) {\n updateModuleName(module.id, formattedName);\n }\n } else {\n await onAddModule(formattedName);\n }\n };\n\n return (\n <TextField\n key={module?.id ?? \"new\"}\n name=\"name\"\n label={isEdit ? \"Module name *\" : \"Add module *\"}\n value={module?.name}\n onSubmit={(name) => void handleSubmit(name)}\n placeholder=\"Add module\"\n unique={moduleNames}\n shouldReset={!isEdit}\n required\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { toConstantCase } from \"../schemas/inputs.js\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n module: ModuleSpecification;\n operation?: ModuleSpecification[\"operations\"][number];\n focusOnMount?: boolean;\n allOperationNames: string[];\n onAddOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n};\n\nexport function OperationForm({\n operation,\n module,\n focusOnMount,\n allOperationNames,\n onAddOperationAndInitialSchema,\n updateOperationName,\n deleteOperation,\n}: Props) {\n const isEdit = !!operation;\n\n const handleSubmit = async (name: string) => {\n if (isEdit && name === \"\") {\n deleteOperation(operation.id);\n return;\n }\n\n const formattedName = toConstantCase(name);\n\n if (isEdit) {\n if (formattedName !== operation.name) {\n updateOperationName(operation.id, formattedName);\n }\n } else {\n await onAddOperationAndInitialSchema(module.id, formattedName);\n }\n };\n\n const handleChange = (value: string) => {\n if (isEdit && value === \"\") {\n deleteOperation(operation.id);\n }\n };\n\n return (\n <TextField\n name=\"name\"\n value={operation?.name}\n label={isEdit ? \"Operation name *\" : \"Add operation *\"}\n onSubmit={(name) => void handleSubmit(name)}\n onChange={handleChange}\n placeholder=\"Add operation\"\n required={!isEdit}\n allowEmpty={!isEdit}\n shouldReset={!isEdit}\n focusOnMount={focusOnMount}\n unique={allOperationNames}\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useEffect, useRef } from \"react\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n focusOnMount?: boolean;\n setOperationDescription: (id: string, description: string) => void;\n};\n\nexport function OperationDescriptionForm({\n operation,\n focusOnMount,\n setOperationDescription,\n}: Props) {\n const textFieldRef = useRef<{ focus: () => void } | null>(null);\n\n useEffect(() => {\n if (focusOnMount && textFieldRef.current) {\n textFieldRef.current.focus();\n }\n }, [focusOnMount]);\n\n return (\n <TextField\n ref={textFieldRef}\n name=\"description\"\n value={operation.description}\n onSubmit={(newDescription) =>\n setOperationDescription(operation.id, newDescription)\n }\n label=\"Operation description\"\n allowEmpty\n placeholder=\"Operation Description\"\n />\n );\n}\n","import type {\n ModuleSpecification,\n OperationErrorSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport { pascalCase } from \"change-case\";\nimport { useRef } from \"react\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n error?: OperationErrorSpecification;\n focusOnMount?: boolean;\n onSubmit?: () => void;\n onAddOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n};\n\nexport function OperationErrorForm({\n operation,\n error,\n focusOnMount,\n onSubmit,\n onAddOperationError,\n deleteOperationError,\n setOperationErrorName,\n}: Props) {\n const textFieldRef = useRef<{ focus: () => void } | null>(null);\n const isEdit = !!error;\n const allOperationErrorNames = operation.errors\n .map((o) => o.name)\n .filter((n) => n !== null);\n\n const handleSubmit = (name: string) => {\n if (isEdit && name === \"\") {\n deleteOperationError(error.id);\n return;\n }\n\n const formattedName = pascalCase(name);\n\n if (isEdit) {\n setOperationErrorName(operation.id, error.id, formattedName);\n } else {\n void onAddOperationError(operation.id, formattedName);\n }\n onSubmit?.();\n };\n\n const handleChange = (value: string) => {\n if (isEdit && value === \"\") {\n deleteOperationError(error.id);\n }\n };\n\n return (\n <TextField\n ref={textFieldRef}\n name=\"name\"\n value={error?.name}\n onSubmit={handleSubmit}\n onChange={handleChange}\n placeholder=\"Add exception\"\n required={!isEdit}\n allowEmpty={!isEdit}\n shouldReset={!isEdit}\n unique={allOperationErrorNames}\n focusOnMount={focusOnMount}\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useId, useState } from \"react\";\nimport { OperationErrorForm } from \"./operation-error-form.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n};\n\nexport function OperationErrors({\n operation,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n}: Props) {\n const addErrorFormId = useId();\n const [shouldFocusAddForm, setShouldFocusAddForm] = useState(false);\n\n const onAddOperationError = useCallback(\n async (operationId: string, error: string) => {\n const errorId = await addOperationError(operationId, error);\n if (errorId) {\n setShouldFocusAddForm(true);\n }\n return errorId;\n },\n [addOperationError, setShouldFocusAddForm],\n );\n\n const onAddOperationErrorSubmit = useCallback(\n () => setShouldFocusAddForm(false),\n [setShouldFocusAddForm],\n );\n\n return (\n <ul className=\"ml-4 list-disc\">\n {operation.errors.map((error) => (\n <li key={error.id}>\n <OperationErrorForm\n error={error}\n operation={operation}\n onAddOperationError={onAddOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n />\n </li>\n ))}\n <li>\n <OperationErrorForm\n operation={operation}\n onAddOperationError={onAddOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n key={`${addErrorFormId}-${shouldFocusAddForm}`}\n focusOnMount={shouldFocusAddForm}\n onSubmit={onAddOperationErrorSubmit}\n />\n </li>\n </ul>\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { lazy, Suspense, useCallback } from \"react\";\nimport type { DocumentActionHandlers } from \"../types/documents.js\";\nimport { isEmptyOperationSchema } from \"../utils/helpers.js\";\nimport { ensureValidOperationSchemaInputName } from \"../utils/linting.js\";\nimport { OperationDescriptionForm } from \"./operation-description-form.js\";\nimport { OperationErrors } from \"./operation-errors.js\";\nimport { OperationForm } from \"./operation-form.js\";\nconst GraphqlEditor = lazy(() => import(\"./code-editors/graphql-editor.js\"));\nexport type WrappedHandlers = DocumentActionHandlers & {\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n};\ntype Props = {\n lastCreatedOperationId: string | null;\n operation: ModuleSpecification[\"operations\"][number];\n module: ModuleSpecification;\n allOperationNames: string[];\n onAddOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Operation(props: Props) {\n const {\n operation,\n module,\n allOperationNames,\n lastCreatedOperationId,\n onAddOperationAndInitialSchema,\n updateOperationName,\n deleteOperation,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n } = props;\n\n const noInputRequired = isEmptyOperationSchema(operation.schema);\n\n const handleToggleNoInput = useCallback(\n (checked: boolean) => toggleNoInputRequired(operation.id, checked),\n [operation.id, toggleNoInputRequired],\n );\n\n const handleUpdateDocument = useCallback(\n (newDoc: string) => updateOperationSchema(operation.id, newDoc),\n [operation.id, updateOperationSchema],\n );\n\n const customLinter = useCallback(\n (doc: string) =>\n operation.name\n ? ensureValidOperationSchemaInputName(doc, operation.name)\n : [],\n [operation.name],\n );\n\n return (\n <div\n className=\"mt-4 grid grid-cols-2 gap-x-12\"\n style={{\n gridTemplateAreas: `\n \"left editor\"\n \"errors editor\"\n `,\n gridTemplateRows: \"auto 1fr\",\n }}\n >\n <div className=\"flex flex-col gap-2\" style={{ gridArea: \"left\" }}>\n <OperationForm\n operation={operation}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n module={module}\n allOperationNames={allOperationNames}\n />\n <OperationDescriptionForm\n operation={operation}\n focusOnMount={operation.id === lastCreatedOperationId}\n setOperationDescription={setOperationDescription}\n />\n </div>\n\n <div className=\"relative top-8\" style={{ gridArea: \"editor\" }}>\n <label className=\"mb-2 flex cursor-pointer items-center gap-2\">\n <input\n type=\"checkbox\"\n checked={noInputRequired}\n onChange={(e) => handleToggleNoInput(e.target.checked)}\n className=\"size-4 rounded-sm border-gray-300 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100\"\n />\n <span className=\"text-sm text-gray-700 dark:text-slate-200\">\n Operation with no inputs\n </span>\n </label>\n {!noInputRequired && (\n <Suspense>\n <GraphqlEditor\n doc={operation.schema ?? \"\"}\n updateDocumentInModel={handleUpdateDocument}\n customLinter={customLinter}\n />\n </Suspense>\n )}\n </div>\n\n <div style={{ gridArea: \"errors\" }}>\n <h3 className=\"my-2 text-sm font-medium text-gray-700 dark:text-slate-200\">\n Reducer Exceptions\n </h3>\n <OperationErrors\n operation={operation}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n />\n </div>\n </div>\n );\n}\n","import { OperationForm } from \"./operation-form.js\";\nimport type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useId, useState } from \"react\";\nimport { Operation } from \"./operation.js\";\n\ntype Props = {\n module: ModuleSpecification;\n allOperations: ModuleSpecification[\"operations\"];\n shouldFocusNewOperation: boolean;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Operations({\n module,\n allOperations,\n shouldFocusNewOperation,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n updateOperationSchema,\n setOperationDescription,\n toggleNoInputRequired,\n}: Props) {\n const [lastCreatedOperationId, setLastCreatedOperationId] = useState<\n string | null\n >(null);\n const addOperationFormId = useId();\n const allOperationNames = allOperations\n .map((o) => o.name)\n .filter((n) => n !== null);\n\n const onAddOperationAndInitialSchema = useCallback(\n async (moduleId: string, name: string) => {\n const operationId = await addOperationAndInitialSchema(moduleId, name);\n if (operationId) {\n setLastCreatedOperationId(operationId);\n }\n return operationId;\n },\n [addOperationAndInitialSchema, setLastCreatedOperationId],\n );\n\n return (\n <div>\n {module.operations.map((operation) => (\n <div key={operation.id}>\n <Operation\n operation={operation}\n module={module}\n lastCreatedOperationId={lastCreatedOperationId}\n allOperationNames={allOperationNames}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n </div>\n ))}\n <div className=\"mt-6 w-1/2 pr-6\">\n <OperationForm\n key={addOperationFormId}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n module={module}\n allOperationNames={allOperationNames}\n focusOnMount={shouldFocusNewOperation}\n />\n </div>\n </div>\n );\n}\n","import type { ModuleSpecification as TModule } from \"@powerhousedao/shared/document-model\";\nimport { ModuleForm } from \"./module-form.js\";\nimport { Operations } from \"./operations.js\";\ntype Props = {\n module?: TModule;\n modules?: TModule[];\n allOperations: TModule[\"operations\"];\n lastCreatedModuleId: string | null;\n onAddModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n deleteModule: (id: string) => void;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Module(props: Props) {\n const {\n module,\n modules,\n allOperations,\n lastCreatedModuleId,\n onAddModule,\n updateModuleName,\n deleteModule,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n } = props;\n return (\n <div className=\"relative rounded-3xl bg-gray-100 p-6 dark:bg-slate-700\">\n <div className=\"mb-2 w-1/2 pr-6\">\n <ModuleForm\n modules={modules}\n module={module}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n />\n {!!module && (\n <button\n aria-label=\"Delete module\"\n tabIndex={-1}\n className=\"absolute top-1 right-1 p-2 text-gray-900 transition-colors hover:text-gray-500 dark:text-slate-100 dark:hover:text-slate-400\"\n onClick={() => {\n deleteModule(module.id);\n }}\n >\n <svg className=\"size-6\" viewBox=\"0 0 24 24\" fill=\"currentcolor\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.9993 8.51506L15.4844 7L11.9994 10.4852L8.51497 7.00057L7 8.51562L10.4844 12.0003L7.00056 15.4843L8.51552 16.9994L11.9994 13.5153L15.4838 17L16.9988 15.4849L13.5144 12.0003L16.9993 8.51506Z\"\n />\n </svg>\n </button>\n )}\n </div>\n {!!module && (\n <Operations\n module={module}\n allOperations={allOperations}\n shouldFocusNewOperation={module.id === lastCreatedModuleId}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n )}\n </div>\n );\n}\n","import type { ModuleSpecification as TModule } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Module } from \"./module.js\";\n\ntype Props = {\n modules: TModule[];\n allOperations: TModule[\"operations\"];\n addModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n deleteModule: (id: string) => void;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport default function Modules({\n modules,\n allOperations,\n addModule,\n updateModuleName,\n deleteModule,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n}: Props) {\n const [lastCreatedModuleId, setLastCreatedModuleId] = useState<string | null>(\n null,\n );\n const focusTrapRef = useRef<HTMLDivElement>(null);\n\n const onAddModule = useCallback(\n async (name: string) => {\n const moduleId = await addModule(name);\n if (moduleId) {\n setLastCreatedModuleId(moduleId);\n focusTrapRef.current?.focus();\n }\n return moduleId;\n },\n [addModule, setLastCreatedModuleId],\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n {modules.map((module) => (\n <Module\n key={module.id}\n module={module}\n modules={modules}\n allOperations={allOperations}\n lastCreatedModuleId={lastCreatedModuleId}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n deleteModule={deleteModule}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n ))}\n <Module\n key=\"add-module\"\n modules={modules}\n allOperations={allOperations}\n lastCreatedModuleId={lastCreatedModuleId}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n deleteModule={deleteModule}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n {/* Focus trap to prevent tabbing out of the editor */}\n <div\n ref={focusTrapRef}\n tabIndex={0}\n className=\"size-0 overflow-hidden\"\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import type { PHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHDocumentEditorConfig = {\n isExternalControlsEnabled: false,\n};\n","import {\n useDocumentOfType,\n useSelectedDocumentOfType,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n DocumentModelAction,\n DocumentModelDocument,\n} from \"@powerhousedao/shared/document-model\";\n\nexport function useDocumentModelDocument(\n documentId: string | undefined | null,\n): ReturnType<\n typeof useDocumentOfType<DocumentModelDocument, DocumentModelAction>\n> {\n return useDocumentOfType<DocumentModelDocument, DocumentModelAction>(\n documentId,\n \"powerhouse/document-model\",\n );\n}\n\nexport function useSelectedDocumentModelDocument(): ReturnType<\n typeof useSelectedDocumentOfType<DocumentModelDocument, DocumentModelAction>\n> {\n return useSelectedDocumentOfType<DocumentModelDocument, DocumentModelAction>(\n \"powerhouse/document-model\",\n );\n}\n","import { DocumentToolbar } from \"@powerhousedao/design-system/connect\";\nimport {\n usePHToast,\n useSetPHDocumentEditorConfig,\n} from \"@powerhousedao/reactor-browser\";\nimport { pascalCase } from \"change-case\";\nimport { generateId } from \"@powerhousedao/shared/document-model\";\nimport {\n addModule,\n addOperation,\n addOperationError,\n deleteModule,\n deleteOperation,\n deleteOperationError,\n setAuthorName,\n setAuthorWebsite,\n setInitialState,\n setModelDescription,\n setModelExtension,\n setModelId,\n setModelName,\n setModuleName,\n setOperationDescription,\n setOperationErrorName,\n setOperationName,\n setOperationSchema,\n setStateSchema,\n} from \"@powerhousedao/shared/document-model\";\nimport { lazy, Suspense, useEffect, useRef, useState } from \"react\";\nimport { Divider } from \"./components/divider.js\";\nimport ModelMetadata from \"./components/model-metadata-form.js\";\nimport Modules from \"./components/modules.js\";\nimport { editorConfig } from \"./config.js\";\nimport { SchemaContextProvider } from \"./context/schema-context.js\";\nimport { useSelectedDocumentModelDocument } from \"./hooks/useDocumentModelDocument.js\";\nimport type { Scope } from \"./types/documents.js\";\nimport {\n compareStringsWithoutWhitespace,\n initializeModelSchema,\n makeEmptyOperationSchema,\n makeOperationInitialDoc,\n} from \"./utils/helpers.js\";\nconst StateSchemas = lazy(() => import(\"./components/state-schemas.js\"));\n\nexport default function Editor() {\n useSetPHDocumentEditorConfig(editorConfig);\n const toast = usePHToast();\n const [document, dispatch] = useSelectedDocumentModelDocument();\n const [scope, setScope] = useState<Scope>(\"global\");\n const documentNodeName = document.header.name;\n const {\n name: modelName,\n id: documentType,\n extension,\n description,\n author: { name: authorName, website: authorWebsite },\n } = document.state.global;\n const {\n state: {\n global: {\n schema: globalStateSchema,\n initialValue: globalStateInitialValue,\n },\n local: { schema: localStateSchema, initialValue: localStateInitialValue },\n },\n modules,\n } = document.state.global.specifications[0];\n const operations = modules.flatMap((module) => module.operations);\n const shouldSetInitialName = useRef(\n !modelName && !!documentNodeName && operations.length === 0,\n );\n\n useEffect(() => {\n if (!shouldSetInitialName.current || !documentNodeName) return;\n\n const initialSchemaDoc = initializeModelSchema(documentNodeName);\n const actions = [\n setModelName({ name: documentNodeName }),\n setStateSchema({ schema: initialSchemaDoc, scope: \"global\" }),\n ];\n dispatch(actions);\n shouldSetInitialName.current = false;\n }, [documentNodeName, dispatch]);\n\n const operationSchemasSdl = operations\n .flatMap((operation) => operation.schema ?? [])\n .join(\"\\n\");\n\n const handleSetModelId = (id: string) => {\n if (compareStringsWithoutWhitespace(id, documentType)) return;\n dispatch([setModelId({ id })]);\n };\n\n const handleSetModelDescription = (newDescription: string) => {\n if (compareStringsWithoutWhitespace(newDescription, description)) return;\n dispatch(setModelDescription({ description: newDescription }));\n };\n\n const handleSetModelExtension = (newExtension: string) => {\n if (compareStringsWithoutWhitespace(newExtension, extension)) return;\n dispatch(setModelExtension({ extension: newExtension }));\n };\n\n const handleSetModelName = (newName: string) => {\n if (compareStringsWithoutWhitespace(newName, modelName)) return;\n dispatch(setModelName({ name: newName }));\n };\n\n const handleSetAuthorName = (newAuthorName: string) => {\n if (compareStringsWithoutWhitespace(newAuthorName, authorName)) return;\n dispatch(setAuthorName({ authorName: newAuthorName }));\n };\n\n const handleSetAuthorWebsite = (newAuthorWebsite: string) => {\n if (compareStringsWithoutWhitespace(newAuthorWebsite, authorWebsite ?? \"\"))\n return;\n dispatch(setAuthorWebsite({ authorWebsite: newAuthorWebsite }));\n };\n\n const handleSetStateSchema = (newSchema: string, scope: Scope) => {\n const oldSchema = scope === \"global\" ? globalStateSchema : localStateSchema;\n if (compareStringsWithoutWhitespace(newSchema, oldSchema)) return;\n dispatch(setStateSchema({ schema: newSchema, scope }));\n };\n\n const handleSetInitialState = (newInitialValue: string, scope: Scope) => {\n const oldInitialValue =\n scope === \"global\" ? globalStateInitialValue : localStateInitialValue;\n if (compareStringsWithoutWhitespace(newInitialValue, oldInitialValue))\n return;\n dispatch(setInitialState({ initialValue: newInitialValue, scope }));\n };\n\n const handleAddModule = (name: string): Promise<string | undefined> => {\n return new Promise((resolve) => {\n try {\n if (\n modules.some((module) =>\n compareStringsWithoutWhitespace(module.name, name),\n )\n ) {\n resolve(undefined);\n return;\n }\n const id = generateId();\n dispatch(addModule({ id, name }));\n resolve(id);\n } catch (error) {\n console.error(\"Failed to add module:\", error);\n resolve(undefined);\n }\n });\n };\n\n const handleSetModuleName = (id: string, name: string) => {\n if (\n modules.some((module) =>\n compareStringsWithoutWhitespace(module.name, name),\n )\n )\n return;\n dispatch(setModuleName({ id, name }));\n };\n\n const handleDeleteModule = (id: string) => {\n dispatch(deleteModule({ id }));\n };\n\n const handleAddOperation = (\n moduleId: string,\n name: string,\n ): Promise<string | undefined> => {\n return new Promise((resolve) => {\n const id = generateId();\n dispatch(\n addOperation({ id, moduleId, name, scope }),\n (errors) => {\n if (errors.length > 0) {\n if (toast) {\n toast(errors[0].message, { type: \"connect-warning\" });\n }\n resolve(undefined);\n } else {\n resolve(id);\n }\n },\n () => resolve(id),\n );\n });\n };\n\n const handleSetOperationName = (id: string, name: string) => {\n dispatch(setOperationName({ id, name }), (errors) => {\n if (errors.length > 0 && toast) {\n toast(errors[0].message, { type: \"connect-warning\" });\n }\n });\n };\n\n const handleSetOperationSchema = (id: string, newSchema: string) => {\n const operation = operations.find((operation) => operation.id === id);\n if (\n operation?.schema &&\n compareStringsWithoutWhitespace(newSchema, operation.schema)\n )\n return;\n dispatch(setOperationSchema({ id, schema: newSchema }));\n };\n\n const handleToggleNoInputRequired = (\n id: string,\n noInputRequired: boolean,\n ) => {\n const operation = operations.find((op) => op.id === id);\n if (!operation?.name) return;\n\n if (noInputRequired) {\n dispatch(\n setOperationSchema({\n id,\n schema: makeEmptyOperationSchema(operation.name),\n }),\n );\n } else {\n dispatch(\n setOperationSchema({\n id,\n schema: makeOperationInitialDoc(operation.name),\n }),\n );\n }\n };\n\n const handleSetOperationDescription = (\n id: string,\n newDescription: string,\n ) => {\n const operationDescription =\n operations.find((operation) => operation.id === id)?.description ?? \"\";\n if (compareStringsWithoutWhitespace(operationDescription, newDescription))\n return;\n dispatch(setOperationDescription({ id, description: newDescription }));\n };\n\n const handleDeleteOperation = (id: string) => {\n dispatch(deleteOperation({ id }));\n };\n\n const handleAddOperationError = (\n operationId: string,\n errorName: string,\n ): Promise<string | undefined> => {\n return new Promise((resolve) => {\n try {\n const operation = operations.find(\n (operation) => operation.id === operationId,\n );\n const operationErrorNames =\n operation?.errors.map((error) => error.name).filter(Boolean) ?? [];\n if (\n operationErrorNames.some((name) =>\n compareStringsWithoutWhitespace(name, errorName),\n )\n ) {\n resolve(undefined);\n return;\n }\n const id = generateId();\n const errorCode = pascalCase(errorName);\n dispatch(addOperationError({ id, operationId, errorName, errorCode }));\n resolve(id);\n } catch (error) {\n console.error(\"Failed to add operation error:\", error);\n resolve(undefined);\n }\n });\n };\n\n const handleDeleteOperationError = (id: string) => {\n dispatch(deleteOperationError({ id }));\n };\n\n const handleSetOperationErrorName = (\n operationId: string,\n errorId: string,\n errorName: string,\n ) => {\n const operation = operations.find(\n (operation) => operation.id === operationId,\n );\n const operationErrorNames =\n operation?.errors.map((error) => error.name).filter(Boolean) ?? [];\n if (\n operationErrorNames.some((name) =>\n compareStringsWithoutWhitespace(name, errorName),\n )\n )\n return;\n dispatch(setOperationErrorName({ id: errorId, errorName }));\n };\n\n const addOperationAndInitialSchema = async (\n moduleId: string,\n name: string,\n ): Promise<string | undefined> => {\n try {\n const id = await handleAddOperation(moduleId, name);\n if (!id) return undefined;\n try {\n handleSetOperationSchema(id, makeOperationInitialDoc(name));\n return id;\n } catch (error) {\n console.error(\"Failed to update operation schema:\", error);\n return undefined;\n }\n } catch (error) {\n console.error(\"Failed to add operation and schema:\", error);\n return undefined;\n }\n };\n\n return (\n <main className=\"min-h-dvh bg-gray-50 p-6 dark:bg-slate-800\">\n <DocumentToolbar />\n <SchemaContextProvider\n globalStateSchemaSdl={globalStateSchema}\n localStateSchemaSdl={localStateSchema}\n operationSchemasSdl={operationSchemasSdl}\n >\n <div className=\"mx-auto max-w-6xl px-4 pt-8\">\n <ModelMetadata\n name={modelName}\n documentType={documentType}\n extension={extension}\n description={description}\n authorName={authorName}\n authorWebsite={authorWebsite ?? \"\"}\n globalStateSchema={globalStateSchema}\n localStateSchema={localStateSchema}\n setModelId={handleSetModelId}\n setModelDescription={handleSetModelDescription}\n setModelExtension={handleSetModelExtension}\n setModelName={handleSetModelName}\n setAuthorName={handleSetAuthorName}\n setAuthorWebsite={handleSetAuthorWebsite}\n setStateSchema={handleSetStateSchema}\n />\n <Divider />\n <div>\n <Suspense>\n <StateSchemas\n modelName={modelName}\n globalStateSchema={globalStateSchema}\n globalStateInitialValue={globalStateInitialValue}\n localStateSchema={localStateSchema}\n localStateInitialValue={localStateInitialValue}\n setStateSchema={handleSetStateSchema}\n setInitialState={handleSetInitialState}\n currentScope={scope}\n onScopeChange={setScope}\n />\n </Suspense>\n <Divider />\n <h3 className=\"mb-6 text-lg text-gray-900 capitalize dark:text-slate-100\">\n {scope} Operations\n </h3>\n <Modules\n modules={modules.map((module) => ({\n ...module,\n operations: module.operations.filter(\n (op) => op.scope === scope,\n ),\n }))}\n allOperations={operations}\n addModule={handleAddModule}\n updateModuleName={handleSetModuleName}\n deleteModule={handleDeleteModule}\n updateOperationName={handleSetOperationName}\n updateOperationSchema={handleSetOperationSchema}\n setOperationDescription={handleSetOperationDescription}\n deleteOperation={handleDeleteOperation}\n addOperationError={handleAddOperationError}\n deleteOperationError={handleDeleteOperationError}\n setOperationErrorName={handleSetOperationErrorName}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n toggleNoInputRequired={handleToggleNoInputRequired}\n />\n </div>\n </div>\n </SchemaContextProvider>\n </main>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,5,6,10],"mappings":"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"}
1
+ {"version":3,"file":"editor-Clp9-uJE.js","names":["use","React","React","r","e","s","i","t","o","r","e","n.parse","n.parseAsync","n.$ZodError","z.string","z\n .string","z\n .object","z\n .union","z.url","z.literal","Label","React","React","LabelPrimitive.Root","React","zodResolver","z.object","z.object","z.string"],"sources":["../../../../node_modules/.pnpm/@radix-ui+react-slot@1.2.4_@types+react@19.2.14_react@19.2.6/node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/.pnpm/@radix-ui+react-primitive@2.1.4_@types+react-dom@19.2.3_@types+react@19.2.14__@types+re_c8c8fd2647f03197dbf56370d7498033/node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/.pnpm/clsx@2.0.0/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/class-variance-authority@0.7.0/node_modules/class-variance-authority/dist/index.mjs","../../editors/document-model-editor/components/divider.tsx","../../../../node_modules/.pnpm/@hookform+resolvers@5.2.2_react-hook-form@7.71.2_react@19.2.6_/node_modules/@hookform/resolvers/dist/resolvers.mjs","../../../../node_modules/.pnpm/@hookform+resolvers@5.2.2_react-hook-form@7.71.2_react@19.2.6_/node_modules/@hookform/resolvers/zod/dist/zod.mjs","../../editors/document-model-editor/schemas/inputs.ts","../../editors/document-model-editor/context/form-context.ts","../../editors/document-model-editor/hooks/useFormField.ts","../../../../node_modules/.pnpm/@radix-ui+react-label@2.1.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_8d35ec453e0b59eefe06771bb1432577/node_modules/@radix-ui/react-label/dist/index.mjs","../../editors/document-model-editor/components/label.tsx","../../editors/document-model-editor/components/form.tsx","../../editors/document-model-editor/components/text-area.tsx","../../editors/document-model-editor/components/text-field.tsx","../../editors/document-model-editor/components/model-metadata-form.tsx","../../editors/document-model-editor/components/module-form.tsx","../../editors/document-model-editor/components/operation-form.tsx","../../editors/document-model-editor/components/operation-description-form.tsx","../../editors/document-model-editor/components/operation-error-form.tsx","../../editors/document-model-editor/components/operation-errors.tsx","../../editors/document-model-editor/components/operation.tsx","../../editors/document-model-editor/components/operations.tsx","../../editors/document-model-editor/components/module.tsx","../../editors/document-model-editor/components/modules.tsx","../../editors/document-model-editor/config.ts","../../editors/document-model-editor/hooks/useDocumentModelDocument.ts","../../editors/document-model-editor/editor.tsx"],"sourcesContent":["// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import { twMerge } from \"tailwind-merge\";\n\ntype Props = {\n className?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n margin?: \"sm\" | \"md\" | \"lg\";\n};\nexport function Divider({ className, size = \"sm\", margin = \"md\" }: Props) {\n function getSize() {\n if (size === \"sm\") return \"h-px\";\n if (size === \"md\") return \"h-1\";\n return \"h-1.5\";\n }\n\n function getMargin() {\n if (margin === \"sm\") return \"my-4\";\n if (margin === \"md\") return \"my-6\";\n return \"my-8\";\n }\n\n const sizeClass = getSize();\n const marginClass = getMargin();\n return (\n <div\n className={twMerge(\n \"bg-gray-200 dark:bg-slate-600 dark:text-slate-100\",\n sizeClass,\n marginClass,\n className,\n )}\n />\n );\n}\n","import{get as e,set as t}from\"react-hook-form\";const r=(t,r,o)=>{if(t&&\"reportValidity\"in t){const s=e(o,r);t.setCustomValidity(s&&s.message||\"\"),t.reportValidity()}},o=(e,t)=>{for(const o in t.fields){const s=t.fields[o];s&&s.ref&&\"reportValidity\"in s.ref?r(s.ref,o,e):s&&s.refs&&s.refs.forEach(t=>r(t,o,e))}},s=(r,s)=>{s.shouldUseNativeValidation&&o(r,s);const n={};for(const o in r){const f=e(s.fields,o),c=Object.assign(r[o]||{},{ref:f&&f.ref});if(i(s.names||Object.keys(r),o)){const r=Object.assign({},e(n,o));t(r,\"root\",c),t(n,o,r)}else t(n,o,c)}return n},i=(e,t)=>{const r=n(t);return e.some(e=>n(e).match(`^${r}\\\\.\\\\d+`))};function n(e){return e.replace(/\\]|\\[/g,\"\")}export{s as toNestErrors,o as validateFieldsNatively};\n//# sourceMappingURL=resolvers.mjs.map\n","import{validateFieldsNatively as r,toNestErrors as e}from\"@hookform/resolvers\";import{appendErrors as o}from\"react-hook-form\";import*as n from\"zod/v4/core\";function t(r,e){try{var o=r()}catch(r){return e(r)}return o&&o.then?o.then(void 0,e):o}function s(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"unionErrors\"in t){var u=t.unionErrors[0].errors[0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"unionErrors\"in t&&t.unionErrors.forEach(function(e){return e.errors.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function i(r,e){for(var n={};r.length;){var t=r[0],s=t.code,i=t.message,a=t.path.join(\".\");if(!n[a])if(\"invalid_union\"===t.code&&t.errors.length>0){var u=t.errors[0][0];n[a]={message:u.message,type:u.code}}else n[a]={message:i,type:s};if(\"invalid_union\"===t.code&&t.errors.forEach(function(e){return e.forEach(function(e){return r.push(e)})}),e){var c=n[a].types,f=c&&c[t.code];n[a]=o(a,e,n,s,f?[].concat(f,t.message):t.message)}r.shift()}return n}function a(o,a,u){if(void 0===u&&(u={}),function(r){return\"_def\"in r&&\"object\"==typeof r._def&&\"typeName\"in r._def}(o))return function(n,i,c){try{return Promise.resolve(t(function(){return Promise.resolve(o[\"sync\"===u.mode?\"parse\":\"parseAsync\"](n,a)).then(function(e){return c.shouldUseNativeValidation&&r({},c),{errors:{},values:u.raw?Object.assign({},n):e}})},function(r){if(function(r){return Array.isArray(null==r?void 0:r.issues)}(r))return{values:{},errors:e(s(r.errors,!c.shouldUseNativeValidation&&\"all\"===c.criteriaMode),c)};throw r}))}catch(r){return Promise.reject(r)}};if(function(r){return\"_zod\"in r&&\"object\"==typeof r._zod}(o))return function(s,c,f){try{return Promise.resolve(t(function(){return Promise.resolve((\"sync\"===u.mode?n.parse:n.parseAsync)(o,s,a)).then(function(e){return f.shouldUseNativeValidation&&r({},f),{errors:{},values:u.raw?Object.assign({},s):e}})},function(r){if(function(r){return r instanceof n.$ZodError}(r))return{values:{},errors:e(i(r.issues,!f.shouldUseNativeValidation&&\"all\"===f.criteriaMode),f)};throw r}))}catch(r){return Promise.reject(r)}};throw new Error(\"Invalid input: not a Zod schema\")}export{a as zodResolver};\n//# sourceMappingURL=zod.module.js.map\n","import { z } from \"zod\";\nimport { snakeCase, constantCase } from \"change-case\";\n\nconst isUppercase = (value: string) => !/\\p{Ll}/u.test(value);\nconst isLowercase = (value: string) => !/\\p{Lu}/u.test(value);\n\nconst whitespaceRegex = /\\s+/g;\n\nexport function containsSpaces(s: string) {\n return whitespaceRegex.test(s);\n}\n\nexport function replaceSpaces(s: string) {\n return s.replace(whitespaceRegex, \"_\");\n}\n\ntype SchemaOptions = {\n required?: boolean;\n allowEmpty?: boolean;\n unique?: string[];\n};\n\nexport function createNameSchema(options: SchemaOptions = {}) {\n const { required = false, allowEmpty = false, unique = [] } = options;\n\n const baseSchema = allowEmpty ? z.string() : z.string().min(1);\n\n const uniqueRefinement = baseSchema.refine(\n (value) => {\n if (!value && allowEmpty) return true;\n return !unique\n .map((n) => n.toLowerCase())\n .includes(value.replace(/^\\s+|\\s+$/g, \"_\").toLowerCase());\n },\n { message: \"Item with this name already exists\" },\n );\n\n if (!required) {\n return unique.length > 0\n ? z\n .string()\n .optional()\n .refine(\n (value) => {\n if (value === undefined) return true;\n if (!value && allowEmpty) return true;\n return !unique\n .map((n) => n.toLowerCase())\n .includes(value.replace(/^\\s+|\\s+$/g, \"_\").toLowerCase());\n },\n { message: \"Item with this name already exists\" },\n )\n : z.string().optional();\n }\n\n return unique.length > 0 ? uniqueRefinement : baseSchema;\n}\n\nexport function createConstantCaseSchema(options: SchemaOptions = {}) {\n return createNameSchema(options)\n .transform((value) => (value ? value.toUpperCase() : value))\n .refine((value) => !value || isUppercase(value), {\n message: \"Must be uppercase\",\n });\n}\n\nexport function createLowercaseSnakeCaseSchema(options: SchemaOptions = {}) {\n return createNameSchema(options)\n .transform((value) => (value ? value.toLowerCase() : value))\n .refine((value) => !value || isLowercase(value), {\n message: \"Must be lowercase\",\n });\n}\n\nexport function toLowercaseSnakeCase(\n value: string,\n options: SchemaOptions = {},\n) {\n return createLowercaseSnakeCaseSchema(options).parse(\n snakeCase(value),\n ) as LowercaseSnakeCase;\n}\n\nexport function toConstantCase(value: string, options: SchemaOptions = {}) {\n return createConstantCaseSchema(options).parse(\n constantCase(value),\n ) as ConstantCase;\n}\n\nexport type SnakeCase = `${string}_${string}`;\nexport type LowercaseSnakeCase = Lowercase<SnakeCase>;\nexport type ConstantCase = Uppercase<SnakeCase>;\nexport type Prettify<T> = {\n [K in keyof T]: T[K];\n} & {};\n\nexport const AuthorSchema = z\n .object({\n name: createNameSchema({ allowEmpty: true }),\n website: z\n .union([z.url(), z.literal(\"\")])\n .optional()\n .default(\"\"),\n })\n .default({\n name: \"\",\n website: \"\",\n });\n","import React from \"react\";\nimport type { FieldValues, FieldPath } from \"react-hook-form\";\n\nexport type FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nexport type FormItemContextValue = {\n id: string;\n};\n\nexport const FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n","import React from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context/form-context.js\";\n\nexport const useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n","\"use client\";\n\n// src/label.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Label\";\nvar Label = React.forwardRef((props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.label,\n {\n ...props,\n ref: forwardedRef,\n onMouseDown: (event) => {\n const target = event.target;\n if (target.closest(\"button, input, select, textarea\")) return;\n props.onMouseDown?.(event);\n if (!event.defaultPrevented && event.detail > 1) event.preventDefault();\n }\n }\n );\n});\nLabel.displayName = NAME;\nvar Root = Label;\nexport {\n Label,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { cva } from \"class-variance-authority\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst labelVariants = cva(\n \"text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={twMerge(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport type * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { ControllerProps, FieldPath, FieldValues } from \"react-hook-form\";\nimport { Controller, FormProvider } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context/form-context.js\";\nimport { useFormField } from \"../hooks/useFormField.js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Label } from \"./label.js\";\n\nconst Form = FormProvider;\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={className} {...props} />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = \"FormItem\";\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={twMerge(error && \"text-red-900 dark:text-red-400\", className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = \"FormLabel\";\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error ? formDescriptionId : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = \"FormControl\";\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={twMerge(\n \"text-sm text-gray-700 dark:text-slate-200\",\n className,\n )}\n {...props}\n />\n );\n});\nFormDescription.displayName = \"FormDescription\";\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={twMerge(\n \"text-sm font-medium text-red-800 dark:text-red-100\",\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = \"FormMessage\";\n\nexport {\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","import * as React from \"react\";\nimport { forwardRef, useImperativeHandle, useRef, useCallback } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nexport interface TextareaHandle {\n focus: () => void;\n element: HTMLTextAreaElement | null;\n}\n\nexport const Textarea = forwardRef<TextareaHandle, TextareaProps>(\n ({ className, ...props }, ref) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const adjustHeight = useCallback((textarea: HTMLTextAreaElement) => {\n textarea.style.height = \"auto\";\n const newHeight = Math.max(textarea.scrollHeight, textarea.offsetHeight);\n textarea.style.height = `${newHeight}px`;\n }, []);\n\n const handleInput = useCallback(\n (e: React.FormEvent<HTMLTextAreaElement>) => {\n adjustHeight(e.currentTarget);\n },\n [adjustHeight],\n );\n\n React.useEffect(() => {\n if (textareaRef.current) {\n adjustHeight(textareaRef.current);\n }\n }, [adjustHeight]);\n\n useImperativeHandle(ref, () => ({\n focus: () => textareaRef.current?.focus(),\n element: textareaRef.current,\n }));\n\n return (\n <textarea\n {...props}\n className={twMerge(\n \"min-h-10 w-full resize-none rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-sm text-gray-900 placeholder:text-gray-600 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100 dark:placeholder:text-slate-300\",\n className,\n )}\n ref={textareaRef}\n onInput={handleInput}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n","import { zodResolver } from \"@hookform/resolvers/zod\";\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport type { FieldValues, Resolver } from \"react-hook-form\";\nimport { useForm } from \"react-hook-form\";\nimport { z } from \"zod\";\nimport { createNameSchema } from \"../schemas/inputs.js\";\nimport { compareStringsWithoutWhitespace } from \"../utils/helpers.js\";\nimport {\n Form,\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"./form.js\";\nimport type { TextareaHandle } from \"./text-area.js\";\nimport { Textarea } from \"./text-area.js\";\n\ntype TextFieldProps = {\n name: string;\n value: string | null | undefined;\n onSubmit: (value: string) => void;\n label?: string;\n placeholder?: string;\n className?: string;\n rows?: number;\n focusOnMount?: boolean;\n required?: boolean;\n allowEmpty?: boolean;\n unique?: string[];\n shouldReset?: boolean;\n onChange?: (value: string) => void;\n};\n\ntype TextFieldHandle = {\n focus: () => void;\n};\n\nexport const TextField = forwardRef<TextFieldHandle, TextFieldProps>(\n (\n {\n name,\n value,\n onSubmit,\n label,\n placeholder,\n unique,\n className = \"\",\n rows = 1,\n focusOnMount = false,\n required = false,\n allowEmpty = false,\n shouldReset = false,\n onChange,\n },\n ref,\n ) => {\n const textareaRef = useRef<TextareaHandle | null>(null);\n const id = useId();\n useEffect(() => {\n if (focusOnMount && textareaRef.current) {\n textareaRef.current.focus();\n }\n }, [focusOnMount]);\n\n const fieldSchema = z.object({\n [name]: createNameSchema({ required, allowEmpty, unique }),\n });\n\n const form = useForm({\n resolver: zodResolver(\n fieldSchema as unknown as Parameters<typeof zodResolver>[0],\n ) as Resolver<FieldValues>,\n defaultValues: {\n [name]: value ?? \"\",\n },\n });\n\n const handleSubmit = useCallback(\n (values: FieldValues) => {\n const newValue = values[name] as string | undefined;\n if (newValue === undefined || value === newValue) return;\n onSubmit(newValue);\n if (shouldReset) form.reset({ [name]: \"\" });\n },\n [name, value, onSubmit, form, shouldReset],\n );\n\n const handleBlur = useCallback(async () => {\n const currentValue = (form.getValues()[name] as string | undefined) ?? \"\";\n\n if (value === null || value === undefined) {\n if (!currentValue || currentValue.trim() === \"\") return;\n }\n\n if (compareStringsWithoutWhitespace(currentValue, value ?? \"\")) return;\n\n try {\n await form.trigger(); // Trigger validation\n if (form.formState.isValid) {\n await form.handleSubmit(handleSubmit)();\n }\n } catch (_e) {\n // Allow blur to proceed even if validation fails\n }\n }, [form, handleSubmit, name, value]);\n\n const onEnterKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n (e.target as HTMLTextAreaElement).blur();\n }\n },\n [],\n );\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n onChange?.(newValue);\n },\n [onChange],\n );\n\n useImperativeHandle(ref, () => ({\n focus: () => textareaRef.current?.focus(),\n }));\n\n useEffect(() => {\n form.reset({ [name]: value ?? \"\" });\n }, [form, name, value]);\n\n return (\n <Form {...form}>\n <FormField\n control={form.control}\n name={name}\n render={({ field }) => (\n <FormItem className=\"grid h-full grid-rows-[auto,1fr] gap-2 overflow-visible\">\n {!!label && (\n <FormLabel\n htmlFor={name}\n className=\"text-sm font-medium text-gray-700 dark:text-slate-200\"\n >\n {label}\n </FormLabel>\n )}\n <FormControl>\n <Textarea\n {...field}\n id={id}\n name={name}\n ref={(node) => {\n if (node) {\n field.ref(node.element);\n textareaRef.current = node;\n }\n }}\n placeholder={placeholder}\n onBlur={() => void handleBlur()}\n onChange={(e) => {\n field.onChange(e);\n handleChange(e);\n }}\n onKeyDown={onEnterKeyDown}\n rows={rows}\n className={className}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n </Form>\n );\n },\n);\n\nTextField.displayName = \"TextField\";\n","import { useCallback } from \"react\";\nimport { z } from \"zod\";\nimport type { Scope } from \"../types/documents.js\";\nimport {\n handleModelNameChange,\n makeInitialSchemaDoc,\n renameSchemaType,\n} from \"../utils/helpers.js\";\nimport { TextField } from \"./text-field.js\";\n\nexport const MetadataFormSchema = z.object({\n name: z.string(),\n documentType: z.string(),\n extension: z.string().optional().default(\"\"),\n description: z.string(),\n authorName: z.string(),\n authorWebsite: z.string(),\n});\n\nexport type MetadataFormValues = z.infer<typeof MetadataFormSchema>;\n\ntype Props = MetadataFormValues & {\n globalStateSchema: string;\n localStateSchema: string;\n setModelName: (name: string) => void;\n setModelId: (id: string) => void;\n setModelExtension: (extension: string) => void;\n setModelDescription: (description: string) => void;\n setAuthorName: (authorName: string) => void;\n setAuthorWebsite: (authorWebsite: string) => void;\n setStateSchema: (schema: string, scope: Scope) => void;\n};\n\nexport default function ModelMetadata(props: Props) {\n return (\n <div>\n <ModelNameForm {...props} />\n <div className=\"flex h-full flex-col gap-4\">\n <div className=\"grid flex-1 grid-cols-3 items-start gap-4\">\n <div className=\"col-span-2 flex h-full flex-col gap-4\">\n <div className=\"shrink-0\">\n <DocumentTypeForm {...props} />\n </div>\n <div className=\"min-h-0 flex-1\">\n <DescriptionForm {...props} />\n </div>\n </div>\n <div className=\"col-span-1 flex flex-col gap-4\">\n <AuthorNameForm {...props} />\n <AuthorWebsiteForm {...props} />\n <ModelExtensionForm {...props} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport function ModelNameForm(props: Props) {\n const {\n name,\n globalStateSchema,\n localStateSchema,\n setModelName,\n setStateSchema,\n } = props;\n\n const onSubmit = useCallback(\n (newName: string) => {\n if (name === newName) {\n return;\n }\n setModelName(newName);\n\n const hasExistingSchema = !!globalStateSchema;\n\n if (!hasExistingSchema) {\n const initialSchemaDoc = makeInitialSchemaDoc(newName, \"global\");\n setStateSchema(initialSchemaDoc, \"global\");\n return;\n }\n const newSchema = renameSchemaType(\n globalStateSchema,\n name,\n newName,\n \"global\",\n );\n setStateSchema(newSchema, \"global\");\n\n if (localStateSchema) {\n const newLocalStateSchema = renameSchemaType(\n localStateSchema,\n name,\n newName,\n \"local\",\n );\n setStateSchema(newLocalStateSchema, \"local\");\n }\n handleModelNameChange({\n oldName: name,\n newName,\n globalStateSchema,\n localStateSchema,\n setStateSchema,\n });\n },\n [name, globalStateSchema, localStateSchema, setStateSchema, setModelName],\n );\n\n return (\n <TextField\n name=\"name\"\n value={name}\n onSubmit={onSubmit}\n placeholder=\"Model name\"\n className=\"border-none pl-0 text-xl font-bold text-gray-900 dark:text-slate-50\"\n required\n focusOnMount\n />\n );\n}\n\nexport function DocumentTypeForm(props: Props) {\n const { documentType, setModelId } = props;\n\n return (\n <TextField\n label=\"Document Type *\"\n name=\"powerhouse/document-model\"\n value={documentType}\n onSubmit={setModelId}\n placeholder=\"Document Type\"\n required\n />\n );\n}\n\nexport function ModelExtensionForm(props: Props) {\n const { extension, setModelExtension } = props;\n\n return (\n <TextField\n name=\"extension\"\n value={extension}\n onSubmit={setModelExtension}\n label=\"Model Extension\"\n placeholder=\"Example .phdm\"\n allowEmpty\n />\n );\n}\n\nexport function DescriptionForm(props: Props) {\n const { description, setModelDescription } = props;\n\n return (\n <TextField\n name=\"description\"\n label=\"Model Description\"\n value={description}\n onSubmit={setModelDescription}\n placeholder=\"Describe your document to others\"\n allowEmpty\n className=\"h-full\"\n />\n );\n}\n\nexport function AuthorNameForm(props: Props) {\n const { authorName, setAuthorName } = props;\n\n return (\n <TextField\n name=\"authorName\"\n value={authorName}\n onSubmit={setAuthorName}\n label=\"Author Name\"\n placeholder=\"Username or organisation\"\n allowEmpty\n />\n );\n}\n\nexport function AuthorWebsiteForm(props: Props) {\n const { authorWebsite, setAuthorWebsite } = props;\n\n return (\n <TextField\n name=\"authorWebsite\"\n value={authorWebsite}\n label=\"Website URL\"\n onSubmit={(newAuthorWebsite) => {\n if (!!authorWebsite && !newAuthorWebsite) return;\n setAuthorWebsite(newAuthorWebsite);\n }}\n placeholder=\"https://www.powerhouse.inc/\"\n allowEmpty\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { toLowercaseSnakeCase } from \"../schemas/inputs.js\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n modules?: ModuleSpecification[];\n module?: ModuleSpecification;\n onAddModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n};\n\nexport function ModuleForm({\n module,\n onAddModule,\n updateModuleName,\n modules = [],\n}: Props) {\n const isEdit = !!module;\n const moduleNames = modules.map((m) => m.name);\n\n const handleSubmit = async (name: string) => {\n const formattedName = toLowercaseSnakeCase(name);\n if (!formattedName.length) return;\n\n if (isEdit) {\n if (formattedName !== module.name) {\n updateModuleName(module.id, formattedName);\n }\n } else {\n await onAddModule(formattedName);\n }\n };\n\n return (\n <TextField\n key={module?.id ?? \"new\"}\n name=\"name\"\n label={isEdit ? \"Module name *\" : \"Add module *\"}\n value={module?.name}\n onSubmit={(name) => void handleSubmit(name)}\n placeholder=\"Add module\"\n unique={moduleNames}\n shouldReset={!isEdit}\n required\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { toConstantCase } from \"../schemas/inputs.js\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n module: ModuleSpecification;\n operation?: ModuleSpecification[\"operations\"][number];\n focusOnMount?: boolean;\n allOperationNames: string[];\n onAddOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n};\n\nexport function OperationForm({\n operation,\n module,\n focusOnMount,\n allOperationNames,\n onAddOperationAndInitialSchema,\n updateOperationName,\n deleteOperation,\n}: Props) {\n const isEdit = !!operation;\n\n const handleSubmit = async (name: string) => {\n if (isEdit && name === \"\") {\n deleteOperation(operation.id);\n return;\n }\n\n const formattedName = toConstantCase(name);\n\n if (isEdit) {\n if (formattedName !== operation.name) {\n updateOperationName(operation.id, formattedName);\n }\n } else {\n await onAddOperationAndInitialSchema(module.id, formattedName);\n }\n };\n\n const handleChange = (value: string) => {\n if (isEdit && value === \"\") {\n deleteOperation(operation.id);\n }\n };\n\n return (\n <TextField\n name=\"name\"\n value={operation?.name}\n label={isEdit ? \"Operation name *\" : \"Add operation *\"}\n onSubmit={(name) => void handleSubmit(name)}\n onChange={handleChange}\n placeholder=\"Add operation\"\n required={!isEdit}\n allowEmpty={!isEdit}\n shouldReset={!isEdit}\n focusOnMount={focusOnMount}\n unique={allOperationNames}\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useEffect, useRef } from \"react\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n focusOnMount?: boolean;\n setOperationDescription: (id: string, description: string) => void;\n};\n\nexport function OperationDescriptionForm({\n operation,\n focusOnMount,\n setOperationDescription,\n}: Props) {\n const textFieldRef = useRef<{ focus: () => void } | null>(null);\n\n useEffect(() => {\n if (focusOnMount && textFieldRef.current) {\n textFieldRef.current.focus();\n }\n }, [focusOnMount]);\n\n return (\n <TextField\n ref={textFieldRef}\n name=\"description\"\n value={operation.description}\n onSubmit={(newDescription) =>\n setOperationDescription(operation.id, newDescription)\n }\n label=\"Operation description\"\n allowEmpty\n placeholder=\"Operation Description\"\n />\n );\n}\n","import type {\n ModuleSpecification,\n OperationErrorSpecification,\n} from \"@powerhousedao/shared/document-model\";\nimport { pascalCase } from \"change-case\";\nimport { useRef } from \"react\";\nimport { TextField } from \"./text-field.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n error?: OperationErrorSpecification;\n focusOnMount?: boolean;\n onSubmit?: () => void;\n onAddOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n};\n\nexport function OperationErrorForm({\n operation,\n error,\n focusOnMount,\n onSubmit,\n onAddOperationError,\n deleteOperationError,\n setOperationErrorName,\n}: Props) {\n const textFieldRef = useRef<{ focus: () => void } | null>(null);\n const isEdit = !!error;\n const allOperationErrorNames = operation.errors\n .map((o) => o.name)\n .filter((n) => n !== null);\n\n const handleSubmit = (name: string) => {\n if (isEdit && name === \"\") {\n deleteOperationError(error.id);\n return;\n }\n\n const formattedName = pascalCase(name);\n\n if (isEdit) {\n setOperationErrorName(operation.id, error.id, formattedName);\n } else {\n void onAddOperationError(operation.id, formattedName);\n }\n onSubmit?.();\n };\n\n const handleChange = (value: string) => {\n if (isEdit && value === \"\") {\n deleteOperationError(error.id);\n }\n };\n\n return (\n <TextField\n ref={textFieldRef}\n name=\"name\"\n value={error?.name}\n onSubmit={handleSubmit}\n onChange={handleChange}\n placeholder=\"Add exception\"\n required={!isEdit}\n allowEmpty={!isEdit}\n shouldReset={!isEdit}\n unique={allOperationErrorNames}\n focusOnMount={focusOnMount}\n />\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useId, useState } from \"react\";\nimport { OperationErrorForm } from \"./operation-error-form.js\";\n\ntype Props = {\n operation: ModuleSpecification[\"operations\"][number];\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n};\n\nexport function OperationErrors({\n operation,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n}: Props) {\n const addErrorFormId = useId();\n const [shouldFocusAddForm, setShouldFocusAddForm] = useState(false);\n\n const onAddOperationError = useCallback(\n async (operationId: string, error: string) => {\n const errorId = await addOperationError(operationId, error);\n if (errorId) {\n setShouldFocusAddForm(true);\n }\n return errorId;\n },\n [addOperationError, setShouldFocusAddForm],\n );\n\n const onAddOperationErrorSubmit = useCallback(\n () => setShouldFocusAddForm(false),\n [setShouldFocusAddForm],\n );\n\n return (\n <ul className=\"ml-4 list-disc\">\n {operation.errors.map((error) => (\n <li key={error.id}>\n <OperationErrorForm\n error={error}\n operation={operation}\n onAddOperationError={onAddOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n />\n </li>\n ))}\n <li>\n <OperationErrorForm\n operation={operation}\n onAddOperationError={onAddOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n key={`${addErrorFormId}-${shouldFocusAddForm}`}\n focusOnMount={shouldFocusAddForm}\n onSubmit={onAddOperationErrorSubmit}\n />\n </li>\n </ul>\n );\n}\n","import type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { lazy, Suspense, useCallback } from \"react\";\nimport type { DocumentActionHandlers } from \"../types/documents.js\";\nimport { isEmptyOperationSchema } from \"../utils/helpers.js\";\nimport { ensureValidOperationSchemaInputName } from \"../utils/linting.js\";\nimport { OperationDescriptionForm } from \"./operation-description-form.js\";\nimport { OperationErrors } from \"./operation-errors.js\";\nimport { OperationForm } from \"./operation-form.js\";\nconst GraphqlEditor = lazy(() => import(\"./code-editors/graphql-editor.js\"));\nexport type WrappedHandlers = DocumentActionHandlers & {\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n};\ntype Props = {\n lastCreatedOperationId: string | null;\n operation: ModuleSpecification[\"operations\"][number];\n module: ModuleSpecification;\n allOperationNames: string[];\n onAddOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Operation(props: Props) {\n const {\n operation,\n module,\n allOperationNames,\n lastCreatedOperationId,\n onAddOperationAndInitialSchema,\n updateOperationName,\n deleteOperation,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n } = props;\n\n const noInputRequired = isEmptyOperationSchema(operation.schema);\n\n const handleToggleNoInput = useCallback(\n (checked: boolean) => toggleNoInputRequired(operation.id, checked),\n [operation.id, toggleNoInputRequired],\n );\n\n const handleUpdateDocument = useCallback(\n (newDoc: string) => updateOperationSchema(operation.id, newDoc),\n [operation.id, updateOperationSchema],\n );\n\n const customLinter = useCallback(\n (doc: string) =>\n operation.name\n ? ensureValidOperationSchemaInputName(doc, operation.name)\n : [],\n [operation.name],\n );\n\n return (\n <div\n className=\"mt-4 grid grid-cols-2 gap-x-12\"\n style={{\n gridTemplateAreas: `\n \"left editor\"\n \"errors editor\"\n `,\n gridTemplateRows: \"auto 1fr\",\n }}\n >\n <div className=\"flex flex-col gap-2\" style={{ gridArea: \"left\" }}>\n <OperationForm\n operation={operation}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n module={module}\n allOperationNames={allOperationNames}\n />\n <OperationDescriptionForm\n operation={operation}\n focusOnMount={operation.id === lastCreatedOperationId}\n setOperationDescription={setOperationDescription}\n />\n </div>\n\n <div className=\"relative top-8\" style={{ gridArea: \"editor\" }}>\n <label className=\"mb-2 flex cursor-pointer items-center gap-2\">\n <input\n type=\"checkbox\"\n checked={noInputRequired}\n onChange={(e) => handleToggleNoInput(e.target.checked)}\n className=\"size-4 rounded-sm border-gray-300 dark:border-slate-500 dark:bg-slate-600 dark:text-slate-100\"\n />\n <span className=\"text-sm text-gray-700 dark:text-slate-200\">\n Operation with no inputs\n </span>\n </label>\n {!noInputRequired && (\n <Suspense>\n <GraphqlEditor\n doc={operation.schema ?? \"\"}\n updateDocumentInModel={handleUpdateDocument}\n customLinter={customLinter}\n />\n </Suspense>\n )}\n </div>\n\n <div style={{ gridArea: \"errors\" }}>\n <h3 className=\"my-2 text-sm font-medium text-gray-700 dark:text-slate-200\">\n Reducer Exceptions\n </h3>\n <OperationErrors\n operation={operation}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n />\n </div>\n </div>\n );\n}\n","import { OperationForm } from \"./operation-form.js\";\nimport type { ModuleSpecification } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useId, useState } from \"react\";\nimport { Operation } from \"./operation.js\";\n\ntype Props = {\n module: ModuleSpecification;\n allOperations: ModuleSpecification[\"operations\"];\n shouldFocusNewOperation: boolean;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Operations({\n module,\n allOperations,\n shouldFocusNewOperation,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n updateOperationSchema,\n setOperationDescription,\n toggleNoInputRequired,\n}: Props) {\n const [lastCreatedOperationId, setLastCreatedOperationId] = useState<\n string | null\n >(null);\n const addOperationFormId = useId();\n const allOperationNames = allOperations\n .map((o) => o.name)\n .filter((n) => n !== null);\n\n const onAddOperationAndInitialSchema = useCallback(\n async (moduleId: string, name: string) => {\n const operationId = await addOperationAndInitialSchema(moduleId, name);\n if (operationId) {\n setLastCreatedOperationId(operationId);\n }\n return operationId;\n },\n [addOperationAndInitialSchema, setLastCreatedOperationId],\n );\n\n return (\n <div>\n {module.operations.map((operation) => (\n <div key={operation.id}>\n <Operation\n operation={operation}\n module={module}\n lastCreatedOperationId={lastCreatedOperationId}\n allOperationNames={allOperationNames}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n </div>\n ))}\n <div className=\"mt-6 w-1/2 pr-6\">\n <OperationForm\n key={addOperationFormId}\n onAddOperationAndInitialSchema={onAddOperationAndInitialSchema}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n module={module}\n allOperationNames={allOperationNames}\n focusOnMount={shouldFocusNewOperation}\n />\n </div>\n </div>\n );\n}\n","import type { ModuleSpecification as TModule } from \"@powerhousedao/shared/document-model\";\nimport { ModuleForm } from \"./module-form.js\";\nimport { Operations } from \"./operations.js\";\ntype Props = {\n module?: TModule;\n modules?: TModule[];\n allOperations: TModule[\"operations\"];\n lastCreatedModuleId: string | null;\n onAddModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n deleteModule: (id: string) => void;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport function Module(props: Props) {\n const {\n module,\n modules,\n allOperations,\n lastCreatedModuleId,\n onAddModule,\n updateModuleName,\n deleteModule,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n } = props;\n return (\n <div className=\"relative rounded-3xl bg-gray-100 p-6 dark:bg-slate-700\">\n <div className=\"mb-2 w-1/2 pr-6\">\n <ModuleForm\n modules={modules}\n module={module}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n />\n {!!module && (\n <button\n aria-label=\"Delete module\"\n tabIndex={-1}\n className=\"absolute top-1 right-1 p-2 text-gray-900 transition-colors hover:text-gray-500 dark:text-slate-100 dark:hover:text-slate-400\"\n onClick={() => {\n deleteModule(module.id);\n }}\n >\n <svg className=\"size-6\" viewBox=\"0 0 24 24\" fill=\"currentcolor\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.9993 8.51506L15.4844 7L11.9994 10.4852L8.51497 7.00057L7 8.51562L10.4844 12.0003L7.00056 15.4843L8.51552 16.9994L11.9994 13.5153L15.4838 17L16.9988 15.4849L13.5144 12.0003L16.9993 8.51506Z\"\n />\n </svg>\n </button>\n )}\n </div>\n {!!module && (\n <Operations\n module={module}\n allOperations={allOperations}\n shouldFocusNewOperation={module.id === lastCreatedModuleId}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n )}\n </div>\n );\n}\n","import type { ModuleSpecification as TModule } from \"@powerhousedao/shared/document-model\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { Module } from \"./module.js\";\n\ntype Props = {\n modules: TModule[];\n allOperations: TModule[\"operations\"];\n addModule: (name: string) => Promise<string | undefined>;\n updateModuleName: (id: string, name: string) => void;\n deleteModule: (id: string) => void;\n updateOperationName: (id: string, name: string) => void;\n deleteOperation: (id: string) => void;\n addOperationAndInitialSchema: (\n moduleId: string,\n name: string,\n ) => Promise<string | undefined>;\n updateOperationSchema: (id: string, newDoc: string) => void;\n setOperationDescription: (id: string, description: string) => void;\n addOperationError: (\n operationId: string,\n errorName: string,\n ) => Promise<string | undefined>;\n deleteOperationError: (id: string) => void;\n setOperationErrorName: (\n operationId: string,\n errorId: string,\n name: string,\n ) => void;\n toggleNoInputRequired: (id: string, noInputRequired: boolean) => void;\n};\nexport default function Modules({\n modules,\n allOperations,\n addModule,\n updateModuleName,\n deleteModule,\n updateOperationName,\n deleteOperation,\n addOperationAndInitialSchema,\n updateOperationSchema,\n setOperationDescription,\n addOperationError,\n deleteOperationError,\n setOperationErrorName,\n toggleNoInputRequired,\n}: Props) {\n const [lastCreatedModuleId, setLastCreatedModuleId] = useState<string | null>(\n null,\n );\n const focusTrapRef = useRef<HTMLDivElement>(null);\n\n const onAddModule = useCallback(\n async (name: string) => {\n const moduleId = await addModule(name);\n if (moduleId) {\n setLastCreatedModuleId(moduleId);\n focusTrapRef.current?.focus();\n }\n return moduleId;\n },\n [addModule, setLastCreatedModuleId],\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n {modules.map((module) => (\n <Module\n key={module.id}\n module={module}\n modules={modules}\n allOperations={allOperations}\n lastCreatedModuleId={lastCreatedModuleId}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n deleteModule={deleteModule}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n ))}\n <Module\n key=\"add-module\"\n modules={modules}\n allOperations={allOperations}\n lastCreatedModuleId={lastCreatedModuleId}\n onAddModule={onAddModule}\n updateModuleName={updateModuleName}\n deleteModule={deleteModule}\n updateOperationName={updateOperationName}\n deleteOperation={deleteOperation}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n updateOperationSchema={updateOperationSchema}\n setOperationDescription={setOperationDescription}\n addOperationError={addOperationError}\n deleteOperationError={deleteOperationError}\n setOperationErrorName={setOperationErrorName}\n toggleNoInputRequired={toggleNoInputRequired}\n />\n {/* Focus trap to prevent tabbing out of the editor */}\n <div\n ref={focusTrapRef}\n tabIndex={0}\n className=\"size-0 overflow-hidden\"\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import type { PHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHDocumentEditorConfig = {\n isExternalControlsEnabled: false,\n};\n","import {\n useDocumentOfType,\n useSelectedDocumentOfType,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n DocumentModelAction,\n DocumentModelDocument,\n} from \"@powerhousedao/shared/document-model\";\n\nexport function useDocumentModelDocument(\n documentId: string | undefined | null,\n): ReturnType<\n typeof useDocumentOfType<DocumentModelDocument, DocumentModelAction>\n> {\n return useDocumentOfType<DocumentModelDocument, DocumentModelAction>(\n documentId,\n \"powerhouse/document-model\",\n );\n}\n\nexport function useSelectedDocumentModelDocument(): ReturnType<\n typeof useSelectedDocumentOfType<DocumentModelDocument, DocumentModelAction>\n> {\n return useSelectedDocumentOfType<DocumentModelDocument, DocumentModelAction>(\n \"powerhouse/document-model\",\n );\n}\n","import { DocumentToolbar } from \"@powerhousedao/design-system/connect\";\nimport {\n usePHToast,\n useSetPHDocumentEditorConfig,\n} from \"@powerhousedao/reactor-browser\";\nimport { pascalCase } from \"change-case\";\nimport { generateId } from \"@powerhousedao/shared/document-model\";\nimport {\n addModule,\n addOperation,\n addOperationError,\n deleteModule,\n deleteOperation,\n deleteOperationError,\n setAuthorName,\n setAuthorWebsite,\n setInitialState,\n setModelDescription,\n setModelExtension,\n setModelId,\n setModelName,\n setModuleName,\n setOperationDescription,\n setOperationErrorName,\n setOperationName,\n setOperationSchema,\n setStateSchema,\n} from \"@powerhousedao/shared/document-model\";\nimport { lazy, Suspense, useEffect, useRef, useState } from \"react\";\nimport { Divider } from \"./components/divider.js\";\nimport ModelMetadata from \"./components/model-metadata-form.js\";\nimport Modules from \"./components/modules.js\";\nimport { editorConfig } from \"./config.js\";\nimport { SchemaContextProvider } from \"./context/schema-context.js\";\nimport { useSelectedDocumentModelDocument } from \"./hooks/useDocumentModelDocument.js\";\nimport type { Scope } from \"./types/documents.js\";\nimport {\n compareStringsWithoutWhitespace,\n initializeModelSchema,\n makeEmptyOperationSchema,\n makeOperationInitialDoc,\n} from \"./utils/helpers.js\";\nconst StateSchemas = lazy(() => import(\"./components/state-schemas.js\"));\n\nexport default function Editor() {\n useSetPHDocumentEditorConfig(editorConfig);\n const toast = usePHToast();\n const [document, dispatch] = useSelectedDocumentModelDocument();\n const [scope, setScope] = useState<Scope>(\"global\");\n const documentNodeName = document.header.name;\n const {\n name: modelName,\n id: documentType,\n extension,\n description,\n author: { name: authorName, website: authorWebsite },\n } = document.state.global;\n const {\n state: {\n global: {\n schema: globalStateSchema,\n initialValue: globalStateInitialValue,\n },\n local: { schema: localStateSchema, initialValue: localStateInitialValue },\n },\n modules,\n } = document.state.global.specifications[0];\n const operations = modules.flatMap((module) => module.operations);\n const shouldSetInitialName = useRef(\n !modelName && !!documentNodeName && operations.length === 0,\n );\n\n useEffect(() => {\n if (!shouldSetInitialName.current || !documentNodeName) return;\n\n const initialSchemaDoc = initializeModelSchema(documentNodeName);\n const actions = [\n setModelName({ name: documentNodeName }),\n setStateSchema({ schema: initialSchemaDoc, scope: \"global\" }),\n ];\n dispatch(actions);\n shouldSetInitialName.current = false;\n }, [documentNodeName, dispatch]);\n\n const operationSchemasSdl = operations\n .flatMap((operation) => operation.schema ?? [])\n .join(\"\\n\");\n\n const handleSetModelId = (id: string) => {\n if (compareStringsWithoutWhitespace(id, documentType)) return;\n dispatch([setModelId({ id })]);\n };\n\n const handleSetModelDescription = (newDescription: string) => {\n if (compareStringsWithoutWhitespace(newDescription, description)) return;\n dispatch(setModelDescription({ description: newDescription }));\n };\n\n const handleSetModelExtension = (newExtension: string) => {\n if (compareStringsWithoutWhitespace(newExtension, extension)) return;\n dispatch(setModelExtension({ extension: newExtension }));\n };\n\n const handleSetModelName = (newName: string) => {\n if (compareStringsWithoutWhitespace(newName, modelName)) return;\n dispatch(setModelName({ name: newName }));\n };\n\n const handleSetAuthorName = (newAuthorName: string) => {\n if (compareStringsWithoutWhitespace(newAuthorName, authorName)) return;\n dispatch(setAuthorName({ authorName: newAuthorName }));\n };\n\n const handleSetAuthorWebsite = (newAuthorWebsite: string) => {\n if (compareStringsWithoutWhitespace(newAuthorWebsite, authorWebsite ?? \"\"))\n return;\n dispatch(setAuthorWebsite({ authorWebsite: newAuthorWebsite }));\n };\n\n const handleSetStateSchema = (newSchema: string, scope: Scope) => {\n const oldSchema = scope === \"global\" ? globalStateSchema : localStateSchema;\n if (compareStringsWithoutWhitespace(newSchema, oldSchema)) return;\n dispatch(setStateSchema({ schema: newSchema, scope }));\n };\n\n const handleSetInitialState = (newInitialValue: string, scope: Scope) => {\n const oldInitialValue =\n scope === \"global\" ? globalStateInitialValue : localStateInitialValue;\n if (compareStringsWithoutWhitespace(newInitialValue, oldInitialValue))\n return;\n dispatch(setInitialState({ initialValue: newInitialValue, scope }));\n };\n\n const handleAddModule = (name: string): Promise<string | undefined> => {\n return new Promise((resolve) => {\n try {\n if (\n modules.some((module) =>\n compareStringsWithoutWhitespace(module.name, name),\n )\n ) {\n resolve(undefined);\n return;\n }\n const id = generateId();\n dispatch(addModule({ id, name }));\n resolve(id);\n } catch (error) {\n console.error(\"Failed to add module:\", error);\n resolve(undefined);\n }\n });\n };\n\n const handleSetModuleName = (id: string, name: string) => {\n if (\n modules.some((module) =>\n compareStringsWithoutWhitespace(module.name, name),\n )\n )\n return;\n dispatch(setModuleName({ id, name }));\n };\n\n const handleDeleteModule = (id: string) => {\n dispatch(deleteModule({ id }));\n };\n\n const handleAddOperation = (\n moduleId: string,\n name: string,\n ): Promise<string | undefined> => {\n return new Promise((resolve) => {\n const id = generateId();\n dispatch(\n addOperation({ id, moduleId, name, scope }),\n (errors) => {\n if (errors.length > 0) {\n if (toast) {\n toast(errors[0].message, { type: \"connect-warning\" });\n }\n resolve(undefined);\n } else {\n resolve(id);\n }\n },\n () => resolve(id),\n );\n });\n };\n\n const handleSetOperationName = (id: string, name: string) => {\n dispatch(setOperationName({ id, name }), (errors) => {\n if (errors.length > 0 && toast) {\n toast(errors[0].message, { type: \"connect-warning\" });\n }\n });\n };\n\n const handleSetOperationSchema = (id: string, newSchema: string) => {\n const operation = operations.find((operation) => operation.id === id);\n if (\n operation?.schema &&\n compareStringsWithoutWhitespace(newSchema, operation.schema)\n )\n return;\n dispatch(setOperationSchema({ id, schema: newSchema }));\n };\n\n const handleToggleNoInputRequired = (\n id: string,\n noInputRequired: boolean,\n ) => {\n const operation = operations.find((op) => op.id === id);\n if (!operation?.name) return;\n\n if (noInputRequired) {\n dispatch(\n setOperationSchema({\n id,\n schema: makeEmptyOperationSchema(operation.name),\n }),\n );\n } else {\n dispatch(\n setOperationSchema({\n id,\n schema: makeOperationInitialDoc(operation.name),\n }),\n );\n }\n };\n\n const handleSetOperationDescription = (\n id: string,\n newDescription: string,\n ) => {\n const operationDescription =\n operations.find((operation) => operation.id === id)?.description ?? \"\";\n if (compareStringsWithoutWhitespace(operationDescription, newDescription))\n return;\n dispatch(setOperationDescription({ id, description: newDescription }));\n };\n\n const handleDeleteOperation = (id: string) => {\n dispatch(deleteOperation({ id }));\n };\n\n const handleAddOperationError = (\n operationId: string,\n errorName: string,\n ): Promise<string | undefined> => {\n return new Promise((resolve) => {\n try {\n const operation = operations.find(\n (operation) => operation.id === operationId,\n );\n const operationErrorNames =\n operation?.errors.map((error) => error.name).filter(Boolean) ?? [];\n if (\n operationErrorNames.some((name) =>\n compareStringsWithoutWhitespace(name, errorName),\n )\n ) {\n resolve(undefined);\n return;\n }\n const id = generateId();\n const errorCode = pascalCase(errorName);\n dispatch(addOperationError({ id, operationId, errorName, errorCode }));\n resolve(id);\n } catch (error) {\n console.error(\"Failed to add operation error:\", error);\n resolve(undefined);\n }\n });\n };\n\n const handleDeleteOperationError = (id: string) => {\n dispatch(deleteOperationError({ id }));\n };\n\n const handleSetOperationErrorName = (\n operationId: string,\n errorId: string,\n errorName: string,\n ) => {\n const operation = operations.find(\n (operation) => operation.id === operationId,\n );\n const operationErrorNames =\n operation?.errors.map((error) => error.name).filter(Boolean) ?? [];\n if (\n operationErrorNames.some((name) =>\n compareStringsWithoutWhitespace(name, errorName),\n )\n )\n return;\n dispatch(setOperationErrorName({ id: errorId, errorName }));\n };\n\n const addOperationAndInitialSchema = async (\n moduleId: string,\n name: string,\n ): Promise<string | undefined> => {\n try {\n const id = await handleAddOperation(moduleId, name);\n if (!id) return undefined;\n try {\n handleSetOperationSchema(id, makeOperationInitialDoc(name));\n return id;\n } catch (error) {\n console.error(\"Failed to update operation schema:\", error);\n return undefined;\n }\n } catch (error) {\n console.error(\"Failed to add operation and schema:\", error);\n return undefined;\n }\n };\n\n return (\n <main className=\"min-h-dvh bg-gray-50 p-6 dark:bg-slate-800\">\n <DocumentToolbar />\n <SchemaContextProvider\n globalStateSchemaSdl={globalStateSchema}\n localStateSchemaSdl={localStateSchema}\n operationSchemasSdl={operationSchemasSdl}\n >\n <div className=\"mx-auto max-w-6xl px-4 pt-8\">\n <ModelMetadata\n name={modelName}\n documentType={documentType}\n extension={extension}\n description={description}\n authorName={authorName}\n authorWebsite={authorWebsite ?? \"\"}\n globalStateSchema={globalStateSchema}\n localStateSchema={localStateSchema}\n setModelId={handleSetModelId}\n setModelDescription={handleSetModelDescription}\n setModelExtension={handleSetModelExtension}\n setModelName={handleSetModelName}\n setAuthorName={handleSetAuthorName}\n setAuthorWebsite={handleSetAuthorWebsite}\n setStateSchema={handleSetStateSchema}\n />\n <Divider />\n <div>\n <Suspense>\n <StateSchemas\n modelName={modelName}\n globalStateSchema={globalStateSchema}\n globalStateInitialValue={globalStateInitialValue}\n localStateSchema={localStateSchema}\n localStateInitialValue={localStateInitialValue}\n setStateSchema={handleSetStateSchema}\n setInitialState={handleSetInitialState}\n currentScope={scope}\n onScopeChange={setScope}\n />\n </Suspense>\n <Divider />\n <h3 className=\"mb-6 text-lg text-gray-900 capitalize dark:text-slate-100\">\n {scope} Operations\n </h3>\n <Modules\n modules={modules.map((module) => ({\n ...module,\n operations: module.operations.filter(\n (op) => op.scope === scope,\n ),\n }))}\n allOperations={operations}\n addModule={handleAddModule}\n updateModuleName={handleSetModuleName}\n deleteModule={handleDeleteModule}\n updateOperationName={handleSetOperationName}\n updateOperationSchema={handleSetOperationSchema}\n setOperationDescription={handleSetOperationDescription}\n deleteOperation={handleDeleteOperation}\n addOperationError={handleAddOperationError}\n deleteOperationError={handleDeleteOperationError}\n setOperationErrorName={handleSetOperationErrorName}\n addOperationAndInitialSchema={addOperationAndInitialSchema}\n toggleNoInputRequired={handleToggleNoInputRequired}\n />\n </div>\n </div>\n </SchemaContextProvider>\n </main>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,5,6,10],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import "./document-drive-oqv68jDU.js";
2
- import { t as Breadcrumbs } from "./connect-ZnLjvmRt.js";
3
- import { T as useSetPHAppConfig } from "./dist-C1nRM9t2.js";
4
- import { i as CreateDocument, n as DriveLayout, t as FolderView } from "./folder-view-DmYBf2pP.js";
1
+ import "./document-drive-sTKoi6L4.js";
2
+ import { t as Breadcrumbs } from "./connect-BMrgEG7X.js";
3
+ import { T as useSetPHAppConfig } from "./dist-B6zWOl4d.js";
4
+ import { i as CreateDocument, n as DriveLayout, t as FolderView } from "./folder-view-D9jBl4kJ.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region editors/generic-drive-explorer/config.ts
7
7
  const editorConfig = {
@@ -26,4 +26,4 @@ function Editor(props) {
26
26
  //#endregion
27
27
  export { Editor as default };
28
28
 
29
- //# sourceMappingURL=editor-DC3bigBu.js.map
29
+ //# sourceMappingURL=editor-CzsQw1pE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor-DC3bigBu.js","names":[],"sources":["../../editors/generic-drive-explorer/config.ts","../../editors/generic-drive-explorer/editor.tsx"],"sourcesContent":["import type { PHAppConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHAppConfig = {\n allowedDocumentTypes: [],\n isDragAndDropEnabled: true,\n};\n","import { Breadcrumbs } from \"@powerhousedao/design-system/connect\";\nimport { useSetPHAppConfig } from \"@powerhousedao/reactor-browser\";\nimport type { EditorProps } from \"@powerhousedao/shared/document-model\";\nimport { CreateDocument } from \"./components/create-document.js\";\nimport FolderView from \"./components/folder-view.js\";\nimport { DriveLayout } from \"./components/layout.js\";\nimport { editorConfig } from \"./config.js\";\n\nexport default function Editor(props: EditorProps) {\n useSetPHAppConfig(editorConfig);\n const { className, children } = props;\n const showDocumentEditor = !!children;\n\n return (\n <DriveLayout className={className}>\n {!showDocumentEditor && (\n <DriveLayout.Header>\n <Breadcrumbs />\n </DriveLayout.Header>\n )}\n {showDocumentEditor ? (\n children\n ) : (\n <DriveLayout.Content>\n <FolderView />\n </DriveLayout.Content>\n )}\n {!showDocumentEditor && (\n <DriveLayout.Footer>\n <CreateDocument />\n </DriveLayout.Footer>\n )}\n </DriveLayout>\n );\n}\n"],"mappings":";;;;;;AAEA,MAAa,eAA4B;CACvC,sBAAsB,EAAE;CACxB,sBAAsB;CACvB;;;ACGD,SAAwB,OAAO,OAAoB;AACjD,mBAAkB,aAAa;CAC/B,MAAM,EAAE,WAAW,aAAa;CAChC,MAAM,qBAAqB,CAAC,CAAC;AAE7B,QACE,qBAAC,aAAD;EAAwB;YAAxB;GACG,CAAC,sBACA,oBAAC,YAAY,QAAb,EAAA,UACE,oBAAC,aAAD,EAAe,CAAA,EACI,CAAA;GAEtB,qBACC,WAEA,oBAAC,YAAY,SAAb,EAAA,UACE,oBAAC,YAAD,EAAc,CAAA,EACM,CAAA;GAEvB,CAAC,sBACA,oBAAC,YAAY,QAAb,EAAA,UACE,oBAAC,gBAAD,EAAkB,CAAA,EACC,CAAA;GAEX"}
1
+ {"version":3,"file":"editor-CzsQw1pE.js","names":[],"sources":["../../editors/generic-drive-explorer/config.ts","../../editors/generic-drive-explorer/editor.tsx"],"sourcesContent":["import type { PHAppConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHAppConfig = {\n allowedDocumentTypes: [],\n isDragAndDropEnabled: true,\n};\n","import { Breadcrumbs } from \"@powerhousedao/design-system/connect\";\nimport { useSetPHAppConfig } from \"@powerhousedao/reactor-browser\";\nimport type { EditorProps } from \"@powerhousedao/shared/document-model\";\nimport { CreateDocument } from \"./components/create-document.js\";\nimport FolderView from \"./components/folder-view.js\";\nimport { DriveLayout } from \"./components/layout.js\";\nimport { editorConfig } from \"./config.js\";\n\nexport default function Editor(props: EditorProps) {\n useSetPHAppConfig(editorConfig);\n const { className, children } = props;\n const showDocumentEditor = !!children;\n\n return (\n <DriveLayout className={className}>\n {!showDocumentEditor && (\n <DriveLayout.Header>\n <Breadcrumbs />\n </DriveLayout.Header>\n )}\n {showDocumentEditor ? (\n children\n ) : (\n <DriveLayout.Content>\n <FolderView />\n </DriveLayout.Content>\n )}\n {!showDocumentEditor && (\n <DriveLayout.Footer>\n <CreateDocument />\n </DriveLayout.Footer>\n )}\n </DriveLayout>\n );\n}\n"],"mappings":";;;;;;AAEA,MAAa,eAA4B;CACvC,sBAAsB,EAAE;CACxB,sBAAsB;CACvB;;;ACGD,SAAwB,OAAO,OAAoB;AACjD,mBAAkB,aAAa;CAC/B,MAAM,EAAE,WAAW,aAAa;CAChC,MAAM,qBAAqB,CAAC,CAAC;AAE7B,QACE,qBAAC,aAAD;EAAwB;YAAxB;GACG,CAAC,sBACA,oBAAC,YAAY,QAAb,EAAA,UACE,oBAAC,aAAD,EAAe,CAAA,EACI,CAAA;GAEtB,qBACC,WAEA,oBAAC,YAAY,SAAb,EAAA,UACE,oBAAC,YAAD,EAAc,CAAA,EACM,CAAA;GAEvB,CAAC,sBACA,oBAAC,YAAY,QAAb,EAAA,UACE,oBAAC,gBAAD,EAAkB,CAAA,EACC,CAAA;GAEX"}