camox 0.44.0 → 0.46.0

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 (407) hide show
  1. package/dist/components/AuthGate.js +0 -6
  2. package/dist/components/DeviceSelector.js +96 -0
  3. package/dist/components/PlatformLabel.js +20 -24
  4. package/dist/core/components/lexical/HighlightNode.js +1 -1
  5. package/dist/core/components/lexical/InlineContentEditable.js +15 -19
  6. package/dist/core/components/lexical/InlineLexicalEditor.js +54 -74
  7. package/dist/core/components/lexical/InlineStylesPlugin.js +53 -53
  8. package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
  9. package/dist/core/components/lexical/SelectionBroadcaster.js +53 -54
  10. package/dist/core/components/lexical/SidebarLexicalEditor.js +322 -229
  11. package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
  12. package/dist/core/components/lexical/TextLinkPopover.js +169 -180
  13. package/dist/core/createApp.d.ts +241 -312
  14. package/dist/core/createApp.js +123 -29
  15. package/dist/core/createBlock.d.ts +5 -5
  16. package/dist/core/createBlock.js +385 -152
  17. package/dist/core/createCollection.d.ts +55 -0
  18. package/dist/core/createCollection.js +93 -0
  19. package/dist/core/createLayout.d.ts +197 -61
  20. package/dist/core/createLayout.js +114 -56
  21. package/dist/core/defineDocument.d.ts +3 -5
  22. package/dist/core/derivedRoutes.js +49 -1
  23. package/dist/core/dom.d.ts +13 -4
  24. package/dist/core/dom.js +44 -1
  25. package/dist/core/editing/BlockEditingRuntime.d.ts +16 -0
  26. package/dist/core/editing/BlockEditingRuntime.js +6 -15
  27. package/dist/core/editing/CompleteBlockEditingRuntime.js +28 -23
  28. package/dist/core/editing/createEditableBlock.d.ts +754 -633
  29. package/dist/core/editing/createEditableBlock.js +2113 -1066
  30. package/dist/core/editing/referenceWrites.js +51 -0
  31. package/dist/core/editing/useLatestRecord.js +90 -0
  32. package/dist/core/hooks/useArtifactHost.js +139 -0
  33. package/dist/core/hooks/useFieldSelection.js +43 -18
  34. package/dist/core/hooks/useIsEditable.js +12 -10
  35. package/dist/core/hooks/useOverlayMessage.js +15 -19
  36. package/dist/core/lib/artifact.d.ts +21 -0
  37. package/dist/core/lib/artifact.js +154 -0
  38. package/dist/core/lib/artifactColors.js +123 -0
  39. package/dist/core/lib/artifactData.d.ts +1 -0
  40. package/dist/core/lib/artifactData.js +131 -0
  41. package/dist/core/lib/artifactHost.js +205 -0
  42. package/dist/core/lib/artifactRuntime.js +36 -0
  43. package/dist/core/lib/artifactTheme.js +57 -0
  44. package/dist/core/lib/contentType.d.ts +302 -106
  45. package/dist/core/lib/contentType.js +201 -173
  46. package/dist/core/lib/fieldTypes.js +3 -0
  47. package/dist/core/lib/iconTypes.d.ts +3 -3
  48. package/dist/core/lib/icons.d.ts +4 -4
  49. package/dist/core/lib/icons.js +40 -44
  50. package/dist/core/lib/imagePlaceholder.js +177 -0
  51. package/dist/core/lib/imageTransform.js +1 -1
  52. package/dist/core/lib/lexicalReact.d.ts +3 -1
  53. package/dist/core/lib/lexicalState.js +1 -1
  54. package/dist/core/lib/previewPaused.js +9 -0
  55. package/dist/core/lib/recordScope.js +316 -0
  56. package/dist/core/lib/reference.d.ts +81 -0
  57. package/dist/core/lib/reference.js +29 -0
  58. package/dist/core/lib/textLinks.js +7 -5
  59. package/dist/core/lib/textStyles.d.ts +5 -7
  60. package/dist/core/lib/textStyles.js +2 -2
  61. package/dist/core/notFound.d.ts +7 -0
  62. package/dist/core/notFound.js +11 -0
  63. package/dist/core/pageDestinations.js +6 -3
  64. package/dist/core/recordItem.js +34 -0
  65. package/dist/core/requestContext.d.ts +26 -0
  66. package/dist/core/requestContext.js +20 -0
  67. package/dist/features/canvas/CamoxCanvas.js +1401 -0
  68. package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
  69. package/dist/features/canvas/CanvasOverlays.js +254 -0
  70. package/dist/features/canvas/CanvasPageEdge.js +87 -0
  71. package/dist/features/canvas/CanvasPageFrame.js +333 -0
  72. package/dist/features/canvas/CanvasPageHeader.js +125 -0
  73. package/dist/features/canvas/CanvasPreviewPageSlot.js +123 -0
  74. package/dist/features/canvas/DerivedPagePathInput.js +238 -0
  75. package/dist/features/canvas/canvasCamera.js +229 -0
  76. package/dist/features/canvas/canvasFlight.js +104 -0
  77. package/dist/features/canvas/canvasFrameCapture.js +364 -0
  78. package/dist/features/canvas/canvasFrameDocument.js +302 -0
  79. package/dist/features/canvas/canvasFrameMode.js +53 -0
  80. package/dist/features/canvas/canvasInsertionSeams.js +44 -0
  81. package/dist/features/canvas/canvasItems.js +30 -0
  82. package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
  83. package/dist/features/canvas/canvasPages.js +79 -0
  84. package/dist/features/canvas/canvasScreenSpace.js +26 -0
  85. package/dist/features/canvas/canvasSelection.js +18 -0
  86. package/dist/features/canvas/canvasStore.js +60 -0
  87. package/dist/features/canvas/canvasThumbnails.js +304 -0
  88. package/dist/features/canvas/canvasZoom.js +10 -0
  89. package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
  90. package/dist/features/canvas/sidebar/CanvasNavigator.js +124 -0
  91. package/dist/features/canvas/sidebar/CanvasSidebar.js +54 -0
  92. package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
  93. package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
  94. package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
  95. package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
  96. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
  97. package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
  98. package/dist/features/canvas/sidebar/PageInspector.js +157 -0
  99. package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
  100. package/dist/features/canvas/sidebar/PageOverview.js +27 -0
  101. package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
  102. package/dist/features/canvas/useCanvasCamera.js +783 -0
  103. package/dist/features/canvas/useCanvasFrame.js +148 -0
  104. package/dist/features/canvas/useCanvasFrameInput.js +97 -0
  105. package/dist/features/canvas/useCanvasNearness.js +57 -0
  106. package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
  107. package/dist/features/content/CamoxContent.d.ts +2 -5
  108. package/dist/features/content/CamoxContent.js +174 -271
  109. package/dist/features/content/CollectionItemSheetContext.js +106 -0
  110. package/dist/features/content/ContentAssets.js +315 -0
  111. package/dist/features/content/ContentCollection.js +663 -0
  112. package/dist/features/content/collection-form.js +58 -0
  113. package/dist/features/content/components/AssetCard.js +80 -84
  114. package/dist/features/content/components/AssetCardSkeleton.js +4 -8
  115. package/dist/features/content/components/ContentSidebar.js +129 -18
  116. package/dist/features/content/components/ContentSidebarGroup.js +37 -0
  117. package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
  118. package/dist/features/content/components/MissingFromLocale.js +282 -0
  119. package/dist/features/content/components/UploadDropZone.js +27 -31
  120. package/dist/features/content/components/UploadProgressDrawer.js +90 -98
  121. package/dist/features/navigation/navigation.d.ts +66 -20
  122. package/dist/features/navigation/navigation.js +257 -90
  123. package/dist/features/og/defaultFonts.js +8 -8
  124. package/dist/features/og/geist-variable-ttf-base64.js +1 -1
  125. package/dist/features/og/imageResponse.d.ts +8 -0
  126. package/dist/features/og/imageResponse.js +26 -0
  127. package/dist/features/page/CuratedPageContent.js +167 -0
  128. package/dist/features/page/DerivedPageContent.js +26 -30
  129. package/dist/features/page/SharedLayoutContent.js +25 -27
  130. package/dist/features/preview/CamoxPreview.d.ts +23 -61
  131. package/dist/features/preview/CamoxPreview.js +816 -537
  132. package/dist/features/preview/EditablePageContent.js +1 -1
  133. package/dist/features/preview/EditablePageExperience.js +16 -22
  134. package/dist/features/preview/components/AddBlockSheet.js +273 -0
  135. package/dist/features/preview/components/AssetFieldEditor.js +173 -154
  136. package/dist/features/preview/components/AssetLightbox.js +181 -134
  137. package/dist/features/preview/components/AssetPickerModal.js +153 -170
  138. package/dist/features/preview/components/BlockActionsPopover.js +150 -149
  139. package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
  140. package/dist/features/preview/components/BlockThumbnail.js +172 -98
  141. package/dist/features/preview/components/CanvasPreview.js +243 -0
  142. package/dist/features/preview/components/CreatePageModal.js +128 -137
  143. package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
  144. package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
  145. package/dist/features/preview/components/DrillRow.js +150 -0
  146. package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
  147. package/dist/features/preview/components/FieldToolbar.js +160 -110
  148. package/dist/features/preview/components/Frame.js +108 -20
  149. package/dist/features/preview/components/IconFieldEditor.js +62 -66
  150. package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
  151. package/dist/features/preview/components/LinkFieldEditor.js +135 -139
  152. package/dist/features/preview/components/Metadata.js +22 -30
  153. package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
  154. package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
  155. package/dist/features/preview/components/OverlayTracker.js +9 -41
  156. package/dist/features/preview/components/Overlays.js +81 -69
  157. package/dist/features/preview/components/PageInfo.js +1748 -0
  158. package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
  159. package/dist/features/preview/components/PageLocationFieldset.js +112 -116
  160. package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
  161. package/dist/features/preview/components/PageNicknameField.js +22 -26
  162. package/dist/features/preview/components/PagePicker.js +128 -130
  163. package/dist/features/preview/components/PageTree.js +525 -532
  164. package/dist/features/preview/components/PreviewActivation.js +28 -32
  165. package/dist/features/preview/components/PreviewPanel.js +620 -319
  166. package/dist/features/preview/components/PreviewToolbar.js +105 -333
  167. package/dist/features/preview/components/RecordCard.js +80 -0
  168. package/dist/features/preview/components/RecordCombobox.js +178 -0
  169. package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
  170. package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
  171. package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
  172. package/dist/features/preview/components/RepeatableItemsList.js +125 -138
  173. package/dist/features/preview/components/SelectionEditor.js +993 -0
  174. package/dist/features/preview/components/ShikiMarkdown.js +14 -18
  175. package/dist/features/preview/components/SidebarSection.js +52 -64
  176. package/dist/features/preview/components/StudioEditingFallback.js +56 -0
  177. package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
  178. package/dist/features/preview/components/blockGridNavigation.js +15 -0
  179. package/dist/features/preview/components/contentFieldSchema.js +8 -0
  180. package/dist/features/preview/components/useFieldWriter.js +200 -0
  181. package/dist/features/preview/components/useRecordView.js +383 -0
  182. package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
  183. package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
  184. package/dist/features/preview/editingFrame.js +197 -0
  185. package/dist/features/preview/overlayHighlights.js +17 -44
  186. package/dist/features/preview/overlayMessages.js +72 -1
  187. package/dist/features/preview/pageRecord.js +189 -0
  188. package/dist/features/preview/previewConstants.js +6 -2
  189. package/dist/features/preview/previewPageFrame.js +95 -0
  190. package/dist/features/preview/previewPreparation.js +7 -0
  191. package/dist/features/preview/previewSelection.js +32 -63
  192. package/dist/features/preview/previewStore.js +225 -123
  193. package/dist/features/preview/referencePickerFocus.js +29 -0
  194. package/dist/features/preview/repeatableItemTargets.js +56 -0
  195. package/dist/features/preview/selectionReveal.js +21 -0
  196. package/dist/features/preview/usePreviewViewportActions.js +114 -0
  197. package/dist/features/preview/viewportContinuity.js +109 -0
  198. package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
  199. package/dist/features/provider/CamoxProvider.d.ts +3 -6
  200. package/dist/features/provider/CamoxProvider.js +38 -50
  201. package/dist/features/provider/CoreCamoxProvider.js +69 -50
  202. package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
  203. package/dist/features/provider/PreviewSignInPage.js +54 -0
  204. package/dist/features/provider/components/CamoxAppContext.js +11 -11
  205. package/dist/features/provider/components/CommandPalette.js +75 -82
  206. package/dist/features/provider/useAdminShortcuts.js +7 -11
  207. package/dist/features/routes/pageRuntime.d.ts +44 -4
  208. package/dist/features/routes/pageRuntime.js +244 -137
  209. package/dist/features/runtime/RuntimeChrome.js +117 -115
  210. package/dist/features/runtime/alternates.js +64 -0
  211. package/dist/features/runtime/analytics.d.ts +7 -0
  212. package/dist/features/runtime/analytics.js +66 -0
  213. package/dist/features/runtime/artifactSources.js +87 -0
  214. package/dist/features/runtime/editingFallback.js +20 -0
  215. package/dist/features/runtime/linkPrefetch.js +97 -0
  216. package/dist/features/runtime/livePages.js +62 -0
  217. package/dist/features/runtime/llmsTxt.js +40 -0
  218. package/dist/features/runtime/loopbackFetch.js +18 -0
  219. package/dist/features/runtime/navigationAccessibility.js +51 -0
  220. package/dist/features/runtime/navigationTarget.js +23 -2
  221. package/dist/features/runtime/pageApp.js +229 -158
  222. package/dist/features/runtime/pageBlockTypes.js +20 -0
  223. package/dist/features/runtime/pageClient.d.ts +2 -4
  224. package/dist/features/runtime/pageClient.js +18 -3
  225. package/dist/features/runtime/pageNavigation.js +254 -32
  226. package/dist/features/runtime/pageServer.d.ts +2 -4
  227. package/dist/features/runtime/pageServer.js +6 -2
  228. package/dist/features/runtime/pageViewport.js +7 -0
  229. package/dist/features/runtime/runtime.d.ts +54 -24
  230. package/dist/features/runtime/runtime.js +766 -191
  231. package/dist/features/runtime/runtimeChromeLoader.js +58 -0
  232. package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
  233. package/dist/features/runtime/runtimeRoutes.js +25 -0
  234. package/dist/features/runtime/scrollRestoration.js +133 -0
  235. package/dist/features/runtime/studioApp.d.ts +4 -3
  236. package/dist/features/runtime/studioApp.js +5 -9
  237. package/dist/features/runtime/studioClient.d.ts +2 -4
  238. package/dist/features/runtime/studioClient.js +12 -3
  239. package/dist/features/runtime/studioServer.d.ts +2 -4
  240. package/dist/features/runtime/studioServer.js +6 -1
  241. package/dist/features/runtime/worker.d.ts +6 -0
  242. package/dist/features/runtime/worker.js +23 -0
  243. package/dist/features/runtime/workerRequest.js +44 -0
  244. package/dist/features/studio/CamoxStudio.d.ts +2 -6
  245. package/dist/features/studio/CamoxStudio.js +34 -49
  246. package/dist/features/studio/FollowAgentProvider.js +327 -0
  247. package/dist/features/studio/components/ChatSidebar.js +356 -0
  248. package/dist/features/studio/components/DraftsControl.js +676 -0
  249. package/dist/features/studio/components/FaviconDialog.js +318 -0
  250. package/dist/features/studio/components/LocalePicker.js +785 -0
  251. package/dist/features/studio/components/Navbar.js +123 -103
  252. package/dist/features/studio/components/ProjectMenu.js +239 -260
  253. package/dist/features/studio/components/RenameDraftDialog.js +206 -0
  254. package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
  255. package/dist/features/studio/components/ThreadComposer.js +157 -0
  256. package/dist/features/studio/components/ThreadMarkdown.js +113 -0
  257. package/dist/features/studio/components/ThreadMessages.js +270 -0
  258. package/dist/features/studio/components/UserButton.js +34 -23
  259. package/dist/features/studio/draftLabel.js +33 -0
  260. package/dist/features/studio/draftNotice.js +13 -0
  261. package/dist/features/studio/followAgent.js +241 -0
  262. package/dist/features/studio/followAgentContext.js +7 -0
  263. package/dist/features/studio/localeOptions.js +118 -0
  264. package/dist/features/studio/localeSwitch.js +19 -0
  265. package/dist/features/studio/routes.js +26 -1
  266. package/dist/features/studio/studioStore.js +64 -1
  267. package/dist/features/studio/useTheme.js +24 -27
  268. package/dist/features/vite/artifactRuntimeMinification.js +36 -0
  269. package/dist/features/vite/blockBoilerplate.js +6 -5
  270. package/dist/features/vite/blockChunks.js +31 -0
  271. package/dist/features/vite/bundlerLogs.js +17 -0
  272. package/dist/features/vite/definitionsSync.js +158 -226
  273. package/dist/features/vite/devAuthentication.js +4 -16
  274. package/dist/features/vite/devSignIn.js +87 -0
  275. package/dist/features/vite/iconGeneration.js +1 -1
  276. package/dist/features/vite/layoutGeneration.js +11 -1
  277. package/dist/features/vite/publishSeededContent.js +30 -0
  278. package/dist/features/vite/routeGeneration.js +6 -7
  279. package/dist/features/vite/runtimeDev.js +80 -99
  280. package/dist/features/vite/vite.d.ts +51 -31
  281. package/dist/features/vite/vite.js +224 -127
  282. package/dist/features/vite/workerBuild.js +39 -0
  283. package/dist/hooks/use-debounced-field.js +116 -47
  284. package/dist/hooks/use-file-upload.js +114 -67
  285. package/dist/hooks/use-marquee-selection.js +32 -36
  286. package/dist/hooks/use-page-destinations.js +69 -37
  287. package/dist/lib/api-client-server.d.ts +5 -0
  288. package/dist/lib/api-client-server.js +10 -4
  289. package/dist/lib/api-client.d.ts +6 -0
  290. package/dist/lib/api-client.js +51 -16
  291. package/dist/lib/api-socket.js +17 -0
  292. package/dist/lib/auth-page-styles.js +39 -0
  293. package/dist/lib/auth.js +129 -61
  294. package/dist/lib/collection-cache.js +23 -0
  295. package/dist/lib/draft-scope.d.ts +4 -0
  296. package/dist/lib/draft-scope.js +222 -0
  297. package/dist/lib/html.js +12 -0
  298. package/dist/lib/link-pages.js +154 -0
  299. package/dist/lib/locale-path.d.ts +22 -0
  300. package/dist/lib/locale-path.js +57 -0
  301. package/dist/lib/normalized-data.js +252 -152
  302. package/dist/lib/preview-handoff.js +2 -2
  303. package/dist/lib/queries.d.ts +11 -0
  304. package/dist/lib/queries.js +70 -141
  305. package/dist/lib/studio-reads.d.ts +14 -0
  306. package/dist/lib/studio-reads.js +554 -0
  307. package/dist/lib/use-project-room.js +50 -50
  308. package/dist/lib/use-thread.js +310 -0
  309. package/dist/lib/utils.js +25 -29
  310. package/dist/lib/view-locale-context.js +22 -0
  311. package/dist/lib/view-locale.js +46 -0
  312. package/dist/package.js +5 -0
  313. package/dist/studio-overlays.css +41 -151
  314. package/dist/studio.css +2 -2
  315. package/package.json +70 -73
  316. package/skills/camox/SKILL.md +16 -11
  317. package/skills/camox/references/artifacts.md +179 -0
  318. package/skills/camox/references/block-definitions.md +75 -59
  319. package/skills/camox/references/cli-common.md +9 -11
  320. package/skills/camox/references/cli-content.md +92 -69
  321. package/skills/camox/references/cli-publishing.md +26 -0
  322. package/skills/camox/references/dom-integrations.md +27 -0
  323. package/skills/camox/references/field-styling.md +4 -4
  324. package/skills/camox/references/layout-definitions.md +16 -14
  325. package/skills/camox/references/localization.md +56 -0
  326. package/skills/camox/references/routed-layouts.md +133 -15
  327. package/skills/camox-expand/SKILL.md +70 -0
  328. package/skills/camox-expand/references/jobs.md +39 -0
  329. package/skills/camoxify/SKILL.md +29 -7
  330. package/dist/core/components/AddBlockControlBar.js +0 -78
  331. package/dist/core/hooks/useRequireDraftSource.js +0 -23
  332. package/dist/features/metadata/sitemap.d.ts +0 -8
  333. package/dist/features/metadata/sitemap.js +0 -17
  334. package/dist/features/og/imageResponse.node.d.ts +0 -12
  335. package/dist/features/og/imageResponse.node.js +0 -49
  336. package/dist/features/og/imageResponse.workerd.d.ts +0 -12
  337. package/dist/features/og/imageResponse.workerd.js +0 -40
  338. package/dist/features/page/PublishedPageContent.js +0 -205
  339. package/dist/features/page/PublishedPageExperience.js +0 -23
  340. package/dist/features/preview/DerivedPreview.js +0 -134
  341. package/dist/features/preview/commentsEnabled.js +0 -8
  342. package/dist/features/preview/components/AddBlockSidebar.js +0 -381
  343. package/dist/features/preview/components/AttachedComments.js +0 -331
  344. package/dist/features/preview/components/CommentHeader.js +0 -122
  345. package/dist/features/preview/components/CommentSidebar.js +0 -29
  346. package/dist/features/preview/components/CommentTargetQuote.js +0 -167
  347. package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
  348. package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
  349. package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
  350. package/dist/features/preview/components/LeftSidebar.js +0 -68
  351. package/dist/features/preview/components/PageEditorSidebar.js +0 -563
  352. package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
  353. package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
  354. package/dist/features/preview/components/PageStatusBadge.js +0 -97
  355. package/dist/features/preview/components/PeekedBlock.js +0 -217
  356. package/dist/features/preview/components/PreviewComments.js +0 -56
  357. package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
  358. package/dist/features/preview/components/PublicationRow.js +0 -422
  359. package/dist/features/preview/components/PublishDialog.js +0 -194
  360. package/dist/features/preview/components/RightSidebar.js +0 -59
  361. package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
  362. package/dist/features/preview/previewCommentsStore.js +0 -135
  363. package/dist/features/preview/publication.js +0 -81
  364. package/dist/features/preview/usePageComments.js +0 -39
  365. package/dist/features/runtime/SharedChromeContext.js +0 -7
  366. package/dist/features/studio/components/EnvironmentMenu.js +0 -425
  367. package/dist/features/vite/appGeneration.js +0 -89
  368. package/dist/lib/view-queries.js +0 -28
  369. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
  370. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
  371. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
  372. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
  373. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
  374. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
  375. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
  376. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
  377. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
  378. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
  379. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
  380. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
  381. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
  382. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/new-process-route-tree.d.ts +0 -115
  383. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
  384. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
  385. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
  386. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
  387. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
  388. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
  389. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
  390. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
  391. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
  392. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
  393. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.d.ts +0 -38
  394. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.d.ts +0 -1
  395. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.d.ts +0 -65
  396. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
  397. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
  398. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
  399. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
  400. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
  401. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
  402. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
  403. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
  404. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
  405. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
  406. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
  407. package/skills/camox/references/cli-environments.md +0 -37
@@ -1,62 +1,147 @@
1
- import { viewBlockQueries } from "./view-queries.js";
1
+ import { reads, useReadQueries } from "./studio-reads.js";
2
2
  import { c } from "react/compiler-runtime";
3
- import { useQueries } from "@tanstack/react-query";
4
3
  import * as React from "react";
5
- import { queryKeys } from "@camox/api-contract/query-keys";
6
4
 
7
5
  //#region src/lib/normalized-data.ts
6
+ const EMPTY_REFERENCE_BLOCKS = [];
7
+ /** Every record a block's references and reference lists resolve to. */
8
+ function referencedRecords(references) {
9
+ return Object.values(references ?? {}).flatMap((value) => value ?? []);
10
+ }
11
+ /** The records references resolve to, and the records those link in turn (both hops). */
12
+ function linkedRecords(references) {
13
+ return referencedRecords(references).flatMap((record) => [record, ...referencedRecords(record.references)]);
14
+ }
15
+ /** A single reference field's record; reference lists never resolve to one record. */
16
+ function singleReference(references, fieldName) {
17
+ const value = references?.[fieldName];
18
+ return value && !Array.isArray(value) ? value : null;
19
+ }
20
+ /** A reference list field's records, in list order; single references resolve to none. */
21
+ function referenceList(references, fieldName) {
22
+ const value = references?.[fieldName];
23
+ return Array.isArray(value) ? value : [];
24
+ }
25
+ /** The records a reference or reference list field places, in order. */
26
+ function placedRecords(references, fieldName) {
27
+ return [references?.[fieldName] ?? []].flat();
28
+ }
8
29
  const NormalizedDataContext = React.createContext({
9
30
  filesMap: /* @__PURE__ */ new Map(),
10
- itemsMap: /* @__PURE__ */ new Map()
31
+ itemsMap: /* @__PURE__ */ new Map(),
32
+ recordsMap: /* @__PURE__ */ new Map(),
33
+ blockReferences: /* @__PURE__ */ new Map()
11
34
  });
35
+ /**
36
+ * The record ids a query-backed list resolved to on the server, in order. The block or item
37
+ * stores no value for it: its owner's resolved references carry the results.
38
+ */
39
+ function queryResultIds(data, owner, fieldName) {
40
+ return referenceList(owner.itemId == null ? data.blockReferences.get(owner.blockId) : data.itemsMap.get(owner.itemId)?.references, fieldName).map((record) => record.id);
41
+ }
12
42
  const NormalizedDataProvider = (t0) => {
13
- const $ = c(13);
14
- if ($[0] !== "28aab7b25bd21e351d34503ab3d745344dc158d8c4a4ad7a8c63e2c8732703bb") {
15
- for (let $i = 0; $i < 13; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
16
- $[0] = "28aab7b25bd21e351d34503ab3d745344dc158d8c4a4ad7a8c63e2c8732703bb";
17
- }
18
- const { files, repeatableItems, children } = t0;
19
- let t1;
20
- if ($[1] !== files) {
21
- t1 = new Map(files.map(_temp));
22
- $[1] = files;
23
- $[2] = t1;
24
- } else t1 = $[2];
43
+ const $ = c(19);
44
+ const { files, repeatableItems, blocks: t1, children } = t0;
45
+ const blocks = t1 === void 0 ? EMPTY_REFERENCE_BLOCKS : t1;
25
46
  let t2;
26
- if ($[3] !== repeatableItems) {
27
- t2 = new Map(repeatableItems.map(_temp2));
28
- $[3] = repeatableItems;
29
- $[4] = t2;
30
- } else t2 = $[4];
47
+ if ($[0] !== files) {
48
+ t2 = new Map(files.map(_temp));
49
+ $[0] = files;
50
+ $[1] = t2;
51
+ } else t2 = $[1];
31
52
  let t3;
32
- if ($[5] !== t1 || $[6] !== t2) {
33
- t3 = {
34
- filesMap: t1,
35
- itemsMap: t2
36
- };
37
- $[5] = t1;
38
- $[6] = t2;
39
- $[7] = t3;
40
- } else t3 = $[7];
41
- const value = t3;
53
+ if ($[2] !== repeatableItems) {
54
+ t3 = new Map(repeatableItems.map(_temp2));
55
+ $[2] = repeatableItems;
56
+ $[3] = t3;
57
+ } else t3 = $[3];
42
58
  let t4;
43
- if ($[8] !== children || $[9] !== value) {
44
- let t5;
45
- if ($[11] !== value) {
46
- t5 = { value };
47
- $[11] = value;
48
- $[12] = t5;
49
- } else t5 = $[12];
50
- t4 = React.createElement(NormalizedDataContext.Provider, t5, children);
51
- $[8] = children;
52
- $[9] = value;
53
- $[10] = t4;
54
- } else t4 = $[10];
55
- return t4;
59
+ if ($[4] !== blocks || $[5] !== repeatableItems) {
60
+ t4 = new Map([...blocks, ...repeatableItems].flatMap(_temp4));
61
+ $[4] = blocks;
62
+ $[5] = repeatableItems;
63
+ $[6] = t4;
64
+ } else t4 = $[6];
65
+ let t5;
66
+ if ($[7] !== blocks) {
67
+ t5 = new Map(blocks.flatMap(_temp5));
68
+ $[7] = blocks;
69
+ $[8] = t5;
70
+ } else t5 = $[8];
71
+ let t6;
72
+ if ($[9] !== t2 || $[10] !== t3 || $[11] !== t4 || $[12] !== t5) {
73
+ t6 = {
74
+ filesMap: t2,
75
+ itemsMap: t3,
76
+ recordsMap: t4,
77
+ blockReferences: t5
78
+ };
79
+ $[9] = t2;
80
+ $[10] = t3;
81
+ $[11] = t4;
82
+ $[12] = t5;
83
+ $[13] = t6;
84
+ } else t6 = $[13];
85
+ const value = t6;
86
+ let t7;
87
+ if ($[14] !== children || $[15] !== value) {
88
+ let t8;
89
+ if ($[17] !== value) {
90
+ t8 = { value };
91
+ $[17] = value;
92
+ $[18] = t8;
93
+ } else t8 = $[18];
94
+ t7 = React.createElement(NormalizedDataContext.Provider, t8, children);
95
+ $[14] = children;
96
+ $[15] = value;
97
+ $[16] = t7;
98
+ } else t7 = $[16];
99
+ return t7;
56
100
  };
57
101
  function useNormalizedData() {
58
102
  return React.use(NormalizedDataContext);
59
103
  }
104
+ /**
105
+ * Adds the records a record page's record links to the records its fields resolve
106
+ * references from. A record page places its record through no block, so no block carries them.
107
+ */
108
+ const LinkedRecordsProvider = (t0) => {
109
+ const $ = c(11);
110
+ const { references, children } = t0;
111
+ const outer = React.use(NormalizedDataContext);
112
+ let t1;
113
+ if ($[0] !== outer.recordsMap || $[1] !== references) {
114
+ t1 = new Map([...outer.recordsMap, ...linkedRecords(references).map(_temp6)]);
115
+ $[0] = outer.recordsMap;
116
+ $[1] = references;
117
+ $[2] = t1;
118
+ } else t1 = $[2];
119
+ let t2;
120
+ if ($[3] !== outer || $[4] !== t1) {
121
+ t2 = {
122
+ ...outer,
123
+ recordsMap: t1
124
+ };
125
+ $[3] = outer;
126
+ $[4] = t1;
127
+ $[5] = t2;
128
+ } else t2 = $[5];
129
+ const value = t2;
130
+ let t3;
131
+ if ($[6] !== children || $[7] !== value) {
132
+ let t4;
133
+ if ($[9] !== value) {
134
+ t4 = { value };
135
+ $[9] = value;
136
+ $[10] = t4;
137
+ } else t4 = $[10];
138
+ t3 = React.createElement(NormalizedDataContext.Provider, t4, children);
139
+ $[6] = children;
140
+ $[7] = value;
141
+ $[8] = t3;
142
+ } else t3 = $[8];
143
+ return t3;
144
+ };
60
145
  const EMPTY_IDS = [];
61
146
  /**
62
147
  * Returns the previously-returned array when `next` is element-wise identical to
@@ -67,131 +152,130 @@ const EMPTY_IDS = [];
67
152
  * React Compiler, since its memoization keys on input identity.
68
153
  */
69
154
  function useStableArray(next) {
70
- const ref = React.useRef(next);
71
- const prev = ref.current;
72
- if (prev !== next && (prev.length !== next.length || prev.some((v, i) => v !== next[i]))) ref.current = next;
73
- return ref.current;
74
- }
75
- function usePageBlocks(pageStructure, t0) {
76
- const $ = c(37);
77
- if ($[0] !== "28aab7b25bd21e351d34503ab3d745344dc158d8c4a4ad7a8c63e2c8732703bb") {
78
- for (let $i = 0; $i < 37; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
79
- $[0] = "28aab7b25bd21e351d34503ab3d745344dc158d8c4a4ad7a8c63e2c8732703bb";
155
+ const [prev, setPrev] = React.useState(next);
156
+ if (prev !== next && (prev.length !== next.length || prev.some((v, i) => v !== next[i]))) {
157
+ setPrev(next);
158
+ return next;
80
159
  }
81
- const source = t0 === void 0 ? "draft" : t0;
160
+ return prev;
161
+ }
162
+ function usePageBlocks(pageStructure) {
163
+ const $ = c(35);
82
164
  const blockIds = pageStructure.page.blockIds;
83
165
  const beforeIds = pageStructure.layout?.beforeBlockIds ?? EMPTY_IDS;
84
166
  const afterIds = pageStructure.layout?.afterBlockIds ?? EMPTY_IDS;
85
- let t1;
86
- if ($[1] !== afterIds || $[2] !== beforeIds || $[3] !== blockIds) {
87
- t1 = [
167
+ let t0;
168
+ if ($[0] !== afterIds || $[1] !== beforeIds || $[2] !== blockIds) {
169
+ t0 = [
88
170
  ...blockIds,
89
171
  ...beforeIds,
90
172
  ...afterIds
91
173
  ];
92
- $[1] = afterIds;
93
- $[2] = beforeIds;
94
- $[3] = blockIds;
95
- $[4] = t1;
96
- } else t1 = $[4];
97
- const allIds = t1;
98
- let t2;
99
- if ($[5] !== allIds || $[6] !== source) {
100
- t2 = { queries: allIds.map((id) => viewBlockQueries.get(id, source)) };
101
- $[5] = allIds;
102
- $[6] = source;
103
- $[7] = t2;
104
- } else t2 = $[7];
105
- const results = useQueries(t2);
174
+ $[0] = afterIds;
175
+ $[1] = beforeIds;
176
+ $[2] = blockIds;
177
+ $[3] = t0;
178
+ } else t0 = $[3];
179
+ const allIds = t0;
180
+ let t1;
181
+ if ($[4] !== allIds) {
182
+ t1 = allIds.map(_temp7);
183
+ $[4] = allIds;
184
+ $[5] = t1;
185
+ } else t1 = $[5];
186
+ const results = useReadQueries(t1);
106
187
  let map;
107
- if ($[8] !== allIds || $[9] !== results) {
188
+ if ($[6] !== allIds || $[7] !== results) {
108
189
  map = /* @__PURE__ */ new Map();
109
190
  for (let i = 0; i < allIds.length; i++) {
110
191
  const data = results[i]?.data;
111
192
  if (data) map.set(allIds[i], data);
112
193
  }
113
- $[8] = allIds;
114
- $[9] = results;
115
- $[10] = map;
116
- } else map = $[10];
194
+ $[6] = allIds;
195
+ $[7] = results;
196
+ $[8] = map;
197
+ } else map = $[8];
117
198
  const bundleMap = map;
199
+ let t2;
200
+ if ($[9] !== afterIds || $[10] !== beforeIds) {
201
+ t2 = [...beforeIds, ...afterIds];
202
+ $[9] = afterIds;
203
+ $[10] = beforeIds;
204
+ $[11] = t2;
205
+ } else t2 = $[11];
206
+ const layoutIds = t2;
118
207
  let t3;
119
- if ($[11] !== afterIds || $[12] !== beforeIds) {
120
- t3 = [...beforeIds, ...afterIds];
121
- $[11] = afterIds;
122
- $[12] = beforeIds;
208
+ if ($[12] !== bundleMap) {
209
+ t3 = (ids) => ids.map((id_0) => bundleMap.get(id_0)?.block).filter(_temp8);
210
+ $[12] = bundleMap;
123
211
  $[13] = t3;
124
212
  } else t3 = $[13];
125
- const layoutIds = t3;
213
+ const resolveBlocks = t3;
126
214
  let t4;
127
- if ($[14] !== bundleMap) {
128
- t4 = (ids) => ids.map((id_0) => bundleMap.get(id_0)?.block).filter(_temp3);
129
- $[14] = bundleMap;
130
- $[15] = t4;
131
- } else t4 = $[15];
132
- const resolveBlocks = t4;
215
+ if ($[14] !== blockIds || $[15] !== resolveBlocks) {
216
+ t4 = resolveBlocks(blockIds);
217
+ $[14] = blockIds;
218
+ $[15] = resolveBlocks;
219
+ $[16] = t4;
220
+ } else t4 = $[16];
221
+ const pageBlocks = useStableArray(t4);
133
222
  let t5;
134
- if ($[16] !== blockIds || $[17] !== resolveBlocks) {
135
- t5 = resolveBlocks(blockIds);
136
- $[16] = blockIds;
137
- $[17] = resolveBlocks;
138
- $[18] = t5;
139
- } else t5 = $[18];
140
- const pageBlocks = useStableArray(t5);
223
+ if ($[17] !== beforeIds || $[18] !== resolveBlocks) {
224
+ t5 = resolveBlocks(beforeIds);
225
+ $[17] = beforeIds;
226
+ $[18] = resolveBlocks;
227
+ $[19] = t5;
228
+ } else t5 = $[19];
229
+ const beforeBlocks = useStableArray(t5);
141
230
  let t6;
142
- if ($[19] !== beforeIds || $[20] !== resolveBlocks) {
143
- t6 = resolveBlocks(beforeIds);
144
- $[19] = beforeIds;
145
- $[20] = resolveBlocks;
146
- $[21] = t6;
147
- } else t6 = $[21];
148
- const beforeBlocks = useStableArray(t6);
231
+ if ($[20] !== afterIds || $[21] !== resolveBlocks) {
232
+ t6 = resolveBlocks(afterIds);
233
+ $[20] = afterIds;
234
+ $[21] = resolveBlocks;
235
+ $[22] = t6;
236
+ } else t6 = $[22];
237
+ const afterBlocks = useStableArray(t6);
149
238
  let t7;
150
- if ($[22] !== afterIds || $[23] !== resolveBlocks) {
151
- t7 = resolveBlocks(afterIds);
152
- $[22] = afterIds;
153
- $[23] = resolveBlocks;
154
- $[24] = t7;
155
- } else t7 = $[24];
156
- const afterBlocks = useStableArray(t7);
239
+ if ($[23] !== bundleMap || $[24] !== layoutIds) {
240
+ t7 = layoutIds.flatMap((id_1) => bundleMap.get(id_1)?.files ?? []);
241
+ $[23] = bundleMap;
242
+ $[24] = layoutIds;
243
+ $[25] = t7;
244
+ } else t7 = $[25];
245
+ const layoutFiles = useStableArray(t7);
157
246
  let t8;
158
- if ($[25] !== bundleMap || $[26] !== layoutIds) {
159
- t8 = layoutIds.flatMap((id_1) => bundleMap.get(id_1)?.files ?? []);
160
- $[25] = bundleMap;
161
- $[26] = layoutIds;
162
- $[27] = t8;
163
- } else t8 = $[27];
164
- const layoutFiles = useStableArray(t8);
247
+ if ($[26] !== bundleMap || $[27] !== layoutIds) {
248
+ t8 = layoutIds.flatMap((id_2) => bundleMap.get(id_2)?.repeatableItems ?? []);
249
+ $[26] = bundleMap;
250
+ $[27] = layoutIds;
251
+ $[28] = t8;
252
+ } else t8 = $[28];
253
+ const layoutItems = useStableArray(t8);
165
254
  let t9;
166
- if ($[28] !== bundleMap || $[29] !== layoutIds) {
167
- t9 = layoutIds.flatMap((id_2) => bundleMap.get(id_2)?.repeatableItems ?? []);
168
- $[28] = bundleMap;
169
- $[29] = layoutIds;
170
- $[30] = t9;
171
- } else t9 = $[30];
172
- const layoutItems = useStableArray(t9);
173
- let t10;
174
- if ($[31] !== afterBlocks || $[32] !== beforeBlocks || $[33] !== layoutFiles || $[34] !== layoutItems || $[35] !== pageBlocks) {
175
- t10 = {
255
+ if ($[29] !== afterBlocks || $[30] !== beforeBlocks || $[31] !== layoutFiles || $[32] !== layoutItems || $[33] !== pageBlocks) {
256
+ t9 = {
176
257
  pageBlocks,
177
258
  beforeBlocks,
178
259
  afterBlocks,
179
260
  layoutFiles,
180
261
  layoutItems
181
262
  };
182
- $[31] = afterBlocks;
183
- $[32] = beforeBlocks;
184
- $[33] = layoutFiles;
185
- $[34] = layoutItems;
186
- $[35] = pageBlocks;
187
- $[36] = t10;
188
- } else t10 = $[36];
189
- return t10;
263
+ $[29] = afterBlocks;
264
+ $[30] = beforeBlocks;
265
+ $[31] = layoutFiles;
266
+ $[32] = layoutItems;
267
+ $[33] = pageBlocks;
268
+ $[34] = t9;
269
+ } else t9 = $[34];
270
+ return t9;
190
271
  }
191
- /** Check if a value is a { _fileId } marker */
192
- function _temp3(b) {
272
+ function _temp8(b) {
193
273
  return b != null;
194
274
  }
275
+ function _temp7(id) {
276
+ return reads.blockBundle(id);
277
+ }
278
+ /** Check if a value is a { _fileId } marker */
195
279
  function isFileMarker(value) {
196
280
  return value != null && typeof value === "object" && "_fileId" in value && value._fileId != null;
197
281
  }
@@ -201,7 +285,7 @@ function isItemMarker(value) {
201
285
  }
202
286
  function visitForFileIds(value, ids) {
203
287
  if (value == null || typeof value !== "object") return;
204
- if ("_fileId" in value && typeof value._fileId === "number") {
288
+ if ("_fileId" in value && typeof value._fileId === "string") {
205
289
  ids.add(value._fileId);
206
290
  return;
207
291
  }
@@ -214,21 +298,25 @@ function visitForFileIds(value, ids) {
214
298
  function collectFileIdsFromContent(content, ids) {
215
299
  for (const value of Object.values(content)) visitForFileIds(value, ids);
216
300
  }
217
- function seedBlockCaches(queryClient, pageData, source = "draft") {
218
- const filesById = new Map(pageData.files.map((f) => [f.id, f]));
219
- for (const block of pageData.blocks) {
220
- const blockItems = pageData.repeatableItems.filter((i) => i.blockId === block.id);
221
- const fileIds = /* @__PURE__ */ new Set();
222
- collectFileIdsFromContent(block.content, fileIds);
223
- for (const item of blockItems) collectFileIdsFromContent(item.content, fileIds);
224
- const blockFiles = [...fileIds].map((id) => filesById.get(id)).filter((f) => f != null);
225
- queryClient.setQueryData(queryKeys.blocks.get(block.id, source), {
226
- block,
227
- repeatableItems: blockItems,
228
- files: blockFiles
229
- });
230
- for (const file of blockFiles) queryClient.setQueryData(queryKeys.files.get(file.id), file);
301
+ /**
302
+ * The files a block places: in its content, its items' content, and the content of the records
303
+ * they link.
304
+ */
305
+ function collectFileIds(block, items) {
306
+ const fileIds = /* @__PURE__ */ new Set();
307
+ for (const owner of [block, ...items]) {
308
+ collectFileIdsFromContent(owner.content, fileIds);
309
+ for (const record of linkedRecords(owner.references)) collectFileIdsFromContent(record.content, fileIds);
231
310
  }
311
+ return fileIds;
312
+ }
313
+ /** Materialized collection revisions own their asset metadata. Only marker-only
314
+ * values consult the mutable file map, so a published source cannot change when
315
+ * the file's current metadata changes.
316
+ */
317
+ function resolveAssetValue(value, filesMap) {
318
+ if (value && typeof value === "object" && "url" in value && typeof value.url === "string") return value;
319
+ return isFileMarker(value) ? resolveFileMarker(value, filesMap) : value;
232
320
  }
233
321
  /** Resolve a file marker to a full file object */
234
322
  function resolveFileMarker(marker, filesMap) {
@@ -256,6 +344,18 @@ function _temp(f) {
256
344
  function _temp2(i) {
257
345
  return [i.id, i];
258
346
  }
347
+ function _temp3(record) {
348
+ return [record.id, record];
349
+ }
350
+ function _temp4(owner) {
351
+ return linkedRecords(owner.references).map(_temp3);
352
+ }
353
+ function _temp5(block) {
354
+ return block.id == null ? [] : [[block.id, block.references ?? {}]];
355
+ }
356
+ function _temp6(record) {
357
+ return [record.id, record];
358
+ }
259
359
 
260
360
  //#endregion
261
- export { NormalizedDataProvider, isFileMarker, isItemMarker, resolveFileMarker, seedBlockCaches, useNormalizedData, usePageBlocks };
361
+ export { LinkedRecordsProvider, NormalizedDataProvider, collectFileIds, isFileMarker, isItemMarker, linkedRecords, placedRecords, queryResultIds, referenceList, referencedRecords, resolveAssetValue, resolveFileMarker, singleReference, useNormalizedData, usePageBlocks };
@@ -4,9 +4,9 @@ function validatePreviewTarget(raw, target) {
4
4
  if (raw === null) return null;
5
5
  try {
6
6
  const expected = JSON.parse(raw);
7
- if (expected.projectSlug === target.projectSlug && expected.environmentName === target.environmentName && typeof expected.apiUrl === "string" && expected.apiUrl.replace(/\/+$/, "") === target.apiUrl.replace(/\/+$/, "")) return null;
7
+ if (expected.projectUuid === target.projectUuid && typeof expected.apiUrl === "string" && expected.apiUrl.replace(/\/+$/, "") === target.apiUrl.replace(/\/+$/, "")) return null;
8
8
  } catch {}
9
- return "Preview destination does not match the CLI project, backend, or environment. Check --cwd and --url, then run camox preview again.";
9
+ return "Preview destination does not match the CLI project or backend. Check --cwd and --url, then run camox preview again.";
10
10
  }
11
11
 
12
12
  //#endregion
@@ -0,0 +1,11 @@
1
+ import { ApiClient } from "./api-client.js";
2
+ //#region src/lib/queries.d.ts
3
+ export type PageWithBlocks = Awaited<ReturnType<ApiClient["pages"]["getByPath"]>>;
4
+ /** Slim structural data stored in the page query cache (no blocks/items/files). */
5
+ export type PageStructure = {
6
+ page: PageWithBlocks["page"];
7
+ layout: PageWithBlocks["layout"];
8
+ projectName: string;
9
+ project: PageWithBlocks["project"];
10
+ };
11
+ //#endregion