@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.
Files changed (442) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +1 -1
  3. package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DBKln68M.mjs} +301 -205
  4. package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-DpRX4Mum.mjs} +68 -63
  5. package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-C0mndwHB.mjs} +3 -3
  6. package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJPmPY-r.mjs} +1247 -541
  7. package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-JYA0cJ_Z.mjs} +209720 -204978
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
  10. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  11. package/dist/_dts/api/src/accountApi.d.ts +1 -1
  12. package/dist/_dts/api/src/admin.d.ts +22 -22
  13. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  14. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  15. package/dist/_dts/api/src/analytics.d.ts +2 -2
  16. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  17. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  18. package/dist/_dts/api/src/auth.d.ts +10 -10
  19. package/dist/_dts/api/src/availability.d.ts +6 -6
  20. package/dist/_dts/api/src/billing.d.ts +42 -15
  21. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  22. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  23. package/dist/_dts/api/src/blocks.d.ts +15 -14
  24. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  25. package/dist/_dts/api/src/bookingConfig.d.ts +33 -50
  26. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +2 -6
  27. package/dist/_dts/api/src/bookingOperations.d.ts +9 -11
  28. package/dist/_dts/api/src/bookingRecords.d.ts +16 -11
  29. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +5 -5
  30. package/dist/_dts/api/src/bookings.d.ts +7 -7
  31. package/dist/_dts/api/src/calendar.d.ts +9 -9
  32. package/dist/_dts/api/src/clientErrorReporting.d.ts +11 -0
  33. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -8
  34. package/dist/_dts/api/src/common/cancellation.d.ts +23 -0
  35. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  36. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  37. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  38. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  39. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  40. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  41. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +1 -1
  42. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  43. package/dist/_dts/api/src/domains.d.ts +16 -16
  44. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  45. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  46. package/dist/_dts/api/src/endpoints.d.ts +135 -51
  47. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  48. package/dist/_dts/api/src/eventManagementContracts.d.ts +29 -7
  49. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
  50. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  51. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  52. package/dist/_dts/api/src/index.d.ts +8 -7
  53. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  54. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  55. package/dist/_dts/api/src/navigation.d.ts +5 -5
  56. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  57. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  58. package/dist/_dts/api/src/pages.d.ts +7 -7
  59. package/dist/_dts/api/src/performance.d.ts +1 -1
  60. package/dist/_dts/api/src/public/index.d.ts +1 -1
  61. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +4 -2
  62. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +6 -29
  63. package/dist/_dts/api/src/redirects.d.ts +3 -3
  64. package/dist/_dts/api/src/request.d.ts +11 -2
  65. package/dist/_dts/api/src/resources.d.ts +4 -4
  66. package/dist/_dts/api/src/routes.d.ts +8 -3
  67. package/dist/_dts/api/src/sdk-event-upsert.d.ts +1 -2
  68. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  69. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  70. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  71. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  72. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  73. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +9 -2
  74. package/dist/_dts/api/src/seo.d.ts +4 -4
  75. package/dist/_dts/api/src/services.d.ts +4 -4
  76. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
  77. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  78. package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
  79. package/dist/_dts/api/src/siteOperations.d.ts +6 -2
  80. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  81. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  82. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  83. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  84. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  85. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  86. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  87. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  88. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  89. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  90. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  91. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  92. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  93. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  94. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  95. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  96. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  97. package/dist/_dts/blocks/src/contracts/index.d.ts +1 -1
  98. package/dist/_dts/blocks/src/contracts/non-block-islands.d.ts +2 -2
  99. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +54 -14
  100. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
  101. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  102. package/dist/_dts/blocks/src/portal/types.d.ts +9 -8
  103. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  104. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  105. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +28 -28
  106. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +7 -2
  107. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +84 -160
  108. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  109. package/dist/_dts/blocks/src/system/blocks/shop.shared.d.ts +31 -4
  110. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  111. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  112. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +4 -2
  113. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +3 -1
  114. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
  115. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  116. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  117. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  118. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +72 -12
  119. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +36 -6
  120. package/dist/_dts/blocks/src/system/runtime/hooks/useBookingNowIso.d.ts +8 -0
  121. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
  122. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  123. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  124. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  125. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
  126. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
  128. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  129. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +17 -2
  130. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
  132. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  133. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  134. package/dist/_dts/blocks/src/system/runtime/nodes/commerce/shared/display.d.ts +9 -2
  135. package/dist/_dts/blocks/src/system/runtime/nodes/event-details/presentation.d.ts +14 -2
  136. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  137. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  138. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
  139. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
  140. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventPaymentOptions.d.ts +3 -3
  141. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
  142. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
  143. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +4 -0
  144. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
  145. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  146. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  147. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  148. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  149. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  150. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +29 -29
  151. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  152. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  153. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +54 -6
  154. package/dist/_dts/blocks/src/system/runtime/shared/bookingPaymentOptions.d.ts +7 -2
  155. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  156. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  157. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  158. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  159. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  160. package/dist/_dts/commerce/src/purchase/bookingPaymentSelection.d.ts +54 -0
  161. package/dist/_dts/commerce/src/purchase/checkoutCommitPlan.d.ts +58 -13
  162. package/dist/_dts/commerce/src/purchase/checkoutErrorCodes.d.ts +1 -1
  163. package/dist/_dts/commerce/src/purchase/checkoutPaymentPlanPlanning.d.ts +16 -21
  164. package/dist/_dts/commerce/src/purchase/checkoutPaymentTerms.d.ts +23 -40
  165. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +2 -2
  166. package/dist/_dts/commerce/src/purchase/checkoutStripeSessionPlanning.d.ts +5 -4
  167. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  168. package/dist/_dts/commerce/src/purchase/index.d.ts +1 -3
  169. package/dist/_dts/commerce/src/purchase/membershipOrderItemMetadata.d.ts +4 -0
  170. package/dist/_dts/commerce/src/purchase/oneTimeCheckoutPlanning.d.ts +9 -4
  171. package/dist/_dts/commerce/src/purchase/orderInstalmentClosure.d.ts +13 -1
  172. package/dist/_dts/commerce/src/purchase/orderInstalmentLifecycle.d.ts +5 -0
  173. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +3 -1
  174. package/dist/_dts/commerce/src/purchase/orderTypes.d.ts +7 -1
  175. package/dist/_dts/commerce/src/purchase/refundRailSplit.d.ts +1 -1
  176. package/dist/_dts/commerce/src/purchase/stateTransitions.d.ts +2 -2
  177. package/dist/_dts/commerce/src/purchase/stripeMinimumCharge.d.ts +6 -0
  178. package/dist/_dts/commerce/src/purchase/types.d.ts +2 -1
  179. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  180. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  181. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  182. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  183. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  184. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  185. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  186. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  187. package/dist/_dts/content-editor/src/controller/editLeaseHandover.d.ts +30 -0
  188. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  189. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  190. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  191. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  192. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  193. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  194. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  195. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  196. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  197. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  198. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  199. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  200. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  201. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  202. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  203. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  204. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  205. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  206. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  207. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  208. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  209. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  210. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  211. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  212. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  213. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  214. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  215. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  216. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  217. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  218. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  219. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  220. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  221. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  222. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  223. package/dist/_dts/content-editor/src/lib/browserStorage.d.ts +5 -0
  224. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  225. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  226. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  227. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  228. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  229. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  230. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  231. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  232. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  233. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  234. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  235. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  236. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  237. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  238. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  239. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  240. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  241. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  242. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  243. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  244. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  245. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  246. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  247. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  248. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  249. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  250. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  251. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  252. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  253. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  254. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  255. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  256. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  257. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  258. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  259. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  260. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  261. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  262. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  263. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  264. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  265. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  266. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  267. package/dist/_dts/content-model/src/types.d.ts +0 -1
  268. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  269. package/dist/_dts/core/src/booking-flexible-balance.d.ts +2 -2
  270. package/dist/_dts/core/src/booking-instalment-deposit.d.ts +20 -0
  271. package/dist/_dts/core/src/booking-live-payment-terms.d.ts +72 -0
  272. package/dist/_dts/core/src/booking-payment-options.d.ts +24 -0
  273. package/dist/_dts/core/src/booking-payment-schemas.d.ts +522 -0
  274. package/dist/_dts/core/src/branded.d.ts +15 -0
  275. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  276. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  277. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  278. package/dist/_dts/core/src/edit-lease.d.ts +60 -0
  279. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  280. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  281. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  282. package/dist/_dts/core/src/index.d.ts +7 -0
  283. package/dist/_dts/core/src/uuid.d.ts +7 -5
  284. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +456 -189
  285. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  286. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  287. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  288. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  289. package/dist/_dts/editor/src/index.d.ts +1 -1
  290. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  291. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  292. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  293. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  294. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  295. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  296. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  297. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  298. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  299. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  300. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  301. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  302. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  303. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  304. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  305. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  306. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  307. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  308. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  309. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  310. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  311. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  312. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  313. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +3 -1
  314. package/dist/_dts/media-editor/src/MediaPickerMiniDialog.d.ts +10 -0
  315. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  316. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  317. package/dist/_dts/media-editor/src/index.d.ts +2 -0
  318. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  319. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  320. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  321. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  322. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
  323. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  324. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  325. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  326. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  327. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  328. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  329. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  330. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  331. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  332. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  333. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  334. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +23 -14
  335. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  336. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  337. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  338. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  339. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  340. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  341. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  342. package/dist/_dts/preview-next/src/client/previewAuthStore.d.ts +7 -0
  343. package/dist/_dts/preview-next/src/constants.d.ts +4 -0
  344. package/dist/_dts/preview-next/src/keepAlive.d.ts +1 -0
  345. package/dist/_dts/realtime/src/client.d.ts +3 -0
  346. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  347. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  348. package/dist/_dts/realtime/src/index.d.ts +3 -0
  349. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  350. package/dist/_dts/realtime/src/types.d.ts +113 -0
  351. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  352. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  353. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  354. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  355. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  356. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
  357. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +2 -12
  358. package/dist/_dts/sdk/src/version.d.ts +1 -1
  359. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  360. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  361. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +0 -5
  362. package/dist/_dts/ui/src/color-picker.d.ts +1 -1
  363. package/dist/_dts/ui/src/palette/useHexDraft.d.ts +7 -0
  364. package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-Cr3EeTP5.mjs} +504 -163
  365. package/dist/client/DemoBookingPortalAccess-BFGB1Fay.mjs +344 -0
  366. package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-DKYV0_ft.mjs} +6 -6
  367. package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-B9UIcEYc.mjs} +2 -2
  368. package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-CFLPkP0K.mjs} +1 -1
  369. package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-JjmgxEsR.mjs} +1 -1
  370. package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-CKV1Jh2m.mjs} +1 -1
  371. package/dist/client/{accordion-CoT5g7zo.mjs → accordion-DXWIfT3T.mjs} +1 -1
  372. package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-CjZgHNvv.mjs} +216 -63
  373. package/dist/client/bookings.mjs +1187 -692
  374. package/dist/client/{carousel-DtNYWFd3.mjs → carousel-DSLikmvZ.mjs} +1 -1
  375. package/dist/client/{cart-z4qZih1Y.mjs → cart-HDjWReFt.mjs} +3 -3
  376. package/dist/client/{checkout-DpL7euFH.mjs → checkout-CUvRZA3W.mjs} +3 -3
  377. package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  378. package/dist/client/client.mjs +2711 -1684
  379. package/dist/client/{context-C8TinPJc.mjs → context-DFmaZa-Q.mjs} +4 -3
  380. package/dist/client/{dates-vwwxTeB0.mjs → dates-BBep1JnF.mjs} +56 -11
  381. package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-zEobhxo4.mjs} +9 -9
  382. package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-Dp7bz5k-.mjs} +4 -4
  383. package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-FE-zqTt7.mjs} +4 -4
  384. package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BMt5snal.mjs} +4 -4
  385. package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-O6ZxHfOb.mjs} +422 -570
  386. package/dist/client/{form-Qf6qTbos.mjs → form-DFa1D8vt.mjs} +3 -3
  387. package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-CmjHLR-N.mjs} +3 -3
  388. package/dist/client/hooks.mjs +414 -182
  389. package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BXKP_lGh.mjs} +3 -3
  390. package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
  391. package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-CU-HmxGx.mjs} +3 -3
  392. package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-KEAEsibq.mjs} +1 -1
  393. package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Ckp7MGnt.mjs} +3 -3
  394. package/dist/client/{productList-zaapKSl-.mjs → productList-D91V0sYa.mjs} +3 -3
  395. package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-DZd6RJeA.mjs} +244 -94
  396. package/dist/client/rendering/client.mjs +2656 -1705
  397. package/dist/client/rendering/islands.mjs +18 -18
  398. package/dist/client/rendering.mjs +3430 -2352
  399. package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-E1EkhhYY.mjs} +1 -1
  400. package/dist/client/{shop-mktkXvbV.mjs → shop-4F2jLQPI.mjs} +131 -85
  401. package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-BbfCJjB3.mjs} +25 -13
  402. package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-vicweP2K.mjs} +1 -1
  403. package/dist/client/{shopShared-TqExh235.mjs → shopShared-DlONJt0T.mjs} +4 -4
  404. package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-COYyL3m7.mjs} +32 -17
  405. package/dist/preview-next/before-render.mjs +207 -105
  406. package/dist/preview-next/client/runtime.mjs +4 -4
  407. package/dist/preview-next/constants.mjs +5 -1
  408. package/dist/preview-next/index.mjs +5 -1
  409. package/dist/preview-next/keepAlive.mjs +341 -165
  410. package/dist/preview-next/middleware.mjs +207 -105
  411. package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BBmV7UsW.mjs} +243 -112
  412. package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-CwvFFjB-.mjs} +2 -2
  413. package/dist/{separator-C9qDP95Z.mjs → separator-ByL72zUT.mjs} +1 -1
  414. package/dist/server/components.mjs +1839 -1475
  415. package/dist/server/config-validation.mjs +381 -166
  416. package/dist/server/config.mjs +381 -166
  417. package/dist/server/data.mjs +381 -166
  418. package/dist/server/index.mjs +214 -110
  419. package/dist/server/next.mjs +663 -351
  420. package/dist/server/page-converter.mjs +198 -79
  421. package/dist/server/prebuild.mjs +1 -1
  422. package/dist/server/rendering/server.mjs +1536 -1169
  423. package/dist/server/rendering.mjs +2432 -2068
  424. package/dist/server/routing.mjs +456 -173
  425. package/dist/server/server.mjs +447 -267
  426. package/package.json +1 -1
  427. package/dist/_dts/api/src/bookingPaymentTermSchemas.d.ts +0 -123
  428. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  429. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
  430. package/dist/_dts/commerce/src/purchase/checkoutPaymentTermPlanning.d.ts +0 -10
  431. package/dist/_dts/commerce/src/purchase/checkoutValidatedItemPlanning.d.ts +0 -55
  432. package/dist/_dts/commerce/src/purchase/orderInstalmentPayoff.d.ts +0 -24
  433. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  434. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  435. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  436. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  437. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  438. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  439. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  440. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  441. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  442. 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 { useSimpleAutosave, useMultiAutosave } from './hooks/useSimpleAutosave';
5
- export { useStoreAutosave, type StoreAutosaveConfig, type AutosaveScope, } from './hooks/useStoreAutosave';
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 { collectPendingLinkedEntrySaves, useLinkedEntryAutosave, type LinkedEntryAutosaveOptions, type LinkedEntrySaveResult, type PendingLinkedEntrySave, } from './hooks/useLinkedEntryAutosave';
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, useAutosave, useEntryUiStore, } from './controller/EntryControllerProvider';
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 { ContentEntryControllerOptions, ContentEntryControllerState, DraftWorkflowStatus, MetadataAutosaveConfig, MetadataKindConfig, } from './types';
61
+ export type { EditLeaseChangeSubscription } from './hooks/useEditLease';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The browser's storage, or null during server rendering or when the browser blocks
3
+ * access (privacy settings, sandboxed frames).
4
+ */
5
+ export declare function browserStorage(kind: 'local' | 'session'): Storage | null;
@@ -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
+ };
@@ -26,5 +26,6 @@ export declare function useStoreBinding(input: StoreBindingInput): {
26
26
  value: unknown;
27
27
  setValue: (value: unknown) => void;
28
28
  version: number;
29
+ canWrite: boolean;
29
30
  pathInfo: PathInfo;
30
31
  };
@@ -1,34 +1,111 @@
1
- import { type ContentTypeKey, type ApiClient, type PublishedBlockBaseline, type RouteMetadataPayload } from '../../../api/src/content-editor';
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<TResponse extends object, TSnapshot extends ContentEntrySnapshot> = {
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: TResponse) => TSnapshot;
10
- publishedContentFromResponse?: (response: TResponse) => Record<string, unknown> | null | undefined;
11
- onResponse?: (response: TResponse) => void;
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
- publishedBlocks?: readonly PublishedBlockBaseline[];
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<TSnapshot extends ContentEntrySnapshot = ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = Readonly<{
19
- saveContent: (content: Record<string, unknown>) => Promise<Record<string, unknown>>;
20
- saveMetadata: (payload: TMetadataPayload) => Promise<Record<string, unknown>>;
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 ContentEditorServices<TSnapshot extends ContentEntrySnapshot = ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = ContentEditorDraftServices<TSnapshot, TMetadataPayload> & (Readonly<{
23
- kind: 'entryLifecycle';
24
- publishDetailed: (payload: unknown) => Promise<PublishEntryResult<TSnapshot>>;
25
- publish: (payload: unknown) => Promise<TSnapshot>;
26
- discardDraft: () => Promise<TSnapshot>;
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: 'pageSurfaceDraft';
30
- }>);
31
- export type EntryLifecycleContentEditorServices<TSnapshot extends ContentEntrySnapshot = ContentEntrySnapshot, TMetadataPayload extends Record<string, unknown> = RouteMetadataPayload> = Extract<ContentEditorServices<TSnapshot, TMetadataPayload>, {
32
- kind: 'entryLifecycle';
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<TResponse extends object, TMetadataPayload extends Record<string, unknown>, TPublishPayload, TSnapshot extends ContentEntrySnapshot>(apiClient: ApiClient, config: ContentEntryServiceConfig<TResponse, TSnapshot>): EntryLifecycleContentEditorServices<TSnapshot, TMetadataPayload>;
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 {};
@@ -1 +1,3 @@
1
1
  export * from './contentEntryServices';
2
+ export * from './pageSurfaceEditorServices';
3
+ export { createEditorApiClient, createEditorApiClientFactory, type EditorApiClient, type EditorApiClientFactory } from './editorApiClient';
@@ -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;