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
@@ -0,0 +1,200 @@
1
+ import { useProjectUuid } from "../../../lib/auth.js";
2
+ import { useCamoxApp } from "../../provider/components/CamoxAppContext.js";
3
+ import { referenceList } from "../../../lib/normalized-data.js";
4
+ import { reads, useStudioCache } from "../../../lib/studio-reads.js";
5
+ import { lexicalStateToPlainText } from "../../../core/lib/lexicalState.js";
6
+ import { referenceListIds } from "../../../core/lib/reference.js";
7
+ import { blockMutations, collectionMutations, repeatableItemMutations } from "../../../lib/queries.js";
8
+ import { invalidateCollectionRecordViews } from "../../../lib/collection-cache.js";
9
+ import { serializeAssetField } from "../../content/collection-form.js";
10
+ import { contentFieldSchema } from "./contentFieldSchema.js";
11
+ import { referenceWritesFor } from "../../../core/editing/referenceWrites.js";
12
+ import { c } from "react/compiler-runtime";
13
+ import { useMutation, useQueryClient } from "@tanstack/react-query";
14
+ import { toast } from "@camox/ui/toaster";
15
+
16
+ //#region src/features/preview/components/useFieldWriter.ts
17
+ const fieldTypeOf = (schema, fieldName) => contentFieldSchema(schema, fieldName)?.fieldType;
18
+ function listOwnerIn(bundle, owner) {
19
+ if (owner.kind === "block") return bundle.block;
20
+ return bundle.repeatableItems.find((item) => item.id === owner.itemId);
21
+ }
22
+ /** A block bundle whose reference list stores `ids`, hydrated from `records` in that order. */
23
+ function withReferenceList(bundle, owner, fieldName, ids, records) {
24
+ const withList = (current) => ({
25
+ ...current,
26
+ content: {
27
+ ...current.content,
28
+ [fieldName]: ids
29
+ },
30
+ references: {
31
+ ...current.references,
32
+ [fieldName]: ids.flatMap((id) => records.find((record) => record.id === id) ?? [])
33
+ }
34
+ });
35
+ if (owner.kind === "block") return {
36
+ ...bundle,
37
+ block: withList(bundle.block)
38
+ };
39
+ return {
40
+ ...bundle,
41
+ repeatableItems: bundle.repeatableItems.map((item) => item.id === owner.itemId ? withList(item) : item)
42
+ };
43
+ }
44
+ /**
45
+ * Shows a reference list change in the sidebar and preview before the server confirms it:
46
+ * the block's draft stores the new ids, and its hydrated records follow the same order.
47
+ * Newly linked records are fetched (or read from the record cache) and inserted as soon as
48
+ * they resolve, so the preview shows them without waiting for the block refetch.
49
+ * Returns an undo.
50
+ */
51
+ function applyReferenceListOptimistically(studioCache, blockId, owner, fieldName, ids, linkRecord) {
52
+ const edit = studioCache.edit();
53
+ const bundle = reads.blockBundle(blockId);
54
+ const previous = edit.get(bundle);
55
+ const previousOwner = previous && listOwnerIn(previous, owner);
56
+ if (!previous || !previousOwner) return () => {};
57
+ const hydrated = referenceList(previousOwner.references, fieldName);
58
+ edit.set(bundle, withReferenceList(previous, owner, fieldName, ids, hydrated));
59
+ const missing = ids.filter((id) => !hydrated.some((record) => record.id === id));
60
+ if (missing.length > 0) Promise.all(missing.map(linkRecord)).then((linked) => edit.set(bundle, (current) => {
61
+ const currentOwner = current && listOwnerIn(current, owner);
62
+ if (!current || !currentOwner) return current;
63
+ if (referenceListIds(currentOwner.content[fieldName]).join() !== ids.join()) return current;
64
+ return withReferenceList(current, owner, fieldName, ids, [...referenceList(currentOwner.references, fieldName), ...linked]);
65
+ })).catch(() => {});
66
+ return () => edit.rollback();
67
+ }
68
+ /**
69
+ * Returns the single field-change handler shared by every sidebar field editor
70
+ * (field list, asset and link views). Reference and reference list changes return a promise
71
+ * so callers like the create-record modal can wait for the link.
72
+ * Record edits go through the per-record queue shared with inline preview
73
+ * edits, as full content with the expected version; their assets are sent as
74
+ * collection asset snapshots rather than block file markers.
75
+ */
76
+ function useFieldWriter(target, schema) {
77
+ const $ = c(13);
78
+ const queryClient = useQueryClient();
79
+ const projectUuid = useProjectUuid();
80
+ const camoxApp = useCamoxApp();
81
+ let t0;
82
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
83
+ t0 = blockMutations.updateContent();
84
+ $[0] = t0;
85
+ } else t0 = $[0];
86
+ const updateBlockContent = useMutation(t0);
87
+ let t1;
88
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
89
+ t1 = repeatableItemMutations.updateContent();
90
+ $[1] = t1;
91
+ } else t1 = $[1];
92
+ const updateItemContent = useMutation(t1);
93
+ let t2;
94
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
95
+ t2 = collectionMutations.edit();
96
+ $[2] = t2;
97
+ } else t2 = $[2];
98
+ const editRecord = useMutation(t2);
99
+ const studioCache = useStudioCache();
100
+ let t3;
101
+ if ($[3] !== camoxApp || $[4] !== editRecord || $[5] !== projectUuid || $[6] !== queryClient || $[7] !== schema || $[8] !== studioCache || $[9] !== target || $[10] !== updateBlockContent || $[11] !== updateItemContent) {
102
+ t3 = (fieldName, value) => {
103
+ if (target?.kind === "record") {
104
+ const fieldType = fieldTypeOf(schema, fieldName);
105
+ const awaited = fieldType === "Reference" || fieldType === "ReferenceList";
106
+ const { record } = target;
107
+ const saving = referenceWritesFor(queryClient).save(record, fieldName, serializeAssetField(fieldType, value), async (input) => {
108
+ const saved = await editRecord.mutateAsync({
109
+ ...input,
110
+ projectUuid
111
+ });
112
+ studioCache.set(reads.record({
113
+ projectUuid,
114
+ collectionId: record.collectionId,
115
+ id: record.id
116
+ }), saved);
117
+ invalidateCollectionRecordViews(studioCache, projectUuid, record.collectionId);
118
+ return saved;
119
+ }).then(_temp);
120
+ if (awaited) return saving;
121
+ saving.catch(_temp2);
122
+ return;
123
+ }
124
+ const content = { [fieldName]: value };
125
+ const mutation = target?.kind === "item" ? updateItemContent : updateBlockContent;
126
+ const id = target?.kind === "item" ? target.itemId : target?.blockId;
127
+ const field = contentFieldSchema(schema, fieldName);
128
+ if (field?.fieldType === "ReferenceList" && target) {
129
+ const { collectionId: t4 } = field;
130
+ const collectionId = t4 === void 0 ? "" : t4;
131
+ const linkRecord = async (recordId) => {
132
+ const record_0 = await studioCache.ensure(reads.record({
133
+ projectUuid,
134
+ collectionId,
135
+ id: recordId
136
+ }));
137
+ const labelField = camoxApp.getCollectionById(collectionId)?._internal.label;
138
+ const label = labelField ? record_0.content[labelField] : void 0;
139
+ return {
140
+ id: record_0.id,
141
+ collectionId,
142
+ content: record_0.content,
143
+ label: typeof label === "string" ? lexicalStateToPlainText(label) : ""
144
+ };
145
+ };
146
+ return (async () => {
147
+ const restore = applyReferenceListOptimistically(studioCache, target.blockId, target.kind === "item" ? {
148
+ kind: "item",
149
+ itemId: target.itemId
150
+ } : { kind: "block" }, fieldName, referenceListIds(value), linkRecord);
151
+ try {
152
+ if (target.kind === "item") await updateItemContent.mutateAsync({
153
+ id: target.itemId,
154
+ content
155
+ });
156
+ else await updateBlockContent.mutateAsync({
157
+ id: target.blockId,
158
+ content
159
+ });
160
+ } catch (t5) {
161
+ const cause_0 = t5;
162
+ restore();
163
+ throw cause_0;
164
+ }
165
+ studioCache.invalidate(reads.blockBundle(target.blockId));
166
+ })();
167
+ }
168
+ if (field?.fieldType === "Reference") return (async () => {
169
+ if (id == null) throw new Error("Nothing to change this reference on.");
170
+ await mutation.mutateAsync({
171
+ id,
172
+ content
173
+ });
174
+ })();
175
+ if (id == null) return;
176
+ mutation.mutate({
177
+ id,
178
+ content
179
+ });
180
+ };
181
+ $[3] = camoxApp;
182
+ $[4] = editRecord;
183
+ $[5] = projectUuid;
184
+ $[6] = queryClient;
185
+ $[7] = schema;
186
+ $[8] = studioCache;
187
+ $[9] = target;
188
+ $[10] = updateBlockContent;
189
+ $[11] = updateItemContent;
190
+ $[12] = t3;
191
+ } else t3 = $[12];
192
+ return t3;
193
+ }
194
+ function _temp2(cause) {
195
+ toast.error(cause instanceof Error ? cause.message : "Could not save item");
196
+ }
197
+ function _temp() {}
198
+
199
+ //#endregion
200
+ export { useFieldWriter };
@@ -0,0 +1,383 @@
1
+ import { useCamoxApp } from "../../provider/components/CamoxAppContext.js";
2
+ import { placedRecords, referenceList } from "../../../lib/normalized-data.js";
3
+ import { referenceListIds } from "../../../core/lib/reference.js";
4
+ import { isBlockPlacement, previewStore, recordPlacement } from "../previewStore.js";
5
+ import { contentFieldSchema } from "./contentFieldSchema.js";
6
+ import { formatFieldName } from "./ItemFieldsEditor.js";
7
+ import { c } from "react/compiler-runtime";
8
+ import * as React from "react";
9
+ import { isQueryBacked } from "@camox/api-contract";
10
+
11
+ //#region src/features/preview/components/useRecordView.ts
12
+ /**
13
+ * Whether a reference field still links the record: the id a reference stores, any id a
14
+ * reference list contains, or any record a query-backed list resolved to (it stores nothing).
15
+ */
16
+ function linksRecord(field, owner, fieldName, recordId) {
17
+ if (isQueryBacked(field)) return referenceList(owner.references, fieldName).some((record) => record.id === recordId);
18
+ const stored = owner.content?.[fieldName];
19
+ if (field?.fieldType === "ReferenceList") return referenceListIds(stored).includes(recordId);
20
+ return stored === recordId;
21
+ }
22
+ function isLayoutPlacer(placer) {
23
+ return placer != null && "record" in placer;
24
+ }
25
+ /**
26
+ * Resolves a record or record-field selection into the record it shows, while the placer's
27
+ * reference field still links that record, or the reference list still contains it. A layout
28
+ * places the record its record page loaded, through no reference field. A record
29
+ * linked by a placed record (`nested`) resolves through that record's own links. A stale
30
+ * selection (a field no longer links its record) shows, and then selects, that reference field's
31
+ * view instead.
32
+ */
33
+ function useRecordView(t0) {
34
+ const $ = c(77);
35
+ const { owner, selection, placer } = t0;
36
+ const camoxApp = useCamoxApp();
37
+ const recordSelection = selection?.type === "record" || selection?.type === "record-field" ? selection : null;
38
+ const nested = recordSelection?.nested;
39
+ const blockSelection = recordSelection && isBlockPlacement(recordSelection) ? recordSelection : null;
40
+ const layoutSelection = recordSelection && !isBlockPlacement(recordSelection) ? recordSelection : null;
41
+ const blockPlacer = placer && !isLayoutPlacer(placer) ? placer : null;
42
+ const layoutPlacer = isLayoutPlacer(placer) ? placer : null;
43
+ const referenceFieldName = blockSelection?.fieldName;
44
+ let nestedCollection;
45
+ let nestedField;
46
+ let nestedRecord;
47
+ let nestedStale;
48
+ let outerCollection;
49
+ let outerRecord;
50
+ let outerStale;
51
+ let referenceField;
52
+ let referenceFieldType;
53
+ let t1;
54
+ if ($[0] !== blockPlacer || $[1] !== blockSelection || $[2] !== camoxApp || $[3] !== layoutPlacer || $[4] !== layoutSelection || $[5] !== nested || $[6] !== referenceFieldName) {
55
+ referenceField = referenceFieldName ? contentFieldSchema(blockPlacer?.contentSchema, referenceFieldName) : void 0;
56
+ const outerCollectionId = layoutSelection ? layoutPlacer?.collectionId : referenceField?.collectionId;
57
+ outerCollection = outerCollectionId ? camoxApp.getCollectionById(outerCollectionId) : void 0;
58
+ outerStale = blockSelection ? blockPlacer != null && !linksRecord(referenceField, blockPlacer, blockSelection.fieldName, blockSelection.recordId) : layoutSelection != null && layoutPlacer != null && layoutPlacer.record.id !== layoutSelection.recordId;
59
+ let t2;
60
+ if ($[17] !== blockPlacer?.references || $[18] !== blockSelection || $[19] !== layoutPlacer?.record || $[20] !== layoutSelection || $[21] !== outerStale) {
61
+ t2 = () => {
62
+ if (outerStale) return;
63
+ if (blockSelection) return placedRecords(blockPlacer?.references, blockSelection.fieldName).find((record) => record.id === blockSelection.recordId);
64
+ if (layoutSelection) return layoutPlacer?.record;
65
+ };
66
+ $[17] = blockPlacer?.references;
67
+ $[18] = blockSelection;
68
+ $[19] = layoutPlacer?.record;
69
+ $[20] = layoutSelection;
70
+ $[21] = outerStale;
71
+ $[22] = t2;
72
+ } else t2 = $[22];
73
+ outerRecord = t2();
74
+ nestedField = nested ? contentFieldSchema(outerCollection?._internal.contentSchema, nested.fieldName) : void 0;
75
+ nestedCollection = nestedField?.collectionId ? camoxApp.getCollectionById(nestedField.collectionId) : void 0;
76
+ nestedStale = nested != null && outerRecord != null && !linksRecord(nestedField, outerRecord, nested.fieldName, nested.recordId);
77
+ nestedRecord = nested && outerRecord && !nestedStale ? placedRecords(outerRecord.references, nested.fieldName).find((record_0) => record_0.id === nested.recordId) : void 0;
78
+ const fieldTypeOf = _temp;
79
+ referenceFieldType = fieldTypeOf(referenceField);
80
+ t1 = fieldTypeOf(nestedField);
81
+ $[0] = blockPlacer;
82
+ $[1] = blockSelection;
83
+ $[2] = camoxApp;
84
+ $[3] = layoutPlacer;
85
+ $[4] = layoutSelection;
86
+ $[5] = nested;
87
+ $[6] = referenceFieldName;
88
+ $[7] = nestedCollection;
89
+ $[8] = nestedField;
90
+ $[9] = nestedRecord;
91
+ $[10] = nestedStale;
92
+ $[11] = outerCollection;
93
+ $[12] = outerRecord;
94
+ $[13] = outerStale;
95
+ $[14] = referenceField;
96
+ $[15] = referenceFieldType;
97
+ $[16] = t1;
98
+ } else {
99
+ nestedCollection = $[7];
100
+ nestedField = $[8];
101
+ nestedRecord = $[9];
102
+ nestedStale = $[10];
103
+ outerCollection = $[11];
104
+ outerRecord = $[12];
105
+ outerStale = $[13];
106
+ referenceField = $[14];
107
+ referenceFieldType = $[15];
108
+ t1 = $[16];
109
+ }
110
+ const nestedFieldType = t1;
111
+ const recordBlockId = blockSelection?.blockId;
112
+ const recordItemId = blockSelection?.itemId;
113
+ const recordLayoutId = layoutSelection?.layoutId;
114
+ let t2;
115
+ bb0: {
116
+ if (recordBlockId == null || !referenceFieldName) {
117
+ t2 = null;
118
+ break bb0;
119
+ }
120
+ let t3;
121
+ if ($[23] !== referenceFieldName || $[24] !== referenceFieldType) {
122
+ t3 = {
123
+ fieldName: referenceFieldName,
124
+ fieldType: referenceFieldType
125
+ };
126
+ $[23] = referenceFieldName;
127
+ $[24] = referenceFieldType;
128
+ $[25] = t3;
129
+ } else t3 = $[25];
130
+ const field_0 = t3;
131
+ if (recordItemId == null) {
132
+ let t4;
133
+ if ($[26] !== field_0 || $[27] !== recordBlockId) {
134
+ t4 = {
135
+ type: "block-field",
136
+ blockId: recordBlockId,
137
+ ...field_0
138
+ };
139
+ $[26] = field_0;
140
+ $[27] = recordBlockId;
141
+ $[28] = t4;
142
+ } else t4 = $[28];
143
+ t2 = t4;
144
+ break bb0;
145
+ }
146
+ let t4;
147
+ if ($[29] !== field_0 || $[30] !== recordBlockId || $[31] !== recordItemId) {
148
+ t4 = {
149
+ type: "item-field",
150
+ blockId: recordBlockId,
151
+ itemId: recordItemId,
152
+ ...field_0
153
+ };
154
+ $[29] = field_0;
155
+ $[30] = recordBlockId;
156
+ $[31] = recordItemId;
157
+ $[32] = t4;
158
+ } else t4 = $[32];
159
+ t2 = t4;
160
+ }
161
+ const referenceFieldSelection = t2;
162
+ let t3;
163
+ if ($[33] !== recordSelection) {
164
+ t3 = recordSelection ? _temp2(recordPlacement(recordSelection)) : null;
165
+ $[33] = recordSelection;
166
+ $[34] = t3;
167
+ } else t3 = $[34];
168
+ const outerPlacement = t3;
169
+ const recordId = recordSelection?.recordId;
170
+ const nestedFieldName = nested?.fieldName;
171
+ let t4;
172
+ bb1: {
173
+ if (!recordId || !nestedFieldName) {
174
+ t4 = null;
175
+ break bb1;
176
+ }
177
+ let t5;
178
+ if ($[35] !== nestedFieldName || $[36] !== nestedFieldType) {
179
+ t5 = {
180
+ recordFieldName: nestedFieldName,
181
+ recordFieldType: nestedFieldType
182
+ };
183
+ $[35] = nestedFieldName;
184
+ $[36] = nestedFieldType;
185
+ $[37] = t5;
186
+ } else t5 = $[37];
187
+ const field_1 = t5;
188
+ if (recordLayoutId != null) {
189
+ let t6;
190
+ if ($[38] !== field_1 || $[39] !== recordId || $[40] !== recordLayoutId) {
191
+ t6 = {
192
+ type: "record-field",
193
+ layoutId: recordLayoutId,
194
+ recordId,
195
+ ...field_1
196
+ };
197
+ $[38] = field_1;
198
+ $[39] = recordId;
199
+ $[40] = recordLayoutId;
200
+ $[41] = t6;
201
+ } else t6 = $[41];
202
+ t4 = t6;
203
+ break bb1;
204
+ }
205
+ if (recordBlockId == null || !referenceFieldName) {
206
+ t4 = null;
207
+ break bb1;
208
+ }
209
+ let t6;
210
+ if ($[42] !== recordItemId) {
211
+ t6 = recordItemId == null ? {} : { itemId: recordItemId };
212
+ $[42] = recordItemId;
213
+ $[43] = t6;
214
+ } else t6 = $[43];
215
+ let t7;
216
+ if ($[44] !== field_1 || $[45] !== recordBlockId || $[46] !== recordId || $[47] !== referenceFieldName || $[48] !== t6) {
217
+ t7 = {
218
+ type: "record-field",
219
+ blockId: recordBlockId,
220
+ ...t6,
221
+ fieldName: referenceFieldName,
222
+ recordId,
223
+ ...field_1
224
+ };
225
+ $[44] = field_1;
226
+ $[45] = recordBlockId;
227
+ $[46] = recordId;
228
+ $[47] = referenceFieldName;
229
+ $[48] = t6;
230
+ $[49] = t7;
231
+ } else t7 = $[49];
232
+ t4 = t7;
233
+ }
234
+ const nestedFieldSelection = t4;
235
+ const isStale = outerStale || nestedStale;
236
+ const fallbackSelection = outerStale ? referenceFieldSelection : nestedFieldSelection;
237
+ let t5;
238
+ let t6;
239
+ if ($[50] !== fallbackSelection || $[51] !== isStale || $[52] !== owner) {
240
+ t5 = () => {
241
+ if (!isStale || !fallbackSelection) return;
242
+ previewStore.send({
243
+ type: "selectTarget",
244
+ ...owner,
245
+ selection: fallbackSelection
246
+ });
247
+ };
248
+ t6 = [
249
+ isStale,
250
+ fallbackSelection,
251
+ owner
252
+ ];
253
+ $[50] = fallbackSelection;
254
+ $[51] = isStale;
255
+ $[52] = owner;
256
+ $[53] = t5;
257
+ $[54] = t6;
258
+ } else {
259
+ t5 = $[53];
260
+ t6 = $[54];
261
+ }
262
+ React.useEffect(t5, t6);
263
+ const placedRecord = nested ? nestedRecord : outerRecord;
264
+ const collection = nested ? nestedCollection : outerCollection;
265
+ const shown = recordSelection && !isStale && placedRecord && collection;
266
+ let t7;
267
+ if ($[55] !== collection || $[56] !== nested || $[57] !== nestedFieldType || $[58] !== placedRecord || $[59] !== recordSelection || $[60] !== referenceFieldType || $[61] !== shown) {
268
+ t7 = shown ? {
269
+ selection: recordSelection,
270
+ record: placedRecord,
271
+ collection,
272
+ inList: (nested ? nestedFieldType : referenceFieldType) === "ReferenceList",
273
+ linksRecords: !nested
274
+ } : null;
275
+ $[55] = collection;
276
+ $[56] = nested;
277
+ $[57] = nestedFieldType;
278
+ $[58] = placedRecord;
279
+ $[59] = recordSelection;
280
+ $[60] = referenceFieldType;
281
+ $[61] = shown;
282
+ $[62] = t7;
283
+ } else t7 = $[62];
284
+ const recordView = t7;
285
+ let t8;
286
+ if ($[63] !== nested || $[64] !== nestedField?.title || $[65] !== nestedFieldSelection || $[66] !== outerPlacement || $[67] !== outerRecord || $[68] !== owner || $[69] !== recordView || $[70] !== referenceField?.title || $[71] !== referenceFieldSelection) {
287
+ t8 = (fieldHasOwnView) => {
288
+ if (!recordView || !outerRecord || !outerPlacement) return [];
289
+ const outerTarget = {
290
+ type: "record",
291
+ ...outerPlacement
292
+ };
293
+ const crumbs = [...isBlockPlacement(outerPlacement) ? [{
294
+ key: "reference-field",
295
+ label: referenceField?.title ?? formatFieldName(outerPlacement.fieldName),
296
+ isCurrent: false,
297
+ hoverTarget: referenceFieldSelection,
298
+ onClick: () => previewStore.send({
299
+ type: "selectTarget",
300
+ ...owner,
301
+ selection: referenceFieldSelection
302
+ })
303
+ }] : [], {
304
+ key: "record",
305
+ label: outerRecord.label,
306
+ isCurrent: !nested && !fieldHasOwnView,
307
+ hoverTarget: outerTarget,
308
+ onClick: nested || fieldHasOwnView ? () => previewStore.send({
309
+ type: "selectRecord",
310
+ ...owner,
311
+ ...outerPlacement
312
+ }) : void 0
313
+ }];
314
+ if (!nested) return crumbs;
315
+ const nestedTarget = {
316
+ type: "record",
317
+ ...outerPlacement,
318
+ nested
319
+ };
320
+ return [
321
+ ...crumbs,
322
+ {
323
+ key: "nested-reference-field",
324
+ label: nestedField?.title ?? formatFieldName(nested.fieldName),
325
+ isCurrent: false,
326
+ hoverTarget: nestedFieldSelection,
327
+ onClick: () => previewStore.send({
328
+ type: "selectTarget",
329
+ ...owner,
330
+ selection: nestedFieldSelection
331
+ })
332
+ },
333
+ {
334
+ key: "nested-record",
335
+ label: recordView.record.label,
336
+ isCurrent: !fieldHasOwnView,
337
+ hoverTarget: nestedTarget,
338
+ onClick: fieldHasOwnView ? () => previewStore.send({
339
+ type: "selectRecord",
340
+ ...owner,
341
+ ...outerPlacement,
342
+ nested
343
+ }) : void 0
344
+ }
345
+ ];
346
+ };
347
+ $[63] = nested;
348
+ $[64] = nestedField?.title;
349
+ $[65] = nestedFieldSelection;
350
+ $[66] = outerPlacement;
351
+ $[67] = outerRecord;
352
+ $[68] = owner;
353
+ $[69] = recordView;
354
+ $[70] = referenceField?.title;
355
+ $[71] = referenceFieldSelection;
356
+ $[72] = t8;
357
+ } else t8 = $[72];
358
+ const recordCrumbs = t8;
359
+ const t9 = isStale ? fallbackSelection : selection;
360
+ let t10;
361
+ if ($[73] !== recordCrumbs || $[74] !== recordView || $[75] !== t9) {
362
+ t10 = {
363
+ recordView,
364
+ viewSelection: t9,
365
+ recordCrumbs
366
+ };
367
+ $[73] = recordCrumbs;
368
+ $[74] = recordView;
369
+ $[75] = t9;
370
+ $[76] = t10;
371
+ } else t10 = $[76];
372
+ return t10;
373
+ }
374
+ function _temp2(t0) {
375
+ const { nested: _nested, ...outer } = t0;
376
+ return outer;
377
+ }
378
+ function _temp(field) {
379
+ return field?.fieldType === "ReferenceList" ? "ReferenceList" : "Reference";
380
+ }
381
+
382
+ //#endregion
383
+ export { useRecordView };