@powerhousedao/powerhouse-vetra-packages 6.2.0-dev.4 → 6.2.0-dev.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/assets/{entry-Bzani6_n.js → entry-BHcFjTEd.js} +2 -2
- package/dist/browser/assets/{projection-entry-Bpu-8SnI.js → projection-entry-Cs-5j8OX.js} +4 -4
- package/dist/browser/{connect-DPNyOTBV.js → connect-CmgZSI0Z.js} +45 -45
- package/dist/browser/connect-CmgZSI0Z.js.map +1 -0
- package/dist/browser/{dist-Bha1Om6O.js → dist-D1NFJMzm.js} +100 -49
- package/dist/browser/dist-D1NFJMzm.js.map +1 -0
- package/dist/browser/{document-drive-CDaY4aIj.js → document-drive-sTKoi6L4.js} +310 -3
- package/dist/browser/document-drive-sTKoi6L4.js.map +1 -0
- package/dist/browser/document-models/index.js +1 -1
- package/dist/browser/{editor-CJFM1rC9.js → editor-Bs5C6sAt.js} +21 -21
- package/dist/browser/editor-Bs5C6sAt.js.map +1 -0
- package/dist/browser/{editor-BtOSWTjb.js → editor-BsVLT-lJ.js} +5 -5
- package/dist/browser/{editor-BtOSWTjb.js.map → editor-BsVLT-lJ.js.map} +1 -1
- package/dist/browser/editors/document-model-editor/module.js +1 -1
- package/dist/browser/editors/generic-drive-explorer/index.js +5 -5
- package/dist/browser/editors/generic-drive-explorer/index.js.map +1 -1
- package/dist/browser/editors/generic-drive-explorer/module.js +1 -1
- package/dist/browser/{folder-view-DAhpWssS.js → folder-view-LYhTe15T.js} +7 -7
- package/dist/browser/folder-view-LYhTe15T.js.map +1 -0
- package/dist/browser/{graphql-editor-Dwgpm08w.js → graphql-editor-b61MnkEP.js} +3 -3
- package/dist/browser/{graphql-editor-Dwgpm08w.js.map → graphql-editor-b61MnkEP.js.map} +1 -1
- package/dist/browser/index.js +334 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/{json-editor-SKLjwlux.js → json-editor-DO_EwDmY.js} +3 -3
- package/dist/browser/{json-editor-SKLjwlux.js.map → json-editor-DO_EwDmY.js.map} +1 -1
- package/dist/browser/lib-DtwK2kyR.js +200 -0
- package/dist/browser/lib-DtwK2kyR.js.map +1 -0
- package/dist/browser/{state-schemas-S69fnpVk.js → state-schemas-Cx-QbW5a.js} +12 -12
- package/dist/browser/state-schemas-Cx-QbW5a.js.map +1 -0
- package/dist/node/{connect-5a3Nx0Jd.mjs → connect-CwDdrOag.mjs} +45 -45
- package/dist/node/connect-CwDdrOag.mjs.map +1 -0
- package/dist/node/{dist-QOGgRb-y.mjs → dist-RdOXBdt-.mjs} +100 -49
- package/dist/node/dist-RdOXBdt-.mjs.map +1 -0
- package/dist/node/{document-drive-BK2-EDni.mjs → document-drive-DjL9iikf.mjs} +310 -3
- package/dist/node/document-drive-DjL9iikf.mjs.map +1 -0
- package/dist/node/document-models/index.mjs +1 -1
- package/dist/node/{editor-BNOTRmUU.mjs → editor-CTJUSbjg.mjs} +21 -21
- package/dist/node/editor-CTJUSbjg.mjs.map +1 -0
- package/dist/node/{editor-C_Gchmop.mjs → editor-DLr8Eb3u.mjs} +5 -5
- package/dist/node/{editor-C_Gchmop.mjs.map → editor-DLr8Eb3u.mjs.map} +1 -1
- package/dist/node/editors/document-model-editor/module.mjs +1 -1
- package/dist/node/editors/generic-drive-explorer/index.mjs +5 -5
- package/dist/node/editors/generic-drive-explorer/index.mjs.map +1 -1
- package/dist/node/editors/generic-drive-explorer/module.mjs +1 -1
- package/dist/node/{folder-view-af4hVjjx.mjs → folder-view-CfvJLoKi.mjs} +7 -7
- package/dist/node/folder-view-CfvJLoKi.mjs.map +1 -0
- package/dist/node/{graphql-editor-BoTCyC9n.mjs → graphql-editor-C-0f2bX3.mjs} +3 -3
- package/dist/node/{graphql-editor-BoTCyC9n.mjs.map → graphql-editor-C-0f2bX3.mjs.map} +1 -1
- package/dist/node/index.mjs +335 -2
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/{json-editor-Bk4_b03g.mjs → json-editor-DJtigEsH.mjs} +3 -3
- package/dist/node/{json-editor-Bk4_b03g.mjs.map → json-editor-DJtigEsH.mjs.map} +1 -1
- package/dist/node/{dist-C7ZmTHz4.mjs → main-DbTMJyA_.mjs} +45 -340
- package/dist/node/main-DbTMJyA_.mjs.map +1 -0
- package/dist/node/{state-schemas-DMw1UvT8.mjs → state-schemas-Bv5h5MqY.mjs} +12 -12
- package/dist/node/state-schemas-Bv5h5MqY.mjs.map +1 -0
- package/package.json +6 -6
- package/dist/browser/connect-DPNyOTBV.js.map +0 -1
- package/dist/browser/dist-Bha1Om6O.js.map +0 -1
- package/dist/browser/dist-DnQpckQ8.js +0 -494
- package/dist/browser/dist-DnQpckQ8.js.map +0 -1
- package/dist/browser/document-drive-CDaY4aIj.js.map +0 -1
- package/dist/browser/editor-CJFM1rC9.js.map +0 -1
- package/dist/browser/folder-view-DAhpWssS.js.map +0 -1
- package/dist/browser/state-schemas-S69fnpVk.js.map +0 -1
- package/dist/node/connect-5a3Nx0Jd.mjs.map +0 -1
- package/dist/node/dist-C7ZmTHz4.mjs.map +0 -1
- package/dist/node/dist-QOGgRb-y.mjs.map +0 -1
- package/dist/node/document-drive-BK2-EDni.mjs.map +0 -1
- package/dist/node/editor-BNOTRmUU.mjs.map +0 -1
- package/dist/node/folder-view-af4hVjjx.mjs.map +0 -1
- package/dist/node/state-schemas-DMw1UvT8.mjs.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { r as driveDocumentModelModule, u as documentModelDocumentModelModule } from "../document-drive-
|
|
1
|
+
import { r as driveDocumentModelModule, u as documentModelDocumentModelModule } from "../document-drive-DjL9iikf.mjs";
|
|
2
2
|
export { documentModelDocumentModelModule, driveDocumentModelModule };
|
|
@@ -1,8 +1,8 @@
|
|
|
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-fA4EItr0.mjs";
|
|
2
|
-
import {
|
|
3
|
-
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-
|
|
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-DjL9iikf.mjs";
|
|
3
|
+
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-CwDdrOag.mjs";
|
|
4
4
|
import { C as twMerge, y as composeRefs } from "./dist-BeZaEP6S.mjs";
|
|
5
|
-
import { E as useSetPHDocumentEditorConfig, b as useSelectedDocumentOfType, y as usePHToast } from "./dist-
|
|
5
|
+
import { E as useSetPHDocumentEditorConfig, b as useSelectedDocumentOfType, y as usePHToast } from "./dist-RdOXBdt-.mjs";
|
|
6
6
|
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-Dx50GuLN.mjs";
|
|
7
7
|
import { t as SchemaContextProvider } from "./schema-context-CX5ml_9t.mjs";
|
|
8
8
|
import * as React$1 from "react";
|
|
@@ -206,7 +206,7 @@ function Divider({ className, size = "sm", margin = "md" }) {
|
|
|
206
206
|
if (margin === "md") return "my-6";
|
|
207
207
|
return "my-8";
|
|
208
208
|
}
|
|
209
|
-
return /* @__PURE__ */ jsx("div", { className: twMerge("bg-
|
|
209
|
+
return /* @__PURE__ */ jsx("div", { className: twMerge("bg-secondary", getSize(), getMargin(), className) });
|
|
210
210
|
}
|
|
211
211
|
//#endregion
|
|
212
212
|
//#region ../../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
|
|
@@ -426,7 +426,7 @@ Label$1.displayName = NAME;
|
|
|
426
426
|
var Root = Label$1;
|
|
427
427
|
//#endregion
|
|
428
428
|
//#region editors/document-model-editor/components/label.tsx
|
|
429
|
-
const labelVariants = cva("text-sm leading-none font-medium peer-disabled:
|
|
429
|
+
const labelVariants = cva("text-sm leading-none font-medium peer-disabled:disabled-effect");
|
|
430
430
|
const Label = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Root, {
|
|
431
431
|
ref,
|
|
432
432
|
className: twMerge(labelVariants(), className),
|
|
@@ -458,7 +458,7 @@ const FormLabel = React$1.forwardRef(({ className, ...props }, ref) => {
|
|
|
458
458
|
const { error, formItemId } = useFormField();
|
|
459
459
|
return /* @__PURE__ */ jsx(Label, {
|
|
460
460
|
ref,
|
|
461
|
-
className: twMerge(error && "text-
|
|
461
|
+
className: twMerge(error && "text-destructive", className),
|
|
462
462
|
htmlFor: formItemId,
|
|
463
463
|
...props
|
|
464
464
|
});
|
|
@@ -480,7 +480,7 @@ const FormDescription = React$1.forwardRef(({ className, ...props }, ref) => {
|
|
|
480
480
|
return /* @__PURE__ */ jsx("p", {
|
|
481
481
|
ref,
|
|
482
482
|
id: formDescriptionId,
|
|
483
|
-
className: twMerge("text-sm text-
|
|
483
|
+
className: twMerge("text-sm text-foreground", className),
|
|
484
484
|
...props
|
|
485
485
|
});
|
|
486
486
|
});
|
|
@@ -492,7 +492,7 @@ const FormMessage = React$1.forwardRef(({ className, children, ...props }, ref)
|
|
|
492
492
|
return /* @__PURE__ */ jsx("p", {
|
|
493
493
|
ref,
|
|
494
494
|
id: formMessageId,
|
|
495
|
-
className: twMerge("text-sm font-medium text-
|
|
495
|
+
className: twMerge("text-sm font-medium text-destructive", className),
|
|
496
496
|
...props,
|
|
497
497
|
children: body
|
|
498
498
|
});
|
|
@@ -519,7 +519,7 @@ const Textarea = forwardRef(({ className, ...props }, ref) => {
|
|
|
519
519
|
}));
|
|
520
520
|
return /* @__PURE__ */ jsx("textarea", {
|
|
521
521
|
...props,
|
|
522
|
-
className: twMerge("min-h-10 w-full resize-none rounded-md border border-
|
|
522
|
+
className: twMerge("min-h-10 w-full resize-none rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none disabled:disabled-effect", className),
|
|
523
523
|
ref: textareaRef,
|
|
524
524
|
onInput: handleInput
|
|
525
525
|
});
|
|
@@ -597,7 +597,7 @@ const TextField = forwardRef(({ name, value, onSubmit, label, placeholder, uniqu
|
|
|
597
597
|
children: [
|
|
598
598
|
!!label && /* @__PURE__ */ jsx(FormLabel, {
|
|
599
599
|
htmlFor: name,
|
|
600
|
-
className: "text-sm font-medium text-
|
|
600
|
+
className: "text-sm font-medium text-foreground",
|
|
601
601
|
children: label
|
|
602
602
|
}),
|
|
603
603
|
/* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(Textarea, {
|
|
@@ -689,7 +689,7 @@ function ModelNameForm(props) {
|
|
|
689
689
|
setModelName
|
|
690
690
|
]),
|
|
691
691
|
placeholder: "Model name",
|
|
692
|
-
className: "border-none pl-0 text-xl font-bold text-
|
|
692
|
+
className: "border-none pl-0 text-xl font-bold text-foreground",
|
|
693
693
|
required: true,
|
|
694
694
|
focusOnMount: true
|
|
695
695
|
});
|
|
@@ -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-
|
|
891
|
+
const GraphqlEditor = lazy(() => import("./graphql-editor-C-0f2bX3.mjs"));
|
|
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);
|
|
@@ -930,9 +930,9 @@ function Operation(props) {
|
|
|
930
930
|
type: "checkbox",
|
|
931
931
|
checked: noInputRequired,
|
|
932
932
|
onChange: (e) => handleToggleNoInput(e.target.checked),
|
|
933
|
-
className: "size-4 rounded-sm border-
|
|
933
|
+
className: "size-4 rounded-sm border-border"
|
|
934
934
|
}), /* @__PURE__ */ jsx("span", {
|
|
935
|
-
className: "text-sm text-
|
|
935
|
+
className: "text-sm text-foreground",
|
|
936
936
|
children: "Operation with no inputs"
|
|
937
937
|
})]
|
|
938
938
|
}), !noInputRequired && /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(GraphqlEditor, {
|
|
@@ -944,7 +944,7 @@ function Operation(props) {
|
|
|
944
944
|
/* @__PURE__ */ jsxs("div", {
|
|
945
945
|
style: { gridArea: "errors" },
|
|
946
946
|
children: [/* @__PURE__ */ jsx("h3", {
|
|
947
|
-
className: "my-2 text-sm font-medium text-
|
|
947
|
+
className: "my-2 text-sm font-medium text-foreground",
|
|
948
948
|
children: "Reducer Exceptions"
|
|
949
949
|
}), /* @__PURE__ */ jsx(OperationErrors, {
|
|
950
950
|
operation,
|
|
@@ -998,7 +998,7 @@ function Operations({ module, allOperations, shouldFocusNewOperation, updateOper
|
|
|
998
998
|
function Module(props) {
|
|
999
999
|
const { module, modules, allOperations, lastCreatedModuleId, onAddModule, updateModuleName, deleteModule, updateOperationName, deleteOperation, addOperationAndInitialSchema, updateOperationSchema, setOperationDescription, addOperationError, deleteOperationError, setOperationErrorName, toggleNoInputRequired } = props;
|
|
1000
1000
|
return /* @__PURE__ */ jsxs("div", {
|
|
1001
|
-
className: "relative rounded-3xl bg-
|
|
1001
|
+
className: "relative rounded-3xl bg-muted p-6",
|
|
1002
1002
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1003
1003
|
className: "mb-2 w-1/2 pr-6",
|
|
1004
1004
|
children: [/* @__PURE__ */ jsx(ModuleForm, {
|
|
@@ -1009,7 +1009,7 @@ function Module(props) {
|
|
|
1009
1009
|
}), !!module && /* @__PURE__ */ jsx("button", {
|
|
1010
1010
|
"aria-label": "Delete module",
|
|
1011
1011
|
tabIndex: -1,
|
|
1012
|
-
className: "absolute top-1 right-1 p-2 text-
|
|
1012
|
+
className: "absolute top-1 right-1 p-2 text-foreground transition-colors hover:hover-effect",
|
|
1013
1013
|
onClick: () => {
|
|
1014
1014
|
deleteModule(module.id);
|
|
1015
1015
|
},
|
|
@@ -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-
|
|
1113
|
+
const StateSchemas = lazy(() => import("./state-schemas-Bv5h5MqY.mjs"));
|
|
1114
1114
|
function Editor() {
|
|
1115
1115
|
useSetPHDocumentEditorConfig(editorConfig);
|
|
1116
1116
|
const toast = usePHToast();
|
|
@@ -1300,7 +1300,7 @@ function Editor() {
|
|
|
1300
1300
|
}
|
|
1301
1301
|
};
|
|
1302
1302
|
return /* @__PURE__ */ jsxs("main", {
|
|
1303
|
-
className: "min-h-dvh bg-
|
|
1303
|
+
className: "min-h-dvh bg-background p-6",
|
|
1304
1304
|
children: [/* @__PURE__ */ jsx(DocumentToolbar, {}), /* @__PURE__ */ jsx(SchemaContextProvider, {
|
|
1305
1305
|
globalStateSchemaSdl: globalStateSchema,
|
|
1306
1306
|
localStateSchemaSdl: localStateSchema,
|
|
@@ -1340,7 +1340,7 @@ function Editor() {
|
|
|
1340
1340
|
}) }),
|
|
1341
1341
|
/* @__PURE__ */ jsx(Divider, {}),
|
|
1342
1342
|
/* @__PURE__ */ jsxs("h3", {
|
|
1343
|
-
className: "mb-6 text-lg text-
|
|
1343
|
+
className: "mb-6 text-lg text-foreground capitalize",
|
|
1344
1344
|
children: [scope, " Operations"]
|
|
1345
1345
|
}),
|
|
1346
1346
|
/* @__PURE__ */ jsx(Modules, {
|
|
@@ -1371,4 +1371,4 @@ function Editor() {
|
|
|
1371
1371
|
//#endregion
|
|
1372
1372
|
export { Editor as default };
|
|
1373
1373
|
|
|
1374
|
-
//# sourceMappingURL=editor-
|
|
1374
|
+
//# sourceMappingURL=editor-CTJUSbjg.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-CTJUSbjg.mjs","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(\"bg-secondary\", sizeClass, marginClass, className)}\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:disabled-effect\",\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-destructive\", 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(\"text-sm text-foreground\", className)}\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(\"text-sm font-medium text-destructive\", className)}\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, useCallback, useImperativeHandle, useRef } 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-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none disabled:disabled-effect\",\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-foreground\"\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-foreground\"\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-border\"\n />\n <span className=\"text-sm text-foreground\">\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-foreground\">\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-muted p-6\">\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-foreground transition-colors hover:hover-effect\"\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-background p-6\">\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-foreground capitalize\">\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-
|
|
2
|
-
import { t as Breadcrumbs } from "./connect-
|
|
3
|
-
import { T as useSetPHAppConfig } from "./dist-
|
|
4
|
-
import { i as CreateDocument, n as DriveLayout, t as FolderView } from "./folder-view-
|
|
1
|
+
import "./document-drive-DjL9iikf.mjs";
|
|
2
|
+
import { t as Breadcrumbs } from "./connect-CwDdrOag.mjs";
|
|
3
|
+
import { T as useSetPHAppConfig } from "./dist-RdOXBdt-.mjs";
|
|
4
|
+
import { i as CreateDocument, n as DriveLayout, t as FolderView } from "./folder-view-CfvJLoKi.mjs";
|
|
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-
|
|
29
|
+
//# sourceMappingURL=editor-DLr8Eb3u.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-
|
|
1
|
+
{"version":3,"file":"editor-DLr8Eb3u.mjs","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"}
|
|
@@ -6,7 +6,7 @@ const DocumentModelEditor = {
|
|
|
6
6
|
name: "Document Model Editor"
|
|
7
7
|
},
|
|
8
8
|
documentTypes: ["powerhouse/document-model"],
|
|
9
|
-
Component: lazy(() => import("../../editor-
|
|
9
|
+
Component: lazy(() => import("../../editor-CTJUSbjg.mjs"))
|
|
10
10
|
};
|
|
11
11
|
//#endregion
|
|
12
12
|
export { DocumentModelEditor };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { E as __commonJSMin, k as __require } from "../../dist-fA4EItr0.mjs";
|
|
2
|
-
import "../../document-drive-
|
|
2
|
+
import "../../document-drive-DjL9iikf.mjs";
|
|
3
3
|
import { GenericDriveExplorer } from "./module.mjs";
|
|
4
|
-
import { g as Icon, n as ConnectSearchBar } from "../../connect-
|
|
5
|
-
import "../../dist-
|
|
6
|
-
import { i as CreateDocument, n as DriveLayout, r as FileContentView, t as FolderView } from "../../folder-view-
|
|
4
|
+
import { g as Icon, n as ConnectSearchBar } from "../../connect-CwDdrOag.mjs";
|
|
5
|
+
import "../../dist-RdOXBdt-.mjs";
|
|
6
|
+
import { i as CreateDocument, n as DriveLayout, r as FileContentView, t as FolderView } from "../../folder-view-CfvJLoKi.mjs";
|
|
7
7
|
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
9
9
|
//#region ../../node_modules/.pnpm/react-i18next@16.5.4_i18next@25.8.13_typescript@5.9.3__react-dom@19.2.6_react@19.2.6__react@19.2.6_typescript@5.9.3/node_modules/react-i18next/dist/es/utils.js
|
|
@@ -442,7 +442,7 @@ const SearchBar = () => {
|
|
|
442
442
|
const { t } = useTranslation();
|
|
443
443
|
const [value, setValue] = useState("");
|
|
444
444
|
return /* @__PURE__ */ jsx(ConnectSearchBar, {
|
|
445
|
-
className: "m-4 shrink-0 bg-
|
|
445
|
+
className: "m-4 shrink-0 bg-muted",
|
|
446
446
|
placeholder: t("searchbar.placeholder"),
|
|
447
447
|
filterLabel: t("searchbar.filterLabel"),
|
|
448
448
|
filterItems: defaultFilterItems,
|