@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-schemas-B47wHvDV.js","names":["React","React","useId","Tabs","React","useId","TabsList","RovingFocusGroup.Root","TabsTrigger","RovingFocusGroup.Item","TabsContent","TabsPrimitive.Root","React","TabsPrimitive.List","TabsPrimitive.Trigger","TabsPrimitive.Content"],"sources":["../../../../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","../../../../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","../../../../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","../../editors/document-model-editor/components/state-error.tsx","../../../../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","../../editors/document-model-editor/components/tabs.tsx","../../editors/document-model-editor/components/state-schemas.tsx"],"sourcesContent":["\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","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","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\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"],"x_google_ignoreList":[0,1,2,4],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ //#region ../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs
2
+ var __assign = function() {
3
+ __assign = Object.assign || function __assign(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ function __rest(s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") {
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
17
+ }
18
+ return t;
19
+ }
20
+ function __spreadArray(to, from, pack) {
21
+ if (pack || arguments.length === 2) {
22
+ for (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {
23
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
24
+ ar[i] = from[i];
25
+ }
26
+ }
27
+ return to.concat(ar || Array.prototype.slice.call(from));
28
+ }
29
+ //#endregion
30
+ export { __rest as n, __spreadArray as r, __assign as t };
31
+
32
+ //# sourceMappingURL=tslib.es6-CeIASJ2O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tslib.es6-CeIASJ2O.js","names":[],"sources":["../../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n"],"x_google_ignoreList":[0],"mappings":";AA+BA,IAAW,WAAW,WAAW;AAC/B,YAAW,OAAO,UAAU,SAAS,SAAS,GAAG;AAC7C,OAAK,IAAI,GAAG,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AACjD,OAAI,UAAU;AACd,QAAK,IAAI,KAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAG,EAAE,CAAE,GAAE,KAAK,EAAE;;AAE9E,SAAO;;AAEX,QAAO,SAAS,MAAM,MAAM,UAAU;;AAGxC,SAAgB,OAAO,GAAG,GAAG;CAC3B,IAAI,IAAI,EAAE;AACV,MAAK,IAAI,KAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAC9E,GAAE,KAAK,EAAE;AACb,KAAI,KAAK,QAAQ,OAAO,OAAO,0BAA0B;OAChD,IAAI,IAAI,GAAG,IAAI,OAAO,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,IAC/D,KAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,KAAK,OAAO,UAAU,qBAAqB,KAAK,GAAG,EAAE,GAAG,CAC1E,GAAE,EAAE,MAAM,EAAE,EAAE;;AAE1B,QAAO;;AAkKT,SAAgB,cAAc,IAAI,MAAM,MAAM;AAC5C,KAAI,QAAQ,UAAU,WAAW;OAAQ,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,IAC5E,KAAI,MAAM,EAAE,KAAK,OAAO;AACpB,OAAI,CAAC,GAAI,MAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,EAAE;AACpD,MAAG,KAAK,KAAK;;;AAGrB,QAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,KAAK,CAAC"}
@@ -1,21 +1,128 @@
1
- import { f as lazy$1, g as record, i as sentenceCase, l as array, m as number, r as pascalCase, s as _null, u as boolean, v as string, y as union } from "./dist-DT7jI9ol.mjs";
2
- import { t as require_graphql } from "./graphql-BfAoPeWM.mjs";
3
- import { w as twMerge } from "./dist-CzYOpeXN.mjs";
4
- import { a as customScalars } from "./documents-DCf53bzO.mjs";
5
- import { n as safeParseSdl } from "./schema-context-DL8jhi_d.mjs";
1
+ import { t as require_graphql } from "./graphql-BvV3tC1U.mjs";
2
+ import { h as twMerge } from "./dist-Bf_PIbO7.mjs";
3
+ import { n as safeParseSdl } from "./schema-context-mHmP3Cl6.mjs";
4
+ import { z } from "zod";
6
5
  import { forwardRef } from "react";
7
6
  import { jsx } from "react/jsx-runtime";
8
- //#region ../../node_modules/.pnpm/@powerhousedao+document-engineering@1.40.5_@types+express@4.17.25_@types+react-dom@19.2_75e28b6ec666f63b132a491ff3a6fdf7/node_modules/@powerhousedao/document-engineering/dist/src/scalars/graphql/utils.js
9
- const SerializableSchema = lazy$1(() => union([
10
- string(),
11
- number(),
12
- boolean(),
13
- _null(),
14
- array(SerializableSchema),
15
- record(string(), SerializableSchema)
16
- ]));
17
- function getPHCustomScalarByTypeName(name) {
18
- return Object.values(customScalars).find((scalar) => scalar.config.name === name) ?? null;
7
+ import { getPHCustomScalarByTypeName } from "@powerhousedao/document-engineering/graphql";
8
+ //#region ../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js
9
+ const SPLIT_LOWER_UPPER_RE = /([\p{Ll}\d])(\p{Lu})/gu;
10
+ const SPLIT_UPPER_UPPER_RE = /(\p{Lu})([\p{Lu}][\p{Ll}])/gu;
11
+ const SPLIT_SEPARATE_NUMBER_RE = /(\d)\p{Ll}|(\p{L})\d/u;
12
+ const DEFAULT_STRIP_REGEXP = /[^\p{L}\d]+/giu;
13
+ const SPLIT_REPLACE_VALUE = "$1\0$2";
14
+ const DEFAULT_PREFIX_SUFFIX_CHARACTERS = "";
15
+ /**
16
+ * Split any cased input strings into an array of words.
17
+ */
18
+ function split(value) {
19
+ let result = value.trim();
20
+ result = result.replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE).replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);
21
+ result = result.replace(DEFAULT_STRIP_REGEXP, "\0");
22
+ let start = 0;
23
+ let end = result.length;
24
+ while (result.charAt(start) === "\0") start++;
25
+ if (start === end) return [];
26
+ while (result.charAt(end - 1) === "\0") end--;
27
+ return result.slice(start, end).split(/\0/g);
28
+ }
29
+ /**
30
+ * Split the input string into an array of words, separating numbers.
31
+ */
32
+ function splitSeparateNumbers(value) {
33
+ const words = split(value);
34
+ for (let i = 0; i < words.length; i++) {
35
+ const word = words[i];
36
+ const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);
37
+ if (match) {
38
+ const offset = match.index + (match[1] ?? match[2]).length;
39
+ words.splice(i, 1, word.slice(0, offset), word.slice(offset));
40
+ }
41
+ }
42
+ return words;
43
+ }
44
+ /**
45
+ * Convert a string to space separated lower case (`foo bar`).
46
+ */
47
+ function noCase(input, options) {
48
+ const [prefix, words, suffix] = splitPrefixSuffix(input, options);
49
+ return prefix + words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? " ") + suffix;
50
+ }
51
+ /**
52
+ * Convert a string to pascal case (`FooBar`).
53
+ */
54
+ function pascalCase(input, options) {
55
+ const [prefix, words, suffix] = splitPrefixSuffix(input, options);
56
+ const lower = lowerFactory(options?.locale);
57
+ const upper = upperFactory(options?.locale);
58
+ const transform = options?.mergeAmbiguousCharacters ? capitalCaseTransformFactory(lower, upper) : pascalCaseTransformFactory(lower, upper);
59
+ return prefix + words.map(transform).join(options?.delimiter ?? "") + suffix;
60
+ }
61
+ /**
62
+ * Convert a string to constant case (`FOO_BAR`).
63
+ */
64
+ function constantCase(input, options) {
65
+ const [prefix, words, suffix] = splitPrefixSuffix(input, options);
66
+ return prefix + words.map(upperFactory(options?.locale)).join(options?.delimiter ?? "_") + suffix;
67
+ }
68
+ /**
69
+ * Convert a string to path case (`Foo bar`).
70
+ */
71
+ function sentenceCase(input, options) {
72
+ const [prefix, words, suffix] = splitPrefixSuffix(input, options);
73
+ const lower = lowerFactory(options?.locale);
74
+ const transform = capitalCaseTransformFactory(lower, upperFactory(options?.locale));
75
+ return prefix + words.map((word, index) => {
76
+ if (index === 0) return transform(word);
77
+ return lower(word);
78
+ }).join(options?.delimiter ?? " ") + suffix;
79
+ }
80
+ /**
81
+ * Convert a string to snake case (`foo_bar`).
82
+ */
83
+ function snakeCase(input, options) {
84
+ return noCase(input, {
85
+ delimiter: "_",
86
+ ...options
87
+ });
88
+ }
89
+ function lowerFactory(locale) {
90
+ return locale === false ? (input) => input.toLowerCase() : (input) => input.toLocaleLowerCase(locale);
91
+ }
92
+ function upperFactory(locale) {
93
+ return locale === false ? (input) => input.toUpperCase() : (input) => input.toLocaleUpperCase(locale);
94
+ }
95
+ function capitalCaseTransformFactory(lower, upper) {
96
+ return (word) => `${upper(word[0])}${lower(word.slice(1))}`;
97
+ }
98
+ function pascalCaseTransformFactory(lower, upper) {
99
+ return (word, index) => {
100
+ const char0 = word[0];
101
+ return (index > 0 && char0 >= "0" && char0 <= "9" ? "_" + char0 : upper(char0)) + lower(word.slice(1));
102
+ };
103
+ }
104
+ function splitPrefixSuffix(input, options = {}) {
105
+ const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);
106
+ const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
107
+ const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;
108
+ let prefixIndex = 0;
109
+ let suffixIndex = input.length;
110
+ while (prefixIndex < input.length) {
111
+ const char = input.charAt(prefixIndex);
112
+ if (!prefixCharacters.includes(char)) break;
113
+ prefixIndex++;
114
+ }
115
+ while (suffixIndex > prefixIndex) {
116
+ const index = suffixIndex - 1;
117
+ const char = input.charAt(index);
118
+ if (!suffixCharacters.includes(char)) break;
119
+ suffixIndex = index;
120
+ }
121
+ return [
122
+ input.slice(0, prefixIndex),
123
+ splitFn(input.slice(prefixIndex, suffixIndex)),
124
+ input.slice(suffixIndex)
125
+ ];
19
126
  }
20
127
  //#endregion
21
128
  //#region editors/document-model-editor/constants/graphql-kinds.ts
@@ -160,19 +267,19 @@ function makeMinimalValueForGQLPrimitiveNode(primitiveTypeNode, existingFieldVal
160
267
  if (!name) return null;
161
268
  switch (name) {
162
269
  case "ID":
163
- if (string().safeParse(existingFieldValue).success) return existingFieldValue;
270
+ if (z.string().safeParse(existingFieldValue).success) return existingFieldValue;
164
271
  return isNonNull ? "placeholder-id" : null;
165
272
  case BOOLEAN_GQL_PRIMITIVE_NAME:
166
- if (boolean().safeParse(existingFieldValue).success) return existingFieldValue;
273
+ if (z.boolean().safeParse(existingFieldValue).success) return existingFieldValue;
167
274
  return isNonNull ? false : null;
168
275
  case "Int":
169
- if (number().safeParse(existingFieldValue).success) return existingFieldValue;
276
+ if (z.number().safeParse(existingFieldValue).success) return existingFieldValue;
170
277
  return isNonNull ? 0 : null;
171
278
  case FLOAT_GQL_PRIMITIVE_NAME:
172
- if (number().safeParse(existingFieldValue).success) return existingFieldValue;
279
+ if (z.number().safeParse(existingFieldValue).success) return existingFieldValue;
173
280
  return isNonNull ? 0 : null;
174
281
  case STRING_GQL_PRIMITIVE_NAME:
175
- if (string().safeParse(existingFieldValue).success) return existingFieldValue;
282
+ if (z.string().safeParse(existingFieldValue).success) return existingFieldValue;
176
283
  return isNonNull ? "" : null;
177
284
  }
178
285
  return isNonNull ? existingFieldValue : null;
@@ -673,6 +780,6 @@ const Button = forwardRef((props, ref) => {
673
780
  });
674
781
  });
675
782
  //#endregion
676
- export { compareStringsWithoutWhitespace as a, isEmptyOperationSchema as c, makeMinimalObjectForStateType as d, makeOperationInitialDoc as f, validateStateObject as h, StateValidationError as i, makeEmptyOperationSchema as l, renameSchemaType as m, ensureValidOperationSchemaInputName as n, handleModelNameChange as o, makeStateSchemaNameForScope as p, ensureValidStateSchemaName as r, initializeModelSchema as s, Button as t, makeInitialSchemaDoc as u };
783
+ export { pascalCase as _, compareStringsWithoutWhitespace as a, isEmptyOperationSchema as c, makeMinimalObjectForStateType as d, makeOperationInitialDoc as f, constantCase as g, validateStateObject as h, StateValidationError as i, makeEmptyOperationSchema as l, renameSchemaType as m, ensureValidOperationSchemaInputName as n, handleModelNameChange as o, makeStateSchemaNameForScope as p, ensureValidStateSchemaName as r, initializeModelSchema as s, Button as t, makeInitialSchemaDoc as u, snakeCase as v };
677
784
 
678
- //# sourceMappingURL=button-Da7CxMn7.mjs.map
785
+ //# sourceMappingURL=button-5bnYEAVq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-5bnYEAVq.mjs","names":["Kind","GraphQLError","Kind"],"sources":["../../../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/dist/index.js","../../editors/document-model-editor/constants/graphql-kinds.ts","../../editors/document-model-editor/utils/helpers.ts","../../editors/document-model-editor/utils/linting.ts","../../editors/document-model-editor/components/button.tsx"],"sourcesContent":["// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value) {\n let result = value.trim();\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n let start = 0;\n let end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n if (start === end)\n return [];\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n return result.slice(start, end).split(/\\0/g);\n}\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix);\n}\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input, options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix);\n}\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input, options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input, options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input, options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input, options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (prefix +\n words\n .map((word, index) => {\n if (index === 0)\n return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix);\n}\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input, options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input, options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\nfunction lowerFactory(locale) {\n return locale === false\n ? (input) => input.toLowerCase()\n : (input) => input.toLocaleLowerCase(locale);\n}\nfunction upperFactory(locale) {\n return locale === false\n ? (input) => input.toUpperCase()\n : (input) => input.toLocaleUpperCase(locale);\n}\nfunction capitalCaseTransformFactory(lower, upper) {\n return (word) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\nfunction pascalCaseTransformFactory(lower, upper) {\n return (word, index) => {\n const char0 = word[0];\n const initial = index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\nfunction splitPrefixSuffix(input, options = {}) {\n const splitFn = options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters = options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters = options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char))\n break;\n prefixIndex++;\n }\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char))\n break;\n suffixIndex = index;\n }\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n//# sourceMappingURL=index.js.map","export const STRING_GQL_PRIMITIVE_NAME = \"String\";\nexport const BOOLEAN_GQL_PRIMITIVE_NAME = \"Boolean\";\nexport const INT_GQL_PRIMITIVE_NAME = \"Int\";\nexport const FLOAT_GQL_PRIMITIVE_NAME = \"Float\";\nexport const ID_GQL_PRIMITIVE_NAME = \"ID\";\n\nexport const gqlPrimitiveNodeNamesList = [\n STRING_GQL_PRIMITIVE_NAME,\n BOOLEAN_GQL_PRIMITIVE_NAME,\n INT_GQL_PRIMITIVE_NAME,\n FLOAT_GQL_PRIMITIVE_NAME,\n ID_GQL_PRIMITIVE_NAME,\n] as const;\n\nexport type GqlPrimitiveNodeNames = typeof gqlPrimitiveNodeNamesList;\nexport type GqlPrimitiveNodeName = GqlPrimitiveNodeNames[number];\n","import type { Serializable } from \"@powerhousedao/document-engineering/graphql\";\nimport { getPHCustomScalarByTypeName } from \"@powerhousedao/document-engineering/graphql\";\nimport { pascalCase } from \"change-case\";\nimport type {\n ASTNode,\n DefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n GraphQLInputType,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n ListTypeNode,\n NamedTypeNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n TypeNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n buildASTSchema,\n getOperationAST,\n getVariableValues,\n GraphQLError,\n GraphQLInputObjectType,\n GraphQLList,\n GraphQLNonNull,\n isEnumType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n Kind,\n parse,\n print,\n visit,\n} from \"graphql\";\nimport { z } from \"zod\";\nimport type { GqlPrimitiveNodeName } from \"../constants/graphql-kinds.js\";\nimport {\n BOOLEAN_GQL_PRIMITIVE_NAME,\n FLOAT_GQL_PRIMITIVE_NAME,\n gqlPrimitiveNodeNamesList,\n ID_GQL_PRIMITIVE_NAME,\n INT_GQL_PRIMITIVE_NAME,\n STRING_GQL_PRIMITIVE_NAME,\n} from \"../constants/graphql-kinds.js\";\nimport { safeParseSdl } from \"../context/schema-context.js\";\nimport type { Scope } from \"../types/documents.js\";\n\nexport function makeStateSchemaNameForScope(modelName: string, scope: string) {\n const modelNamePascalCase = pascalCase(modelName);\n const scopePascalCase = pascalCase(scope);\n const name =\n scopePascalCase === \"Global\"\n ? `${modelNamePascalCase}State`\n : `${modelNamePascalCase}${scopePascalCase}State`;\n return name;\n}\n\nexport function makeInitialSchemaDoc(modelName: string, scope: string) {\n const name = makeStateSchemaNameForScope(modelName, scope);\n const stateSchemaSdl = `type ${name} {\n \"Add your ${scope} state fields here\"\n _placeholder: String\n}`;\n return stateSchemaSdl;\n}\n\nexport function makeOperationInitialDoc(name: string) {\n const inputSdl = `input ${pascalCase(name)}Input {\n \"Add your inputs here\"\n _placeholder: String\n}`;\n return inputSdl;\n}\n\nexport function makeEmptyOperationSchema(operationName: string): string {\n const pascalName = pascalCase(operationName);\n return `input ${pascalName}Input {\\n _empty: Boolean\\n}`;\n}\n\nexport function isEmptyOperationSchema(\n schema: string | null | undefined,\n): boolean {\n if (!schema) return false;\n // Check if schema only contains _empty: Boolean field\n return (\n /_empty:\\s*Boolean/.test(schema) &&\n !schema.replace(/_empty:\\s*Boolean/, \"\").match(/\\w+:\\s*\\w+/)\n );\n}\n\nexport function safeParseJsonRecord(json: string) {\n try {\n return JSON.parse(json) as Record<string, Serializable>;\n } catch (_error) {\n return null;\n }\n}\n\nexport function makeMinimalObjectForStateType(args: {\n sharedSchemaDocumentNode: DocumentNode;\n stateTypeDefinitionNode: ObjectTypeDefinitionNode;\n existingValue: string;\n}) {\n const { sharedSchemaDocumentNode, stateTypeDefinitionNode, existingValue } =\n args;\n const existingValueObject = safeParseJsonRecord(existingValue);\n if (!existingValueObject) {\n return existingValue;\n }\n const stateTypeDefinitionFields = stateTypeDefinitionNode.fields;\n if (!stateTypeDefinitionFields?.length) {\n return existingValue;\n }\n // Initialize visitedTypes with the root type to detect self-recursive types\n const visitedTypes = new Set<string>([stateTypeDefinitionNode.name.value]);\n const minimalObject = makeMinimalValuesForObjectFields({\n schemaDocumentNode: sharedSchemaDocumentNode,\n fieldDefinitionNodes: stateTypeDefinitionFields,\n existingValueObject,\n visitedTypes,\n });\n return JSON.stringify(minimalObject, null, 2);\n}\n\nexport function makeMinimalValuesForObjectFields(args: {\n schemaDocumentNode: DocumentNode;\n existingValueObject: Record<string, Serializable> | null;\n fieldDefinitionNodes: readonly FieldDefinitionNode[];\n visitedTypes?: Set<string>;\n}) {\n const {\n schemaDocumentNode,\n existingValueObject,\n fieldDefinitionNodes,\n visitedTypes,\n } = args;\n const newJson: Record<string, Serializable> = {};\n\n for (const astNode of fieldDefinitionNodes) {\n const fieldName = getASTNodeName(astNode);\n if (!fieldName) {\n continue;\n }\n const minimalValue = makeMinimalValueForASTNode({\n fieldName,\n astNode,\n schemaDocumentNode,\n existingValueObject,\n visitedTypes,\n });\n newJson[astNode.name.value] = minimalValue;\n }\n\n return newJson;\n}\n\nfunction makeMinimalValueForASTNode(args: {\n fieldName: string;\n astNode: ASTNode;\n schemaDocumentNode: DocumentNode;\n existingValueObject: Record<string, Serializable> | null;\n visitedTypes?: Set<string>;\n}): Serializable {\n const {\n fieldName,\n astNode,\n schemaDocumentNode,\n existingValueObject,\n visitedTypes,\n } = args;\n const existingFieldValue = existingValueObject?.[fieldName];\n let node: ASTNode | null = astNode;\n\n if (isFieldDefinitionNode(astNode)) {\n node = getASTNodeTypeNode(node);\n }\n const isNonNull = isNonNullNode(node);\n if (isNonNull) {\n node = getASTNodeTypeNode(node);\n }\n\n if (isListTypeNode(node)) {\n return makeMinimalValueForGqlListNode(\n node,\n existingFieldValue,\n isNonNull,\n schemaDocumentNode,\n visitedTypes,\n );\n }\n if (isGqlPrimitiveNode(node)) {\n return makeMinimalValueForGQLPrimitiveNode(\n node,\n existingFieldValue,\n isNonNull,\n );\n }\n\n const namedTypeDefinitionNode = getNamedTypeDefinitionNode(\n node,\n schemaDocumentNode,\n );\n\n if (isEnumTypeDefinitionNode(namedTypeDefinitionNode)) {\n return makeMinimalValueForGqlEnum(\n namedTypeDefinitionNode,\n existingFieldValue,\n isNonNull,\n );\n }\n if (isScalarTypeDefinitionNode(namedTypeDefinitionNode)) {\n return makeMinimalValueForGqlScalar(\n namedTypeDefinitionNode,\n existingFieldValue,\n isNonNull,\n );\n }\n if (isUnionTypeDefinitionNode(namedTypeDefinitionNode)) {\n return makeMinimalValueForGqlUnion(\n namedTypeDefinitionNode,\n existingFieldValue,\n schemaDocumentNode,\n existingValueObject,\n isNonNull,\n visitedTypes,\n );\n }\n if (isObjectTypeDefinitionNode(namedTypeDefinitionNode)) {\n return makeMinimalValueForGqlObject(\n namedTypeDefinitionNode,\n schemaDocumentNode,\n existingValueObject,\n existingFieldValue,\n isNonNull,\n visitedTypes,\n );\n }\n\n return existingFieldValue;\n}\n\nfunction isFieldDefinitionNode(\n astNodeTypeNode: ASTNode | null,\n): astNodeTypeNode is FieldDefinitionNode {\n if (!astNodeTypeNode) return false;\n return astNodeTypeNode.kind === Kind.FIELD_DEFINITION;\n}\n\nfunction isNonNullNode(astNode: ASTNode | null): astNode is NonNullTypeNode {\n if (!astNode) return false;\n return astNode.kind === Kind.NON_NULL_TYPE;\n}\n\nexport function isGqlPrimitiveNode(\n astNodeTypeNode: ASTNode | null,\n): astNodeTypeNode is NamedTypeNode {\n if (!astNodeTypeNode) return false;\n const name = getASTNodeName(astNodeTypeNode);\n return gqlPrimitiveNodeNamesList.includes(name as GqlPrimitiveNodeName);\n}\n\nfunction isListTypeNode(\n astNodeTypeNode: ASTNode | null,\n): astNodeTypeNode is ListTypeNode {\n if (!astNodeTypeNode) return false;\n return astNodeTypeNode.kind === Kind.LIST_TYPE;\n}\n\nfunction isEnumTypeDefinitionNode(\n definitionNode: DefinitionNode | null,\n): definitionNode is EnumTypeDefinitionNode {\n if (!definitionNode) return false;\n return definitionNode.kind === Kind.ENUM_TYPE_DEFINITION;\n}\n\nfunction isScalarTypeDefinitionNode(\n definitionNode: DefinitionNode | null,\n): definitionNode is ScalarTypeDefinitionNode {\n if (!definitionNode) return false;\n return definitionNode.kind === Kind.SCALAR_TYPE_DEFINITION;\n}\n\nfunction isUnionTypeDefinitionNode(\n definitionNode: DefinitionNode | null,\n): definitionNode is UnionTypeDefinitionNode {\n if (!definitionNode) return false;\n return definitionNode.kind === Kind.UNION_TYPE_DEFINITION;\n}\n\nfunction isObjectTypeDefinitionNode(\n definitionNode: DefinitionNode | null,\n): definitionNode is ObjectTypeDefinitionNode {\n if (!definitionNode) return false;\n return definitionNode.kind === Kind.OBJECT_TYPE_DEFINITION;\n}\n\nfunction getASTNodeName(astNode: ASTNode | null) {\n if (!astNode) {\n return null;\n }\n if (!(\"name\" in astNode)) {\n return null;\n }\n if (!astNode.name) {\n return null;\n }\n if (!(\"value\" in astNode.name)) {\n return null;\n }\n return astNode.name.value;\n}\n\nfunction getASTNodeTypeNode(astNode: ASTNode | null) {\n if (!astNode) {\n return null;\n }\n if (!(\"type\" in astNode)) {\n return null;\n }\n return astNode.type;\n}\n\nfunction makeMinimalValueForGQLPrimitiveNode(\n primitiveTypeNode: NamedTypeNode,\n existingFieldValue: Serializable,\n isNonNull: boolean,\n) {\n const name = getASTNodeName(primitiveTypeNode);\n if (!name) {\n return null;\n }\n switch (name) {\n case ID_GQL_PRIMITIVE_NAME: {\n if (z.string().safeParse(existingFieldValue).success) {\n return existingFieldValue;\n }\n return isNonNull ? \"placeholder-id\" : null;\n }\n case BOOLEAN_GQL_PRIMITIVE_NAME: {\n if (z.boolean().safeParse(existingFieldValue).success) {\n return existingFieldValue;\n }\n return isNonNull ? false : null;\n }\n case INT_GQL_PRIMITIVE_NAME: {\n if (z.number().safeParse(existingFieldValue).success) {\n return existingFieldValue;\n }\n return isNonNull ? 0 : null;\n }\n case FLOAT_GQL_PRIMITIVE_NAME: {\n if (z.number().safeParse(existingFieldValue).success) {\n return existingFieldValue;\n }\n return isNonNull ? 0.0 : null;\n }\n case STRING_GQL_PRIMITIVE_NAME: {\n if (z.string().safeParse(existingFieldValue).success) {\n return existingFieldValue;\n }\n return isNonNull ? \"\" : null;\n }\n }\n\n return isNonNull ? existingFieldValue : null;\n}\n\nfunction makeMinimalValueForGqlEnum(\n namedTypeDefinitionNode: EnumTypeDefinitionNode,\n existingFieldValue: Serializable,\n isNonNull: boolean,\n) {\n const enumValues =\n namedTypeDefinitionNode.values?.map((value) => value.name.value) ?? [];\n if (\n typeof existingFieldValue === \"string\" &&\n enumValues.includes(existingFieldValue)\n ) {\n return existingFieldValue;\n }\n if (isNonNull) {\n return enumValues[0];\n }\n return null;\n}\n\nfunction makeMinimalValueForGqlScalar(\n scalarTypeDefinitionNode: ScalarTypeDefinitionNode,\n existingFieldValue: Serializable,\n isNonNull: boolean,\n) {\n if (!isNonNull && !existingFieldValue) {\n return null;\n }\n const name = getASTNodeName(scalarTypeDefinitionNode);\n if (!name) {\n console.error(\n \"No name for scalar type definition node\",\n scalarTypeDefinitionNode,\n );\n return null;\n }\n const scalar = getPHCustomScalarByTypeName(name);\n if (!scalar) {\n return null;\n }\n const existingValueIsValid = scalar.schema.safeParse(existingFieldValue);\n if (existingValueIsValid.success) {\n return existingFieldValue;\n }\n if (!isNonNull) {\n return null;\n }\n const minimalValue = scalar.getDefaultValue?.();\n if (minimalValue) {\n return minimalValue;\n }\n return existingFieldValue;\n}\n\nfunction makeMinimalValueForGqlUnion(\n namedTypeDefinitionNode: UnionTypeDefinitionNode,\n existingFieldValue: Serializable,\n schemaDocumentNode: DocumentNode,\n existingValueObject: Record<string, Serializable> | null,\n isNonNull: boolean,\n visitedTypes?: Set<string>,\n) {\n if (!isNonNull && !existingFieldValue) {\n return null;\n }\n\n const types = namedTypeDefinitionNode.types;\n if (!types?.length) {\n return null;\n }\n\n const firstNamedTypeDefinitionNode = namedTypeDefinitionNode.types?.at(0);\n if (!firstNamedTypeDefinitionNode) {\n return null;\n }\n const firstNamedTypeObjectDefinitionNode = getNamedTypeDefinitionNode(\n firstNamedTypeDefinitionNode,\n schemaDocumentNode,\n );\n if (!isObjectTypeDefinitionNode(firstNamedTypeObjectDefinitionNode)) {\n return null;\n }\n return makeMinimalValueForGqlObject(\n firstNamedTypeObjectDefinitionNode,\n schemaDocumentNode,\n existingValueObject,\n existingFieldValue,\n isNonNull,\n visitedTypes,\n );\n}\n\nfunction makeMinimalValueForGqlListNode(\n listTypeNode: ListTypeNode,\n existingFieldValue: Serializable,\n isNonNull: boolean,\n schemaDocumentNode: DocumentNode,\n visitedTypes?: Set<string>,\n) {\n if (!isNonNull && !Array.isArray(existingFieldValue)) {\n return null;\n }\n if (isNonNull && !Array.isArray(existingFieldValue)) {\n return [];\n }\n\n // Process each array item recursively\n const arrayValue = existingFieldValue as Serializable[];\n return arrayValue.map((item, index) =>\n makeMinimalValueForASTNode({\n fieldName: String(index),\n astNode: listTypeNode.type,\n schemaDocumentNode,\n existingValueObject: { [index]: item },\n visitedTypes,\n }),\n );\n}\n\nfunction makeMinimalValueForGqlObject(\n objectTypeDefinitionNode: ObjectTypeDefinitionNode,\n schemaDocumentNode: DocumentNode,\n _existingValueObject: Record<string, Serializable> | null,\n existingFieldValue: Serializable,\n isNonNull: boolean,\n visitedTypes?: Set<string>,\n) {\n const typeName = objectTypeDefinitionNode.name.value;\n\n // Check for recursive types to prevent infinite recursion\n if (visitedTypes?.has(typeName)) {\n return null;\n }\n\n if (!isNonNull && !existingFieldValue) {\n return null;\n }\n const fields = objectTypeDefinitionNode.fields;\n if (!fields?.length) {\n return {};\n }\n\n // Track this type to detect cycles\n const newVisitedTypes = new Set(visitedTypes);\n newVisitedTypes.add(typeName);\n\n // Use existingFieldValue (the actual nested object) instead of existingValueObject (parent)\n const nestedExistingValue =\n existingFieldValue &&\n typeof existingFieldValue === \"object\" &&\n !Array.isArray(existingFieldValue)\n ? (existingFieldValue as Record<string, Serializable>)\n : null;\n return makeMinimalValuesForObjectFields({\n schemaDocumentNode,\n existingValueObject: nestedExistingValue,\n fieldDefinitionNodes: fields,\n visitedTypes: newVisitedTypes,\n });\n}\n\nfunction getNamedTypeDefinitionNode(\n astNodeTypeNode: ASTNode | null,\n schemaDocumentNode: DocumentNode,\n) {\n if (!astNodeTypeNode) {\n return null;\n }\n const name = getASTNodeName(astNodeTypeNode);\n if (!name) {\n return null;\n }\n const definitionNode = schemaDocumentNode.definitions.find(\n (def) => \"kind\" in def && \"name\" in def && def.name?.value === name,\n );\n if (!definitionNode) {\n return null;\n }\n return definitionNode;\n}\n\nfunction removeWhitespace(str: string) {\n return str.replace(/\\s+|\\\\n|\\\\t/g, \"\").toLowerCase();\n}\n\nexport function compareStringsWithoutWhitespace(\n str1: string | null | undefined,\n str2: string | null | undefined,\n) {\n if (\n str1 === null ||\n str2 === null ||\n str1 === undefined ||\n str2 === undefined\n )\n return false;\n return removeWhitespace(str1) === removeWhitespace(str2);\n}\n\nexport function renameSchemaType(\n sdl: string,\n oldName: string,\n newName: string,\n scope: Scope,\n): string {\n const typeSuffix = scope === \"global\" ? \"State\" : \"LocalState\";\n const oldTypeName = `${pascalCase(oldName)}${typeSuffix}`;\n const newTypeName = `${pascalCase(newName)}${typeSuffix}`;\n\n const ast = safeParseSdl(sdl);\n if (!ast) return sdl;\n\n const updatedAst = visit(ast, {\n ObjectTypeDefinition: (node) => {\n if (node.name.value === oldTypeName) {\n return {\n ...node,\n name: {\n ...node.name,\n value: newTypeName,\n },\n };\n }\n },\n });\n\n return print(updatedAst);\n}\n\nexport function initializeModelSchema(modelName: string) {\n const initialSchemaDoc = makeInitialSchemaDoc(modelName, \"global\");\n return initialSchemaDoc;\n}\n\nexport function updateModelSchemaNames(params: {\n oldName: string;\n newName: string;\n globalStateSchema: string;\n localStateSchema: string;\n setStateSchema: (schema: string, scope: Scope) => void;\n}) {\n const {\n oldName,\n newName,\n globalStateSchema,\n localStateSchema,\n setStateSchema,\n } = params;\n\n const newSchema = renameSchemaType(\n globalStateSchema,\n oldName,\n newName,\n \"global\",\n );\n setStateSchema(newSchema, \"global\");\n\n if (localStateSchema) {\n const newLocalStateSchema = renameSchemaType(\n localStateSchema,\n oldName,\n newName,\n \"local\",\n );\n setStateSchema(newLocalStateSchema, \"local\");\n }\n}\n\nexport function handleModelNameChange(params: {\n oldName: string;\n newName: string;\n globalStateSchema: string;\n localStateSchema: string;\n setStateSchema: (schema: string, scope: Scope) => void;\n}) {\n const { newName, globalStateSchema, setStateSchema } = params;\n\n const hasExistingSchema = !!globalStateSchema;\n\n if (!hasExistingSchema) {\n const initialSchemaDoc = initializeModelSchema(newName);\n setStateSchema(initialSchemaDoc, \"global\");\n return;\n }\n\n updateModelSchemaNames(params);\n}\n\n/**\n * Converts an output object type into an equivalent input object type.\n * Intended for structural validation of state objects.\n */\nexport function objectTypeToInputType(\n schema: GraphQLSchema,\n objectType: GraphQLObjectType,\n options?: {\n nameSuffix?: string;\n cache?: Map<string, GraphQLInputObjectType>;\n },\n): GraphQLInputObjectType {\n const suffix = options?.nameSuffix ?? \"Input\";\n const cache = options?.cache ?? new Map<string, GraphQLInputObjectType>();\n\n const inputTypeName = `${objectType.name}${suffix}`;\n\n if (cache.has(inputTypeName)) {\n return cache.get(inputTypeName)!;\n }\n\n const inputType = new GraphQLInputObjectType({\n name: inputTypeName,\n fields: () => {\n const fields = objectType.getFields();\n const inputFields: Record<string, { type: GraphQLInputType }> = {};\n\n for (const fieldName in fields) {\n const field = fields[fieldName];\n\n if (field.args.length > 0) {\n throw new Error(\n `Cannot convert field \"${objectType.name}.${fieldName}\" with arguments into input type`,\n );\n }\n\n inputFields[fieldName] = {\n type: outputTypeToInputType(schema, field.type, suffix, cache),\n };\n }\n\n return inputFields;\n },\n });\n\n cache.set(inputTypeName, inputType);\n return inputType;\n}\n\nfunction outputTypeToInputType(\n schema: GraphQLSchema,\n type: GraphQLOutputType,\n suffix: string,\n cache: Map<string, GraphQLInputObjectType>,\n): GraphQLInputType {\n if (isNonNullType(type)) {\n return new GraphQLNonNull(\n outputTypeToInputType(schema, type.ofType, suffix, cache),\n );\n }\n\n if (isListType(type)) {\n return new GraphQLList(\n outputTypeToInputType(schema, type.ofType, suffix, cache),\n );\n }\n\n if (isScalarType(type) || isEnumType(type)) {\n return type;\n }\n\n if (isObjectType(type)) {\n return objectTypeToInputType(schema, type, {\n nameSuffix: suffix,\n cache,\n });\n }\n\n throw new Error(`Unsupported output type: ${type.toString()}`);\n}\n\nexport function validateStateObject(\n sharedSchemaDocumentNode: DocumentNode,\n stateTypeDefinitionNode: ObjectTypeDefinitionNode,\n stateValue: string,\n): Error[] {\n let stateObjectJson: Record<string, unknown> | undefined;\n try {\n stateObjectJson = JSON.parse(stateValue) as Record<string, unknown>;\n } catch (error) {\n return [new Error(\"Invalid JSON object\", { cause: error })];\n }\n\n // 2) Build a quick index of type definitions from the shared schema\n const typeDefByName = indexTypeDefinitions(sharedSchemaDocumentNode);\n\n // Ensure the passed node exists in the shared schema (optional but helpful)\n const stateTypeName = stateTypeDefinitionNode.name.value;\n if (!typeDefByName.has(stateTypeName)) {\n return [\n new Error(\n `State type \"${stateTypeName}\" was not found in sharedSchemaDocumentNode`,\n ),\n ];\n }\n\n // 3) Generate input types needed to validate this state object\n const inputSuffix = \"Input\";\n const generatedInputDefs = generateInputTypesForObjectTree(\n stateTypeName,\n typeDefByName,\n inputSuffix,\n );\n\n // 4) Build a schema that includes the generated input types\n const augmentedDoc: DocumentNode = {\n ...sharedSchemaDocumentNode,\n definitions: [\n ...sharedSchemaDocumentNode.definitions,\n ...generatedInputDefs,\n ],\n };\n\n let schema;\n try {\n schema = buildASTSchema(augmentedDoc, { assumeValidSDL: false });\n } catch (e) {\n return [new Error(\"Failed to build schema from SDL\", { cause: e })];\n }\n\n // 5) Validate by coercing variables against the generated input type\n const inputTypeName = `${stateTypeName}${inputSuffix}`;\n const opDoc = parse(`query($v: ${inputTypeName}!) { __typename }`);\n const op = getOperationAST(opDoc);\n\n if (!op) {\n return [new Error(\"Failed to create validation operation AST\")];\n }\n\n const { errors } = getVariableValues(schema, op.variableDefinitions ?? [], {\n v: stateObjectJson,\n });\n\n // Detect recursive types first - these take priority over NON_NULL errors\n const recursiveTypeErrors = detectRecursiveTypes(\n stateTypeDefinitionNode,\n typeDefByName,\n );\n\n // Get the field names that have recursive types\n const recursiveFieldNames = new Set(recursiveTypeErrors.map((e) => e.field));\n\n const validationErrors = errors\n ? graphQLErrorsToStateValidationErrors(errors).filter((e) => {\n // Filter out NON_NULL errors caused by recursive types\n if (e instanceof StateValidationError && e.kind === \"NON_NULL\") {\n // Check if this error is in a path that starts with a recursive field\n const rootField = e.path[0];\n if (\n typeof rootField === \"string\" &&\n recursiveFieldNames.has(rootField)\n ) {\n return false;\n }\n }\n return true;\n })\n : [];\n\n // Add recursive type errors first (they have priority)\n validationErrors.unshift(...recursiveTypeErrors);\n\n const missingOptionalErrors = detectMissingOptionalFields(\n sharedSchemaDocumentNode,\n stateTypeDefinitionNode,\n stateObjectJson,\n );\n validationErrors.push(...missingOptionalErrors);\n\n return validationErrors;\n}\n\n/**\n * Indexes object/input/enum/scalar/interface/union type definition nodes by name.\n * Note: only AST definitions that have a \"name\" field are indexed.\n */\nfunction indexTypeDefinitions(doc: DocumentNode): Map<string, DefinitionNode> {\n const map = new Map<string, DefinitionNode>();\n\n for (const def of doc.definitions) {\n if (\n def.kind === Kind.OBJECT_TYPE_DEFINITION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n def.kind === Kind.ENUM_TYPE_DEFINITION ||\n def.kind === Kind.SCALAR_TYPE_DEFINITION ||\n def.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n def.kind === Kind.UNION_TYPE_DEFINITION ||\n def.kind === Kind.OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION ||\n def.kind === Kind.ENUM_TYPE_EXTENSION ||\n def.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n def.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Extensions also have names; we index them too (but see note below).\n // In production, you may want to merge extensions into base definitions.\n // For state validation, prefer definitions (not extensions) if both exist.\n const name = def.name.value;\n if (!map.has(name)) {\n map.set(name, def);\n }\n }\n }\n\n return map;\n}\n\n/**\n * Generates InputObjectTypeDefinitionNode(s) for a root object type and any nested\n * object types reachable via fields, converting object references to their *Input equivalents*.\n */\nfunction generateInputTypesForObjectTree(\n rootObjectTypeName: string,\n typeDefByName: Map<string, DefinitionNode>,\n inputSuffix: string,\n): InputObjectTypeDefinitionNode[] {\n const generated = new Map<string, InputObjectTypeDefinitionNode>();\n const visiting = new Set<string>();\n\n const ensureInputForObject = (objectTypeName: string) => {\n const inputName = `${objectTypeName}${inputSuffix}`;\n if (generated.has(inputName)) return;\n\n if (visiting.has(objectTypeName)) {\n // Recursive reference; we rely on GraphQLInputObjectType lazy field resolution via AST schema build.\n // Still, we must avoid infinite loops while generating AST nodes.\n return;\n }\n visiting.add(objectTypeName);\n\n const def = typeDefByName.get(objectTypeName);\n if (!def) {\n throw new GraphQLError(`Unknown referenced type \"${objectTypeName}\"`);\n }\n\n if (\n def.kind !== Kind.OBJECT_TYPE_DEFINITION &&\n def.kind !== Kind.OBJECT_TYPE_EXTENSION\n ) {\n throw new GraphQLError(\n `Type \"${objectTypeName}\" is not an object type; cannot generate input from kind \"${def.kind}\"`,\n );\n }\n\n const objDef = def as ObjectTypeDefinitionNode;\n\n // Convert each field type to an input-acceptable TypeNode.\n const inputFields =\n objDef.fields?.map((f) => {\n return {\n kind: Kind.INPUT_VALUE_DEFINITION as const,\n name: f.name,\n description: f.description,\n directives: [], // output-field directives don't automatically translate to input fields\n type: convertOutputTypeNodeToInputTypeNode(\n f.type,\n typeDefByName,\n inputSuffix,\n ensureInputForObject,\n ),\n defaultValue: undefined,\n };\n }) ?? [];\n\n const inputDef: InputObjectTypeDefinitionNode = {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: { kind: Kind.NAME, value: inputName },\n description: objDef.description,\n directives: [],\n fields: inputFields,\n };\n\n generated.set(inputName, inputDef);\n\n visiting.delete(objectTypeName);\n };\n\n // Kick off generation for root\n ensureInputForObject(rootObjectTypeName);\n\n return Array.from(generated.values());\n}\n\nfunction convertOutputTypeNodeToInputTypeNode(\n typeNode: TypeNode,\n typeDefByName: Map<string, DefinitionNode>,\n inputSuffix: string,\n ensureInputForObject: (objectTypeName: string) => void,\n): TypeNode {\n switch (typeNode.kind) {\n case Kind.NON_NULL_TYPE:\n return {\n kind: Kind.NON_NULL_TYPE,\n type: convertOutputTypeNodeToInputTypeNode(\n typeNode.type,\n typeDefByName,\n inputSuffix,\n ensureInputForObject,\n ) as NamedTypeNode | ListTypeNode,\n };\n\n case Kind.LIST_TYPE:\n return {\n kind: Kind.LIST_TYPE,\n type: convertOutputTypeNodeToInputTypeNode(\n typeNode.type,\n typeDefByName,\n inputSuffix,\n ensureInputForObject,\n ),\n };\n\n case Kind.NAMED_TYPE: {\n const named = typeNode as NamedTypeNode;\n const name = named.name.value;\n\n const def = typeDefByName.get(name);\n\n // If it's an object type, we must reference its generated input twin.\n if (\n def?.kind === Kind.OBJECT_TYPE_DEFINITION ||\n def?.kind === Kind.OBJECT_TYPE_EXTENSION\n ) {\n ensureInputForObject(name);\n return {\n kind: Kind.NAMED_TYPE,\n name: { kind: Kind.NAME, value: `${name}${inputSuffix}` },\n };\n }\n\n // Scalars/enums/input objects are valid as-is in input positions.\n if (\n !def ||\n def.kind === Kind.SCALAR_TYPE_DEFINITION ||\n def.kind === Kind.ENUM_TYPE_DEFINITION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n def.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n return named;\n }\n\n // Interfaces/unions are not valid input types.\n if (\n def.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n def.kind === Kind.UNION_TYPE_DEFINITION\n ) {\n throw new GraphQLError(\n `Type \"${name}\" (${def.kind}) cannot be used in an input type`,\n );\n }\n\n // Anything else is unexpected.\n throw new GraphQLError(\n `Unsupported named type \"${name}\" of kind \"${def.kind}\"`,\n );\n }\n\n default:\n // Exhaustiveness guard\n throw new GraphQLError(\n `Unsupported TypeNode kind: ${JSON.stringify(typeNode)}`,\n );\n }\n}\n\nexport type StateValidationErrorKind =\n | \"MISSING\"\n | \"MISSING_OPTIONAL\"\n | \"UNKNOWN_FIELD\"\n | \"NON_NULL\"\n | \"TYPE\"\n | \"RECURSIVE_TYPE\";\n\nexport type StateValidationErrorPayload =\n | {\n kind: \"MISSING\";\n path: (string | number)[];\n field: string;\n expectedType?: string; // e.g. \"String!\"\n }\n | {\n kind: \"MISSING_OPTIONAL\";\n path: (string | number)[];\n field: string;\n expectedType?: string; // e.g. \"String\"\n }\n | {\n kind: \"UNKNOWN_FIELD\";\n path: (string | number)[];\n field: string;\n didYouMean?: string; // e.g. \"test\"\n typeName?: string; // e.g. \"Test5StateInput\"\n }\n | {\n kind: \"NON_NULL\";\n path: (string | number)[];\n field: string;\n expectedType?: string; // e.g. \"Int!\"\n }\n | {\n kind: \"TYPE\";\n path: (string | number)[];\n field: string;\n expectedType?: string; // e.g. \"String\" (or custom scalar)\n details?: string; // optional raw hint (e.g. \"cannot represent ...\")\n }\n | {\n kind: \"RECURSIVE_TYPE\";\n path: (string | number)[];\n field: string;\n typeName: string; // e.g. \"Item\"\n };\n\nexport class StateValidationError extends Error {\n readonly payload: StateValidationErrorPayload;\n readonly originalMessage?: string;\n\n constructor(payload: StateValidationErrorPayload, originalMessage?: string) {\n // Keep Error.message stable but not user-facing; UI should render from payload.\n super(payload.kind);\n this.name = \"StateValidationError\";\n this.payload = payload;\n this.originalMessage = originalMessage;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n get kind(): StateValidationErrorKind {\n return this.payload.kind;\n }\n\n get path(): (string | number)[] {\n return this.payload.path;\n }\n\n get field(): string {\n return this.payload.field;\n }\n}\n\nfunction extractInputPath(message: string): (string | number)[] {\n const match = message.match(/at\\s+\"([^\"]+)\"/);\n if (!match) return [];\n const parts = match[1].split(\".\").filter(Boolean);\n const withoutVar = parts[0] === \"v\" ? parts.slice(1) : parts;\n return withoutVar.map((p) => (/^\\d+$/.test(p) ? Number(p) : p));\n}\n\nconst RE_MISSING_REQUIRED_FIELD =\n /Field \"([^\"]+)\" of required type \"([^\"]+)\" was not provided\\./;\n\nconst RE_UNKNOWN_FIELD =\n /Field \"([^\"]+)\" is not defined by type \"([^\"]+)\"\\.(?: Did you mean \"([^\"]+)\"\\?)?/;\n\nfunction extractMissingRequiredField(\n message: string,\n): { field: string; expectedType: string } | null {\n const m = message.match(RE_MISSING_REQUIRED_FIELD);\n if (!m) return null;\n return { field: m[1], expectedType: m[2] };\n}\n\nfunction extractUnknownField(\n message: string,\n): { field: string; typeName: string; didYouMean?: string } | null {\n const m = message.match(RE_UNKNOWN_FIELD);\n if (!m) return null;\n return { field: m[1], typeName: m[2], didYouMean: m[3] };\n}\n\nfunction lastFieldFromPath(path: (string | number)[]): string | undefined {\n for (let i = path.length - 1; i >= 0; i--) {\n if (typeof path[i] === \"string\") return path[i] as string;\n }\n return undefined;\n}\n\nfunction extractExpectedType(message: string): string | undefined {\n // NON_NULL: Expected non-nullable type \"Int!\" not to be null.\n let m = message.match(/Expected non-nullable type \"([^\"]+)\"/);\n if (m?.[1]) return m[1];\n\n // Sometimes: Expected type \"X\" ...\n m = message.match(/Expected type \"([^\"]+)\"/);\n if (m?.[1]) return m[1];\n\n // Scalar coercion: \"; String cannot represent ...\"\n m = message.match(/;\\s*([_A-Za-z][_0-9A-Za-z]*)\\s+cannot represent/i);\n if (m?.[1]) return m[1];\n\n return undefined;\n}\n\nexport function graphQLErrorsToStateValidationErrors(\n errors: readonly Error[],\n): StateValidationError[] {\n const out: StateValidationError[] = [];\n\n for (const e of errors) {\n const originalMessage = e.message;\n\n // 1) Missing required field (no `at \"v.x\"` path usually)\n const missing = extractMissingRequiredField(originalMessage);\n if (missing) {\n out.push(\n new StateValidationError(\n {\n kind: \"MISSING\",\n path: [missing.field],\n field: missing.field,\n expectedType: missing.expectedType, // if your payload supports it\n },\n originalMessage,\n ),\n );\n continue;\n }\n\n // 2) Unknown field (extra key)\n const unknown = extractUnknownField(originalMessage);\n if (unknown) {\n out.push(\n new StateValidationError(\n {\n kind: \"UNKNOWN_FIELD\",\n path: [unknown.field],\n field: unknown.field,\n didYouMean: unknown.didYouMean, // optional\n },\n originalMessage,\n ),\n );\n continue;\n }\n\n // 3) Usual `at \"v.path\"` extraction (NON_NULL / TYPE)\n const path = extractInputPath(originalMessage);\n const field = lastFieldFromPath(path) ?? \"value\";\n const expectedType = extractExpectedType(originalMessage);\n\n if (\n originalMessage.includes(\"Expected non-nullable type\") &&\n originalMessage.includes(\"not to be null\")\n ) {\n out.push(\n new StateValidationError(\n { kind: \"NON_NULL\", path, field, expectedType },\n originalMessage,\n ),\n );\n continue;\n }\n\n if (\n originalMessage.includes(\"cannot represent\") ||\n originalMessage.includes(\"Expected type\")\n ) {\n out.push(\n new StateValidationError(\n {\n kind: \"TYPE\",\n path,\n field,\n expectedType,\n details: originalMessage,\n },\n originalMessage,\n ),\n );\n continue;\n }\n\n out.push(\n new StateValidationError(\n { kind: \"TYPE\", path, field, details: originalMessage },\n originalMessage,\n ),\n );\n }\n\n return out;\n}\n\n/**\n * Information about a missing field in the state object.\n */\nexport type MissingFieldInfo = {\n fieldName: string;\n path: (string | number)[];\n isRequired: boolean;\n /** The underlying type (unwrapped from NonNull if applicable) */\n type: TypeNode;\n};\n\n/**\n * Finds all fields defined in the schema that are missing from the state object.\n * Returns information about each missing field including whether it's required.\n */\nexport function findMissingFields(\n sharedSchemaDocumentNode: DocumentNode,\n rootTypeNode: ObjectTypeDefinitionNode,\n value: string | Record<string, unknown>,\n basePath: (string | number)[] = [],\n): MissingFieldInfo[] {\n let stateObjectJson: Record<string, unknown> | undefined;\n try {\n stateObjectJson =\n typeof value === \"string\"\n ? (JSON.parse(value) as Record<string, unknown>)\n : value;\n } catch {\n return [];\n }\n\n const typeByName = indexObjectTypes(sharedSchemaDocumentNode);\n const missingFields: MissingFieldInfo[] = [];\n\n for (const field of rootTypeNode.fields ?? []) {\n const fieldName = field.name.value;\n const fieldPath = [...basePath, fieldName];\n const isRequired = field.type.kind === Kind.NON_NULL_TYPE;\n // Unwrap NonNull to get the underlying type\n const underlyingType = isRequired\n ? (field.type as NonNullTypeNode).type\n : field.type;\n\n // Check if field is missing from the state object\n if (!(fieldName in stateObjectJson)) {\n missingFields.push({\n fieldName,\n path: fieldPath,\n isRequired,\n type: underlyingType,\n });\n continue;\n }\n\n // If present and object-typed → recurse to check nested missing fields\n const namedType = unwrapNamedType(field.type);\n const childType = namedType ? typeByName.get(namedType) : undefined;\n\n if (\n childType &&\n typeof stateObjectJson[fieldName] === \"object\" &&\n stateObjectJson[fieldName] !== null &&\n !Array.isArray(stateObjectJson[fieldName])\n ) {\n const nestedMissing = findMissingFields(\n sharedSchemaDocumentNode,\n childType,\n stateObjectJson[fieldName] as Record<string, unknown>,\n fieldPath,\n );\n missingFields.push(...nestedMissing);\n }\n }\n\n return missingFields;\n}\n\n/**\n * Detects optional fields defined in the schema that are missing from the state object.\n * Returns StateValidationError[] for each missing optional field.\n */\nexport function detectMissingOptionalFields(\n sharedSchemaDocumentNode: DocumentNode,\n rootTypeNode: ObjectTypeDefinitionNode,\n value: string | Record<string, unknown>,\n): StateValidationError[] {\n const missingFields = findMissingFields(\n sharedSchemaDocumentNode,\n rootTypeNode,\n value,\n );\n\n // Only report optional (not required) fields as MISSING_OPTIONAL errors\n // Required fields are already caught by GraphQL validation\n return missingFields\n .filter((field) => !field.isRequired)\n .map(\n (field) =>\n new StateValidationError({\n kind: \"MISSING_OPTIONAL\",\n path: field.path,\n field: field.fieldName,\n expectedType: typeNodeToString(field.type),\n }),\n );\n}\n\n/**\n * Detects fields that have recursive types (types that reference themselves directly or indirectly).\n * Returns a RECURSIVE_TYPE error for each field that contains a recursive type.\n */\nfunction detectRecursiveTypes(\n stateTypeDefinitionNode: ObjectTypeDefinitionNode,\n typeDefByName: Map<string, DefinitionNode>,\n): StateValidationError[] {\n const errors: StateValidationError[] = [];\n\n for (const field of stateTypeDefinitionNode.fields ?? []) {\n const fieldName = field.name.value;\n const namedTypeName = getNamedTypeName(field.type);\n\n if (!namedTypeName) continue;\n\n // Check if this field's type is recursive\n if (isRecursiveType(namedTypeName, typeDefByName, new Set())) {\n errors.push(\n new StateValidationError({\n kind: \"RECURSIVE_TYPE\",\n path: [fieldName],\n field: fieldName,\n typeName: namedTypeName,\n }),\n );\n }\n }\n\n return errors;\n}\n\n/**\n * Gets the named type name from a TypeNode, unwrapping NonNull and List types.\n */\nfunction getNamedTypeName(typeNode: TypeNode): string | null {\n if (typeNode.kind === Kind.NAMED_TYPE) {\n return typeNode.name.value;\n }\n if (\n typeNode.kind === Kind.NON_NULL_TYPE ||\n typeNode.kind === Kind.LIST_TYPE\n ) {\n return getNamedTypeName(typeNode.type);\n }\n return null;\n}\n\n/**\n * Checks if a type is recursive (references itself directly or indirectly through required fields).\n */\nfunction isRecursiveType(\n typeName: string,\n typeDefByName: Map<string, DefinitionNode>,\n visitedTypes: Set<string>,\n): boolean {\n if (visitedTypes.has(typeName)) {\n return true;\n }\n\n const typeDef = typeDefByName.get(typeName);\n if (!typeDef || typeDef.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n return false;\n }\n\n visitedTypes.add(typeName);\n\n for (const field of typeDef.fields ?? []) {\n // Only check required fields for recursion (NonNull types)\n if (field.type.kind !== Kind.NON_NULL_TYPE) continue;\n\n const innerType = field.type.type;\n let fieldTypeName: string | null = null;\n\n if (innerType.kind === Kind.NAMED_TYPE) {\n fieldTypeName = innerType.name.value;\n } else if (innerType.kind === Kind.LIST_TYPE) {\n // For list types like [Item!]!, get the inner type\n fieldTypeName = getNamedTypeName(innerType);\n }\n\n if (\n fieldTypeName &&\n isRecursiveType(fieldTypeName, typeDefByName, visitedTypes)\n ) {\n return true;\n }\n }\n\n visitedTypes.delete(typeName);\n return false;\n}\n\n/**\n * Converts a TypeNode to its string representation (e.g., \"String\", \"Int!\", \"[String]!\")\n */\nfunction typeNodeToString(typeNode: TypeNode): string {\n switch (typeNode.kind) {\n case Kind.NAMED_TYPE:\n return typeNode.name.value;\n case Kind.NON_NULL_TYPE:\n return `${typeNodeToString(typeNode.type)}!`;\n case Kind.LIST_TYPE:\n return `[${typeNodeToString(typeNode.type)}]`;\n }\n}\n\nfunction indexObjectTypes(\n doc: DocumentNode,\n): Map<string, ObjectTypeDefinitionNode> {\n const map = new Map<string, ObjectTypeDefinitionNode>();\n for (const def of doc.definitions) {\n if (def.kind === Kind.OBJECT_TYPE_DEFINITION) {\n map.set(def.name.value, def);\n }\n }\n return map;\n}\n\nfunction unwrapNamedType(typeNode: TypeNode): string | undefined {\n if (typeNode.kind === Kind.NAMED_TYPE) return typeNode.name.value;\n if (typeNode.kind === Kind.NON_NULL_TYPE)\n return unwrapNamedType(typeNode.type);\n if (typeNode.kind === Kind.LIST_TYPE) return unwrapNamedType(typeNode.type);\n return undefined;\n}\n","import type { Diagnostic } from \"@codemirror/lint\";\nimport { pascalCase, sentenceCase } from \"change-case\";\nimport { Kind } from \"graphql\";\nimport { safeParseSdl } from \"../context/schema-context.js\";\nimport { makeStateSchemaNameForScope } from \"./helpers.js\";\n\nexport function ensureDocumentContainsNodeWithNameAndType(\n doc: string,\n nodeName: string,\n nodeType: keyof typeof Kind,\n): boolean {\n const parsedDoc = safeParseSdl(doc);\n\n if (!parsedDoc) return true;\n\n return parsedDoc.definitions.some((def) => {\n const hasMatchingType = def.kind === Kind[nodeType];\n\n return hasMatchingType && \"name\" in def && def.name?.value === nodeName;\n });\n}\n\nexport function createNodeTypeAndNameDiagnostic(\n doc: string,\n errorMessage: string,\n): Diagnostic | undefined {\n const parsedDoc = safeParseSdl(doc);\n if (!parsedDoc) return undefined;\n\n const firstNode = parsedDoc.definitions[0];\n\n const nameNode = \"name\" in firstNode ? firstNode.name : null;\n\n return {\n from: nameNode?.loc?.start ?? firstNode.loc?.start ?? 0,\n to: nameNode?.loc?.end ?? firstNode.loc?.end ?? 0,\n severity: \"error\",\n message: errorMessage,\n };\n}\n\nexport function ensureValidStateSchemaName(\n doc: string,\n modelName: string,\n scope: string,\n) {\n if (!safeParseSdl(doc)) return [];\n const requiredTypeName = makeStateSchemaNameForScope(modelName, scope);\n if (\n !ensureDocumentContainsNodeWithNameAndType(\n doc,\n requiredTypeName,\n \"OBJECT_TYPE_DEFINITION\",\n )\n ) {\n return [\n createNodeTypeAndNameDiagnostic(\n doc,\n `${sentenceCase(scope)} state schema must be named ${requiredTypeName}`,\n ),\n ].filter((d) => d !== undefined);\n }\n\n return [];\n}\n\nexport function ensureValidOperationSchemaInputName(\n doc: string | undefined,\n operationName: string,\n) {\n if (!doc || !safeParseSdl(doc)) return [];\n\n const requiredTypeName = `${pascalCase(operationName)}Input`;\n if (\n !ensureDocumentContainsNodeWithNameAndType(\n doc,\n requiredTypeName,\n \"INPUT_OBJECT_TYPE_DEFINITION\",\n )\n ) {\n return [\n createNodeTypeAndNameDiagnostic(\n doc,\n `Operation schema must contain an input type named ${requiredTypeName}`,\n ),\n ].filter((d) => d !== undefined);\n }\n\n return [];\n}\n","import type { ComponentPropsWithRef } from \"react\";\nimport { forwardRef } from \"react\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype Props = ComponentPropsWithRef<\"button\">;\n\nexport const Button = forwardRef<HTMLButtonElement, Props>((props, ref) => {\n const { className, ...rest } = props;\n return (\n <button\n ref={ref}\n {...rest}\n className={twMerge(\n \"h-10 rounded-md border border-border bg-background px-4 py-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 disabled:disabled-effect\",\n className,\n )}\n />\n );\n});\n"],"x_google_ignoreList":[0],"mappings":"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"}