camox 0.43.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 (412) hide show
  1. package/bin/camox.mjs +9 -1
  2. package/dist/components/AuthGate.js +0 -6
  3. package/dist/components/DeviceSelector.js +96 -0
  4. package/dist/components/PlatformLabel.js +20 -24
  5. package/dist/core/components/lexical/HighlightNode.js +1 -1
  6. package/dist/core/components/lexical/InlineContentEditable.js +15 -19
  7. package/dist/core/components/lexical/InlineLexicalEditor.js +54 -74
  8. package/dist/core/components/lexical/InlineStylesPlugin.js +57 -41
  9. package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
  10. package/dist/core/components/lexical/SelectionBroadcaster.js +55 -56
  11. package/dist/core/components/lexical/SidebarLexicalEditor.js +327 -234
  12. package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
  13. package/dist/core/components/lexical/TextLinkPopover.js +169 -180
  14. package/dist/core/createApp.d.ts +254 -299
  15. package/dist/core/createApp.js +123 -29
  16. package/dist/core/createBlock.d.ts +5 -5
  17. package/dist/core/createBlock.js +399 -152
  18. package/dist/core/createCollection.d.ts +55 -0
  19. package/dist/core/createCollection.js +93 -0
  20. package/dist/core/createLayout.d.ts +197 -61
  21. package/dist/core/createLayout.js +114 -56
  22. package/dist/core/defineDocument.d.ts +3 -5
  23. package/dist/core/derivedRoutes.js +49 -1
  24. package/dist/core/dom.d.ts +13 -4
  25. package/dist/core/dom.js +44 -1
  26. package/dist/core/editing/BlockEditingRuntime.d.ts +16 -0
  27. package/dist/core/editing/BlockEditingRuntime.js +6 -15
  28. package/dist/core/editing/CompleteBlockEditingRuntime.js +28 -23
  29. package/dist/core/editing/createEditableBlock.d.ts +820 -565
  30. package/dist/core/editing/createEditableBlock.js +2153 -971
  31. package/dist/core/editing/referenceWrites.js +51 -0
  32. package/dist/core/editing/useLatestRecord.js +90 -0
  33. package/dist/core/hooks/useArtifactHost.js +139 -0
  34. package/dist/core/hooks/useFieldSelection.js +43 -18
  35. package/dist/core/hooks/useIsEditable.js +12 -10
  36. package/dist/core/hooks/useOverlayMessage.js +15 -19
  37. package/dist/core/lib/artifact.d.ts +21 -0
  38. package/dist/core/lib/artifact.js +154 -0
  39. package/dist/core/lib/artifactColors.js +123 -0
  40. package/dist/core/lib/artifactData.d.ts +1 -0
  41. package/dist/core/lib/artifactData.js +131 -0
  42. package/dist/core/lib/artifactHost.js +205 -0
  43. package/dist/core/lib/artifactRuntime.js +36 -0
  44. package/dist/core/lib/artifactTheme.js +57 -0
  45. package/dist/core/lib/contentType.d.ts +304 -103
  46. package/dist/core/lib/contentType.js +207 -168
  47. package/dist/core/lib/fieldTypes.js +4 -0
  48. package/dist/core/lib/iconTypes.d.ts +13 -0
  49. package/dist/core/lib/icons.d.ts +6 -0
  50. package/dist/core/lib/icons.js +126 -0
  51. package/dist/core/lib/imagePlaceholder.js +177 -0
  52. package/dist/core/lib/imageTransform.js +1 -1
  53. package/dist/core/lib/lexicalReact.d.ts +3 -1
  54. package/dist/core/lib/lexicalState.js +7 -7
  55. package/dist/core/lib/modifierFormats.js +1 -1
  56. package/dist/core/lib/previewPaused.js +9 -0
  57. package/dist/core/lib/recordScope.js +316 -0
  58. package/dist/core/lib/reference.d.ts +81 -0
  59. package/dist/core/lib/reference.js +29 -0
  60. package/dist/core/lib/textLinks.js +7 -5
  61. package/dist/core/lib/textStyles.d.ts +6 -8
  62. package/dist/core/lib/textStyles.js +5 -5
  63. package/dist/core/notFound.d.ts +7 -0
  64. package/dist/core/notFound.js +11 -0
  65. package/dist/core/pageDestinations.js +6 -3
  66. package/dist/core/recordItem.js +34 -0
  67. package/dist/core/requestContext.d.ts +26 -0
  68. package/dist/core/requestContext.js +20 -0
  69. package/dist/features/canvas/CamoxCanvas.js +1734 -0
  70. package/dist/features/canvas/CanvasBlockFrame.js +353 -0
  71. package/dist/features/canvas/CanvasBlockHeader.js +55 -0
  72. package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
  73. package/dist/features/canvas/CanvasOverlays.js +254 -0
  74. package/dist/features/canvas/CanvasPageEdge.js +87 -0
  75. package/dist/features/canvas/CanvasPageFrame.js +335 -0
  76. package/dist/features/canvas/CanvasPageHeader.js +125 -0
  77. package/dist/features/canvas/CanvasPreviewPageSlot.js +103 -0
  78. package/dist/features/canvas/CanvasShelfMarker.js +255 -0
  79. package/dist/features/canvas/DerivedPagePathInput.js +238 -0
  80. package/dist/features/canvas/canvasCamera.js +229 -0
  81. package/dist/features/canvas/canvasFlight.js +104 -0
  82. package/dist/features/canvas/canvasFrameCapture.js +364 -0
  83. package/dist/features/canvas/canvasFrameDocument.js +317 -0
  84. package/dist/features/canvas/canvasFrameMode.js +53 -0
  85. package/dist/features/canvas/canvasInsertionSeams.js +44 -0
  86. package/dist/features/canvas/canvasItems.js +120 -0
  87. package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
  88. package/dist/features/canvas/canvasPages.js +79 -0
  89. package/dist/features/canvas/canvasScreenSpace.js +26 -0
  90. package/dist/features/canvas/canvasSelection.js +18 -0
  91. package/dist/features/canvas/canvasStore.js +149 -0
  92. package/dist/features/canvas/canvasThumbnails.js +304 -0
  93. package/dist/features/canvas/canvasZoom.js +10 -0
  94. package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
  95. package/dist/features/canvas/sidebar/CanvasNavigator.js +226 -0
  96. package/dist/features/canvas/sidebar/CanvasSidebar.js +60 -0
  97. package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
  98. package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
  99. package/dist/features/canvas/sidebar/CatalogBlockInspector.js +189 -0
  100. package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
  101. package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
  102. package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
  103. package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
  104. package/dist/features/canvas/sidebar/PageInspector.js +157 -0
  105. package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
  106. package/dist/features/canvas/sidebar/PageOverview.js +27 -0
  107. package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
  108. package/dist/features/canvas/useCanvasCamera.js +803 -0
  109. package/dist/features/canvas/useCanvasFrame.js +149 -0
  110. package/dist/features/canvas/useCanvasFrameInput.js +97 -0
  111. package/dist/features/canvas/useCanvasNearness.js +57 -0
  112. package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
  113. package/dist/features/content/CamoxContent.d.ts +2 -5
  114. package/dist/features/content/CamoxContent.js +174 -271
  115. package/dist/features/content/CollectionItemSheetContext.js +106 -0
  116. package/dist/features/content/ContentAssets.js +315 -0
  117. package/dist/features/content/ContentCollection.js +663 -0
  118. package/dist/features/content/collection-form.js +58 -0
  119. package/dist/features/content/components/AssetCard.js +101 -69
  120. package/dist/features/content/components/AssetCardSkeleton.js +4 -8
  121. package/dist/features/content/components/ContentSidebar.js +129 -18
  122. package/dist/features/content/components/ContentSidebarGroup.js +37 -0
  123. package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
  124. package/dist/features/content/components/MissingFromLocale.js +282 -0
  125. package/dist/features/content/components/UploadDropZone.js +27 -31
  126. package/dist/features/content/components/UploadProgressDrawer.js +90 -98
  127. package/dist/features/navigation/navigation.d.ts +66 -20
  128. package/dist/features/navigation/navigation.js +257 -90
  129. package/dist/features/og/defaultFonts.js +8 -8
  130. package/dist/features/og/geist-variable-ttf-base64.js +1 -1
  131. package/dist/features/og/imageResponse.d.ts +8 -0
  132. package/dist/features/og/imageResponse.js +26 -0
  133. package/dist/features/page/CuratedPageContent.js +167 -0
  134. package/dist/features/page/DerivedPageContent.js +26 -30
  135. package/dist/features/page/SharedLayoutContent.js +25 -27
  136. package/dist/features/preview/CamoxPreview.d.ts +23 -61
  137. package/dist/features/preview/CamoxPreview.js +811 -507
  138. package/dist/features/preview/EditablePageContent.js +1 -1
  139. package/dist/features/preview/EditablePageExperience.js +16 -22
  140. package/dist/features/preview/components/AddBlockDialog.js +270 -0
  141. package/dist/features/preview/components/AssetFieldEditor.js +173 -154
  142. package/dist/features/preview/components/AssetLightbox.js +194 -136
  143. package/dist/features/preview/components/AssetPickerModal.js +153 -170
  144. package/dist/features/preview/components/BlockActionsPopover.js +150 -149
  145. package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
  146. package/dist/features/preview/components/BlockThumbnail.js +176 -100
  147. package/dist/features/preview/components/CanvasPreview.js +243 -0
  148. package/dist/features/preview/components/CreatePageModal.js +128 -137
  149. package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
  150. package/dist/features/preview/components/DerivedLayoutDialog.js +46 -29
  151. package/dist/features/preview/components/DrillRow.js +150 -0
  152. package/dist/features/preview/components/FieldOverlayStyles.js +33 -10
  153. package/dist/features/preview/components/FieldToolbar.js +166 -116
  154. package/dist/features/preview/components/Frame.js +108 -20
  155. package/dist/features/preview/components/IconFieldEditor.js +227 -0
  156. package/dist/features/preview/components/ItemFieldsEditor.js +238 -205
  157. package/dist/features/preview/components/LinkFieldEditor.js +135 -139
  158. package/dist/features/preview/components/Metadata.js +22 -30
  159. package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
  160. package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
  161. package/dist/features/preview/components/OverlayTracker.js +10 -42
  162. package/dist/features/preview/components/Overlays.js +81 -69
  163. package/dist/features/preview/components/PageInfo.js +1748 -0
  164. package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
  165. package/dist/features/preview/components/PageLocationFieldset.js +112 -116
  166. package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
  167. package/dist/features/preview/components/PageNicknameField.js +22 -26
  168. package/dist/features/preview/components/PagePicker.js +145 -147
  169. package/dist/features/preview/components/PageTree.js +525 -532
  170. package/dist/features/preview/components/PreviewActivation.js +28 -32
  171. package/dist/features/preview/components/PreviewPanel.js +620 -319
  172. package/dist/features/preview/components/PreviewToolbar.js +111 -340
  173. package/dist/features/preview/components/RecordCard.js +80 -0
  174. package/dist/features/preview/components/RecordCombobox.js +178 -0
  175. package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
  176. package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
  177. package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
  178. package/dist/features/preview/components/RepeatableItemsList.js +125 -138
  179. package/dist/features/preview/components/SelectionEditor.js +993 -0
  180. package/dist/features/preview/components/ShikiMarkdown.js +14 -18
  181. package/dist/features/preview/components/SidebarSection.js +52 -64
  182. package/dist/features/preview/components/StudioEditingFallback.js +56 -0
  183. package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
  184. package/dist/features/preview/components/blockGridNavigation.js +15 -0
  185. package/dist/features/preview/components/contentFieldSchema.js +8 -0
  186. package/dist/features/preview/components/useFieldWriter.js +200 -0
  187. package/dist/features/preview/components/useRecordView.js +383 -0
  188. package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
  189. package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
  190. package/dist/features/preview/editingFrame.js +197 -0
  191. package/dist/features/preview/overlayHighlights.js +27 -0
  192. package/dist/features/preview/overlayMessages.js +72 -1
  193. package/dist/features/preview/pageRecord.js +189 -0
  194. package/dist/features/preview/previewConstants.js +6 -2
  195. package/dist/features/preview/previewPageFrame.js +95 -0
  196. package/dist/features/preview/previewPreparation.js +7 -0
  197. package/dist/features/preview/previewSelection.js +33 -59
  198. package/dist/features/preview/previewStore.js +225 -123
  199. package/dist/features/preview/referencePickerFocus.js +29 -0
  200. package/dist/features/preview/repeatableItemTargets.js +56 -0
  201. package/dist/features/preview/selectionReveal.js +21 -0
  202. package/dist/features/preview/usePreviewViewportActions.js +114 -0
  203. package/dist/features/preview/viewportContinuity.js +109 -0
  204. package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
  205. package/dist/features/provider/CamoxProvider.d.ts +3 -6
  206. package/dist/features/provider/CamoxProvider.js +38 -50
  207. package/dist/features/provider/CoreCamoxProvider.js +71 -23
  208. package/dist/features/provider/LocalhostPreviewProvider.js +73 -73
  209. package/dist/features/provider/PreviewSignInPage.js +54 -0
  210. package/dist/features/provider/components/CamoxAppContext.js +11 -11
  211. package/dist/features/provider/components/CommandPalette.js +87 -143
  212. package/dist/features/provider/useAdminShortcuts.js +7 -11
  213. package/dist/features/routes/pageRuntime.d.ts +44 -4
  214. package/dist/features/routes/pageRuntime.js +244 -137
  215. package/dist/features/runtime/RuntimeChrome.js +117 -115
  216. package/dist/features/runtime/alternates.js +64 -0
  217. package/dist/features/runtime/analytics.d.ts +7 -0
  218. package/dist/features/runtime/analytics.js +66 -0
  219. package/dist/features/runtime/artifactSources.js +87 -0
  220. package/dist/features/runtime/editingFallback.js +20 -0
  221. package/dist/features/runtime/linkPrefetch.js +97 -0
  222. package/dist/features/runtime/livePages.js +62 -0
  223. package/dist/features/runtime/llmsTxt.js +40 -0
  224. package/dist/features/runtime/loopbackFetch.js +18 -0
  225. package/dist/features/runtime/navigationAccessibility.js +51 -0
  226. package/dist/features/runtime/navigationTarget.js +23 -2
  227. package/dist/features/runtime/pageApp.js +216 -141
  228. package/dist/features/runtime/pageBlockTypes.js +20 -0
  229. package/dist/features/runtime/pageClient.d.ts +2 -4
  230. package/dist/features/runtime/pageClient.js +18 -3
  231. package/dist/features/runtime/pageNavigation.js +254 -32
  232. package/dist/features/runtime/pageServer.d.ts +2 -4
  233. package/dist/features/runtime/pageServer.js +8 -1
  234. package/dist/features/runtime/pageViewport.js +7 -0
  235. package/dist/features/runtime/runtime.d.ts +60 -23
  236. package/dist/features/runtime/runtime.js +779 -166
  237. package/dist/features/runtime/runtimeChromeLoader.js +58 -0
  238. package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
  239. package/dist/features/runtime/runtimeRoutes.js +25 -0
  240. package/dist/features/runtime/scrollRestoration.js +133 -0
  241. package/dist/features/runtime/studioApp.d.ts +4 -3
  242. package/dist/features/runtime/studioApp.js +5 -9
  243. package/dist/features/runtime/studioClient.d.ts +2 -4
  244. package/dist/features/runtime/studioClient.js +12 -3
  245. package/dist/features/runtime/studioServer.d.ts +2 -4
  246. package/dist/features/runtime/studioServer.js +6 -1
  247. package/dist/features/runtime/worker.d.ts +6 -0
  248. package/dist/features/runtime/worker.js +23 -0
  249. package/dist/features/runtime/workerRequest.js +44 -0
  250. package/dist/features/studio/CamoxStudio.d.ts +2 -6
  251. package/dist/features/studio/CamoxStudio.js +34 -49
  252. package/dist/features/studio/FollowAgentProvider.js +338 -0
  253. package/dist/features/studio/components/ChatSidebar.js +356 -0
  254. package/dist/features/studio/components/DraftsControl.js +676 -0
  255. package/dist/features/studio/components/FaviconDialog.js +318 -0
  256. package/dist/features/studio/components/LocalePicker.js +785 -0
  257. package/dist/features/studio/components/Navbar.js +123 -103
  258. package/dist/features/studio/components/ProjectMenu.js +239 -260
  259. package/dist/features/studio/components/RenameDraftDialog.js +206 -0
  260. package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
  261. package/dist/features/studio/components/ThreadComposer.js +157 -0
  262. package/dist/features/studio/components/ThreadMarkdown.js +113 -0
  263. package/dist/features/studio/components/ThreadMessages.js +270 -0
  264. package/dist/features/studio/components/UserButton.js +34 -23
  265. package/dist/features/studio/draftLabel.js +33 -0
  266. package/dist/features/studio/draftNotice.js +13 -0
  267. package/dist/features/studio/followAgent.js +250 -0
  268. package/dist/features/studio/followAgentContext.js +7 -0
  269. package/dist/features/studio/localeOptions.js +118 -0
  270. package/dist/features/studio/localeSwitch.js +19 -0
  271. package/dist/features/studio/routes.js +48 -1
  272. package/dist/features/studio/studioStore.js +64 -1
  273. package/dist/features/studio/useTheme.js +24 -27
  274. package/dist/features/vite/artifactRuntimeMinification.js +36 -0
  275. package/dist/features/vite/auth.js +1 -50
  276. package/dist/features/vite/blockBoilerplate.js +6 -5
  277. package/dist/features/vite/blockChunks.js +31 -0
  278. package/dist/features/vite/bundlerLogs.js +17 -0
  279. package/dist/features/vite/definitionsSync.js +158 -226
  280. package/dist/features/vite/devAuthentication.js +4 -16
  281. package/dist/features/vite/devSignIn.js +87 -0
  282. package/dist/features/vite/iconGeneration.js +16 -0
  283. package/dist/features/vite/layoutGeneration.js +11 -1
  284. package/dist/features/vite/publishSeededContent.js +30 -0
  285. package/dist/features/vite/routeGeneration.js +6 -7
  286. package/dist/features/vite/runtimeDev.js +80 -99
  287. package/dist/features/vite/vite.d.ts +53 -31
  288. package/dist/features/vite/vite.js +230 -116
  289. package/dist/features/vite/workerBuild.js +39 -0
  290. package/dist/hooks/use-debounced-field.js +116 -47
  291. package/dist/hooks/use-file-upload.js +114 -67
  292. package/dist/hooks/use-marquee-selection.js +32 -36
  293. package/dist/hooks/use-page-destinations.js +69 -37
  294. package/dist/lib/api-client-server.d.ts +5 -0
  295. package/dist/lib/api-client-server.js +10 -4
  296. package/dist/lib/api-client.d.ts +6 -0
  297. package/dist/lib/api-client.js +51 -16
  298. package/dist/lib/api-socket.js +17 -0
  299. package/dist/lib/auth-page-styles.js +39 -0
  300. package/dist/lib/auth.js +139 -60
  301. package/dist/lib/collection-cache.js +23 -0
  302. package/dist/lib/draft-scope.d.ts +4 -0
  303. package/dist/lib/draft-scope.js +222 -0
  304. package/dist/lib/html.js +12 -0
  305. package/dist/lib/link-pages.js +154 -0
  306. package/dist/lib/locale-path.d.ts +22 -0
  307. package/dist/lib/locale-path.js +57 -0
  308. package/dist/lib/normalized-data.js +252 -152
  309. package/dist/lib/preview-handoff.js +13 -0
  310. package/dist/lib/queries.d.ts +11 -0
  311. package/dist/lib/queries.js +71 -131
  312. package/dist/lib/studio-reads.d.ts +14 -0
  313. package/dist/lib/studio-reads.js +574 -0
  314. package/dist/lib/use-project-room.js +50 -47
  315. package/dist/lib/use-thread.js +310 -0
  316. package/dist/lib/utils.js +25 -29
  317. package/dist/lib/view-locale-context.js +22 -0
  318. package/dist/lib/view-locale.js +46 -0
  319. package/dist/package.js +5 -0
  320. package/dist/studio-overlays.css +41 -147
  321. package/dist/studio.css +2 -2
  322. package/package.json +70 -72
  323. package/skills/camox/SKILL.md +16 -5
  324. package/skills/camox/references/artifacts.md +179 -0
  325. package/skills/camox/references/block-definitions.md +98 -55
  326. package/skills/camox/references/cli-common.md +18 -6
  327. package/skills/camox/references/cli-content.md +92 -58
  328. package/skills/camox/references/cli-publishing.md +26 -0
  329. package/skills/camox/references/dom-integrations.md +27 -0
  330. package/skills/camox/references/field-styling.md +7 -7
  331. package/skills/camox/references/layout-definitions.md +16 -14
  332. package/skills/camox/references/localization.md +56 -0
  333. package/skills/camox/references/routed-layouts.md +133 -15
  334. package/skills/camox-expand/SKILL.md +69 -0
  335. package/skills/camox-expand/references/jobs.md +39 -0
  336. package/skills/camoxify/SKILL.md +38 -2
  337. package/dist/core/components/AddBlockControlBar.js +0 -78
  338. package/dist/core/hooks/useRequireDraftSource.js +0 -23
  339. package/dist/features/metadata/sitemap.d.ts +0 -8
  340. package/dist/features/metadata/sitemap.js +0 -17
  341. package/dist/features/og/imageResponse.node.d.ts +0 -12
  342. package/dist/features/og/imageResponse.node.js +0 -49
  343. package/dist/features/og/imageResponse.workerd.d.ts +0 -12
  344. package/dist/features/og/imageResponse.workerd.js +0 -40
  345. package/dist/features/page/PublishedPageContent.js +0 -205
  346. package/dist/features/page/PublishedPageExperience.js +0 -23
  347. package/dist/features/preview/DerivedPreview.js +0 -134
  348. package/dist/features/preview/commentsEnabled.js +0 -8
  349. package/dist/features/preview/components/AddBlockSidebar.js +0 -381
  350. package/dist/features/preview/components/AttachedComments.js +0 -194
  351. package/dist/features/preview/components/CommentHeader.js +0 -122
  352. package/dist/features/preview/components/CommentSidebar.js +0 -29
  353. package/dist/features/preview/components/CommentTargetQuote.js +0 -166
  354. package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
  355. package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
  356. package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
  357. package/dist/features/preview/components/LeftSidebar.js +0 -68
  358. package/dist/features/preview/components/PageEditorSidebar.js +0 -563
  359. package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
  360. package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
  361. package/dist/features/preview/components/PageStatusBadge.js +0 -97
  362. package/dist/features/preview/components/PeekedBlock.js +0 -217
  363. package/dist/features/preview/components/PreviewComments.js +0 -56
  364. package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
  365. package/dist/features/preview/components/PublicationRow.js +0 -422
  366. package/dist/features/preview/components/PublishDialog.js +0 -194
  367. package/dist/features/preview/components/RightSidebar.js +0 -59
  368. package/dist/features/preview/previewCommentsStore.js +0 -115
  369. package/dist/features/preview/publication.js +0 -81
  370. package/dist/features/runtime/SharedChromeContext.js +0 -7
  371. package/dist/features/studio/components/EnvironmentMenu.js +0 -413
  372. package/dist/features/vite/appGeneration.js +0 -89
  373. package/dist/lib/view-queries.js +0 -28
  374. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
  375. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
  376. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
  377. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
  378. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
  379. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
  380. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
  381. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
  382. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
  383. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
  384. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
  385. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
  386. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
  387. 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
  388. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
  389. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
  390. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
  391. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
  392. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
  393. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
  394. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
  395. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
  396. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
  397. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
  398. 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
  399. 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
  400. 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
  401. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
  402. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
  403. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
  404. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
  405. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
  406. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
  407. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
  408. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
  409. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
  410. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
  411. package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
  412. 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