@powerhousedao/powerhouse-vetra-packages 6.2.3-dev.10 → 6.2.3-dev.12

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 (114) hide show
  1. package/dist/browser/assets/{entry-DvpdFGdw.js → entry-4ObkElbc.js} +2 -2
  2. package/dist/browser/assets/{projection-entry-QU4xTPM_.js → projection-entry-DRGRQCSu.js} +8 -8
  3. package/dist/browser/{button-CuO8Gh3v.js → button-sZQCXeCo.js} +131 -24
  4. package/dist/browser/button-sZQCXeCo.js.map +1 -0
  5. package/dist/browser/chunk-BVTlhY3a.js +24 -0
  6. package/dist/browser/{dist-BAJ5nRDl.js → dist-D3_ER0Dn.js} +2 -399
  7. package/dist/browser/dist-D3_ER0Dn.js.map +1 -0
  8. package/dist/browser/document-models/index.js +2 -1
  9. package/dist/browser/{documents-J_l59mSV.js → documents-C-lAnv6o.js} +604 -735
  10. package/dist/browser/documents-C-lAnv6o.js.map +1 -0
  11. package/dist/browser/editor-CQ4wUFK5.js +3679 -0
  12. package/dist/browser/editor-CQ4wUFK5.js.map +1 -0
  13. package/dist/browser/{editor-D_gIraSB.js → editor-DNV-46lY.js} +5 -5
  14. package/dist/browser/{editor-D_gIraSB.js.map → editor-DNV-46lY.js.map} +1 -1
  15. package/dist/browser/editors/document-model-editor/module.js +1 -1
  16. package/dist/browser/editors/generic-drive-explorer/index.js +13 -8
  17. package/dist/browser/editors/generic-drive-explorer/index.js.map +1 -1
  18. package/dist/browser/editors/generic-drive-explorer/module.js +1 -1
  19. package/dist/browser/folder-view-CzItU0hn.js +957 -0
  20. package/dist/browser/folder-view-CzItU0hn.js.map +1 -0
  21. package/dist/browser/{graphql-editor-C9wxFf0b.js → graphql-editor-DoXZvdNr.js} +7 -9
  22. package/dist/browser/{graphql-editor-C9wxFf0b.js.map → graphql-editor-DoXZvdNr.js.map} +1 -1
  23. package/dist/{node/hooks-D0DcS3MV.mjs → browser/hooks-Bh1JCohS.js} +2 -2
  24. package/dist/browser/{hooks-KKcNp2X0.js.map → hooks-Bh1JCohS.js.map} +1 -1
  25. package/dist/browser/index.js +120 -20
  26. package/dist/browser/index.js.map +1 -1
  27. package/dist/browser/{json-editor-BIGVi54h.js → json-editor-DBhkG5TF.js} +3 -4
  28. package/dist/browser/{json-editor-BIGVi54h.js.map → json-editor-DBhkG5TF.js.map} +1 -1
  29. package/dist/browser/{parser-CkF6Qt8V.js → parser-BBzK7bLd.js} +1 -1
  30. package/dist/browser/{parser-CkF6Qt8V.js.map → parser-BBzK7bLd.js.map} +1 -1
  31. package/dist/browser/{schema-context-ZyeclQwy.js → schema-context-p2bhyog_.js} +3 -3
  32. package/dist/browser/{schema-context-ZyeclQwy.js.map → schema-context-p2bhyog_.js.map} +1 -1
  33. package/dist/browser/src-CVV6HzQZ-D-OQvEkh.js +5151 -0
  34. package/dist/browser/src-CVV6HzQZ-D-OQvEkh.js.map +1 -0
  35. package/dist/browser/state-schemas-B47wHvDV.js +694 -0
  36. package/dist/browser/state-schemas-B47wHvDV.js.map +1 -0
  37. package/dist/browser/tslib.es6-CeIASJ2O.js +32 -0
  38. package/dist/browser/tslib.es6-CeIASJ2O.js.map +1 -0
  39. package/dist/node/{button-Da7CxMn7.mjs → button-5bnYEAVq.mjs} +130 -23
  40. package/dist/node/button-5bnYEAVq.mjs.map +1 -0
  41. package/dist/node/chunk-17FXJ3dL.mjs +31 -0
  42. package/dist/node/{dist-CzYOpeXN.mjs → dist-Bf_PIbO7.mjs} +2 -399
  43. package/dist/node/dist-Bf_PIbO7.mjs.map +1 -0
  44. package/dist/node/document-models/index.mjs +2 -1
  45. package/dist/node/documents-XAQfHX5Q.mjs +17 -0
  46. package/dist/node/documents-XAQfHX5Q.mjs.map +1 -0
  47. package/dist/node/editor-BiiLqEe9.mjs +3679 -0
  48. package/dist/node/editor-BiiLqEe9.mjs.map +1 -0
  49. package/dist/node/{editor-CJSAZpIG.mjs → editor-Cp2TC5MJ.mjs} +5 -5
  50. package/dist/node/{editor-CJSAZpIG.mjs.map → editor-Cp2TC5MJ.mjs.map} +1 -1
  51. package/dist/node/editors/document-model-editor/module.mjs +1 -1
  52. package/dist/node/editors/generic-drive-explorer/index.mjs +4 -5
  53. package/dist/node/editors/generic-drive-explorer/index.mjs.map +1 -1
  54. package/dist/node/editors/generic-drive-explorer/module.mjs +1 -1
  55. package/dist/node/folder-view-m_rH84Nz.mjs +962 -0
  56. package/dist/node/folder-view-m_rH84Nz.mjs.map +1 -0
  57. package/dist/node/{graphql-BfAoPeWM.mjs → graphql-BvV3tC1U.mjs} +2 -2
  58. package/dist/node/{graphql-BfAoPeWM.mjs.map → graphql-BvV3tC1U.mjs.map} +1 -1
  59. package/dist/node/{graphql-editor-CnK5kIk9.mjs → graphql-editor-BhF6KN6y.mjs} +6 -7
  60. package/dist/node/{graphql-editor-CnK5kIk9.mjs.map → graphql-editor-BhF6KN6y.mjs.map} +1 -1
  61. package/dist/{browser/hooks-KKcNp2X0.js → node/hooks-Di3FASx-.mjs} +2 -2
  62. package/dist/node/{hooks-D0DcS3MV.mjs.map → hooks-Di3FASx-.mjs.map} +1 -1
  63. package/dist/node/index.mjs +142 -21
  64. package/dist/node/index.mjs.map +1 -1
  65. package/dist/node/{json-editor-j8_JGfcP.mjs → json-editor-Cqc0zuz0.mjs} +3 -4
  66. package/dist/node/{json-editor-j8_JGfcP.mjs.map → json-editor-Cqc0zuz0.mjs.map} +1 -1
  67. package/dist/node/{schema-context-DL8jhi_d.mjs → schema-context-mHmP3Cl6.mjs} +3 -3
  68. package/dist/node/{schema-context-DL8jhi_d.mjs.map → schema-context-mHmP3Cl6.mjs.map} +1 -1
  69. package/dist/node/{connect-D3-HufsW.mjs → src-CVV6HzQZ-CvqjXbXk.mjs} +1829 -11022
  70. package/dist/node/src-CVV6HzQZ-CvqjXbXk.mjs.map +1 -0
  71. package/dist/node/state-schemas-DXG02fMh.mjs +695 -0
  72. package/dist/node/state-schemas-DXG02fMh.mjs.map +1 -0
  73. package/dist/node/{main-7sul-YJl.mjs → tslib.es6-DdiHgz9e.mjs} +3 -203
  74. package/dist/node/tslib.es6-DdiHgz9e.mjs.map +1 -0
  75. package/package.json +7 -7
  76. package/dist/browser/button-CuO8Gh3v.js.map +0 -1
  77. package/dist/browser/connect-kwnl2v6o.js +0 -14328
  78. package/dist/browser/connect-kwnl2v6o.js.map +0 -1
  79. package/dist/browser/dist-B4FWbuEM.js +0 -4148
  80. package/dist/browser/dist-B4FWbuEM.js.map +0 -1
  81. package/dist/browser/dist-BAJ5nRDl.js.map +0 -1
  82. package/dist/browser/dist-D0tSbK8B.js +0 -4721
  83. package/dist/browser/dist-D0tSbK8B.js.map +0 -1
  84. package/dist/browser/document-drive-fcQ4o8i3.js +0 -8320
  85. package/dist/browser/document-drive-fcQ4o8i3.js.map +0 -1
  86. package/dist/browser/documents-J_l59mSV.js.map +0 -1
  87. package/dist/browser/editor-CbJkIqg_.js +0 -1809
  88. package/dist/browser/editor-CbJkIqg_.js.map +0 -1
  89. package/dist/browser/folder-view-CGcqEbak.js +0 -232
  90. package/dist/browser/folder-view-CGcqEbak.js.map +0 -1
  91. package/dist/browser/lib-BWPfFpyy.js +0 -209
  92. package/dist/browser/lib-BWPfFpyy.js.map +0 -1
  93. package/dist/browser/printer-CEYr4JOg.js +0 -604
  94. package/dist/browser/printer-CEYr4JOg.js.map +0 -1
  95. package/dist/browser/state-schemas-C9Nb7S5z.js +0 -298
  96. package/dist/browser/state-schemas-C9Nb7S5z.js.map +0 -1
  97. package/dist/node/button-Da7CxMn7.mjs.map +0 -1
  98. package/dist/node/connect-D3-HufsW.mjs.map +0 -1
  99. package/dist/node/dist-CzYOpeXN.mjs.map +0 -1
  100. package/dist/node/dist-D5Xp9PwJ.mjs +0 -4729
  101. package/dist/node/dist-D5Xp9PwJ.mjs.map +0 -1
  102. package/dist/node/dist-DT7jI9ol.mjs +0 -4148
  103. package/dist/node/dist-DT7jI9ol.mjs.map +0 -1
  104. package/dist/node/document-drive-DuGBBYw5.mjs +0 -8337
  105. package/dist/node/document-drive-DuGBBYw5.mjs.map +0 -1
  106. package/dist/node/documents-DCf53bzO.mjs +0 -747
  107. package/dist/node/documents-DCf53bzO.mjs.map +0 -1
  108. package/dist/node/editor-D8SL0ydm.mjs +0 -1809
  109. package/dist/node/editor-D8SL0ydm.mjs.map +0 -1
  110. package/dist/node/folder-view-ChtWc33j.mjs +0 -232
  111. package/dist/node/folder-view-ChtWc33j.mjs.map +0 -1
  112. package/dist/node/main-7sul-YJl.mjs.map +0 -1
  113. package/dist/node/state-schemas-DURvYjxG.mjs +0 -299
  114. package/dist/node/state-schemas-DURvYjxG.mjs.map +0 -1
@@ -1,299 +0,0 @@
1
- import { t as require_graphql } from "./graphql-BfAoPeWM.mjs";
2
- import { i as Trigger, n as List, r as Root2, t as Content, w as twMerge } from "./dist-CzYOpeXN.mjs";
3
- import { r as typeDefsDoc } from "./documents-DCf53bzO.mjs";
4
- import { d as makeMinimalObjectForStateType, h as validateStateObject, i as StateValidationError, p as makeStateSchemaNameForScope, r as ensureValidStateSchemaName, t as Button, u as makeInitialSchemaDoc } from "./button-Da7CxMn7.mjs";
5
- import { n as safeParseSdl, r as useSchemaContext } from "./schema-context-DL8jhi_d.mjs";
6
- import * as React$1 from "react";
7
- import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
- //#region editors/document-model-editor/components/state-error.tsx
10
- var import_graphql = require_graphql();
11
- function StateValidationErrorMessage({ error }) {
12
- const { payload } = error;
13
- switch (payload.kind) {
14
- case "MISSING": return /* @__PURE__ */ jsxs("span", { children: [
15
- "Field ",
16
- /* @__PURE__ */ jsx("strong", { children: payload.field }),
17
- " is missing."
18
- ] });
19
- case "MISSING_OPTIONAL": return /* @__PURE__ */ jsxs("span", { children: [
20
- "Optional field ",
21
- /* @__PURE__ */ jsx("strong", { children: payload.field }),
22
- " is not defined."
23
- ] });
24
- case "UNKNOWN_FIELD": return /* @__PURE__ */ jsxs("span", { children: [
25
- "Field ",
26
- /* @__PURE__ */ jsx("strong", { children: payload.field }),
27
- " is not a known field."
28
- ] });
29
- case "NON_NULL": return /* @__PURE__ */ jsxs("span", { children: [
30
- "Field ",
31
- /* @__PURE__ */ jsx("strong", { children: payload.field }),
32
- " cannot be null."
33
- ] });
34
- case "TYPE": return /* @__PURE__ */ jsxs("span", { children: [
35
- "Field ",
36
- /* @__PURE__ */ jsx("strong", { children: payload.field }),
37
- payload.expectedType ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
38
- " ",
39
- "must be a",
40
- " ",
41
- /* @__PURE__ */ jsx("strong", { children: payload.expectedType.replace(/!/g, "") }),
42
- "."
43
- ] }) : /* @__PURE__ */ jsx(Fragment$1, { children: " has an invalid value." })
44
- ] });
45
- case "RECURSIVE_TYPE": return /* @__PURE__ */ jsxs("span", { children: [
46
- "Field ",
47
- /* @__PURE__ */ jsx("strong", { children: payload.typeName }),
48
- " has a recursive type. It must be optional."
49
- ] });
50
- default: return /* @__PURE__ */ jsx("span", { children: "Invalid value." });
51
- }
52
- }
53
- //#endregion
54
- //#region editors/document-model-editor/components/tabs.tsx
55
- const Tabs = Root2;
56
- const TabsList = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(List, {
57
- ref,
58
- className: twMerge("flex items-center justify-center rounded-xl bg-background p-1 shadow-inner", className),
59
- ...props
60
- }));
61
- TabsList.displayName = List.displayName;
62
- const TabsTrigger = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Trigger, {
63
- ref,
64
- className: twMerge("flex w-full items-center justify-center rounded-lg p-1 text-sm whitespace-nowrap text-muted-foreground transition-all disabled:disabled-effect data-[state=active]:bg-accent data-[state=active]:text-foreground data-[state=active]:shadow-tab", className),
65
- ...props
66
- }));
67
- TabsTrigger.displayName = Trigger.displayName;
68
- const TabsContent = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Content, {
69
- ref,
70
- className,
71
- ...props
72
- }));
73
- TabsContent.displayName = Content.displayName;
74
- //#endregion
75
- //#region editors/document-model-editor/components/state-schemas.tsx
76
- const GraphqlEditor = lazy(() => import("./graphql-editor-CnK5kIk9.mjs"));
77
- const JSONEditor = lazy(() => import("./json-editor-j8_JGfcP.mjs"));
78
- function StateEditor({ modelName, stateSchema, initialValue, setStateSchema, setInitialState, scope }) {
79
- const { sharedSchema: sharedSchemaSdl, error: sharedSchemaError } = useSchemaContext();
80
- const [showStandardLib, setShowStandardLib] = useState(false);
81
- const [syncWithSchema, setSyncWithSchema] = useState(true);
82
- const customLinter = useCallback((doc) => ensureValidStateSchemaName(doc, modelName, scope), [modelName, scope]);
83
- const schemaErrors = useMemo(() => {
84
- const errors = ensureValidStateSchemaName(stateSchema, modelName, scope);
85
- if (sharedSchemaError) return [...errors, sharedSchemaError];
86
- return errors;
87
- }, [
88
- stateSchema,
89
- modelName,
90
- scope,
91
- sharedSchemaError
92
- ]);
93
- const handleToggleStandardLib = useCallback(() => {
94
- setShowStandardLib((prev) => !prev);
95
- }, []);
96
- const handleSchemaUpdate = useCallback((newDoc) => setStateSchema(newDoc, scope), [setStateSchema, scope]);
97
- const handleInitialStateUpdate = useCallback((newDoc) => setInitialState(newDoc, scope), [setInitialState, scope]);
98
- const hasSyncedRef = useRef(false);
99
- const { initialValueErrors, fixedState } = useMemo(() => {
100
- const existingValue = initialValue || "{}";
101
- const sharedSchemaDocumentNode = safeParseSdl(sharedSchemaSdl);
102
- if (!sharedSchemaDocumentNode) return {
103
- initialValueErrors: [],
104
- fixedState: null
105
- };
106
- const stateTypeName = makeStateSchemaNameForScope(modelName, scope);
107
- if (!stateTypeName) return {
108
- initialValueErrors: [],
109
- fixedState: null
110
- };
111
- const stateTypeDefinitionNode = sharedSchemaDocumentNode.definitions.find((def) => def.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION && def.name.value === stateTypeName);
112
- if (!stateTypeDefinitionNode || stateTypeDefinitionNode.kind !== import_graphql.Kind.OBJECT_TYPE_DEFINITION) return {
113
- initialValueErrors: [],
114
- fixedState: null
115
- };
116
- const errors = validateStateObject(sharedSchemaDocumentNode, stateTypeDefinitionNode, existingValue);
117
- if (errors.length && syncWithSchema) {
118
- const computedFixedState = makeMinimalObjectForStateType({
119
- sharedSchemaDocumentNode,
120
- stateTypeDefinitionNode,
121
- existingValue
122
- });
123
- if (initialValue !== computedFixedState) return {
124
- initialValueErrors: [],
125
- fixedState: computedFixedState
126
- };
127
- }
128
- return {
129
- initialValueErrors: errors,
130
- fixedState: null
131
- };
132
- }, [
133
- sharedSchemaSdl,
134
- initialValue,
135
- syncWithSchema,
136
- scope,
137
- modelName
138
- ]);
139
- useEffect(() => {
140
- if (fixedState && !hasSyncedRef.current) {
141
- hasSyncedRef.current = true;
142
- setInitialState(fixedState, scope);
143
- } else if (!fixedState) hasSyncedRef.current = false;
144
- }, [
145
- fixedState,
146
- setInitialState,
147
- scope
148
- ]);
149
- return /* @__PURE__ */ jsxs("div", {
150
- className: "grid grid-cols-2 gap-4",
151
- children: [/* @__PURE__ */ jsxs("div", { children: [
152
- /* @__PURE__ */ jsxs("h3", {
153
- className: "mb-2 text-lg text-foreground capitalize",
154
- children: [scope, " state schema *"]
155
- }),
156
- /* @__PURE__ */ jsxs(Button, {
157
- onClick: handleToggleStandardLib,
158
- className: "mb-2 flex w-fit items-center gap-2",
159
- children: [
160
- showStandardLib ? "Hide" : "Show",
161
- " standard library",
162
- /* @__PURE__ */ jsx("svg", {
163
- className: twMerge("inline-block transition-transform", showStandardLib ? "rotate-180" : "rotate-0"),
164
- xmlns: "http://www.w3.org/2000/svg",
165
- width: "24",
166
- height: "24",
167
- viewBox: "0 0 24 24",
168
- fill: "currentColor",
169
- children: /* @__PURE__ */ jsx("path", {
170
- d: "M11.9883 6.01172C11.4363 6.01172 10.9883 6.45972 10.9883 7.01172V13.0117H6.98828L11.9883 18.0117L16.9883 13.0117H12.9883V7.01172C12.9883 6.45972 12.5403 6.01172 11.9883 6.01172Z",
171
- fill: "currentColor"
172
- })
173
- })
174
- ]
175
- }),
176
- /* @__PURE__ */ jsxs(Suspense, { children: [
177
- showStandardLib && /* @__PURE__ */ jsx(GraphqlEditor, {
178
- doc: typeDefsDoc,
179
- readonly: true
180
- }),
181
- /* @__PURE__ */ jsx(GraphqlEditor, {
182
- doc: stateSchema,
183
- updateDocumentInModel: handleSchemaUpdate,
184
- customLinter
185
- }),
186
- schemaErrors.length > 0 && /* @__PURE__ */ jsx("p", {
187
- className: "mt-2 text-sm text-destructive",
188
- children: schemaErrors[0].message
189
- })
190
- ] })
191
- ] }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
192
- className: "flex flex-col items-end",
193
- children: [/* @__PURE__ */ jsxs("h3", {
194
- className: "mb-2 text-right text-lg text-foreground capitalize",
195
- children: [scope, " state initial value *"]
196
- }), /* @__PURE__ */ jsxs("label", {
197
- className: "mb-2 flex w-fit items-center gap-2 rounded-md border border-border bg-background p-2 text-sm font-medium whitespace-nowrap text-foreground transition-colors hover:hover-effect focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",
198
- children: [
199
- /* @__PURE__ */ jsx("input", {
200
- type: "checkbox",
201
- className: "",
202
- value: syncWithSchema.toString(),
203
- onChange: (e) => {
204
- setSyncWithSchema(e.currentTarget.value === "true" ? true : false);
205
- }
206
- }),
207
- "Sync with schema",
208
- " ",
209
- /* @__PURE__ */ jsx("svg", {
210
- className: "inline-block",
211
- xmlns: "http://www.w3.org/2000/svg",
212
- width: "16",
213
- height: "16",
214
- viewBox: "0 0 16 16",
215
- fill: "none",
216
- children: /* @__PURE__ */ jsx("path", {
217
- d: "M8.00521 1.99219C6.63588 1.99219 5.32788 2.45152 4.27588 3.28419C3.98721 3.51219 3.94321 3.93285 4.17188 4.22151C4.40054 4.51018 4.82055 4.55418 5.10921 4.32552C5.92721 3.67819 6.93921 3.32552 8.00521 3.32552C10.5825 3.32552 12.6719 5.41485 12.6719 7.99218H11.3385L13.3385 10.6588L15.3385 7.99218H14.0052C14.0052 4.67818 11.3192 1.99219 8.00521 1.99219ZM2.67188 5.32552L0.671875 7.99218H2.00521C2.00521 11.3062 4.69121 13.9922 8.00521 13.9922C9.37521 13.9922 10.6825 13.5335 11.7345 12.7002C12.0232 12.4722 12.0672 12.0515 11.8385 11.7628C11.6099 11.4742 11.1899 11.4302 10.9012 11.6588C10.0825 12.3068 9.07188 12.6588 8.00521 12.6588C5.42788 12.6588 3.33854 10.5695 3.33854 7.99218H4.67188L2.67188 5.32552Z",
218
- fill: "currentColor"
219
- })
220
- })
221
- ]
222
- })]
223
- }), /* @__PURE__ */ jsxs(Suspense, { children: [/* @__PURE__ */ jsx(JSONEditor, {
224
- doc: initialValue,
225
- updateDocumentInModel: handleInitialStateUpdate
226
- }), initialValueErrors.map((error, index) => /* @__PURE__ */ jsx("p", {
227
- className: "mt-2 text-sm text-destructive",
228
- children: error instanceof StateValidationError ? /* @__PURE__ */ jsx(StateValidationErrorMessage, { error }) : error.message
229
- }, index))] })] })]
230
- });
231
- }
232
- function StateSchemas({ modelName, globalStateSchema, localStateSchema, globalStateInitialValue, localStateInitialValue, setStateSchema, setInitialState, currentScope, onScopeChange }) {
233
- const handleAddLocalState = useCallback(() => {
234
- setStateSchema(makeInitialSchemaDoc(modelName, "local"), "local");
235
- setInitialState("", "local");
236
- }, [
237
- modelName,
238
- setStateSchema,
239
- setInitialState
240
- ]);
241
- return /* @__PURE__ */ jsxs(Tabs, {
242
- className: "pb-8",
243
- activationMode: "manual",
244
- value: currentScope,
245
- onValueChange: (value) => onScopeChange(value),
246
- children: [
247
- /* @__PURE__ */ jsx("div", {
248
- className: "my-6",
249
- children: /* @__PURE__ */ jsxs(TabsList, {
250
- className: "mx-auto flex max-w-sm",
251
- children: [/* @__PURE__ */ jsx(TabsTrigger, {
252
- value: "global",
253
- children: "Global"
254
- }), /* @__PURE__ */ jsx(TabsTrigger, {
255
- value: "local",
256
- children: "Local"
257
- })]
258
- })
259
- }),
260
- /* @__PURE__ */ jsx(TabsContent, {
261
- value: "global",
262
- tabIndex: -1,
263
- children: /* @__PURE__ */ jsx(StateEditor, {
264
- modelName,
265
- stateSchema: globalStateSchema,
266
- initialValue: globalStateInitialValue,
267
- setStateSchema,
268
- setInitialState,
269
- scope: "global"
270
- })
271
- }),
272
- /* @__PURE__ */ jsx(TabsContent, {
273
- value: "local",
274
- tabIndex: -1,
275
- children: !localStateSchema ? /* @__PURE__ */ jsxs("div", {
276
- className: "",
277
- children: [/* @__PURE__ */ jsx("h3", {
278
- className: "mb-2 text-lg text-foreground capitalize",
279
- children: "local state schema *"
280
- }), /* @__PURE__ */ jsx(Button, {
281
- onClick: handleAddLocalState,
282
- children: "Add local state"
283
- })]
284
- }) : /* @__PURE__ */ jsx(StateEditor, {
285
- modelName,
286
- stateSchema: localStateSchema,
287
- initialValue: localStateInitialValue,
288
- setStateSchema,
289
- setInitialState,
290
- scope: "local"
291
- })
292
- })
293
- ]
294
- });
295
- }
296
- //#endregion
297
- export { StateSchemas as default };
298
-
299
- //# sourceMappingURL=state-schemas-DURvYjxG.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-schemas-DURvYjxG.mjs","names":["TabsPrimitive.Root","React","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content","Kind"],"sources":["../../editors/document-model-editor/components/state-error.tsx","../../editors/document-model-editor/components/tabs.tsx","../../editors/document-model-editor/components/state-schemas.tsx"],"sourcesContent":["import type { StateValidationError } from \"../utils/helpers.js\";\n\nexport function StateValidationErrorMessage({\n error,\n}: {\n error: StateValidationError;\n}) {\n const { payload } = error;\n\n switch (payload.kind) {\n case \"MISSING\":\n return (\n <span>\n Field <strong>{payload.field}</strong> is missing.\n </span>\n );\n\n case \"MISSING_OPTIONAL\":\n return (\n <span>\n Optional field <strong>{payload.field}</strong> is not defined.\n </span>\n );\n\n case \"UNKNOWN_FIELD\":\n return (\n <span>\n Field <strong>{payload.field}</strong> is not a known field.\n </span>\n );\n\n case \"NON_NULL\":\n return (\n <span>\n Field <strong>{payload.field}</strong> cannot be null.\n </span>\n );\n\n case \"TYPE\":\n return (\n <span>\n Field <strong>{payload.field}</strong>\n {payload.expectedType ? (\n <>\n {\" \"}\n must be a{\" \"}\n <strong>{payload.expectedType.replace(/!/g, \"\")}</strong>.\n </>\n ) : (\n <> has an invalid value.</>\n )}\n </span>\n );\n\n case \"RECURSIVE_TYPE\":\n return (\n <span>\n Field <strong>{payload.typeName}</strong> has a recursive type. It\n must be optional.\n </span>\n );\n\n default:\n return <span>Invalid value.</span>;\n }\n}\n","import * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport * as React from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={twMerge(\n \"flex items-center justify-center rounded-xl bg-background p-1 shadow-inner\",\n className,\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={twMerge(\n \"flex w-full items-center justify-center rounded-lg p-1 text-sm whitespace-nowrap text-muted-foreground transition-all disabled:disabled-effect data-[state=active]:bg-accent data-[state=active]:text-foreground data-[state=active]:shadow-tab\",\n className,\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content ref={ref} className={className} {...props} />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger };\n","import { twMerge } from \"tailwind-merge\";\nimport { Checkbox } from \"@powerhousedao/design-system/ui\";\nimport { Kind } from \"graphql\";\nimport {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { typeDefsDoc } from \"../constants/documents.js\";\nimport { safeParseSdl, useSchemaContext } from \"../context/schema-context.js\";\nimport type { Scope } from \"../types/documents.js\";\nimport {\n makeInitialSchemaDoc,\n makeMinimalObjectForStateType,\n makeStateSchemaNameForScope,\n StateValidationError,\n validateStateObject,\n} from \"../utils/helpers.js\";\nimport { ensureValidStateSchemaName } from \"../utils/linting.js\";\nimport { Button } from \"./button.js\";\nimport { StateValidationErrorMessage } from \"./state-error.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"./tabs.js\";\nconst GraphqlEditor = lazy(() => import(\"./code-editors/graphql-editor.js\"));\nconst JSONEditor = lazy(() => import(\"./code-editors/json-editor.js\"));\ntype Props = {\n modelName: string;\n globalStateSchema: string;\n localStateSchema: string;\n globalStateInitialValue: string;\n localStateInitialValue: string;\n setStateSchema: (doc: string, scope: Scope) => void;\n setInitialState: (doc: string, scope: Scope) => void;\n currentScope: Scope;\n onScopeChange: (scope: Scope) => void;\n};\n\ntype StateEditorProps = {\n modelName: string;\n stateSchema: string;\n initialValue: string;\n setStateSchema: (doc: string, scope: Scope) => void;\n setInitialState: (doc: string, scope: Scope) => void;\n scope: Scope;\n};\n\nfunction StateEditor({\n modelName,\n stateSchema,\n initialValue,\n setStateSchema,\n setInitialState,\n scope,\n}: StateEditorProps) {\n const { sharedSchema: sharedSchemaSdl, error: sharedSchemaError } =\n useSchemaContext();\n const [showStandardLib, setShowStandardLib] = useState(false);\n const [syncWithSchema, setSyncWithSchema] = useState(true);\n\n const customLinter = useCallback(\n (doc: string) => ensureValidStateSchemaName(doc, modelName, scope),\n [modelName, scope],\n );\n\n const schemaErrors = useMemo(() => {\n const errors = ensureValidStateSchemaName(stateSchema, modelName, scope);\n if (sharedSchemaError) {\n return [...errors, sharedSchemaError];\n }\n return errors;\n }, [stateSchema, modelName, scope, sharedSchemaError]);\n\n const handleToggleStandardLib = useCallback(() => {\n setShowStandardLib((prev) => !prev);\n }, []);\n\n const handleSchemaUpdate = useCallback(\n (newDoc: string) => setStateSchema(newDoc, scope),\n [setStateSchema, scope],\n );\n\n const handleInitialStateUpdate = useCallback(\n (newDoc: string) => setInitialState(newDoc, scope),\n [setInitialState, scope],\n );\n\n // Track if we've already synced to prevent double-calls in StrictMode\n const hasSyncedRef = useRef(false);\n\n const { initialValueErrors, fixedState } = useMemo(() => {\n const existingValue = initialValue || \"{}\";\n const sharedSchemaDocumentNode = safeParseSdl(sharedSchemaSdl);\n if (!sharedSchemaDocumentNode)\n return { initialValueErrors: [], fixedState: null };\n const stateTypeName = makeStateSchemaNameForScope(modelName, scope);\n if (!stateTypeName) return { initialValueErrors: [], fixedState: null };\n const stateTypeDefinitionNode = sharedSchemaDocumentNode.definitions.find(\n (def) =>\n def.kind === Kind.OBJECT_TYPE_DEFINITION &&\n def.name.value === stateTypeName,\n );\n if (\n !stateTypeDefinitionNode ||\n stateTypeDefinitionNode.kind !== Kind.OBJECT_TYPE_DEFINITION\n )\n return { initialValueErrors: [], fixedState: null };\n\n const errors = validateStateObject(\n sharedSchemaDocumentNode,\n stateTypeDefinitionNode,\n existingValue,\n );\n\n if (errors.length && syncWithSchema) {\n const computedFixedState = makeMinimalObjectForStateType({\n sharedSchemaDocumentNode,\n stateTypeDefinitionNode,\n existingValue,\n });\n if (initialValue !== computedFixedState) {\n return { initialValueErrors: [], fixedState: computedFixedState };\n }\n }\n return { initialValueErrors: errors, fixedState: null };\n }, [sharedSchemaSdl, initialValue, syncWithSchema, scope, modelName]);\n\n // Handle the side effect of syncing initial state separately\n useEffect(() => {\n if (fixedState && !hasSyncedRef.current) {\n hasSyncedRef.current = true;\n setInitialState(fixedState, scope);\n } else if (!fixedState) {\n // Reset the ref when there's no fix needed\n hasSyncedRef.current = false;\n }\n }, [fixedState, setInitialState, scope]);\n\n return (\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <h3 className=\"mb-2 text-lg text-foreground capitalize\">\n {scope} state schema *\n </h3>\n <Button\n onClick={handleToggleStandardLib}\n className=\"mb-2 flex w-fit items-center gap-2\"\n >\n {showStandardLib ? \"Hide\" : \"Show\"} standard library\n <svg\n className={twMerge(\n \"inline-block transition-transform\",\n showStandardLib ? \"rotate-180\" : \"rotate-0\",\n )}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path\n d=\"M11.9883 6.01172C11.4363 6.01172 10.9883 6.45972 10.9883 7.01172V13.0117H6.98828L11.9883 18.0117L16.9883 13.0117H12.9883V7.01172C12.9883 6.45972 12.5403 6.01172 11.9883 6.01172Z\"\n fill=\"currentColor\"\n />\n </svg>\n </Button>\n <Suspense>\n {showStandardLib && <GraphqlEditor doc={typeDefsDoc} readonly />}\n <GraphqlEditor\n doc={stateSchema}\n updateDocumentInModel={handleSchemaUpdate}\n customLinter={customLinter}\n />\n {schemaErrors.length > 0 && (\n <p className=\"mt-2 text-sm text-destructive\">\n {schemaErrors[0].message}\n </p>\n )}\n </Suspense>\n </div>\n <div>\n <div className=\"flex flex-col items-end\">\n <h3 className=\"mb-2 text-right text-lg text-foreground capitalize\">\n {scope} state initial value *\n </h3>\n <label className=\"mb-2 flex w-fit items-center gap-2 rounded-md border border-border bg-background p-2 text-sm font-medium whitespace-nowrap text-foreground transition-colors hover:hover-effect focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none\">\n <input\n type=\"checkbox\"\n className=\"\"\n value={syncWithSchema.toString()}\n onChange={(e) => {\n setSyncWithSchema(\n e.currentTarget.value === \"true\" ? true : false,\n );\n }}\n />\n Sync with schema{\" \"}\n <svg\n className=\"inline-block\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M8.00521 1.99219C6.63588 1.99219 5.32788 2.45152 4.27588 3.28419C3.98721 3.51219 3.94321 3.93285 4.17188 4.22151C4.40054 4.51018 4.82055 4.55418 5.10921 4.32552C5.92721 3.67819 6.93921 3.32552 8.00521 3.32552C10.5825 3.32552 12.6719 5.41485 12.6719 7.99218H11.3385L13.3385 10.6588L15.3385 7.99218H14.0052C14.0052 4.67818 11.3192 1.99219 8.00521 1.99219ZM2.67188 5.32552L0.671875 7.99218H2.00521C2.00521 11.3062 4.69121 13.9922 8.00521 13.9922C9.37521 13.9922 10.6825 13.5335 11.7345 12.7002C12.0232 12.4722 12.0672 12.0515 11.8385 11.7628C11.6099 11.4742 11.1899 11.4302 10.9012 11.6588C10.0825 12.3068 9.07188 12.6588 8.00521 12.6588C5.42788 12.6588 3.33854 10.5695 3.33854 7.99218H4.67188L2.67188 5.32552Z\"\n fill=\"currentColor\"\n />\n </svg>\n </label>\n </div>\n <Suspense>\n <JSONEditor\n doc={initialValue}\n updateDocumentInModel={handleInitialStateUpdate}\n />\n {initialValueErrors.map((error, index) => (\n <p key={index} className=\"mt-2 text-sm text-destructive\">\n {error instanceof StateValidationError ? (\n <StateValidationErrorMessage error={error} />\n ) : (\n error.message\n )}\n </p>\n ))}\n </Suspense>\n </div>\n </div>\n );\n}\n\nexport default function StateSchemas({\n modelName,\n globalStateSchema,\n localStateSchema,\n globalStateInitialValue,\n localStateInitialValue,\n setStateSchema,\n setInitialState,\n currentScope,\n onScopeChange,\n}: Props) {\n const handleAddLocalState = useCallback(() => {\n const initialDoc = makeInitialSchemaDoc(modelName, \"local\");\n setStateSchema(initialDoc, \"local\");\n setInitialState(\"\", \"local\");\n }, [modelName, setStateSchema, setInitialState]);\n\n return (\n <Tabs\n className=\"pb-8\"\n activationMode=\"manual\"\n value={currentScope}\n onValueChange={(value) => onScopeChange(value as Scope)}\n >\n <div className=\"my-6\">\n <TabsList className=\"mx-auto flex max-w-sm\">\n <TabsTrigger value=\"global\">Global</TabsTrigger>\n <TabsTrigger value=\"local\">Local</TabsTrigger>\n </TabsList>\n </div>\n\n <TabsContent value=\"global\" tabIndex={-1}>\n <StateEditor\n modelName={modelName}\n stateSchema={globalStateSchema}\n initialValue={globalStateInitialValue}\n setStateSchema={setStateSchema}\n setInitialState={setInitialState}\n scope=\"global\"\n />\n </TabsContent>\n\n <TabsContent value=\"local\" tabIndex={-1}>\n {!localStateSchema ? (\n <div className=\"\">\n <h3 className=\"mb-2 text-lg text-foreground capitalize\">\n local state schema *\n </h3>\n <Button onClick={handleAddLocalState}>Add local state</Button>\n </div>\n ) : (\n <StateEditor\n modelName={modelName}\n stateSchema={localStateSchema}\n initialValue={localStateInitialValue}\n setStateSchema={setStateSchema}\n setInitialState={setInitialState}\n scope=\"local\"\n />\n )}\n </TabsContent>\n </Tabs>\n );\n}\n"],"mappings":"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"}