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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/browser/assets/{entry-5_Eh4a2Z.js → entry-4ObkElbc.js} +2 -2
  2. package/dist/browser/assets/{projection-entry-5PVbP10h.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-CRPLlQ3x.js +28 -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-BO_s5gTQ.js +3679 -0
  12. package/dist/browser/editor-BO_s5gTQ.js.map +1 -0
  13. package/dist/browser/{editor-DZP1WlYy.js → editor-DNV-46lY.js} +5 -5
  14. package/dist/browser/{editor-DZP1WlYy.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 +4 -5
  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-Cbkb5KRZ.js → graphql-editor-BMhHl2XP.js} +7 -9
  22. package/dist/browser/{graphql-editor-Cbkb5KRZ.js.map → graphql-editor-BMhHl2XP.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-CN6kPtl1.js → json-editor-DBhkG5TF.js} +3 -4
  28. package/dist/browser/{json-editor-CN6kPtl1.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-DuA5rB1e.js +694 -0
  36. package/dist/browser/state-schemas-DuA5rB1e.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-Dg2OZEJu.mjs → editor-Cp2TC5MJ.mjs} +5 -5
  50. package/dist/node/{editor-Dg2OZEJu.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-DNxebuTn.mjs → graphql-editor-BhF6KN6y.mjs} +6 -7
  60. package/dist/node/{graphql-editor-DNxebuTn.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-BpnEn9AS.mjs → json-editor-Cqc0zuz0.mjs} +3 -4
  66. package/dist/node/{json-editor-BpnEn9AS.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-CeLh6yfj.mjs → src-CVV6HzQZ-CvqjXbXk.mjs} +1829 -11016
  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-B1tRsYOp.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-BqgnsniX.js +0 -14322
  78. package/dist/browser/connect-BqgnsniX.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-C-xkNfyD.js +0 -4641
  83. package/dist/browser/dist-C-xkNfyD.js.map +0 -1
  84. package/dist/browser/document-drive-ZQzPQfEL.js +0 -8237
  85. package/dist/browser/document-drive-ZQzPQfEL.js.map +0 -1
  86. package/dist/browser/documents-J_l59mSV.js.map +0 -1
  87. package/dist/browser/editor-BNgF9-uX.js +0 -1809
  88. package/dist/browser/editor-BNgF9-uX.js.map +0 -1
  89. package/dist/browser/folder-view-tx0A96ZI.js +0 -232
  90. package/dist/browser/folder-view-tx0A96ZI.js.map +0 -1
  91. package/dist/browser/lib-ewnRj2dJ.js +0 -209
  92. package/dist/browser/lib-ewnRj2dJ.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-CKh98ehP.js +0 -298
  96. package/dist/browser/state-schemas-CKh98ehP.js.map +0 -1
  97. package/dist/node/button-Da7CxMn7.mjs.map +0 -1
  98. package/dist/node/connect-CeLh6yfj.mjs.map +0 -1
  99. package/dist/node/dist-CUFTZwfc.mjs +0 -4649
  100. package/dist/node/dist-CUFTZwfc.mjs.map +0 -1
  101. package/dist/node/dist-CzYOpeXN.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-D1NMjQQc.mjs +0 -8254
  105. package/dist/node/document-drive-D1NMjQQc.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-CXQOsbup.mjs +0 -1809
  109. package/dist/node/editor-CXQOsbup.mjs.map +0 -1
  110. package/dist/node/folder-view-DZ0o2-Ef.mjs +0 -232
  111. package/dist/node/folder-view-DZ0o2-Ef.mjs.map +0 -1
  112. package/dist/node/main-B1tRsYOp.mjs.map +0 -1
  113. package/dist/node/state-schemas-CuSHxrn6.mjs +0 -299
  114. package/dist/node/state-schemas-CuSHxrn6.mjs.map +0 -1
@@ -0,0 +1,695 @@
1
+ import { t as require_graphql } from "./graphql-BvV3tC1U.mjs";
2
+ import { f as useComposedRefs, h as twMerge, i as Primitive, n as useId$1, o as createSlot, p as composeEventHandlers, r as useCallbackRef, s as useControllableState, t as Presence, u as createContextScope } from "./dist-Bf_PIbO7.mjs";
3
+ import { r as typeDefsDoc } from "./documents-XAQfHX5Q.mjs";
4
+ import { n as safeParseSdl, r as useSchemaContext } from "./schema-context-mHmP3Cl6.mjs";
5
+ import { d as makeMinimalObjectForStateType, h as validateStateObject, i as StateValidationError, p as makeStateSchemaNameForScope, r as ensureValidStateSchemaName, t as Button, u as makeInitialSchemaDoc } from "./button-5bnYEAVq.mjs";
6
+ import * as React$1 from "react";
7
+ import React, { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ //#region ../../node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.2.3_@types+react@19.2.14__@types+r_b94f5365b88697a700662930c56ccffc/node_modules/@radix-ui/react-collection/dist/index.mjs
10
+ var import_graphql = require_graphql();
11
+ function createCollection(name) {
12
+ const PROVIDER_NAME = name + "CollectionProvider";
13
+ const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);
14
+ const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
15
+ collectionRef: { current: null },
16
+ itemMap: /* @__PURE__ */ new Map()
17
+ });
18
+ const CollectionProvider = (props) => {
19
+ const { scope, children } = props;
20
+ const ref = React.useRef(null);
21
+ const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;
22
+ return /* @__PURE__ */ jsx(CollectionProviderImpl, {
23
+ scope,
24
+ itemMap,
25
+ collectionRef: ref,
26
+ children
27
+ });
28
+ };
29
+ CollectionProvider.displayName = PROVIDER_NAME;
30
+ const COLLECTION_SLOT_NAME = name + "CollectionSlot";
31
+ const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);
32
+ const CollectionSlot = React.forwardRef((props, forwardedRef) => {
33
+ const { scope, children } = props;
34
+ return /* @__PURE__ */ jsx(CollectionSlotImpl, {
35
+ ref: useComposedRefs(forwardedRef, useCollectionContext(COLLECTION_SLOT_NAME, scope).collectionRef),
36
+ children
37
+ });
38
+ });
39
+ CollectionSlot.displayName = COLLECTION_SLOT_NAME;
40
+ const ITEM_SLOT_NAME = name + "CollectionItemSlot";
41
+ const ITEM_DATA_ATTR = "data-radix-collection-item";
42
+ const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);
43
+ const CollectionItemSlot = React.forwardRef((props, forwardedRef) => {
44
+ const { scope, children, ...itemData } = props;
45
+ const ref = React.useRef(null);
46
+ const composedRefs = useComposedRefs(forwardedRef, ref);
47
+ const context = useCollectionContext(ITEM_SLOT_NAME, scope);
48
+ React.useEffect(() => {
49
+ context.itemMap.set(ref, {
50
+ ref,
51
+ ...itemData
52
+ });
53
+ return () => void context.itemMap.delete(ref);
54
+ });
55
+ return /* @__PURE__ */ jsx(CollectionItemSlotImpl, {
56
+ [ITEM_DATA_ATTR]: "",
57
+ ref: composedRefs,
58
+ children
59
+ });
60
+ });
61
+ CollectionItemSlot.displayName = ITEM_SLOT_NAME;
62
+ function useCollection(scope) {
63
+ const context = useCollectionContext(name + "CollectionConsumer", scope);
64
+ return React.useCallback(() => {
65
+ const collectionNode = context.collectionRef.current;
66
+ if (!collectionNode) return [];
67
+ const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));
68
+ return Array.from(context.itemMap.values()).sort((a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current));
69
+ }, [context.collectionRef, context.itemMap]);
70
+ }
71
+ return [
72
+ {
73
+ Provider: CollectionProvider,
74
+ Slot: CollectionSlot,
75
+ ItemSlot: CollectionItemSlot
76
+ },
77
+ useCollection,
78
+ createCollectionScope
79
+ ];
80
+ }
81
+ //#endregion
82
+ //#region ../../node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.2.14_react@19.2.6/node_modules/@radix-ui/react-direction/dist/index.mjs
83
+ var DirectionContext = React$1.createContext(void 0);
84
+ function useDirection(localDir) {
85
+ const globalDir = React$1.useContext(DirectionContext);
86
+ return localDir || globalDir || "ltr";
87
+ }
88
+ //#endregion
89
+ //#region ../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.2.3_@types+react@19.2.14__@type_b849ea542e77d5b397b1fe12d9f00b2e/node_modules/@radix-ui/react-roving-focus/dist/index.mjs
90
+ var ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus";
91
+ var EVENT_OPTIONS = {
92
+ bubbles: false,
93
+ cancelable: true
94
+ };
95
+ var GROUP_NAME = "RovingFocusGroup";
96
+ var [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);
97
+ var [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(GROUP_NAME, [createCollectionScope]);
98
+ var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);
99
+ var RovingFocusGroup = React$1.forwardRef((props, forwardedRef) => {
100
+ return /* @__PURE__ */ jsx(Collection.Provider, {
101
+ scope: props.__scopeRovingFocusGroup,
102
+ children: /* @__PURE__ */ jsx(Collection.Slot, {
103
+ scope: props.__scopeRovingFocusGroup,
104
+ children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, {
105
+ ...props,
106
+ ref: forwardedRef
107
+ })
108
+ })
109
+ });
110
+ });
111
+ RovingFocusGroup.displayName = GROUP_NAME;
112
+ var RovingFocusGroupImpl = React$1.forwardRef((props, forwardedRef) => {
113
+ const { __scopeRovingFocusGroup, orientation, loop = false, dir, currentTabStopId: currentTabStopIdProp, defaultCurrentTabStopId, onCurrentTabStopIdChange, onEntryFocus, preventScrollOnEntryFocus = false, ...groupProps } = props;
114
+ const ref = React$1.useRef(null);
115
+ const composedRefs = useComposedRefs(forwardedRef, ref);
116
+ const direction = useDirection(dir);
117
+ const [currentTabStopId, setCurrentTabStopId] = useControllableState({
118
+ prop: currentTabStopIdProp,
119
+ defaultProp: defaultCurrentTabStopId ?? null,
120
+ onChange: onCurrentTabStopIdChange,
121
+ caller: GROUP_NAME
122
+ });
123
+ const [isTabbingBackOut, setIsTabbingBackOut] = React$1.useState(false);
124
+ const handleEntryFocus = useCallbackRef(onEntryFocus);
125
+ const getItems = useCollection(__scopeRovingFocusGroup);
126
+ const isClickFocusRef = React$1.useRef(false);
127
+ const [focusableItemsCount, setFocusableItemsCount] = React$1.useState(0);
128
+ React$1.useEffect(() => {
129
+ const node = ref.current;
130
+ if (node) {
131
+ node.addEventListener(ENTRY_FOCUS, handleEntryFocus);
132
+ return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
133
+ }
134
+ }, [handleEntryFocus]);
135
+ return /* @__PURE__ */ jsx(RovingFocusProvider, {
136
+ scope: __scopeRovingFocusGroup,
137
+ orientation,
138
+ dir: direction,
139
+ loop,
140
+ currentTabStopId,
141
+ onItemFocus: React$1.useCallback((tabStopId) => setCurrentTabStopId(tabStopId), [setCurrentTabStopId]),
142
+ onItemShiftTab: React$1.useCallback(() => setIsTabbingBackOut(true), []),
143
+ onFocusableItemAdd: React$1.useCallback(() => setFocusableItemsCount((prevCount) => prevCount + 1), []),
144
+ onFocusableItemRemove: React$1.useCallback(() => setFocusableItemsCount((prevCount) => prevCount - 1), []),
145
+ children: /* @__PURE__ */ jsx(Primitive.div, {
146
+ tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
147
+ "data-orientation": orientation,
148
+ ...groupProps,
149
+ ref: composedRefs,
150
+ style: {
151
+ outline: "none",
152
+ ...props.style
153
+ },
154
+ onMouseDown: composeEventHandlers(props.onMouseDown, () => {
155
+ isClickFocusRef.current = true;
156
+ }),
157
+ onFocus: composeEventHandlers(props.onFocus, (event) => {
158
+ const isKeyboardFocus = !isClickFocusRef.current;
159
+ if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {
160
+ const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
161
+ event.currentTarget.dispatchEvent(entryFocusEvent);
162
+ if (!entryFocusEvent.defaultPrevented) {
163
+ const items = getItems().filter((item) => item.focusable);
164
+ focusFirst([
165
+ items.find((item) => item.active),
166
+ items.find((item) => item.id === currentTabStopId),
167
+ ...items
168
+ ].filter(Boolean).map((item) => item.ref.current), preventScrollOnEntryFocus);
169
+ }
170
+ }
171
+ isClickFocusRef.current = false;
172
+ }),
173
+ onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))
174
+ })
175
+ });
176
+ });
177
+ var ITEM_NAME = "RovingFocusGroupItem";
178
+ var RovingFocusGroupItem = React$1.forwardRef((props, forwardedRef) => {
179
+ const { __scopeRovingFocusGroup, focusable = true, active = false, tabStopId, children, ...itemProps } = props;
180
+ const autoId = useId$1();
181
+ const id = tabStopId || autoId;
182
+ const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);
183
+ const isCurrentTabStop = context.currentTabStopId === id;
184
+ const getItems = useCollection(__scopeRovingFocusGroup);
185
+ const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;
186
+ React$1.useEffect(() => {
187
+ if (focusable) {
188
+ onFocusableItemAdd();
189
+ return () => onFocusableItemRemove();
190
+ }
191
+ }, [
192
+ focusable,
193
+ onFocusableItemAdd,
194
+ onFocusableItemRemove
195
+ ]);
196
+ return /* @__PURE__ */ jsx(Collection.ItemSlot, {
197
+ scope: __scopeRovingFocusGroup,
198
+ id,
199
+ focusable,
200
+ active,
201
+ children: /* @__PURE__ */ jsx(Primitive.span, {
202
+ tabIndex: isCurrentTabStop ? 0 : -1,
203
+ "data-orientation": context.orientation,
204
+ ...itemProps,
205
+ ref: forwardedRef,
206
+ onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
207
+ if (!focusable) event.preventDefault();
208
+ else context.onItemFocus(id);
209
+ }),
210
+ onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),
211
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
212
+ if (event.key === "Tab" && event.shiftKey) {
213
+ context.onItemShiftTab();
214
+ return;
215
+ }
216
+ if (event.target !== event.currentTarget) return;
217
+ const focusIntent = getFocusIntent(event, context.orientation, context.dir);
218
+ if (focusIntent !== void 0) {
219
+ if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;
220
+ event.preventDefault();
221
+ let candidateNodes = getItems().filter((item) => item.focusable).map((item) => item.ref.current);
222
+ if (focusIntent === "last") candidateNodes.reverse();
223
+ else if (focusIntent === "prev" || focusIntent === "next") {
224
+ if (focusIntent === "prev") candidateNodes.reverse();
225
+ const currentIndex = candidateNodes.indexOf(event.currentTarget);
226
+ candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);
227
+ }
228
+ setTimeout(() => focusFirst(candidateNodes));
229
+ }
230
+ }),
231
+ children: typeof children === "function" ? children({
232
+ isCurrentTabStop,
233
+ hasTabStop: currentTabStopId != null
234
+ }) : children
235
+ })
236
+ });
237
+ });
238
+ RovingFocusGroupItem.displayName = ITEM_NAME;
239
+ var MAP_KEY_TO_FOCUS_INTENT = {
240
+ ArrowLeft: "prev",
241
+ ArrowUp: "prev",
242
+ ArrowRight: "next",
243
+ ArrowDown: "next",
244
+ PageUp: "first",
245
+ Home: "first",
246
+ PageDown: "last",
247
+ End: "last"
248
+ };
249
+ function getDirectionAwareKey(key, dir) {
250
+ if (dir !== "rtl") return key;
251
+ return key === "ArrowLeft" ? "ArrowRight" : key === "ArrowRight" ? "ArrowLeft" : key;
252
+ }
253
+ function getFocusIntent(event, orientation, dir) {
254
+ const key = getDirectionAwareKey(event.key, dir);
255
+ if (orientation === "vertical" && ["ArrowLeft", "ArrowRight"].includes(key)) return void 0;
256
+ if (orientation === "horizontal" && ["ArrowUp", "ArrowDown"].includes(key)) return void 0;
257
+ return MAP_KEY_TO_FOCUS_INTENT[key];
258
+ }
259
+ function focusFirst(candidates, preventScroll = false) {
260
+ const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
261
+ for (const candidate of candidates) {
262
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
263
+ candidate.focus({ preventScroll });
264
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
265
+ }
266
+ }
267
+ function wrapArray(array, startIndex) {
268
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
269
+ }
270
+ var Root = RovingFocusGroup;
271
+ var Item = RovingFocusGroupItem;
272
+ //#endregion
273
+ //#region editors/document-model-editor/components/state-error.tsx
274
+ function StateValidationErrorMessage({ error }) {
275
+ const { payload } = error;
276
+ switch (payload.kind) {
277
+ case "MISSING": return /* @__PURE__ */ jsxs("span", { children: [
278
+ "Field ",
279
+ /* @__PURE__ */ jsx("strong", { children: payload.field }),
280
+ " is missing."
281
+ ] });
282
+ case "MISSING_OPTIONAL": return /* @__PURE__ */ jsxs("span", { children: [
283
+ "Optional field ",
284
+ /* @__PURE__ */ jsx("strong", { children: payload.field }),
285
+ " is not defined."
286
+ ] });
287
+ case "UNKNOWN_FIELD": return /* @__PURE__ */ jsxs("span", { children: [
288
+ "Field ",
289
+ /* @__PURE__ */ jsx("strong", { children: payload.field }),
290
+ " is not a known field."
291
+ ] });
292
+ case "NON_NULL": return /* @__PURE__ */ jsxs("span", { children: [
293
+ "Field ",
294
+ /* @__PURE__ */ jsx("strong", { children: payload.field }),
295
+ " cannot be null."
296
+ ] });
297
+ case "TYPE": return /* @__PURE__ */ jsxs("span", { children: [
298
+ "Field ",
299
+ /* @__PURE__ */ jsx("strong", { children: payload.field }),
300
+ payload.expectedType ? /* @__PURE__ */ jsxs(Fragment, { children: [
301
+ " ",
302
+ "must be a",
303
+ " ",
304
+ /* @__PURE__ */ jsx("strong", { children: payload.expectedType.replace(/!/g, "") }),
305
+ "."
306
+ ] }) : /* @__PURE__ */ jsx(Fragment, { children: " has an invalid value." })
307
+ ] });
308
+ case "RECURSIVE_TYPE": return /* @__PURE__ */ jsxs("span", { children: [
309
+ "Field ",
310
+ /* @__PURE__ */ jsx("strong", { children: payload.typeName }),
311
+ " has a recursive type. It must be optional."
312
+ ] });
313
+ default: return /* @__PURE__ */ jsx("span", { children: "Invalid value." });
314
+ }
315
+ }
316
+ //#endregion
317
+ //#region ../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.2.3_@types+react@19.2.14__@types+react@_08684373bbac196273bdefb5472f93a8/node_modules/@radix-ui/react-tabs/dist/index.mjs
318
+ var TABS_NAME = "Tabs";
319
+ var [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [createRovingFocusGroupScope]);
320
+ var useRovingFocusGroupScope = createRovingFocusGroupScope();
321
+ var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);
322
+ var Tabs$1 = React$1.forwardRef((props, forwardedRef) => {
323
+ const { __scopeTabs, value: valueProp, onValueChange, defaultValue, orientation = "horizontal", dir, activationMode = "automatic", ...tabsProps } = props;
324
+ const direction = useDirection(dir);
325
+ const [value, setValue] = useControllableState({
326
+ prop: valueProp,
327
+ onChange: onValueChange,
328
+ defaultProp: defaultValue ?? "",
329
+ caller: TABS_NAME
330
+ });
331
+ return /* @__PURE__ */ jsx(TabsProvider, {
332
+ scope: __scopeTabs,
333
+ baseId: useId$1(),
334
+ value,
335
+ onValueChange: setValue,
336
+ orientation,
337
+ dir: direction,
338
+ activationMode,
339
+ children: /* @__PURE__ */ jsx(Primitive.div, {
340
+ dir: direction,
341
+ "data-orientation": orientation,
342
+ ...tabsProps,
343
+ ref: forwardedRef
344
+ })
345
+ });
346
+ });
347
+ Tabs$1.displayName = TABS_NAME;
348
+ var TAB_LIST_NAME = "TabsList";
349
+ var TabsList$1 = React$1.forwardRef((props, forwardedRef) => {
350
+ const { __scopeTabs, loop = true, ...listProps } = props;
351
+ const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
352
+ return /* @__PURE__ */ jsx(Root, {
353
+ asChild: true,
354
+ ...useRovingFocusGroupScope(__scopeTabs),
355
+ orientation: context.orientation,
356
+ dir: context.dir,
357
+ loop,
358
+ children: /* @__PURE__ */ jsx(Primitive.div, {
359
+ role: "tablist",
360
+ "aria-orientation": context.orientation,
361
+ ...listProps,
362
+ ref: forwardedRef
363
+ })
364
+ });
365
+ });
366
+ TabsList$1.displayName = TAB_LIST_NAME;
367
+ var TRIGGER_NAME = "TabsTrigger";
368
+ var TabsTrigger$1 = React$1.forwardRef((props, forwardedRef) => {
369
+ const { __scopeTabs, value, disabled = false, ...triggerProps } = props;
370
+ const context = useTabsContext(TRIGGER_NAME, __scopeTabs);
371
+ const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
372
+ const triggerId = makeTriggerId(context.baseId, value);
373
+ const contentId = makeContentId(context.baseId, value);
374
+ const isSelected = value === context.value;
375
+ return /* @__PURE__ */ jsx(Item, {
376
+ asChild: true,
377
+ ...rovingFocusGroupScope,
378
+ focusable: !disabled,
379
+ active: isSelected,
380
+ children: /* @__PURE__ */ jsx(Primitive.button, {
381
+ type: "button",
382
+ role: "tab",
383
+ "aria-selected": isSelected,
384
+ "aria-controls": contentId,
385
+ "data-state": isSelected ? "active" : "inactive",
386
+ "data-disabled": disabled ? "" : void 0,
387
+ disabled,
388
+ id: triggerId,
389
+ ...triggerProps,
390
+ ref: forwardedRef,
391
+ onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
392
+ if (!disabled && event.button === 0 && event.ctrlKey === false) context.onValueChange(value);
393
+ else event.preventDefault();
394
+ }),
395
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
396
+ if ([" ", "Enter"].includes(event.key)) context.onValueChange(value);
397
+ }),
398
+ onFocus: composeEventHandlers(props.onFocus, () => {
399
+ const isAutomaticActivation = context.activationMode !== "manual";
400
+ if (!isSelected && !disabled && isAutomaticActivation) context.onValueChange(value);
401
+ })
402
+ })
403
+ });
404
+ });
405
+ TabsTrigger$1.displayName = TRIGGER_NAME;
406
+ var CONTENT_NAME = "TabsContent";
407
+ var TabsContent$1 = React$1.forwardRef((props, forwardedRef) => {
408
+ const { __scopeTabs, value, forceMount, children, ...contentProps } = props;
409
+ const context = useTabsContext(CONTENT_NAME, __scopeTabs);
410
+ const triggerId = makeTriggerId(context.baseId, value);
411
+ const contentId = makeContentId(context.baseId, value);
412
+ const isSelected = value === context.value;
413
+ const isMountAnimationPreventedRef = React$1.useRef(isSelected);
414
+ React$1.useEffect(() => {
415
+ const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
416
+ return () => cancelAnimationFrame(rAF);
417
+ }, []);
418
+ return /* @__PURE__ */ jsx(Presence, {
419
+ present: forceMount || isSelected,
420
+ children: ({ present }) => /* @__PURE__ */ jsx(Primitive.div, {
421
+ "data-state": isSelected ? "active" : "inactive",
422
+ "data-orientation": context.orientation,
423
+ role: "tabpanel",
424
+ "aria-labelledby": triggerId,
425
+ hidden: !present,
426
+ id: contentId,
427
+ tabIndex: 0,
428
+ ...contentProps,
429
+ ref: forwardedRef,
430
+ style: {
431
+ ...props.style,
432
+ animationDuration: isMountAnimationPreventedRef.current ? "0s" : void 0
433
+ },
434
+ children: present && children
435
+ })
436
+ });
437
+ });
438
+ TabsContent$1.displayName = CONTENT_NAME;
439
+ function makeTriggerId(baseId, value) {
440
+ return `${baseId}-trigger-${value}`;
441
+ }
442
+ function makeContentId(baseId, value) {
443
+ return `${baseId}-content-${value}`;
444
+ }
445
+ var Root2 = Tabs$1;
446
+ var List = TabsList$1;
447
+ var Trigger = TabsTrigger$1;
448
+ var Content = TabsContent$1;
449
+ //#endregion
450
+ //#region editors/document-model-editor/components/tabs.tsx
451
+ const Tabs = Root2;
452
+ const TabsList = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(List, {
453
+ ref,
454
+ className: twMerge("flex items-center justify-center rounded-xl bg-background p-1 shadow-inner", className),
455
+ ...props
456
+ }));
457
+ TabsList.displayName = List.displayName;
458
+ const TabsTrigger = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Trigger, {
459
+ ref,
460
+ 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),
461
+ ...props
462
+ }));
463
+ TabsTrigger.displayName = Trigger.displayName;
464
+ const TabsContent = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Content, {
465
+ ref,
466
+ className,
467
+ ...props
468
+ }));
469
+ TabsContent.displayName = Content.displayName;
470
+ //#endregion
471
+ //#region editors/document-model-editor/components/state-schemas.tsx
472
+ const GraphqlEditor = lazy(() => import("./graphql-editor-BhF6KN6y.mjs"));
473
+ const JSONEditor = lazy(() => import("./json-editor-Cqc0zuz0.mjs"));
474
+ function StateEditor({ modelName, stateSchema, initialValue, setStateSchema, setInitialState, scope }) {
475
+ const { sharedSchema: sharedSchemaSdl, error: sharedSchemaError } = useSchemaContext();
476
+ const [showStandardLib, setShowStandardLib] = useState(false);
477
+ const [syncWithSchema, setSyncWithSchema] = useState(true);
478
+ const customLinter = useCallback((doc) => ensureValidStateSchemaName(doc, modelName, scope), [modelName, scope]);
479
+ const schemaErrors = useMemo(() => {
480
+ const errors = ensureValidStateSchemaName(stateSchema, modelName, scope);
481
+ if (sharedSchemaError) return [...errors, sharedSchemaError];
482
+ return errors;
483
+ }, [
484
+ stateSchema,
485
+ modelName,
486
+ scope,
487
+ sharedSchemaError
488
+ ]);
489
+ const handleToggleStandardLib = useCallback(() => {
490
+ setShowStandardLib((prev) => !prev);
491
+ }, []);
492
+ const handleSchemaUpdate = useCallback((newDoc) => setStateSchema(newDoc, scope), [setStateSchema, scope]);
493
+ const handleInitialStateUpdate = useCallback((newDoc) => setInitialState(newDoc, scope), [setInitialState, scope]);
494
+ const hasSyncedRef = useRef(false);
495
+ const { initialValueErrors, fixedState } = useMemo(() => {
496
+ const existingValue = initialValue || "{}";
497
+ const sharedSchemaDocumentNode = safeParseSdl(sharedSchemaSdl);
498
+ if (!sharedSchemaDocumentNode) return {
499
+ initialValueErrors: [],
500
+ fixedState: null
501
+ };
502
+ const stateTypeName = makeStateSchemaNameForScope(modelName, scope);
503
+ if (!stateTypeName) return {
504
+ initialValueErrors: [],
505
+ fixedState: null
506
+ };
507
+ const stateTypeDefinitionNode = sharedSchemaDocumentNode.definitions.find((def) => def.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION && def.name.value === stateTypeName);
508
+ if (!stateTypeDefinitionNode || stateTypeDefinitionNode.kind !== import_graphql.Kind.OBJECT_TYPE_DEFINITION) return {
509
+ initialValueErrors: [],
510
+ fixedState: null
511
+ };
512
+ const errors = validateStateObject(sharedSchemaDocumentNode, stateTypeDefinitionNode, existingValue);
513
+ if (errors.length && syncWithSchema) {
514
+ const computedFixedState = makeMinimalObjectForStateType({
515
+ sharedSchemaDocumentNode,
516
+ stateTypeDefinitionNode,
517
+ existingValue
518
+ });
519
+ if (initialValue !== computedFixedState) return {
520
+ initialValueErrors: [],
521
+ fixedState: computedFixedState
522
+ };
523
+ }
524
+ return {
525
+ initialValueErrors: errors,
526
+ fixedState: null
527
+ };
528
+ }, [
529
+ sharedSchemaSdl,
530
+ initialValue,
531
+ syncWithSchema,
532
+ scope,
533
+ modelName
534
+ ]);
535
+ useEffect(() => {
536
+ if (fixedState && !hasSyncedRef.current) {
537
+ hasSyncedRef.current = true;
538
+ setInitialState(fixedState, scope);
539
+ } else if (!fixedState) hasSyncedRef.current = false;
540
+ }, [
541
+ fixedState,
542
+ setInitialState,
543
+ scope
544
+ ]);
545
+ return /* @__PURE__ */ jsxs("div", {
546
+ className: "grid grid-cols-2 gap-4",
547
+ children: [/* @__PURE__ */ jsxs("div", { children: [
548
+ /* @__PURE__ */ jsxs("h3", {
549
+ className: "mb-2 text-lg text-foreground capitalize",
550
+ children: [scope, " state schema *"]
551
+ }),
552
+ /* @__PURE__ */ jsxs(Button, {
553
+ onClick: handleToggleStandardLib,
554
+ className: "mb-2 flex w-fit items-center gap-2",
555
+ children: [
556
+ showStandardLib ? "Hide" : "Show",
557
+ " standard library",
558
+ /* @__PURE__ */ jsx("svg", {
559
+ className: twMerge("inline-block transition-transform", showStandardLib ? "rotate-180" : "rotate-0"),
560
+ xmlns: "http://www.w3.org/2000/svg",
561
+ width: "24",
562
+ height: "24",
563
+ viewBox: "0 0 24 24",
564
+ fill: "currentColor",
565
+ children: /* @__PURE__ */ jsx("path", {
566
+ 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",
567
+ fill: "currentColor"
568
+ })
569
+ })
570
+ ]
571
+ }),
572
+ /* @__PURE__ */ jsxs(Suspense, { children: [
573
+ showStandardLib && /* @__PURE__ */ jsx(GraphqlEditor, {
574
+ doc: typeDefsDoc,
575
+ readonly: true
576
+ }),
577
+ /* @__PURE__ */ jsx(GraphqlEditor, {
578
+ doc: stateSchema,
579
+ updateDocumentInModel: handleSchemaUpdate,
580
+ customLinter
581
+ }),
582
+ schemaErrors.length > 0 && /* @__PURE__ */ jsx("p", {
583
+ className: "mt-2 text-sm text-destructive",
584
+ children: schemaErrors[0].message
585
+ })
586
+ ] })
587
+ ] }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
588
+ className: "flex flex-col items-end",
589
+ children: [/* @__PURE__ */ jsxs("h3", {
590
+ className: "mb-2 text-right text-lg text-foreground capitalize",
591
+ children: [scope, " state initial value *"]
592
+ }), /* @__PURE__ */ jsxs("label", {
593
+ 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",
594
+ children: [
595
+ /* @__PURE__ */ jsx("input", {
596
+ type: "checkbox",
597
+ className: "",
598
+ value: syncWithSchema.toString(),
599
+ onChange: (e) => {
600
+ setSyncWithSchema(e.currentTarget.value === "true" ? true : false);
601
+ }
602
+ }),
603
+ "Sync with schema",
604
+ " ",
605
+ /* @__PURE__ */ jsx("svg", {
606
+ className: "inline-block",
607
+ xmlns: "http://www.w3.org/2000/svg",
608
+ width: "16",
609
+ height: "16",
610
+ viewBox: "0 0 16 16",
611
+ fill: "none",
612
+ children: /* @__PURE__ */ jsx("path", {
613
+ 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",
614
+ fill: "currentColor"
615
+ })
616
+ })
617
+ ]
618
+ })]
619
+ }), /* @__PURE__ */ jsxs(Suspense, { children: [/* @__PURE__ */ jsx(JSONEditor, {
620
+ doc: initialValue,
621
+ updateDocumentInModel: handleInitialStateUpdate
622
+ }), initialValueErrors.map((error, index) => /* @__PURE__ */ jsx("p", {
623
+ className: "mt-2 text-sm text-destructive",
624
+ children: error instanceof StateValidationError ? /* @__PURE__ */ jsx(StateValidationErrorMessage, { error }) : error.message
625
+ }, index))] })] })]
626
+ });
627
+ }
628
+ function StateSchemas({ modelName, globalStateSchema, localStateSchema, globalStateInitialValue, localStateInitialValue, setStateSchema, setInitialState, currentScope, onScopeChange }) {
629
+ const handleAddLocalState = useCallback(() => {
630
+ setStateSchema(makeInitialSchemaDoc(modelName, "local"), "local");
631
+ setInitialState("", "local");
632
+ }, [
633
+ modelName,
634
+ setStateSchema,
635
+ setInitialState
636
+ ]);
637
+ return /* @__PURE__ */ jsxs(Tabs, {
638
+ className: "pb-8",
639
+ activationMode: "manual",
640
+ value: currentScope,
641
+ onValueChange: (value) => onScopeChange(value),
642
+ children: [
643
+ /* @__PURE__ */ jsx("div", {
644
+ className: "my-6",
645
+ children: /* @__PURE__ */ jsxs(TabsList, {
646
+ className: "mx-auto flex max-w-sm",
647
+ children: [/* @__PURE__ */ jsx(TabsTrigger, {
648
+ value: "global",
649
+ children: "Global"
650
+ }), /* @__PURE__ */ jsx(TabsTrigger, {
651
+ value: "local",
652
+ children: "Local"
653
+ })]
654
+ })
655
+ }),
656
+ /* @__PURE__ */ jsx(TabsContent, {
657
+ value: "global",
658
+ tabIndex: -1,
659
+ children: /* @__PURE__ */ jsx(StateEditor, {
660
+ modelName,
661
+ stateSchema: globalStateSchema,
662
+ initialValue: globalStateInitialValue,
663
+ setStateSchema,
664
+ setInitialState,
665
+ scope: "global"
666
+ })
667
+ }),
668
+ /* @__PURE__ */ jsx(TabsContent, {
669
+ value: "local",
670
+ tabIndex: -1,
671
+ children: !localStateSchema ? /* @__PURE__ */ jsxs("div", {
672
+ className: "",
673
+ children: [/* @__PURE__ */ jsx("h3", {
674
+ className: "mb-2 text-lg text-foreground capitalize",
675
+ children: "local state schema *"
676
+ }), /* @__PURE__ */ jsx(Button, {
677
+ onClick: handleAddLocalState,
678
+ children: "Add local state"
679
+ })]
680
+ }) : /* @__PURE__ */ jsx(StateEditor, {
681
+ modelName,
682
+ stateSchema: localStateSchema,
683
+ initialValue: localStateInitialValue,
684
+ setStateSchema,
685
+ setInitialState,
686
+ scope: "local"
687
+ })
688
+ })
689
+ ]
690
+ });
691
+ }
692
+ //#endregion
693
+ export { StateSchemas as default };
694
+
695
+ //# sourceMappingURL=state-schemas-DXG02fMh.mjs.map