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.
- package/bin/camox.mjs +9 -1
- 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 +57 -41
- package/dist/core/components/lexical/MaxLengthPlugin.js +59 -0
- package/dist/core/components/lexical/SelectionBroadcaster.js +55 -56
- package/dist/core/components/lexical/SidebarLexicalEditor.js +327 -234
- package/dist/core/components/lexical/SummaryToggleGuard.js +42 -0
- package/dist/core/components/lexical/TextLinkPopover.js +169 -180
- package/dist/core/createApp.d.ts +254 -299
- package/dist/core/createApp.js +123 -29
- package/dist/core/createBlock.d.ts +5 -5
- package/dist/core/createBlock.js +399 -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 +820 -565
- package/dist/core/editing/createEditableBlock.js +2153 -971
- 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 +304 -103
- package/dist/core/lib/contentType.js +207 -168
- package/dist/core/lib/fieldTypes.js +4 -0
- package/dist/core/lib/iconTypes.d.ts +13 -0
- package/dist/core/lib/icons.d.ts +6 -0
- package/dist/core/lib/icons.js +126 -0
- 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 +7 -7
- package/dist/core/lib/modifierFormats.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 +6 -8
- package/dist/core/lib/textStyles.js +5 -5
- 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 +101 -69
- 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 +811 -507
- 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 +194 -136
- 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 +46 -29
- package/dist/features/preview/components/DrillRow.js +150 -0
- package/dist/features/preview/components/FieldOverlayStyles.js +33 -10
- package/dist/features/preview/components/FieldToolbar.js +166 -116
- package/dist/features/preview/components/Frame.js +108 -20
- package/dist/features/preview/components/IconFieldEditor.js +227 -0
- package/dist/features/preview/components/ItemFieldsEditor.js +238 -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 +10 -42
- 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 +145 -147
- 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 +111 -340
- 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 +27 -0
- 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 +33 -59
- 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 +71 -23
- package/dist/features/provider/LocalhostPreviewProvider.js +73 -73
- package/dist/features/provider/PreviewSignInPage.js +54 -0
- package/dist/features/provider/components/CamoxAppContext.js +11 -11
- package/dist/features/provider/components/CommandPalette.js +87 -143
- 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 +216 -141
- 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 +8 -1
- package/dist/features/runtime/pageViewport.js +7 -0
- package/dist/features/runtime/runtime.d.ts +60 -23
- package/dist/features/runtime/runtime.js +779 -166
- 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/auth.js +1 -50
- 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 +16 -0
- 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 +53 -31
- package/dist/features/vite/vite.js +230 -116
- 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 +139 -60
- 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 +13 -0
- package/dist/lib/queries.d.ts +11 -0
- package/dist/lib/queries.js +71 -131
- 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 -47
- 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 -147
- package/dist/studio.css +2 -2
- package/package.json +70 -72
- package/skills/camox/SKILL.md +16 -5
- package/skills/camox/references/artifacts.md +179 -0
- package/skills/camox/references/block-definitions.md +98 -55
- package/skills/camox/references/cli-common.md +18 -6
- package/skills/camox/references/cli-content.md +92 -58
- 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 +7 -7
- 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 +38 -2
- 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 -194
- 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 -166
- 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/previewCommentsStore.js +0 -115
- package/dist/features/preview/publication.js +0 -81
- package/dist/features/runtime/SharedChromeContext.js +0 -7
- package/dist/features/studio/components/EnvironmentMenu.js +0 -413
- 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,30 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { artifactFrameProps, artifactPlaceholderProps, artifactStandInProps, isArtifactSource } from "../lib/artifact.js";
|
|
2
|
+
import { artifactData } from "../lib/artifactData.js";
|
|
3
|
+
import { resolveBlockFields, resolveToMarkdown } from "../lib/contentType.js";
|
|
4
|
+
import { useProjectUuid } from "../../lib/auth.js";
|
|
5
|
+
import { useLocation, useNavigate } from "../../features/navigation/navigation.js";
|
|
6
|
+
import { useOptionalCamoxApp } from "../../features/provider/components/CamoxAppContext.js";
|
|
7
|
+
import { LinkedRecordsProvider, isItemMarker, queryResultIds, resolveAssetValue, useNormalizedData } from "../../lib/normalized-data.js";
|
|
8
|
+
import { reads, useStudioCache } from "../../lib/studio-reads.js";
|
|
9
|
+
import { useLinkPages } from "../../lib/link-pages.js";
|
|
10
|
+
import { ArtifactsRunContext, useArtifactHost, useInitialArtifactData } from "../hooks/useArtifactHost.js";
|
|
11
|
+
import { IconSvg } from "../lib/icons.js";
|
|
12
|
+
import { renderImagePlaceholder } from "../lib/imagePlaceholder.js";
|
|
5
13
|
import { buildImageSrcSet, getDefaultImageSizes, getDefaultImageWidth, transformImageUrl } from "../lib/imageTransform.js";
|
|
6
14
|
import { markdownToReactNodes } from "../lib/lexicalReact.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
15
|
+
import { resolveReference, resolveReferenceList } from "../lib/reference.js";
|
|
16
|
+
import { blockMutations, collectionMutations, repeatableItemMutations } from "../../lib/queries.js";
|
|
17
|
+
import { referencePickerFocus } from "../../features/preview/referencePickerFocus.js";
|
|
18
|
+
import { invalidateCollectionRecordViews } from "../../lib/collection-cache.js";
|
|
19
|
+
import { selectionBlockId } from "../../features/preview/previewStore.js";
|
|
11
20
|
import { useFrame } from "../../features/preview/components/Frame.js";
|
|
12
|
-
import { AddBlockControlBar } from "../components/AddBlockControlBar.js";
|
|
13
|
-
import { InlineLexicalEditor } from "../components/lexical/InlineLexicalEditor.js";
|
|
14
|
-
import { useFieldSelection } from "../hooks/useFieldSelection.js";
|
|
15
21
|
import { useIsEditable } from "../hooks/useIsEditable.js";
|
|
22
|
+
import { CanvasWorkspaceContext } from "../../features/canvas/canvasZoom.js";
|
|
23
|
+
import { PreviewEditingOwnerContext, usePreviewSelection, usePreviewTargetSelection } from "../../features/preview/previewSelection.js";
|
|
24
|
+
import { overlayFieldId, recordPlacementId } from "../../features/preview/overlayMessages.js";
|
|
25
|
+
import { useLatestRecord } from "./useLatestRecord.js";
|
|
26
|
+
import { referenceWritesFor } from "./referenceWrites.js";
|
|
27
|
+
import { registerRepeatableItem } from "../../features/preview/repeatableItemTargets.js";
|
|
28
|
+
import { revealScrollDelta } from "../../features/preview/selectionReveal.js";
|
|
29
|
+
import { InlineLexicalEditor } from "../components/lexical/InlineLexicalEditor.js";
|
|
30
|
+
import { useFieldSelection, useRecordSelection } from "../hooks/useFieldSelection.js";
|
|
16
31
|
import { useOverlayMessage } from "../hooks/useOverlayMessage.js";
|
|
17
32
|
import { useOverlayState } from "../hooks/useOverlayState.js";
|
|
18
33
|
import { c } from "react/compiler-runtime";
|
|
34
|
+
import * as React from "react";
|
|
35
|
+
import { isQueryBacked } from "@camox/api-contract";
|
|
19
36
|
import { Type } from "@sinclair/typebox";
|
|
20
|
-
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
21
37
|
import { generateKeyBetween } from "fractional-indexing";
|
|
22
|
-
import * as React from "react";
|
|
23
38
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
24
|
-
import {
|
|
25
|
-
import { createPortal } from "react-dom";
|
|
39
|
+
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
26
40
|
|
|
27
41
|
//#region src/core/editing/createEditableBlock.tsx
|
|
42
|
+
/** The pages links lead to in the locale viewed, for the studio's editors, who read the project. */
|
|
43
|
+
function useEditorLinkPages() {
|
|
44
|
+
const $ = c(1);
|
|
45
|
+
let t0;
|
|
46
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
47
|
+
t0 = { fetchProject: true };
|
|
48
|
+
$[0] = t0;
|
|
49
|
+
} else t0 = $[0];
|
|
50
|
+
return useLinkPages(useProjectUuid(), t0);
|
|
51
|
+
}
|
|
28
52
|
/** Normalize legacy links (no `type` field) to the new union shape */
|
|
29
53
|
const normalizeLinkValue = (value) => {
|
|
30
54
|
if (!value.type) return {
|
|
@@ -41,7 +65,7 @@ const normalizeLinkValue = (value) => {
|
|
|
41
65
|
* resolves inconsistently across environments, causing hydration mismatches.
|
|
42
66
|
*/
|
|
43
67
|
const resolveLinkHref = (link, pages, currentPathname) => {
|
|
44
|
-
if (link.type === "page") return (pages?.find((p) =>
|
|
68
|
+
if (link.type === "page") return (pages?.find((p) => p.id === link.pageId))?.fullPath ?? currentPathname;
|
|
45
69
|
if (!link.href || link.href.startsWith("#")) return `${currentPathname}${link.href ?? ""}`;
|
|
46
70
|
return link.href;
|
|
47
71
|
};
|
|
@@ -105,7 +129,7 @@ function buildPeekItems(properties, blockId, parentItemId, content, allItems, co
|
|
|
105
129
|
const markers = [];
|
|
106
130
|
let prevPosition = null;
|
|
107
131
|
for (let i = 0; i < defaultCount; i++) {
|
|
108
|
-
const itemId =
|
|
132
|
+
const itemId = `peek_${++counter.value}`;
|
|
109
133
|
const position = generateKeyBetween(prevPosition, null);
|
|
110
134
|
prevPosition = position;
|
|
111
135
|
allItems.push({
|
|
@@ -118,7 +142,10 @@ function buildPeekItems(properties, blockId, parentItemId, content, allItems, co
|
|
|
118
142
|
summary: "",
|
|
119
143
|
position,
|
|
120
144
|
createdAt: 0,
|
|
121
|
-
updatedAt: 0
|
|
145
|
+
updatedAt: 0,
|
|
146
|
+
projectId: null,
|
|
147
|
+
sharedContentType: null,
|
|
148
|
+
references: {}
|
|
122
149
|
});
|
|
123
150
|
markers.push({ _itemId: itemId });
|
|
124
151
|
const nestedContent = {};
|
|
@@ -133,20 +160,21 @@ function buildPeekItems(properties, blockId, parentItemId, content, allItems, co
|
|
|
133
160
|
}
|
|
134
161
|
}
|
|
135
162
|
function createEditableBlock(options) {
|
|
136
|
-
const
|
|
163
|
+
const fields = resolveBlockFields(options);
|
|
164
|
+
const typeboxSchema = Type.Object(fields.content);
|
|
137
165
|
const contentSchema = {
|
|
138
166
|
type: "object",
|
|
139
167
|
title: options.title,
|
|
140
168
|
description: options.description,
|
|
141
169
|
properties: typeboxSchema.properties,
|
|
142
|
-
required: Object.keys(
|
|
143
|
-
toMarkdown: resolveToMarkdown(options.toMarkdown,
|
|
170
|
+
required: Object.keys(fields.content),
|
|
171
|
+
toMarkdown: resolveToMarkdown(options.toMarkdown, fields.settings, "block", fields.content)
|
|
144
172
|
};
|
|
145
|
-
const settingsTypeboxSchema =
|
|
173
|
+
const settingsTypeboxSchema = fields.settings ? Type.Object(fields.settings) : null;
|
|
146
174
|
const settingsSchema = settingsTypeboxSchema ? {
|
|
147
175
|
type: "object",
|
|
148
176
|
properties: settingsTypeboxSchema.properties,
|
|
149
|
-
required: Object.keys(
|
|
177
|
+
required: Object.keys(fields.settings)
|
|
150
178
|
} : void 0;
|
|
151
179
|
const contentDefaults = {};
|
|
152
180
|
const contentDefaultsForStorage = {};
|
|
@@ -172,102 +200,64 @@ function createEditableBlock(options) {
|
|
|
172
200
|
for (const [key, prop] of Object.entries(settingsTypeboxSchema.properties)) if ("default" in prop) settingsDefaults[key] = prop.default;
|
|
173
201
|
}
|
|
174
202
|
const Context = React.createContext(null);
|
|
175
|
-
const
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
* Root fields: blockId__fieldName
|
|
180
|
-
* Repeater item fields: blockId__itemId__fieldName
|
|
181
|
-
*/
|
|
182
|
-
const getOverlayFieldId = (blockId, repeaterContext, fieldName) => {
|
|
183
|
-
if (repeaterContext?.itemId != null) return `${blockId}__${repeaterContext.itemId}__${fieldName}`;
|
|
184
|
-
return `${blockId}__${fieldName}`;
|
|
185
|
-
};
|
|
203
|
+
const RepeatableItemContext = React.createContext(null);
|
|
204
|
+
const ReferenceContext = React.createContext(null);
|
|
205
|
+
const RepeaterHoverContext = React.createContext(null);
|
|
206
|
+
const getOverlayFieldId = (blockId, fieldName, scope = {}) => scope.reference ? overlayFieldId(blockId, fieldName, { placement: scope.reference.placement }) : overlayFieldId(blockId, fieldName, { itemId: scope.itemId });
|
|
186
207
|
const Field = (t0) => {
|
|
187
|
-
const $ = c(
|
|
188
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
189
|
-
for (let $i = 0; $i < 34; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
190
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
191
|
-
}
|
|
208
|
+
const $ = c(40);
|
|
192
209
|
const { name, textStyle, linkStyle, children } = t0;
|
|
193
210
|
const selectTarget = usePreviewSelection();
|
|
194
|
-
const isCommentMode = useSelector(previewStore, selectIsCommentMode);
|
|
195
211
|
const blockContext = React.use(Context);
|
|
196
212
|
if (!blockContext) throw new Error("Field must be used within a Block Component");
|
|
197
213
|
const { blockId, content, mode } = blockContext;
|
|
198
214
|
const isContentEditable = useIsEditable(mode);
|
|
199
215
|
const elementRef = React.useRef(null);
|
|
200
216
|
const { window: iframeWindow } = useFrame();
|
|
201
|
-
const
|
|
217
|
+
const pages = useEditorLinkPages();
|
|
202
218
|
let t1;
|
|
203
|
-
if ($[
|
|
204
|
-
t1 =
|
|
205
|
-
$[
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
} else t2 = $[4];
|
|
215
|
-
const t3 = !!project;
|
|
216
|
-
let t4;
|
|
217
|
-
if ($[5] !== t2 || $[6] !== t3) {
|
|
218
|
-
t4 = {
|
|
219
|
-
...t2,
|
|
220
|
-
enabled: t3
|
|
221
|
-
};
|
|
222
|
-
$[5] = t2;
|
|
223
|
-
$[6] = t3;
|
|
224
|
-
$[7] = t4;
|
|
225
|
-
} else t4 = $[7];
|
|
226
|
-
const { data: pages } = useQuery(t4);
|
|
227
|
-
let t5;
|
|
228
|
-
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
|
|
229
|
-
t5 = { select: _temp };
|
|
230
|
-
$[8] = t5;
|
|
231
|
-
} else t5 = $[8];
|
|
232
|
-
const currentPathname = useLocation(t5);
|
|
233
|
-
const repeaterContext = React.use(RepeaterItemContext);
|
|
234
|
-
const fieldId = getOverlayFieldId(blockId, repeaterContext, String(name));
|
|
219
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
220
|
+
t1 = { select: _temp };
|
|
221
|
+
$[0] = t1;
|
|
222
|
+
} else t1 = $[0];
|
|
223
|
+
const currentPathname = useLocation(t1);
|
|
224
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
225
|
+
const reference = React.use(ReferenceContext);
|
|
226
|
+
const fieldId = getOverlayFieldId(blockId, String(name), {
|
|
227
|
+
itemId: repeaterContext?.itemId,
|
|
228
|
+
reference
|
|
229
|
+
});
|
|
235
230
|
const fieldValue = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
236
231
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
237
232
|
const [isEditorFocused, setIsEditorFocused] = React.useState(false);
|
|
238
|
-
const
|
|
239
|
-
const
|
|
233
|
+
const isBlockFieldSelected = useFieldSelection(blockId, String(name), "String", repeaterContext?.itemId);
|
|
234
|
+
const isRecordFieldSelected = useRecordSelection(reference?.placement ?? null, String(name));
|
|
235
|
+
const overlayState = useOverlayState(isHovered, isEditorFocused || (reference ? isRecordFieldSelected : isBlockFieldSelected));
|
|
240
236
|
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", { fieldId });
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
setIsHovered(isHoveredFromSidebar);
|
|
246
|
-
};
|
|
247
|
-
t7 = [isHoveredFromSidebar];
|
|
248
|
-
$[9] = isHoveredFromSidebar;
|
|
249
|
-
$[10] = t6;
|
|
250
|
-
$[11] = t7;
|
|
251
|
-
} else {
|
|
252
|
-
t6 = $[10];
|
|
253
|
-
t7 = $[11];
|
|
237
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
238
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
239
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
240
|
+
setIsHovered(isHoveredFromSidebar);
|
|
254
241
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
242
|
+
let t2;
|
|
243
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
244
|
+
t2 = blockMutations.updateContent();
|
|
245
|
+
$[1] = t2;
|
|
246
|
+
} else t2 = $[1];
|
|
247
|
+
const updateBlockContent = useMutation(t2);
|
|
248
|
+
let t3;
|
|
249
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
250
|
+
t3 = repeatableItemMutations.updateContent();
|
|
251
|
+
$[2] = t3;
|
|
252
|
+
} else t3 = $[2];
|
|
253
|
+
const updateRepeatableContent = useMutation(t3);
|
|
254
|
+
let t4;
|
|
255
|
+
if ($[3] !== blockId || $[4] !== name || $[5] !== reference || $[6] !== repeaterContext || $[7] !== updateBlockContent || $[8] !== updateRepeatableContent) {
|
|
256
|
+
t4 = (newValue) => {
|
|
257
|
+
if (reference) {
|
|
258
|
+
reference.update(String(name), newValue);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
271
261
|
if (repeaterContext) {
|
|
272
262
|
const { itemId } = repeaterContext;
|
|
273
263
|
if (itemId != null) updateRepeatableContent.mutate({
|
|
@@ -279,17 +269,22 @@ function createEditableBlock(options) {
|
|
|
279
269
|
content: { [name]: newValue }
|
|
280
270
|
});
|
|
281
271
|
};
|
|
282
|
-
$[
|
|
283
|
-
$[
|
|
284
|
-
$[
|
|
285
|
-
$[
|
|
286
|
-
$[
|
|
287
|
-
$[
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
272
|
+
$[3] = blockId;
|
|
273
|
+
$[4] = name;
|
|
274
|
+
$[5] = reference;
|
|
275
|
+
$[6] = repeaterContext;
|
|
276
|
+
$[7] = updateBlockContent;
|
|
277
|
+
$[8] = updateRepeatableContent;
|
|
278
|
+
$[9] = t4;
|
|
279
|
+
} else t4 = $[9];
|
|
280
|
+
const handleChange = t4;
|
|
281
|
+
let t5;
|
|
282
|
+
if ($[10] !== blockId || $[11] !== name || $[12] !== reference || $[13] !== repeaterContext || $[14] !== selectTarget) {
|
|
283
|
+
t5 = () => {
|
|
284
|
+
if (reference) {
|
|
285
|
+
reference.selectRecordField(String(name), "String");
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
293
288
|
selectTarget(repeaterContext?.itemId != null ? {
|
|
294
289
|
type: "item-field",
|
|
295
290
|
blockId,
|
|
@@ -301,98 +296,234 @@ function createEditableBlock(options) {
|
|
|
301
296
|
blockId,
|
|
302
297
|
fieldName: String(name),
|
|
303
298
|
fieldType: "String"
|
|
304
|
-
}
|
|
299
|
+
});
|
|
305
300
|
};
|
|
306
|
-
$[
|
|
307
|
-
$[
|
|
308
|
-
$[
|
|
309
|
-
$[
|
|
310
|
-
$[
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
301
|
+
$[10] = blockId;
|
|
302
|
+
$[11] = name;
|
|
303
|
+
$[12] = reference;
|
|
304
|
+
$[13] = repeaterContext;
|
|
305
|
+
$[14] = selectTarget;
|
|
306
|
+
$[15] = t5;
|
|
307
|
+
} else t5 = $[15];
|
|
308
|
+
const selectField = t5;
|
|
309
|
+
let t6;
|
|
310
|
+
if ($[16] !== selectField) {
|
|
311
|
+
t6 = () => {
|
|
317
312
|
setIsEditorFocused(true);
|
|
318
313
|
selectField();
|
|
319
314
|
};
|
|
320
|
-
$[
|
|
321
|
-
$[
|
|
322
|
-
} else
|
|
323
|
-
const handleFocus =
|
|
324
|
-
let
|
|
325
|
-
if ($[
|
|
326
|
-
|
|
315
|
+
$[16] = selectField;
|
|
316
|
+
$[17] = t6;
|
|
317
|
+
} else t6 = $[17];
|
|
318
|
+
const handleFocus = t6;
|
|
319
|
+
let t7;
|
|
320
|
+
if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
|
|
321
|
+
t7 = () => {
|
|
327
322
|
setIsEditorFocused(false);
|
|
328
323
|
};
|
|
329
|
-
$[
|
|
330
|
-
} else
|
|
331
|
-
const handleBlur =
|
|
332
|
-
let
|
|
333
|
-
if ($[
|
|
334
|
-
|
|
324
|
+
$[18] = t7;
|
|
325
|
+
} else t7 = $[18];
|
|
326
|
+
const handleBlur = t7;
|
|
327
|
+
let t8;
|
|
328
|
+
if ($[19] !== isContentEditable) {
|
|
329
|
+
t8 = () => {
|
|
335
330
|
if (isContentEditable) setIsHovered(true);
|
|
336
331
|
};
|
|
337
|
-
$[
|
|
338
|
-
$[
|
|
339
|
-
} else
|
|
340
|
-
const handleMouseEnter =
|
|
341
|
-
let
|
|
342
|
-
if ($[
|
|
343
|
-
|
|
332
|
+
$[19] = isContentEditable;
|
|
333
|
+
$[20] = t8;
|
|
334
|
+
} else t8 = $[20];
|
|
335
|
+
const handleMouseEnter = t8;
|
|
336
|
+
let t9;
|
|
337
|
+
if ($[21] !== isContentEditable) {
|
|
338
|
+
t9 = () => {
|
|
344
339
|
if (isContentEditable) setIsHovered(false);
|
|
345
340
|
};
|
|
346
|
-
$[
|
|
347
|
-
$[
|
|
348
|
-
} else
|
|
349
|
-
const handleMouseLeave =
|
|
341
|
+
$[21] = isContentEditable;
|
|
342
|
+
$[22] = t9;
|
|
343
|
+
} else t9 = $[22];
|
|
344
|
+
const handleMouseLeave = t9;
|
|
350
345
|
const fieldData = { text: fieldValue };
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
linkStyle
|
|
356
|
-
}) }, fieldData) });
|
|
357
|
-
const t16 = children({
|
|
358
|
-
ref: elementRef,
|
|
359
|
-
"data-camox-field-id": fieldId,
|
|
360
|
-
...overlayState,
|
|
361
|
-
"data-camox-overlay-mode": options.synced ? "synced" : void 0,
|
|
362
|
-
onMouseEnter: handleMouseEnter,
|
|
363
|
-
onMouseLeave: handleMouseLeave,
|
|
364
|
-
onClickCapture: selectField,
|
|
365
|
-
children: isCommentMode ? markdownToReactNodes(fieldValue, {
|
|
346
|
+
const fieldSchema = repeaterContext ? repeaterContext.itemSchema?.[name] : (blockContext.sourceSchema ?? typeboxSchema.properties)[name];
|
|
347
|
+
let t10;
|
|
348
|
+
if ($[23] !== currentPathname || $[24] !== fieldValue || $[25] !== linkStyle || $[26] !== pages || $[27] !== textStyle) {
|
|
349
|
+
t10 = () => markdownToReactNodes(fieldValue, {
|
|
366
350
|
pages,
|
|
367
351
|
fallbackHref: currentPathname,
|
|
368
352
|
textStyle,
|
|
369
353
|
linkStyle
|
|
370
|
-
})
|
|
354
|
+
});
|
|
355
|
+
$[23] = currentPathname;
|
|
356
|
+
$[24] = fieldValue;
|
|
357
|
+
$[25] = linkStyle;
|
|
358
|
+
$[26] = pages;
|
|
359
|
+
$[27] = textStyle;
|
|
360
|
+
$[28] = t10;
|
|
361
|
+
} else t10 = $[28];
|
|
362
|
+
const text = t10;
|
|
363
|
+
if (!isContentEditable) return /* @__PURE__ */ jsx(Fragment, { children: children({ children: text() }, fieldData) });
|
|
364
|
+
const t11 = fieldSchema?.maxLength;
|
|
365
|
+
let t12;
|
|
366
|
+
if ($[29] !== currentPathname || $[30] !== fieldValue || $[31] !== handleChange || $[32] !== handleFocus || $[33] !== linkStyle || $[34] !== pages || $[35] !== t11 || $[36] !== textStyle) {
|
|
367
|
+
t12 = /* @__PURE__ */ jsx(InlineLexicalEditor, {
|
|
371
368
|
textStyle,
|
|
372
369
|
linkStyle,
|
|
373
370
|
pages,
|
|
374
371
|
fallbackHref: currentPathname,
|
|
375
372
|
initialState: fieldValue,
|
|
376
373
|
externalState: fieldValue,
|
|
374
|
+
maxLength: t11,
|
|
377
375
|
onChange: handleChange,
|
|
378
376
|
onFocus: handleFocus,
|
|
379
377
|
onBlur: handleBlur
|
|
380
|
-
})
|
|
378
|
+
});
|
|
379
|
+
$[29] = currentPathname;
|
|
380
|
+
$[30] = fieldValue;
|
|
381
|
+
$[31] = handleChange;
|
|
382
|
+
$[32] = handleFocus;
|
|
383
|
+
$[33] = linkStyle;
|
|
384
|
+
$[34] = pages;
|
|
385
|
+
$[35] = t11;
|
|
386
|
+
$[36] = textStyle;
|
|
387
|
+
$[37] = t12;
|
|
388
|
+
} else t12 = $[37];
|
|
389
|
+
const t13 = children({
|
|
390
|
+
ref: elementRef,
|
|
391
|
+
"data-camox-field-id": fieldId,
|
|
392
|
+
...overlayState,
|
|
393
|
+
"data-camox-overlay-mode": reference ? "reference" : options.synced ? "synced" : void 0,
|
|
394
|
+
onMouseEnter: handleMouseEnter,
|
|
395
|
+
onMouseLeave: handleMouseLeave,
|
|
396
|
+
onClickCapture: selectField,
|
|
397
|
+
children: t12
|
|
381
398
|
}, fieldData);
|
|
382
|
-
let
|
|
383
|
-
if ($[
|
|
384
|
-
|
|
385
|
-
$[
|
|
386
|
-
$[
|
|
387
|
-
} else
|
|
388
|
-
return
|
|
399
|
+
let t14;
|
|
400
|
+
if ($[38] !== t13) {
|
|
401
|
+
t14 = /* @__PURE__ */ jsx(Fragment, { children: t13 });
|
|
402
|
+
$[38] = t13;
|
|
403
|
+
$[39] = t14;
|
|
404
|
+
} else t14 = $[39];
|
|
405
|
+
return t14;
|
|
389
406
|
};
|
|
390
|
-
const
|
|
391
|
-
const $ = c(
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
407
|
+
const Icon = (t0) => {
|
|
408
|
+
const $ = c(33);
|
|
409
|
+
let name;
|
|
410
|
+
let props;
|
|
411
|
+
if ($[0] !== t0) {
|
|
412
|
+
({name, ...props} = t0);
|
|
413
|
+
$[0] = t0;
|
|
414
|
+
$[1] = name;
|
|
415
|
+
$[2] = props;
|
|
416
|
+
} else {
|
|
417
|
+
name = $[1];
|
|
418
|
+
props = $[2];
|
|
419
|
+
}
|
|
420
|
+
const block = React.use(Context);
|
|
421
|
+
const item = React.use(RepeatableItemContext);
|
|
422
|
+
const selectTarget = usePreviewSelection();
|
|
423
|
+
if (!block) throw new Error("Icon must be used within a Block Component");
|
|
424
|
+
const editable = useIsEditable(block.mode);
|
|
425
|
+
const fieldName = String(name);
|
|
426
|
+
const value = item ? item.itemContent[name] : block.content[name];
|
|
427
|
+
const t1 = item?.itemId;
|
|
428
|
+
let t2;
|
|
429
|
+
if ($[3] !== block.blockId || $[4] !== fieldName || $[5] !== t1) {
|
|
430
|
+
t2 = getOverlayFieldId(block.blockId, fieldName, { itemId: t1 });
|
|
431
|
+
$[3] = block.blockId;
|
|
432
|
+
$[4] = fieldName;
|
|
433
|
+
$[5] = t1;
|
|
434
|
+
$[6] = t2;
|
|
435
|
+
} else t2 = $[6];
|
|
436
|
+
const fieldId = t2;
|
|
437
|
+
const { window: iframeWindow } = useFrame();
|
|
438
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
439
|
+
const isFocused = useFieldSelection(block.blockId, fieldName, "Icon", item?.itemId);
|
|
440
|
+
let t3;
|
|
441
|
+
if ($[7] !== fieldId) {
|
|
442
|
+
t3 = { fieldId };
|
|
443
|
+
$[7] = fieldId;
|
|
444
|
+
$[8] = t3;
|
|
445
|
+
} else t3 = $[8];
|
|
446
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, editable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t3);
|
|
447
|
+
const overlayState = useOverlayState(isHovered || isHoveredFromSidebar, isFocused);
|
|
448
|
+
const t4 = editable ? fieldId : void 0;
|
|
449
|
+
const t5 = editable ? "icon" : void 0;
|
|
450
|
+
let t6;
|
|
451
|
+
if ($[9] !== editable || $[10] !== overlayState) {
|
|
452
|
+
t6 = editable ? overlayState : {};
|
|
453
|
+
$[9] = editable;
|
|
454
|
+
$[10] = overlayState;
|
|
455
|
+
$[11] = t6;
|
|
456
|
+
} else t6 = $[11];
|
|
457
|
+
const t7 = editable && options.synced ? "synced" : void 0;
|
|
458
|
+
let t8;
|
|
459
|
+
let t9;
|
|
460
|
+
if ($[12] !== editable || $[13] !== props) {
|
|
461
|
+
t8 = (event) => {
|
|
462
|
+
if (editable) setIsHovered(true);
|
|
463
|
+
props.onMouseEnter?.(event);
|
|
464
|
+
};
|
|
465
|
+
t9 = (event_0) => {
|
|
466
|
+
if (editable) setIsHovered(false);
|
|
467
|
+
props.onMouseLeave?.(event_0);
|
|
468
|
+
};
|
|
469
|
+
$[12] = editable;
|
|
470
|
+
$[13] = props;
|
|
471
|
+
$[14] = t8;
|
|
472
|
+
$[15] = t9;
|
|
473
|
+
} else {
|
|
474
|
+
t8 = $[14];
|
|
475
|
+
t9 = $[15];
|
|
395
476
|
}
|
|
477
|
+
let t10;
|
|
478
|
+
if ($[16] !== block.blockId || $[17] !== editable || $[18] !== fieldName || $[19] !== item || $[20] !== props.onClickCapture || $[21] !== selectTarget) {
|
|
479
|
+
t10 = editable ? () => selectTarget(item?.itemId != null ? {
|
|
480
|
+
type: "item-field",
|
|
481
|
+
blockId: block.blockId,
|
|
482
|
+
itemId: item.itemId,
|
|
483
|
+
fieldName,
|
|
484
|
+
fieldType: "Icon"
|
|
485
|
+
} : {
|
|
486
|
+
type: "block-field",
|
|
487
|
+
blockId: block.blockId,
|
|
488
|
+
fieldName,
|
|
489
|
+
fieldType: "Icon"
|
|
490
|
+
}) : props.onClickCapture;
|
|
491
|
+
$[16] = block.blockId;
|
|
492
|
+
$[17] = editable;
|
|
493
|
+
$[18] = fieldName;
|
|
494
|
+
$[19] = item;
|
|
495
|
+
$[20] = props.onClickCapture;
|
|
496
|
+
$[21] = selectTarget;
|
|
497
|
+
$[22] = t10;
|
|
498
|
+
} else t10 = $[22];
|
|
499
|
+
let t11;
|
|
500
|
+
if ($[23] !== props || $[24] !== t10 || $[25] !== t4 || $[26] !== t5 || $[27] !== t6 || $[28] !== t7 || $[29] !== t8 || $[30] !== t9 || $[31] !== value) {
|
|
501
|
+
t11 = /* @__PURE__ */ jsx(IconSvg, {
|
|
502
|
+
...props,
|
|
503
|
+
iconId: value,
|
|
504
|
+
"data-camox-field-id": t4,
|
|
505
|
+
"data-camox-field-type": t5,
|
|
506
|
+
...t6,
|
|
507
|
+
"data-camox-overlay-mode": t7,
|
|
508
|
+
onMouseEnter: t8,
|
|
509
|
+
onMouseLeave: t9,
|
|
510
|
+
onClickCapture: t10
|
|
511
|
+
});
|
|
512
|
+
$[23] = props;
|
|
513
|
+
$[24] = t10;
|
|
514
|
+
$[25] = t4;
|
|
515
|
+
$[26] = t5;
|
|
516
|
+
$[27] = t6;
|
|
517
|
+
$[28] = t7;
|
|
518
|
+
$[29] = t8;
|
|
519
|
+
$[30] = t9;
|
|
520
|
+
$[31] = value;
|
|
521
|
+
$[32] = t11;
|
|
522
|
+
} else t11 = $[32];
|
|
523
|
+
return t11;
|
|
524
|
+
};
|
|
525
|
+
const Embed = (t0) => {
|
|
526
|
+
const $ = c(40);
|
|
396
527
|
const { name, children } = t0;
|
|
397
528
|
const selectTarget = usePreviewSelection();
|
|
398
529
|
const blockContext = React.use(Context);
|
|
@@ -400,26 +531,37 @@ function createEditableBlock(options) {
|
|
|
400
531
|
const { blockId, content, mode } = blockContext;
|
|
401
532
|
const isContentEditable = useIsEditable(mode);
|
|
402
533
|
const { window: iframeWindow } = useFrame();
|
|
403
|
-
const repeaterContext = React.use(
|
|
534
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
404
535
|
const fieldValue = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
536
|
+
const reference = React.use(ReferenceContext);
|
|
405
537
|
const t1 = String(name);
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
538
|
+
const t2 = repeaterContext?.itemId;
|
|
539
|
+
let t3;
|
|
540
|
+
if ($[0] !== blockId || $[1] !== reference || $[2] !== t1 || $[3] !== t2) {
|
|
541
|
+
t3 = getOverlayFieldId(blockId, t1, {
|
|
542
|
+
itemId: t2,
|
|
543
|
+
reference
|
|
544
|
+
});
|
|
545
|
+
$[0] = blockId;
|
|
546
|
+
$[1] = reference;
|
|
547
|
+
$[2] = t1;
|
|
548
|
+
$[3] = t2;
|
|
549
|
+
$[4] = t3;
|
|
550
|
+
} else t3 = $[4];
|
|
551
|
+
const fieldId = t3;
|
|
415
552
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
416
|
-
const
|
|
553
|
+
const isRecordFieldSelected = useRecordSelection(reference?.placement ?? null, String(name));
|
|
554
|
+
const overlayState = useOverlayState(isHovered, reference != null && isRecordFieldSelected);
|
|
417
555
|
const embedRef = React.useRef(null);
|
|
418
556
|
const itemId = repeaterContext?.itemId;
|
|
419
|
-
let
|
|
420
|
-
if ($[5] !== blockId || $[6] !== isContentEditable || $[7] !== itemId || $[8] !== name || $[9] !== selectTarget) {
|
|
421
|
-
|
|
557
|
+
let t4;
|
|
558
|
+
if ($[5] !== blockId || $[6] !== isContentEditable || $[7] !== itemId || $[8] !== name || $[9] !== reference || $[10] !== selectTarget) {
|
|
559
|
+
t4 = () => {
|
|
422
560
|
if (!isContentEditable) return;
|
|
561
|
+
if (reference) {
|
|
562
|
+
reference.selectRecordField(String(name), "Embed");
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
423
565
|
selectTarget(itemId != null ? {
|
|
424
566
|
type: "item-field",
|
|
425
567
|
blockId,
|
|
@@ -431,20 +573,21 @@ function createEditableBlock(options) {
|
|
|
431
573
|
blockId,
|
|
432
574
|
fieldName: String(name),
|
|
433
575
|
fieldType: "Embed"
|
|
434
|
-
}
|
|
576
|
+
});
|
|
435
577
|
};
|
|
436
578
|
$[5] = blockId;
|
|
437
579
|
$[6] = isContentEditable;
|
|
438
580
|
$[7] = itemId;
|
|
439
581
|
$[8] = name;
|
|
440
|
-
$[9] =
|
|
441
|
-
$[10] =
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
582
|
+
$[9] = reference;
|
|
583
|
+
$[10] = selectTarget;
|
|
584
|
+
$[11] = t4;
|
|
585
|
+
} else t4 = $[11];
|
|
586
|
+
const selectField = t4;
|
|
445
587
|
let t5;
|
|
446
|
-
|
|
447
|
-
|
|
588
|
+
let t6;
|
|
589
|
+
if ($[12] !== iframeWindow || $[13] !== isContentEditable || $[14] !== selectField) {
|
|
590
|
+
t5 = () => {
|
|
448
591
|
if (!isContentEditable || !iframeWindow) return;
|
|
449
592
|
let timer;
|
|
450
593
|
const handleBlur = () => {
|
|
@@ -453,11 +596,7 @@ function createEditableBlock(options) {
|
|
|
453
596
|
const activeElement = iframeWindow.document.activeElement;
|
|
454
597
|
if (activeElement?.tagName !== "IFRAME") return;
|
|
455
598
|
if (!embedRef.current?.contains(activeElement)) return;
|
|
456
|
-
selectField(
|
|
457
|
-
currentTarget: embedRef.current,
|
|
458
|
-
preventDefault() {},
|
|
459
|
-
stopPropagation() {}
|
|
460
|
-
});
|
|
599
|
+
selectField();
|
|
461
600
|
}, 0);
|
|
462
601
|
};
|
|
463
602
|
iframeWindow.addEventListener("blur", handleBlur);
|
|
@@ -466,50 +605,46 @@ function createEditableBlock(options) {
|
|
|
466
605
|
iframeWindow.removeEventListener("blur", handleBlur);
|
|
467
606
|
};
|
|
468
607
|
};
|
|
469
|
-
|
|
608
|
+
t6 = [
|
|
470
609
|
isContentEditable,
|
|
471
610
|
iframeWindow,
|
|
472
611
|
selectField
|
|
473
612
|
];
|
|
474
|
-
$[
|
|
475
|
-
$[
|
|
476
|
-
$[
|
|
477
|
-
$[14] = t4;
|
|
613
|
+
$[12] = iframeWindow;
|
|
614
|
+
$[13] = isContentEditable;
|
|
615
|
+
$[14] = selectField;
|
|
478
616
|
$[15] = t5;
|
|
617
|
+
$[16] = t6;
|
|
479
618
|
} else {
|
|
480
|
-
t4 = $[14];
|
|
481
619
|
t5 = $[15];
|
|
620
|
+
t6 = $[16];
|
|
482
621
|
}
|
|
483
|
-
React.useEffect(
|
|
484
|
-
let t6;
|
|
485
|
-
if ($[16] !== fieldId) {
|
|
486
|
-
t6 = { fieldId };
|
|
487
|
-
$[16] = fieldId;
|
|
488
|
-
$[17] = t6;
|
|
489
|
-
} else t6 = $[17];
|
|
490
|
-
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t6);
|
|
622
|
+
React.useEffect(t5, t6);
|
|
491
623
|
let t7;
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
t7 = $[19];
|
|
503
|
-
t8 = $[20];
|
|
624
|
+
if ($[17] !== fieldId) {
|
|
625
|
+
t7 = { fieldId };
|
|
626
|
+
$[17] = fieldId;
|
|
627
|
+
$[18] = t7;
|
|
628
|
+
} else t7 = $[18];
|
|
629
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t7);
|
|
630
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
631
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
632
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
633
|
+
setIsHovered(isHoveredFromSidebar);
|
|
504
634
|
}
|
|
505
|
-
|
|
506
|
-
const t9 = isContentEditable ?
|
|
507
|
-
|
|
635
|
+
const t8 = isContentEditable ? fieldId : void 0;
|
|
636
|
+
const t9 = isContentEditable ? "embed" : void 0;
|
|
637
|
+
let t10;
|
|
638
|
+
if ($[19] !== isContentEditable || $[20] !== overlayState) {
|
|
639
|
+
t10 = isContentEditable ? overlayState : {};
|
|
640
|
+
$[19] = isContentEditable;
|
|
641
|
+
$[20] = overlayState;
|
|
642
|
+
$[21] = t10;
|
|
643
|
+
} else t10 = $[21];
|
|
508
644
|
let t11;
|
|
509
|
-
if ($[
|
|
510
|
-
t11 =
|
|
511
|
-
$[
|
|
512
|
-
$[22] = overlayState;
|
|
645
|
+
if ($[22] !== reference) {
|
|
646
|
+
t11 = assetOverlayMode(reference);
|
|
647
|
+
$[22] = reference;
|
|
513
648
|
$[23] = t11;
|
|
514
649
|
} else t11 = $[23];
|
|
515
650
|
let t12;
|
|
@@ -532,14 +667,14 @@ function createEditableBlock(options) {
|
|
|
532
667
|
$[30] = t14;
|
|
533
668
|
} else t14 = $[30];
|
|
534
669
|
let t15;
|
|
535
|
-
if ($[31] !== selectField || $[32] !== t10 || $[33] !== t11 || $[34] !== t12 || $[35] !== t13 || $[36] !== t14 || $[37] !== t9) {
|
|
670
|
+
if ($[31] !== selectField || $[32] !== t10 || $[33] !== t11 || $[34] !== t12 || $[35] !== t13 || $[36] !== t14 || $[37] !== t8 || $[38] !== t9) {
|
|
536
671
|
t15 = /* @__PURE__ */ jsx("div", {
|
|
537
672
|
ref: embedRef,
|
|
538
673
|
onClickCapture: selectField,
|
|
539
|
-
"data-camox-field-id":
|
|
540
|
-
"data-camox-field-type":
|
|
541
|
-
...
|
|
542
|
-
"data-camox-overlay-mode":
|
|
674
|
+
"data-camox-field-id": t8,
|
|
675
|
+
"data-camox-field-type": t9,
|
|
676
|
+
...t10,
|
|
677
|
+
"data-camox-overlay-mode": t11,
|
|
543
678
|
onMouseEnter: t12,
|
|
544
679
|
onMouseLeave: t13,
|
|
545
680
|
children: t14
|
|
@@ -550,101 +685,282 @@ function createEditableBlock(options) {
|
|
|
550
685
|
$[34] = t12;
|
|
551
686
|
$[35] = t13;
|
|
552
687
|
$[36] = t14;
|
|
553
|
-
$[37] =
|
|
554
|
-
$[38] =
|
|
555
|
-
|
|
688
|
+
$[37] = t8;
|
|
689
|
+
$[38] = t9;
|
|
690
|
+
$[39] = t15;
|
|
691
|
+
} else t15 = $[39];
|
|
556
692
|
return t15;
|
|
557
693
|
};
|
|
694
|
+
const Artifact = (t0) => {
|
|
695
|
+
const $ = c(53);
|
|
696
|
+
const { name, children } = t0;
|
|
697
|
+
const selectTarget = usePreviewSelection();
|
|
698
|
+
const blockContext = React.use(Context);
|
|
699
|
+
if (!blockContext) throw new Error("Artifact must be used within a Block Component");
|
|
700
|
+
const { blockId, content, mode } = blockContext;
|
|
701
|
+
const isContentEditable = useIsEditable(mode);
|
|
702
|
+
const { window: iframeWindow } = useFrame();
|
|
703
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
704
|
+
const value = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
705
|
+
const itemId = repeaterContext?.itemId;
|
|
706
|
+
const fieldName = String(name);
|
|
707
|
+
let t1;
|
|
708
|
+
if ($[0] !== blockId || $[1] !== fieldName || $[2] !== itemId) {
|
|
709
|
+
t1 = getOverlayFieldId(blockId, fieldName, { itemId });
|
|
710
|
+
$[0] = blockId;
|
|
711
|
+
$[1] = fieldName;
|
|
712
|
+
$[2] = itemId;
|
|
713
|
+
$[3] = t1;
|
|
714
|
+
} else t1 = $[3];
|
|
715
|
+
const fieldId = t1;
|
|
716
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
717
|
+
let t2;
|
|
718
|
+
if ($[4] !== fieldId) {
|
|
719
|
+
t2 = { fieldId };
|
|
720
|
+
$[4] = fieldId;
|
|
721
|
+
$[5] = t2;
|
|
722
|
+
} else t2 = $[5];
|
|
723
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t2);
|
|
724
|
+
const overlayState = useOverlayState(isHovered || isHoveredFromSidebar);
|
|
725
|
+
let t3;
|
|
726
|
+
if ($[6] !== blockId || $[7] !== fieldName || $[8] !== itemId || $[9] !== selectTarget) {
|
|
727
|
+
t3 = () => {
|
|
728
|
+
selectTarget(itemId != null ? {
|
|
729
|
+
type: "item-field",
|
|
730
|
+
blockId,
|
|
731
|
+
itemId,
|
|
732
|
+
fieldName,
|
|
733
|
+
fieldType: "Artifact"
|
|
734
|
+
} : {
|
|
735
|
+
type: "block-field",
|
|
736
|
+
blockId,
|
|
737
|
+
fieldName,
|
|
738
|
+
fieldType: "Artifact"
|
|
739
|
+
});
|
|
740
|
+
};
|
|
741
|
+
$[6] = blockId;
|
|
742
|
+
$[7] = fieldName;
|
|
743
|
+
$[8] = itemId;
|
|
744
|
+
$[9] = selectTarget;
|
|
745
|
+
$[10] = t3;
|
|
746
|
+
} else t3 = $[10];
|
|
747
|
+
const selectField = t3;
|
|
748
|
+
const { filesMap } = useNormalizedData();
|
|
749
|
+
const pages = useEditorLinkPages();
|
|
750
|
+
let t4;
|
|
751
|
+
if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
|
|
752
|
+
t4 = { select: _temp2 };
|
|
753
|
+
$[11] = t4;
|
|
754
|
+
} else t4 = $[11];
|
|
755
|
+
const currentPathname = useLocation(t4);
|
|
756
|
+
let t5;
|
|
757
|
+
if ($[12] !== blockContext.settings || $[13] !== content || $[14] !== currentPathname || $[15] !== fieldName || $[16] !== filesMap || $[17] !== pages || $[18] !== repeaterContext) {
|
|
758
|
+
let t6;
|
|
759
|
+
if ($[20] !== currentPathname || $[21] !== pages) {
|
|
760
|
+
t6 = (link) => resolveLinkHref(normalizeLinkValue(link), pages, currentPathname);
|
|
761
|
+
$[20] = currentPathname;
|
|
762
|
+
$[21] = pages;
|
|
763
|
+
$[22] = t6;
|
|
764
|
+
} else t6 = $[22];
|
|
765
|
+
let t7;
|
|
766
|
+
if ($[23] !== filesMap) {
|
|
767
|
+
t7 = (asset) => resolveAssetValue(asset, filesMap);
|
|
768
|
+
$[23] = filesMap;
|
|
769
|
+
$[24] = t7;
|
|
770
|
+
} else t7 = $[24];
|
|
771
|
+
t5 = artifactData(repeaterContext ? repeaterContext.itemSchema?.[fieldName] : typeboxSchema.properties[fieldName], repeaterContext ? {
|
|
772
|
+
content: repeaterContext.itemContent,
|
|
773
|
+
settings: repeaterContext.itemSettings
|
|
774
|
+
} : {
|
|
775
|
+
content,
|
|
776
|
+
settings: blockContext.settings
|
|
777
|
+
}, {
|
|
778
|
+
linkHref: t6,
|
|
779
|
+
asset: t7
|
|
780
|
+
});
|
|
781
|
+
$[12] = blockContext.settings;
|
|
782
|
+
$[13] = content;
|
|
783
|
+
$[14] = currentPathname;
|
|
784
|
+
$[15] = fieldName;
|
|
785
|
+
$[16] = filesMap;
|
|
786
|
+
$[17] = pages;
|
|
787
|
+
$[18] = repeaterContext;
|
|
788
|
+
$[19] = t5;
|
|
789
|
+
} else t5 = $[19];
|
|
790
|
+
const data = t5;
|
|
791
|
+
const canvas = React.use(CanvasWorkspaceContext) !== null;
|
|
792
|
+
const fieldSchema = repeaterContext ? repeaterContext.itemSchema?.[fieldName] : (blockContext.sourceSchema ?? typeboxSchema.properties)[fieldName];
|
|
793
|
+
let t6;
|
|
794
|
+
if ($[25] !== canvas || $[26] !== isContentEditable) {
|
|
795
|
+
t6 = {
|
|
796
|
+
editing: isContentEditable,
|
|
797
|
+
canvas
|
|
798
|
+
};
|
|
799
|
+
$[25] = canvas;
|
|
800
|
+
$[26] = isContentEditable;
|
|
801
|
+
$[27] = t6;
|
|
802
|
+
} else t6 = $[27];
|
|
803
|
+
const t7 = fieldSchema?.size;
|
|
804
|
+
const t8 = useNavigate();
|
|
805
|
+
let t9;
|
|
806
|
+
if ($[28] !== data || $[29] !== t6 || $[30] !== t7 || $[31] !== t8) {
|
|
807
|
+
t9 = {
|
|
808
|
+
studio: t6,
|
|
809
|
+
data,
|
|
810
|
+
size: t7,
|
|
811
|
+
navigate: t8
|
|
812
|
+
};
|
|
813
|
+
$[28] = data;
|
|
814
|
+
$[29] = t6;
|
|
815
|
+
$[30] = t7;
|
|
816
|
+
$[31] = t8;
|
|
817
|
+
$[32] = t9;
|
|
818
|
+
} else t9 = $[32];
|
|
819
|
+
const hostProps = useArtifactHost(t9);
|
|
820
|
+
const initialData = useInitialArtifactData(value, data);
|
|
821
|
+
const fontLinks = useOptionalCamoxApp()?.getArtifactFontLinks();
|
|
822
|
+
const runs = React.use(ArtifactsRunContext);
|
|
823
|
+
const frame = children({
|
|
824
|
+
...!isArtifactSource(value) ? artifactPlaceholderProps() : runs ? artifactFrameProps(value, {
|
|
825
|
+
fontLinks,
|
|
826
|
+
data: initialData
|
|
827
|
+
}) : artifactStandInProps(value),
|
|
828
|
+
...hostProps
|
|
829
|
+
});
|
|
830
|
+
let t10;
|
|
831
|
+
if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
|
|
832
|
+
t10 = {
|
|
833
|
+
position: "relative",
|
|
834
|
+
height: "100%"
|
|
835
|
+
};
|
|
836
|
+
$[33] = t10;
|
|
837
|
+
} else t10 = $[33];
|
|
838
|
+
const t11 = isContentEditable ? selectField : void 0;
|
|
839
|
+
const t12 = isContentEditable ? fieldId : void 0;
|
|
840
|
+
const t13 = isContentEditable ? "artifact" : void 0;
|
|
841
|
+
let t14;
|
|
842
|
+
if ($[34] !== isContentEditable || $[35] !== overlayState) {
|
|
843
|
+
t14 = isContentEditable ? overlayState : {};
|
|
844
|
+
$[34] = isContentEditable;
|
|
845
|
+
$[35] = overlayState;
|
|
846
|
+
$[36] = t14;
|
|
847
|
+
} else t14 = $[36];
|
|
848
|
+
let t15;
|
|
849
|
+
if ($[37] === Symbol.for("react.memo_cache_sentinel")) {
|
|
850
|
+
t15 = assetOverlayMode(null);
|
|
851
|
+
$[37] = t15;
|
|
852
|
+
} else t15 = $[37];
|
|
853
|
+
let t16;
|
|
854
|
+
if ($[38] !== isContentEditable) {
|
|
855
|
+
t16 = isContentEditable ? () => setIsHovered(true) : void 0;
|
|
856
|
+
$[38] = isContentEditable;
|
|
857
|
+
$[39] = t16;
|
|
858
|
+
} else t16 = $[39];
|
|
859
|
+
let t17;
|
|
860
|
+
if ($[40] !== isContentEditable) {
|
|
861
|
+
t17 = isContentEditable ? () => setIsHovered(false) : void 0;
|
|
862
|
+
$[40] = isContentEditable;
|
|
863
|
+
$[41] = t17;
|
|
864
|
+
} else t17 = $[41];
|
|
865
|
+
let t18;
|
|
866
|
+
if ($[42] !== isContentEditable) {
|
|
867
|
+
t18 = isContentEditable && /* @__PURE__ */ jsx("div", {
|
|
868
|
+
"aria-hidden": true,
|
|
869
|
+
"data-camox-artifact-layer": "",
|
|
870
|
+
style: {
|
|
871
|
+
position: "absolute",
|
|
872
|
+
inset: 0,
|
|
873
|
+
cursor: "pointer"
|
|
874
|
+
}
|
|
875
|
+
});
|
|
876
|
+
$[42] = isContentEditable;
|
|
877
|
+
$[43] = t18;
|
|
878
|
+
} else t18 = $[43];
|
|
879
|
+
let t19;
|
|
880
|
+
if ($[44] !== frame || $[45] !== t11 || $[46] !== t12 || $[47] !== t13 || $[48] !== t14 || $[49] !== t16 || $[50] !== t17 || $[51] !== t18) {
|
|
881
|
+
t19 = /* @__PURE__ */ jsxs("div", {
|
|
882
|
+
style: t10,
|
|
883
|
+
onClickCapture: t11,
|
|
884
|
+
"data-camox-field-id": t12,
|
|
885
|
+
"data-camox-field-type": t13,
|
|
886
|
+
...t14,
|
|
887
|
+
"data-camox-overlay-mode": t15,
|
|
888
|
+
onMouseEnter: t16,
|
|
889
|
+
onMouseLeave: t17,
|
|
890
|
+
children: [frame, t18]
|
|
891
|
+
});
|
|
892
|
+
$[44] = frame;
|
|
893
|
+
$[45] = t11;
|
|
894
|
+
$[46] = t12;
|
|
895
|
+
$[47] = t13;
|
|
896
|
+
$[48] = t14;
|
|
897
|
+
$[49] = t16;
|
|
898
|
+
$[50] = t17;
|
|
899
|
+
$[51] = t18;
|
|
900
|
+
$[52] = t19;
|
|
901
|
+
} else t19 = $[52];
|
|
902
|
+
return t19;
|
|
903
|
+
};
|
|
558
904
|
const Link = (t0) => {
|
|
559
|
-
const $ = c(
|
|
560
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
561
|
-
for (let $i = 0; $i < 32; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
562
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
563
|
-
}
|
|
905
|
+
const $ = c(21);
|
|
564
906
|
const { name, children } = t0;
|
|
565
907
|
const selectTarget = usePreviewSelection();
|
|
566
|
-
const isCommentMode = useSelector(previewStore, selectIsCommentMode);
|
|
567
908
|
const blockContext = React.use(Context);
|
|
568
909
|
if (!blockContext) throw new Error("Link must be used within a Block Component");
|
|
569
910
|
const { blockId, content, mode } = blockContext;
|
|
570
911
|
const isContentEditable = useIsEditable(mode);
|
|
571
912
|
const elementRef = React.useRef(null);
|
|
572
913
|
const { window: iframeWindow } = useFrame();
|
|
573
|
-
const repeaterContext = React.use(
|
|
574
|
-
const
|
|
914
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
915
|
+
const rawFieldValue = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
916
|
+
const fieldValue = normalizeLinkValue(rawFieldValue);
|
|
575
917
|
let t1;
|
|
576
|
-
if ($[
|
|
918
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
577
919
|
t1 = blockMutations.updateContent();
|
|
578
|
-
$[
|
|
579
|
-
} else t1 = $[
|
|
920
|
+
$[0] = t1;
|
|
921
|
+
} else t1 = $[0];
|
|
580
922
|
const updateBlockContent = useMutation(t1);
|
|
581
923
|
let t2;
|
|
582
|
-
if ($[
|
|
924
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
583
925
|
t2 = repeatableItemMutations.updateContent();
|
|
584
|
-
$[
|
|
585
|
-
} else t2 = $[
|
|
926
|
+
$[1] = t2;
|
|
927
|
+
} else t2 = $[1];
|
|
586
928
|
const updateRepeatableContent = useMutation(t2);
|
|
587
|
-
const
|
|
929
|
+
const pages = useEditorLinkPages();
|
|
588
930
|
let t3;
|
|
589
|
-
if ($[
|
|
590
|
-
t3 =
|
|
591
|
-
$[
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
const
|
|
595
|
-
|
|
596
|
-
if ($[5] !== project?.id) {
|
|
597
|
-
t4 = pageQueries.list(project?.id ?? 0);
|
|
598
|
-
$[5] = project?.id;
|
|
599
|
-
$[6] = t4;
|
|
600
|
-
} else t4 = $[6];
|
|
601
|
-
const t5 = !!project;
|
|
602
|
-
let t6;
|
|
603
|
-
if ($[7] !== t4 || $[8] !== t5) {
|
|
604
|
-
t6 = {
|
|
605
|
-
...t4,
|
|
606
|
-
enabled: t5
|
|
607
|
-
};
|
|
608
|
-
$[7] = t4;
|
|
609
|
-
$[8] = t5;
|
|
610
|
-
$[9] = t6;
|
|
611
|
-
} else t6 = $[9];
|
|
612
|
-
const { data: pages } = useQuery(t6);
|
|
613
|
-
let t7;
|
|
614
|
-
if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
615
|
-
t7 = { select: _temp2 };
|
|
616
|
-
$[10] = t7;
|
|
617
|
-
} else t7 = $[10];
|
|
618
|
-
const resolvedHref = resolveLinkHref(fieldValue, pages, useLocation(t7));
|
|
619
|
-
const fieldId = getOverlayFieldId(blockId, repeaterContext, String(name));
|
|
931
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
932
|
+
t3 = { select: _temp3 };
|
|
933
|
+
$[2] = t3;
|
|
934
|
+
} else t3 = $[2];
|
|
935
|
+
const currentPathname = useLocation(t3);
|
|
936
|
+
const resolvedHref = resolveLinkHref(fieldValue, pages, currentPathname);
|
|
937
|
+
const fieldId = getOverlayFieldId(blockId, String(name), { itemId: repeaterContext?.itemId });
|
|
620
938
|
const [isEditing, setIsEditing] = React.useState(false);
|
|
621
939
|
const [displayText, setDisplayText] = React.useState(fieldValue.text);
|
|
622
940
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
623
941
|
const [isEditorFocused, setIsEditorFocused] = React.useState(false);
|
|
624
942
|
const isSelectedFromSelection = useFieldSelection(blockId, String(name), "Link", repeaterContext?.itemId);
|
|
625
943
|
const overlayState = useOverlayState(isHovered, isEditorFocused || isSelectedFromSelection);
|
|
626
|
-
React.
|
|
944
|
+
const [syncedText, setSyncedText] = React.useState({
|
|
945
|
+
text: fieldValue.text,
|
|
946
|
+
isEditing
|
|
947
|
+
});
|
|
948
|
+
if (syncedText.text !== fieldValue.text || syncedText.isEditing !== isEditing) {
|
|
949
|
+
setSyncedText({
|
|
950
|
+
text: fieldValue.text,
|
|
951
|
+
isEditing
|
|
952
|
+
});
|
|
627
953
|
if (!isEditing) setDisplayText(fieldValue.text);
|
|
628
|
-
}
|
|
954
|
+
}
|
|
629
955
|
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", { fieldId });
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
setIsHovered(isHoveredFromSidebar);
|
|
635
|
-
};
|
|
636
|
-
t9 = [isHoveredFromSidebar];
|
|
637
|
-
$[11] = isHoveredFromSidebar;
|
|
638
|
-
$[12] = t8;
|
|
639
|
-
$[13] = t9;
|
|
640
|
-
} else {
|
|
641
|
-
t8 = $[12];
|
|
642
|
-
t9 = $[13];
|
|
956
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
957
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
958
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
959
|
+
setIsHovered(isHoveredFromSidebar);
|
|
643
960
|
}
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
t10 = (newLinkValue) => {
|
|
961
|
+
let t4;
|
|
962
|
+
if ($[3] !== blockId || $[4] !== name || $[5] !== repeaterContext || $[6] !== updateBlockContent || $[7] !== updateRepeatableContent) {
|
|
963
|
+
t4 = (newLinkValue) => {
|
|
648
964
|
if (repeaterContext?.itemId != null) updateRepeatableContent.mutate({
|
|
649
965
|
id: repeaterContext.itemId,
|
|
650
966
|
content: { [name]: newLinkValue }
|
|
@@ -654,14 +970,14 @@ function createEditableBlock(options) {
|
|
|
654
970
|
content: { [name]: newLinkValue }
|
|
655
971
|
});
|
|
656
972
|
};
|
|
657
|
-
$[
|
|
658
|
-
$[
|
|
659
|
-
$[
|
|
660
|
-
$[
|
|
661
|
-
$[
|
|
662
|
-
$[
|
|
663
|
-
} else
|
|
664
|
-
const saveLinkValue =
|
|
973
|
+
$[3] = blockId;
|
|
974
|
+
$[4] = name;
|
|
975
|
+
$[5] = repeaterContext;
|
|
976
|
+
$[6] = updateBlockContent;
|
|
977
|
+
$[7] = updateRepeatableContent;
|
|
978
|
+
$[8] = t4;
|
|
979
|
+
} else t4 = $[8];
|
|
980
|
+
const saveLinkValue = t4;
|
|
665
981
|
const handleInput = (e) => {
|
|
666
982
|
const newText = e.target.textContent || "";
|
|
667
983
|
saveLinkValue({
|
|
@@ -669,9 +985,9 @@ function createEditableBlock(options) {
|
|
|
669
985
|
text: newText
|
|
670
986
|
});
|
|
671
987
|
};
|
|
672
|
-
let
|
|
673
|
-
if ($[
|
|
674
|
-
|
|
988
|
+
let t5;
|
|
989
|
+
if ($[9] !== blockId || $[10] !== name || $[11] !== repeaterContext || $[12] !== selectTarget) {
|
|
990
|
+
t5 = () => {
|
|
675
991
|
selectTarget(repeaterContext?.itemId != null ? {
|
|
676
992
|
type: "item-field",
|
|
677
993
|
blockId,
|
|
@@ -683,36 +999,35 @@ function createEditableBlock(options) {
|
|
|
683
999
|
blockId,
|
|
684
1000
|
fieldName: String(name),
|
|
685
1001
|
fieldType: "Link"
|
|
686
|
-
}
|
|
1002
|
+
});
|
|
687
1003
|
};
|
|
688
|
-
$[
|
|
689
|
-
$[
|
|
690
|
-
$[
|
|
691
|
-
$[
|
|
692
|
-
$[
|
|
693
|
-
} else
|
|
694
|
-
const selectField =
|
|
695
|
-
let
|
|
696
|
-
if ($[
|
|
697
|
-
|
|
698
|
-
if (selectIsCommentMode(previewStore.getSnapshot())) return;
|
|
1004
|
+
$[9] = blockId;
|
|
1005
|
+
$[10] = name;
|
|
1006
|
+
$[11] = repeaterContext;
|
|
1007
|
+
$[12] = selectTarget;
|
|
1008
|
+
$[13] = t5;
|
|
1009
|
+
} else t5 = $[13];
|
|
1010
|
+
const selectField = t5;
|
|
1011
|
+
let t6;
|
|
1012
|
+
if ($[14] !== selectField) {
|
|
1013
|
+
t6 = () => {
|
|
699
1014
|
setIsEditing(true);
|
|
700
1015
|
setIsEditorFocused(true);
|
|
701
1016
|
selectField();
|
|
702
1017
|
};
|
|
703
|
-
$[
|
|
704
|
-
$[
|
|
705
|
-
} else
|
|
706
|
-
const handleFocus =
|
|
707
|
-
let
|
|
708
|
-
if ($[
|
|
709
|
-
|
|
1018
|
+
$[14] = selectField;
|
|
1019
|
+
$[15] = t6;
|
|
1020
|
+
} else t6 = $[15];
|
|
1021
|
+
const handleFocus = t6;
|
|
1022
|
+
let t7;
|
|
1023
|
+
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
|
1024
|
+
t7 = () => {
|
|
710
1025
|
setIsEditing(false);
|
|
711
1026
|
setIsEditorFocused(false);
|
|
712
1027
|
};
|
|
713
|
-
$[
|
|
714
|
-
} else
|
|
715
|
-
const handleBlur =
|
|
1028
|
+
$[16] = t7;
|
|
1029
|
+
} else t7 = $[16];
|
|
1030
|
+
const handleBlur = t7;
|
|
716
1031
|
const linkData = {
|
|
717
1032
|
text: displayText,
|
|
718
1033
|
href: resolvedHref,
|
|
@@ -724,18 +1039,18 @@ function createEditableBlock(options) {
|
|
|
724
1039
|
rel: fieldValue.newTab ? "noreferrer" : void 0,
|
|
725
1040
|
children: fieldValue.text
|
|
726
1041
|
}, linkData) });
|
|
727
|
-
let
|
|
728
|
-
let
|
|
729
|
-
if ($[
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
$[
|
|
733
|
-
$[
|
|
1042
|
+
let t8;
|
|
1043
|
+
let t9;
|
|
1044
|
+
if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
|
|
1045
|
+
t8 = () => setIsHovered(true);
|
|
1046
|
+
t9 = () => setIsHovered(false);
|
|
1047
|
+
$[17] = t8;
|
|
1048
|
+
$[18] = t9;
|
|
734
1049
|
} else {
|
|
735
|
-
|
|
736
|
-
|
|
1050
|
+
t8 = $[17];
|
|
1051
|
+
t9 = $[18];
|
|
737
1052
|
}
|
|
738
|
-
const
|
|
1053
|
+
const t10 = children({
|
|
739
1054
|
ref: elementRef,
|
|
740
1055
|
to: resolvedHref,
|
|
741
1056
|
target: fieldValue.newTab ? "_blank" : void 0,
|
|
@@ -744,32 +1059,32 @@ function createEditableBlock(options) {
|
|
|
744
1059
|
"data-camox-field-id": fieldId,
|
|
745
1060
|
...overlayState,
|
|
746
1061
|
"data-camox-overlay-mode": options.synced ? "synced" : void 0,
|
|
747
|
-
contentEditable:
|
|
1062
|
+
contentEditable: true,
|
|
748
1063
|
onClickCapture: selectField,
|
|
749
|
-
onClick:
|
|
1064
|
+
onClick: _temp4,
|
|
750
1065
|
onInput: handleInput,
|
|
751
1066
|
onFocus: handleFocus,
|
|
752
1067
|
onBlur: handleBlur,
|
|
753
|
-
onMouseEnter:
|
|
754
|
-
onMouseLeave:
|
|
755
|
-
onKeyDown:
|
|
1068
|
+
onMouseEnter: t8,
|
|
1069
|
+
onMouseLeave: t9,
|
|
1070
|
+
onKeyDown: _temp5,
|
|
756
1071
|
spellCheck: false,
|
|
757
1072
|
suppressContentEditableWarning: true
|
|
758
1073
|
}, linkData);
|
|
759
|
-
let
|
|
760
|
-
if ($[
|
|
761
|
-
|
|
762
|
-
$[
|
|
763
|
-
$[
|
|
764
|
-
} else
|
|
765
|
-
return
|
|
1074
|
+
let t11;
|
|
1075
|
+
if ($[19] !== t10) {
|
|
1076
|
+
t11 = /* @__PURE__ */ jsx(Fragment, { children: t10 });
|
|
1077
|
+
$[19] = t10;
|
|
1078
|
+
$[20] = t11;
|
|
1079
|
+
} else t11 = $[20];
|
|
1080
|
+
return t11;
|
|
1081
|
+
};
|
|
1082
|
+
const assetOverlayMode = (reference) => {
|
|
1083
|
+
if (reference) return "reference";
|
|
1084
|
+
return options.synced ? "synced" : void 0;
|
|
766
1085
|
};
|
|
767
1086
|
const Image = (t0) => {
|
|
768
|
-
const $ = c(
|
|
769
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
770
|
-
for (let $i = 0; $i < 22; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
771
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
772
|
-
}
|
|
1087
|
+
const $ = c(30);
|
|
773
1088
|
const { name, children } = t0;
|
|
774
1089
|
const selectTarget = usePreviewSelection();
|
|
775
1090
|
const blockContext = React.use(Context);
|
|
@@ -777,44 +1092,53 @@ function createEditableBlock(options) {
|
|
|
777
1092
|
const { blockId, content, mode } = blockContext;
|
|
778
1093
|
const isContentEditable = useIsEditable(mode);
|
|
779
1094
|
const { window: iframeWindow } = useFrame();
|
|
780
|
-
const repeaterContext = React.use(
|
|
1095
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
781
1096
|
const { filesMap } = useNormalizedData();
|
|
782
1097
|
const rawSource = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
783
|
-
const rawValue =
|
|
1098
|
+
const rawValue = resolveAssetValue(rawSource, filesMap);
|
|
784
1099
|
const defaultValue = repeaterContext ? repeatableItemDefaults[repeaterContext.arrayFieldName]?.[String(name)] : contentDefaults[String(name)];
|
|
785
1100
|
const fieldValue = rawValue ?? defaultValue;
|
|
786
1101
|
const isInlineArrayItem = repeaterContext != null && repeaterContext.itemId == null;
|
|
787
1102
|
const overlayFieldName = isInlineArrayItem ? repeaterContext.arrayFieldName : String(name);
|
|
788
1103
|
const overlayItemId = isInlineArrayItem ? repeaterContext.containerItemId : repeaterContext?.itemId;
|
|
789
|
-
const
|
|
790
|
-
const [isHovered, setIsHovered] = React.useState(false);
|
|
791
|
-
const overlayState = useOverlayState(isHovered, useFieldSelection(blockId, overlayFieldName, "Image", overlayItemId));
|
|
1104
|
+
const reference = React.use(ReferenceContext);
|
|
792
1105
|
let t1;
|
|
793
|
-
if ($[1] !==
|
|
794
|
-
t1 =
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
1106
|
+
if ($[0] !== blockId || $[1] !== overlayFieldName || $[2] !== overlayItemId || $[3] !== reference) {
|
|
1107
|
+
t1 = getOverlayFieldId(blockId, overlayFieldName, {
|
|
1108
|
+
itemId: overlayItemId,
|
|
1109
|
+
reference
|
|
1110
|
+
});
|
|
1111
|
+
$[0] = blockId;
|
|
1112
|
+
$[1] = overlayFieldName;
|
|
1113
|
+
$[2] = overlayItemId;
|
|
1114
|
+
$[3] = reference;
|
|
1115
|
+
$[4] = t1;
|
|
1116
|
+
} else t1 = $[4];
|
|
1117
|
+
const fieldId = t1;
|
|
1118
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
1119
|
+
const isBlockFieldSelected = useFieldSelection(blockId, overlayFieldName, "Image", overlayItemId);
|
|
1120
|
+
const isRecordFieldSelected = useRecordSelection(reference?.placement ?? null, overlayFieldName);
|
|
1121
|
+
const overlayState = useOverlayState(isHovered, reference ? isRecordFieldSelected : isBlockFieldSelected);
|
|
799
1122
|
let t2;
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
t2 = $[4];
|
|
811
|
-
t3 = $[5];
|
|
1123
|
+
if ($[5] !== fieldId) {
|
|
1124
|
+
t2 = { fieldId };
|
|
1125
|
+
$[5] = fieldId;
|
|
1126
|
+
$[6] = t2;
|
|
1127
|
+
} else t2 = $[6];
|
|
1128
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t2);
|
|
1129
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
1130
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
1131
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
1132
|
+
setIsHovered(isHoveredFromSidebar);
|
|
812
1133
|
}
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
t4 = (event) => {
|
|
1134
|
+
let t3;
|
|
1135
|
+
if ($[7] !== blockId || $[8] !== isContentEditable || $[9] !== isInlineArrayItem || $[10] !== overlayFieldName || $[11] !== overlayItemId || $[12] !== reference || $[13] !== selectTarget) {
|
|
1136
|
+
t3 = () => {
|
|
817
1137
|
if (!isContentEditable) return;
|
|
1138
|
+
if (reference) {
|
|
1139
|
+
reference.selectRecordField(overlayFieldName, isInlineArrayItem ? "ImageList" : "Image");
|
|
1140
|
+
return;
|
|
1141
|
+
}
|
|
818
1142
|
selectTarget(overlayItemId != null ? {
|
|
819
1143
|
type: "item-field",
|
|
820
1144
|
blockId,
|
|
@@ -826,16 +1150,18 @@ function createEditableBlock(options) {
|
|
|
826
1150
|
blockId,
|
|
827
1151
|
fieldName: overlayFieldName,
|
|
828
1152
|
fieldType: "Image"
|
|
829
|
-
}
|
|
1153
|
+
});
|
|
830
1154
|
};
|
|
831
|
-
$[
|
|
832
|
-
$[
|
|
833
|
-
$[
|
|
834
|
-
$[
|
|
835
|
-
$[
|
|
836
|
-
$[
|
|
837
|
-
|
|
838
|
-
|
|
1155
|
+
$[7] = blockId;
|
|
1156
|
+
$[8] = isContentEditable;
|
|
1157
|
+
$[9] = isInlineArrayItem;
|
|
1158
|
+
$[10] = overlayFieldName;
|
|
1159
|
+
$[11] = overlayItemId;
|
|
1160
|
+
$[12] = reference;
|
|
1161
|
+
$[13] = selectTarget;
|
|
1162
|
+
$[14] = t3;
|
|
1163
|
+
} else t3 = $[14];
|
|
1164
|
+
const handleClick = t3;
|
|
839
1165
|
const imageProps = {
|
|
840
1166
|
src: transformImageUrl(fieldValue.url, {
|
|
841
1167
|
width: getDefaultImageWidth(),
|
|
@@ -846,91 +1172,121 @@ function createEditableBlock(options) {
|
|
|
846
1172
|
sizes: getDefaultImageSizes(),
|
|
847
1173
|
alt: fieldValue.alt
|
|
848
1174
|
};
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
1175
|
+
const renderedImage = renderImagePlaceholder(fieldValue, children(imageProps, fieldValue));
|
|
1176
|
+
if (!isContentEditable) {
|
|
1177
|
+
let t4;
|
|
1178
|
+
if ($[15] !== renderedImage) {
|
|
1179
|
+
t4 = /* @__PURE__ */ jsx(Fragment, { children: renderedImage });
|
|
1180
|
+
$[15] = renderedImage;
|
|
1181
|
+
$[16] = t4;
|
|
1182
|
+
} else t4 = $[16];
|
|
1183
|
+
return t4;
|
|
1184
|
+
}
|
|
1185
|
+
let t4;
|
|
1186
|
+
if ($[17] !== reference) {
|
|
1187
|
+
t4 = assetOverlayMode(reference);
|
|
1188
|
+
$[17] = reference;
|
|
1189
|
+
$[18] = t4;
|
|
1190
|
+
} else t4 = $[18];
|
|
1191
|
+
let t5;
|
|
1192
|
+
let t6;
|
|
1193
|
+
if ($[19] !== setIsHovered) {
|
|
1194
|
+
t5 = () => setIsHovered(true);
|
|
1195
|
+
t6 = () => setIsHovered(false);
|
|
1196
|
+
$[19] = setIsHovered;
|
|
1197
|
+
$[20] = t5;
|
|
1198
|
+
$[21] = t6;
|
|
859
1199
|
} else {
|
|
860
|
-
|
|
861
|
-
|
|
1200
|
+
t5 = $[20];
|
|
1201
|
+
t6 = $[21];
|
|
862
1202
|
}
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
t10 = /* @__PURE__ */ jsx("div", {
|
|
1203
|
+
let t7;
|
|
1204
|
+
if ($[22] !== fieldId || $[23] !== handleClick || $[24] !== overlayState || $[25] !== renderedImage || $[26] !== t4 || $[27] !== t5 || $[28] !== t6) {
|
|
1205
|
+
t7 = /* @__PURE__ */ jsx("div", {
|
|
867
1206
|
"data-camox-field-id": fieldId,
|
|
868
|
-
"data-camox-field-type":
|
|
1207
|
+
"data-camox-field-type": "image",
|
|
869
1208
|
...overlayState,
|
|
870
|
-
"data-camox-overlay-mode":
|
|
871
|
-
onMouseEnter:
|
|
872
|
-
onMouseLeave:
|
|
1209
|
+
"data-camox-overlay-mode": t4,
|
|
1210
|
+
onMouseEnter: t5,
|
|
1211
|
+
onMouseLeave: t6,
|
|
873
1212
|
onClickCapture: handleClick,
|
|
874
|
-
children:
|
|
1213
|
+
children: renderedImage
|
|
875
1214
|
});
|
|
876
|
-
$[
|
|
877
|
-
$[
|
|
878
|
-
$[
|
|
879
|
-
$[
|
|
880
|
-
$[
|
|
881
|
-
$[
|
|
882
|
-
$[
|
|
883
|
-
$[
|
|
884
|
-
} else
|
|
885
|
-
return
|
|
1215
|
+
$[22] = fieldId;
|
|
1216
|
+
$[23] = handleClick;
|
|
1217
|
+
$[24] = overlayState;
|
|
1218
|
+
$[25] = renderedImage;
|
|
1219
|
+
$[26] = t4;
|
|
1220
|
+
$[27] = t5;
|
|
1221
|
+
$[28] = t6;
|
|
1222
|
+
$[29] = t7;
|
|
1223
|
+
} else t7 = $[29];
|
|
1224
|
+
return t7;
|
|
886
1225
|
};
|
|
887
1226
|
const File = (t0) => {
|
|
888
|
-
const $ = c(
|
|
889
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
890
|
-
for (let $i = 0; $i < 9; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
891
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
892
|
-
}
|
|
1227
|
+
const $ = c(2);
|
|
893
1228
|
const { name, children } = t0;
|
|
894
1229
|
const blockContext = React.use(Context);
|
|
895
1230
|
if (!blockContext) throw new Error("File must be used within a Block Component");
|
|
896
|
-
const { content } = blockContext;
|
|
897
|
-
const
|
|
1231
|
+
const { blockId, content, mode } = blockContext;
|
|
1232
|
+
const isContentEditable = useIsEditable(mode);
|
|
1233
|
+
const { window: iframeWindow } = useFrame();
|
|
1234
|
+
const repeaterContext = React.use(RepeatableItemContext);
|
|
1235
|
+
const reference = React.use(ReferenceContext);
|
|
898
1236
|
const { filesMap } = useNormalizedData();
|
|
899
1237
|
const rawSource = repeaterContext ? repeaterContext.itemContent[name] : content[name];
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
}
|
|
1238
|
+
const rawValue = resolveAssetValue(rawSource, filesMap);
|
|
1239
|
+
const defaultValue = repeaterContext ? repeatableItemDefaults[repeaterContext.arrayFieldName]?.[String(name)] : contentDefaults[String(name)];
|
|
1240
|
+
const fieldValue = rawValue ?? defaultValue;
|
|
1241
|
+
const isInlineArrayItem = repeaterContext != null && repeaterContext.itemId == null;
|
|
1242
|
+
const overlayFieldName = isInlineArrayItem ? repeaterContext.arrayFieldName : String(name);
|
|
1243
|
+
const fieldId = getOverlayFieldId(blockId, overlayFieldName, { reference });
|
|
1244
|
+
const selectable = reference != null && isContentEditable;
|
|
1245
|
+
const [isHovered, setIsHovered] = React.useState(false);
|
|
1246
|
+
const isFocused = useRecordSelection(reference?.placement ?? null, overlayFieldName);
|
|
1247
|
+
const overlayState = useOverlayState(isHovered, isFocused);
|
|
1248
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, selectable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", { fieldId });
|
|
1249
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
1250
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
1251
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
1252
|
+
setIsHovered(isHoveredFromSidebar);
|
|
1253
|
+
}
|
|
1254
|
+
const linkProps = {
|
|
1255
|
+
href: fieldValue.url,
|
|
1256
|
+
download: fieldValue.filename
|
|
1257
|
+
};
|
|
1258
|
+
const editableLinkProps = selectable ? {
|
|
1259
|
+
"data-camox-field-id": fieldId,
|
|
1260
|
+
"data-camox-field-type": "file",
|
|
1261
|
+
...overlayState,
|
|
1262
|
+
"data-camox-overlay-mode": assetOverlayMode(reference),
|
|
1263
|
+
onMouseEnter: () => setIsHovered(true),
|
|
1264
|
+
onMouseLeave: () => setIsHovered(false),
|
|
1265
|
+
onClickCapture: () => reference.selectRecordField(overlayFieldName, isInlineArrayItem ? "FileList" : "File"),
|
|
1266
|
+
onClick: _temp6
|
|
1267
|
+
} : null;
|
|
1268
|
+
const t1 = children({
|
|
1269
|
+
...linkProps,
|
|
1270
|
+
...editableLinkProps
|
|
1271
|
+
}, fieldValue);
|
|
916
1272
|
let t2;
|
|
917
|
-
if ($[
|
|
1273
|
+
if ($[0] !== t1) {
|
|
918
1274
|
t2 = /* @__PURE__ */ jsx(Fragment, { children: t1 });
|
|
919
|
-
$[
|
|
920
|
-
$[
|
|
921
|
-
} else t2 = $[
|
|
1275
|
+
$[0] = t1;
|
|
1276
|
+
$[1] = t2;
|
|
1277
|
+
} else t2 = $[1];
|
|
922
1278
|
return t2;
|
|
923
1279
|
};
|
|
924
1280
|
const ASSET_LIST_SELF_KEY = "__camox_asset_self__";
|
|
925
1281
|
const _AssetList = ({ name, children }) => {
|
|
926
1282
|
const blockContext = React.use(Context);
|
|
927
1283
|
if (!blockContext) throw new Error("ImageList/FileList must be used within a Block Component");
|
|
928
|
-
const parentRepeaterContext = React.use(
|
|
1284
|
+
const parentRepeaterContext = React.use(RepeatableItemContext);
|
|
929
1285
|
const { filesMap } = useNormalizedData();
|
|
930
1286
|
const fieldName = String(name);
|
|
931
|
-
const fieldSchema = parentRepeaterContext ? typeboxSchema.properties[parentRepeaterContext.arrayFieldName]?.items?.properties?.[fieldName] : typeboxSchema.properties[fieldName];
|
|
1287
|
+
const fieldSchema = parentRepeaterContext ? typeboxSchema.properties[parentRepeaterContext.arrayFieldName]?.items?.properties?.[fieldName] : (blockContext.sourceSchema ?? typeboxSchema.properties)[fieldName];
|
|
932
1288
|
const ft = fieldSchema?.fieldType;
|
|
933
|
-
if (ft !== "ImageList" && ft !== "FileList") throw new Error(`"${fieldName}" is not
|
|
1289
|
+
if (ft !== "ImageList" && ft !== "FileList") throw new Error(`"${fieldName}" is not an imageList or fileList field`);
|
|
934
1290
|
const source = parentRepeaterContext ? parentRepeaterContext.itemContent[fieldName] : blockContext.content[fieldName];
|
|
935
1291
|
let arr = Array.isArray(source) ? source : [];
|
|
936
1292
|
if (arr.length === 0) {
|
|
@@ -938,12 +1294,12 @@ function createEditableBlock(options) {
|
|
|
938
1294
|
const itemDefault = fieldSchema.items?.default;
|
|
939
1295
|
if (defaultCount > 0 && itemDefault) arr = Array.from({ length: defaultCount }, () => itemDefault);
|
|
940
1296
|
}
|
|
941
|
-
const resolved = arr.map((v) =>
|
|
1297
|
+
const resolved = arr.map((v) => resolveAssetValue(v, filesMap)).filter((v) => v != null && typeof v === "object" && "url" in v);
|
|
942
1298
|
const Single = ft === "ImageList" ? Image : File;
|
|
943
1299
|
return /* @__PURE__ */ jsx(RepeaterHoverProvider, {
|
|
944
1300
|
blockId: blockContext.blockId,
|
|
945
1301
|
fieldName,
|
|
946
|
-
children: resolved.map((value, index) => /* @__PURE__ */ jsx(
|
|
1302
|
+
children: resolved.map((value, index) => /* @__PURE__ */ jsx(RepeatableItemContext.Provider, {
|
|
947
1303
|
value: {
|
|
948
1304
|
arrayFieldName: fieldName,
|
|
949
1305
|
itemIndex: index,
|
|
@@ -961,139 +1317,172 @@ function createEditableBlock(options) {
|
|
|
961
1317
|
};
|
|
962
1318
|
const ImageList = _AssetList;
|
|
963
1319
|
const FileList = _AssetList;
|
|
964
|
-
const
|
|
965
|
-
const $ = c(
|
|
966
|
-
|
|
967
|
-
for (let $i = 0; $i < 20; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
968
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
969
|
-
}
|
|
970
|
-
const { itemId, blockId, mode, children } = t0;
|
|
1320
|
+
const RepeatableItemWrapper = (t0) => {
|
|
1321
|
+
const $ = c(21);
|
|
1322
|
+
const { itemId, blockId, nesting, mode, children } = t0;
|
|
971
1323
|
const isContentEditable = useIsEditable(mode);
|
|
972
1324
|
const { window: iframeWindow } = useFrame();
|
|
973
|
-
const
|
|
974
|
-
const
|
|
1325
|
+
const fragmentRef = React.useRef(null);
|
|
1326
|
+
const registrationRef = React.useRef(null);
|
|
975
1327
|
const [isLocallyHovered, setIsLocallyHovered] = React.useState(false);
|
|
976
|
-
const
|
|
1328
|
+
const hoveredRepeaterGroup = React.useContext(RepeaterHoverContext);
|
|
1329
|
+
const selection = usePreviewTargetSelection();
|
|
1330
|
+
const isSelected = selection?.type === "item" && selection.blockId === blockId && selection.itemId === itemId;
|
|
977
1331
|
const t1 = String(blockId);
|
|
978
1332
|
const t2 = String(itemId);
|
|
979
1333
|
let t3;
|
|
980
|
-
if ($[
|
|
1334
|
+
if ($[0] !== t1 || $[1] !== t2) {
|
|
981
1335
|
t3 = {
|
|
982
1336
|
blockId: t1,
|
|
983
1337
|
itemId: t2
|
|
984
1338
|
};
|
|
985
|
-
$[
|
|
986
|
-
$[
|
|
987
|
-
$[
|
|
988
|
-
} else t3 = $[
|
|
989
|
-
const
|
|
990
|
-
let
|
|
991
|
-
if ($[
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
selectTarget({
|
|
998
|
-
type: "item",
|
|
999
|
-
blockId,
|
|
1000
|
-
itemId
|
|
1001
|
-
}, event);
|
|
1339
|
+
$[0] = t1;
|
|
1340
|
+
$[1] = t2;
|
|
1341
|
+
$[2] = t3;
|
|
1342
|
+
} else t3 = $[2];
|
|
1343
|
+
const t4 = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_REPEATABLE_ITEM", "CAMOX_HOVER_REPEATABLE_ITEM_END", t3) || hoveredRepeaterGroup !== null || isLocallyHovered;
|
|
1344
|
+
let t5;
|
|
1345
|
+
if ($[3] !== hoveredRepeaterGroup || $[4] !== isSelected || $[5] !== t4) {
|
|
1346
|
+
t5 = {
|
|
1347
|
+
hovered: t4,
|
|
1348
|
+
focused: isSelected,
|
|
1349
|
+
hoverGroup: hoveredRepeaterGroup,
|
|
1350
|
+
synced: !!options.synced
|
|
1002
1351
|
};
|
|
1003
|
-
$[
|
|
1004
|
-
$[
|
|
1005
|
-
$[
|
|
1006
|
-
$[
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
const handleClick = t4;
|
|
1011
|
-
const t5 = isContentEditable ? itemId : void 0;
|
|
1352
|
+
$[3] = hoveredRepeaterGroup;
|
|
1353
|
+
$[4] = isSelected;
|
|
1354
|
+
$[5] = t4;
|
|
1355
|
+
$[6] = t5;
|
|
1356
|
+
} else t5 = $[6];
|
|
1357
|
+
const overlayState = t5;
|
|
1358
|
+
const document = iframeWindow?.document;
|
|
1012
1359
|
let t6;
|
|
1013
1360
|
let t7;
|
|
1014
|
-
if ($[10]
|
|
1015
|
-
t6 = () =>
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1361
|
+
if ($[7] !== blockId || $[8] !== document || $[9] !== isContentEditable || $[10] !== itemId || $[11] !== nesting) {
|
|
1362
|
+
t6 = () => {
|
|
1363
|
+
const fragment = fragmentRef.current;
|
|
1364
|
+
if (!isContentEditable || itemId == null || !document || !fragment) return;
|
|
1365
|
+
const registration = registerRepeatableItem(document, {
|
|
1366
|
+
hovered: false,
|
|
1367
|
+
focused: false,
|
|
1368
|
+
hoverGroup: null,
|
|
1369
|
+
synced: false,
|
|
1370
|
+
fragment,
|
|
1371
|
+
blockId,
|
|
1372
|
+
itemId,
|
|
1373
|
+
nesting
|
|
1374
|
+
});
|
|
1375
|
+
registrationRef.current = registration;
|
|
1376
|
+
return () => {
|
|
1377
|
+
registrationRef.current = null;
|
|
1378
|
+
registration.unregister();
|
|
1379
|
+
};
|
|
1380
|
+
};
|
|
1381
|
+
t7 = [
|
|
1382
|
+
isContentEditable,
|
|
1383
|
+
document,
|
|
1384
|
+
blockId,
|
|
1385
|
+
itemId,
|
|
1386
|
+
nesting
|
|
1387
|
+
];
|
|
1388
|
+
$[7] = blockId;
|
|
1389
|
+
$[8] = document;
|
|
1390
|
+
$[9] = isContentEditable;
|
|
1391
|
+
$[10] = itemId;
|
|
1392
|
+
$[11] = nesting;
|
|
1393
|
+
$[12] = t6;
|
|
1394
|
+
$[13] = t7;
|
|
1019
1395
|
} else {
|
|
1020
|
-
t6 = $[
|
|
1021
|
-
t7 = $[
|
|
1396
|
+
t6 = $[12];
|
|
1397
|
+
t7 = $[13];
|
|
1022
1398
|
}
|
|
1399
|
+
React.useLayoutEffect(t6, t7);
|
|
1023
1400
|
let t8;
|
|
1024
|
-
if ($[
|
|
1025
|
-
t8 =
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
$[14] =
|
|
1029
|
-
|
|
1401
|
+
if ($[14] !== overlayState) {
|
|
1402
|
+
t8 = () => {
|
|
1403
|
+
registrationRef.current?.update(overlayState);
|
|
1404
|
+
};
|
|
1405
|
+
$[14] = overlayState;
|
|
1406
|
+
$[15] = t8;
|
|
1407
|
+
} else t8 = $[15];
|
|
1408
|
+
React.useLayoutEffect(t8);
|
|
1409
|
+
let t10;
|
|
1030
1410
|
let t9;
|
|
1031
|
-
if ($[
|
|
1032
|
-
t9 =
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1411
|
+
if ($[16] !== isContentEditable) {
|
|
1412
|
+
t9 = () => {
|
|
1413
|
+
const fragment_0 = fragmentRef.current;
|
|
1414
|
+
if (!isContentEditable || !fragment_0) return;
|
|
1415
|
+
const enter = () => setIsLocallyHovered(true);
|
|
1416
|
+
const leave = () => setIsLocallyHovered(false);
|
|
1417
|
+
fragment_0.addEventListener("mouseenter", enter);
|
|
1418
|
+
fragment_0.addEventListener("mouseleave", leave);
|
|
1419
|
+
return () => {
|
|
1420
|
+
fragment_0.removeEventListener("mouseenter", enter);
|
|
1421
|
+
fragment_0.removeEventListener("mouseleave", leave);
|
|
1422
|
+
};
|
|
1423
|
+
};
|
|
1424
|
+
t10 = [isContentEditable];
|
|
1425
|
+
$[16] = isContentEditable;
|
|
1426
|
+
$[17] = t10;
|
|
1427
|
+
$[18] = t9;
|
|
1428
|
+
} else {
|
|
1429
|
+
t10 = $[17];
|
|
1430
|
+
t9 = $[18];
|
|
1431
|
+
}
|
|
1432
|
+
React.useEffect(t9, t10);
|
|
1433
|
+
let t11;
|
|
1434
|
+
if ($[19] !== children) {
|
|
1435
|
+
t11 = /* @__PURE__ */ jsx(React.Fragment, {
|
|
1436
|
+
ref: fragmentRef,
|
|
1039
1437
|
children
|
|
1040
1438
|
});
|
|
1041
|
-
$[
|
|
1042
|
-
$[
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
$[19] = t9;
|
|
1046
|
-
} else t9 = $[19];
|
|
1047
|
-
return t9;
|
|
1439
|
+
$[19] = children;
|
|
1440
|
+
$[20] = t11;
|
|
1441
|
+
} else t11 = $[20];
|
|
1442
|
+
return t11;
|
|
1048
1443
|
};
|
|
1049
1444
|
const RepeaterHoverProvider = (t0) => {
|
|
1050
|
-
const $ = c(
|
|
1051
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
1052
|
-
for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1053
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
1054
|
-
}
|
|
1445
|
+
const $ = c(6);
|
|
1055
1446
|
const { blockId, fieldName, children } = t0;
|
|
1056
1447
|
const isContentEditable = useIsEditable("site");
|
|
1057
1448
|
const { window: iframeWindow } = useFrame();
|
|
1449
|
+
const hoverGroup = React.useId();
|
|
1058
1450
|
const t1 = String(blockId);
|
|
1059
1451
|
let t2;
|
|
1060
|
-
if ($[
|
|
1452
|
+
if ($[0] !== fieldName || $[1] !== t1) {
|
|
1061
1453
|
t2 = {
|
|
1062
1454
|
blockId: t1,
|
|
1063
1455
|
fieldName
|
|
1064
1456
|
};
|
|
1065
|
-
$[
|
|
1066
|
-
$[
|
|
1067
|
-
$[
|
|
1068
|
-
} else t2 = $[
|
|
1069
|
-
const
|
|
1070
|
-
let
|
|
1071
|
-
if ($[
|
|
1072
|
-
|
|
1073
|
-
value:
|
|
1457
|
+
$[0] = fieldName;
|
|
1458
|
+
$[1] = t1;
|
|
1459
|
+
$[2] = t2;
|
|
1460
|
+
} else t2 = $[2];
|
|
1461
|
+
const t3 = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_REPEATER", "CAMOX_HOVER_REPEATER_END", t2) ? hoverGroup : null;
|
|
1462
|
+
let t4;
|
|
1463
|
+
if ($[3] !== children || $[4] !== t3) {
|
|
1464
|
+
t4 = /* @__PURE__ */ jsx(RepeaterHoverContext.Provider, {
|
|
1465
|
+
value: t3,
|
|
1074
1466
|
children
|
|
1075
1467
|
});
|
|
1076
|
-
$[
|
|
1077
|
-
$[
|
|
1078
|
-
$[
|
|
1079
|
-
} else
|
|
1080
|
-
return
|
|
1468
|
+
$[3] = children;
|
|
1469
|
+
$[4] = t3;
|
|
1470
|
+
$[5] = t4;
|
|
1471
|
+
} else t4 = $[5];
|
|
1472
|
+
return t4;
|
|
1081
1473
|
};
|
|
1082
1474
|
const Repeater = (t0) => {
|
|
1083
|
-
const $ = c(
|
|
1084
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
1085
|
-
for (let $i = 0; $i < 27; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1086
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
1087
|
-
}
|
|
1475
|
+
const $ = c(29);
|
|
1088
1476
|
const { name, children } = t0;
|
|
1089
1477
|
const blockContext = React.use(Context);
|
|
1090
1478
|
if (!blockContext) throw new Error("Repeater must be used within a Block Component");
|
|
1091
1479
|
const { blockId, content, mode } = blockContext;
|
|
1092
|
-
const parentRepeaterContext = React.use(
|
|
1480
|
+
const parentRepeaterContext = React.use(RepeatableItemContext);
|
|
1093
1481
|
const fieldName = String(name);
|
|
1094
1482
|
const ItemField = Field;
|
|
1095
1483
|
const ItemLink = Link;
|
|
1096
1484
|
const ItemEmbed = Embed;
|
|
1485
|
+
const ItemArtifact = Artifact;
|
|
1097
1486
|
const ItemImage = Image;
|
|
1098
1487
|
const ItemImageList = _AssetList;
|
|
1099
1488
|
const ItemFileList = _AssetList;
|
|
@@ -1101,30 +1490,38 @@ function createEditableBlock(options) {
|
|
|
1101
1490
|
const ItemRepeater = Repeater;
|
|
1102
1491
|
const source = parentRepeaterContext ? parentRepeaterContext.itemContent[name] : content[name];
|
|
1103
1492
|
const { itemsMap } = useNormalizedData();
|
|
1104
|
-
let T0;
|
|
1105
1493
|
let t1;
|
|
1494
|
+
if ($[0] !== source) {
|
|
1495
|
+
t1 = source ?? [];
|
|
1496
|
+
$[0] = source;
|
|
1497
|
+
$[1] = t1;
|
|
1498
|
+
} else t1 = $[1];
|
|
1499
|
+
const storedValue = t1;
|
|
1500
|
+
if (!Array.isArray(storedValue)) throw new Error(`Field "${String(name)}" is not an array`);
|
|
1501
|
+
let T0;
|
|
1106
1502
|
let t2;
|
|
1107
1503
|
let t3;
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
let t4;
|
|
1504
|
+
let t4;
|
|
1505
|
+
if ($[2] !== blockId || $[3] !== children || $[4] !== fieldName || $[5] !== itemsMap || $[6] !== mode || $[7] !== parentRepeaterContext || $[8] !== storedValue) {
|
|
1506
|
+
let t5;
|
|
1112
1507
|
if ($[13] !== itemsMap) {
|
|
1113
|
-
|
|
1508
|
+
t5 = (item) => {
|
|
1114
1509
|
if (isItemMarker(item)) return itemsMap.get(item._itemId) ?? null;
|
|
1115
1510
|
return item;
|
|
1116
1511
|
};
|
|
1117
1512
|
$[13] = itemsMap;
|
|
1118
|
-
$[14] =
|
|
1119
|
-
} else
|
|
1120
|
-
arrayValue =
|
|
1513
|
+
$[14] = t5;
|
|
1514
|
+
} else t5 = $[14];
|
|
1515
|
+
const arrayValue = storedValue.map(t5).filter(Boolean);
|
|
1121
1516
|
const settingsDefaultsForField = repeatableItemSettingsDefaults[fieldName];
|
|
1517
|
+
const itemSchema = (parentRepeaterContext ? parentRepeaterContext.itemSchema?.[fieldName] : typeboxSchema.properties[fieldName])?.items?.properties;
|
|
1518
|
+
const nesting = parentRepeaterContext ? (parentRepeaterContext.nesting ?? 0) + 1 : 0;
|
|
1122
1519
|
T0 = RepeaterHoverProvider;
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
let
|
|
1126
|
-
if ($[15] !== blockId || $[16] !== children || $[17] !== fieldName || $[18] !==
|
|
1127
|
-
|
|
1520
|
+
t2 = blockId;
|
|
1521
|
+
t3 = fieldName;
|
|
1522
|
+
let t6;
|
|
1523
|
+
if ($[15] !== blockId || $[16] !== children || $[17] !== fieldName || $[18] !== itemSchema || $[19] !== mode || $[20] !== nesting || $[21] !== parentRepeaterContext?.containerItemId || $[22] !== settingsDefaultsForField) {
|
|
1524
|
+
t6 = (item_0, index) => {
|
|
1128
1525
|
const isDbItem = item_0.content !== void 0 && item_0.id != null;
|
|
1129
1526
|
const itemContent = {
|
|
1130
1527
|
...repeatableItemDefaults[fieldName],
|
|
@@ -1139,26 +1536,33 @@ function createEditableBlock(options) {
|
|
|
1139
1536
|
const itemApi = {
|
|
1140
1537
|
Field: ItemField,
|
|
1141
1538
|
Link: ItemLink,
|
|
1539
|
+
Icon,
|
|
1142
1540
|
Embed: ItemEmbed,
|
|
1541
|
+
Artifact: ItemArtifact,
|
|
1143
1542
|
Image: ItemImage,
|
|
1144
1543
|
File: ItemFile,
|
|
1145
1544
|
ImageList: ItemImageList,
|
|
1146
1545
|
FileList: ItemFileList,
|
|
1147
1546
|
Repeater: ItemRepeater,
|
|
1547
|
+
Reference,
|
|
1548
|
+
ReferenceList,
|
|
1148
1549
|
useSetting: useItemSetting
|
|
1149
1550
|
};
|
|
1150
|
-
return /* @__PURE__ */ jsx(
|
|
1551
|
+
return /* @__PURE__ */ jsx(RepeatableItemContext.Provider, {
|
|
1151
1552
|
value: {
|
|
1152
1553
|
arrayFieldName: fieldName,
|
|
1153
1554
|
itemIndex: index,
|
|
1154
1555
|
itemContent,
|
|
1155
1556
|
itemSettings,
|
|
1156
1557
|
itemId,
|
|
1157
|
-
containerItemId: itemId ?? parentRepeaterContext?.containerItemId
|
|
1558
|
+
containerItemId: itemId ?? parentRepeaterContext?.containerItemId,
|
|
1559
|
+
itemSchema,
|
|
1560
|
+
nesting
|
|
1158
1561
|
},
|
|
1159
|
-
children: /* @__PURE__ */ jsx(
|
|
1562
|
+
children: /* @__PURE__ */ jsx(RepeatableItemWrapper, {
|
|
1160
1563
|
itemId,
|
|
1161
1564
|
blockId,
|
|
1565
|
+
nesting,
|
|
1162
1566
|
mode,
|
|
1163
1567
|
children: children(itemApi, index)
|
|
1164
1568
|
})
|
|
@@ -1167,506 +1571,1289 @@ function createEditableBlock(options) {
|
|
|
1167
1571
|
$[15] = blockId;
|
|
1168
1572
|
$[16] = children;
|
|
1169
1573
|
$[17] = fieldName;
|
|
1170
|
-
$[18] =
|
|
1171
|
-
$[19] =
|
|
1172
|
-
$[20] =
|
|
1173
|
-
$[21] =
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
$[
|
|
1177
|
-
|
|
1178
|
-
$[
|
|
1179
|
-
$[
|
|
1180
|
-
$[
|
|
1181
|
-
$[
|
|
1182
|
-
$[
|
|
1183
|
-
$[
|
|
1574
|
+
$[18] = itemSchema;
|
|
1575
|
+
$[19] = mode;
|
|
1576
|
+
$[20] = nesting;
|
|
1577
|
+
$[21] = parentRepeaterContext?.containerItemId;
|
|
1578
|
+
$[22] = settingsDefaultsForField;
|
|
1579
|
+
$[23] = t6;
|
|
1580
|
+
} else t6 = $[23];
|
|
1581
|
+
t4 = arrayValue.map(t6);
|
|
1582
|
+
$[2] = blockId;
|
|
1583
|
+
$[3] = children;
|
|
1584
|
+
$[4] = fieldName;
|
|
1585
|
+
$[5] = itemsMap;
|
|
1586
|
+
$[6] = mode;
|
|
1587
|
+
$[7] = parentRepeaterContext;
|
|
1588
|
+
$[8] = storedValue;
|
|
1184
1589
|
$[9] = T0;
|
|
1185
|
-
$[10] =
|
|
1186
|
-
$[11] =
|
|
1187
|
-
$[12] =
|
|
1590
|
+
$[10] = t2;
|
|
1591
|
+
$[11] = t3;
|
|
1592
|
+
$[12] = t4;
|
|
1188
1593
|
} else {
|
|
1189
1594
|
T0 = $[9];
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1595
|
+
t2 = $[10];
|
|
1596
|
+
t3 = $[11];
|
|
1597
|
+
t4 = $[12];
|
|
1193
1598
|
}
|
|
1194
|
-
let
|
|
1195
|
-
if ($[
|
|
1196
|
-
|
|
1197
|
-
blockId:
|
|
1198
|
-
fieldName:
|
|
1199
|
-
children:
|
|
1599
|
+
let t5;
|
|
1600
|
+
if ($[24] !== T0 || $[25] !== t2 || $[26] !== t3 || $[27] !== t4) {
|
|
1601
|
+
t5 = /* @__PURE__ */ jsx(T0, {
|
|
1602
|
+
blockId: t2,
|
|
1603
|
+
fieldName: t3,
|
|
1604
|
+
children: t4
|
|
1200
1605
|
});
|
|
1201
|
-
$[
|
|
1202
|
-
$[
|
|
1203
|
-
$[
|
|
1204
|
-
$[
|
|
1205
|
-
$[
|
|
1206
|
-
} else
|
|
1207
|
-
return
|
|
1606
|
+
$[24] = T0;
|
|
1607
|
+
$[25] = t2;
|
|
1608
|
+
$[26] = t3;
|
|
1609
|
+
$[27] = t4;
|
|
1610
|
+
$[28] = t5;
|
|
1611
|
+
} else t5 = $[28];
|
|
1612
|
+
return t5;
|
|
1208
1613
|
};
|
|
1209
1614
|
const BlockComponent = (t0) => {
|
|
1210
|
-
const $ = c(
|
|
1211
|
-
if ($[0] !== "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883") {
|
|
1212
|
-
for (let $i = 0; $i < 74; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
|
|
1213
|
-
$[0] = "9390cfa3e0bf4e772e82a3d1352a7d56d8ae67f112d215b6d45231db17c01883";
|
|
1214
|
-
}
|
|
1615
|
+
const $ = c(62);
|
|
1215
1616
|
const { blockData, mode, isFirstBlock, showAddBlockTop, showAddBlockBottom, addBlockAfterPosition } = t0;
|
|
1216
1617
|
const isContentEditable = useIsEditable(mode);
|
|
1217
1618
|
const { window: iframeWindow } = useFrame();
|
|
1218
1619
|
const [isHovered, setIsHovered] = React.useState(false);
|
|
1219
|
-
const
|
|
1220
|
-
const selection = useSelector(previewStore, _temp5);
|
|
1221
|
-
const isAddBlockSidebarOpen = useSelector(previewStore, _temp6);
|
|
1620
|
+
const selection = usePreviewTargetSelection();
|
|
1222
1621
|
const selectTarget = usePreviewSelection();
|
|
1223
|
-
const isBlockSelected = selection?.blockId === blockData._id;
|
|
1224
|
-
const overlayState = useOverlayState(isHovered && !isBlockSelected, isBlockSelected);
|
|
1225
|
-
const ref = React.useRef(null);
|
|
1226
|
-
const [isFirstRender, setIsFirstRender] = React.useState(true);
|
|
1227
1622
|
let t1;
|
|
1623
|
+
if ($[0] !== selection) {
|
|
1624
|
+
t1 = selectionBlockId(selection);
|
|
1625
|
+
$[0] = selection;
|
|
1626
|
+
$[1] = t1;
|
|
1627
|
+
} else t1 = $[1];
|
|
1628
|
+
const isBlockSelected = t1 === blockData._id;
|
|
1629
|
+
const overlayState = useOverlayState(isHovered, isBlockSelected);
|
|
1630
|
+
const ref = React.useRef(null);
|
|
1631
|
+
const canvasWorkspace = React.use(CanvasWorkspaceContext);
|
|
1632
|
+
const mounted = React.useRef(false);
|
|
1228
1633
|
let t2;
|
|
1229
|
-
if ($[
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1634
|
+
if ($[2] !== canvasWorkspace || $[3] !== isBlockSelected) {
|
|
1635
|
+
t2 = () => {
|
|
1636
|
+
const element = ref.current;
|
|
1637
|
+
const immediate = !mounted.current;
|
|
1638
|
+
mounted.current = true;
|
|
1639
|
+
if (!isBlockSelected || !element) return;
|
|
1640
|
+
if (canvasWorkspace) {
|
|
1641
|
+
canvasWorkspace.reveal(element, immediate);
|
|
1642
|
+
return;
|
|
1643
|
+
}
|
|
1644
|
+
const view = element.ownerDocument.defaultView;
|
|
1645
|
+
if (!view) return;
|
|
1646
|
+
const rect = element.getBoundingClientRect();
|
|
1647
|
+
const top = revealScrollDelta(rect, {
|
|
1648
|
+
top: 0,
|
|
1649
|
+
bottom: view.innerHeight
|
|
1650
|
+
});
|
|
1651
|
+
if (top) view.scrollBy({
|
|
1652
|
+
top,
|
|
1653
|
+
behavior: immediate ? "instant" : "smooth"
|
|
1249
1654
|
});
|
|
1250
1655
|
};
|
|
1251
|
-
$[
|
|
1252
|
-
$[
|
|
1253
|
-
$[
|
|
1254
|
-
} else
|
|
1255
|
-
let
|
|
1256
|
-
if ($[
|
|
1257
|
-
|
|
1656
|
+
$[2] = canvasWorkspace;
|
|
1657
|
+
$[3] = isBlockSelected;
|
|
1658
|
+
$[4] = t2;
|
|
1659
|
+
} else t2 = $[4];
|
|
1660
|
+
let t3;
|
|
1661
|
+
if ($[5] !== blockData._id || $[6] !== canvasWorkspace || $[7] !== isBlockSelected) {
|
|
1662
|
+
t3 = [
|
|
1258
1663
|
blockData._id,
|
|
1259
1664
|
isBlockSelected,
|
|
1260
|
-
|
|
1665
|
+
canvasWorkspace
|
|
1261
1666
|
];
|
|
1262
|
-
$[
|
|
1263
|
-
$[
|
|
1264
|
-
$[
|
|
1265
|
-
$[
|
|
1266
|
-
} else
|
|
1267
|
-
React.useEffect(
|
|
1268
|
-
const
|
|
1269
|
-
let
|
|
1270
|
-
if ($[
|
|
1271
|
-
|
|
1272
|
-
$[
|
|
1273
|
-
$[
|
|
1274
|
-
} else
|
|
1275
|
-
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_BLOCK", "CAMOX_HOVER_BLOCK_END",
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
setIsHovered(isHoveredFromSidebar);
|
|
1281
|
-
};
|
|
1282
|
-
t8 = [isHoveredFromSidebar];
|
|
1283
|
-
$[13] = isHoveredFromSidebar;
|
|
1284
|
-
$[14] = t7;
|
|
1285
|
-
$[15] = t8;
|
|
1286
|
-
} else {
|
|
1287
|
-
t7 = $[14];
|
|
1288
|
-
t8 = $[15];
|
|
1667
|
+
$[5] = blockData._id;
|
|
1668
|
+
$[6] = canvasWorkspace;
|
|
1669
|
+
$[7] = isBlockSelected;
|
|
1670
|
+
$[8] = t3;
|
|
1671
|
+
} else t3 = $[8];
|
|
1672
|
+
React.useEffect(t2, t3);
|
|
1673
|
+
const t4 = String(blockData._id);
|
|
1674
|
+
let t5;
|
|
1675
|
+
if ($[9] !== t4) {
|
|
1676
|
+
t5 = { blockId: t4 };
|
|
1677
|
+
$[9] = t4;
|
|
1678
|
+
$[10] = t5;
|
|
1679
|
+
} else t5 = $[10];
|
|
1680
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_BLOCK", "CAMOX_HOVER_BLOCK_END", t5);
|
|
1681
|
+
const [prevSidebarHover, setPrevSidebarHover] = React.useState(isHoveredFromSidebar);
|
|
1682
|
+
if (prevSidebarHover !== isHoveredFromSidebar) {
|
|
1683
|
+
setPrevSidebarHover(isHoveredFromSidebar);
|
|
1684
|
+
setIsHovered(isHoveredFromSidebar);
|
|
1289
1685
|
}
|
|
1290
|
-
React.useEffect(t7, t8);
|
|
1291
1686
|
let result;
|
|
1292
|
-
if ($[
|
|
1687
|
+
if ($[11] !== blockData.content) {
|
|
1293
1688
|
result = { ...blockData.content };
|
|
1294
1689
|
for (const key in result) {
|
|
1295
1690
|
const value = result[key];
|
|
1296
1691
|
if (Array.isArray(value) && value.length > 0 && value[0]?.content !== void 0) result[key] = value.map(_temp7);
|
|
1297
1692
|
}
|
|
1298
|
-
$[
|
|
1299
|
-
$[
|
|
1300
|
-
} else result = $[
|
|
1693
|
+
$[11] = blockData.content;
|
|
1694
|
+
$[12] = result;
|
|
1695
|
+
} else result = $[12];
|
|
1301
1696
|
const normalizedContent = result;
|
|
1302
|
-
let
|
|
1303
|
-
if ($[
|
|
1304
|
-
|
|
1697
|
+
let t6;
|
|
1698
|
+
if ($[13] !== blockData._id || $[14] !== isContentEditable || $[15] !== selectTarget) {
|
|
1699
|
+
t6 = (e) => {
|
|
1305
1700
|
if (!isContentEditable) return;
|
|
1306
1701
|
const target = e.target;
|
|
1307
1702
|
if (target.closest("[data-camox-field-id]")) return;
|
|
1308
|
-
if (
|
|
1309
|
-
if (target.closest("[data-camox-block-id], [data-camox-comment-block-id]") !== e.currentTarget) return;
|
|
1703
|
+
if (target.closest("[data-camox-block-id]") !== e.currentTarget) return;
|
|
1310
1704
|
selectTarget({
|
|
1311
1705
|
type: "block",
|
|
1312
1706
|
blockId: blockData._id
|
|
1313
|
-
}
|
|
1707
|
+
});
|
|
1314
1708
|
};
|
|
1315
|
-
$[
|
|
1316
|
-
$[
|
|
1317
|
-
$[
|
|
1318
|
-
$[
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1709
|
+
$[13] = blockData._id;
|
|
1710
|
+
$[14] = isContentEditable;
|
|
1711
|
+
$[15] = selectTarget;
|
|
1712
|
+
$[16] = t6;
|
|
1713
|
+
} else t6 = $[16];
|
|
1714
|
+
const handleClick = t6;
|
|
1715
|
+
let t7;
|
|
1716
|
+
if ($[17] !== isContentEditable) {
|
|
1717
|
+
t7 = () => {
|
|
1718
|
+
if (!isContentEditable) return;
|
|
1719
|
+
setIsHovered(true);
|
|
1326
1720
|
};
|
|
1327
|
-
$[
|
|
1328
|
-
$[
|
|
1329
|
-
} else
|
|
1330
|
-
const handleMouseEnter =
|
|
1331
|
-
let
|
|
1332
|
-
if ($[
|
|
1333
|
-
|
|
1334
|
-
if (isContentEditable)
|
|
1721
|
+
$[17] = isContentEditable;
|
|
1722
|
+
$[18] = t7;
|
|
1723
|
+
} else t7 = $[18];
|
|
1724
|
+
const handleMouseEnter = t7;
|
|
1725
|
+
let t8;
|
|
1726
|
+
if ($[19] !== isContentEditable) {
|
|
1727
|
+
t8 = () => {
|
|
1728
|
+
if (!isContentEditable) return;
|
|
1729
|
+
setIsHovered(false);
|
|
1335
1730
|
};
|
|
1336
|
-
$[
|
|
1337
|
-
$[
|
|
1338
|
-
} else
|
|
1339
|
-
const handleMouseLeave =
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
...addBlockAfterPosition !== void 0 && { afterPosition: addBlockAfterPosition }
|
|
1348
|
-
});
|
|
1731
|
+
$[19] = isContentEditable;
|
|
1732
|
+
$[20] = t8;
|
|
1733
|
+
} else t8 = $[20];
|
|
1734
|
+
const handleMouseLeave = t8;
|
|
1735
|
+
const shouldShowOverlay = isContentEditable && (overlayState["data-camox-hovered"] || overlayState["data-camox-focused"]);
|
|
1736
|
+
const t9 = blockData._id;
|
|
1737
|
+
let t10;
|
|
1738
|
+
if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
|
|
1739
|
+
t10 = {
|
|
1740
|
+
position: "relative",
|
|
1741
|
+
scrollMargin: "5rem"
|
|
1349
1742
|
};
|
|
1350
|
-
$[
|
|
1351
|
-
|
|
1743
|
+
$[21] = t10;
|
|
1744
|
+
} else t10 = $[21];
|
|
1745
|
+
const t11 = isContentEditable ? blockData._id : void 0;
|
|
1746
|
+
let t12;
|
|
1747
|
+
if ($[22] !== addBlockAfterPosition || $[23] !== blockData.position || $[24] !== isContentEditable || $[25] !== isFirstBlock || $[26] !== mode || $[27] !== showAddBlockBottom || $[28] !== showAddBlockTop) {
|
|
1748
|
+
t12 = isContentEditable ? JSON.stringify({
|
|
1749
|
+
position: blockData.position,
|
|
1750
|
+
before: showAddBlockTop ?? (mode !== "layout" && !isFirstBlock),
|
|
1751
|
+
after: showAddBlockBottom ?? mode !== "layout",
|
|
1752
|
+
...addBlockAfterPosition !== void 0 ? { afterPosition: addBlockAfterPosition } : {}
|
|
1753
|
+
}) : void 0;
|
|
1754
|
+
$[22] = addBlockAfterPosition;
|
|
1755
|
+
$[23] = blockData.position;
|
|
1756
|
+
$[24] = isContentEditable;
|
|
1757
|
+
$[25] = isFirstBlock;
|
|
1758
|
+
$[26] = mode;
|
|
1759
|
+
$[27] = showAddBlockBottom;
|
|
1760
|
+
$[28] = showAddBlockTop;
|
|
1352
1761
|
$[29] = t12;
|
|
1353
1762
|
} else t12 = $[29];
|
|
1354
|
-
const handleAddBlockClick = t12;
|
|
1355
|
-
const shouldShowOverlay = isContentEditable && (overlayState["data-camox-hovered"] || overlayState["data-camox-focused"]) && !isAddBlockSidebarOpen;
|
|
1356
|
-
const shouldShowAddBlockOverlay = isAddBlockSidebarOpen && mode !== "peek";
|
|
1357
1763
|
let t13;
|
|
1358
|
-
if ($[30]
|
|
1359
|
-
t13 = {
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
} else t13 = $[30];
|
|
1366
|
-
const t14 = isContentEditable ? blockData._id : void 0;
|
|
1764
|
+
if ($[30] !== overlayState || $[31] !== shouldShowOverlay) {
|
|
1765
|
+
t13 = shouldShowOverlay ? overlayState : {};
|
|
1766
|
+
$[30] = overlayState;
|
|
1767
|
+
$[31] = shouldShowOverlay;
|
|
1768
|
+
$[32] = t13;
|
|
1769
|
+
} else t13 = $[32];
|
|
1770
|
+
const t14 = blockData._id;
|
|
1367
1771
|
let t15;
|
|
1368
|
-
if ($[
|
|
1369
|
-
t15 =
|
|
1370
|
-
$[31] = overlayState;
|
|
1371
|
-
$[32] = shouldShowOverlay;
|
|
1372
|
-
$[33] = t15;
|
|
1373
|
-
} else t15 = $[33];
|
|
1374
|
-
const t16 = blockData._id;
|
|
1375
|
-
let t17;
|
|
1376
|
-
if ($[34] !== blockData.content) {
|
|
1377
|
-
t17 = {
|
|
1772
|
+
if ($[33] !== blockData.content) {
|
|
1773
|
+
t15 = {
|
|
1378
1774
|
...contentDefaults,
|
|
1379
1775
|
...blockData.content
|
|
1380
1776
|
};
|
|
1381
|
-
$[
|
|
1382
|
-
$[
|
|
1383
|
-
} else
|
|
1384
|
-
const merged =
|
|
1777
|
+
$[33] = blockData.content;
|
|
1778
|
+
$[34] = t15;
|
|
1779
|
+
} else t15 = $[34];
|
|
1780
|
+
const merged = t15;
|
|
1385
1781
|
let overrides;
|
|
1386
|
-
if ($[
|
|
1782
|
+
if ($[35] !== merged) {
|
|
1387
1783
|
overrides = {};
|
|
1388
1784
|
for (const key_0 in merged) {
|
|
1389
1785
|
const val = merged[key_0];
|
|
1390
1786
|
if (val && typeof val === "object" && "url" in val && !val.url && contentDefaults[key_0]) overrides[key_0] = contentDefaults[key_0];
|
|
1391
1787
|
}
|
|
1392
|
-
$[
|
|
1393
|
-
$[
|
|
1394
|
-
} else overrides = $[
|
|
1395
|
-
let
|
|
1396
|
-
if ($[
|
|
1397
|
-
|
|
1788
|
+
$[35] = merged;
|
|
1789
|
+
$[36] = overrides;
|
|
1790
|
+
} else overrides = $[36];
|
|
1791
|
+
let t16;
|
|
1792
|
+
if ($[37] !== merged || $[38] !== overrides) {
|
|
1793
|
+
t16 = {
|
|
1398
1794
|
...merged,
|
|
1399
1795
|
...overrides
|
|
1400
1796
|
};
|
|
1401
|
-
$[
|
|
1402
|
-
$[
|
|
1403
|
-
$[
|
|
1404
|
-
} else
|
|
1405
|
-
const
|
|
1406
|
-
let
|
|
1407
|
-
if ($[
|
|
1408
|
-
|
|
1797
|
+
$[37] = merged;
|
|
1798
|
+
$[38] = overrides;
|
|
1799
|
+
$[39] = t16;
|
|
1800
|
+
} else t16 = $[39];
|
|
1801
|
+
const t17 = t16;
|
|
1802
|
+
let t18;
|
|
1803
|
+
if ($[40] !== blockData.settings) {
|
|
1804
|
+
t18 = {
|
|
1409
1805
|
...settingsDefaults,
|
|
1410
1806
|
...blockData.settings
|
|
1411
1807
|
};
|
|
1412
|
-
$[
|
|
1413
|
-
$[
|
|
1414
|
-
} else
|
|
1415
|
-
const
|
|
1416
|
-
let
|
|
1417
|
-
if ($[
|
|
1418
|
-
|
|
1419
|
-
blockId:
|
|
1420
|
-
content:
|
|
1421
|
-
settings:
|
|
1808
|
+
$[40] = blockData.settings;
|
|
1809
|
+
$[41] = t18;
|
|
1810
|
+
} else t18 = $[41];
|
|
1811
|
+
const t19 = t18;
|
|
1812
|
+
let t20;
|
|
1813
|
+
if ($[42] !== blockData._id || $[43] !== isHovered || $[44] !== mode || $[45] !== t17 || $[46] !== t19) {
|
|
1814
|
+
t20 = {
|
|
1815
|
+
blockId: t14,
|
|
1816
|
+
content: t17,
|
|
1817
|
+
settings: t19,
|
|
1422
1818
|
mode,
|
|
1423
1819
|
isHovered,
|
|
1424
1820
|
setIsHovered
|
|
1425
1821
|
};
|
|
1426
|
-
$[
|
|
1427
|
-
$[
|
|
1428
|
-
$[
|
|
1822
|
+
$[42] = blockData._id;
|
|
1823
|
+
$[43] = isHovered;
|
|
1824
|
+
$[44] = mode;
|
|
1825
|
+
$[45] = t17;
|
|
1429
1826
|
$[46] = t19;
|
|
1430
|
-
$[47] =
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
$[49] =
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
children: t23
|
|
1444
|
-
});
|
|
1445
|
-
$[51] = t22;
|
|
1446
|
-
$[52] = t23;
|
|
1447
|
-
$[53] = t24;
|
|
1448
|
-
} else t24 = $[53];
|
|
1449
|
-
const t25 = shouldShowAddBlockOverlay || void 0;
|
|
1450
|
-
let t26;
|
|
1451
|
-
if ($[54] !== t25) {
|
|
1452
|
-
t26 = /* @__PURE__ */ jsx("div", {
|
|
1453
|
-
className: "camox-sheet-overlay",
|
|
1454
|
-
"data-camox-visible": t25
|
|
1827
|
+
$[47] = t20;
|
|
1828
|
+
} else t20 = $[47];
|
|
1829
|
+
let t21;
|
|
1830
|
+
if ($[48] !== normalizedContent) {
|
|
1831
|
+
t21 = /* @__PURE__ */ jsx(options.component, { content: normalizedContent });
|
|
1832
|
+
$[48] = normalizedContent;
|
|
1833
|
+
$[49] = t21;
|
|
1834
|
+
} else t21 = $[49];
|
|
1835
|
+
let t22;
|
|
1836
|
+
if ($[50] !== t20 || $[51] !== t21) {
|
|
1837
|
+
t22 = /* @__PURE__ */ jsx(Context.Provider, {
|
|
1838
|
+
value: t20,
|
|
1839
|
+
children: t21
|
|
1455
1840
|
});
|
|
1456
|
-
$[
|
|
1457
|
-
$[
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
hidden: isAddBlockSidebarOpen,
|
|
1464
|
-
onMouseLeave: () => setIsHovered(false),
|
|
1465
|
-
onClick: () => handleAddBlockClick("before")
|
|
1466
|
-
}), (showAddBlockBottom ?? mode !== "layout") && /* @__PURE__ */ jsx(AddBlockControlBar, {
|
|
1467
|
-
position: "bottom",
|
|
1468
|
-
hidden: isAddBlockSidebarOpen,
|
|
1469
|
-
onMouseLeave: () => setIsHovered(false),
|
|
1470
|
-
onClick: () => handleAddBlockClick("after")
|
|
1471
|
-
})] });
|
|
1472
|
-
$[56] = handleAddBlockClick;
|
|
1473
|
-
$[57] = isAddBlockSidebarOpen;
|
|
1474
|
-
$[58] = isCommentMode;
|
|
1475
|
-
$[59] = isFirstBlock;
|
|
1476
|
-
$[60] = mode;
|
|
1477
|
-
$[61] = shouldShowOverlay;
|
|
1478
|
-
$[62] = showAddBlockBottom;
|
|
1479
|
-
$[63] = showAddBlockTop;
|
|
1480
|
-
$[64] = t27;
|
|
1481
|
-
} else t27 = $[64];
|
|
1482
|
-
let t28;
|
|
1483
|
-
if ($[65] !== handleClick || $[66] !== handleMouseEnter || $[67] !== handleMouseLeave || $[68] !== t14 || $[69] !== t15 || $[70] !== t24 || $[71] !== t26 || $[72] !== t27) {
|
|
1484
|
-
t28 = /* @__PURE__ */ jsxs("div", {
|
|
1841
|
+
$[50] = t20;
|
|
1842
|
+
$[51] = t21;
|
|
1843
|
+
$[52] = t22;
|
|
1844
|
+
} else t22 = $[52];
|
|
1845
|
+
let t23;
|
|
1846
|
+
if ($[53] !== blockData._id || $[54] !== handleClick || $[55] !== handleMouseEnter || $[56] !== handleMouseLeave || $[57] !== t11 || $[58] !== t12 || $[59] !== t13 || $[60] !== t22) {
|
|
1847
|
+
t23 = /* @__PURE__ */ jsx("div", {
|
|
1485
1848
|
className: "group visual-editing-block",
|
|
1849
|
+
"data-camox-viewport-block": t9,
|
|
1486
1850
|
ref,
|
|
1487
|
-
style:
|
|
1488
|
-
"data-camox-block-id":
|
|
1489
|
-
|
|
1851
|
+
style: t10,
|
|
1852
|
+
"data-camox-block-id": t11,
|
|
1853
|
+
"data-camox-block-insertion": t12,
|
|
1854
|
+
...t13,
|
|
1490
1855
|
"data-camox-overlay-mode": options.synced ? "synced" : void 0,
|
|
1491
1856
|
onClickCapture: handleClick,
|
|
1492
1857
|
onMouseEnter: handleMouseEnter,
|
|
1493
1858
|
onMouseLeave: handleMouseLeave,
|
|
1494
|
-
children:
|
|
1495
|
-
t24,
|
|
1496
|
-
t26,
|
|
1497
|
-
t27
|
|
1498
|
-
]
|
|
1859
|
+
children: t22
|
|
1499
1860
|
});
|
|
1500
|
-
$[
|
|
1501
|
-
$[
|
|
1502
|
-
$[
|
|
1503
|
-
$[
|
|
1504
|
-
$[
|
|
1505
|
-
$[
|
|
1506
|
-
$[
|
|
1507
|
-
$[
|
|
1508
|
-
$[
|
|
1509
|
-
} else
|
|
1510
|
-
return
|
|
1861
|
+
$[53] = blockData._id;
|
|
1862
|
+
$[54] = handleClick;
|
|
1863
|
+
$[55] = handleMouseEnter;
|
|
1864
|
+
$[56] = handleMouseLeave;
|
|
1865
|
+
$[57] = t11;
|
|
1866
|
+
$[58] = t12;
|
|
1867
|
+
$[59] = t13;
|
|
1868
|
+
$[60] = t22;
|
|
1869
|
+
$[61] = t23;
|
|
1870
|
+
} else t23 = $[61];
|
|
1871
|
+
return t23;
|
|
1511
1872
|
};
|
|
1512
1873
|
const useSetting = (name) => {
|
|
1513
1874
|
const ctx = React.use(Context);
|
|
1514
1875
|
if (!ctx) throw new Error("useSetting must be used within a Block Component");
|
|
1515
1876
|
return ctx.settings[name];
|
|
1516
1877
|
};
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
$[
|
|
1878
|
+
const ReferencePrimitive = (t0) => {
|
|
1879
|
+
const $ = c(6);
|
|
1880
|
+
let Primitive;
|
|
1881
|
+
let props;
|
|
1882
|
+
if ($[0] !== t0) {
|
|
1883
|
+
({primitive: Primitive, ...props} = t0);
|
|
1884
|
+
$[0] = t0;
|
|
1885
|
+
$[1] = Primitive;
|
|
1886
|
+
$[2] = props;
|
|
1887
|
+
} else {
|
|
1888
|
+
Primitive = $[1];
|
|
1889
|
+
props = $[2];
|
|
1526
1890
|
}
|
|
1891
|
+
if (React.use(Context).content[props.name] == null) return null;
|
|
1892
|
+
let t1;
|
|
1893
|
+
if ($[3] !== Primitive || $[4] !== props) {
|
|
1894
|
+
t1 = /* @__PURE__ */ jsx(Primitive, { ...props });
|
|
1895
|
+
$[3] = Primitive;
|
|
1896
|
+
$[4] = props;
|
|
1897
|
+
$[5] = t1;
|
|
1898
|
+
} else t1 = $[5];
|
|
1899
|
+
return t1;
|
|
1900
|
+
};
|
|
1901
|
+
const ReferenceImage = (props) => {
|
|
1902
|
+
const $ = c(2);
|
|
1903
|
+
let t0;
|
|
1904
|
+
if ($[0] !== props) {
|
|
1905
|
+
t0 = /* @__PURE__ */ jsx(ReferencePrimitive, {
|
|
1906
|
+
primitive: Image,
|
|
1907
|
+
...props
|
|
1908
|
+
});
|
|
1909
|
+
$[0] = props;
|
|
1910
|
+
$[1] = t0;
|
|
1911
|
+
} else t0 = $[1];
|
|
1912
|
+
return t0;
|
|
1913
|
+
};
|
|
1914
|
+
const ReferenceFile = (props) => {
|
|
1915
|
+
const $ = c(2);
|
|
1916
|
+
let t0;
|
|
1917
|
+
if ($[0] !== props) {
|
|
1918
|
+
t0 = /* @__PURE__ */ jsx(ReferencePrimitive, {
|
|
1919
|
+
primitive: File,
|
|
1920
|
+
...props
|
|
1921
|
+
});
|
|
1922
|
+
$[0] = props;
|
|
1923
|
+
$[1] = t0;
|
|
1924
|
+
} else t0 = $[1];
|
|
1925
|
+
return t0;
|
|
1926
|
+
};
|
|
1927
|
+
const ReferenceEmbed = (props) => {
|
|
1928
|
+
const $ = c(2);
|
|
1929
|
+
let t0;
|
|
1930
|
+
if ($[0] !== props) {
|
|
1931
|
+
t0 = /* @__PURE__ */ jsx(ReferencePrimitive, {
|
|
1932
|
+
primitive: Embed,
|
|
1933
|
+
...props
|
|
1934
|
+
});
|
|
1935
|
+
$[0] = props;
|
|
1936
|
+
$[1] = t0;
|
|
1937
|
+
} else t0 = $[1];
|
|
1938
|
+
return t0;
|
|
1939
|
+
};
|
|
1940
|
+
const ReferenceImageList = (props) => {
|
|
1941
|
+
const $ = c(2);
|
|
1942
|
+
let t0;
|
|
1943
|
+
if ($[0] !== props) {
|
|
1944
|
+
t0 = /* @__PURE__ */ jsx(ReferencePrimitive, {
|
|
1945
|
+
primitive: ImageList,
|
|
1946
|
+
...props
|
|
1947
|
+
});
|
|
1948
|
+
$[0] = props;
|
|
1949
|
+
$[1] = t0;
|
|
1950
|
+
} else t0 = $[1];
|
|
1951
|
+
return t0;
|
|
1952
|
+
};
|
|
1953
|
+
const ReferenceFileList = (props) => {
|
|
1954
|
+
const $ = c(2);
|
|
1955
|
+
let t0;
|
|
1956
|
+
if ($[0] !== props) {
|
|
1957
|
+
t0 = /* @__PURE__ */ jsx(ReferencePrimitive, {
|
|
1958
|
+
primitive: FileList,
|
|
1959
|
+
...props
|
|
1960
|
+
});
|
|
1961
|
+
$[0] = props;
|
|
1962
|
+
$[1] = t0;
|
|
1963
|
+
} else t0 = $[1];
|
|
1964
|
+
return t0;
|
|
1965
|
+
};
|
|
1966
|
+
const placementOf = (block, owner, fieldName, recordId) => {
|
|
1967
|
+
if (owner.layoutId != null) return {
|
|
1968
|
+
layoutId: owner.layoutId,
|
|
1969
|
+
recordId
|
|
1970
|
+
};
|
|
1971
|
+
if (owner.outer) return {
|
|
1972
|
+
...owner.outer,
|
|
1973
|
+
nested: {
|
|
1974
|
+
fieldName,
|
|
1975
|
+
recordId
|
|
1976
|
+
}
|
|
1977
|
+
};
|
|
1978
|
+
return {
|
|
1979
|
+
blockId: block.blockId,
|
|
1980
|
+
...owner.itemId == null ? {} : { itemId: owner.itemId },
|
|
1981
|
+
fieldName,
|
|
1982
|
+
recordId
|
|
1983
|
+
};
|
|
1984
|
+
};
|
|
1985
|
+
const usePlacedRecord = (block, owner, fieldName, record) => {
|
|
1986
|
+
const $ = c(40);
|
|
1987
|
+
const studioCache = useStudioCache();
|
|
1988
|
+
const selectTarget = usePreviewSelection();
|
|
1989
|
+
const projectUuid = useProjectUuid();
|
|
1990
|
+
const queryClient = useQueryClient();
|
|
1991
|
+
let t0;
|
|
1992
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
1993
|
+
t0 = collectionMutations.edit();
|
|
1994
|
+
$[0] = t0;
|
|
1995
|
+
} else t0 = $[0];
|
|
1996
|
+
const mutation = useMutation(t0);
|
|
1997
|
+
const [error, setError] = React.useState(null);
|
|
1998
|
+
const [pointerHovered, setPointerHovered] = React.useState(false);
|
|
1999
|
+
const editable = useIsEditable(block.mode);
|
|
2000
|
+
let t1;
|
|
2001
|
+
if ($[1] !== block || $[2] !== fieldName || $[3] !== owner || $[4] !== record) {
|
|
2002
|
+
t1 = record ? placementOf(block, owner, fieldName, record.id) : null;
|
|
2003
|
+
$[1] = block;
|
|
2004
|
+
$[2] = fieldName;
|
|
2005
|
+
$[3] = owner;
|
|
2006
|
+
$[4] = record;
|
|
2007
|
+
$[5] = t1;
|
|
2008
|
+
} else t1 = $[5];
|
|
2009
|
+
const placement = t1;
|
|
2010
|
+
const selected = useRecordSelection(placement);
|
|
2011
|
+
const { window: iframeWindow } = useFrame();
|
|
2012
|
+
let t2;
|
|
2013
|
+
if ($[6] !== placement) {
|
|
2014
|
+
t2 = placement ? recordPlacementId(placement) : void 0;
|
|
2015
|
+
$[6] = placement;
|
|
2016
|
+
$[7] = t2;
|
|
2017
|
+
} else t2 = $[7];
|
|
2018
|
+
let t3;
|
|
2019
|
+
if ($[8] !== t2) {
|
|
2020
|
+
t3 = { fieldId: t2 };
|
|
2021
|
+
$[8] = t2;
|
|
2022
|
+
$[9] = t3;
|
|
2023
|
+
} else t3 = $[9];
|
|
2024
|
+
const sidebarHovered = useOverlayMessage(iframeWindow, editable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t3);
|
|
2025
|
+
let t4;
|
|
2026
|
+
if ($[10] !== editable || $[11] !== placement || $[12] !== selectTarget) {
|
|
2027
|
+
t4 = (event) => {
|
|
2028
|
+
if (!editable || !placement) return;
|
|
2029
|
+
if (event.target.closest("[data-camox-field-id]") !== event.currentTarget) return;
|
|
2030
|
+
selectTarget({
|
|
2031
|
+
type: "record",
|
|
2032
|
+
...placement
|
|
2033
|
+
});
|
|
2034
|
+
};
|
|
2035
|
+
$[10] = editable;
|
|
2036
|
+
$[11] = placement;
|
|
2037
|
+
$[12] = selectTarget;
|
|
2038
|
+
$[13] = t4;
|
|
2039
|
+
} else t4 = $[13];
|
|
2040
|
+
const selectRecord = t4;
|
|
2041
|
+
let t5;
|
|
2042
|
+
if ($[14] !== editable || $[15] !== placement || $[16] !== selectTarget) {
|
|
2043
|
+
t5 = (recordFieldName, recordFieldType) => {
|
|
2044
|
+
if (!editable || !placement) return;
|
|
2045
|
+
selectTarget({
|
|
2046
|
+
type: "record-field",
|
|
2047
|
+
...placement,
|
|
2048
|
+
recordFieldName,
|
|
2049
|
+
recordFieldType
|
|
2050
|
+
});
|
|
2051
|
+
};
|
|
2052
|
+
$[14] = editable;
|
|
2053
|
+
$[15] = placement;
|
|
2054
|
+
$[16] = selectTarget;
|
|
2055
|
+
$[17] = t5;
|
|
2056
|
+
} else t5 = $[17];
|
|
2057
|
+
const selectRecordField = t5;
|
|
2058
|
+
let t6;
|
|
2059
|
+
if ($[18] !== editable || $[19] !== mutation || $[20] !== projectUuid || $[21] !== queryClient || $[22] !== record || $[23] !== studioCache) {
|
|
2060
|
+
t6 = (field, value) => {
|
|
2061
|
+
if (!record || !editable) return;
|
|
2062
|
+
setError(null);
|
|
2063
|
+
referenceWritesFor(queryClient).save(record, field, value, async (input) => {
|
|
2064
|
+
const saved = await mutation.mutateAsync({
|
|
2065
|
+
...input,
|
|
2066
|
+
projectUuid
|
|
2067
|
+
});
|
|
2068
|
+
studioCache.set(reads.record({
|
|
2069
|
+
projectUuid,
|
|
2070
|
+
collectionId: record.collectionId,
|
|
2071
|
+
id: record.id
|
|
2072
|
+
}), saved);
|
|
2073
|
+
invalidateCollectionRecordViews(studioCache, projectUuid, record.collectionId);
|
|
2074
|
+
return saved;
|
|
2075
|
+
}).catch((cause) => {
|
|
2076
|
+
setError(cause instanceof Error ? cause.message : "Could not save item");
|
|
2077
|
+
});
|
|
2078
|
+
};
|
|
2079
|
+
$[18] = editable;
|
|
2080
|
+
$[19] = mutation;
|
|
2081
|
+
$[20] = projectUuid;
|
|
2082
|
+
$[21] = queryClient;
|
|
2083
|
+
$[22] = record;
|
|
2084
|
+
$[23] = studioCache;
|
|
2085
|
+
$[24] = t6;
|
|
2086
|
+
} else t6 = $[24];
|
|
2087
|
+
const update = t6;
|
|
2088
|
+
const t7 = pointerHovered || sidebarHovered;
|
|
2089
|
+
let t8;
|
|
2090
|
+
if ($[25] !== placement || $[26] !== selectRecordField || $[27] !== update) {
|
|
2091
|
+
t8 = placement ? {
|
|
2092
|
+
placement,
|
|
2093
|
+
selectRecordField,
|
|
2094
|
+
update
|
|
2095
|
+
} : null;
|
|
2096
|
+
$[25] = placement;
|
|
2097
|
+
$[26] = selectRecordField;
|
|
2098
|
+
$[27] = update;
|
|
2099
|
+
$[28] = t8;
|
|
2100
|
+
} else t8 = $[28];
|
|
2101
|
+
let t10;
|
|
2102
|
+
let t9;
|
|
2103
|
+
if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
|
|
2104
|
+
t9 = () => setPointerHovered(true);
|
|
2105
|
+
t10 = () => setPointerHovered(false);
|
|
2106
|
+
$[29] = t10;
|
|
2107
|
+
$[30] = t9;
|
|
2108
|
+
} else {
|
|
2109
|
+
t10 = $[29];
|
|
2110
|
+
t9 = $[30];
|
|
2111
|
+
}
|
|
2112
|
+
let t11;
|
|
2113
|
+
if ($[31] !== selectRecord) {
|
|
2114
|
+
t11 = {
|
|
2115
|
+
onClickCapture: selectRecord,
|
|
2116
|
+
onMouseEnter: t9,
|
|
2117
|
+
onMouseLeave: t10
|
|
2118
|
+
};
|
|
2119
|
+
$[31] = selectRecord;
|
|
2120
|
+
$[32] = t11;
|
|
2121
|
+
} else t11 = $[32];
|
|
2122
|
+
let t12;
|
|
2123
|
+
if ($[33] !== editable || $[34] !== error || $[35] !== selected || $[36] !== t11 || $[37] !== t7 || $[38] !== t8) {
|
|
2124
|
+
t12 = {
|
|
2125
|
+
editable,
|
|
2126
|
+
error,
|
|
2127
|
+
selected,
|
|
2128
|
+
hovered: t7,
|
|
2129
|
+
reference: t8,
|
|
2130
|
+
wrapperProps: t11
|
|
2131
|
+
};
|
|
2132
|
+
$[33] = editable;
|
|
2133
|
+
$[34] = error;
|
|
2134
|
+
$[35] = selected;
|
|
2135
|
+
$[36] = t11;
|
|
2136
|
+
$[37] = t7;
|
|
2137
|
+
$[38] = t8;
|
|
2138
|
+
$[39] = t12;
|
|
2139
|
+
} else t12 = $[39];
|
|
2140
|
+
return t12;
|
|
2141
|
+
};
|
|
2142
|
+
const RecordScope = (t0) => {
|
|
2143
|
+
const $ = c(15);
|
|
2144
|
+
const { block, field, record, reference, children } = t0;
|
|
2145
|
+
const t1 = record.content;
|
|
2146
|
+
let t2;
|
|
2147
|
+
if ($[0] !== block || $[1] !== field.referenceSchema.properties || $[2] !== t1) {
|
|
2148
|
+
t2 = {
|
|
2149
|
+
...block,
|
|
2150
|
+
content: t1,
|
|
2151
|
+
sourceSchema: field.referenceSchema.properties
|
|
2152
|
+
};
|
|
2153
|
+
$[0] = block;
|
|
2154
|
+
$[1] = field.referenceSchema.properties;
|
|
2155
|
+
$[2] = t1;
|
|
2156
|
+
$[3] = t2;
|
|
2157
|
+
} else t2 = $[3];
|
|
2158
|
+
let t3;
|
|
2159
|
+
if ($[4] !== children || $[5] !== record.id || $[6] !== record.label || $[7] !== reference.placement.nested) {
|
|
2160
|
+
t3 = children({
|
|
2161
|
+
id: record.id,
|
|
2162
|
+
label: record.label,
|
|
2163
|
+
Field,
|
|
2164
|
+
Image: ReferenceImage,
|
|
2165
|
+
File: ReferenceFile,
|
|
2166
|
+
Embed: ReferenceEmbed,
|
|
2167
|
+
ImageList: ReferenceImageList,
|
|
2168
|
+
FileList: ReferenceFileList,
|
|
2169
|
+
...reference.placement.nested ? {} : {
|
|
2170
|
+
Reference,
|
|
2171
|
+
ReferenceList
|
|
2172
|
+
}
|
|
2173
|
+
});
|
|
2174
|
+
$[4] = children;
|
|
2175
|
+
$[5] = record.id;
|
|
2176
|
+
$[6] = record.label;
|
|
2177
|
+
$[7] = reference.placement.nested;
|
|
2178
|
+
$[8] = t3;
|
|
2179
|
+
} else t3 = $[8];
|
|
2180
|
+
let t4;
|
|
2181
|
+
if ($[9] !== t2 || $[10] !== t3) {
|
|
2182
|
+
t4 = /* @__PURE__ */ jsx(RepeatableItemContext.Provider, {
|
|
2183
|
+
value: null,
|
|
2184
|
+
children: /* @__PURE__ */ jsx(Context.Provider, {
|
|
2185
|
+
value: t2,
|
|
2186
|
+
children: t3
|
|
2187
|
+
})
|
|
2188
|
+
});
|
|
2189
|
+
$[9] = t2;
|
|
2190
|
+
$[10] = t3;
|
|
2191
|
+
$[11] = t4;
|
|
2192
|
+
} else t4 = $[11];
|
|
2193
|
+
let t5;
|
|
2194
|
+
if ($[12] !== reference || $[13] !== t4) {
|
|
2195
|
+
t5 = /* @__PURE__ */ jsx(ReferenceContext.Provider, {
|
|
2196
|
+
value: reference,
|
|
2197
|
+
children: t4
|
|
2198
|
+
});
|
|
2199
|
+
$[12] = reference;
|
|
2200
|
+
$[13] = t4;
|
|
2201
|
+
$[14] = t5;
|
|
2202
|
+
} else t5 = $[14];
|
|
2203
|
+
return t5;
|
|
2204
|
+
};
|
|
2205
|
+
const useCollectionTitle = (fieldName, field) => {
|
|
2206
|
+
const $ = c(4);
|
|
2207
|
+
const camoxApp = useOptionalCamoxApp();
|
|
2208
|
+
let t0;
|
|
2209
|
+
if ($[0] !== camoxApp || $[1] !== field || $[2] !== fieldName) {
|
|
2210
|
+
t0 = camoxApp?.getCollectionById(field.collectionId)?._internal.title ?? field.title ?? fieldName;
|
|
2211
|
+
$[0] = camoxApp;
|
|
2212
|
+
$[1] = field;
|
|
2213
|
+
$[2] = fieldName;
|
|
2214
|
+
$[3] = t0;
|
|
2215
|
+
} else t0 = $[3];
|
|
2216
|
+
return t0;
|
|
2217
|
+
};
|
|
2218
|
+
const useReferenceField = (block, fieldName) => {
|
|
2219
|
+
const item = React.use(RepeatableItemContext);
|
|
2220
|
+
const outer = React.use(ReferenceContext)?.placement ?? null;
|
|
2221
|
+
const owner = {
|
|
2222
|
+
itemId: item?.itemId,
|
|
2223
|
+
outer
|
|
2224
|
+
};
|
|
2225
|
+
const fieldType = "Reference";
|
|
2226
|
+
const recordFieldSelected = useRecordSelection(outer, fieldName);
|
|
2227
|
+
const blockFieldSelected = useFieldSelection(block.blockId, fieldName, fieldType, owner.itemId);
|
|
2228
|
+
const fieldSelection = outer ? {
|
|
2229
|
+
type: "record-field",
|
|
2230
|
+
...outer,
|
|
2231
|
+
recordFieldName: fieldName,
|
|
2232
|
+
recordFieldType: fieldType
|
|
2233
|
+
} : owner.itemId == null ? {
|
|
2234
|
+
type: "block-field",
|
|
2235
|
+
blockId: block.blockId,
|
|
2236
|
+
fieldName,
|
|
2237
|
+
fieldType
|
|
2238
|
+
} : {
|
|
2239
|
+
type: "item-field",
|
|
2240
|
+
blockId: block.blockId,
|
|
2241
|
+
itemId: owner.itemId,
|
|
2242
|
+
fieldName,
|
|
2243
|
+
fieldType
|
|
2244
|
+
};
|
|
2245
|
+
return {
|
|
2246
|
+
owner,
|
|
2247
|
+
field: item ? item.itemSchema?.[fieldName] : (block.sourceSchema ?? typeboxSchema.properties)[fieldName],
|
|
2248
|
+
stored: item ? item.itemContent[fieldName] : block.content[fieldName],
|
|
2249
|
+
fieldId: outer ? overlayFieldId(block.blockId, fieldName, { placement: outer }) : overlayFieldId(block.blockId, fieldName, { itemId: owner.itemId }),
|
|
2250
|
+
fieldSelection,
|
|
2251
|
+
fieldSelected: outer ? recordFieldSelected : blockFieldSelected
|
|
2252
|
+
};
|
|
2253
|
+
};
|
|
2254
|
+
const ReferencePlaceholder = (t0) => {
|
|
2255
|
+
const $ = c(13);
|
|
2256
|
+
let children;
|
|
2257
|
+
let fieldId;
|
|
2258
|
+
let fieldSelection;
|
|
2259
|
+
let props;
|
|
2260
|
+
if ($[0] !== t0) {
|
|
2261
|
+
({fieldId, fieldSelection, children, ...props} = t0);
|
|
2262
|
+
$[0] = t0;
|
|
2263
|
+
$[1] = children;
|
|
2264
|
+
$[2] = fieldId;
|
|
2265
|
+
$[3] = fieldSelection;
|
|
2266
|
+
$[4] = props;
|
|
2267
|
+
} else {
|
|
2268
|
+
children = $[1];
|
|
2269
|
+
fieldId = $[2];
|
|
2270
|
+
fieldSelection = $[3];
|
|
2271
|
+
props = $[4];
|
|
2272
|
+
}
|
|
2273
|
+
const selectTarget = usePreviewSelection();
|
|
2274
|
+
let t1;
|
|
2275
|
+
if ($[5] !== fieldId || $[6] !== fieldSelection || $[7] !== selectTarget) {
|
|
2276
|
+
t1 = () => {
|
|
2277
|
+
selectTarget(fieldSelection);
|
|
2278
|
+
referencePickerFocus.send({
|
|
2279
|
+
type: "request",
|
|
2280
|
+
fieldId
|
|
2281
|
+
});
|
|
2282
|
+
};
|
|
2283
|
+
$[5] = fieldId;
|
|
2284
|
+
$[6] = fieldSelection;
|
|
2285
|
+
$[7] = selectTarget;
|
|
2286
|
+
$[8] = t1;
|
|
2287
|
+
} else t1 = $[8];
|
|
2288
|
+
let t2;
|
|
2289
|
+
if ($[9] !== children || $[10] !== props || $[11] !== t1) {
|
|
2290
|
+
t2 = /* @__PURE__ */ jsx("button", {
|
|
2291
|
+
type: "button",
|
|
2292
|
+
"data-camox-reference-placeholder": "",
|
|
2293
|
+
className: "camox-reference-placeholder",
|
|
2294
|
+
...props,
|
|
2295
|
+
onClick: t1,
|
|
2296
|
+
children
|
|
2297
|
+
});
|
|
2298
|
+
$[9] = children;
|
|
2299
|
+
$[10] = props;
|
|
2300
|
+
$[11] = t1;
|
|
2301
|
+
$[12] = t2;
|
|
2302
|
+
} else t2 = $[12];
|
|
2303
|
+
return t2;
|
|
2304
|
+
};
|
|
2305
|
+
const PlacedRecordWrapper = (t0) => {
|
|
2306
|
+
const $ = c(10);
|
|
2307
|
+
const { fieldId, record, placedRecord, overlay, children } = t0;
|
|
2308
|
+
const t1 = record?.id;
|
|
2309
|
+
const t2 = record?.label;
|
|
2310
|
+
let t3;
|
|
2311
|
+
if ($[0] !== placedRecord.error) {
|
|
2312
|
+
t3 = placedRecord.error && /* @__PURE__ */ jsxs("p", {
|
|
2313
|
+
role: "alert",
|
|
2314
|
+
children: ["Could not save item. ", placedRecord.error]
|
|
2315
|
+
});
|
|
2316
|
+
$[0] = placedRecord.error;
|
|
2317
|
+
$[1] = t3;
|
|
2318
|
+
} else t3 = $[1];
|
|
2319
|
+
let t4;
|
|
2320
|
+
if ($[2] !== children || $[3] !== fieldId || $[4] !== overlay || $[5] !== placedRecord.wrapperProps || $[6] !== t1 || $[7] !== t2 || $[8] !== t3) {
|
|
2321
|
+
t4 = /* @__PURE__ */ jsxs("div", {
|
|
2322
|
+
"data-camox-field-id": fieldId,
|
|
2323
|
+
"data-camox-collection-record-id": t1,
|
|
2324
|
+
"data-camox-reference-label": t2,
|
|
2325
|
+
"data-camox-overlay-mode": "reference",
|
|
2326
|
+
...overlay,
|
|
2327
|
+
...placedRecord.wrapperProps,
|
|
2328
|
+
children: [children, t3]
|
|
2329
|
+
});
|
|
2330
|
+
$[2] = children;
|
|
2331
|
+
$[3] = fieldId;
|
|
2332
|
+
$[4] = overlay;
|
|
2333
|
+
$[5] = placedRecord.wrapperProps;
|
|
2334
|
+
$[6] = t1;
|
|
2335
|
+
$[7] = t2;
|
|
2336
|
+
$[8] = t3;
|
|
2337
|
+
$[9] = t4;
|
|
2338
|
+
} else t4 = $[9];
|
|
2339
|
+
return t4;
|
|
2340
|
+
};
|
|
2341
|
+
const Reference = (t0) => {
|
|
2342
|
+
const $ = c(21);
|
|
2343
|
+
const { name, children } = t0;
|
|
2344
|
+
const block = React.use(Context);
|
|
2345
|
+
const { recordsMap } = useNormalizedData();
|
|
2346
|
+
const { window: iframeWindow } = useFrame();
|
|
2347
|
+
if (!block) throw new Error("Reference must be used within a Block Component");
|
|
2348
|
+
const fieldName = String(name);
|
|
2349
|
+
const { owner, field, stored, fieldId, fieldSelection, fieldSelected } = useReferenceField(block, fieldName);
|
|
2350
|
+
const collectionTitle = useCollectionTitle(fieldName, field);
|
|
2351
|
+
let t1;
|
|
2352
|
+
if ($[0] !== field.collectionId || $[1] !== recordsMap || $[2] !== stored) {
|
|
2353
|
+
t1 = resolveReference(stored, field.collectionId, recordsMap);
|
|
2354
|
+
$[0] = field.collectionId;
|
|
2355
|
+
$[1] = recordsMap;
|
|
2356
|
+
$[2] = stored;
|
|
2357
|
+
$[3] = t1;
|
|
2358
|
+
} else t1 = $[3];
|
|
2359
|
+
const record = t1;
|
|
2360
|
+
const placedRecord = usePlacedRecord(block, owner, fieldName, record);
|
|
2361
|
+
const { editable } = placedRecord;
|
|
2362
|
+
let t2;
|
|
2363
|
+
if ($[4] !== fieldId) {
|
|
2364
|
+
t2 = { fieldId };
|
|
2365
|
+
$[4] = fieldId;
|
|
2366
|
+
$[5] = t2;
|
|
2367
|
+
} else t2 = $[5];
|
|
2368
|
+
const fieldHovered = useOverlayMessage(iframeWindow, editable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t2);
|
|
2369
|
+
const overlay = useOverlayState(placedRecord.hovered || fieldHovered, fieldSelected || placedRecord.selected);
|
|
2370
|
+
if (!record && !editable) return null;
|
|
2371
|
+
let t3;
|
|
2372
|
+
if ($[6] !== block || $[7] !== children || $[8] !== collectionTitle || $[9] !== field || $[10] !== fieldId || $[11] !== fieldSelection || $[12] !== placedRecord.reference || $[13] !== record) {
|
|
2373
|
+
t3 = record && placedRecord.reference ? /* @__PURE__ */ jsx(RecordScope, {
|
|
2374
|
+
block,
|
|
2375
|
+
field,
|
|
2376
|
+
record,
|
|
2377
|
+
reference: placedRecord.reference,
|
|
2378
|
+
children
|
|
2379
|
+
}) : /* @__PURE__ */ jsxs(ReferencePlaceholder, {
|
|
2380
|
+
fieldId,
|
|
2381
|
+
fieldSelection,
|
|
2382
|
+
children: ["Select ", collectionTitle]
|
|
2383
|
+
});
|
|
2384
|
+
$[6] = block;
|
|
2385
|
+
$[7] = children;
|
|
2386
|
+
$[8] = collectionTitle;
|
|
2387
|
+
$[9] = field;
|
|
2388
|
+
$[10] = fieldId;
|
|
2389
|
+
$[11] = fieldSelection;
|
|
2390
|
+
$[12] = placedRecord.reference;
|
|
2391
|
+
$[13] = record;
|
|
2392
|
+
$[14] = t3;
|
|
2393
|
+
} else t3 = $[14];
|
|
2394
|
+
const rendered = t3;
|
|
2395
|
+
if (!editable) return rendered;
|
|
2396
|
+
let t4;
|
|
2397
|
+
if ($[15] !== fieldId || $[16] !== overlay || $[17] !== placedRecord || $[18] !== record || $[19] !== rendered) {
|
|
2398
|
+
t4 = /* @__PURE__ */ jsx(PlacedRecordWrapper, {
|
|
2399
|
+
fieldId,
|
|
2400
|
+
record,
|
|
2401
|
+
placedRecord,
|
|
2402
|
+
overlay,
|
|
2403
|
+
children: rendered
|
|
2404
|
+
});
|
|
2405
|
+
$[15] = fieldId;
|
|
2406
|
+
$[16] = overlay;
|
|
2407
|
+
$[17] = placedRecord;
|
|
2408
|
+
$[18] = record;
|
|
2409
|
+
$[19] = rendered;
|
|
2410
|
+
$[20] = t4;
|
|
2411
|
+
} else t4 = $[20];
|
|
2412
|
+
return t4;
|
|
2413
|
+
};
|
|
2414
|
+
const ListedRecord = (t0) => {
|
|
2415
|
+
const $ = c(14);
|
|
2416
|
+
const { block, owner, field, fieldName, record, listHovered, children } = t0;
|
|
2417
|
+
const placedRecord = usePlacedRecord(block, owner, fieldName, record);
|
|
2418
|
+
const overlay = useOverlayState(placedRecord.hovered || listHovered, placedRecord.selected);
|
|
2419
|
+
if (!placedRecord.reference) return null;
|
|
2420
|
+
let t1;
|
|
2421
|
+
if ($[0] !== block || $[1] !== children || $[2] !== field || $[3] !== placedRecord.reference || $[4] !== record) {
|
|
2422
|
+
t1 = /* @__PURE__ */ jsx(RecordScope, {
|
|
2423
|
+
block,
|
|
2424
|
+
field,
|
|
2425
|
+
record,
|
|
2426
|
+
reference: placedRecord.reference,
|
|
2427
|
+
children
|
|
2428
|
+
});
|
|
2429
|
+
$[0] = block;
|
|
2430
|
+
$[1] = children;
|
|
2431
|
+
$[2] = field;
|
|
2432
|
+
$[3] = placedRecord.reference;
|
|
2433
|
+
$[4] = record;
|
|
2434
|
+
$[5] = t1;
|
|
2435
|
+
} else t1 = $[5];
|
|
2436
|
+
const rendered = t1;
|
|
2437
|
+
if (!placedRecord.editable) return rendered;
|
|
2438
|
+
let t2;
|
|
2439
|
+
if ($[6] !== placedRecord.reference.placement) {
|
|
2440
|
+
t2 = recordPlacementId(placedRecord.reference.placement);
|
|
2441
|
+
$[6] = placedRecord.reference.placement;
|
|
2442
|
+
$[7] = t2;
|
|
2443
|
+
} else t2 = $[7];
|
|
2444
|
+
let t3;
|
|
2445
|
+
if ($[8] !== overlay || $[9] !== placedRecord || $[10] !== record || $[11] !== rendered || $[12] !== t2) {
|
|
2446
|
+
t3 = /* @__PURE__ */ jsx(PlacedRecordWrapper, {
|
|
2447
|
+
fieldId: t2,
|
|
2448
|
+
record,
|
|
2449
|
+
placedRecord,
|
|
2450
|
+
overlay,
|
|
2451
|
+
children: rendered
|
|
2452
|
+
});
|
|
2453
|
+
$[8] = overlay;
|
|
2454
|
+
$[9] = placedRecord;
|
|
2455
|
+
$[10] = record;
|
|
2456
|
+
$[11] = rendered;
|
|
2457
|
+
$[12] = t2;
|
|
2458
|
+
$[13] = t3;
|
|
2459
|
+
} else t3 = $[13];
|
|
2460
|
+
return t3;
|
|
2461
|
+
};
|
|
2462
|
+
const LayoutRecord = (t0) => {
|
|
2463
|
+
const $ = c(25);
|
|
2464
|
+
const { layoutId, record, properties, children } = t0;
|
|
2465
|
+
const t1 = record.content;
|
|
2466
|
+
let t2;
|
|
2467
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
2468
|
+
t2 = {};
|
|
2469
|
+
$[0] = t2;
|
|
2470
|
+
} else t2 = $[0];
|
|
2471
|
+
let t3;
|
|
2472
|
+
if ($[1] !== properties || $[2] !== t1) {
|
|
2473
|
+
t3 = {
|
|
2474
|
+
blockId: "",
|
|
2475
|
+
content: t1,
|
|
2476
|
+
sourceSchema: properties,
|
|
2477
|
+
settings: t2,
|
|
2478
|
+
isHovered: false,
|
|
2479
|
+
setIsHovered: _temp8,
|
|
2480
|
+
mode: "layout"
|
|
2481
|
+
};
|
|
2482
|
+
$[1] = properties;
|
|
2483
|
+
$[2] = t1;
|
|
2484
|
+
$[3] = t3;
|
|
2485
|
+
} else t3 = $[3];
|
|
2486
|
+
const block = t3;
|
|
2487
|
+
let t4;
|
|
2488
|
+
if ($[4] !== layoutId) {
|
|
2489
|
+
t4 = {
|
|
2490
|
+
itemId: void 0,
|
|
2491
|
+
outer: null,
|
|
2492
|
+
layoutId
|
|
2493
|
+
};
|
|
2494
|
+
$[4] = layoutId;
|
|
2495
|
+
$[5] = t4;
|
|
2496
|
+
} else t4 = $[5];
|
|
2497
|
+
const placedRecord = usePlacedRecord(block, t4, "", record);
|
|
2498
|
+
const overlay = useOverlayState(placedRecord.hovered, placedRecord.selected);
|
|
2499
|
+
if (!placedRecord.reference) return null;
|
|
2500
|
+
let t5;
|
|
2501
|
+
if ($[6] !== properties) {
|
|
2502
|
+
t5 = { referenceSchema: { properties } };
|
|
2503
|
+
$[6] = properties;
|
|
2504
|
+
$[7] = t5;
|
|
2505
|
+
} else t5 = $[7];
|
|
2506
|
+
let t6;
|
|
2507
|
+
if ($[8] !== block || $[9] !== children || $[10] !== placedRecord.reference || $[11] !== record || $[12] !== t5) {
|
|
2508
|
+
t6 = /* @__PURE__ */ jsx(RecordScope, {
|
|
2509
|
+
block,
|
|
2510
|
+
field: t5,
|
|
2511
|
+
record,
|
|
2512
|
+
reference: placedRecord.reference,
|
|
2513
|
+
children
|
|
2514
|
+
});
|
|
2515
|
+
$[8] = block;
|
|
2516
|
+
$[9] = children;
|
|
2517
|
+
$[10] = placedRecord.reference;
|
|
2518
|
+
$[11] = record;
|
|
2519
|
+
$[12] = t5;
|
|
2520
|
+
$[13] = t6;
|
|
2521
|
+
} else t6 = $[13];
|
|
2522
|
+
let t7;
|
|
2523
|
+
if ($[14] !== record.references || $[15] !== t6) {
|
|
2524
|
+
t7 = /* @__PURE__ */ jsx(LinkedRecordsProvider, {
|
|
2525
|
+
references: record.references,
|
|
2526
|
+
children: t6
|
|
2527
|
+
});
|
|
2528
|
+
$[14] = record.references;
|
|
2529
|
+
$[15] = t6;
|
|
2530
|
+
$[16] = t7;
|
|
2531
|
+
} else t7 = $[16];
|
|
2532
|
+
const rendered = t7;
|
|
2533
|
+
if (!placedRecord.editable) return rendered;
|
|
2534
|
+
let t8;
|
|
2535
|
+
if ($[17] !== placedRecord.reference.placement) {
|
|
2536
|
+
t8 = recordPlacementId(placedRecord.reference.placement);
|
|
2537
|
+
$[17] = placedRecord.reference.placement;
|
|
2538
|
+
$[18] = t8;
|
|
2539
|
+
} else t8 = $[18];
|
|
2540
|
+
let t9;
|
|
2541
|
+
if ($[19] !== overlay || $[20] !== placedRecord || $[21] !== record || $[22] !== rendered || $[23] !== t8) {
|
|
2542
|
+
t9 = /* @__PURE__ */ jsx(PlacedRecordWrapper, {
|
|
2543
|
+
fieldId: t8,
|
|
2544
|
+
record,
|
|
2545
|
+
placedRecord,
|
|
2546
|
+
overlay,
|
|
2547
|
+
children: rendered
|
|
2548
|
+
});
|
|
2549
|
+
$[19] = overlay;
|
|
2550
|
+
$[20] = placedRecord;
|
|
2551
|
+
$[21] = record;
|
|
2552
|
+
$[22] = rendered;
|
|
2553
|
+
$[23] = t8;
|
|
2554
|
+
$[24] = t9;
|
|
2555
|
+
} else t9 = $[24];
|
|
2556
|
+
return t9;
|
|
2557
|
+
};
|
|
2558
|
+
const LayoutItem = (t0) => {
|
|
2559
|
+
const $ = c(9);
|
|
2560
|
+
const { collectionId, labelField, properties, record, children, fallback } = t0;
|
|
2561
|
+
const editingOwner = React.use(PreviewEditingOwnerContext);
|
|
2562
|
+
let t1;
|
|
2563
|
+
if ($[0] !== collectionId || $[1] !== labelField || $[2] !== record) {
|
|
2564
|
+
t1 = {
|
|
2565
|
+
collectionId,
|
|
2566
|
+
labelField,
|
|
2567
|
+
loaded: record
|
|
2568
|
+
};
|
|
2569
|
+
$[0] = collectionId;
|
|
2570
|
+
$[1] = labelField;
|
|
2571
|
+
$[2] = record;
|
|
2572
|
+
$[3] = t1;
|
|
2573
|
+
} else t1 = $[3];
|
|
2574
|
+
const latest = useLatestRecord(t1);
|
|
2575
|
+
if (editingOwner?.kind !== "layout" || !latest) return fallback;
|
|
2576
|
+
let t2;
|
|
2577
|
+
if ($[4] !== children || $[5] !== editingOwner.layoutId || $[6] !== latest || $[7] !== properties) {
|
|
2578
|
+
t2 = /* @__PURE__ */ jsx(LayoutRecord, {
|
|
2579
|
+
layoutId: editingOwner.layoutId,
|
|
2580
|
+
properties,
|
|
2581
|
+
record: latest,
|
|
2582
|
+
children
|
|
2583
|
+
});
|
|
2584
|
+
$[4] = children;
|
|
2585
|
+
$[5] = editingOwner.layoutId;
|
|
2586
|
+
$[6] = latest;
|
|
2587
|
+
$[7] = properties;
|
|
2588
|
+
$[8] = t2;
|
|
2589
|
+
} else t2 = $[8];
|
|
2590
|
+
return t2;
|
|
2591
|
+
};
|
|
2592
|
+
const ReferenceList = (t0) => {
|
|
2593
|
+
const $ = c(44);
|
|
2594
|
+
const { name, children } = t0;
|
|
2595
|
+
const block = React.use(Context);
|
|
2596
|
+
const normalizedData = useNormalizedData();
|
|
2597
|
+
const { recordsMap } = normalizedData;
|
|
2598
|
+
const { window: iframeWindow } = useFrame();
|
|
2599
|
+
if (!block) throw new Error("ReferenceList must be used within a Block Component");
|
|
2600
|
+
const editable = useIsEditable(block.mode);
|
|
2601
|
+
const fieldName = String(name);
|
|
2602
|
+
const { owner, field, stored, fieldId, fieldSelection } = useReferenceField(block, fieldName);
|
|
2603
|
+
const collectionTitle = useCollectionTitle(fieldName, field);
|
|
2604
|
+
let t1;
|
|
2605
|
+
if ($[0] !== fieldId) {
|
|
2606
|
+
t1 = { fieldId };
|
|
2607
|
+
$[0] = fieldId;
|
|
2608
|
+
$[1] = t1;
|
|
2609
|
+
} else t1 = $[1];
|
|
2610
|
+
const listHovered = useOverlayMessage(iframeWindow, editable, "CAMOX_HOVER_FIELD", "CAMOX_HOVER_FIELD_END", t1);
|
|
2611
|
+
const placeholderOverlay = useOverlayState(listHovered);
|
|
2612
|
+
let t2;
|
|
2613
|
+
if ($[2] !== field) {
|
|
2614
|
+
t2 = isQueryBacked(field);
|
|
2615
|
+
$[2] = field;
|
|
2616
|
+
$[3] = t2;
|
|
2617
|
+
} else t2 = $[3];
|
|
2618
|
+
const queryBacked = t2;
|
|
2619
|
+
let t3;
|
|
2620
|
+
if ($[4] !== block.blockId || $[5] !== fieldName || $[6] !== normalizedData || $[7] !== owner || $[8] !== queryBacked || $[9] !== stored) {
|
|
2621
|
+
t3 = queryBacked ? queryResultIds(normalizedData, {
|
|
2622
|
+
blockId: block.blockId,
|
|
2623
|
+
itemId: owner.itemId
|
|
2624
|
+
}, fieldName) : stored;
|
|
2625
|
+
$[4] = block.blockId;
|
|
2626
|
+
$[5] = fieldName;
|
|
2627
|
+
$[6] = normalizedData;
|
|
2628
|
+
$[7] = owner;
|
|
2629
|
+
$[8] = queryBacked;
|
|
2630
|
+
$[9] = stored;
|
|
2631
|
+
$[10] = t3;
|
|
2632
|
+
} else t3 = $[10];
|
|
2633
|
+
const ids = t3;
|
|
2634
|
+
let t4;
|
|
2635
|
+
let t5;
|
|
2636
|
+
if ($[11] !== block || $[12] !== children || $[13] !== collectionTitle || $[14] !== editable || $[15] !== field || $[16] !== fieldId || $[17] !== fieldName || $[18] !== fieldSelection || $[19] !== ids || $[20] !== listHovered || $[21] !== owner || $[22] !== placeholderOverlay || $[23] !== queryBacked || $[24] !== recordsMap) {
|
|
2637
|
+
t5 = Symbol.for("react.early_return_sentinel");
|
|
2638
|
+
bb0: {
|
|
2639
|
+
const records = resolveReferenceList(ids, field.collectionId, recordsMap);
|
|
2640
|
+
if (records.length === 0) {
|
|
2641
|
+
if (!editable || queryBacked) {
|
|
2642
|
+
t5 = null;
|
|
2643
|
+
break bb0;
|
|
2644
|
+
}
|
|
2645
|
+
let t6;
|
|
2646
|
+
if ($[27] !== fieldSelection.type) {
|
|
2647
|
+
t6 = fieldSelection.type === "record-field" ? { recordFieldType: "ReferenceList" } : { fieldType: "ReferenceList" };
|
|
2648
|
+
$[27] = fieldSelection.type;
|
|
2649
|
+
$[28] = t6;
|
|
2650
|
+
} else t6 = $[28];
|
|
2651
|
+
let t7;
|
|
2652
|
+
if ($[29] !== fieldSelection || $[30] !== t6) {
|
|
2653
|
+
t7 = {
|
|
2654
|
+
...fieldSelection,
|
|
2655
|
+
...t6
|
|
2656
|
+
};
|
|
2657
|
+
$[29] = fieldSelection;
|
|
2658
|
+
$[30] = t6;
|
|
2659
|
+
$[31] = t7;
|
|
2660
|
+
} else t7 = $[31];
|
|
2661
|
+
const t8 = t7;
|
|
2662
|
+
let t9;
|
|
2663
|
+
if ($[32] !== collectionTitle || $[33] !== fieldId || $[34] !== placeholderOverlay || $[35] !== t8) {
|
|
2664
|
+
t9 = /* @__PURE__ */ jsxs(ReferencePlaceholder, {
|
|
2665
|
+
fieldId,
|
|
2666
|
+
fieldSelection: t8,
|
|
2667
|
+
"data-camox-field-id": fieldId,
|
|
2668
|
+
"data-camox-overlay-mode": "reference",
|
|
2669
|
+
...placeholderOverlay,
|
|
2670
|
+
children: ["Add ", collectionTitle]
|
|
2671
|
+
});
|
|
2672
|
+
$[32] = collectionTitle;
|
|
2673
|
+
$[33] = fieldId;
|
|
2674
|
+
$[34] = placeholderOverlay;
|
|
2675
|
+
$[35] = t8;
|
|
2676
|
+
$[36] = t9;
|
|
2677
|
+
} else t9 = $[36];
|
|
2678
|
+
t5 = t9;
|
|
2679
|
+
break bb0;
|
|
2680
|
+
}
|
|
2681
|
+
let t6;
|
|
2682
|
+
if ($[37] !== block || $[38] !== children || $[39] !== field || $[40] !== fieldName || $[41] !== listHovered || $[42] !== owner) {
|
|
2683
|
+
t6 = (record) => /* @__PURE__ */ jsx(ListedRecord, {
|
|
2684
|
+
block,
|
|
2685
|
+
owner,
|
|
2686
|
+
field,
|
|
2687
|
+
fieldName,
|
|
2688
|
+
record,
|
|
2689
|
+
listHovered,
|
|
2690
|
+
children
|
|
2691
|
+
}, record.id);
|
|
2692
|
+
$[37] = block;
|
|
2693
|
+
$[38] = children;
|
|
2694
|
+
$[39] = field;
|
|
2695
|
+
$[40] = fieldName;
|
|
2696
|
+
$[41] = listHovered;
|
|
2697
|
+
$[42] = owner;
|
|
2698
|
+
$[43] = t6;
|
|
2699
|
+
} else t6 = $[43];
|
|
2700
|
+
t4 = records.map(t6);
|
|
2701
|
+
}
|
|
2702
|
+
$[11] = block;
|
|
2703
|
+
$[12] = children;
|
|
2704
|
+
$[13] = collectionTitle;
|
|
2705
|
+
$[14] = editable;
|
|
2706
|
+
$[15] = field;
|
|
2707
|
+
$[16] = fieldId;
|
|
2708
|
+
$[17] = fieldName;
|
|
2709
|
+
$[18] = fieldSelection;
|
|
2710
|
+
$[19] = ids;
|
|
2711
|
+
$[20] = listHovered;
|
|
2712
|
+
$[21] = owner;
|
|
2713
|
+
$[22] = placeholderOverlay;
|
|
2714
|
+
$[23] = queryBacked;
|
|
2715
|
+
$[24] = recordsMap;
|
|
2716
|
+
$[25] = t4;
|
|
2717
|
+
$[26] = t5;
|
|
2718
|
+
} else {
|
|
2719
|
+
t4 = $[25];
|
|
2720
|
+
t5 = $[26];
|
|
2721
|
+
}
|
|
2722
|
+
if (t5 !== Symbol.for("react.early_return_sentinel")) return t5;
|
|
2723
|
+
return t4;
|
|
2724
|
+
};
|
|
2725
|
+
const Detached = (t0) => {
|
|
2726
|
+
const $ = c(30);
|
|
1527
2727
|
const { children } = t0;
|
|
1528
2728
|
const ctx = React.use(Context);
|
|
1529
2729
|
if (!ctx) throw new Error("Detached must be used within a Block Component");
|
|
1530
2730
|
const { blockId, mode, isHovered, setIsHovered } = ctx;
|
|
1531
2731
|
const isContentEditable = useIsEditable(mode);
|
|
1532
2732
|
const { window: iframeWindow } = useFrame();
|
|
1533
|
-
const selection =
|
|
1534
|
-
const isAddBlockSidebarOpen = useSelector(previewStore, _temp9);
|
|
2733
|
+
const selection = usePreviewTargetSelection();
|
|
1535
2734
|
const selectTarget = usePreviewSelection();
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
if ($[1] !== t1) {
|
|
1541
|
-
t2 = { blockId: t1 };
|
|
2735
|
+
let t1;
|
|
2736
|
+
if ($[0] !== selection) {
|
|
2737
|
+
t1 = selectionBlockId(selection);
|
|
2738
|
+
$[0] = selection;
|
|
1542
2739
|
$[1] = t1;
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
const
|
|
2740
|
+
} else t1 = $[1];
|
|
2741
|
+
const overlayState = useOverlayState(isHovered, t1 === blockId);
|
|
2742
|
+
const t2 = String(blockId);
|
|
1546
2743
|
let t3;
|
|
2744
|
+
if ($[2] !== t2) {
|
|
2745
|
+
t3 = { blockId: t2 };
|
|
2746
|
+
$[2] = t2;
|
|
2747
|
+
$[3] = t3;
|
|
2748
|
+
} else t3 = $[3];
|
|
2749
|
+
const isHoveredFromSidebar = useOverlayMessage(iframeWindow, isContentEditable, "CAMOX_HOVER_BLOCK", "CAMOX_HOVER_BLOCK_END", t3);
|
|
1547
2750
|
let t4;
|
|
1548
|
-
|
|
1549
|
-
|
|
2751
|
+
let t5;
|
|
2752
|
+
if ($[4] !== isHoveredFromSidebar || $[5] !== setIsHovered) {
|
|
2753
|
+
t4 = () => {
|
|
1550
2754
|
setIsHovered(isHoveredFromSidebar);
|
|
1551
2755
|
};
|
|
1552
|
-
|
|
1553
|
-
$[
|
|
1554
|
-
$[
|
|
1555
|
-
$[5] = t3;
|
|
2756
|
+
t5 = [isHoveredFromSidebar, setIsHovered];
|
|
2757
|
+
$[4] = isHoveredFromSidebar;
|
|
2758
|
+
$[5] = setIsHovered;
|
|
1556
2759
|
$[6] = t4;
|
|
2760
|
+
$[7] = t5;
|
|
1557
2761
|
} else {
|
|
1558
|
-
t3 = $[5];
|
|
1559
2762
|
t4 = $[6];
|
|
2763
|
+
t5 = $[7];
|
|
1560
2764
|
}
|
|
1561
|
-
React.useEffect(
|
|
1562
|
-
const shouldShowOverlay = isContentEditable && (overlayState["data-camox-hovered"] || overlayState["data-camox-focused"])
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
t5 = (e) => {
|
|
2765
|
+
React.useEffect(t4, t5);
|
|
2766
|
+
const shouldShowOverlay = isContentEditable && (overlayState["data-camox-hovered"] || overlayState["data-camox-focused"]);
|
|
2767
|
+
let t6;
|
|
2768
|
+
if ($[8] !== blockId || $[9] !== isContentEditable || $[10] !== selectTarget) {
|
|
2769
|
+
t6 = (e) => {
|
|
1567
2770
|
if (!isContentEditable) return;
|
|
1568
2771
|
const target = e.target;
|
|
1569
2772
|
if (target.closest("[data-camox-field-id]")) return;
|
|
1570
|
-
if (
|
|
1571
|
-
if (target.closest("[data-camox-block-id], [data-camox-comment-block-id]") !== e.currentTarget) return;
|
|
2773
|
+
if (target.closest("[data-camox-block-id]") !== e.currentTarget) return;
|
|
1572
2774
|
selectTarget({
|
|
1573
2775
|
type: "block",
|
|
1574
2776
|
blockId
|
|
1575
|
-
}
|
|
1576
|
-
};
|
|
1577
|
-
$[7] = blockId;
|
|
1578
|
-
$[8] = isContentEditable;
|
|
1579
|
-
$[9] = selectTarget;
|
|
1580
|
-
$[10] = t5;
|
|
1581
|
-
} else t5 = $[10];
|
|
1582
|
-
const handleClick = t5;
|
|
1583
|
-
let t6;
|
|
1584
|
-
if ($[11] !== isContentEditable || $[12] !== setIsHovered) {
|
|
1585
|
-
t6 = () => {
|
|
1586
|
-
if (isContentEditable) setIsHovered(true);
|
|
2777
|
+
});
|
|
1587
2778
|
};
|
|
1588
|
-
$[
|
|
1589
|
-
$[
|
|
1590
|
-
$[
|
|
1591
|
-
|
|
1592
|
-
|
|
2779
|
+
$[8] = blockId;
|
|
2780
|
+
$[9] = isContentEditable;
|
|
2781
|
+
$[10] = selectTarget;
|
|
2782
|
+
$[11] = t6;
|
|
2783
|
+
} else t6 = $[11];
|
|
2784
|
+
const handleClick = t6;
|
|
1593
2785
|
let t7;
|
|
1594
|
-
if ($[
|
|
2786
|
+
if ($[12] !== isContentEditable || $[13] !== setIsHovered) {
|
|
1595
2787
|
t7 = () => {
|
|
2788
|
+
if (isContentEditable) setIsHovered(true);
|
|
2789
|
+
};
|
|
2790
|
+
$[12] = isContentEditable;
|
|
2791
|
+
$[13] = setIsHovered;
|
|
2792
|
+
$[14] = t7;
|
|
2793
|
+
} else t7 = $[14];
|
|
2794
|
+
const handleMouseEnter = t7;
|
|
2795
|
+
let t8;
|
|
2796
|
+
if ($[15] !== isContentEditable || $[16] !== setIsHovered) {
|
|
2797
|
+
t8 = () => {
|
|
1596
2798
|
if (isContentEditable) setIsHovered(false);
|
|
1597
2799
|
};
|
|
1598
|
-
$[
|
|
1599
|
-
$[
|
|
1600
|
-
$[
|
|
1601
|
-
} else
|
|
1602
|
-
const handleMouseLeave =
|
|
1603
|
-
const
|
|
1604
|
-
const t8 = isContentEditable ? blockId : void 0;
|
|
1605
|
-
const t9 = shouldHideForAddBlockSidebar ? 0 : 1;
|
|
2800
|
+
$[15] = isContentEditable;
|
|
2801
|
+
$[16] = setIsHovered;
|
|
2802
|
+
$[17] = t8;
|
|
2803
|
+
} else t8 = $[17];
|
|
2804
|
+
const handleMouseLeave = t8;
|
|
2805
|
+
const t9 = isContentEditable ? blockId : void 0;
|
|
1606
2806
|
let t10;
|
|
1607
|
-
if ($[
|
|
1608
|
-
t10 =
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
2807
|
+
if ($[18] !== overlayState || $[19] !== shouldShowOverlay) {
|
|
2808
|
+
t10 = shouldShowOverlay ? overlayState : {};
|
|
2809
|
+
$[18] = overlayState;
|
|
2810
|
+
$[19] = shouldShowOverlay;
|
|
2811
|
+
$[20] = t10;
|
|
2812
|
+
} else t10 = $[20];
|
|
2813
|
+
let t11;
|
|
2814
|
+
if ($[21] !== children || $[22] !== handleClick || $[23] !== handleMouseEnter || $[24] !== handleMouseLeave || $[25] !== t10 || $[26] !== t9) {
|
|
2815
|
+
t11 = children({
|
|
2816
|
+
"data-camox-block-id": t9,
|
|
2817
|
+
...t10,
|
|
2818
|
+
"data-camox-overlay-mode": options.synced ? "synced" : void 0,
|
|
1612
2819
|
onClickCapture: handleClick,
|
|
1613
2820
|
onMouseEnter: handleMouseEnter,
|
|
1614
2821
|
onMouseLeave: handleMouseLeave
|
|
1615
2822
|
});
|
|
1616
|
-
$[
|
|
1617
|
-
$[
|
|
1618
|
-
$[
|
|
1619
|
-
$[
|
|
1620
|
-
$[
|
|
1621
|
-
$[
|
|
1622
|
-
$[
|
|
1623
|
-
} else
|
|
1624
|
-
let t11;
|
|
1625
|
-
if ($[24] !== blockId || $[25] !== container || $[26] !== overlayState || $[27] !== shouldShowOverlay) {
|
|
1626
|
-
t11 = container && createPortal(/* @__PURE__ */ jsx(Fragment, { children: shouldShowOverlay && /* @__PURE__ */ jsx("div", {
|
|
1627
|
-
"data-camox-block-id": blockId,
|
|
1628
|
-
"data-camox-detached": true,
|
|
1629
|
-
...overlayState,
|
|
1630
|
-
"data-camox-overlay-mode": options.synced ? "synced" : void 0,
|
|
1631
|
-
style: {
|
|
1632
|
-
position: "absolute",
|
|
1633
|
-
pointerEvents: "none",
|
|
1634
|
-
zIndex: 10
|
|
1635
|
-
}
|
|
1636
|
-
}) }), container);
|
|
1637
|
-
$[24] = blockId;
|
|
1638
|
-
$[25] = container;
|
|
1639
|
-
$[26] = overlayState;
|
|
1640
|
-
$[27] = shouldShowOverlay;
|
|
1641
|
-
$[28] = t11;
|
|
1642
|
-
} else t11 = $[28];
|
|
2823
|
+
$[21] = children;
|
|
2824
|
+
$[22] = handleClick;
|
|
2825
|
+
$[23] = handleMouseEnter;
|
|
2826
|
+
$[24] = handleMouseLeave;
|
|
2827
|
+
$[25] = t10;
|
|
2828
|
+
$[26] = t9;
|
|
2829
|
+
$[27] = t11;
|
|
2830
|
+
} else t11 = $[27];
|
|
1643
2831
|
let t12;
|
|
1644
|
-
if ($[
|
|
1645
|
-
t12 = /* @__PURE__ */
|
|
1646
|
-
$[
|
|
1647
|
-
$[
|
|
1648
|
-
|
|
1649
|
-
} else t12 = $[31];
|
|
2832
|
+
if ($[28] !== t11) {
|
|
2833
|
+
t12 = /* @__PURE__ */ jsx(Fragment, { children: t11 });
|
|
2834
|
+
$[28] = t11;
|
|
2835
|
+
$[29] = t12;
|
|
2836
|
+
} else t12 = $[29];
|
|
1650
2837
|
return t12;
|
|
1651
2838
|
};
|
|
1652
2839
|
return {
|
|
1653
2840
|
Detached,
|
|
2841
|
+
Icon,
|
|
1654
2842
|
Field,
|
|
1655
2843
|
Embed,
|
|
2844
|
+
Artifact,
|
|
1656
2845
|
Link,
|
|
1657
2846
|
Image,
|
|
1658
2847
|
File,
|
|
1659
2848
|
ImageList,
|
|
1660
2849
|
FileList,
|
|
1661
2850
|
Repeater,
|
|
2851
|
+
Reference,
|
|
2852
|
+
ReferenceList,
|
|
1662
2853
|
useSetting,
|
|
1663
2854
|
_internal: {
|
|
1664
|
-
/**
|
|
1665
|
-
* The react component to be used at the page level when mapping on blocks content.
|
|
1666
|
-
* It exposes context that will be consumed by the Field component, and provides visual editing
|
|
1667
|
-
* capabilities (e.g. delete and reorder blocks).
|
|
1668
|
-
*/
|
|
1669
2855
|
Component: BlockComponent,
|
|
2856
|
+
LayoutItem,
|
|
1670
2857
|
id: options.id,
|
|
1671
2858
|
title: options.title,
|
|
1672
2859
|
description: options.description,
|
|
@@ -1698,7 +2885,7 @@ function createEditableBlock(options) {
|
|
|
1698
2885
|
return { ...settingsDefaults };
|
|
1699
2886
|
},
|
|
1700
2887
|
getPeekBundle: () => {
|
|
1701
|
-
const PEEK_BLOCK_ID =
|
|
2888
|
+
const PEEK_BLOCK_ID = "peek";
|
|
1702
2889
|
const counter = { value: 0 };
|
|
1703
2890
|
const allItems = [];
|
|
1704
2891
|
const content = { ...contentDefaults };
|
|
@@ -1711,7 +2898,7 @@ function createEditableBlock(options) {
|
|
|
1711
2898
|
type: options.id,
|
|
1712
2899
|
content,
|
|
1713
2900
|
settings: settingsDefaults,
|
|
1714
|
-
|
|
2901
|
+
slot: null,
|
|
1715
2902
|
summary: "",
|
|
1716
2903
|
position: "",
|
|
1717
2904
|
createdAt: 0,
|
|
@@ -1730,27 +2917,22 @@ function _temp(l) {
|
|
|
1730
2917
|
function _temp2(l) {
|
|
1731
2918
|
return l.pathname;
|
|
1732
2919
|
}
|
|
1733
|
-
function _temp3(
|
|
2920
|
+
function _temp3(l) {
|
|
2921
|
+
return l.pathname;
|
|
2922
|
+
}
|
|
2923
|
+
function _temp4(e_0) {
|
|
1734
2924
|
return e_0.preventDefault();
|
|
1735
2925
|
}
|
|
1736
|
-
function
|
|
2926
|
+
function _temp5(e_1) {
|
|
1737
2927
|
if (e_1.key === "Escape") e_1.target.blur();
|
|
1738
2928
|
}
|
|
1739
|
-
function
|
|
1740
|
-
return
|
|
1741
|
-
}
|
|
1742
|
-
function _temp6(state_0) {
|
|
1743
|
-
return state_0.context.isAddBlockSidebarOpen;
|
|
2929
|
+
function _temp6(event) {
|
|
2930
|
+
return event.preventDefault();
|
|
1744
2931
|
}
|
|
1745
2932
|
function _temp7(item) {
|
|
1746
2933
|
return item.content;
|
|
1747
2934
|
}
|
|
1748
|
-
function _temp8(
|
|
1749
|
-
return state.context.selection;
|
|
1750
|
-
}
|
|
1751
|
-
function _temp9(state_0) {
|
|
1752
|
-
return state_0.context.isAddBlockSidebarOpen;
|
|
1753
|
-
}
|
|
2935
|
+
function _temp8() {}
|
|
1754
2936
|
|
|
1755
2937
|
//#endregion
|
|
1756
2938
|
export { createEditableBlock };
|