@riverbankcms/sdk 0.147.0 → 0.149.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/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DBKln68M.mjs} +301 -205
- package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-DpRX4Mum.mjs} +68 -63
- package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
- package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +1247 -541
- package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +209720 -204978
- package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
- package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
- package/dist/_dts/api/src/accountApi.d.ts +1 -1
- package/dist/_dts/api/src/admin.d.ts +22 -22
- package/dist/_dts/api/src/aiPatch.d.ts +2 -2
- package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
- package/dist/_dts/api/src/analytics.d.ts +2 -2
- package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
- package/dist/_dts/api/src/auth.d.ts +10 -10
- package/dist/_dts/api/src/availability.d.ts +6 -6
- package/dist/_dts/api/src/billing.d.ts +42 -15
- package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
- package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
- package/dist/_dts/api/src/blocks.d.ts +15 -14
- package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
- package/dist/_dts/api/src/bookingConfig.d.ts +33 -50
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
- package/dist/_dts/api/src/bookingOperations.d.ts +9 -11
- package/dist/_dts/api/src/bookingRecords.d.ts +16 -11
- package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
- package/dist/_dts/api/src/bookings.d.ts +7 -7
- package/dist/_dts/api/src/calendar.d.ts +9 -9
- package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
- package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -8
- package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
- package/dist/_dts/api/src/common/envelope.d.ts +2 -2
- package/dist/_dts/api/src/content-editor.d.ts +2 -2
- package/dist/_dts/api/src/contentEntries.d.ts +17 -48
- package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
- package/dist/_dts/api/src/contentTypes.d.ts +11 -11
- package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
- package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
- package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
- package/dist/_dts/api/src/domains.d.ts +16 -16
- package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
- package/dist/_dts/api/src/emailSettings.d.ts +4 -4
- package/dist/_dts/api/src/endpoints.d.ts +135 -51
- package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
- package/dist/_dts/api/src/eventManagementContracts.d.ts +29 -7
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
- package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
- package/dist/_dts/api/src/footerSettings.d.ts +6 -6
- package/dist/_dts/api/src/index.d.ts +8 -7
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/navigation.d.ts +5 -5
- package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
- package/dist/_dts/api/src/pages.d.ts +7 -7
- package/dist/_dts/api/src/performance.d.ts +1 -1
- package/dist/_dts/api/src/public/index.d.ts +1 -1
- package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +4 -2
- package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +6 -29
- package/dist/_dts/api/src/redirects.d.ts +3 -3
- package/dist/_dts/api/src/request.d.ts +11 -2
- package/dist/_dts/api/src/resources.d.ts +4 -4
- package/dist/_dts/api/src/routes.d.ts +8 -3
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -2
- package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
- package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
- package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +9 -2
- package/dist/_dts/api/src/seo.d.ts +4 -4
- package/dist/_dts/api/src/services.d.ts +4 -4
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
- package/dist/_dts/api/src/siteMembers.d.ts +10 -10
- package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
- package/dist/_dts/api/src/siteOperations.d.ts +6 -2
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
- package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
- package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
- package/dist/_dts/billing/src/components/index.d.ts +25 -40
- package/dist/_dts/billing/src/membership/index.d.ts +1 -3
- package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
- package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
- package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
- package/dist/_dts/billing/src/plans/types.d.ts +5 -15
- package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
- package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
- package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
- package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
- package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
- package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
- package/dist/_dts/blocks/src/client/events.d.ts +3 -0
- package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
- package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -14
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
- package/dist/_dts/blocks/src/portal/types.d.ts +9 -8
- package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +28 -28
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
- package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
- package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -2
- package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +72 -12
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +36 -6
- package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +29 -29
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +54 -6
- package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
- package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
- package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
- package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
- package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
- package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
- package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/index.d.ts +1 -3
- package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
- package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
- package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
- package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
- package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +3 -1
- package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
- package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
- package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
- package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
- package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
- package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
- package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
- package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
- package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
- package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
- package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
- package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
- package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
- package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
- package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
- package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
- package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
- package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
- package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
- package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
- package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
- package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
- package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
- package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
- package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
- package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
- package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
- package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
- package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
- package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
- package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
- package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
- package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
- package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
- package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
- package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
- package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
- package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
- package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
- package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
- package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
- package/dist/_dts/content-editor/src/index.d.ts +26 -7
- package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
- package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
- package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
- package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
- package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
- package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
- package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
- package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
- package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
- package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
- package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
- package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
- package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
- package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
- package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
- package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
- package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
- package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
- package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
- package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
- package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
- package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
- package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
- package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
- package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
- package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
- package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
- package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
- package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
- package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
- package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
- package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
- package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
- package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
- package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
- package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
- package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
- package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
- package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
- package/dist/_dts/content-model/src/types.d.ts +0 -1
- package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
- package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
- package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
- package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
- package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
- package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
- package/dist/_dts/core/src/branded.d.ts +15 -0
- package/dist/_dts/core/src/currency-format.d.ts +8 -2
- package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
- package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
- package/dist/_dts/core/src/edit-lease.d.ts +60 -0
- package/dist/_dts/core/src/editor-state.d.ts +38 -13
- package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
- package/dist/_dts/core/src/html-entities.d.ts +6 -0
- package/dist/_dts/core/src/index.d.ts +7 -0
- package/dist/_dts/core/src/uuid.d.ts +7 -5
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +456 -189
- package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
- package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
- package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
- package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
- package/dist/_dts/editor/src/index.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
- package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
- package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
- package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
- package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
- package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
- package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
- package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
- package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
- package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
- package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
- package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
- package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
- package/dist/_dts/media-editor/src/context.d.ts +1 -1
- package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
- package/dist/_dts/media-editor/src/index.d.ts +2 -0
- package/dist/_dts/media-editor/src/provider.d.ts +3 -2
- package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
- package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
- package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
- package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
- package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +23 -14
- package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
- package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
- package/dist/_dts/preview-next/src/constants.d.ts +4 -0
- package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
- package/dist/_dts/realtime/src/client.d.ts +3 -0
- package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
- package/dist/_dts/realtime/src/drafts.d.ts +210 -0
- package/dist/_dts/realtime/src/index.d.ts +3 -0
- package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
- package/dist/_dts/realtime/src/types.d.ts +113 -0
- package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
- package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
- package/dist/_dts/ui/src/color-picker.d.ts +1 -1
- package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
- package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-Cr3EeTP5.mjs} +504 -163
- package/dist/client/DemoBookingPortalAccess-BFGB1Fay.mjs +344 -0
- package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
- package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
- package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
- package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
- package/dist/client/{accordion-CoT5g7zo.mjs → accordion-DXWIfT3T.mjs} +1 -1
- package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-CjZgHNvv.mjs} +216 -63
- package/dist/client/bookings.mjs +1187 -692
- package/dist/client/{carousel-DtNYWFd3.mjs → carousel-DSLikmvZ.mjs} +1 -1
- package/dist/client/{cart-z4qZih1Y.mjs → cart-HDjWReFt.mjs} +3 -3
- package/dist/client/{checkout-DpL7euFH.mjs → checkout-CUvRZA3W.mjs} +3 -3
- package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
- package/dist/client/client.mjs +2711 -1684
- package/dist/client/{context-C8TinPJc.mjs → context-DFmaZa-Q.mjs} +4 -3
- package/dist/client/{dates-vwwxTeB0.mjs → dates-BBep1JnF.mjs} +56 -11
- package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
- package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
- package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
- package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BMt5snal.mjs} +4 -4
- package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-O6ZxHfOb.mjs} +422 -570
- package/dist/client/{form-Qf6qTbos.mjs → form-DFa1D8vt.mjs} +3 -3
- package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-CmjHLR-N.mjs} +3 -3
- package/dist/client/hooks.mjs +414 -182
- package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BXKP_lGh.mjs} +3 -3
- package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
- package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
- package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-KEAEsibq.mjs} +1 -1
- package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
- package/dist/client/{productList-zaapKSl-.mjs → productList-D91V0sYa.mjs} +3 -3
- package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-DZd6RJeA.mjs} +244 -94
- package/dist/client/rendering/client.mjs +2656 -1705
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +3430 -2352
- package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
- package/dist/client/{shop-mktkXvbV.mjs → shop-4F2jLQPI.mjs} +131 -85
- package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-BbfCJjB3.mjs} +25 -13
- package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
- package/dist/client/{shopShared-TqExh235.mjs → shopShared-DlONJt0T.mjs} +4 -4
- package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-COYyL3m7.mjs} +32 -17
- package/dist/preview-next/before-render.mjs +207 -105
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/constants.mjs +5 -1
- package/dist/preview-next/index.mjs +5 -1
- package/dist/preview-next/keepAlive.mjs +341 -165
- package/dist/preview-next/middleware.mjs +207 -105
- package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BBmV7UsW.mjs} +243 -112
- package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-CwvFFjB-.mjs} +2 -2
- package/dist/{separator-C9qDP95Z.mjs → separator-ByL72zUT.mjs} +1 -1
- package/dist/server/components.mjs +1839 -1475
- package/dist/server/config-validation.mjs +381 -166
- package/dist/server/config.mjs +381 -166
- package/dist/server/data.mjs +381 -166
- package/dist/server/index.mjs +214 -110
- package/dist/server/next.mjs +663 -351
- package/dist/server/page-converter.mjs +198 -79
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1536 -1169
- package/dist/server/rendering.mjs +2432 -2068
- package/dist/server/routing.mjs +456 -173
- package/dist/server/server.mjs +447 -267
- package/package.json +1 -1
- package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
- package/dist/_dts/billing/src/plans/display.d.ts +0 -15
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
- package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
- package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
- package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
- package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
- package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
- package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
- package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
- package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
- package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
- package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
- package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
- package/dist/_dts/content-editor/src/types.d.ts +0 -44
- package/dist/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
|
@@ -1,20 +1,39 @@
|
|
|
1
|
+
export { canWriteLinkedEntry } from './ui/stores/linkedEntryLeaseStore';
|
|
2
|
+
export { LinkedEntryLeaseBanner } from './controller/LinkedEntryLeaseBanner';
|
|
1
3
|
export * from './registry';
|
|
4
|
+
export { getEditorClientId } from './controller/editorClientId';
|
|
5
|
+
export { useEditLeaseActions, type EditLeaseControllerActions, type EditorLeaseConfig, } from './controller/EditLeaseController';
|
|
6
|
+
export { EditLeaseDiscardedNotice, EditLeaseModal, EditorWriteGate, EditorWriteSurface, } from './controller/EditorWriteGate';
|
|
7
|
+
export { planLeaseNotice, type LeaseNotice, type LeaseNoticeAction } from './controller/editLeaseNotice';
|
|
8
|
+
export { VIEWING_PARTICIPATION, type EditorLeaseParticipation, } from './controller/editorLeaseParticipation';
|
|
9
|
+
export { canEditorWrite, unmanagedSurfaceEditability } from './controller/editorEditability';
|
|
10
|
+
export { liveDraftRole, type LiveDraftsClient, type LiveDraftsConfig, type LiveDraftRole, } from './liveDrafts/useLiveDrafts';
|
|
11
|
+
export { remoteDraftValues, renderedFieldChanges, renderSourceFor, resolveRenderedValues, type RemoteDraftEntry, type RenderSource, type RemoteDraftOverlay, } from './liveDrafts/remoteDraftOverlay';
|
|
12
|
+
export { activeLinkedSaveHandover, planLinkedSaveHandoverRetention, type LinkedSaveHandover, type LinkedSaveHandovers, type RenderedLinkedRevisions, } from './liveDrafts/linkedSaveHandovers';
|
|
13
|
+
export { useRetentionTicks } from './liveDrafts/useRetentionTicks';
|
|
14
|
+
export type { EditorEditability } from './controller/editorEditability';
|
|
2
15
|
export * from './services';
|
|
3
16
|
export { useDebouncedLatestSave, type DebouncedLatestSaveConfig, type DebouncedLatestSaveHandle, } from './hooks/useDebouncedLatestSave';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
17
|
+
export { useAutosaveStatus } from './hooks/useAutosaveStatus';
|
|
18
|
+
export { selectAutosaveStatus } from './sync/schedulerValues';
|
|
19
|
+
export { lifecycleOutcomeMessage, requireSavedDraft } from './sync/lifecycleFailure';
|
|
20
|
+
export type { LifecycleFailure, LifecycleOutcome } from './ui/stores/types';
|
|
21
|
+
export type { RouteWrites, RouteWriteOperation } from './controller/routeWrites';
|
|
22
|
+
export { documentSince, type DocumentSince } from './sync/runLifecycle';
|
|
23
|
+
export type { FlushPolicy, FlushResult } from './sync/sendPlanning';
|
|
24
|
+
export { baselineRevisionOf, displayedValues, hasOutstandingRequest, isEdited, syncStateOf, valueStatus, type ValueStatus, } from './sync/valueSync';
|
|
6
25
|
export { useBlockAutosave, type BlockAutosaveOptions, } from './hooks/useBlockAutosave';
|
|
7
|
-
export {
|
|
26
|
+
export { useLinkedEntryAutosave, type LinkedEntryAutosaveOptions, type LinkedEntrySaveResult, type PendingLinkedEntrySave, } from './hooks/useLinkedEntryAutosave';
|
|
8
27
|
export { unsafeAsLinkedContentEntryId, unsafeAsLinkedContentTypeKey, type LinkedContentEntryId, type LinkedContentTypeKey, } from './linkedEntries/domain';
|
|
9
28
|
export { useEntryActions, type EntryActionsOptions, } from './hooks/useEntryActions';
|
|
10
29
|
export { useReactiveToolbar } from './hooks/useReactiveToolbar';
|
|
30
|
+
export { canDiscardDraft } from './controller/deriveEditorUnpublishedState';
|
|
11
31
|
export { isInvalidSaveability, selectHasInvalidBlocks, } from './hooks/invalidBlockSelectors';
|
|
12
32
|
export { useHistoryShortcuts } from './hooks/useHistoryShortcuts';
|
|
13
33
|
export { validateAllBlocks, type BlockValidationError, type PublishEditorTarget, } from './hooks/validateBlocksForPublish';
|
|
14
34
|
export type { BlockedPublishPlan, PublishValidationDiagnostic, } from './hooks/blockedPublishPlan';
|
|
15
|
-
export { EntryControllerProvider, useEntryEditorController, useEntryController,
|
|
16
|
-
export type { EntryDraftBlockPatch, EntryDraftCompositePatch, EntryDraftsActions, EntryDraftsSlice, } from './controller/EntryControllerProvider';
|
|
17
|
-
export type { EntryEditorDriver } from './controller/driver';
|
|
35
|
+
export { EntryControllerProvider, useEntryEditorController, useEntryController, } from './controller/EntryControllerProvider';
|
|
36
|
+
export type { EntryDraftBlockPatch, EntryDraftCompositePatch, EntryDraftsActions, EntryDraftsSlice, EntryActions, } from './controller/EntryControllerProvider';
|
|
18
37
|
export { EditableBlockProvider, useBlockData, } from './components/EditableBlockProvider';
|
|
19
38
|
export { ContentFieldsForm, type ContentFieldsFormProps, } from './components/ContentFieldsForm';
|
|
20
39
|
export { useUISelector } from './ui/useUISelector';
|
|
@@ -39,4 +58,4 @@ export { buildFooterBlocksUpdatePayload, createInitialFooterBlocksEditorState, f
|
|
|
39
58
|
export { asContentEntrySnapshotSource, createContentEntriesDefinitionPlan, createPageSnapshot, createPagesDefinitionPlan, createSnapshotDefaults, getDefaultEntityLabel, mapPageRecordToSnapshot, type ContentEntriesDefinitionPlanOptions, type ContentEntryDefinitionPlan, type DefinitionServices, type PageEntrySnapshot, type PagesDefinitionPlanOptions, type SnapshotDefaults, } from './definitions/factory';
|
|
40
59
|
export { canRedoHistory, canUndoHistory, createHistoryState, unsafeAsEditorBlockId, pushHistoryEntry, redoHistory, replaceHistoryPresent, undoHistory, type HistoryState, type EditorBlockId, } from './ui/editorHistory';
|
|
41
60
|
export { classifyHistoryShortcut, isNativeHistoryTarget, type HistoryShortcutCommand, } from './historyShortcuts';
|
|
42
|
-
export type {
|
|
61
|
+
export type { EditLeaseChangeSubscription } from './hooks/useEditLease';
|
|
@@ -6,3 +6,15 @@ export type LinkedContentTypeKey = string & {
|
|
|
6
6
|
};
|
|
7
7
|
export declare function unsafeAsLinkedContentEntryId(value: string): LinkedContentEntryId;
|
|
8
8
|
export declare function unsafeAsLinkedContentTypeKey(value: string): LinkedContentTypeKey;
|
|
9
|
+
export type LinkedEntryOpenTarget = {
|
|
10
|
+
entryId: string;
|
|
11
|
+
contentTypeKey: string;
|
|
12
|
+
contentTypeLabel: string;
|
|
13
|
+
title: string;
|
|
14
|
+
optimisticHash?: string | null;
|
|
15
|
+
content: Record<string, unknown>;
|
|
16
|
+
contentType: {
|
|
17
|
+
titleField?: string | null;
|
|
18
|
+
fields: readonly Record<string, unknown>[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ValueRefresh } from '../ui/editorRefresh';
|
|
2
|
+
import { type EditorCommand, type EditorHistorySnapshot, type EditorLinkedEntrySnapshot, type EditorValueKey } from '../ui/editorHistory';
|
|
3
|
+
/** A reference to the document itself is another view of its existing content. */
|
|
4
|
+
export declare function linkedEntrySnapshot(snapshot: EditorHistorySnapshot, entryId: string, ownerEntryId?: string): EditorLinkedEntrySnapshot | null;
|
|
5
|
+
/** Sync events for the document's own entry apply to its content. */
|
|
6
|
+
export declare function routeValueKey(key: EditorValueKey, ownerEntryId?: string): EditorValueKey;
|
|
7
|
+
/** A server read of the document's own entry refreshes its content. */
|
|
8
|
+
export declare function routeRefresh(refresh: ValueRefresh, ownerEntryId?: string): ValueRefresh;
|
|
9
|
+
export declare function routeLinkedEntryCommand(command: EditorCommand, ownerEntryId?: string): EditorCommand;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type DraftItem, type DraftTarget, type DroppedDraftItem } from '../../../realtime/src/index';
|
|
2
|
+
import type { EditorHistorySnapshot } from '../ui/editorHistory';
|
|
3
|
+
/** The inputs of one projection: the editor state, what was last sent, and who may write what. */
|
|
4
|
+
export type DraftProjectionInput = Readonly<{
|
|
5
|
+
snapshot: EditorHistorySnapshot;
|
|
6
|
+
previouslySent: readonly DraftItem[];
|
|
7
|
+
contentOwnerEntryId?: string;
|
|
8
|
+
/** Per-item write authority (`canWriteDraftTarget`): a tab only speaks for what it may write. */
|
|
9
|
+
canWrite: (target: DraftTarget) => boolean;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Pure projection of the editor state into the items to stream.
|
|
13
|
+
*
|
|
14
|
+
* - An item this tab may not write (a linked entry whose own lease moved elsewhere)
|
|
15
|
+
* is omitted before anything else, so it is never sent as unsaved or as saved. A
|
|
16
|
+
* viewer treats the omission as that item being gone and drops it.
|
|
17
|
+
* - Every value the person has edited is sent as `unsaved` with what it shows.
|
|
18
|
+
* - A value that was sent as `unsaved` last time and is now pristine (saved,
|
|
19
|
+
* discarded, or undone) is sent once as `saved` with the baseline and its server
|
|
20
|
+
* revision, so a viewer can hand over to its own refreshed baseline without
|
|
21
|
+
* flashing the old value. Without a known revision it is simply omitted.
|
|
22
|
+
*
|
|
23
|
+
* Diffing against what was last *sent* (not last observed) keeps saved markers
|
|
24
|
+
* correct when sends are throttled.
|
|
25
|
+
*/
|
|
26
|
+
export declare function projectDraftItems(input: DraftProjectionInput): DraftItem[];
|
|
27
|
+
/**
|
|
28
|
+
* Why the emitter is considering a send:
|
|
29
|
+
* - `change`: the store changed; send only when the items differ from the last send.
|
|
30
|
+
* - `heartbeat`: keep viewers' unsaved items alive while anything is unsaved.
|
|
31
|
+
* - `sync`: a viewer asked for the current state; always answer.
|
|
32
|
+
*/
|
|
33
|
+
export type DraftPublishReason = 'change' | 'heartbeat' | 'sync';
|
|
34
|
+
/** `dropped` is reported on both outcomes: an oversized item can be dropped on a skip too. */
|
|
35
|
+
export type DraftPublishPlan = Readonly<{
|
|
36
|
+
kind: 'skip';
|
|
37
|
+
dropped: readonly DroppedDraftItem[];
|
|
38
|
+
}> | Readonly<{
|
|
39
|
+
kind: 'send';
|
|
40
|
+
items: readonly DraftItem[];
|
|
41
|
+
dropped: readonly DroppedDraftItem[];
|
|
42
|
+
}>;
|
|
43
|
+
/**
|
|
44
|
+
* What the emitter sends, decided purely: project, keep what fits the message
|
|
45
|
+
* budget, then send or skip by reason. `items` is exactly what goes on the wire,
|
|
46
|
+
* so the emitter keeps it as the next `previouslySent`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function planDraftPublish(input: DraftProjectionInput & Readonly<{
|
|
49
|
+
reason: DraftPublishReason;
|
|
50
|
+
}>): DraftPublishPlan;
|
|
51
|
+
/**
|
|
52
|
+
* The dropped items not already reported, so each oversized item warns once while it
|
|
53
|
+
* stays oversized, and again only if it fits and later outgrows the budget again.
|
|
54
|
+
*/
|
|
55
|
+
export declare function newlyDroppedDraftItems(previouslyDropped: ReadonlySet<string>, dropped: readonly DroppedDraftItem[]): readonly DroppedDraftItem[];
|
|
56
|
+
/**
|
|
57
|
+
* The next sequence number for an emitter. Viewers ignore a seq that isn't newer
|
|
58
|
+
* than the last one from the same origin, and the origin outlives an editor mount,
|
|
59
|
+
* so a new mount starts from the clock rather than from zero.
|
|
60
|
+
*/
|
|
61
|
+
export declare function nextDraftSeq(previous: number, now: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* The server revision of the viewer's own baselines, keyed like the overlay. Built
|
|
64
|
+
* once per retention check rather than once per overlay entry.
|
|
65
|
+
*/
|
|
66
|
+
export declare function baselineRevisions(snapshot: EditorHistorySnapshot): ReadonlyMap<string, string | null>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { BaselineRevision, EditorValueRecord, ValueSync } from '../../../core/src/index';
|
|
2
|
+
import { type LinkedContentEntryId } from '../linkedEntries/domain';
|
|
3
|
+
import type { EditorValueKey } from '../ui/editorSnapshot';
|
|
4
|
+
import { type RetentionPlan, type SavedHandover } from './remoteDraftOverlay';
|
|
5
|
+
/**
|
|
6
|
+
* This tab's accepted linked-entry save, handing over to the rendered data (issue 1553, D).
|
|
7
|
+
* No content is copied: the render reads the record's own baseline while the handover applies.
|
|
8
|
+
*/
|
|
9
|
+
export type LinkedSaveHandover = Readonly<{
|
|
10
|
+
revision: string;
|
|
11
|
+
since: number;
|
|
12
|
+
phase: SavedHandover;
|
|
13
|
+
}>;
|
|
14
|
+
/** Outside history, beside `remoteDrafts`; only the renderer reads it. */
|
|
15
|
+
export type LinkedSaveHandovers = ReadonlyMap<LinkedContentEntryId, LinkedSaveHandover>;
|
|
16
|
+
export declare const EMPTY_LINKED_SAVE_HANDOVERS: LinkedSaveHandovers;
|
|
17
|
+
/** Every rendered occurrence's `optimisticHash` for each linked entry. */
|
|
18
|
+
export type RenderedLinkedRevisions = ReadonlyMap<LinkedContentEntryId, readonly (string | null)[]>;
|
|
19
|
+
/** A later accepted save replaces the entry's earlier handover (row H7). */
|
|
20
|
+
export declare function recordLinkedSaveHandover(handovers: LinkedSaveHandovers, entryId: LinkedContentEntryId, revision: string, since: number): LinkedSaveHandovers;
|
|
21
|
+
/**
|
|
22
|
+
* What an accepted save leaves behind: a linked entry's save, at a known revision, hands
|
|
23
|
+
* over to the rendered data, including a save that lands after a discard (rows H1, H5).
|
|
24
|
+
* Other values render from the store and need no handover.
|
|
25
|
+
*/
|
|
26
|
+
export declare function handoversAfterAcceptedSave(handovers: LinkedSaveHandovers, key: EditorValueKey, revision: BaselineRevision, at: string): LinkedSaveHandovers;
|
|
27
|
+
/**
|
|
28
|
+
* The handover that applies to a record, if any. It holds only while the record is
|
|
29
|
+
* pristine at the saved revision: an edit, a refresh to another baseline or a later
|
|
30
|
+
* save ends it by derivation (rows H3, H4).
|
|
31
|
+
*/
|
|
32
|
+
export declare function activeLinkedSaveHandover(handovers: LinkedSaveHandovers | undefined, entryId: LinkedContentEntryId, sync: ValueSync<EditorValueRecord | null>): LinkedSaveHandover | null;
|
|
33
|
+
/**
|
|
34
|
+
* Local retention (rows H1b, H2): a caught-up handover drops with no refresh; otherwise
|
|
35
|
+
* the shared `decideSavedHandover` timing applies.
|
|
36
|
+
*/
|
|
37
|
+
export declare function planLinkedSaveHandoverRetention(handovers: LinkedSaveHandovers, rendered: RenderedLinkedRevisions, now: number): RetentionPlan<LinkedContentEntryId, LinkedSaveHandover>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { type DraftItem, type DraftStateMessage, type DraftTarget } from '../../../realtime/src/index';
|
|
2
|
+
import { type EditorValueRecord, type ValueSync } from '../../../core/src/index';
|
|
3
|
+
import type { EditorEditability } from '../controller/editorEditability';
|
|
4
|
+
/**
|
|
5
|
+
* A preview tab's read-only overlay of another tab's live drafts (issue 1545).
|
|
6
|
+
* It lives outside history, snapshots, autosave and the lease: nothing here is
|
|
7
|
+
* ever edited, saved or undone, it is only read by the renderer.
|
|
8
|
+
*/
|
|
9
|
+
/** No message from an unsaved item's origin for this long means its editor went away. */
|
|
10
|
+
export declare const UNSAVED_DRAFT_TTL_MS = 15000;
|
|
11
|
+
/** A saved item whose baseline has not caught up by then asks the host for one refresh. */
|
|
12
|
+
export declare const SAVED_DRAFT_REFRESH_AFTER_MS = 10000;
|
|
13
|
+
/** After the refresh, a saved item that still has not matched is dropped. */
|
|
14
|
+
export declare const SAVED_DRAFT_DROP_AFTER_REFRESH_MS = 10000;
|
|
15
|
+
/** Where a saved value's wait for fresh data stands: before or after its one refresh. */
|
|
16
|
+
export type SavedHandover = Readonly<{
|
|
17
|
+
kind: 'awaiting-baseline';
|
|
18
|
+
}> | Readonly<{
|
|
19
|
+
kind: 'refresh-requested';
|
|
20
|
+
at: number;
|
|
21
|
+
}>;
|
|
22
|
+
export type RemoteDraftEntry = Readonly<{
|
|
23
|
+
kind: 'unsaved';
|
|
24
|
+
item: DraftItem;
|
|
25
|
+
origin: string;
|
|
26
|
+
receivedAt: number;
|
|
27
|
+
}> | Readonly<{
|
|
28
|
+
kind: 'saved';
|
|
29
|
+
item: DraftItem;
|
|
30
|
+
origin: string;
|
|
31
|
+
revision: string;
|
|
32
|
+
receivedAt: number;
|
|
33
|
+
handover: SavedHandover;
|
|
34
|
+
}>;
|
|
35
|
+
/** Keyed by `draftItemKey`. */
|
|
36
|
+
export type RemoteDraftOverlay = ReadonlyMap<string, RemoteDraftEntry>;
|
|
37
|
+
export declare const EMPTY_REMOTE_DRAFTS: RemoteDraftOverlay;
|
|
38
|
+
/**
|
|
39
|
+
* Apply an accepted draft-state. It replaces everything unsaved from the same
|
|
40
|
+
* origin: an unsaved item it omits is gone (discarded or undone). Saved items
|
|
41
|
+
* stay until their own retention rule drops them, and other origins are untouched.
|
|
42
|
+
*/
|
|
43
|
+
export declare function applyRemoteDraftState(overlay: RemoteDraftOverlay, message: Pick<DraftStateMessage, 'origin' | 'items'>, now: number): RemoteDraftOverlay;
|
|
44
|
+
export type OverlayRetentionPlan = Readonly<{
|
|
45
|
+
overlay: RemoteDraftOverlay;
|
|
46
|
+
changed: boolean;
|
|
47
|
+
/** Ask the host to refresh its server baselines once. */
|
|
48
|
+
refresh: boolean;
|
|
49
|
+
}>;
|
|
50
|
+
export type SavedHandoverDecision = 'keep' | 'request-refresh' | 'drop';
|
|
51
|
+
/**
|
|
52
|
+
* How long a saved value keeps showing while the data it hands over to catches up
|
|
53
|
+
* (issue 1553, DP5). Shared by a viewer's saved remote drafts and this tab's own
|
|
54
|
+
* linked-entry saves; each caller decides what "caught up" means for its data.
|
|
55
|
+
* - Caught up: drop, so the fresh data shows in the same render.
|
|
56
|
+
* - Not caught up after `SAVED_DRAFT_REFRESH_AFTER_MS`: ask the host for one refresh.
|
|
57
|
+
* - Still not caught up `SAVED_DRAFT_DROP_AFTER_REFRESH_MS` after that: drop.
|
|
58
|
+
*/
|
|
59
|
+
export declare function decideSavedHandover(timing: Readonly<{
|
|
60
|
+
since: number;
|
|
61
|
+
phase: SavedHandover;
|
|
62
|
+
}>, caughtUp: boolean, now: number): SavedHandoverDecision;
|
|
63
|
+
export type RetentionDecision<E> = Readonly<{
|
|
64
|
+
kind: 'keep';
|
|
65
|
+
}> | Readonly<{
|
|
66
|
+
kind: 'drop';
|
|
67
|
+
}> | Readonly<{
|
|
68
|
+
kind: 'request-refresh';
|
|
69
|
+
entry: E;
|
|
70
|
+
}>;
|
|
71
|
+
export type RetentionPlan<K, E> = Readonly<{
|
|
72
|
+
entries: ReadonlyMap<K, E>;
|
|
73
|
+
changed: boolean;
|
|
74
|
+
/** Ask the host to refresh its server baselines once. */
|
|
75
|
+
refresh: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
/** Applies one retention decision per entry; an unchanged map keeps its identity. */
|
|
78
|
+
export declare function planRetention<K, E>(entries: ReadonlyMap<K, E>, decide: (key: K, entry: E) => RetentionDecision<E>): RetentionPlan<K, E>;
|
|
79
|
+
/** A saved-handover decision as a retention decision, recording the refresh on the entry. */
|
|
80
|
+
export declare function savedRetentionDecision<E>(decision: SavedHandoverDecision, withRefreshRequested: () => E): RetentionDecision<E>;
|
|
81
|
+
/**
|
|
82
|
+
* Pure retention rule for the overlay.
|
|
83
|
+
* - Unsaved items expire after `UNSAVED_DRAFT_TTL_MS` without a message from their origin.
|
|
84
|
+
* - Saved items follow `decideSavedHandover`, caught up once the viewer's own baseline
|
|
85
|
+
* for the item has the saved revision. The overlay and that baseline are read in the
|
|
86
|
+
* same render, so the swap is atomic and nothing flashes.
|
|
87
|
+
*/
|
|
88
|
+
export declare function planOverlayRetention(overlay: RemoteDraftOverlay, baselineRevision: (key: string) => string | null, now: number): OverlayRetentionPlan;
|
|
89
|
+
/** The remote value for a target, if another tab is streaming one. */
|
|
90
|
+
export declare function remoteDraftValues(overlay: RemoteDraftOverlay | undefined, target: DraftTarget): EditorValueRecord | null;
|
|
91
|
+
/**
|
|
92
|
+
* Where a tab's rendered values come from. A tab that is only viewing renders
|
|
93
|
+
* what the editing tab streams; any other tab renders its own edits.
|
|
94
|
+
*/
|
|
95
|
+
export type RenderSource = 'own-edits' | 'live-drafts';
|
|
96
|
+
export declare function renderSourceFor(editability: EditorEditability): RenderSource;
|
|
97
|
+
type LocalValues = Readonly<{
|
|
98
|
+
sync: ValueSync<EditorValueRecord | null>;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* Render precedence, in one place.
|
|
102
|
+
* - `own-edits`: the tab's current value (its dirty edit, or the baseline). It never
|
|
103
|
+
* holds a remote overlay, so none is read.
|
|
104
|
+
* - `live-drafts`: another tab's live draft, then the baseline. Local values are never
|
|
105
|
+
* used, so edits a viewer abandoned can't outrank what the editing tab streams.
|
|
106
|
+
*/
|
|
107
|
+
export declare function resolveRenderedValues(source: RenderSource, local: LocalValues | null, remote: EditorValueRecord | null): EditorValueRecord | null;
|
|
108
|
+
/**
|
|
109
|
+
* The top-level fields whose rendered value (after the precedence above) differs
|
|
110
|
+
* from the baseline, e.g. entry fields a template page must bind in again.
|
|
111
|
+
*/
|
|
112
|
+
export declare function renderedFieldChanges(source: RenderSource, local: LocalValues | null, remote: EditorValueRecord | null): Readonly<Record<string, unknown>>;
|
|
113
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type RealtimeEditScope } from '../../../realtime/src/index';
|
|
2
|
+
import { type DraftRealtimeClient, type UseDraftChannelAuth } from '../../../realtime/src/client';
|
|
3
|
+
import type { EditorEditability } from '../controller/editorEditability';
|
|
4
|
+
import type { EditorUiStoreInstance } from '../ui/editorUiStore';
|
|
5
|
+
/**
|
|
6
|
+
* What the host app supplies for live drafts: its own Supabase client (the
|
|
7
|
+
* preview uses a dedicated one, because token auth pins the token client-wide),
|
|
8
|
+
* how the channel authenticates, the document, and how a viewer refreshes its
|
|
9
|
+
* server baselines when a saved value has not arrived.
|
|
10
|
+
*/
|
|
11
|
+
export type LiveDraftsConfig = Readonly<{
|
|
12
|
+
client: DraftRealtimeClient;
|
|
13
|
+
auth: UseDraftChannelAuth;
|
|
14
|
+
siteId: string;
|
|
15
|
+
scope: RealtimeEditScope;
|
|
16
|
+
refreshBaselines?: () => void;
|
|
17
|
+
}>;
|
|
18
|
+
/** The structural slice of a Supabase client the drafts channel needs. */
|
|
19
|
+
export type LiveDraftsClient = DraftRealtimeClient;
|
|
20
|
+
export type LiveDraftRole = 'emit' | 'view' | 'off';
|
|
21
|
+
/**
|
|
22
|
+
* A tab that holds the lease streams its drafts; a preview tab that is only
|
|
23
|
+
* viewing shows other tabs' drafts; any other tab (acquiring, read-only,
|
|
24
|
+
* unleased surfaces) takes no part.
|
|
25
|
+
*/
|
|
26
|
+
export declare function liveDraftRole(editability: EditorEditability): LiveDraftRole;
|
|
27
|
+
/**
|
|
28
|
+
* Live drafts for one editor mount (issue 1545): joins the private drafts
|
|
29
|
+
* channel while the tab emits or views, streams this tab's dirty values while
|
|
30
|
+
* it holds the lease, and keeps the remote overlay while it only views.
|
|
31
|
+
*/
|
|
32
|
+
export declare function useLiveDrafts(uiStore: EditorUiStoreInstance, config: LiveDraftsConfig | null): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EditorUiStoreInstance } from '../ui/editorUiStore';
|
|
2
|
+
/**
|
|
3
|
+
* Runs a retention pass on every store change and once a second while `retain` is set.
|
|
4
|
+
* Shared by a viewer's remote-draft overlay (issue 1545) and the renderer's linked-entry
|
|
5
|
+
* save handovers (issue 1553, D); each pass decides with `decideSavedHandover`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useRetentionTicks(uiStore: EditorUiStoreInstance, retain: (() => void) | null): void;
|
|
@@ -9,3 +9,9 @@ import type { PreviewLinkedEntryFieldBinding } from '../../../../blocks/src/syst
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function isLinkedSidebarField(editorPath: string, activeField: ActivePreviewField): boolean;
|
|
11
11
|
export declare function isLinkedEntrySidebarField(binding: PreviewLinkedEntryFieldBinding | null | undefined, activeField: ActivePreviewField): boolean;
|
|
12
|
+
/** A read-only inline field remains an opener for its scoped editor. */
|
|
13
|
+
export declare function linkedEntryActivation(binding: PreviewLinkedEntryFieldBinding | undefined, canWrite: boolean, onOpen: ((binding: PreviewLinkedEntryFieldBinding) => void) | undefined): {
|
|
14
|
+
tabIndex: number | undefined;
|
|
15
|
+
onClick: () => void;
|
|
16
|
+
onFocus: () => void;
|
|
17
|
+
};
|
|
@@ -1,34 +1,111 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { APIEndpoints } from '../../../api/src/request';
|
|
2
|
+
import { type ContentTypeKey, type ApiClient, type DocumentBlockState, type RouteMetadataPayload, type PageSurfaceEditorDocument } from '../../../api/src/content-editor';
|
|
2
3
|
import type { ContentEntrySnapshot } from '../../../content-model/src/index';
|
|
4
|
+
import type { DocumentSaveReceipt } from '../controller/documentValueBaseline';
|
|
5
|
+
type EntryResponse = NonNullable<APIEndpoints['publishContentEntry']['response']>['entry'];
|
|
3
6
|
export type { ApiClient };
|
|
4
|
-
export type ContentEntryServiceConfig<
|
|
7
|
+
export type ContentEntryServiceConfig<TSnapshot extends ContentEntrySnapshot> = {
|
|
5
8
|
type: ContentTypeKey;
|
|
6
9
|
siteId: string;
|
|
7
10
|
entryId: string;
|
|
8
11
|
routeId?: string;
|
|
9
|
-
snapshotFromResponse: (response:
|
|
10
|
-
publishedContentFromResponse?: (response:
|
|
11
|
-
onResponse?: (response:
|
|
12
|
+
snapshotFromResponse: (response: EntryResponse) => TSnapshot;
|
|
13
|
+
publishedContentFromResponse?: (response: EntryResponse) => Record<string, unknown> | null | undefined;
|
|
14
|
+
onResponse?: (response: EntryResponse) => void;
|
|
12
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* What a publish or discard wrote to the entry's content (issue 1553, WR5b): the content
|
|
18
|
+
* it wrote with its hash (the content compare-and-set token), or `unchanged` when it
|
|
19
|
+
* wrote none, in which case the editor keeps its content baseline and revision.
|
|
20
|
+
*/
|
|
21
|
+
export type ContentWriteResult = Readonly<{
|
|
22
|
+
kind: 'written';
|
|
23
|
+
values: Record<string, unknown>;
|
|
24
|
+
revision: string;
|
|
25
|
+
}> | Readonly<{
|
|
26
|
+
kind: 'unchanged';
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* A lifecycle response's writes: the route's draft timestamp (the metadata
|
|
30
|
+
* compare-and-set token; absent when the response carries none, in which case the
|
|
31
|
+
* editor keeps its own) and what it did to the content.
|
|
32
|
+
*/
|
|
33
|
+
export type LifecycleWrites = Readonly<{
|
|
34
|
+
metadataRevision?: string | null;
|
|
35
|
+
content: ContentWriteResult;
|
|
36
|
+
}>;
|
|
13
37
|
export type PublishEntryResult<TSnapshot extends ContentEntrySnapshot> = Readonly<{
|
|
14
38
|
snapshot: TSnapshot;
|
|
15
39
|
publishedContent?: Record<string, unknown> | null;
|
|
16
|
-
|
|
40
|
+
blockState: DocumentBlockState;
|
|
41
|
+
writes: LifecycleWrites;
|
|
42
|
+
}>;
|
|
43
|
+
/** Every lifecycle result accounts for all document block collections, including empty ones. */
|
|
44
|
+
export type DiscardEntryResult<TSnapshot extends ContentEntrySnapshot> = Readonly<{
|
|
45
|
+
snapshot: TSnapshot;
|
|
46
|
+
writes: LifecycleWrites;
|
|
47
|
+
blockState: DocumentBlockState;
|
|
48
|
+
}>;
|
|
49
|
+
/** An accepted atomic content write may include its complete publication receipt. */
|
|
50
|
+
export type ContentSavePublication = Readonly<{
|
|
51
|
+
kind: 'published';
|
|
52
|
+
result: NonNullable<APIEndpoints['publishPageSurface']['response']>;
|
|
53
|
+
}>;
|
|
54
|
+
export type ContentSaveResult = DocumentSaveReceipt<string> & Readonly<{
|
|
55
|
+
publication?: ContentSavePublication;
|
|
17
56
|
}>;
|
|
18
|
-
type ContentEditorDraftServices<
|
|
19
|
-
saveContent: (content: Record<string, unknown
|
|
20
|
-
saveMetadata: (payload: TMetadataPayload) => Promise<
|
|
57
|
+
type ContentEditorDraftServices<TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = Readonly<{
|
|
58
|
+
saveContent: (content: Record<string, unknown>, optimisticHash: string) => Promise<ContentSaveResult>;
|
|
59
|
+
saveMetadata: (payload: TMetadataPayload, expectedDraftUpdatedAt: string | null) => Promise<DocumentSaveReceipt>;
|
|
21
60
|
}>;
|
|
22
|
-
export type
|
|
23
|
-
kind: '
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
61
|
+
export type PublishLifecycleResult<TSnapshot extends ContentEntrySnapshot> = (PublishEntryResult<TSnapshot> & Readonly<{
|
|
62
|
+
kind: 'serverSnapshot';
|
|
63
|
+
}>) | Readonly<{
|
|
64
|
+
kind: 'pageSurface';
|
|
65
|
+
publication: NonNullable<APIEndpoints['publishPageSurface']['response']>;
|
|
66
|
+
}>;
|
|
67
|
+
export type DiscardLifecycleResult<TSnapshot extends ContentEntrySnapshot> = (DiscardEntryResult<TSnapshot> & Readonly<{
|
|
68
|
+
kind: 'serverSnapshot';
|
|
69
|
+
}>) | Readonly<{
|
|
70
|
+
kind: 'serverDocument';
|
|
71
|
+
document: PageSurfaceEditorDocument;
|
|
72
|
+
blockState: DocumentBlockState;
|
|
73
|
+
}> | Readonly<{
|
|
74
|
+
kind: 'unchanged';
|
|
75
|
+
}>;
|
|
76
|
+
export type DiscardDraftInput = Readonly<{
|
|
77
|
+
contentRevision: string | null;
|
|
78
|
+
}>;
|
|
79
|
+
export type EditorDeletion = Readonly<{
|
|
80
|
+
kind: 'deletable';
|
|
27
81
|
deleteEntry: () => Promise<void>;
|
|
28
82
|
}> | Readonly<{
|
|
29
|
-
kind: '
|
|
30
|
-
}
|
|
31
|
-
export type
|
|
32
|
-
|
|
83
|
+
kind: 'deletedWithOwner';
|
|
84
|
+
}>;
|
|
85
|
+
export type ContentEditorServices<TSnapshot extends ContentEntrySnapshot = ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = ContentEditorDraftServices<TMetadataPayload> & Readonly<{
|
|
86
|
+
publish: () => Promise<PublishLifecycleResult<TSnapshot>>;
|
|
87
|
+
discardDraft: (input: DiscardDraftInput) => Promise<DiscardLifecycleResult<TSnapshot>>;
|
|
88
|
+
deletion: EditorDeletion;
|
|
89
|
+
}>;
|
|
90
|
+
export type ContentEntryEditorServices<TSnapshot extends ContentEntrySnapshot = ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = ContentEditorServices<TSnapshot, TMetadataPayload> & Readonly<{
|
|
91
|
+
deletion: Extract<EditorDeletion, {
|
|
92
|
+
kind: 'deletable';
|
|
93
|
+
}>;
|
|
94
|
+
}>;
|
|
95
|
+
export type PageSurfaceEditorServices = ContentEditorServices & Readonly<{
|
|
96
|
+
deletion: Extract<EditorDeletion, {
|
|
97
|
+
kind: 'deletedWithOwner';
|
|
98
|
+
}>;
|
|
33
99
|
}>;
|
|
34
|
-
export declare function createContentEntryServices<
|
|
100
|
+
export declare function createContentEntryServices<TMetadataPayload extends Record<string, unknown>, TSnapshot extends ContentEntrySnapshot>(apiClient: ApiClient, config: ContentEntryServiceConfig<TSnapshot>): ContentEntryEditorServices<TSnapshot, TMetadataPayload>;
|
|
101
|
+
/** Both entry and surface commands return this same persistence evidence. */
|
|
102
|
+
export declare function savedContentReceipt(document: Pick<PageSurfaceEditorDocument, 'draftContent' | 'optimisticHash' | 'publishedContent'>): DocumentSaveReceipt<string>;
|
|
103
|
+
/** Normalize the authoritative route response once, before shared save handling. */
|
|
104
|
+
export declare function savedRouteReceipt(route: Readonly<{
|
|
105
|
+
draftTitle: string | null;
|
|
106
|
+
draftSlug: string | null;
|
|
107
|
+
draftMetaTitle?: string | null;
|
|
108
|
+
draftMetaDescription?: string | null;
|
|
109
|
+
ogImageId?: string | null;
|
|
110
|
+
draftUpdatedAt?: string | null;
|
|
111
|
+
}>): DocumentSaveReceipt;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApiClient } from '../../../api/src/request';
|
|
2
|
+
import type { EditorEditability } from '../controller/editorEditability';
|
|
3
|
+
declare const editorClientCapability: unique symbol;
|
|
4
|
+
/** A transport whose managed writes are checked and decorated by the editor. */
|
|
5
|
+
export type EditorApiClient = ApiClient & Readonly<{
|
|
6
|
+
[editorClientCapability]: true;
|
|
7
|
+
}>;
|
|
8
|
+
export type EditorApiClientFactory = (getClientId: () => string, getEditability: () => EditorEditability, onLeaseLost?: () => void) => EditorApiClient;
|
|
9
|
+
/** Bind the transport once; each editor supplies its own current lease state. */
|
|
10
|
+
export declare function createEditorApiClientFactory(client: ApiClient): EditorApiClientFactory;
|
|
11
|
+
/** Adds the document identity to editor writes so realtime can suppress self echoes. */
|
|
12
|
+
export declare function createEditorApiClient(client: ApiClient, getClientId: () => string, getEditability: () => EditorEditability, onLeaseLost?: () => void): EditorApiClient;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ApiClient } from '../../../api/src/request';
|
|
2
|
+
import { type PageSurfaceEditorServices } from './contentEntryServices';
|
|
3
|
+
export type PageSurfaceMetadataBaseline = Readonly<{
|
|
4
|
+
draftTitle: string;
|
|
5
|
+
draftPath: string;
|
|
6
|
+
}>;
|
|
7
|
+
export type PageSurfaceEditorServicesDeps = Readonly<{
|
|
8
|
+
apiClient: ApiClient;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Where a content save goes. Every editor saves a draft, except the event
|
|
12
|
+
* Content tab, whose save publishes an external event's card straight away
|
|
13
|
+
* (the server decides). Its lease uses that endpoint too, so the words have
|
|
14
|
+
* one write path from the tab however the save is reached.
|
|
15
|
+
*/
|
|
16
|
+
export type PageSurfaceContentWriter = 'draft' | 'eventContentTab';
|
|
17
|
+
export declare function createPageSurfaceEditorServices(input: Readonly<{
|
|
18
|
+
siteId: string;
|
|
19
|
+
pageSurfaceId: string;
|
|
20
|
+
route: PageSurfaceMetadataBaseline;
|
|
21
|
+
/** Default `draft`. */
|
|
22
|
+
contentWriter?: PageSurfaceContentWriter;
|
|
23
|
+
}>, deps: PageSurfaceEditorServicesDeps): PageSurfaceEditorServices;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { StoreApi } from 'zustand';
|
|
2
|
+
import type { EditorUiState } from '../ui/editorUiStore';
|
|
3
|
+
import type { EditorValueKey } from '../ui/editorSnapshot';
|
|
4
|
+
import { type FlushPlan, type FlushPolicy, type FlushResult, type LifecycleDrain } from './sendPlanning';
|
|
5
|
+
export type FlushOptions = Readonly<{
|
|
6
|
+
keys?: readonly EditorValueKey[];
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
}>;
|
|
9
|
+
type FlushStore = Pick<StoreApi<EditorUiState>, 'getState' | 'subscribe'>;
|
|
10
|
+
export declare function selectPublishFlushPlan(state: EditorUiState): FlushPlan;
|
|
11
|
+
/** A finite checkpoint. Only its owning lifecycle passes the exact held-state reference as drain authority. */
|
|
12
|
+
export declare function flushValues(store: FlushStore, policy: FlushPolicy, options?: FlushOptions, drain?: LifecycleDrain): Promise<FlushResult>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { EditorValueRecord, ValueSync } from '../../../core/src/index';
|
|
2
|
+
import type { EditorValueKey } from '../ui/editorSnapshot';
|
|
3
|
+
import type { LifecycleFailure, LifecycleOperation, LifecycleOutcome, LifecycleStatus } from '../ui/stores/types';
|
|
4
|
+
import { type FlushResult, type SchedulerValue } from './sendPlanning';
|
|
5
|
+
/**
|
|
6
|
+
* Whether a recorded lifecycle failure still holds (issue 1553, rows B1–B7). One
|
|
7
|
+
* condition drives both the error banner and the autosave status, so they can't disagree
|
|
8
|
+
* about whether a failure has resolved. A failure whose condition has ended is inert: it
|
|
9
|
+
* stays in the store until the next operation overwrites it, but it no longer counts.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SAVE_DRAFT_FAILED = "Failed to save draft \u2014 some changes may not be saved.";
|
|
12
|
+
export declare const PUBLISH_SAVE_FAILED = "Cannot publish: failed to save draft changes.";
|
|
13
|
+
export type FailureFacts = Readonly<{
|
|
14
|
+
/** Loaded only when a failure's condition reads the values. */
|
|
15
|
+
values: () => readonly SchedulerValue[];
|
|
16
|
+
/** How many saves the store has accepted; a `server` failure holds until this moves. */
|
|
17
|
+
acceptedSaves: number;
|
|
18
|
+
/** The current publish validation message while validation blocks publishing, else null. */
|
|
19
|
+
publishBlockedMessage: string | null;
|
|
20
|
+
}>;
|
|
21
|
+
export type ActiveFailure = Readonly<{
|
|
22
|
+
operation: LifecycleOperation;
|
|
23
|
+
failure: LifecycleFailure;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function activeFailure(lifecycle: LifecycleStatus, facts: FailureFacts): ActiveFailure | null;
|
|
26
|
+
/**
|
|
27
|
+
* The copy for a failure, unchanged from the messages each operation stored before.
|
|
28
|
+
* `invalid-blocks` shows the current publish validation message.
|
|
29
|
+
*/
|
|
30
|
+
export declare function lifecycleFailureMessage(operation: LifecycleOperation, failure: LifecycleFailure, publishBlockedMessage: string | null): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* The error banner: the active lifecycle failure's message, else the document's own save
|
|
33
|
+
* failure (metadata and content), which clears once no such value is failed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function bannerMessage(lifecycle: LifecycleStatus, facts: FailureFacts): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* A flush that didn't reach `ready`, as the operation's failure: the failed values by the
|
|
38
|
+
* requests that failed, or the values that couldn't be sent.
|
|
39
|
+
*/
|
|
40
|
+
export declare function flushFailure(result: FlushResult, syncOf: (key: EditorValueKey) => ValueSync<EditorValueRecord | null> | undefined): LifecycleFailure | null;
|
|
41
|
+
/**
|
|
42
|
+
* A refused operation's copy, for a caller's own dialog or toast (the banner shows the
|
|
43
|
+
* same copy); null when the operation didn't fail.
|
|
44
|
+
*/
|
|
45
|
+
export declare function lifecycleOutcomeMessage(operation: LifecycleOperation, outcome: LifecycleOutcome): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* For a caller that goes on only once Save draft has saved everything (a workflow step,
|
|
48
|
+
* leaving the page): a refusal becomes an Error with the banner's copy, for that
|
|
49
|
+
* caller's own error handling.
|
|
50
|
+
*/
|
|
51
|
+
export declare function requireSavedDraft(outcome: LifecycleOutcome): void;
|