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.
- package/dist/components/AuthGate.js +0 -6
- package/dist/components/DeviceSelector.js +96 -0
- package/dist/components/PlatformLabel.js +20 -24
- package/dist/core/components/lexical/HighlightNode.js +1 -1
- package/dist/core/components/lexical/InlineContentEditable.js +15 -19
- package/dist/core/components/lexical/InlineLexicalEditor.js +54 -74
- package/dist/core/components/lexical/InlineStylesPlugin.js +53 -53
- package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
- package/dist/core/components/lexical/SelectionBroadcaster.js +53 -54
- package/dist/core/components/lexical/SidebarLexicalEditor.js +322 -229
- package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
- package/dist/core/components/lexical/TextLinkPopover.js +169 -180
- package/dist/core/createApp.d.ts +241 -312
- package/dist/core/createApp.js +123 -29
- package/dist/core/createBlock.d.ts +5 -5
- package/dist/core/createBlock.js +385 -152
- package/dist/core/createCollection.d.ts +55 -0
- package/dist/core/createCollection.js +93 -0
- package/dist/core/createLayout.d.ts +197 -61
- package/dist/core/createLayout.js +114 -56
- package/dist/core/defineDocument.d.ts +3 -5
- package/dist/core/derivedRoutes.js +49 -1
- package/dist/core/dom.d.ts +13 -4
- package/dist/core/dom.js +44 -1
- package/dist/core/editing/BlockEditingRuntime.d.ts +16 -0
- package/dist/core/editing/BlockEditingRuntime.js +6 -15
- package/dist/core/editing/CompleteBlockEditingRuntime.js +28 -23
- package/dist/core/editing/createEditableBlock.d.ts +754 -633
- package/dist/core/editing/createEditableBlock.js +2113 -1066
- package/dist/core/editing/referenceWrites.js +51 -0
- package/dist/core/editing/useLatestRecord.js +90 -0
- package/dist/core/hooks/useArtifactHost.js +139 -0
- package/dist/core/hooks/useFieldSelection.js +43 -18
- package/dist/core/hooks/useIsEditable.js +12 -10
- package/dist/core/hooks/useOverlayMessage.js +15 -19
- package/dist/core/lib/artifact.d.ts +21 -0
- package/dist/core/lib/artifact.js +154 -0
- package/dist/core/lib/artifactColors.js +123 -0
- package/dist/core/lib/artifactData.d.ts +1 -0
- package/dist/core/lib/artifactData.js +131 -0
- package/dist/core/lib/artifactHost.js +205 -0
- package/dist/core/lib/artifactRuntime.js +36 -0
- package/dist/core/lib/artifactTheme.js +57 -0
- package/dist/core/lib/contentType.d.ts +302 -106
- package/dist/core/lib/contentType.js +201 -173
- package/dist/core/lib/fieldTypes.js +3 -0
- package/dist/core/lib/iconTypes.d.ts +3 -3
- package/dist/core/lib/icons.d.ts +4 -4
- package/dist/core/lib/icons.js +40 -44
- package/dist/core/lib/imagePlaceholder.js +177 -0
- package/dist/core/lib/imageTransform.js +1 -1
- package/dist/core/lib/lexicalReact.d.ts +3 -1
- package/dist/core/lib/lexicalState.js +1 -1
- package/dist/core/lib/previewPaused.js +9 -0
- package/dist/core/lib/recordScope.js +316 -0
- package/dist/core/lib/reference.d.ts +81 -0
- package/dist/core/lib/reference.js +29 -0
- package/dist/core/lib/textLinks.js +7 -5
- package/dist/core/lib/textStyles.d.ts +5 -7
- package/dist/core/lib/textStyles.js +2 -2
- package/dist/core/notFound.d.ts +7 -0
- package/dist/core/notFound.js +11 -0
- package/dist/core/pageDestinations.js +6 -3
- package/dist/core/recordItem.js +34 -0
- package/dist/core/requestContext.d.ts +26 -0
- package/dist/core/requestContext.js +20 -0
- package/dist/features/canvas/CamoxCanvas.js +1734 -0
- package/dist/features/canvas/CanvasBlockFrame.js +353 -0
- package/dist/features/canvas/CanvasBlockHeader.js +55 -0
- package/dist/features/canvas/CanvasLoadingScreen.js +35 -0
- package/dist/features/canvas/CanvasOverlays.js +254 -0
- package/dist/features/canvas/CanvasPageEdge.js +87 -0
- package/dist/features/canvas/CanvasPageFrame.js +335 -0
- package/dist/features/canvas/CanvasPageHeader.js +125 -0
- package/dist/features/canvas/CanvasPreviewPageSlot.js +103 -0
- package/dist/features/canvas/CanvasShelfMarker.js +255 -0
- package/dist/features/canvas/DerivedPagePathInput.js +238 -0
- package/dist/features/canvas/canvasCamera.js +229 -0
- package/dist/features/canvas/canvasFlight.js +104 -0
- package/dist/features/canvas/canvasFrameCapture.js +364 -0
- package/dist/features/canvas/canvasFrameDocument.js +317 -0
- package/dist/features/canvas/canvasFrameMode.js +53 -0
- package/dist/features/canvas/canvasInsertionSeams.js +44 -0
- package/dist/features/canvas/canvasItems.js +120 -0
- package/dist/features/canvas/canvasOverlayGeometry.js +240 -0
- package/dist/features/canvas/canvasPages.js +79 -0
- package/dist/features/canvas/canvasScreenSpace.js +26 -0
- package/dist/features/canvas/canvasSelection.js +18 -0
- package/dist/features/canvas/canvasStore.js +149 -0
- package/dist/features/canvas/canvasThumbnails.js +304 -0
- package/dist/features/canvas/canvasZoom.js +10 -0
- package/dist/features/canvas/sidebar/CanvasInspector.js +202 -0
- package/dist/features/canvas/sidebar/CanvasNavigator.js +226 -0
- package/dist/features/canvas/sidebar/CanvasSidebar.js +60 -0
- package/dist/features/canvas/sidebar/CanvasSidebarFrame.js +48 -0
- package/dist/features/canvas/sidebar/CanvasSidebarSkeleton.js +39 -0
- package/dist/features/canvas/sidebar/CatalogBlockInspector.js +189 -0
- package/dist/features/canvas/sidebar/CuratedPageInspector.js +69 -0
- package/dist/features/canvas/sidebar/DerivedPageInspector.js +37 -0
- package/dist/features/canvas/sidebar/LayoutPageBlocks.js +78 -0
- package/dist/features/canvas/sidebar/LayoutPageOverview.js +71 -0
- package/dist/features/canvas/sidebar/PageInspector.js +157 -0
- package/dist/features/canvas/sidebar/PageInspectorSkeleton.js +90 -0
- package/dist/features/canvas/sidebar/PageOverview.js +27 -0
- package/dist/features/canvas/sidebar/SingletonPageInspector.js +31 -0
- package/dist/features/canvas/useCanvasCamera.js +803 -0
- package/dist/features/canvas/useCanvasFrame.js +149 -0
- package/dist/features/canvas/useCanvasFrameInput.js +97 -0
- package/dist/features/canvas/useCanvasNearness.js +57 -0
- package/dist/features/canvas/useDiscoveredPreviewPaths.js +62 -0
- package/dist/features/content/CamoxContent.d.ts +2 -5
- package/dist/features/content/CamoxContent.js +174 -271
- package/dist/features/content/CollectionItemSheetContext.js +106 -0
- package/dist/features/content/ContentAssets.js +315 -0
- package/dist/features/content/ContentCollection.js +663 -0
- package/dist/features/content/collection-form.js +58 -0
- package/dist/features/content/components/AssetCard.js +80 -84
- package/dist/features/content/components/AssetCardSkeleton.js +4 -8
- package/dist/features/content/components/ContentSidebar.js +129 -18
- package/dist/features/content/components/ContentSidebarGroup.js +37 -0
- package/dist/features/content/components/DeleteCollectionItemButton.js +202 -0
- package/dist/features/content/components/MissingFromLocale.js +282 -0
- package/dist/features/content/components/UploadDropZone.js +27 -31
- package/dist/features/content/components/UploadProgressDrawer.js +90 -98
- package/dist/features/navigation/navigation.d.ts +66 -20
- package/dist/features/navigation/navigation.js +257 -90
- package/dist/features/og/defaultFonts.js +8 -8
- package/dist/features/og/geist-variable-ttf-base64.js +1 -1
- package/dist/features/og/imageResponse.d.ts +8 -0
- package/dist/features/og/imageResponse.js +26 -0
- package/dist/features/page/CuratedPageContent.js +167 -0
- package/dist/features/page/DerivedPageContent.js +26 -30
- package/dist/features/page/SharedLayoutContent.js +25 -27
- package/dist/features/preview/CamoxPreview.d.ts +23 -61
- package/dist/features/preview/CamoxPreview.js +816 -537
- package/dist/features/preview/EditablePageContent.js +1 -1
- package/dist/features/preview/EditablePageExperience.js +16 -22
- package/dist/features/preview/components/AddBlockDialog.js +270 -0
- package/dist/features/preview/components/AssetFieldEditor.js +173 -154
- package/dist/features/preview/components/AssetLightbox.js +181 -134
- package/dist/features/preview/components/AssetPickerModal.js +153 -170
- package/dist/features/preview/components/BlockActionsPopover.js +150 -149
- package/dist/features/preview/components/BlockErrorBoundary.js +8 -12
- package/dist/features/preview/components/BlockThumbnail.js +176 -100
- package/dist/features/preview/components/CanvasPreview.js +243 -0
- package/dist/features/preview/components/CreatePageModal.js +128 -137
- package/dist/features/preview/components/DebouncedFieldEditor.js +29 -33
- package/dist/features/preview/components/DerivedLayoutDialog.js +21 -19
- package/dist/features/preview/components/DrillRow.js +150 -0
- package/dist/features/preview/components/FieldOverlayStyles.js +11 -8
- package/dist/features/preview/components/FieldToolbar.js +160 -110
- package/dist/features/preview/components/Frame.js +108 -20
- package/dist/features/preview/components/IconFieldEditor.js +62 -66
- package/dist/features/preview/components/ItemFieldsEditor.js +231 -205
- package/dist/features/preview/components/LinkFieldEditor.js +135 -139
- package/dist/features/preview/components/Metadata.js +22 -30
- package/dist/features/preview/components/MobilePreviewDrawer.js +89 -108
- package/dist/features/preview/components/MultipleAssetFieldEditor.js +334 -246
- package/dist/features/preview/components/OverlayTracker.js +9 -41
- package/dist/features/preview/components/Overlays.js +81 -69
- package/dist/features/preview/components/PageInfo.js +1748 -0
- package/dist/features/preview/components/PageInfoSkeleton.js +51 -0
- package/dist/features/preview/components/PageLocationFieldset.js +112 -116
- package/dist/features/preview/components/PageNavigatorHeader.js +24 -0
- package/dist/features/preview/components/PageNicknameField.js +22 -26
- package/dist/features/preview/components/PagePicker.js +128 -130
- package/dist/features/preview/components/PageTree.js +525 -532
- package/dist/features/preview/components/PreviewActivation.js +28 -32
- package/dist/features/preview/components/PreviewPanel.js +620 -319
- package/dist/features/preview/components/PreviewToolbar.js +105 -333
- package/dist/features/preview/components/RecordCard.js +80 -0
- package/dist/features/preview/components/RecordCombobox.js +178 -0
- package/dist/features/preview/components/ReferenceFieldEditor.js +149 -0
- package/dist/features/preview/components/ReferenceListFieldEditor.js +432 -0
- package/dist/features/preview/components/RemovedBlockPlaceholder.js +95 -0
- package/dist/features/preview/components/RepeatableItemsList.js +125 -138
- package/dist/features/preview/components/SelectionEditor.js +993 -0
- package/dist/features/preview/components/ShikiMarkdown.js +14 -18
- package/dist/features/preview/components/SidebarSection.js +52 -64
- package/dist/features/preview/components/StudioEditingFallback.js +56 -0
- package/dist/features/preview/components/UnlinkAssetButton.js +104 -107
- package/dist/features/preview/components/blockGridNavigation.js +15 -0
- package/dist/features/preview/components/contentFieldSchema.js +8 -0
- package/dist/features/preview/components/useFieldWriter.js +200 -0
- package/dist/features/preview/components/useRecordView.js +383 -0
- package/dist/features/preview/components/useRepeatableItemActions.js +35 -37
- package/dist/features/preview/components/useUpdateBlockPosition.js +37 -37
- package/dist/features/preview/editingFrame.js +197 -0
- package/dist/features/preview/overlayHighlights.js +17 -44
- package/dist/features/preview/overlayMessages.js +72 -1
- package/dist/features/preview/pageRecord.js +189 -0
- package/dist/features/preview/previewConstants.js +6 -2
- package/dist/features/preview/previewPageFrame.js +95 -0
- package/dist/features/preview/previewPreparation.js +7 -0
- package/dist/features/preview/previewSelection.js +32 -63
- package/dist/features/preview/previewStore.js +225 -123
- package/dist/features/preview/referencePickerFocus.js +29 -0
- package/dist/features/preview/repeatableItemTargets.js +56 -0
- package/dist/features/preview/selectionReveal.js +21 -0
- package/dist/features/preview/usePreviewViewportActions.js +114 -0
- package/dist/features/preview/viewportContinuity.js +109 -0
- package/dist/features/provider/AuthenticatedCamoxProvider.js +69 -44
- package/dist/features/provider/CamoxProvider.d.ts +3 -6
- package/dist/features/provider/CamoxProvider.js +38 -50
- package/dist/features/provider/CoreCamoxProvider.js +66 -50
- package/dist/features/provider/LocalhostPreviewProvider.js +78 -114
- package/dist/features/provider/PreviewSignInPage.js +54 -0
- package/dist/features/provider/components/CamoxAppContext.js +11 -11
- package/dist/features/provider/components/CommandPalette.js +75 -82
- package/dist/features/provider/useAdminShortcuts.js +7 -11
- package/dist/features/routes/pageRuntime.d.ts +44 -4
- package/dist/features/routes/pageRuntime.js +244 -137
- package/dist/features/runtime/RuntimeChrome.js +117 -115
- package/dist/features/runtime/alternates.js +64 -0
- package/dist/features/runtime/analytics.d.ts +7 -0
- package/dist/features/runtime/analytics.js +66 -0
- package/dist/features/runtime/artifactSources.js +87 -0
- package/dist/features/runtime/editingFallback.js +20 -0
- package/dist/features/runtime/linkPrefetch.js +97 -0
- package/dist/features/runtime/livePages.js +62 -0
- package/dist/features/runtime/llmsTxt.js +40 -0
- package/dist/features/runtime/loopbackFetch.js +18 -0
- package/dist/features/runtime/navigationAccessibility.js +51 -0
- package/dist/features/runtime/navigationTarget.js +23 -2
- package/dist/features/runtime/pageApp.js +229 -158
- package/dist/features/runtime/pageBlockTypes.js +20 -0
- package/dist/features/runtime/pageClient.d.ts +2 -4
- package/dist/features/runtime/pageClient.js +18 -3
- package/dist/features/runtime/pageNavigation.js +254 -32
- package/dist/features/runtime/pageServer.d.ts +2 -4
- package/dist/features/runtime/pageServer.js +6 -2
- package/dist/features/runtime/pageViewport.js +7 -0
- package/dist/features/runtime/runtime.d.ts +59 -24
- package/dist/features/runtime/runtime.js +779 -191
- package/dist/features/runtime/runtimeChromeLoader.js +58 -0
- package/dist/features/runtime/runtimeRoutes.d.ts +19 -0
- package/dist/features/runtime/runtimeRoutes.js +25 -0
- package/dist/features/runtime/scrollRestoration.js +133 -0
- package/dist/features/runtime/studioApp.d.ts +4 -3
- package/dist/features/runtime/studioApp.js +5 -9
- package/dist/features/runtime/studioClient.d.ts +2 -4
- package/dist/features/runtime/studioClient.js +12 -3
- package/dist/features/runtime/studioServer.d.ts +2 -4
- package/dist/features/runtime/studioServer.js +6 -1
- package/dist/features/runtime/worker.d.ts +6 -0
- package/dist/features/runtime/worker.js +23 -0
- package/dist/features/runtime/workerRequest.js +44 -0
- package/dist/features/studio/CamoxStudio.d.ts +2 -6
- package/dist/features/studio/CamoxStudio.js +34 -49
- package/dist/features/studio/FollowAgentProvider.js +338 -0
- package/dist/features/studio/components/ChatSidebar.js +356 -0
- package/dist/features/studio/components/DraftsControl.js +676 -0
- package/dist/features/studio/components/FaviconDialog.js +318 -0
- package/dist/features/studio/components/LocalePicker.js +785 -0
- package/dist/features/studio/components/Navbar.js +123 -103
- package/dist/features/studio/components/ProjectMenu.js +239 -260
- package/dist/features/studio/components/RenameDraftDialog.js +206 -0
- package/dist/features/studio/components/ReviewDraftSheet.js +1472 -0
- package/dist/features/studio/components/ThreadComposer.js +157 -0
- package/dist/features/studio/components/ThreadMarkdown.js +113 -0
- package/dist/features/studio/components/ThreadMessages.js +270 -0
- package/dist/features/studio/components/UserButton.js +34 -23
- package/dist/features/studio/draftLabel.js +33 -0
- package/dist/features/studio/draftNotice.js +13 -0
- package/dist/features/studio/followAgent.js +250 -0
- package/dist/features/studio/followAgentContext.js +7 -0
- package/dist/features/studio/localeOptions.js +118 -0
- package/dist/features/studio/localeSwitch.js +19 -0
- package/dist/features/studio/routes.js +48 -1
- package/dist/features/studio/studioStore.js +64 -1
- package/dist/features/studio/useTheme.js +24 -27
- package/dist/features/vite/artifactRuntimeMinification.js +36 -0
- package/dist/features/vite/blockBoilerplate.js +6 -5
- package/dist/features/vite/blockChunks.js +31 -0
- package/dist/features/vite/bundlerLogs.js +17 -0
- package/dist/features/vite/definitionsSync.js +158 -226
- package/dist/features/vite/devAuthentication.js +4 -16
- package/dist/features/vite/devSignIn.js +87 -0
- package/dist/features/vite/iconGeneration.js +1 -1
- package/dist/features/vite/layoutGeneration.js +11 -1
- package/dist/features/vite/publishSeededContent.js +30 -0
- package/dist/features/vite/routeGeneration.js +6 -7
- package/dist/features/vite/runtimeDev.js +80 -99
- package/dist/features/vite/vite.d.ts +51 -31
- package/dist/features/vite/vite.js +224 -127
- package/dist/features/vite/workerBuild.js +39 -0
- package/dist/hooks/use-debounced-field.js +116 -47
- package/dist/hooks/use-file-upload.js +114 -67
- package/dist/hooks/use-marquee-selection.js +32 -36
- package/dist/hooks/use-page-destinations.js +69 -37
- package/dist/lib/api-client-server.d.ts +5 -0
- package/dist/lib/api-client-server.js +10 -4
- package/dist/lib/api-client.d.ts +6 -0
- package/dist/lib/api-client.js +51 -16
- package/dist/lib/api-socket.js +17 -0
- package/dist/lib/auth-page-styles.js +39 -0
- package/dist/lib/auth.js +117 -61
- package/dist/lib/collection-cache.js +23 -0
- package/dist/lib/draft-scope.d.ts +4 -0
- package/dist/lib/draft-scope.js +222 -0
- package/dist/lib/html.js +12 -0
- package/dist/lib/link-pages.js +154 -0
- package/dist/lib/locale-path.d.ts +22 -0
- package/dist/lib/locale-path.js +57 -0
- package/dist/lib/normalized-data.js +252 -152
- package/dist/lib/preview-handoff.js +2 -2
- package/dist/lib/queries.d.ts +11 -0
- package/dist/lib/queries.js +70 -141
- package/dist/lib/studio-reads.d.ts +14 -0
- package/dist/lib/studio-reads.js +574 -0
- package/dist/lib/use-project-room.js +50 -50
- package/dist/lib/use-thread.js +310 -0
- package/dist/lib/utils.js +25 -29
- package/dist/lib/view-locale-context.js +22 -0
- package/dist/lib/view-locale.js +46 -0
- package/dist/package.js +5 -0
- package/dist/studio-overlays.css +41 -151
- package/dist/studio.css +2 -2
- package/package.json +70 -73
- package/skills/camox/SKILL.md +16 -11
- package/skills/camox/references/artifacts.md +179 -0
- package/skills/camox/references/block-definitions.md +75 -59
- package/skills/camox/references/cli-common.md +9 -11
- package/skills/camox/references/cli-content.md +92 -69
- package/skills/camox/references/cli-publishing.md +26 -0
- package/skills/camox/references/dom-integrations.md +27 -0
- package/skills/camox/references/field-styling.md +4 -4
- package/skills/camox/references/layout-definitions.md +16 -14
- package/skills/camox/references/localization.md +56 -0
- package/skills/camox/references/routed-layouts.md +133 -15
- package/skills/camox-expand/SKILL.md +69 -0
- package/skills/camox-expand/references/jobs.md +39 -0
- package/skills/camoxify/SKILL.md +29 -7
- package/dist/core/components/AddBlockControlBar.js +0 -78
- package/dist/core/hooks/useRequireDraftSource.js +0 -23
- package/dist/features/metadata/sitemap.d.ts +0 -8
- package/dist/features/metadata/sitemap.js +0 -17
- package/dist/features/og/imageResponse.node.d.ts +0 -12
- package/dist/features/og/imageResponse.node.js +0 -49
- package/dist/features/og/imageResponse.workerd.d.ts +0 -12
- package/dist/features/og/imageResponse.workerd.js +0 -40
- package/dist/features/page/PublishedPageContent.js +0 -205
- package/dist/features/page/PublishedPageExperience.js +0 -23
- package/dist/features/preview/DerivedPreview.js +0 -134
- package/dist/features/preview/commentsEnabled.js +0 -8
- package/dist/features/preview/components/AddBlockSidebar.js +0 -381
- package/dist/features/preview/components/AttachedComments.js +0 -331
- package/dist/features/preview/components/CommentHeader.js +0 -122
- package/dist/features/preview/components/CommentSidebar.js +0 -29
- package/dist/features/preview/components/CommentTargetQuote.js +0 -167
- package/dist/features/preview/components/DerivedLayoutSidebar.d.ts +0 -5
- package/dist/features/preview/components/DerivedLayoutSidebar.js +0 -179
- package/dist/features/preview/components/DerivedPageInfoSidebar.js +0 -69
- package/dist/features/preview/components/LeftSidebar.js +0 -68
- package/dist/features/preview/components/PageEditorSidebar.js +0 -563
- package/dist/features/preview/components/PageInfoSidebar.js +0 -1551
- package/dist/features/preview/components/PageNavigatorSidebar.js +0 -78
- package/dist/features/preview/components/PageStatusBadge.js +0 -97
- package/dist/features/preview/components/PeekedBlock.js +0 -217
- package/dist/features/preview/components/PreviewComments.js +0 -56
- package/dist/features/preview/components/PreviewToolbarSpacer.js +0 -43
- package/dist/features/preview/components/PublicationRow.js +0 -422
- package/dist/features/preview/components/PublishDialog.js +0 -194
- package/dist/features/preview/components/RightSidebar.js +0 -59
- package/dist/features/preview/components/SendFeedbackDialog.js +0 -83
- package/dist/features/preview/previewCommentsStore.js +0 -135
- package/dist/features/preview/publication.js +0 -81
- package/dist/features/preview/usePageComments.js +0 -39
- package/dist/features/runtime/SharedChromeContext.js +0 -7
- package/dist/features/studio/components/EnvironmentMenu.js +0 -425
- package/dist/features/vite/appGeneration.js +0 -89
- package/dist/lib/view-queries.js +0 -28
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/Matches.d.ts +0 -114
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/RouterProvider.d.ts +0 -25
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/config.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/defer.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/fileRoute.d.ts +0 -20
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/global.d.ts +0 -8
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/hash-scroll.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/index.d.ts +0 -18
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/link.d.ts +0 -161
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/load-matches.d.ts +0 -6
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/location.d.ts +0 -54
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/lru-cache.d.ts +0 -8
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/manifest.d.ts +0 -32
- 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
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/not-found.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/redirect.d.ts +0 -49
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/rewrite.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/root.d.ts +0 -6
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/route.d.ts +0 -343
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/routeInfo.d.ts +0 -48
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/router.d.ts +0 -695
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/scroll-restoration.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchMiddleware.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/searchParams.d.ts +0 -5
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/stores.d.ts +0 -69
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/structuralSharing.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/typePrimitives.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderData.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useLoaderDeps.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useNavigate.d.ts +0 -10
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useParams.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useRouteContext.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/useSearch.d.ts +0 -1
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/utils.d.ts +0 -28
- package/dist/node_modules/.pnpm/@tanstack_router-core@1.168.14/node_modules/@tanstack/router-core/dist/esm/validators.d.ts +0 -49
- package/skills/camox/references/cli-environments.md +0 -37
|
@@ -1,26 +1,30 @@
|
|
|
1
|
+
import { notFound } from "./notFound.js";
|
|
2
|
+
import { useOptionalCamoxApp } from "../features/provider/components/CamoxAppContext.js";
|
|
3
|
+
import { useBlockEditingRuntime } from "./editing/BlockEditingRuntime.js";
|
|
1
4
|
import { BlockErrorBoundary } from "../features/preview/components/BlockErrorBoundary.js";
|
|
5
|
+
import { asCollectionItem, fieldPlainText } from "./recordItem.js";
|
|
6
|
+
import { RecordScope } from "./lib/recordScope.js";
|
|
2
7
|
import { c } from "react/compiler-runtime";
|
|
3
8
|
import * as React from "react";
|
|
4
9
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
5
10
|
|
|
6
11
|
//#region src/core/createLayout.tsx
|
|
12
|
+
const INITIAL_LAYOUT_ONLY_ERROR = "❌ Camox: blocks in `blocks.initial` must NOT be `layoutOnly: true` — `initial` is for page-content blocks. Remove `layoutOnly: true` from this block's `createBlock` options.";
|
|
7
13
|
function createLayoutDefinition(options) {
|
|
8
14
|
if (options.kind === "singleton" && !/^[\w-]+(?:\.[\w-]+)*$/.test(options.id)) throw new Error(`Singleton layouts require a fixed file route: ${options.id}`);
|
|
9
15
|
if (options.kind && options.kind !== "curated" && options.blocks.initial) throw new Error("Code-owned layouts cannot define initial page blocks");
|
|
16
|
+
if (options.routes && options.kind !== "derived") throw new Error(`Only derived layouts can define routes: ${options.id}`);
|
|
17
|
+
if (options.toMarkdown && (options.kind ?? "curated") === "curated") throw new Error(`Curated layouts cannot define toMarkdown: ${options.id}`);
|
|
10
18
|
const LayoutContext = React.createContext(null);
|
|
11
19
|
const beforeBlocks = options.blocks.before;
|
|
12
20
|
const afterBlocks = options.blocks.after;
|
|
13
21
|
const initialBlocks = options.blocks.initial;
|
|
14
22
|
const BeforeBlocks = () => {
|
|
15
|
-
const $ = c(
|
|
16
|
-
if ($[0] !== "776e504f06a16915ba8008212a5b0af4dec7762a3d0b05161ac1048bec619433") {
|
|
17
|
-
for (let $i = 0; $i < 5; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
18
|
-
$[0] = "776e504f06a16915ba8008212a5b0af4dec7762a3d0b05161ac1048bec619433";
|
|
19
|
-
}
|
|
23
|
+
const $ = c(4);
|
|
20
24
|
const ctx = React.use(LayoutContext);
|
|
21
25
|
if (!ctx) throw new Error(`Layout "${options.id}" BeforeBlocks must be rendered inside its Provider`);
|
|
22
26
|
let t0;
|
|
23
|
-
if ($[
|
|
27
|
+
if ($[0] !== ctx) {
|
|
24
28
|
t0 = beforeBlocks.map((block, i) => {
|
|
25
29
|
const blockData = ctx.layoutBlocks[block._internal.id];
|
|
26
30
|
if (!blockData) return null;
|
|
@@ -36,28 +40,24 @@ function createLayoutDefinition(options) {
|
|
|
36
40
|
})
|
|
37
41
|
}, block._internal.id);
|
|
38
42
|
});
|
|
39
|
-
$[
|
|
40
|
-
$[
|
|
41
|
-
} else t0 = $[
|
|
43
|
+
$[0] = ctx;
|
|
44
|
+
$[1] = t0;
|
|
45
|
+
} else t0 = $[1];
|
|
42
46
|
let t1;
|
|
43
|
-
if ($[
|
|
47
|
+
if ($[2] !== t0) {
|
|
44
48
|
t1 = /* @__PURE__ */ jsx(Fragment, { children: t0 });
|
|
45
|
-
$[
|
|
46
|
-
$[
|
|
47
|
-
} else t1 = $[
|
|
49
|
+
$[2] = t0;
|
|
50
|
+
$[3] = t1;
|
|
51
|
+
} else t1 = $[3];
|
|
48
52
|
return t1;
|
|
49
53
|
};
|
|
50
54
|
BeforeBlocks.displayName = `LayoutBeforeBlocks(${options.id})`;
|
|
51
55
|
const AfterBlocks = () => {
|
|
52
|
-
const $ = c(
|
|
53
|
-
if ($[0] !== "776e504f06a16915ba8008212a5b0af4dec7762a3d0b05161ac1048bec619433") {
|
|
54
|
-
for (let $i = 0; $i < 5; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
55
|
-
$[0] = "776e504f06a16915ba8008212a5b0af4dec7762a3d0b05161ac1048bec619433";
|
|
56
|
-
}
|
|
56
|
+
const $ = c(4);
|
|
57
57
|
const ctx = React.use(LayoutContext);
|
|
58
58
|
if (!ctx) throw new Error(`Layout "${options.id}" AfterBlocks must be rendered inside its Provider`);
|
|
59
59
|
let t0;
|
|
60
|
-
if ($[
|
|
60
|
+
if ($[0] !== ctx) {
|
|
61
61
|
t0 = afterBlocks.map((block, i) => {
|
|
62
62
|
const blockData = ctx.layoutBlocks[block._internal.id];
|
|
63
63
|
if (!blockData) return null;
|
|
@@ -73,48 +73,106 @@ function createLayoutDefinition(options) {
|
|
|
73
73
|
})
|
|
74
74
|
}, block._internal.id);
|
|
75
75
|
});
|
|
76
|
-
$[
|
|
77
|
-
$[
|
|
78
|
-
} else t0 = $[
|
|
76
|
+
$[0] = ctx;
|
|
77
|
+
$[1] = t0;
|
|
78
|
+
} else t0 = $[1];
|
|
79
79
|
let t1;
|
|
80
|
-
if ($[
|
|
80
|
+
if ($[2] !== t0) {
|
|
81
81
|
t1 = /* @__PURE__ */ jsx(Fragment, { children: t0 });
|
|
82
|
-
$[
|
|
83
|
-
$[
|
|
84
|
-
} else t1 = $[
|
|
82
|
+
$[2] = t0;
|
|
83
|
+
$[3] = t1;
|
|
84
|
+
} else t1 = $[3];
|
|
85
85
|
return t1;
|
|
86
86
|
};
|
|
87
87
|
AfterBlocks.displayName = `LayoutAfterBlocks(${options.id})`;
|
|
88
88
|
const Provider = (t0) => {
|
|
89
|
-
const $ = c(
|
|
90
|
-
|
|
91
|
-
for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
92
|
-
$[0] = "776e504f06a16915ba8008212a5b0af4dec7762a3d0b05161ac1048bec619433";
|
|
93
|
-
}
|
|
94
|
-
const { layoutBlocks, children, data } = t0;
|
|
89
|
+
const $ = c(6);
|
|
90
|
+
const { layoutBlocks, children, result } = t0;
|
|
95
91
|
let t1;
|
|
96
|
-
if ($[
|
|
92
|
+
if ($[0] !== layoutBlocks || $[1] !== result) {
|
|
97
93
|
t1 = {
|
|
98
94
|
layoutBlocks,
|
|
99
|
-
|
|
95
|
+
result
|
|
100
96
|
};
|
|
101
|
-
$[
|
|
102
|
-
$[
|
|
103
|
-
$[
|
|
104
|
-
} else t1 = $[
|
|
97
|
+
$[0] = layoutBlocks;
|
|
98
|
+
$[1] = result;
|
|
99
|
+
$[2] = t1;
|
|
100
|
+
} else t1 = $[2];
|
|
105
101
|
const value = t1;
|
|
106
102
|
let t2;
|
|
107
|
-
if ($[
|
|
103
|
+
if ($[3] !== children || $[4] !== value) {
|
|
108
104
|
t2 = /* @__PURE__ */ jsx(LayoutContext.Provider, {
|
|
109
105
|
value,
|
|
110
106
|
children
|
|
111
107
|
});
|
|
112
|
-
$[
|
|
113
|
-
$[
|
|
114
|
-
$[
|
|
115
|
-
} else t2 = $[
|
|
108
|
+
$[3] = children;
|
|
109
|
+
$[4] = value;
|
|
110
|
+
$[5] = t2;
|
|
111
|
+
} else t2 = $[5];
|
|
116
112
|
return t2;
|
|
117
113
|
};
|
|
114
|
+
const Item = (t0) => {
|
|
115
|
+
const $ = c(6);
|
|
116
|
+
const { children } = t0;
|
|
117
|
+
const context = React.use(LayoutContext);
|
|
118
|
+
const app = useOptionalCamoxApp();
|
|
119
|
+
const editingRuntime = useBlockEditingRuntime();
|
|
120
|
+
if (!context) throw new Error(`Layout "${options.id}" Item must be rendered inside its Provider`);
|
|
121
|
+
let t1;
|
|
122
|
+
let t2;
|
|
123
|
+
if ($[0] !== app || $[1] !== children || $[2] !== context.result || $[3] !== editingRuntime) {
|
|
124
|
+
t2 = Symbol.for("react.early_return_sentinel");
|
|
125
|
+
bb0: {
|
|
126
|
+
const result = asCollectionItem(context.result);
|
|
127
|
+
if (!result) {
|
|
128
|
+
t2 = null;
|
|
129
|
+
break bb0;
|
|
130
|
+
}
|
|
131
|
+
const collection = app?.getCollectionById(result.collectionId);
|
|
132
|
+
if (!collection) {
|
|
133
|
+
t2 = null;
|
|
134
|
+
break bb0;
|
|
135
|
+
}
|
|
136
|
+
const { contentSchema, label } = collection._internal;
|
|
137
|
+
const { id, content, references } = result.data;
|
|
138
|
+
const readOnly = /* @__PURE__ */ jsx(RecordScope, {
|
|
139
|
+
record: {
|
|
140
|
+
id,
|
|
141
|
+
label: fieldPlainText(content[label]),
|
|
142
|
+
content,
|
|
143
|
+
references
|
|
144
|
+
},
|
|
145
|
+
properties: contentSchema.properties,
|
|
146
|
+
hop: 1,
|
|
147
|
+
children
|
|
148
|
+
});
|
|
149
|
+
if (!editingRuntime?.renderLayoutItem) {
|
|
150
|
+
t2 = readOnly;
|
|
151
|
+
break bb0;
|
|
152
|
+
}
|
|
153
|
+
t1 = editingRuntime.renderLayoutItem({
|
|
154
|
+
collectionId: result.collectionId,
|
|
155
|
+
labelField: label,
|
|
156
|
+
properties: contentSchema.properties,
|
|
157
|
+
record: result.data,
|
|
158
|
+
children,
|
|
159
|
+
fallback: readOnly
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
$[0] = app;
|
|
163
|
+
$[1] = children;
|
|
164
|
+
$[2] = context.result;
|
|
165
|
+
$[3] = editingRuntime;
|
|
166
|
+
$[4] = t1;
|
|
167
|
+
$[5] = t2;
|
|
168
|
+
} else {
|
|
169
|
+
t1 = $[4];
|
|
170
|
+
t2 = $[5];
|
|
171
|
+
}
|
|
172
|
+
if (t2 !== Symbol.for("react.early_return_sentinel")) return t2;
|
|
173
|
+
return t1;
|
|
174
|
+
};
|
|
175
|
+
Item.displayName = `LayoutItem(${options.id})`;
|
|
118
176
|
const blockDefinitions = [...beforeBlocks.map((block) => {
|
|
119
177
|
const bundle = block._internal.getInitialBundle();
|
|
120
178
|
return {
|
|
@@ -122,7 +180,7 @@ function createLayoutDefinition(options) {
|
|
|
122
180
|
content: bundle.content,
|
|
123
181
|
settings: bundle.settings,
|
|
124
182
|
repeatableItems: bundle.repeatableItems,
|
|
125
|
-
|
|
183
|
+
slot: "before"
|
|
126
184
|
};
|
|
127
185
|
}), ...afterBlocks.map((block) => {
|
|
128
186
|
const bundle = block._internal.getInitialBundle();
|
|
@@ -131,7 +189,7 @@ function createLayoutDefinition(options) {
|
|
|
131
189
|
content: bundle.content,
|
|
132
190
|
settings: bundle.settings,
|
|
133
191
|
repeatableItems: bundle.repeatableItems,
|
|
134
|
-
|
|
192
|
+
slot: "after"
|
|
135
193
|
};
|
|
136
194
|
})];
|
|
137
195
|
const buildOgImage = options.buildOgImage ? async (params) => {
|
|
@@ -142,7 +200,9 @@ function createLayoutDefinition(options) {
|
|
|
142
200
|
height: 630
|
|
143
201
|
});
|
|
144
202
|
} : void 0;
|
|
145
|
-
const
|
|
203
|
+
const loadInitialBlockBundles = initialBlocks && (() => Promise.all(initialBlocks.map(async (load) => {
|
|
204
|
+
const { block } = await load();
|
|
205
|
+
if (block._internal.layoutOnly) throw new Error(`${INITIAL_LAYOUT_ONLY_ERROR} (block "${block._internal.id}")`);
|
|
146
206
|
const bundle = block._internal.getInitialBundle();
|
|
147
207
|
return {
|
|
148
208
|
type: block._internal.id,
|
|
@@ -150,25 +210,30 @@ function createLayoutDefinition(options) {
|
|
|
150
210
|
settings: bundle.settings,
|
|
151
211
|
repeatableItems: bundle.repeatableItems
|
|
152
212
|
};
|
|
153
|
-
});
|
|
213
|
+
})));
|
|
154
214
|
return {
|
|
155
215
|
BeforeBlocks,
|
|
156
216
|
AfterBlocks,
|
|
217
|
+
Item,
|
|
157
218
|
useData() {
|
|
158
219
|
const context = React.use(LayoutContext);
|
|
159
220
|
if (!context) throw new Error(`Layout "${options.id}" useData must be rendered inside its Provider`);
|
|
160
|
-
return context.data;
|
|
221
|
+
return context.result?.data;
|
|
161
222
|
},
|
|
162
223
|
_internal: {
|
|
163
224
|
id: options.id,
|
|
164
225
|
kind: options.kind ?? "curated",
|
|
165
226
|
loader: options.loader,
|
|
227
|
+
routes: options.routes,
|
|
228
|
+
recordPages: options.recordPages,
|
|
166
229
|
title: options.title,
|
|
167
230
|
description: options.description,
|
|
168
231
|
buildMetaTitle: options.buildMetaTitle,
|
|
232
|
+
buildMetaDescription: options.buildMetaDescription,
|
|
233
|
+
toMarkdown: options.toMarkdown,
|
|
169
234
|
buildOgImage,
|
|
170
235
|
blockDefinitions,
|
|
171
|
-
|
|
236
|
+
loadInitialBlockBundles,
|
|
172
237
|
component: options.component,
|
|
173
238
|
Provider
|
|
174
239
|
}
|
|
@@ -181,13 +246,6 @@ function createLayout(idOrOptions) {
|
|
|
181
246
|
id: idOrOptions
|
|
182
247
|
});
|
|
183
248
|
}
|
|
184
|
-
/** Signal a missing derived page; other loader failures remain server errors. */
|
|
185
|
-
function notFound() {
|
|
186
|
-
return Object.assign(/* @__PURE__ */ new Error("Page not found"), {
|
|
187
|
-
status: 404,
|
|
188
|
-
code: "NOT_FOUND"
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
249
|
|
|
192
250
|
//#endregion
|
|
193
251
|
export { createLayout, notFound };
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { UseHeadInput } from "unhead/types";
|
|
2
|
-
|
|
3
2
|
//#region src/core/defineDocument.d.ts
|
|
4
|
-
type CamoxDocument = UseHeadInput;
|
|
5
|
-
declare function defineDocument(document: CamoxDocument): CamoxDocument;
|
|
6
|
-
//#endregion
|
|
7
|
-
export { CamoxDocument, defineDocument };
|
|
3
|
+
export type CamoxDocument = UseHeadInput;
|
|
4
|
+
export declare function defineDocument(document: CamoxDocument): CamoxDocument;
|
|
5
|
+
//#endregion
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { asCollectionItem } from "./recordItem.js";
|
|
2
|
+
|
|
1
3
|
//#region src/core/derivedRoutes.ts
|
|
2
4
|
function routeSegments(id) {
|
|
3
5
|
return id.split(".");
|
|
@@ -31,6 +33,52 @@ function matchDerivedLayout(layouts, pathname) {
|
|
|
31
33
|
}
|
|
32
34
|
return null;
|
|
33
35
|
}
|
|
36
|
+
/** Builds the path of one discovered page, rejecting params the route could not match. */
|
|
37
|
+
function derivedLayoutPath(layoutId, params) {
|
|
38
|
+
const segments = routeSegments(layoutId);
|
|
39
|
+
const names = segments.filter((s) => s.startsWith("$")).map((s) => s.slice(1));
|
|
40
|
+
if (!params || typeof params !== "object" || Array.isArray(params)) throw new Error(`Layout "${layoutId}" routes returned an entry without params`);
|
|
41
|
+
const values = params;
|
|
42
|
+
const extra = Object.keys(values).find((name) => !names.includes(name));
|
|
43
|
+
if (extra) throw new Error(`Layout "${layoutId}" routes returned an unknown param "${extra}"`);
|
|
44
|
+
return `/${segments.map((segment) => {
|
|
45
|
+
if (!segment.startsWith("$")) return encodeURIComponent(segment);
|
|
46
|
+
const name = segment.slice(1);
|
|
47
|
+
const value = values[name];
|
|
48
|
+
if (typeof value !== "string" || !value || value.includes("/")) throw new Error(`Layout "${layoutId}" routes returned an invalid "${name}" param: ${JSON.stringify(value)}`);
|
|
49
|
+
return encodeURIComponent(value);
|
|
50
|
+
}).join("/")}`;
|
|
51
|
+
}
|
|
52
|
+
/** The record a discovery entry names, if its `target` is a record target. */
|
|
53
|
+
function targetRecord(entry) {
|
|
54
|
+
const target = asCollectionItem(entry?.target);
|
|
55
|
+
if (typeof target?.id !== "string") return {};
|
|
56
|
+
return {
|
|
57
|
+
recordId: target.id,
|
|
58
|
+
...typeof target.label === "string" && { label: target.label }
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Runs a derived layout's route discovery, keeping the record each page renders. An invalid
|
|
63
|
+
* result throws rather than omitting pages.
|
|
64
|
+
*/
|
|
65
|
+
async function discoverLayoutPages(layout, context) {
|
|
66
|
+
const { id, routes } = layout._internal;
|
|
67
|
+
if (!routes) return [];
|
|
68
|
+
let result;
|
|
69
|
+
try {
|
|
70
|
+
result = await routes({ context });
|
|
71
|
+
} catch (error) {
|
|
72
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
+
throw new Error(`Layout "${id}" routes failed: ${message}`, { cause: error });
|
|
74
|
+
}
|
|
75
|
+
const entries = result?.data;
|
|
76
|
+
if (!Array.isArray(entries)) throw new Error(`Layout "${id}" routes must return { data: [{ params }] }`);
|
|
77
|
+
return entries.map((entry) => ({
|
|
78
|
+
path: derivedLayoutPath(id, entry?.params),
|
|
79
|
+
...targetRecord(entry)
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
34
82
|
|
|
35
83
|
//#endregion
|
|
36
|
-
export { matchDerivedLayout, routeSegments };
|
|
84
|
+
export { derivedLayoutPath, discoverLayoutPages, matchDerivedLayout, routeSegments };
|
package/dist/core/dom.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
1
2
|
//#region src/core/dom.d.ts
|
|
2
3
|
/** The browsing context that owns a rendered element. */
|
|
3
|
-
interface ElementContext {
|
|
4
|
+
export interface ElementContext {
|
|
4
5
|
document: Document;
|
|
5
6
|
window: Window & typeof globalThis;
|
|
6
7
|
}
|
|
@@ -12,6 +13,14 @@ interface ElementContext {
|
|
|
12
13
|
* Returns null for a missing element or a document without a window. Never
|
|
13
14
|
* falls back to globals. This does not convert objects into the target realm.
|
|
14
15
|
*/
|
|
15
|
-
declare function getElementContext(element: Element | null | undefined): ElementContext | null;
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export declare function getElementContext(element: Element | null | undefined): ElementContext | null;
|
|
17
|
+
/**
|
|
18
|
+
* Whether Camox has paused the preview rendering an element, such as a Canvas
|
|
19
|
+
* frame nobody is looking at. Camox already pauses CSS animations, transitions
|
|
20
|
+
* and media there; stop JavaScript-driven animation (WebGL, canvas, requestAnimationFrame
|
|
21
|
+
* loops) while this is true. Always false outside Camox preview.
|
|
22
|
+
*
|
|
23
|
+
* The element must render together with the component calling this.
|
|
24
|
+
*/
|
|
25
|
+
export declare function usePreviewPaused(ref: React.RefObject<Element | null>): boolean;
|
|
26
|
+
//#endregion
|
package/dist/core/dom.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { PREVIEW_PAUSED_ATTRIBUTE } from "./lib/previewPaused.js";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
1
5
|
//#region src/core/dom.ts
|
|
2
6
|
/**
|
|
3
7
|
* Resolve DOM APIs from an element rather than the component's JavaScript realm.
|
|
@@ -17,6 +21,45 @@ function getElementContext(element) {
|
|
|
17
21
|
window
|
|
18
22
|
};
|
|
19
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Whether Camox has paused the preview rendering an element, such as a Canvas
|
|
26
|
+
* frame nobody is looking at. Camox already pauses CSS animations, transitions
|
|
27
|
+
* and media there; stop JavaScript-driven animation (WebGL, canvas, requestAnimationFrame
|
|
28
|
+
* loops) while this is true. Always false outside Camox preview.
|
|
29
|
+
*
|
|
30
|
+
* The element must render together with the component calling this.
|
|
31
|
+
*/
|
|
32
|
+
function usePreviewPaused(ref) {
|
|
33
|
+
const $ = c(4);
|
|
34
|
+
let t0;
|
|
35
|
+
if ($[0] !== ref) {
|
|
36
|
+
t0 = (onChange) => {
|
|
37
|
+
const root = ref.current?.ownerDocument.documentElement;
|
|
38
|
+
const Observer = root?.ownerDocument.defaultView?.MutationObserver;
|
|
39
|
+
if (!root || !Observer) return _temp;
|
|
40
|
+
const observer = new Observer(onChange);
|
|
41
|
+
observer.observe(root, {
|
|
42
|
+
attributes: true,
|
|
43
|
+
attributeFilter: [PREVIEW_PAUSED_ATTRIBUTE]
|
|
44
|
+
});
|
|
45
|
+
return () => observer.disconnect();
|
|
46
|
+
};
|
|
47
|
+
$[0] = ref;
|
|
48
|
+
$[1] = t0;
|
|
49
|
+
} else t0 = $[1];
|
|
50
|
+
const subscribe = t0;
|
|
51
|
+
let t1;
|
|
52
|
+
if ($[2] !== ref) {
|
|
53
|
+
t1 = () => !!ref.current?.ownerDocument.documentElement.hasAttribute(PREVIEW_PAUSED_ATTRIBUTE);
|
|
54
|
+
$[2] = ref;
|
|
55
|
+
$[3] = t1;
|
|
56
|
+
} else t1 = $[3];
|
|
57
|
+
return React.useSyncExternalStore(subscribe, t1, _temp2);
|
|
58
|
+
}
|
|
59
|
+
function _temp2() {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
function _temp() {}
|
|
20
63
|
|
|
21
64
|
//#endregion
|
|
22
|
-
export { getElementContext };
|
|
65
|
+
export { getElementContext, usePreviewPaused };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LoadedRecord } from "../requestContext.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/core/editing/BlockEditingRuntime.d.ts
|
|
4
|
+
/** A record page's record, as `layout.Item` hands it to the editing runtime. */
|
|
5
|
+
export interface LayoutItemProps {
|
|
6
|
+
collectionId: string;
|
|
7
|
+
/** The collection's label field. */
|
|
8
|
+
labelField: string;
|
|
9
|
+
/** The collection's field schemas. */
|
|
10
|
+
properties: Record<string, unknown>;
|
|
11
|
+
record: LoadedRecord;
|
|
12
|
+
children: (scope: any) => React.ReactNode;
|
|
13
|
+
/** The read-only rendering, for where the record can't be edited. */
|
|
14
|
+
fallback: React.ReactNode;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
@@ -5,30 +5,21 @@ import { jsx } from "react/jsx-runtime";
|
|
|
5
5
|
//#region src/core/editing/BlockEditingRuntime.tsx
|
|
6
6
|
const BlockEditingRuntimeContext = React.createContext(null);
|
|
7
7
|
function BlockEditingRuntimeProvider(t0) {
|
|
8
|
-
const $ = c(
|
|
9
|
-
if ($[0] !== "ad4fc9cc5b1b02b16c68794c8ba79d99d7e878328fdbc5bd08fcf7fbaebb83df") {
|
|
10
|
-
for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
11
|
-
$[0] = "ad4fc9cc5b1b02b16c68794c8ba79d99d7e878328fdbc5bd08fcf7fbaebb83df";
|
|
12
|
-
}
|
|
8
|
+
const $ = c(3);
|
|
13
9
|
const { children, runtime } = t0;
|
|
14
10
|
let t1;
|
|
15
|
-
if ($[
|
|
11
|
+
if ($[0] !== children || $[1] !== runtime) {
|
|
16
12
|
t1 = /* @__PURE__ */ jsx(BlockEditingRuntimeContext.Provider, {
|
|
17
13
|
value: runtime,
|
|
18
14
|
children
|
|
19
15
|
});
|
|
20
|
-
$[
|
|
21
|
-
$[
|
|
22
|
-
$[
|
|
23
|
-
} else t1 = $[
|
|
16
|
+
$[0] = children;
|
|
17
|
+
$[1] = runtime;
|
|
18
|
+
$[2] = t1;
|
|
19
|
+
} else t1 = $[2];
|
|
24
20
|
return t1;
|
|
25
21
|
}
|
|
26
22
|
function useBlockEditingRuntime() {
|
|
27
|
-
const $ = c(1);
|
|
28
|
-
if ($[0] !== "ad4fc9cc5b1b02b16c68794c8ba79d99d7e878328fdbc5bd08fcf7fbaebb83df") {
|
|
29
|
-
for (let $i = 0; $i < 1; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
30
|
-
$[0] = "ad4fc9cc5b1b02b16c68794c8ba79d99d7e878328fdbc5bd08fcf7fbaebb83df";
|
|
31
|
-
}
|
|
32
23
|
return React.useContext(BlockEditingRuntimeContext);
|
|
33
24
|
}
|
|
34
25
|
|
|
@@ -14,30 +14,39 @@ function getEditableDefinition(options) {
|
|
|
14
14
|
return definition;
|
|
15
15
|
}
|
|
16
16
|
function EditableBlock(t0) {
|
|
17
|
-
const $ = c(
|
|
18
|
-
if ($[0] !== "e1b3ebcb34bc95f5c457074764df3357687300ade86d161e3e1014255268f87d") {
|
|
19
|
-
for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
20
|
-
$[0] = "e1b3ebcb34bc95f5c457074764df3357687300ade86d161e3e1014255268f87d";
|
|
21
|
-
}
|
|
17
|
+
const $ = c(5);
|
|
22
18
|
const { options, props } = t0;
|
|
23
19
|
let t1;
|
|
24
|
-
if ($[
|
|
20
|
+
if ($[0] !== options) {
|
|
25
21
|
t1 = getEditableDefinition(options);
|
|
26
|
-
$[
|
|
27
|
-
$[
|
|
28
|
-
} else t1 = $[
|
|
22
|
+
$[0] = options;
|
|
23
|
+
$[1] = t1;
|
|
24
|
+
} else t1 = $[1];
|
|
29
25
|
const Component = t1._internal.Component;
|
|
30
26
|
const t2 = props;
|
|
31
27
|
let t3;
|
|
32
|
-
if ($[
|
|
28
|
+
if ($[2] !== Component || $[3] !== t2) {
|
|
33
29
|
t3 = /* @__PURE__ */ jsx(Component, { ...t2 });
|
|
34
|
-
$[
|
|
35
|
-
$[
|
|
36
|
-
$[
|
|
37
|
-
} else t3 = $[
|
|
30
|
+
$[2] = Component;
|
|
31
|
+
$[3] = t2;
|
|
32
|
+
$[4] = t3;
|
|
33
|
+
} else t3 = $[4];
|
|
38
34
|
return t3;
|
|
39
35
|
}
|
|
36
|
+
/** Record pages' records render through the record scope of a block without fields. */
|
|
37
|
+
const layoutItemOptions = {
|
|
38
|
+
id: "camox-layout-item",
|
|
39
|
+
title: "",
|
|
40
|
+
description: "",
|
|
41
|
+
content: () => ({}),
|
|
42
|
+
toMarkdown: () => [],
|
|
43
|
+
component: () => null
|
|
44
|
+
};
|
|
40
45
|
const completeEditingRuntime = {
|
|
46
|
+
renderLayoutItem(props) {
|
|
47
|
+
const { LayoutItem } = getEditableDefinition(layoutItemOptions)._internal;
|
|
48
|
+
return /* @__PURE__ */ jsx(LayoutItem, { ...props });
|
|
49
|
+
},
|
|
41
50
|
useSetting(options, name) {
|
|
42
51
|
return getEditableDefinition(options).useSetting(name);
|
|
43
52
|
},
|
|
@@ -54,21 +63,17 @@ const completeEditingRuntime = {
|
|
|
54
63
|
}
|
|
55
64
|
};
|
|
56
65
|
function CompleteBlockEditingRuntimeProvider(t0) {
|
|
57
|
-
const $ = c(
|
|
58
|
-
if ($[0] !== "e1b3ebcb34bc95f5c457074764df3357687300ade86d161e3e1014255268f87d") {
|
|
59
|
-
for (let $i = 0; $i < 3; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
60
|
-
$[0] = "e1b3ebcb34bc95f5c457074764df3357687300ade86d161e3e1014255268f87d";
|
|
61
|
-
}
|
|
66
|
+
const $ = c(2);
|
|
62
67
|
const { children } = t0;
|
|
63
68
|
let t1;
|
|
64
|
-
if ($[
|
|
69
|
+
if ($[0] !== children) {
|
|
65
70
|
t1 = /* @__PURE__ */ jsx(BlockEditingRuntimeProvider, {
|
|
66
71
|
runtime: completeEditingRuntime,
|
|
67
72
|
children
|
|
68
73
|
});
|
|
69
|
-
$[
|
|
70
|
-
$[
|
|
71
|
-
} else t1 = $[
|
|
74
|
+
$[0] = children;
|
|
75
|
+
$[1] = t1;
|
|
76
|
+
} else t1 = $[1];
|
|
72
77
|
return t1;
|
|
73
78
|
}
|
|
74
79
|
|