@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,13 +1,16 @@
1
1
  import { type ContentEntrySnapshot, type ContentTypeSchema, type ToolbarState } from '../../../content-model/src/index';
2
2
  import type { EditorBlockId, MailingListProviderScope } from '../../../core/src/index';
3
- import type { BlockItem } from '../../../editor-blocks/src/block-editor/types';
3
+ import type { BlockItem, ServerBlockItem } from '../../../editor-blocks/src/block-editor/types';
4
4
  import { type ReactNode } from 'react';
5
- import { type PublishOptions } from '../hooks/useEntryActions';
6
- import type { BlockedPublishPlan } from '../hooks/blockedPublishPlan';
7
- import { type ApiClient, type ContentEditorServices } from '../services';
8
- import type { DraftWorkflowStatus } from '../types';
5
+ import { type EntryActions } from '../hooks/useEntryActions';
6
+ import { type BlockedPublishPlan } from '../hooks/blockedPublishPlan';
7
+ import { type ContentEntryEditorServices, type PageSurfaceEditorServices } from '../services';
9
8
  import { type EditorUiState } from '../ui/editorUiStore';
10
9
  import type { ResolveBlockManifest } from '../ui/blockValidationView';
10
+ import { type RouteWrites } from './routeWrites';
11
+ import type { EditorApiClient, EditorApiClientFactory } from '../services/editorApiClient';
12
+ import { type EditorLeaseParticipation } from './editorLeaseParticipation';
13
+ import { type LiveDraftsConfig } from '../liveDrafts/useLiveDrafts';
11
14
  export type EntryControllerBlocksSlice = {
12
15
  list: BlockItem[];
13
16
  status: 'idle' | 'loading' | 'error';
@@ -16,10 +19,6 @@ export type EntryControllerBlocksSlice = {
16
19
  };
17
20
  };
18
21
  export type EntryControllerUiSlice = EditorUiState;
19
- export type EntryControllerAutosaveState = {
20
- status: DraftWorkflowStatus;
21
- hasFailedSaves: boolean;
22
- };
23
22
  export type EntryDraftBlockPatch = {
24
23
  blockId: EditorBlockId;
25
24
  path?: string | null;
@@ -47,18 +46,9 @@ export type EntryRecoveryConflictState = Readonly<{
47
46
  reviewAffectedBlocks: () => void;
48
47
  discardRecoveredChanges: () => void;
49
48
  }>;
50
- /** Actions returned by useEntryActions */
51
- export type EntryActions = Readonly<{
52
- kind: 'entryLifecycle';
53
- saveDraft: () => Promise<void>;
54
- publish: (options?: PublishOptions) => Promise<void>;
55
- discardDraft: () => Promise<void>;
56
- deleteEntry: () => Promise<void>;
57
- }> | Readonly<{
58
- kind: 'pageSurfaceDraft';
59
- saveDraft: () => Promise<void>;
60
- }>;
49
+ export type { EntryActions };
61
50
  export type EntryControllerContextValue = {
51
+ apiClient: EditorApiClient;
62
52
  entry: ContentEntrySnapshot;
63
53
  baseline: Record<string, unknown>;
64
54
  errorMessage: string | null;
@@ -66,21 +56,25 @@ export type EntryControllerContextValue = {
66
56
  type: 'blocked';
67
57
  }> | null;
68
58
  recoveryConflict: EntryRecoveryConflictState | null;
69
- setErrorMessage: (msg: string | null) => void;
70
59
  actions: EntryActions;
60
+ /** Writes that return the route row they wrote (native publish, schedule, cancel). */
61
+ routeWrites: RouteWrites;
71
62
  blocks: EntryControllerBlocksSlice;
72
63
  drafts: EntryDraftsSlice;
73
64
  toolbar: ToolbarState<Record<string, unknown>>;
74
65
  };
75
66
  type BaseInternalProps = {
76
67
  children: ReactNode;
77
- apiClient: ApiClient;
68
+ apiClientFactory: EditorApiClientFactory;
69
+ /** Viewing mounts no lease controller; switching to a lease config keeps the store and its edits. */
70
+ editLease: EditorLeaseParticipation;
78
71
  siteId: string;
79
72
  routeId?: string;
80
73
  type: string;
81
74
  schema: ContentTypeSchema;
82
75
  entityLabel?: string | null;
83
76
  initialEntry?: ContentEntrySnapshot | null;
77
+ initialMetadataRevision: string | null;
84
78
  /** Autosave mode (default: auto). Manual disables background autosave triggers. */
85
79
  saveMode?: 'auto' | 'manual';
86
80
  /** Initial content values for content entries - used to hydrate content store */
@@ -89,34 +83,35 @@ type BaseInternalProps = {
89
83
  initialPublishedContent?: Record<string, unknown> | null;
90
84
  onEntryUpdated?: (response: unknown) => void;
91
85
  historyShortcutsEnabled?: boolean;
86
+ blockFieldExtensions?: import('../../../editor-blocks/src/block-editor/blockDraftBaselineSeed').BlockFieldExtensions | null;
92
87
  resolveBlockManifest?: ResolveBlockManifest;
93
88
  getExpectedMailingListProviderScope?: () => MailingListProviderScope | null;
89
+ /** Live drafts between tabs (issue 1545); omitted where the host has no realtime client. */
90
+ liveDrafts?: LiveDraftsConfig | null;
94
91
  };
95
92
  type EditorOwnerServiceProps = Readonly<{
96
93
  owner: {
97
94
  kind: 'contentEntry';
98
95
  contentEntryId: string;
99
96
  };
100
- services?: Extract<ContentEditorServices, {
101
- kind: 'entryLifecycle';
102
- }>;
97
+ services?: ContentEntryEditorServices;
103
98
  }> | Readonly<{
104
99
  owner: {
105
100
  kind: 'pageSurface';
106
101
  pageSurfaceId: string;
107
102
  };
108
- services: Extract<ContentEditorServices, {
109
- kind: 'pageSurfaceDraft';
110
- }>;
103
+ services: PageSurfaceEditorServices | ((apiClient: EditorApiClient) => PageSurfaceEditorServices);
111
104
  }>;
112
105
  type PageInternalProps = {
113
106
  kind: 'page';
107
+ initialContentRevision?: never;
114
108
  initialStatus?: 'draft' | 'scheduled' | 'published';
115
- initialBlocks?: BlockItem[];
109
+ initialBlocks?: ServerBlockItem[];
116
110
  };
117
111
  type ContentInternalProps = {
118
112
  kind: 'content';
119
- initialBlocks?: BlockItem[];
113
+ initialContentRevision: string;
114
+ initialBlocks?: ServerBlockItem[];
120
115
  };
121
116
  type EntryControllerProviderProps = BaseInternalProps & EditorOwnerServiceProps & (PageInternalProps | ContentInternalProps);
122
117
  /**
@@ -137,34 +132,3 @@ type EntryControllerProviderProps = BaseInternalProps & EditorOwnerServiceProps
137
132
  export declare function EntryControllerProvider(props: EntryControllerProviderProps): import("react").JSX.Element;
138
133
  export declare function useEntryEditorController(): EntryControllerContextValue;
139
134
  export declare function useEntryController(): EntryControllerContextValue;
140
- /**
141
- * Hook to access autosave status from the uiStore.
142
- *
143
- * @deprecated Use useEditorUiStore with selectors instead for better performance:
144
- * ```tsx
145
- * const metadataStatus = useEditorUiStore(state => state.autosave.metadata.status)
146
- * const blocksStatus = useEditorUiStore(state => state.autosave.blocks.status)
147
- * ```
148
- *
149
- * This hook exists for backward compatibility and subscribes to the entire
150
- * autosave state, causing re-renders when any autosave status changes.
151
- */
152
- export declare function useAutosave(): {
153
- autosave: import("../ui/editorUiStore").AutosaveStatus;
154
- blockAutosave: import("../ui/editorUiStore").AutosaveStatus;
155
- };
156
- /**
157
- * @deprecated Use useEditorUiStore hook directly from '../ui/editorUiStore'
158
- * This provides granular selector support for better performance.
159
- *
160
- * Example:
161
- * ```tsx
162
- * // Old (re-renders on any state change):
163
- * const uiStore = useEntryUiStore()
164
- *
165
- * // New (only re-renders when metadata status changes):
166
- * const metadataStatus = useEditorUiStore(state => state.metadata.getSnapshot().syncState.kind)
167
- * ```
168
- */
169
- export declare function useEntryUiStore(): import("zustand").StoreApi<EditorUiState>;
170
- export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A linked entry held elsewhere keeps a notice scoped to its panel: it doesn't make the whole
3
+ * page read-only, so it never raises the page's modal.
4
+ */
5
+ export declare function LinkedEntryLeaseBanner({ entryId }: Readonly<{
6
+ entryId: string;
7
+ }>): import("react").JSX.Element | null;
@@ -0,0 +1,14 @@
1
+ import type { EditorApiClient, EditorApiClientFactory } from '../services/editorApiClient';
2
+ import { type EditorLeaseConfig } from './EditLeaseController';
3
+ type Props = Readonly<{
4
+ apiClientFactory: EditorApiClientFactory;
5
+ parentApiClient: EditorApiClient;
6
+ lease: EditorLeaseConfig;
7
+ }>;
8
+ /**
9
+ * A linked entry keeps its lease controller, and so its lease authority, while it's
10
+ * selected, edited, or has a request in flight or abandoned; it unmounts only once that
11
+ * request settles (issue 1553, D2 and row L6).
12
+ */
13
+ export declare function LinkedEntryLeaseControllers(props: Props): import("react").JSX.Element[];
14
+ export {};
@@ -18,3 +18,9 @@ export type DeriveEditorUnpublishedStateInput = Readonly<{
18
18
  hasBeenPublishedBefore: boolean;
19
19
  }>;
20
20
  export declare function deriveEditorUnpublishedState(input: DeriveEditorUnpublishedStateInput): EditorUnpublishedState;
21
+ /**
22
+ * Discard returns a document to its published version, so it needs both
23
+ * something to discard and a published version to go back to. A document that
24
+ * has never been published keeps its drafts, and its Discard is unavailable.
25
+ */
26
+ export declare function canDiscardDraft(state: Pick<EditorUnpublishedState, "hasUnpublishedChanges" | "hasBeenPublishedBefore">): boolean;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * A document value (its metadata or its content) as the server last gave it:
3
+ * the draft the editor starts from, the published version it compares
4
+ * against, and the revision the next save is checked with.
5
+ *
6
+ * Kept free of imports so the editor services, which also run beside the
7
+ * server, can describe a discard result without pulling in the block editor.
8
+ */
9
+ export type DocumentValueBaseline = Readonly<{
10
+ baseline: Record<string, unknown> | null;
11
+ published: Record<string, unknown> | null;
12
+ revision: string | null;
13
+ }>;
14
+ /** Unknown publication evidence retains the existing baseline; known null clears it. */
15
+ export type SavedPublication = Readonly<{
16
+ kind: 'unknown';
17
+ }> | Readonly<{
18
+ kind: 'known';
19
+ values: Record<string, unknown> | null;
20
+ }>;
21
+ export type DocumentSaveReceipt<TRevision extends string | null = string | null> = Readonly<{
22
+ values: Record<string, unknown>;
23
+ revision: TRevision;
24
+ published: SavedPublication;
25
+ }>;
@@ -0,0 +1,30 @@
1
+ import { type EditorClientId } from '../../../core/src/index';
2
+ /** After the lease TTL, the departed document's lease has expired anyway. */
3
+ export declare const EDIT_LEASE_HANDOVER_TTL_MS: number;
4
+ export type EditLeaseHandover = Readonly<{
5
+ clientId: EditorClientId;
6
+ savedAt: number;
7
+ }>;
8
+ export declare function parseEditLeaseHandover(raw: string | null): EditLeaseHandover | null;
9
+ /** Checked when each acquire is sent, not only when the entry is read. */
10
+ export declare function freshHandover(handover: EditLeaseHandover | null, now: number): EditLeaseHandover | null;
11
+ export type EditLeaseHandoverPort = Readonly<{
12
+ storage: () => Storage | null;
13
+ clientId: () => string;
14
+ now: () => number;
15
+ onPageTransition: (type: 'pagehide' | 'pageshow', listener: (event: PageTransitionEvent) => void) => void;
16
+ }>;
17
+ export type DocumentEditLeaseHandover = Readonly<{
18
+ /** Called by each lease session; only documents that edited hand over. */
19
+ markParticipant: () => void;
20
+ previousClientIdForAcquire: () => EditorClientId | null;
21
+ }>;
22
+ /**
23
+ * One handover per document: it's taken once so lease sessions in the document can't
24
+ * race for it, and it's written from a document listener so it survives the editor
25
+ * unmounting before the page is left. A document that never edited passes on the
26
+ * handover it took, unchanged, so editor → other page → editor still hands over.
27
+ */
28
+ export declare function createDocumentEditLeaseHandover(port: EditLeaseHandoverPort): DocumentEditLeaseHandover;
29
+ export declare function markEditLeaseParticipant(): void;
30
+ export declare function previousEditorClientIdForAcquire(): EditorClientId | null;
@@ -0,0 +1,6 @@
1
+ /** Connects save responses to the mounted lease controller without storing protocol state. */
2
+ export declare function createEditLeaseLossSignal(): {
3
+ emit: () => void;
4
+ subscribe: (listener: () => void) => () => void;
5
+ };
6
+ export type EditLeaseLossSignal = ReturnType<typeof createEditLeaseLossSignal>;
@@ -0,0 +1,28 @@
1
+ import type { EditorEditability } from './editorEditability';
2
+ /**
3
+ * What a lease notice button does; "Edit here" and "Take over" both take the lease.
4
+ * `keep-viewing` only returns the tab to view mode; `discard-and-view` throws away the
5
+ * tab's unsaved edits first, so the label always says what the click does.
6
+ */
7
+ export type LeaseNoticeAction = 'take-over' | 'retry' | 'discard' | 'keep-viewing' | 'discard-and-view';
8
+ export type LeaseNoticeButton = Readonly<{
9
+ action: LeaseNoticeAction;
10
+ label: string;
11
+ }>;
12
+ export type LeaseNotice = Readonly<{
13
+ variant: 'your-other-tab' | 'another-user' | 'lost-with-unsaved' | 'unreachable';
14
+ title: string;
15
+ body: string | null;
16
+ buttons: readonly LeaseNoticeButton[];
17
+ }>;
18
+ export type LeaseNoticeInput = Readonly<{
19
+ editability: EditorEditability;
20
+ /** "this page", "this entry" or "this event page". */
21
+ thing: string;
22
+ unsaved: boolean;
23
+ /** Preview only: the tab can go back to view mode instead. */
24
+ canKeepViewing: boolean;
25
+ }>;
26
+ /** The blocking notice for a read-only mount, or null when nothing should be said. */
27
+ export declare function planLeaseNotice({ editability, thing, unsaved, canKeepViewing }: LeaseNoticeInput): LeaseNotice | null;
28
+ export declare function leaseDiscardedMessage(thing: string): string;
@@ -0,0 +1,2 @@
1
+ /** One id per document, including when a browser duplicates a tab. */
2
+ export declare function getEditorClientId(): string;
@@ -0,0 +1,38 @@
1
+ import type { EditAuthority, EditLeaseHolder, EditLeaseToken } from '../../../core/src/index';
2
+ /**
3
+ * Why a store writes without a lease: a server-side exemption, or a surface the lease
4
+ * protocol does not manage (the footer composer and standalone stores).
5
+ */
6
+ export type UnleasedReason = Extract<EditAuthority, {
7
+ kind: 'exempt';
8
+ }>['reason'] | 'unmanaged-surface';
9
+ /**
10
+ * A mount either declares an exemption, participates in the lease protocol, or is only
11
+ * viewing (a preview tab that has not asked to edit, so it never competes for the lease).
12
+ */
13
+ export type EditorEditability = Readonly<{
14
+ kind: 'unleased';
15
+ reason: UnleasedReason;
16
+ }> | Readonly<{
17
+ kind: 'viewing';
18
+ }> | Readonly<{
19
+ kind: 'acquiring';
20
+ }> | Readonly<{
21
+ kind: 'editable';
22
+ token: EditLeaseToken;
23
+ }> | Readonly<{
24
+ kind: 'read-only';
25
+ reason: 'held-elsewhere';
26
+ holder: EditLeaseHolder;
27
+ }> | Readonly<{
28
+ kind: 'read-only';
29
+ reason: 'unreachable';
30
+ }>;
31
+ /** The explicit editability of a store that no lease manages, such as the footer composer. */
32
+ export declare const unmanagedSurfaceEditability: EditorEditability;
33
+ export declare function canEditorWrite(editability: EditorEditability): boolean;
34
+ /**
35
+ * Whether a mount's editing surface is made inert. A viewer is never blocked (its writes are
36
+ * refused by the store and the API client instead); a tab waiting for or denied the lease is.
37
+ */
38
+ export declare function blocksEditingSurface(editability: EditorEditability): boolean;
@@ -0,0 +1,34 @@
1
+ import type { EditAuthority } from '../../../core/src/index';
2
+ import type { EditorEditability } from './editorEditability';
3
+ import type { EditorLeaseConfig } from './EditLeaseController';
4
+ /**
5
+ * How a mount takes part in the edit lease:
6
+ * - a lease config: it holds (or asks for) the lease;
7
+ * - an exemption: it writes without a lease;
8
+ * - viewing: it is not trying to edit, so it mounts no lease controller at all.
9
+ */
10
+ export type EditorLeaseParticipation = EditorLeaseConfig | Extract<EditAuthority, {
11
+ kind: 'exempt';
12
+ }> | EditorViewingParticipation;
13
+ export type EditorViewingParticipation = Readonly<{
14
+ kind: 'viewing';
15
+ }>;
16
+ export declare const VIEWING_PARTICIPATION: EditorViewingParticipation;
17
+ type ClassifiedParticipation = Readonly<{
18
+ kind: 'leased';
19
+ config: EditorLeaseConfig;
20
+ }> | Extract<EditAuthority, {
21
+ kind: 'exempt';
22
+ }> | EditorViewingParticipation;
23
+ export type LeaseParticipationKind = ClassifiedParticipation['kind'];
24
+ export declare function classifyLeaseParticipation(participation: EditorLeaseParticipation): ClassifiedParticipation;
25
+ export declare function leaseConfigOf(participation: EditorLeaseParticipation): EditorLeaseConfig | null;
26
+ /** Viewing and leased mounts share one store identity, so switching between them keeps local edits. */
27
+ export declare function leaseExemptionOf(participation: EditorLeaseParticipation): "team-member-profile" | "sdk" | null;
28
+ export declare function initialParticipationEditability(participation: EditorLeaseParticipation): EditorEditability;
29
+ /**
30
+ * The store's editability after the mount's participation changes. A lease controller owns
31
+ * editability while it is mounted; this only moves the store into and out of `viewing`.
32
+ */
33
+ export declare function nextParticipationEditability(participation: LeaseParticipationKind, current: EditorEditability): EditorEditability;
34
+ export {};
@@ -0,0 +1,29 @@
1
+ import type { ContentRouteRecord } from '../../../api/src/content-editor';
2
+ import { type ContentEntrySnapshot, type RoutingHelpers } from '../../../content-model/src/index';
3
+ /**
4
+ * A snapshot's metadata values as the editor holds and sends them. A homepage has no
5
+ * slug (the snapshot's is null); the editor holds that as '', which is what the metadata
6
+ * endpoints accept, so a whole-record save after a lifecycle write isn't refused.
7
+ */
8
+ export declare function normalizedMetadataBaseline(entry: ContentEntrySnapshot): Record<string, unknown>;
9
+ /** A document's metadata as the store holds it: its values, published baseline and draft revision. */
10
+ export type DocumentMetadata = Readonly<{
11
+ values: Record<string, unknown>;
12
+ published: Record<string, unknown> | null;
13
+ revision: string | null;
14
+ }>;
15
+ /**
16
+ * The one mapping from an entry snapshot to the metadata the store holds, for server
17
+ * props, lease-grant reads and the route rows lifecycle writes return.
18
+ */
19
+ export declare function snapshotMetadata(snapshot: ContentEntrySnapshot, routing: RoutingHelpers, revision: string | null): DocumentMetadata;
20
+ /** A route row (a write's own result, or a read) as the owning document's metadata. */
21
+ export declare function routeMetadata(documentId: string, route: ContentRouteRecord, routing: RoutingHelpers): DocumentMetadata;
22
+ export declare function routeField(route: Record<string, unknown>, camel: string, snake: string): unknown;
23
+ /**
24
+ * A metadata save's stored route as the values the editor holds, normalised like
25
+ * `normalizedMetadataBaseline`: a homepage's stored slug is null, held as ''. Otherwise a
26
+ * later edit sees the null as a change of its own and sends it, which the metadata
27
+ * endpoints refuse (issue 1553, found by the discard E2E).
28
+ */
29
+ export declare function savedRouteMetadataValues(route: Record<string, unknown>): Record<string, unknown>;
@@ -0,0 +1,14 @@
1
+ import type { PageSurfaceEditorDocument } from '../../../api/src/content-editor';
2
+ import type { RoutingHelpers } from '../../../content-model/src/index';
3
+ import type { DocumentValueBaseline } from './documentValueBaseline';
4
+ export type PageSurfaceDocumentBaselines = Readonly<{
5
+ metadata: DocumentValueBaseline;
6
+ content: DocumentValueBaseline;
7
+ }>;
8
+ /**
9
+ * The editor baselines a page surface's server document stands for: its
10
+ * route's draft metadata and its content draft, each with the revision the
11
+ * next save must quote. Re-reading after a lease grant and applying a discard
12
+ * both read the document this way, so the two agree with the first load.
13
+ */
14
+ export declare function pageSurfaceDocumentBaselines(document: PageSurfaceEditorDocument, routing: RoutingHelpers): PageSurfaceDocumentBaselines;
@@ -0,0 +1,11 @@
1
+ import type { PublishPageSurfaceResponse } from '../../../api/src/content-editor';
2
+ import type { RoutingHelpers } from '../../../content-model/src/index';
3
+ import type { EditorUiStoreInstance } from '../ui/editorUiStore';
4
+ import type { DocumentSince } from '../sync/runLifecycle';
5
+ import type { DiscardLifecycleResult } from '../services/contentEntryServices';
6
+ import type { ContentEntrySnapshot } from '../../../content-model/src/index';
7
+ /** A native publication follows the same atomic receipt reconciliation as entries. */
8
+ export declare function applyPageSurfacePublish(store: EditorUiStoreInstance, routing: RoutingHelpers | undefined, since: DocumentSince, publication: PublishPageSurfaceResponse): void;
9
+ export declare function applyPageSurfaceDiscard(store: EditorUiStoreInstance, routing: RoutingHelpers | undefined, since: DocumentSince, result: Extract<DiscardLifecycleResult<ContentEntrySnapshot>, {
10
+ kind: 'serverDocument';
11
+ }>): void;
@@ -0,0 +1,19 @@
1
+ import type { EditorBlockVersions } from '../../../core/src/index';
2
+ import type { BlockDraftBaselineSeed } from '../../../editor-blocks/src/index';
3
+ import type { ValueRefresh } from '../ui/editorRefresh';
4
+ import type { DocumentValueBaseline } from './documentValueBaseline';
5
+ export type { DocumentValueBaseline };
6
+ export type FreshDocumentBaselines = Readonly<{
7
+ metadata: DocumentValueBaseline;
8
+ content: DocumentValueBaseline | null;
9
+ blocks: readonly (BlockDraftBaselineSeed & Readonly<{
10
+ versions: EditorBlockVersions;
11
+ }>)[];
12
+ }>;
13
+ /**
14
+ * A fresh read of the whole document as refresh events. The refresh policy (keep-local,
15
+ * or take-back after a grant) is the reducer's to apply, against each value's local
16
+ * intent (issue 1553). Only incoming items are refreshed; a block missing from the read
17
+ * is left alone, as the block seeder does.
18
+ */
19
+ export declare function planDocumentBaselineRefresh(fresh: FreshDocumentBaselines): readonly ValueRefresh[];
@@ -0,0 +1,19 @@
1
+ import type { ApiClient } from '../../../api/src/request';
2
+ import { type ContentTypeSchema } from '../../../content-model/src/index';
3
+ import { type ServerBlockItem } from '../../../editor-blocks/src/index';
4
+ import { type BlockFieldExtensions } from '../../../editor-blocks/src/block-editor/blockDraftBaselineSeed';
5
+ import type { EditLeaseScope } from '../../../core/src/index';
6
+ import type { FreshDocumentBaselines } from './planDocumentBaselineRefresh';
7
+ export type DocumentLeaseReadInput = Readonly<{
8
+ apiClient: ApiClient;
9
+ siteId: string;
10
+ scope: EditLeaseScope;
11
+ type: string;
12
+ schema: ContentTypeSchema;
13
+ blockFieldExtensions?: BlockFieldExtensions | null;
14
+ }>;
15
+ export type DocumentLeaseBaselines = Readonly<{
16
+ baselines: FreshDocumentBaselines;
17
+ blocks: readonly ServerBlockItem[];
18
+ }>;
19
+ export declare function readDocumentLeaseBaselines(input: DocumentLeaseReadInput): Promise<DocumentLeaseBaselines>;
@@ -0,0 +1,12 @@
1
+ import type { RefreshPolicy } from '../sync/valueSync';
2
+ import type { EditorUiStoreInstance } from '../ui/editorUiStore';
3
+ import { type DocumentLeaseReadInput } from './readDocumentLeaseBaselines';
4
+ /**
5
+ * The grant's authoritative reread (row F8). It waits until no save is outstanding, so
6
+ * the read sees this tab's own saves, then applies every fresh baseline in one refresh
7
+ * under the grant's policy. All reads complete before anything changes, and a grant that
8
+ * was overtaken while it waited or read applies nothing.
9
+ */
10
+ export declare function refreshDocumentLeaseBaseline(input: DocumentLeaseReadInput & Readonly<{
11
+ uiStore: EditorUiStoreInstance;
12
+ }>, policy: Extract<RefreshPolicy, 'keep-local' | 'take-back'>, isCurrent: () => boolean): Promise<void>;
@@ -0,0 +1,17 @@
1
+ import type { ApiClient } from '../../../api/src/request';
2
+ import type { EditorUiStoreInstance } from '../ui/editorUiStore';
3
+ import type { EditorEditability } from './editorEditability';
4
+ /** Updates a linked entry's own lease session, if it has one. */
5
+ export declare function updateLinkedEntrySession(store: EditorUiStoreInstance, entryId: string, update: Partial<Readonly<{
6
+ editability: EditorEditability;
7
+ discarded: boolean;
8
+ }>>): void;
9
+ /**
10
+ * The linked entry's grant reread: it waits until the entry has no save outstanding, so
11
+ * the read sees this tab's own save (row F8), then applies the read as one refresh.
12
+ */
13
+ export declare function refreshLinkedEntry(apiClient: ApiClient, store: EditorUiStoreInstance, scope: Readonly<{
14
+ siteId: string;
15
+ type: string;
16
+ entryId: string;
17
+ }>, takingBack: boolean, isCurrent: () => boolean): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  import { type EditorPageId, type EditorSiteId } from '../ui/editorHistory';
2
2
  import type { EditorEffect, EditorHistorySnapshot } from '../ui/editorHistory';
3
3
  import type { EditorUiStoreInstance } from '../ui/editorUiStore';
4
+ import type { LifecycleOutcome } from '../ui/stores/types';
4
5
  import type { ApiClient } from '../services';
5
- import { type EditorEffectDrainResult } from './editorEffectDrain';
6
6
  type ReplayRestoredEditorEffectsArgs = Readonly<{
7
7
  previous: EditorHistorySnapshot;
8
8
  effects: readonly EditorEffect[];
@@ -10,7 +10,6 @@ type ReplayRestoredEditorEffectsArgs = Readonly<{
10
10
  siteId: EditorSiteId;
11
11
  pageId: EditorPageId;
12
12
  uiStore: EditorUiStoreInstance;
13
- setErrorMessage: (message: string | null) => void;
14
13
  }>;
15
- export declare function replayRestoredEditorEffects({ previous, effects, apiClient, siteId, pageId, uiStore, setErrorMessage, }: ReplayRestoredEditorEffectsArgs): Promise<EditorEffectDrainResult>;
14
+ export declare function replayRestoredEditorEffects({ previous, effects, apiClient, siteId, pageId, uiStore, }: ReplayRestoredEditorEffectsArgs): Promise<LifecycleOutcome>;
16
15
  export {};
@@ -0,0 +1,26 @@
1
+ import type { ContentRouteRecord } from '../../../api/src/content-editor';
2
+ import type { EditorUiStoreInstance } from '../ui/editorUiStore';
3
+ import type { LifecycleOutcome } from '../ui/stores/types';
4
+ import { type DocumentSince } from '../sync/runLifecycle';
5
+ import type { DocumentMetadata } from './normalizedMetadataBaseline';
6
+ /** Lifecycle writes a host issues itself: native page-surface publish, schedule and cancel. */
7
+ export type RouteWriteOperation = 'publish' | 'schedule' | 'cancel-schedule';
8
+ /**
9
+ * Writes whose response is the route row they wrote (issue 1553, A), run through the
10
+ * document's one lifecycle shell (B-ownership): each settles what its operation settles
11
+ * first, holds the document while its request is out, and applies its response as this
12
+ * tab's own write.
13
+ */
14
+ export type RouteWrites = Readonly<{
15
+ /** The document metadata a route row holds: values, published baseline and draft revision. */
16
+ metadataOf: (route: ContentRouteRecord) => DocumentMetadata;
17
+ /**
18
+ * Runs such a write under `operation`'s reconciliation; `apply` receives the response
19
+ * and what the person's edits are measured from. A refusal or rejected request is the
20
+ * outcome's failure (also the banner's); callers branch on it rather than catching.
21
+ */
22
+ run: <T>(operation: RouteWriteOperation, request: () => Promise<T>, apply: (response: T, since: DocumentSince) => void) => Promise<LifecycleOutcome>;
23
+ /** Applies a route row as this tab's own write: rebased under any edit typed meanwhile (rows R1–R11, WR4). */
24
+ applyRoute: (route: ContentRouteRecord, since: DocumentSince) => void;
25
+ }>;
26
+ export declare function createRouteWrites(uiStore: EditorUiStoreInstance, metadataOf: RouteWrites['metadataOf']): RouteWrites;
@@ -1,29 +1,28 @@
1
- import type { useStoreAutosave } from '../hooks/useStoreAutosave';
2
- import type { useBlockAutosave } from '../hooks/useBlockAutosave';
3
- import type { AutosaveHandle } from '../hooks/useSimpleAutosave';
4
1
  import type { createEditorUiStore } from '../ui/editorUiStore';
2
+ import type { AutosaveHandle, AutosaveType } from '../ui/stores/types';
3
+ import { type SchedulerValue, type SendSignature } from '../sync/sendPlanning';
4
+ type TriggerHandle = Pick<AutosaveHandle, 'trigger'>;
5
5
  type UseAutosaveTriggersProps = {
6
6
  uiStore: ReturnType<typeof createEditorUiStore>;
7
- metadataAutosave: ReturnType<typeof useStoreAutosave>;
8
- blockAutosave: ReturnType<typeof useBlockAutosave>;
9
- linkedEntryAutosave?: AutosaveHandle | null;
7
+ metadataAutosave: TriggerHandle;
8
+ blockAutosave: TriggerHandle;
9
+ linkedEntryAutosave?: TriggerHandle | null;
10
10
  /** Content autosave - only provided for content entries (not pages) */
11
- contentAutosave?: ReturnType<typeof useStoreAutosave> | null;
11
+ contentAutosave?: TriggerHandle | null;
12
12
  hasRoute: boolean;
13
13
  /** When false, does not trigger background autosaves (manual-save mode). */
14
14
  enableTriggers?: boolean;
15
15
  };
16
+ type SignatureMemory = Readonly<Record<AutosaveType, SendSignature>>;
16
17
  /**
17
- * Hook that orchestrates autosave triggering based on draft state changes.
18
- *
19
- * Uses VERSION-BASED TRIGGERING to handle continuous editing correctly:
20
- * - Metadata: Triggers when status='pending' AND version changed
21
- * - Content: Triggers when status='pending' AND version changed (content entries only)
22
- * - Blocks: Triggers when any block has status='pending' AND version changed
23
- *
24
- * This solves the "autosave only fires once" bug that occurred with status
25
- * transition tracking. When a user continues editing during/after save,
26
- * status stays 'pending' but version increments, so we still trigger.
18
+ * Which schedulers are due: those whose send signature changed and isn't empty. The
19
+ * signature covers edits, a request settling with newer edits and a value becoming
20
+ * writable again, so each of those starts a save (issue 1553, rows S2, S5, D2).
27
21
  */
22
+ export declare function dueSchedulers(previous: SignatureMemory, values: readonly SchedulerValue[]): Readonly<{
23
+ memory: SignatureMemory;
24
+ due: readonly AutosaveType[];
25
+ }>;
26
+ /** Starts each scheduler's debounced save when its values may send something new. */
28
27
  export declare function useAutosaveTriggers({ uiStore, metadataAutosave, blockAutosave, linkedEntryAutosave, contentAutosave, hasRoute, enableTriggers, }: UseAutosaveTriggersProps): void;
29
28
  export {};
@@ -1,10 +1,14 @@
1
- import { type Dispatch, type SetStateAction } from 'react';
2
1
  import type { EditorUiStoreInstance } from '../ui/editorUiStore';
3
2
  import { type BlockedPublishPlan } from '../hooks/blockedPublishPlan';
4
3
  type VisibleBlockedPublishPlan = Extract<BlockedPublishPlan, {
5
4
  type: 'blocked';
6
5
  }>;
7
- export declare function useBlockedPublishPlan(uiStore: EditorUiStoreInstance, setErrorMessage: Dispatch<SetStateAction<string | null>>): readonly [
6
+ /**
7
+ * The publish-blocking plan a refused publish showed, kept current: it's re-derived on
8
+ * every block change and cleared once validation passes. The error banner reads its
9
+ * message while the `invalid-blocks` failure holds (row B5).
10
+ */
11
+ export declare function useBlockedPublishPlan(uiStore: EditorUiStoreInstance): readonly [
8
12
  VisibleBlockedPublishPlan | null,
9
13
  (plan: VisibleBlockedPublishPlan | null) => void
10
14
  ];
@@ -1,4 +1,4 @@
1
- import type { BlockItem } from '../../../editor-blocks/src/block-editor/types';
1
+ import type { BlockItem, ServerBlockItem } from '../../../editor-blocks/src/block-editor/types';
2
2
  import type { EditorUiState } from '../ui/editorUiStore';
3
3
  import type { ApiClient } from '../services';
4
4
  type StoreApi<T> = {
@@ -11,10 +11,10 @@ export declare function useBlocksList({ apiClient, uiStore, siteId, entryId, isP
11
11
  siteId: string;
12
12
  entryId: string;
13
13
  isPage: boolean;
14
- initialBlocks: BlockItem[];
14
+ initialBlocks: ServerBlockItem[];
15
15
  }): {
16
16
  blocksSlice: {
17
- list: BlockItem[];
17
+ list: import("../ui/editorSnapshot").NormalizedEditorBlockItem[];
18
18
  status: "idle";
19
19
  actions: {
20
20
  setList: (next: BlockItem[]) => void;