camox 0.44.0 → 0.45.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 (411) 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 +1734 -0
  68. package/dist/features/canvas/CanvasBlockFrame.js +353 -0
  69. package/dist/features/canvas/CanvasBlockHeader.js +55 -0
  70. package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
  71. package/dist/features/canvas/CanvasOverlays.js +254 -0
  72. package/dist/features/canvas/CanvasPageEdge.js +87 -0
  73. package/dist/features/canvas/CanvasPageFrame.js +335 -0
  74. package/dist/features/canvas/CanvasPageHeader.js +125 -0
  75. package/dist/features/canvas/CanvasPreviewPageSlot.js +103 -0
  76. package/dist/features/canvas/CanvasShelfMarker.js +255 -0
  77. package/dist/features/canvas/DerivedPagePathInput.js +238 -0
  78. package/dist/features/canvas/canvasCamera.js +229 -0
  79. package/dist/features/canvas/canvasFlight.js +104 -0
  80. package/dist/features/canvas/canvasFrameCapture.js +364 -0
  81. package/dist/features/canvas/canvasFrameDocument.js +317 -0
  82. package/dist/features/canvas/canvasFrameMode.js +53 -0
  83. package/dist/features/canvas/canvasInsertionSeams.js +44 -0
  84. package/dist/features/canvas/canvasItems.js +120 -0
  85. package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
  86. package/dist/features/canvas/canvasPages.js +79 -0
  87. package/dist/features/canvas/canvasScreenSpace.js +26 -0
  88. package/dist/features/canvas/canvasSelection.js +18 -0
  89. package/dist/features/canvas/canvasStore.js +149 -0
  90. package/dist/features/canvas/canvasThumbnails.js +304 -0
  91. package/dist/features/canvas/canvasZoom.js +10 -0
  92. package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
  93. package/dist/features/canvas/sidebar/CanvasNavigator.js +226 -0
  94. package/dist/features/canvas/sidebar/CanvasSidebar.js +60 -0
  95. package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
  96. package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
  97. package/dist/features/canvas/sidebar/CatalogBlockInspector.js +189 -0
  98. package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
  99. package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
  100. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
  101. package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
  102. package/dist/features/canvas/sidebar/PageInspector.js +157 -0
  103. package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
  104. package/dist/features/canvas/sidebar/PageOverview.js +27 -0
  105. package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
  106. package/dist/features/canvas/useCanvasCamera.js +803 -0
  107. package/dist/features/canvas/useCanvasFrame.js +149 -0
  108. package/dist/features/canvas/useCanvasFrameInput.js +97 -0
  109. package/dist/features/canvas/useCanvasNearness.js +57 -0
  110. package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
  111. package/dist/features/content/CamoxContent.d.ts +2 -5
  112. package/dist/features/content/CamoxContent.js +174 -271
  113. package/dist/features/content/CollectionItemSheetContext.js +106 -0
  114. package/dist/features/content/ContentAssets.js +315 -0
  115. package/dist/features/content/ContentCollection.js +663 -0
  116. package/dist/features/content/collection-form.js +58 -0
  117. package/dist/features/content/components/AssetCard.js +80 -84
  118. package/dist/features/content/components/AssetCardSkeleton.js +4 -8
  119. package/dist/features/content/components/ContentSidebar.js +129 -18
  120. package/dist/features/content/components/ContentSidebarGroup.js +37 -0
  121. package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
  122. package/dist/features/content/components/MissingFromLocale.js +282 -0
  123. package/dist/features/content/components/UploadDropZone.js +27 -31
  124. package/dist/features/content/components/UploadProgressDrawer.js +90 -98
  125. package/dist/features/navigation/navigation.d.ts +66 -20
  126. package/dist/features/navigation/navigation.js +257 -90
  127. package/dist/features/og/defaultFonts.js +8 -8
  128. package/dist/features/og/geist-variable-ttf-base64.js +1 -1
  129. package/dist/features/og/imageResponse.d.ts +8 -0
  130. package/dist/features/og/imageResponse.js +26 -0
  131. package/dist/features/page/CuratedPageContent.js +167 -0
  132. package/dist/features/page/DerivedPageContent.js +26 -30
  133. package/dist/features/page/SharedLayoutContent.js +25 -27
  134. package/dist/features/preview/CamoxPreview.d.ts +23 -61
  135. package/dist/features/preview/CamoxPreview.js +816 -537
  136. package/dist/features/preview/EditablePageContent.js +1 -1
  137. package/dist/features/preview/EditablePageExperience.js +16 -22
  138. package/dist/features/preview/components/AddBlockDialog.js +270 -0
  139. package/dist/features/preview/components/AssetFieldEditor.js +173 -154
  140. package/dist/features/preview/components/AssetLightbox.js +181 -134
  141. package/dist/features/preview/components/AssetPickerModal.js +153 -170
  142. package/dist/features/preview/components/BlockActionsPopover.js +150 -149
  143. package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
  144. package/dist/features/preview/components/BlockThumbnail.js +176 -100
  145. package/dist/features/preview/components/CanvasPreview.js +243 -0
  146. package/dist/features/preview/components/CreatePageModal.js +128 -137
  147. package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
  148. package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
  149. package/dist/features/preview/components/DrillRow.js +150 -0
  150. package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
  151. package/dist/features/preview/components/FieldToolbar.js +160 -110
  152. package/dist/features/preview/components/Frame.js +108 -20
  153. package/dist/features/preview/components/IconFieldEditor.js +62 -66
  154. package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
  155. package/dist/features/preview/components/LinkFieldEditor.js +135 -139
  156. package/dist/features/preview/components/Metadata.js +22 -30
  157. package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
  158. package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
  159. package/dist/features/preview/components/OverlayTracker.js +9 -41
  160. package/dist/features/preview/components/Overlays.js +81 -69
  161. package/dist/features/preview/components/PageInfo.js +1748 -0
  162. package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
  163. package/dist/features/preview/components/PageLocationFieldset.js +112 -116
  164. package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
  165. package/dist/features/preview/components/PageNicknameField.js +22 -26
  166. package/dist/features/preview/components/PagePicker.js +128 -130
  167. package/dist/features/preview/components/PageTree.js +525 -532
  168. package/dist/features/preview/components/PreviewActivation.js +28 -32
  169. package/dist/features/preview/components/PreviewPanel.js +620 -319
  170. package/dist/features/preview/components/PreviewToolbar.js +105 -333
  171. package/dist/features/preview/components/RecordCard.js +80 -0
  172. package/dist/features/preview/components/RecordCombobox.js +178 -0
  173. package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
  174. package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
  175. package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
  176. package/dist/features/preview/components/RepeatableItemsList.js +125 -138
  177. package/dist/features/preview/components/SelectionEditor.js +993 -0
  178. package/dist/features/preview/components/ShikiMarkdown.js +14 -18
  179. package/dist/features/preview/components/SidebarSection.js +52 -64
  180. package/dist/features/preview/components/StudioEditingFallback.js +56 -0
  181. package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
  182. package/dist/features/preview/components/blockGridNavigation.js +15 -0
  183. package/dist/features/preview/components/contentFieldSchema.js +8 -0
  184. package/dist/features/preview/components/useFieldWriter.js +200 -0
  185. package/dist/features/preview/components/useRecordView.js +383 -0
  186. package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
  187. package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
  188. package/dist/features/preview/editingFrame.js +197 -0
  189. package/dist/features/preview/overlayHighlights.js +17 -44
  190. package/dist/features/preview/overlayMessages.js +72 -1
  191. package/dist/features/preview/pageRecord.js +189 -0
  192. package/dist/features/preview/previewConstants.js +6 -2
  193. package/dist/features/preview/previewPageFrame.js +95 -0
  194. package/dist/features/preview/previewPreparation.js +7 -0
  195. package/dist/features/preview/previewSelection.js +32 -63
  196. package/dist/features/preview/previewStore.js +225 -123
  197. package/dist/features/preview/referencePickerFocus.js +29 -0
  198. package/dist/features/preview/repeatableItemTargets.js +56 -0
  199. package/dist/features/preview/selectionReveal.js +21 -0
  200. package/dist/features/preview/usePreviewViewportActions.js +114 -0
  201. package/dist/features/preview/viewportContinuity.js +109 -0
  202. package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
  203. package/dist/features/provider/CamoxProvider.d.ts +3 -6
  204. package/dist/features/provider/CamoxProvider.js +38 -50
  205. package/dist/features/provider/CoreCamoxProvider.js +66 -50
  206. package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
  207. package/dist/features/provider/PreviewSignInPage.js +54 -0
  208. package/dist/features/provider/components/CamoxAppContext.js +11 -11
  209. package/dist/features/provider/components/CommandPalette.js +75 -82
  210. package/dist/features/provider/useAdminShortcuts.js +7 -11
  211. package/dist/features/routes/pageRuntime.d.ts +44 -4
  212. package/dist/features/routes/pageRuntime.js +244 -137
  213. package/dist/features/runtime/RuntimeChrome.js +117 -115
  214. package/dist/features/runtime/alternates.js +64 -0
  215. package/dist/features/runtime/analytics.d.ts +7 -0
  216. package/dist/features/runtime/analytics.js +66 -0
  217. package/dist/features/runtime/artifactSources.js +87 -0
  218. package/dist/features/runtime/editingFallback.js +20 -0
  219. package/dist/features/runtime/linkPrefetch.js +97 -0
  220. package/dist/features/runtime/livePages.js +62 -0
  221. package/dist/features/runtime/llmsTxt.js +40 -0
  222. package/dist/features/runtime/loopbackFetch.js +18 -0
  223. package/dist/features/runtime/navigationAccessibility.js +51 -0
  224. package/dist/features/runtime/navigationTarget.js +23 -2
  225. package/dist/features/runtime/pageApp.js +229 -158
  226. package/dist/features/runtime/pageBlockTypes.js +20 -0
  227. package/dist/features/runtime/pageClient.d.ts +2 -4
  228. package/dist/features/runtime/pageClient.js +18 -3
  229. package/dist/features/runtime/pageNavigation.js +254 -32
  230. package/dist/features/runtime/pageServer.d.ts +2 -4
  231. package/dist/features/runtime/pageServer.js +6 -2
  232. package/dist/features/runtime/pageViewport.js +7 -0
  233. package/dist/features/runtime/runtime.d.ts +59 -24
  234. package/dist/features/runtime/runtime.js +779 -191
  235. package/dist/features/runtime/runtimeChromeLoader.js +58 -0
  236. package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
  237. package/dist/features/runtime/runtimeRoutes.js +25 -0
  238. package/dist/features/runtime/scrollRestoration.js +133 -0
  239. package/dist/features/runtime/studioApp.d.ts +4 -3
  240. package/dist/features/runtime/studioApp.js +5 -9
  241. package/dist/features/runtime/studioClient.d.ts +2 -4
  242. package/dist/features/runtime/studioClient.js +12 -3
  243. package/dist/features/runtime/studioServer.d.ts +2 -4
  244. package/dist/features/runtime/studioServer.js +6 -1
  245. package/dist/features/runtime/worker.d.ts +6 -0
  246. package/dist/features/runtime/worker.js +23 -0
  247. package/dist/features/runtime/workerRequest.js +44 -0
  248. package/dist/features/studio/CamoxStudio.d.ts +2 -6
  249. package/dist/features/studio/CamoxStudio.js +34 -49
  250. package/dist/features/studio/FollowAgentProvider.js +338 -0
  251. package/dist/features/studio/components/ChatSidebar.js +356 -0
  252. package/dist/features/studio/components/DraftsControl.js +676 -0
  253. package/dist/features/studio/components/FaviconDialog.js +318 -0
  254. package/dist/features/studio/components/LocalePicker.js +785 -0
  255. package/dist/features/studio/components/Navbar.js +123 -103
  256. package/dist/features/studio/components/ProjectMenu.js +239 -260
  257. package/dist/features/studio/components/RenameDraftDialog.js +206 -0
  258. package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
  259. package/dist/features/studio/components/ThreadComposer.js +157 -0
  260. package/dist/features/studio/components/ThreadMarkdown.js +113 -0
  261. package/dist/features/studio/components/ThreadMessages.js +270 -0
  262. package/dist/features/studio/components/UserButton.js +34 -23
  263. package/dist/features/studio/draftLabel.js +33 -0
  264. package/dist/features/studio/draftNotice.js +13 -0
  265. package/dist/features/studio/followAgent.js +250 -0
  266. package/dist/features/studio/followAgentContext.js +7 -0
  267. package/dist/features/studio/localeOptions.js +118 -0
  268. package/dist/features/studio/localeSwitch.js +19 -0
  269. package/dist/features/studio/routes.js +48 -1
  270. package/dist/features/studio/studioStore.js +64 -1
  271. package/dist/features/studio/useTheme.js +24 -27
  272. package/dist/features/vite/artifactRuntimeMinification.js +36 -0
  273. package/dist/features/vite/blockBoilerplate.js +6 -5
  274. package/dist/features/vite/blockChunks.js +31 -0
  275. package/dist/features/vite/bundlerLogs.js +17 -0
  276. package/dist/features/vite/definitionsSync.js +158 -226
  277. package/dist/features/vite/devAuthentication.js +4 -16
  278. package/dist/features/vite/devSignIn.js +87 -0
  279. package/dist/features/vite/iconGeneration.js +1 -1
  280. package/dist/features/vite/layoutGeneration.js +11 -1
  281. package/dist/features/vite/publishSeededContent.js +30 -0
  282. package/dist/features/vite/routeGeneration.js +6 -7
  283. package/dist/features/vite/runtimeDev.js +80 -99
  284. package/dist/features/vite/vite.d.ts +51 -31
  285. package/dist/features/vite/vite.js +224 -127
  286. package/dist/features/vite/workerBuild.js +39 -0
  287. package/dist/hooks/use-debounced-field.js +116 -47
  288. package/dist/hooks/use-file-upload.js +114 -67
  289. package/dist/hooks/use-marquee-selection.js +32 -36
  290. package/dist/hooks/use-page-destinations.js +69 -37
  291. package/dist/lib/api-client-server.d.ts +5 -0
  292. package/dist/lib/api-client-server.js +10 -4
  293. package/dist/lib/api-client.d.ts +6 -0
  294. package/dist/lib/api-client.js +51 -16
  295. package/dist/lib/api-socket.js +17 -0
  296. package/dist/lib/auth-page-styles.js +39 -0
  297. package/dist/lib/auth.js +117 -61
  298. package/dist/lib/collection-cache.js +23 -0
  299. package/dist/lib/draft-scope.d.ts +4 -0
  300. package/dist/lib/draft-scope.js +222 -0
  301. package/dist/lib/html.js +12 -0
  302. package/dist/lib/link-pages.js +154 -0
  303. package/dist/lib/locale-path.d.ts +22 -0
  304. package/dist/lib/locale-path.js +57 -0
  305. package/dist/lib/normalized-data.js +252 -152
  306. package/dist/lib/preview-handoff.js +2 -2
  307. package/dist/lib/queries.d.ts +11 -0
  308. package/dist/lib/queries.js +70 -141
  309. package/dist/lib/studio-reads.d.ts +14 -0
  310. package/dist/lib/studio-reads.js +574 -0
  311. package/dist/lib/use-project-room.js +50 -50
  312. package/dist/lib/use-thread.js +310 -0
  313. package/dist/lib/utils.js +25 -29
  314. package/dist/lib/view-locale-context.js +22 -0
  315. package/dist/lib/view-locale.js +46 -0
  316. package/dist/package.js +5 -0
  317. package/dist/studio-overlays.css +41 -151
  318. package/dist/studio.css +2 -2
  319. package/package.json +70 -73
  320. package/skills/camox/SKILL.md +16 -11
  321. package/skills/camox/references/artifacts.md +179 -0
  322. package/skills/camox/references/block-definitions.md +75 -59
  323. package/skills/camox/references/cli-common.md +9 -11
  324. package/skills/camox/references/cli-content.md +92 -69
  325. package/skills/camox/references/cli-publishing.md +26 -0
  326. package/skills/camox/references/dom-integrations.md +27 -0
  327. package/skills/camox/references/field-styling.md +4 -4
  328. package/skills/camox/references/layout-definitions.md +16 -14
  329. package/skills/camox/references/localization.md +56 -0
  330. package/skills/camox/references/routed-layouts.md +133 -15
  331. package/skills/camox-expand/SKILL.md +69 -0
  332. package/skills/camox-expand/references/jobs.md +39 -0
  333. package/skills/camoxify/SKILL.md +29 -7
  334. package/dist/core/components/AddBlockControlBar.js +0 -78
  335. package/dist/core/hooks/useRequireDraftSource.js +0 -23
  336. package/dist/features/metadata/sitemap.d.ts +0 -8
  337. package/dist/features/metadata/sitemap.js +0 -17
  338. package/dist/features/og/imageResponse.node.d.ts +0 -12
  339. package/dist/features/og/imageResponse.node.js +0 -49
  340. package/dist/features/og/imageResponse.workerd.d.ts +0 -12
  341. package/dist/features/og/imageResponse.workerd.js +0 -40
  342. package/dist/features/page/PublishedPageContent.js +0 -205
  343. package/dist/features/page/PublishedPageExperience.js +0 -23
  344. package/dist/features/preview/DerivedPreview.js +0 -134
  345. package/dist/features/preview/commentsEnabled.js +0 -8
  346. package/dist/features/preview/components/AddBlockSidebar.js +0 -381
  347. package/dist/features/preview/components/AttachedComments.js +0 -331
  348. package/dist/features/preview/components/CommentHeader.js +0 -122
  349. package/dist/features/preview/components/CommentSidebar.js +0 -29
  350. package/dist/features/preview/components/CommentTargetQuote.js +0 -167
  351. package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
  352. package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
  353. package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
  354. package/dist/features/preview/components/LeftSidebar.js +0 -68
  355. package/dist/features/preview/components/PageEditorSidebar.js +0 -563
  356. package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
  357. package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
  358. package/dist/features/preview/components/PageStatusBadge.js +0 -97
  359. package/dist/features/preview/components/PeekedBlock.js +0 -217
  360. package/dist/features/preview/components/PreviewComments.js +0 -56
  361. package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
  362. package/dist/features/preview/components/PublicationRow.js +0 -422
  363. package/dist/features/preview/components/PublishDialog.js +0 -194
  364. package/dist/features/preview/components/RightSidebar.js +0 -59
  365. package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
  366. package/dist/features/preview/previewCommentsStore.js +0 -135
  367. package/dist/features/preview/publication.js +0 -81
  368. package/dist/features/preview/usePageComments.js +0 -39
  369. package/dist/features/runtime/SharedChromeContext.js +0 -7
  370. package/dist/features/studio/components/EnvironmentMenu.js +0 -425
  371. package/dist/features/vite/appGeneration.js +0 -89
  372. package/dist/lib/view-queries.js +0 -28
  373. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
  374. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
  375. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
  376. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
  377. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
  378. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
  379. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
  380. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
  381. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
  382. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
  383. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
  384. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
  385. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
  386. 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
  387. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
  388. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
  389. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
  390. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
  391. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
  392. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
  393. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
  394. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
  395. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
  396. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
  397. 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
  398. 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
  399. 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
  400. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
  401. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
  402. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
  403. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
  404. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
  405. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
  406. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
  407. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
  408. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
  409. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
  410. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
  411. package/skills/camox/references/cli-environments.md +0 -37
@@ -1,35 +1,34 @@
1
1
  import { actionsStore } from "../../provider/actionsStore.js";
2
- import { usePageBlocks } from "../../../lib/normalized-data.js";
3
2
  import { useCamoxApp } from "../../provider/components/CamoxAppContext.js";
4
- import { blockMutations, repeatableItemMutations } from "../../../lib/queries.js";
3
+ import { usePageBlocks } from "../../../lib/normalized-data.js";
5
4
  import { formatShortcut } from "../../../lib/utils.js";
6
- import { previewStore, selectionItemId } from "../previewStore.js";
7
- import { useRequireDraftSource } from "../../../core/hooks/useRequireDraftSource.js";
5
+ import { blockMutations, repeatableItemMutations } from "../../../lib/queries.js";
6
+ import { isBlockSelection, previewStore, selectionForPage, selectionItemId } from "../previewStore.js";
8
7
  import { useUpdateBlockPosition } from "./useUpdateBlockPosition.js";
9
8
  import { usePreviewedPage } from "../CamoxPreview.js";
10
9
  import { c } from "react/compiler-runtime";
11
- import { useMutation } from "@tanstack/react-query";
12
10
  import * as React from "react";
13
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
11
  import { useSelector } from "@xstate/store-react";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ import { useMutation } from "@tanstack/react-query";
15
14
  import { Copy, Trash2 } from "lucide-react";
15
+ import { toast } from "@camox/ui/toaster";
16
16
  import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@camox/ui/alert-dialog";
17
+ import { Command as Command$1, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "@camox/ui/command";
17
18
  import { Popover, PopoverContent, PopoverTrigger } from "@camox/ui/popover";
18
- import { toast } from "@camox/ui/toaster";
19
- import { Command, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut } from "@camox/ui/command";
20
19
 
21
20
  //#region src/features/preview/components/BlockActionsPopover.tsx
22
- const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "start", isLayoutBlock, layoutPlacement }) => {
21
+ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "start", isLayoutBlock, layoutSlot }) => {
23
22
  const [blockToDelete, setBlockToDelete] = React.useState(null);
24
23
  const page = usePreviewedPage();
25
24
  const { pageBlocks } = usePageBlocks(page);
26
25
  const deleteBlock = useMutation(blockMutations.delete());
27
26
  const duplicateBlock = useMutation(blockMutations.duplicate());
28
27
  const deleteManyBlocks = useMutation(blockMutations.deleteMany());
29
- const handleDeleteBlock = async (block_0) => {
28
+ const handleDeleteBlock = async (block) => {
30
29
  try {
31
- await deleteBlock.mutateAsync({ id: block_0.id });
32
- toast.success(`Deleted "${block_0.summary || block_0.type}" block`);
30
+ await deleteBlock.mutateAsync({ id: block.id });
31
+ toast.success(`Deleted "${block.summary || block.type}" block`);
33
32
  } catch (error) {
34
33
  console.error("Failed to delete block:", error);
35
34
  toast.error("Could not delete block");
@@ -37,59 +36,59 @@ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "sta
37
36
  setBlockToDelete(null);
38
37
  }
39
38
  };
40
- const handleDuplicateBlock = async (block_1) => {
39
+ const handleDuplicateBlock = async (block) => {
41
40
  try {
42
- await duplicateBlock.mutateAsync({ id: block_1.id });
43
- toast.success(`Duplicated "${block_1.summary}" block`);
44
- } catch (error_0) {
45
- console.error("Failed to duplicate block:", error_0);
41
+ await duplicateBlock.mutateAsync({ id: block.id });
42
+ toast.success(`Duplicated "${block.summary}" block`);
43
+ } catch (error) {
44
+ console.error("Failed to duplicate block:", error);
46
45
  toast.error("Could not duplicate block");
47
46
  }
48
47
  };
49
- const handleAddBlockAbove = (block_2) => {
48
+ const handleAddBlockAbove = (block) => {
50
49
  if (!page) return;
51
- const blockIndex = pageBlocks.findIndex((b) => b.id === block_2.id);
50
+ const blockIndex = pageBlocks.findIndex((b) => b.id === block.id);
52
51
  const afterPosition = blockIndex > 0 ? pageBlocks[blockIndex - 1].position : "";
53
52
  previewStore.send({
54
- type: "openAddBlockSidebar",
53
+ type: "openAddBlockDialog",
55
54
  afterPosition
56
55
  });
57
56
  };
58
- const handleAddBlockBelow = (block_3) => {
57
+ const handleAddBlockBelow = (block) => {
59
58
  previewStore.send({
60
- type: "openAddBlockSidebar",
61
- afterPosition: block_3.position
59
+ type: "openAddBlockDialog",
60
+ afterPosition: block.position
62
61
  });
63
62
  };
64
- const getBlocksAbove = (block_4) => {
63
+ const getBlocksAbove = (block) => {
65
64
  if (!page) return [];
66
- const blockIndex_0 = pageBlocks.findIndex((b_0) => b_0.id === block_4.id);
67
- return pageBlocks.slice(0, blockIndex_0);
65
+ const blockIndex = pageBlocks.findIndex((b) => b.id === block.id);
66
+ return pageBlocks.slice(0, blockIndex);
68
67
  };
69
- const getBlocksBelow = (block_5) => {
68
+ const getBlocksBelow = (block) => {
70
69
  if (!page) return [];
71
- const blockIndex_1 = pageBlocks.findIndex((b_1) => b_1.id === block_5.id);
72
- return pageBlocks.slice(blockIndex_1 + 1);
70
+ const blockIndex = pageBlocks.findIndex((b) => b.id === block.id);
71
+ return pageBlocks.slice(blockIndex + 1);
73
72
  };
74
- const handleDeleteBlocksAbove = async (block_6) => {
75
- const blocksAbove = getBlocksAbove(block_6);
73
+ const handleDeleteBlocksAbove = async (block) => {
74
+ const blocksAbove = getBlocksAbove(block);
76
75
  if (blocksAbove.length === 0) return;
77
76
  try {
78
- await deleteManyBlocks.mutateAsync({ blockIds: blocksAbove.map((b_2) => b_2.id) });
77
+ await deleteManyBlocks.mutateAsync({ blockIds: blocksAbove.map((b) => b.id) });
79
78
  toast.success(`Deleted ${blocksAbove.length} block${blocksAbove.length === 1 ? "" : "s"}`);
80
- } catch (error_1) {
81
- console.error("Failed to delete blocks above:", error_1);
79
+ } catch (error) {
80
+ console.error("Failed to delete blocks above:", error);
82
81
  toast.error("Could not delete blocks");
83
82
  }
84
83
  };
85
- const handleDeleteBlocksBelow = async (block_7) => {
86
- const blocksBelow = getBlocksBelow(block_7);
84
+ const handleDeleteBlocksBelow = async (block) => {
85
+ const blocksBelow = getBlocksBelow(block);
87
86
  if (blocksBelow.length === 0) return;
88
87
  try {
89
- await deleteManyBlocks.mutateAsync({ blockIds: blocksBelow.map((b_3) => b_3.id) });
88
+ await deleteManyBlocks.mutateAsync({ blockIds: blocksBelow.map((b) => b.id) });
90
89
  toast.success(`Deleted ${blocksBelow.length} block${blocksBelow.length === 1 ? "" : "s"}`);
91
- } catch (error_2) {
92
- console.error("Failed to delete blocks below:", error_2);
90
+ } catch (error) {
91
+ console.error("Failed to delete blocks below:", error);
93
92
  toast.error("Could not delete blocks");
94
93
  }
95
94
  };
@@ -99,13 +98,13 @@ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "sta
99
98
  children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: children }), block && /* @__PURE__ */ jsx(PopoverContent, {
100
99
  className: "w-75 p-0",
101
100
  align,
102
- children: /* @__PURE__ */ jsxs(Command, { children: [/* @__PURE__ */ jsx(CommandInput, { placeholder: "Search actions..." }), /* @__PURE__ */ jsxs(CommandList, {
101
+ children: /* @__PURE__ */ jsxs(Command$1, { children: [/* @__PURE__ */ jsx(CommandInput, { placeholder: "Search actions..." }), /* @__PURE__ */ jsxs(CommandList, {
103
102
  className: "max-h-[350px]",
104
103
  children: [
105
- isLayoutBlock && layoutPlacement === "before" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(CommandItem, {
104
+ isLayoutBlock && layoutSlot === "before" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(CommandItem, {
106
105
  onSelect: () => {
107
106
  previewStore.send({
108
- type: "openAddBlockSidebar",
107
+ type: "openAddBlockDialog",
109
108
  afterPosition: ""
110
109
  });
111
110
  onOpenChange(false);
@@ -115,11 +114,11 @@ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "sta
115
114
  children: [/* @__PURE__ */ jsx("span", { className: "w-4" }), "Add block below"]
116
115
  })
117
116
  }) }) }),
118
- isLayoutBlock && layoutPlacement === "after" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(CommandItem, {
117
+ isLayoutBlock && layoutSlot === "after" && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx(CommandItem, {
119
118
  onSelect: () => {
120
119
  const lastPageBlock = pageBlocks[pageBlocks.length - 1];
121
120
  previewStore.send({
122
- type: "openAddBlockSidebar",
121
+ type: "openAddBlockDialog",
123
122
  afterPosition: lastPageBlock?.position
124
123
  });
125
124
  onOpenChange(false);
@@ -208,7 +207,7 @@ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "sta
208
207
  })]
209
208
  }), /* @__PURE__ */ jsx(AlertDialog, {
210
209
  open: !!blockToDelete,
211
- onOpenChange: (open_0) => !open_0 && setBlockToDelete(null),
210
+ onOpenChange: (open) => !open && setBlockToDelete(null),
212
211
  children: /* @__PURE__ */ jsxs(AlertDialogContent, { children: [/* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Delete block" }), /* @__PURE__ */ jsxs(AlertDialogDescription, { children: [
213
212
  "Are you sure you want to delete ",
214
213
  /* @__PURE__ */ jsx("strong", { children: blockToDelete?.summary }),
@@ -224,62 +223,68 @@ const BlockActionsPopover = ({ block, children, open, onOpenChange, align = "sta
224
223
  })] })] })
225
224
  })] });
226
225
  };
226
+ /** The page's selection when it is inside a block, which block actions apply to. */
227
+ function blockSelectionForPage(context, pageId) {
228
+ const selection = selectionForPage(context, pageId);
229
+ return isBlockSelection(selection) ? selection : null;
230
+ }
227
231
  function isLayoutBlockId(page, blockId) {
228
232
  if (!page?.layout) return false;
229
- return new Set([...page.layout.beforeBlockIds, ...page.layout.afterBlockIds]).has(blockId);
233
+ return (/* @__PURE__ */ new Set([...page.layout.beforeBlockIds, ...page.layout.afterBlockIds])).has(blockId);
230
234
  }
231
235
  function useBlockActionsShortcuts() {
232
- const $ = c(20);
233
- if ($[0] !== "a91fc105ded90c35296c42adc5eec1823e26e305818bf9026d22b67a24a3ca04") {
234
- for (let $i = 0; $i < 20; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
235
- $[0] = "a91fc105ded90c35296c42adc5eec1823e26e305818bf9026d22b67a24a3ca04";
236
- }
236
+ const $ = c(24);
237
237
  const camoxApp = useCamoxApp();
238
238
  const page = usePreviewedPage();
239
239
  const { pageBlocks } = usePageBlocks(page);
240
- const selection = useSelector(previewStore, _temp);
241
- const requireDraft = useRequireDraftSource();
242
240
  let t0;
243
- if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
244
- t0 = blockMutations.delete();
241
+ if ($[0] !== page.page.id) {
242
+ t0 = (state) => selectionForPage(state.context, page.page.id);
243
+ $[0] = page.page.id;
245
244
  $[1] = t0;
246
245
  } else t0 = $[1];
247
- const deleteBlockMutation = useMutation(t0);
246
+ const selection = useSelector(previewStore, t0);
248
247
  let t1;
249
248
  if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
250
- t1 = blockMutations.duplicate();
249
+ t1 = blockMutations.delete();
251
250
  $[2] = t1;
252
251
  } else t1 = $[2];
253
- const duplicateBlockMutation = useMutation(t1);
254
- const updatePositionMutation = useUpdateBlockPosition();
252
+ const { mutateAsync: deleteBlock } = useMutation(t1);
255
253
  let t2;
256
254
  if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
257
- t2 = repeatableItemMutations.delete();
255
+ t2 = blockMutations.duplicate();
258
256
  $[3] = t2;
259
257
  } else t2 = $[3];
260
- const deleteRepeatableItem = useMutation(t2);
258
+ const { mutateAsync: duplicateBlock } = useMutation(t2);
259
+ const { mutateAsync: updatePosition } = useUpdateBlockPosition();
261
260
  let t3;
262
261
  if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
263
- t3 = repeatableItemMutations.duplicate();
262
+ t3 = repeatableItemMutations.delete();
264
263
  $[4] = t3;
265
264
  } else t3 = $[4];
266
- const duplicateRepeatableItem = useMutation(t3);
265
+ const { mutateAsync: deleteRepeatableItem } = useMutation(t3);
267
266
  let t4;
268
- if ($[5] !== deleteBlockMutation || $[6] !== deleteRepeatableItem || $[7] !== duplicateBlockMutation || $[8] !== duplicateRepeatableItem || $[9] !== page || $[10] !== pageBlocks || $[11] !== requireDraft || $[12] !== updatePositionMutation) {
269
- t4 = () => {
267
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
268
+ t4 = repeatableItemMutations.duplicate();
269
+ $[5] = t4;
270
+ } else t4 = $[5];
271
+ const { mutateAsync: duplicateRepeatableItem } = useMutation(t4);
272
+ let t5;
273
+ if ($[6] !== deleteBlock || $[7] !== deleteRepeatableItem || $[8] !== duplicateBlock || $[9] !== duplicateRepeatableItem || $[10] !== page || $[11] !== pageBlocks || $[12] !== updatePosition) {
274
+ t5 = () => {
270
275
  const actions = [
271
276
  {
272
277
  id: "delete-selected",
273
278
  label: "Delete selected",
274
- groupLabel: "Preview",
279
+ groupLabel: "Website",
275
280
  shortcut: {
276
281
  key: "Backspace",
277
282
  withMeta: true
278
283
  },
279
284
  checkIfAvailable: () => {
280
285
  const ctx = previewStore.getSnapshot().context;
281
- if (ctx.mode !== "editing-draft") return false;
282
- const sel = ctx.selection;
286
+ if (ctx.view !== "canvas") return false;
287
+ const sel = blockSelectionForPage(ctx, page.page.id);
283
288
  if (!sel) return false;
284
289
  if (isLayoutBlockId(page, sel.blockId)) return false;
285
290
  const itemId = selectionItemId(sel);
@@ -296,126 +301,125 @@ function useBlockActionsShortcuts() {
296
301
  return pageBlocks.length > 1;
297
302
  },
298
303
  execute: () => {
299
- if (!requireDraft()) return;
300
- const sel_0 = previewStore.getSnapshot().context.selection;
304
+ const sel_0 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
301
305
  if (!sel_0) return;
302
306
  const itemId_0 = selectionItemId(sel_0);
303
307
  if (itemId_0 != null) {
304
- deleteRepeatableItem.mutateAsync({ id: itemId_0 }).then(_temp2, _temp3);
308
+ deleteRepeatableItem({ id: itemId_0 }).then(_temp4, _temp5);
305
309
  previewStore.send({ type: "selectParent" });
306
310
  return;
307
311
  }
308
312
  const block_0 = pageBlocks.find((b_0) => b_0.id === sel_0.blockId);
309
- deleteBlockMutation.mutateAsync({ id: sel_0.blockId }).then(() => toast.success(`Deleted "${block_0?.summary || block_0?.type}" block`), _temp4);
313
+ deleteBlock({ id: sel_0.blockId }).then(() => toast.success(`Deleted "${block_0?.summary || block_0?.type}" block`), _temp6);
310
314
  previewStore.send({ type: "clearSelection" });
311
315
  }
312
316
  },
313
317
  {
314
318
  id: "duplicate-selected",
315
319
  label: "Duplicate selected",
316
- groupLabel: "Preview",
320
+ groupLabel: "Website",
317
321
  shortcut: {
318
322
  key: "d",
319
323
  withMeta: true
320
324
  },
321
325
  checkIfAvailable: () => {
322
326
  const ctx_0 = previewStore.getSnapshot().context;
323
- if (ctx_0.mode !== "editing-draft") return false;
324
- const sel_1 = ctx_0.selection;
327
+ if (ctx_0.view !== "canvas") return false;
328
+ const sel_1 = blockSelectionForPage(ctx_0, page.page.id);
325
329
  if (!sel_1) return false;
326
330
  if (isLayoutBlockId(page, sel_1.blockId)) return false;
327
331
  return true;
328
332
  },
329
333
  execute: () => {
330
- if (!requireDraft()) return;
331
- const sel_2 = previewStore.getSnapshot().context.selection;
334
+ const sel_2 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
332
335
  if (!sel_2) return;
333
336
  const itemId_1 = selectionItemId(sel_2);
334
337
  if (itemId_1 != null) {
335
- duplicateRepeatableItem.mutateAsync({ id: itemId_1 }).then(_temp5, _temp6);
338
+ duplicateRepeatableItem({ id: itemId_1 }).then(_temp7, _temp8);
336
339
  return;
337
340
  }
338
341
  const block_1 = pageBlocks.find((b_1) => b_1.id === sel_2.blockId);
339
- duplicateBlockMutation.mutateAsync({ id: sel_2.blockId }).then(() => toast.success(`Duplicated "${block_1?.summary}" block`), _temp7);
342
+ duplicateBlock({ id: sel_2.blockId }).then(() => toast.success(`Duplicated "${block_1?.summary}" block`), _temp9);
340
343
  }
341
344
  },
342
345
  {
343
346
  id: "move-block-up",
344
347
  label: "Move block up",
345
- groupLabel: "Preview",
348
+ groupLabel: "Website",
346
349
  shortcut: {
347
350
  key: "ArrowUp",
348
351
  withAlt: true
349
352
  },
350
353
  checkIfAvailable: () => {
351
354
  const ctx_1 = previewStore.getSnapshot().context;
352
- if (ctx_1.mode !== "editing-draft") return false;
353
- const sel_3 = ctx_1.selection;
355
+ if (ctx_1.view !== "canvas") return false;
356
+ const sel_3 = blockSelectionForPage(ctx_1, page.page.id);
354
357
  if (!sel_3 || !page) return false;
355
358
  if (isLayoutBlockId(page, sel_3.blockId)) return false;
356
359
  return pageBlocks.findIndex((b_2) => b_2.id === sel_3.blockId) > 0;
357
360
  },
358
361
  execute: () => {
359
- if (!requireDraft()) return;
360
- const sel_4 = previewStore.getSnapshot().context.selection;
362
+ const sel_4 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
361
363
  if (!sel_4 || !page) return;
362
364
  const index_0 = pageBlocks.findIndex((b_3) => b_3.id === sel_4.blockId);
363
365
  if (index_0 <= 0) return;
364
366
  const afterPosition = index_0 > 1 ? pageBlocks[index_0 - 2].position : void 0;
365
367
  const beforePosition = pageBlocks[index_0 - 1].position;
366
- updatePositionMutation.mutateAsync({
368
+ updatePosition({
367
369
  id: sel_4.blockId,
368
370
  afterPosition,
369
371
  beforePosition
370
- }).then(_temp8, _temp9);
372
+ }).then(_temp10, _temp11);
371
373
  }
372
374
  },
373
375
  {
374
376
  id: "move-block-down",
375
377
  label: "Move block down",
376
- groupLabel: "Preview",
378
+ groupLabel: "Website",
377
379
  shortcut: {
378
380
  key: "ArrowDown",
379
381
  withAlt: true
380
382
  },
381
383
  checkIfAvailable: () => {
382
384
  const ctx_2 = previewStore.getSnapshot().context;
383
- if (ctx_2.mode !== "editing-draft") return false;
384
- const sel_5 = ctx_2.selection;
385
+ if (ctx_2.view !== "canvas") return false;
386
+ const sel_5 = blockSelectionForPage(ctx_2, page.page.id);
385
387
  if (!sel_5 || !page) return false;
386
388
  if (isLayoutBlockId(page, sel_5.blockId)) return false;
387
389
  const index_1 = pageBlocks.findIndex((b_4) => b_4.id === sel_5.blockId);
388
390
  return index_1 !== -1 && index_1 < pageBlocks.length - 1;
389
391
  },
390
392
  execute: () => {
391
- if (!requireDraft()) return;
392
- const sel_6 = previewStore.getSnapshot().context.selection;
393
+ const sel_6 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
393
394
  if (!sel_6 || !page) return;
394
395
  const index_2 = pageBlocks.findIndex((b_5) => b_5.id === sel_6.blockId);
395
396
  if (index_2 === -1 || index_2 >= pageBlocks.length - 1) return;
396
397
  const afterPosition_0 = pageBlocks[index_2 + 1].position;
397
398
  const beforePosition_0 = index_2 + 2 < pageBlocks.length ? pageBlocks[index_2 + 2].position : void 0;
398
- updatePositionMutation.mutateAsync({
399
+ updatePosition({
399
400
  id: sel_6.blockId,
400
401
  afterPosition: afterPosition_0,
401
402
  beforePosition: beforePosition_0
402
- }).then(_temp0, _temp1);
403
+ }).then(_temp12, _temp13);
403
404
  }
404
405
  },
405
406
  {
406
407
  id: "add-block-below",
407
408
  label: "Add block below",
408
- groupLabel: "Preview",
409
+ groupLabel: "Website",
409
410
  shortcut: { key: "o" },
410
- checkIfAvailable: _temp10,
411
+ checkIfAvailable: () => {
412
+ const ctx_3 = previewStore.getSnapshot().context;
413
+ if (ctx_3.view !== "canvas") return false;
414
+ return blockSelectionForPage(ctx_3, page.page.id) !== null;
415
+ },
411
416
  execute: () => {
412
- if (!requireDraft()) return;
413
- const sel_7 = previewStore.getSnapshot().context.selection;
417
+ const sel_7 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
414
418
  if (!sel_7 || !page) return;
415
419
  const block_2 = pageBlocks.find((b_6) => b_6.id === sel_7.blockId);
416
420
  if (!block_2) return;
417
421
  previewStore.send({
418
- type: "openAddBlockSidebar",
422
+ type: "openAddBlockDialog",
419
423
  afterPosition: block_2.position
420
424
  });
421
425
  }
@@ -423,21 +427,24 @@ function useBlockActionsShortcuts() {
423
427
  {
424
428
  id: "add-block-above",
425
429
  label: "Add block above",
426
- groupLabel: "Preview",
430
+ groupLabel: "Website",
427
431
  shortcut: {
428
432
  key: "o",
429
433
  withShift: true
430
434
  },
431
- checkIfAvailable: _temp11,
435
+ checkIfAvailable: () => {
436
+ const ctx_4 = previewStore.getSnapshot().context;
437
+ if (ctx_4.view !== "canvas") return false;
438
+ return blockSelectionForPage(ctx_4, page.page.id) !== null;
439
+ },
432
440
  execute: () => {
433
- if (!requireDraft()) return;
434
- const sel_8 = previewStore.getSnapshot().context.selection;
441
+ const sel_8 = blockSelectionForPage(previewStore.getSnapshot().context, page.page.id);
435
442
  if (!sel_8 || !page) return;
436
443
  const blockIndex = pageBlocks.findIndex((b_7) => b_7.id === sel_8.blockId);
437
444
  if (blockIndex === -1) return;
438
445
  const afterPosition_1 = blockIndex > 0 ? pageBlocks[blockIndex - 1].position : "";
439
446
  previewStore.send({
440
- type: "openAddBlockSidebar",
447
+ type: "openAddBlockDialog",
441
448
  afterPosition: afterPosition_1
442
449
  });
443
450
  }
@@ -450,80 +457,74 @@ function useBlockActionsShortcuts() {
450
457
  return () => {
451
458
  actionsStore.send({
452
459
  type: "unregisterManyActions",
453
- ids: actions.map(_temp12)
460
+ ids: actions.map(_temp14)
454
461
  });
455
462
  };
456
463
  };
457
- $[5] = deleteBlockMutation;
458
- $[6] = deleteRepeatableItem;
459
- $[7] = duplicateBlockMutation;
460
- $[8] = duplicateRepeatableItem;
461
- $[9] = page;
462
- $[10] = pageBlocks;
463
- $[11] = requireDraft;
464
- $[12] = updatePositionMutation;
465
- $[13] = t4;
466
- } else t4 = $[13];
467
- let t5;
468
- if ($[14] !== camoxApp || $[15] !== page || $[16] !== pageBlocks || $[17] !== requireDraft || $[18] !== selection) {
469
- t5 = [
464
+ $[6] = deleteBlock;
465
+ $[7] = deleteRepeatableItem;
466
+ $[8] = duplicateBlock;
467
+ $[9] = duplicateRepeatableItem;
468
+ $[10] = page;
469
+ $[11] = pageBlocks;
470
+ $[12] = updatePosition;
471
+ $[13] = t5;
472
+ } else t5 = $[13];
473
+ let t6;
474
+ if ($[14] !== camoxApp || $[15] !== deleteBlock || $[16] !== deleteRepeatableItem || $[17] !== duplicateBlock || $[18] !== duplicateRepeatableItem || $[19] !== page || $[20] !== pageBlocks || $[21] !== selection || $[22] !== updatePosition) {
475
+ t6 = [
470
476
  selection,
471
477
  page,
472
478
  pageBlocks,
473
479
  camoxApp,
474
- requireDraft
480
+ deleteBlock,
481
+ duplicateBlock,
482
+ updatePosition,
483
+ deleteRepeatableItem,
484
+ duplicateRepeatableItem
475
485
  ];
476
486
  $[14] = camoxApp;
477
- $[15] = page;
478
- $[16] = pageBlocks;
479
- $[17] = requireDraft;
480
- $[18] = selection;
481
- $[19] = t5;
482
- } else t5 = $[19];
483
- React.useEffect(t4, t5);
487
+ $[15] = deleteBlock;
488
+ $[16] = deleteRepeatableItem;
489
+ $[17] = duplicateBlock;
490
+ $[18] = duplicateRepeatableItem;
491
+ $[19] = page;
492
+ $[20] = pageBlocks;
493
+ $[21] = selection;
494
+ $[22] = updatePosition;
495
+ $[23] = t6;
496
+ } else t6 = $[23];
497
+ React.useEffect(t5, t6);
484
498
  }
485
- function _temp12(a) {
499
+ function _temp14(a) {
486
500
  return a.id;
487
501
  }
488
- function _temp11() {
489
- const ctx_4 = previewStore.getSnapshot().context;
490
- if (ctx_4.mode !== "editing-draft") return false;
491
- return ctx_4.selection !== null;
492
- }
493
- function _temp10() {
494
- const ctx_3 = previewStore.getSnapshot().context;
495
- if (ctx_3.mode !== "editing-draft") return false;
496
- return ctx_3.selection !== null;
497
- }
498
- function _temp1() {
502
+ function _temp13() {
499
503
  return toast.error("Could not move block");
500
504
  }
501
- function _temp0() {}
502
- function _temp9() {
505
+ function _temp12() {}
506
+ function _temp11() {
503
507
  return toast.error("Could not move block");
504
508
  }
505
- function _temp8() {}
506
- function _temp7() {
509
+ function _temp10() {}
510
+ function _temp9() {
507
511
  return toast.error("Could not duplicate block");
508
512
  }
509
- function _temp6() {
513
+ function _temp8() {
510
514
  return toast.error("Could not duplicate item");
511
515
  }
512
- function _temp5() {
516
+ function _temp7() {
513
517
  return toast.success("Duplicated item");
514
518
  }
515
- function _temp4() {
519
+ function _temp6() {
516
520
  return toast.error("Could not delete block");
517
521
  }
518
- function _temp3() {
522
+ function _temp5() {
519
523
  return toast.error("Could not delete item");
520
524
  }
521
- function _temp2() {
525
+ function _temp4() {
522
526
  return toast.success("Deleted item");
523
527
  }
524
- function _temp(state) {
525
- return state.context.selection;
526
- }
527
528
 
528
529
  //#endregion
529
530
  export { BlockActionsPopover, useBlockActionsShortcuts };
@@ -35,27 +35,23 @@ var BlockErrorBoundaryInner = class extends React.Component {
35
35
  }
36
36
  };
37
37
  const BlockErrorBoundary = (t0) => {
38
- const $ = c(6);
39
- if ($[0] !== "46b0d65b4c2052002160e1a82931512b726f6f897f121eb303d9f5030172ca60") {
40
- for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
41
- $[0] = "46b0d65b4c2052002160e1a82931512b726f6f897f121eb303d9f5030172ca60";
42
- }
38
+ const $ = c(5);
43
39
  const { blockId, blockType, children } = t0;
44
40
  const isAuthenticated = useIsAuthenticated();
45
41
  let t1;
46
- if ($[1] !== blockId || $[2] !== blockType || $[3] !== children || $[4] !== isAuthenticated) {
42
+ if ($[0] !== blockId || $[1] !== blockType || $[2] !== children || $[3] !== isAuthenticated) {
47
43
  t1 = /* @__PURE__ */ jsx(BlockErrorBoundaryInner, {
48
44
  blockId,
49
45
  blockType,
50
46
  isAuthenticated,
51
47
  children
52
48
  });
53
- $[1] = blockId;
54
- $[2] = blockType;
55
- $[3] = children;
56
- $[4] = isAuthenticated;
57
- $[5] = t1;
58
- } else t1 = $[5];
49
+ $[0] = blockId;
50
+ $[1] = blockType;
51
+ $[2] = children;
52
+ $[3] = isAuthenticated;
53
+ $[4] = t1;
54
+ } else t1 = $[4];
59
55
  return t1;
60
56
  };
61
57