@riverbankcms/sdk 0.147.0 → 0.148.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 (381) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{PreviewEditorSidebar-DtpB3_sS.mjs → PreviewEditorSidebar-DvEPG3Z2.mjs} +202 -143
  3. package/dist/{PreviewEditorUI-DxTLgaHo.mjs → PreviewEditorUI-D6eb6fkx.mjs} +68 -60
  4. package/dist/{PreviewQueryProvider-Dd4dxOiU.mjs → PreviewQueryProvider-5znTyJuz.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DMMNCngt.mjs → SdkPreviewModeRuntime-DJ6utQ_R.mjs} +1191 -513
  6. package/dist/{SiteChromeCustomizeContext-DQXZXiqS.mjs → SiteChromeCustomizeContext-CFJYh6vo.mjs} +201798 -197304
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +0 -33
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +0 -3
  9. package/dist/_dts/api/src/accessAdmin.d.ts +0 -4
  10. package/dist/_dts/api/src/accountApi.d.ts +1 -1
  11. package/dist/_dts/api/src/admin.d.ts +22 -22
  12. package/dist/_dts/api/src/aiPatch.d.ts +2 -2
  13. package/dist/_dts/api/src/aiPlayground.d.ts +1 -0
  14. package/dist/_dts/api/src/analytics.d.ts +2 -2
  15. package/dist/_dts/api/src/apiEndpointTypes.d.ts +2 -0
  16. package/dist/_dts/api/src/appointmentSetup.d.ts +2 -2
  17. package/dist/_dts/api/src/auth.d.ts +10 -10
  18. package/dist/_dts/api/src/availability.d.ts +6 -6
  19. package/dist/_dts/api/src/billing.d.ts +42 -15
  20. package/dist/_dts/api/src/billingEndpointDefinitions.d.ts +8 -0
  21. package/dist/_dts/api/src/billingEndpointTypes.d.ts +15 -6
  22. package/dist/_dts/api/src/blocks.d.ts +15 -14
  23. package/dist/_dts/api/src/blocksKeys.d.ts +2 -0
  24. package/dist/_dts/api/src/bookingConfig.d.ts +0 -2
  25. package/dist/_dts/api/src/bookingOperations.d.ts +4 -4
  26. package/dist/_dts/api/src/bookingRecords.d.ts +1 -0
  27. package/dist/_dts/api/src/bookings.d.ts +7 -7
  28. package/dist/_dts/api/src/calendar.d.ts +9 -9
  29. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +7 -6
  30. package/dist/_dts/api/src/common/envelope.d.ts +2 -2
  31. package/dist/_dts/api/src/content-editor.d.ts +2 -2
  32. package/dist/_dts/api/src/contentEntries.d.ts +17 -48
  33. package/dist/_dts/api/src/contentRuntime.d.ts +51 -37
  34. package/dist/_dts/api/src/contentTypes.d.ts +11 -11
  35. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +6 -6
  36. package/dist/_dts/api/src/documentLifecycle.d.ts +67 -0
  37. package/dist/_dts/api/src/domains.d.ts +16 -16
  38. package/dist/_dts/api/src/editLeaseEndpoints.d.ts +72 -0
  39. package/dist/_dts/api/src/emailSettings.d.ts +4 -4
  40. package/dist/_dts/api/src/endpoints.d.ts +133 -41
  41. package/dist/_dts/api/src/eventEmailTemplates.d.ts +2 -2
  42. package/dist/_dts/api/src/eventManagementContracts.d.ts +25 -0
  43. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +0 -8
  44. package/dist/_dts/api/src/eventPageWords.d.ts +7 -12
  45. package/dist/_dts/api/src/footerSettings.d.ts +6 -6
  46. package/dist/_dts/api/src/index.d.ts +6 -5
  47. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -0
  48. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  49. package/dist/_dts/api/src/navigation.d.ts +5 -5
  50. package/dist/_dts/api/src/pageSurfaceEditorEndpoints.d.ts +55 -0
  51. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +28 -7
  52. package/dist/_dts/api/src/pages.d.ts +7 -7
  53. package/dist/_dts/api/src/performance.d.ts +1 -1
  54. package/dist/_dts/api/src/public/index.d.ts +1 -1
  55. package/dist/_dts/api/src/publicAppointmentBookingContracts.d.ts +2 -0
  56. package/dist/_dts/api/src/publicExperience/commerceEndpoints.d.ts +4 -0
  57. package/dist/_dts/api/src/redirects.d.ts +3 -3
  58. package/dist/_dts/api/src/request.d.ts +10 -1
  59. package/dist/_dts/api/src/resources.d.ts +4 -4
  60. package/dist/_dts/api/src/routes.d.ts +8 -3
  61. package/dist/_dts/api/src/sdk-event-upsert.d.ts +0 -1
  62. package/dist/_dts/api/src/sdkBlockUpsertContracts.d.ts +21 -0
  63. package/dist/_dts/api/src/sdkContracts.d.ts +5 -28
  64. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +1 -1
  65. package/dist/_dts/api/src/sdkEventOccurrenceRequestContracts.d.ts +43 -0
  66. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +4 -2
  67. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +8 -1
  68. package/dist/_dts/api/src/seo.d.ts +4 -4
  69. package/dist/_dts/api/src/services.d.ts +4 -4
  70. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -8
  71. package/dist/_dts/api/src/siteMembers.d.ts +10 -10
  72. package/dist/_dts/api/src/siteOnboarding.d.ts +14 -0
  73. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +7 -3
  74. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +5 -12
  75. package/dist/_dts/api/src/siteRuntimeEntry.d.ts +31 -0
  76. package/dist/_dts/billing/src/checkout/platform.d.ts +77 -0
  77. package/dist/_dts/billing/src/components/index.d.ts +25 -40
  78. package/dist/_dts/billing/src/membership/index.d.ts +1 -3
  79. package/dist/_dts/billing/src/plans/entitlements.d.ts +80 -0
  80. package/dist/_dts/billing/src/plans/registry.d.ts +16 -16
  81. package/dist/_dts/billing/src/plans/standing.d.ts +9 -2
  82. package/dist/_dts/billing/src/plans/types.d.ts +5 -15
  83. package/dist/_dts/billing/src/site-arrangements.d.ts +2 -2
  84. package/dist/_dts/billing/src/subscriptions/standingEvidence.d.ts +2 -4
  85. package/dist/_dts/billing/src/subscriptions/store.d.ts +17 -11
  86. package/dist/_dts/block-form/src/backend/store-backend.d.ts +6 -7
  87. package/dist/_dts/block-form/src/backend/types.d.ts +7 -0
  88. package/dist/_dts/block-form/src/widgets/FieldFrame.d.ts +3 -1
  89. package/dist/_dts/blocks/src/client/events.d.ts +3 -0
  90. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +16 -4
  91. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +4 -13
  92. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +2 -0
  93. package/dist/_dts/blocks/src/portal/types.d.ts +0 -2
  94. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +2 -1
  95. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +3 -1
  96. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +4 -4
  97. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +6 -1
  98. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -2
  99. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  100. package/dist/_dts/blocks/src/system/runtime/api/types/appointments.d.ts +2 -0
  101. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +6 -0
  102. package/dist/_dts/blocks/src/system/runtime/api/types/portal.d.ts +6 -0
  103. package/dist/_dts/blocks/src/system/runtime/api/types/shop.d.ts +4 -0
  104. package/dist/_dts/blocks/src/system/runtime/components/booking/SuccessMessage.d.ts +4 -1
  105. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -6
  106. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -3
  107. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +3 -0
  108. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +2 -1
  109. package/dist/_dts/blocks/src/system/runtime/hooks/usePolling.d.ts +7 -48
  110. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.checkout-return-context.d.ts +7 -0
  111. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.completion.d.ts +3 -1
  112. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +4 -0
  113. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +9 -0
  114. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.payment-confirmation.d.ts +13 -0
  115. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +15 -1
  116. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-actions.d.ts +8 -0
  117. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.submit-handler.d.ts +1 -0
  118. package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +1 -0
  119. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +2 -1
  120. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  121. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizard.d.ts +5 -0
  122. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/SuccessStep.d.ts +4 -1
  123. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -0
  124. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +2 -5
  125. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +9 -5
  126. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +6 -0
  127. package/dist/_dts/blocks/src/system/runtime/nodes/events/domain/dates.d.ts +37 -3
  128. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.client.d.ts +1 -1
  129. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +16 -1
  130. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCardPresentations.d.ts +13 -0
  131. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +5 -5
  132. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.d.ts +1 -14
  133. package/dist/_dts/blocks/src/system/runtime/nodes/shared/MagicLinkForm.state.d.ts +12 -0
  134. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  135. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoBookingPortalAccess.d.ts +22 -0
  136. package/dist/_dts/blocks/src/system/runtime/shared/components/DemoPortalSignInLink.d.ts +4 -0
  137. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  138. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoBookingPassStorage.d.ts +10 -0
  139. package/dist/_dts/blocks/src/system/runtime/shared/utils/demoPortalMagicLink.d.ts +29 -0
  140. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +4 -0
  141. package/dist/_dts/content-editor/src/components/ContentFieldsForm.d.ts +2 -7
  142. package/dist/_dts/content-editor/src/controller/EditLeaseController.d.ts +39 -0
  143. package/dist/_dts/content-editor/src/controller/EditorWriteGate.d.ts +38 -0
  144. package/dist/_dts/content-editor/src/controller/EntryControllerProvider.d.ts +25 -61
  145. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseBanner.d.ts +7 -0
  146. package/dist/_dts/content-editor/src/controller/LinkedEntryLeaseControllers.d.ts +14 -0
  147. package/dist/_dts/content-editor/src/controller/deriveEditorUnpublishedState.d.ts +6 -0
  148. package/dist/_dts/content-editor/src/controller/documentValueBaseline.d.ts +25 -0
  149. package/dist/_dts/content-editor/src/controller/editLeaseLossSignal.d.ts +6 -0
  150. package/dist/_dts/content-editor/src/controller/editLeaseNotice.d.ts +28 -0
  151. package/dist/_dts/content-editor/src/controller/editorClientId.d.ts +2 -0
  152. package/dist/_dts/content-editor/src/controller/editorEditability.d.ts +38 -0
  153. package/dist/_dts/content-editor/src/controller/editorLeaseParticipation.d.ts +34 -0
  154. package/dist/_dts/content-editor/src/controller/normalizedMetadataBaseline.d.ts +29 -0
  155. package/dist/_dts/content-editor/src/controller/pageSurfaceDocumentBaselines.d.ts +14 -0
  156. package/dist/_dts/content-editor/src/controller/pageSurfaceLifecycle.d.ts +11 -0
  157. package/dist/_dts/content-editor/src/controller/planDocumentBaselineRefresh.d.ts +19 -0
  158. package/dist/_dts/content-editor/src/controller/readDocumentLeaseBaselines.d.ts +19 -0
  159. package/dist/_dts/content-editor/src/controller/refreshDocumentLeaseBaseline.d.ts +12 -0
  160. package/dist/_dts/content-editor/src/controller/refreshLinkedEntry.d.ts +17 -0
  161. package/dist/_dts/content-editor/src/controller/replayRestoredEditorEffects.d.ts +2 -3
  162. package/dist/_dts/content-editor/src/controller/routeWrites.d.ts +26 -0
  163. package/dist/_dts/content-editor/src/controller/useAutosaveTriggers.d.ts +16 -17
  164. package/dist/_dts/content-editor/src/controller/useBlockedPublishPlan.d.ts +6 -2
  165. package/dist/_dts/content-editor/src/controller/useBlocksList.d.ts +3 -3
  166. package/dist/_dts/content-editor/src/controller/useEntryValueAutosaves.d.ts +21 -0
  167. package/dist/_dts/content-editor/src/controller/useInitialEditorUiStore.d.ts +24 -0
  168. package/dist/_dts/content-editor/src/controller/useServerBaselineReconciliation.d.ts +17 -0
  169. package/dist/_dts/content-editor/src/footerComposerPanelTypes.d.ts +1 -1
  170. package/dist/_dts/content-editor/src/hooks/applyBlockedPublishPlan.d.ts +5 -1
  171. package/dist/_dts/content-editor/src/hooks/blockDraftLifecycle.d.ts +8 -47
  172. package/dist/_dts/content-editor/src/hooks/editLeaseMachine.d.ts +120 -0
  173. package/dist/_dts/content-editor/src/hooks/publishability.d.ts +6 -10
  174. package/dist/_dts/content-editor/src/hooks/useAutosaveStatus.d.ts +3 -0
  175. package/dist/_dts/content-editor/src/hooks/useBlockAutosave.d.ts +5 -15
  176. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +7 -5
  177. package/dist/_dts/content-editor/src/hooks/useEditLease.d.ts +28 -0
  178. package/dist/_dts/content-editor/src/hooks/useEntryActions.d.ts +25 -39
  179. package/dist/_dts/content-editor/src/hooks/useEntryMutations.d.ts +17 -19
  180. package/dist/_dts/content-editor/src/hooks/useLinkedEntryAutosave.d.ts +5 -8
  181. package/dist/_dts/content-editor/src/hooks/useValueAutosave.d.ts +64 -0
  182. package/dist/_dts/content-editor/src/hooks/validateBlocksForPublish.d.ts +0 -7
  183. package/dist/_dts/content-editor/src/index.d.ts +26 -7
  184. package/dist/_dts/content-editor/src/linkedEntries/domain.d.ts +12 -0
  185. package/dist/_dts/content-editor/src/linkedEntries/owner.d.ts +9 -0
  186. package/dist/_dts/content-editor/src/liveDrafts/draftProjection.d.ts +66 -0
  187. package/dist/_dts/content-editor/src/liveDrafts/linkedSaveHandovers.d.ts +37 -0
  188. package/dist/_dts/content-editor/src/liveDrafts/remoteDraftOverlay.d.ts +113 -0
  189. package/dist/_dts/content-editor/src/liveDrafts/useLiveDrafts.d.ts +32 -0
  190. package/dist/_dts/content-editor/src/liveDrafts/useRetentionTicks.d.ts +7 -0
  191. package/dist/_dts/content-editor/src/primitives/shared/activePreviewField.d.ts +6 -0
  192. package/dist/_dts/content-editor/src/primitives/shared/storeBinding.d.ts +1 -0
  193. package/dist/_dts/content-editor/src/services/contentEntryServices.d.ts +96 -19
  194. package/dist/_dts/content-editor/src/services/editorApiClient.d.ts +13 -0
  195. package/dist/_dts/content-editor/src/services/index.d.ts +2 -0
  196. package/dist/_dts/content-editor/src/services/pageSurfaceEditorServices.d.ts +23 -0
  197. package/dist/_dts/content-editor/src/sync/flushValues.d.ts +13 -0
  198. package/dist/_dts/content-editor/src/sync/lifecycleFailure.d.ts +51 -0
  199. package/dist/_dts/content-editor/src/sync/runLifecycle.d.ts +64 -0
  200. package/dist/_dts/content-editor/src/sync/schedulerValues.d.ts +27 -0
  201. package/dist/_dts/content-editor/src/sync/sendPlanning.d.ts +104 -0
  202. package/dist/_dts/content-editor/src/sync/valueSync.d.ts +114 -0
  203. package/dist/_dts/content-editor/src/ui/blockCollection.d.ts +8 -0
  204. package/dist/_dts/content-editor/src/ui/documentLifecycle.d.ts +18 -0
  205. package/dist/_dts/content-editor/src/ui/editorLeaseUiState.d.ts +7 -0
  206. package/dist/_dts/content-editor/src/ui/editorRefresh.d.ts +82 -0
  207. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +102 -127
  208. package/dist/_dts/content-editor/src/ui/editorTransactionState.d.ts +1 -1
  209. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +126 -72
  210. package/dist/_dts/content-editor/src/ui/editorValueSnapshot.d.ts +18 -0
  211. package/dist/_dts/content-editor/src/ui/serverBlockAdmission.d.ts +26 -0
  212. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +16 -27
  213. package/dist/_dts/content-editor/src/ui/stores/blockVersionsStore.d.ts +24 -0
  214. package/dist/_dts/content-editor/src/ui/stores/linkedEntryLeaseStore.d.ts +54 -0
  215. package/dist/_dts/content-editor/src/ui/stores/linkedSaveHandoversStore.d.ts +11 -0
  216. package/dist/_dts/content-editor/src/ui/stores/remoteDraftsStore.d.ts +10 -0
  217. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +63 -3
  218. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +2 -2
  219. package/dist/_dts/content-editor/src/useFooterNavigationLayout.d.ts +1 -1
  220. package/dist/_dts/content-model/src/content-types/builtin-schemas.d.ts +4 -4
  221. package/dist/_dts/content-model/src/content-types/builtins.d.ts +4 -4
  222. package/dist/_dts/content-model/src/definitions/shared.d.ts +11 -2
  223. package/dist/_dts/content-model/src/entry-slots/index.d.ts +1 -0
  224. package/dist/_dts/content-model/src/entry-slots/serializeAllowedBlocks.d.ts +2 -0
  225. package/dist/_dts/content-model/src/metadataConfig.d.ts +10 -38
  226. package/dist/_dts/content-model/src/templates/defaults.d.ts +0 -1
  227. package/dist/_dts/content-model/src/types.d.ts +0 -1
  228. package/dist/_dts/core/src/block-content-identity.d.ts +49 -1
  229. package/dist/_dts/core/src/branded.d.ts +12 -0
  230. package/dist/_dts/core/src/currency-format.d.ts +8 -2
  231. package/dist/_dts/core/src/demo-lifecycle-status.d.ts +2 -2
  232. package/dist/_dts/core/src/demo-warm-pool-target.d.ts +8 -0
  233. package/dist/_dts/core/src/edit-lease.d.ts +55 -0
  234. package/dist/_dts/core/src/editor-state.d.ts +38 -13
  235. package/dist/_dts/core/src/editor-value-sync.d.ts +79 -0
  236. package/dist/_dts/core/src/html-entities.d.ts +6 -0
  237. package/dist/_dts/core/src/index.d.ts +4 -0
  238. package/dist/_dts/core/src/uuid.d.ts +7 -5
  239. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +159 -153
  240. package/dist/_dts/editor/src/EditorProvider.d.ts +5 -0
  241. package/dist/_dts/editor/src/chrome/EditorChrome.d.ts +14 -0
  242. package/dist/_dts/editor/src/chrome/EditorStatusBar.d.ts +1 -0
  243. package/dist/_dts/editor/src/chrome/statusBarPresentation.d.ts +0 -1
  244. package/dist/_dts/editor/src/index.d.ts +1 -1
  245. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +10 -9
  246. package/dist/_dts/editor-blocks/src/BlockForm.d.ts +1 -1
  247. package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +1 -1
  248. package/dist/_dts/editor-blocks/src/block-editor/BlockCardFrame.d.ts +1 -1
  249. package/dist/_dts/editor-blocks/src/block-editor/BlockSettingsModal.d.ts +1 -1
  250. package/dist/_dts/editor-blocks/src/block-editor/applyExtendedFieldDefaults.d.ts +3 -4
  251. package/dist/_dts/editor-blocks/src/block-editor/blockDraftBaselineSeed.d.ts +4 -8
  252. package/dist/_dts/editor-blocks/src/block-editor/editorBlockItem.d.ts +23 -0
  253. package/dist/_dts/editor-blocks/src/block-editor/generatedIconApplyCoordination.d.ts +2 -7
  254. package/dist/_dts/editor-blocks/src/block-editor/hooks/applyBlockStructureChange.d.ts +4 -0
  255. package/dist/_dts/editor-blocks/src/block-editor/hooks/buildInsertBlockHistoryCommand.d.ts +14 -5
  256. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockBaselineSync.d.ts +21 -19
  257. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockCreation.d.ts +2 -10
  258. package/dist/_dts/editor-blocks/src/block-editor/hooks/useBlockDuplication.d.ts +8 -16
  259. package/dist/_dts/editor-blocks/src/block-editor/owner.d.ts +6 -16
  260. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +37 -9
  261. package/dist/_dts/editor-blocks/src/index.d.ts +2 -1
  262. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +1 -1
  263. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +1 -1
  264. package/dist/_dts/editor-blocks/src/widgets/mailing-list-targeting/loaders.d.ts +1 -1
  265. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +1 -1
  266. package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +3 -2
  267. package/dist/_dts/media-core/src/fileStorage.d.ts +4 -0
  268. package/dist/_dts/media-editor/src/context.d.ts +1 -1
  269. package/dist/_dts/media-editor/src/createMediaEditorProvider.d.ts +1 -2
  270. package/dist/_dts/media-editor/src/provider.d.ts +3 -2
  271. package/dist/_dts/media-react/src/hooks/internal/classification.d.ts +1 -1
  272. package/dist/_dts/media-react/src/hooks/useApiMediaUploader.d.ts +3 -1
  273. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +8 -3
  274. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +6 -3
  275. package/dist/_dts/preview-next/src/client/blocks/linkedEntryRenderOverlay.d.ts +22 -2
  276. package/dist/_dts/preview-next/src/client/blocks/previewProjection/entryFieldRebinding.d.ts +13 -0
  277. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +2 -1
  278. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +11 -1
  279. package/dist/_dts/preview-next/src/client/blocks/renderPrecedence.d.ts +17 -0
  280. package/dist/_dts/preview-next/src/client/blocks/useLinkedSaveHandoverRetention.d.ts +20 -0
  281. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  282. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +2 -1
  283. package/dist/_dts/preview-next/src/client/preview/EntrySlotBlockEditorPanel.d.ts +2 -1
  284. package/dist/_dts/preview-next/src/client/preview/PreviewAccessBanners.d.ts +7 -0
  285. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +2 -1
  286. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +24 -14
  287. package/dist/_dts/preview-next/src/client/preview/PreviewLeaseEditingMode.d.ts +2 -0
  288. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -2
  289. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +1 -0
  290. package/dist/_dts/preview-next/src/client/preview/previewCustomizeAutosave.d.ts +5 -0
  291. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +3 -4
  292. package/dist/_dts/preview-next/src/client/preview/sdkConfig.d.ts +1 -0
  293. package/dist/_dts/preview-next/src/client/preview/usePreviewCustomizeWorkflowState.d.ts +4 -0
  294. package/dist/_dts/realtime/src/client.d.ts +3 -0
  295. package/dist/_dts/realtime/src/draftChannel.d.ts +91 -0
  296. package/dist/_dts/realtime/src/drafts.d.ts +210 -0
  297. package/dist/_dts/realtime/src/index.d.ts +3 -0
  298. package/dist/_dts/realtime/src/leaseChangeSubscriptions.d.ts +8 -0
  299. package/dist/_dts/realtime/src/types.d.ts +113 -0
  300. package/dist/_dts/realtime/src/useDraftChannel.d.ts +34 -0
  301. package/dist/_dts/realtime/src/useSiteRealtimeReload.d.ts +27 -0
  302. package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -55
  303. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  304. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +1 -0
  305. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +2 -0
  306. package/dist/_dts/sdk/src/version.d.ts +1 -1
  307. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  308. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  309. package/dist/client/{BookingMailingListNote-1n4Ch_u_.mjs → BookingMailingListNote-CzRt2dF_.mjs} +98 -96
  310. package/dist/client/DemoBookingPortalAccess-mxqwap3f.mjs +344 -0
  311. package/dist/client/{EventCombined.client-C0pgma9y.mjs → EventCombined.client-CDb11igO.mjs} +6 -6
  312. package/dist/client/{EventListing.client-4fhLOvHP.mjs → EventListing.client-EgYhzKPa.mjs} +2 -2
  313. package/dist/client/{LeafletStaticMap-DScC4F3w.mjs → LeafletStaticMap-gtmtaA2b.mjs} +1 -1
  314. package/dist/client/{TerminalPanel-B5ZUsYhe.mjs → TerminalPanel-DvNUP5ot.mjs} +1 -1
  315. package/dist/client/{ThemedButton-DoVIV1Ao.mjs → ThemedButton-C7CeUJjW.mjs} +1 -1
  316. package/dist/client/{accordion-CoT5g7zo.mjs → accordion-kjvt49rA.mjs} +1 -1
  317. package/dist/client/{bookingForm-BWxB46xD.mjs → bookingForm-pbRZordh.mjs} +212 -62
  318. package/dist/client/bookings.mjs +616 -225
  319. package/dist/client/{carousel-DtNYWFd3.mjs → carousel-f4Zbmicv.mjs} +1 -1
  320. package/dist/client/{cart-z4qZih1Y.mjs → cart-DO20An50.mjs} +3 -3
  321. package/dist/client/{checkout-DpL7euFH.mjs → checkout-Du5amDR_.mjs} +3 -3
  322. package/dist/client/{checkoutUrls-BEfR7kVu.mjs → checkoutUrls-CXhko2Rv.mjs} +1 -1
  323. package/dist/client/client.mjs +1753 -823
  324. package/dist/client/{context-C8TinPJc.mjs → context-eW97E945.mjs} +4 -3
  325. package/dist/client/{dates-vwwxTeB0.mjs → dates-jPCirRea.mjs} +56 -11
  326. package/dist/client/{eventCalendar-DIbHfJXO.mjs → eventCalendar-C2M-iE4j.mjs} +9 -9
  327. package/dist/client/{eventCombined-DoGMJ6cg.mjs → eventCombined-W6ns3LHg.mjs} +4 -4
  328. package/dist/client/{eventDetails-BjN9v6a1.mjs → eventDetails-CR-GT0f0.mjs} +4 -4
  329. package/dist/client/{eventListing-DajjWgOv.mjs → eventListing-BK8AfYZz.mjs} +4 -4
  330. package/dist/client/{eventRegistration-DMq9gMA-.mjs → eventRegistration-BJSd4KUu.mjs} +369 -242
  331. package/dist/client/{form-Qf6qTbos.mjs → form-BvpfbQaT.mjs} +3 -3
  332. package/dist/client/{headerSection-D7qJrqFX.mjs → headerSection-I5sUQ8x-.mjs} +3 -3
  333. package/dist/client/hooks.mjs +254 -53
  334. package/dist/client/{locationMap-CCF9-t_0.mjs → locationMap-BLvwf9_f.mjs} +3 -3
  335. package/dist/client/{media-CwBGetqC.mjs → media-Cl38iOMI.mjs} +10 -3
  336. package/dist/client/{newsletterForm-DzCLSP4S.mjs → newsletterForm-DrQ2weE8.mjs} +3 -3
  337. package/dist/client/{pricing-Cgxv2KLC.mjs → pricing-BES87mrR.mjs} +1 -1
  338. package/dist/client/{productDetail-ru9w5GHx.mjs → productDetail-Url9jcc5.mjs} +3 -3
  339. package/dist/client/{productList-zaapKSl-.mjs → productList-DE7ngEZJ.mjs} +3 -3
  340. package/dist/client/{propsDecoder-CwvvNOHx.mjs → propsDecoder-D1OtGXDV.mjs} +89 -17
  341. package/dist/client/rendering/client.mjs +1445 -658
  342. package/dist/client/rendering/islands.mjs +18 -18
  343. package/dist/client/rendering.mjs +2478 -1515
  344. package/dist/client/{routeIslandApiConfig-BwVFo0Y4.mjs → routeIslandApiConfig-BG9Y-SHg.mjs} +1 -1
  345. package/dist/client/{shop-mktkXvbV.mjs → shop-CJkuySJ3.mjs} +126 -79
  346. package/dist/client/{shop-commerce-De7gEnkA.mjs → shop-commerce-4rKj5n9h.mjs} +25 -13
  347. package/dist/client/{shop-commerce-store-B3MCxIBW.mjs → shop-commerce-store-Bxm75Pg6.mjs} +1 -1
  348. package/dist/client/{shopShared-TqExh235.mjs → shopShared-DpoQDWfz.mjs} +4 -4
  349. package/dist/client/{useEventFilters-n_OjkIjX.mjs → useEventFilters-D8HliSqR.mjs} +32 -17
  350. package/dist/preview-next/before-render.mjs +192 -83
  351. package/dist/preview-next/client/runtime.mjs +4 -4
  352. package/dist/preview-next/keepAlive.mjs +192 -83
  353. package/dist/preview-next/middleware.mjs +192 -83
  354. package/dist/{previewAuthStore-C_EHQ5XA.mjs → previewAuthStore-BXXF3hhW.mjs} +194 -83
  355. package/dist/{sdk-runtime-BIkJg5y1.mjs → sdk-runtime-C2a05WjL.mjs} +2 -2
  356. package/dist/{separator-C9qDP95Z.mjs → separator-CuNhBAhS.mjs} +1 -1
  357. package/dist/server/components.mjs +1720 -1392
  358. package/dist/server/config-validation.mjs +221 -37
  359. package/dist/server/config.mjs +221 -37
  360. package/dist/server/data.mjs +221 -37
  361. package/dist/server/index.mjs +195 -84
  362. package/dist/server/next.mjs +490 -196
  363. package/dist/server/page-converter.mjs +53 -14
  364. package/dist/server/prebuild.mjs +1 -1
  365. package/dist/server/rendering/server.mjs +1427 -1098
  366. package/dist/server/rendering.mjs +2693 -2365
  367. package/dist/server/routing.mjs +291 -55
  368. package/dist/server/server.mjs +281 -114
  369. package/package.json +1 -1
  370. package/dist/_dts/billing/src/plans/display.d.ts +0 -15
  371. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.mailing-list-note.d.ts +0 -3
  372. package/dist/_dts/content-editor/src/controller/buildBlockPublishedBaselines.d.ts +0 -4
  373. package/dist/_dts/content-editor/src/controller/buildPublishSuccessTransition.d.ts +0 -16
  374. package/dist/_dts/content-editor/src/controller/driver.d.ts +0 -14
  375. package/dist/_dts/content-editor/src/controller/seedDraftBaselinesFromBlocks.d.ts +0 -7
  376. package/dist/_dts/content-editor/src/controller/useEntrySyncHelpers.d.ts +0 -29
  377. package/dist/_dts/content-editor/src/hooks/autosaveScopePlanning.d.ts +0 -26
  378. package/dist/_dts/content-editor/src/hooks/useSimpleAutosave.d.ts +0 -64
  379. package/dist/_dts/content-editor/src/hooks/useStoreAutosave.d.ts +0 -48
  380. package/dist/_dts/content-editor/src/types.d.ts +0 -44
  381. package/dist/client/DiscountCodeDisclosure-CKJtz0mY.mjs +0 -137
@@ -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;
@@ -0,0 +1,64 @@
1
+ import type { EditorBlockId, EditorBlockValues, EditorValueRecord } from '../../../core/src/index';
2
+ import type { EditorUiState, EditorUiStoreInstance } from '../ui/editorUiStore';
3
+ import type { HeldOperation, LifecycleFailure, LifecycleOperation, LifecycleOutcome } from '../ui/stores/types';
4
+ import { type FlushPolicy, type LifecycleDrain } from './sendPlanning';
5
+ import { type OwnWriteSince } from './valueSync';
6
+ /**
7
+ * The one shell for the document's lifecycle operations (issue 1553, B-ownership). Save
8
+ * draft and restore replay run under the lifecycle status; publish, schedule, cancel,
9
+ * discard draft and delete also hold the document while their request is out, because
10
+ * they write the same route or draft that autosave does. What each held operation
11
+ * settles first, and what its response's edits are measured from, is data
12
+ * (`LIFECYCLE_RECONCILIATION`), not branches here.
13
+ */
14
+ export declare const DONE: LifecycleOutcome;
15
+ export declare const failed: (failure: LifecycleFailure) => LifecycleOutcome;
16
+ /**
17
+ * What a held operation settles before its request, and what the person's edits are
18
+ * measured from when its response comes back (the "Reconciliation per operation" table).
19
+ * - `settle`: a flush policy. The hold starts immediately. Sending policies drain a
20
+ * frozen checkpoint under that hold; later typing waits. `grant-wait` sends nothing
21
+ * and waits only for requests already out before the operation writes.
22
+ * - `since`: `baseline` keeps every edit (publish, schedule, cancel); `displayed` makes
23
+ * the edits present when the person confirmed part of what the operation throws away
24
+ * (discard draft, rows X1–X4). Delete applies nothing: on success the editor goes.
25
+ */
26
+ type LifecycleReconciliation = Readonly<{
27
+ settle: FlushPolicy;
28
+ since: 'baseline' | 'displayed';
29
+ }>;
30
+ export declare const LIFECYCLE_RECONCILIATION: Readonly<Record<HeldOperation, LifecycleReconciliation>>;
31
+ /** What the document's values were when the hold started, for the response's rebase. */
32
+ export type DocumentSince = Readonly<{
33
+ metadata: OwnWriteSince<EditorValueRecord | null>;
34
+ content: OwnWriteSince<EditorValueRecord | null>;
35
+ blocks: ReadonlyMap<EditorBlockId, OwnWriteSince<EditorBlockValues | null>>;
36
+ }>;
37
+ export declare function documentSince(state: EditorUiState, kind: LifecycleReconciliation['since']): DocumentSince;
38
+ /**
39
+ * Runs a document lifecycle operation under the store's lifecycle status: running while
40
+ * it's under way, then idle or failed with its typed failure, which the banner and the
41
+ * status derive from. A rejected request is the operation's `server` failure; callers
42
+ * get the outcome rather than a throw.
43
+ */
44
+ export declare function runLifecycle(uiStore: EditorUiStoreInstance, operation: LifecycleOperation, action: () => Promise<LifecycleOutcome>): Promise<LifecycleOutcome>;
45
+ /** Waits until the values are settled under `policy`; a refusal is the operation's failure. */
46
+ export declare function flushBefore(uiStore: EditorUiStoreInstance, policy: FlushPolicy, drain?: LifecycleDrain): Promise<LifecycleOutcome | null>;
47
+ export type HeldLifecycle = Readonly<{
48
+ operation: HeldOperation;
49
+ /** A refusal before anything settles or is held (publish's validation), else null. */
50
+ precheck?: () => LifecycleOutcome | null;
51
+ /**
52
+ * The request, and applying its response (as own writes rebased against `since`).
53
+ * The document is held throughout; the hold ends when this settles.
54
+ */
55
+ write: (since: DocumentSince) => Promise<LifecycleOutcome>;
56
+ }>;
57
+ /**
58
+ * Runs a held operation: its precheck, what it settles first, then its request with the
59
+ * document held. Edits typed during the hold aren't sent; once the hold ends they're
60
+ * rebased on the response and autosave sends them against the new revision (rows R2, X3).
61
+ * On failure nothing was applied, so they send as usual (row X5).
62
+ */
63
+ export declare function runHeldLifecycle(uiStore: EditorUiStoreInstance, lifecycle: HeldLifecycle): Promise<LifecycleOutcome>;
64
+ export {};
@@ -0,0 +1,27 @@
1
+ import type { EditorUiState } from '../ui/editorUiStore';
2
+ import type { AutosaveStatus, AutosaveType } from '../ui/stores/types';
3
+ import { type ScheduledValue, type SchedulerValue, type LifecycleDrain } from './sendPlanning';
4
+ import { type FailureFacts } from './lifecycleFailure';
5
+ /**
6
+ * Loads the planners' inputs from the editor store: every value with the scheduler that
7
+ * saves it. The document's own linked entry is its content, so it is listed once.
8
+ */
9
+ export declare function scheduledValues(state: EditorUiState): readonly ScheduledValue[];
10
+ /**
11
+ * Every value with whether this tab may send it now. A document value (metadata, content,
12
+ * a block) isn't writable while a lifecycle operation holds the document: the operation
13
+ * writes the same route or draft, so edits typed meanwhile wait and send once it ends
14
+ * (rows R2, X3). Linked entries have their own revisions and aren't held.
15
+ */
16
+ export declare function schedulerValues(state: EditorUiState, drain?: LifecycleDrain): readonly SchedulerValue[];
17
+ /**
18
+ * The derived autosave status, for one scheduler or the whole document. The document
19
+ * lifecycle counts toward metadata and the whole.
20
+ */
21
+ export declare function selectAutosaveStatus(state: EditorUiState, scheduler?: AutosaveType): AutosaveStatus;
22
+ /**
23
+ * The error banner (rows B1–B7), from the same active failure as the status.
24
+ * `publishBlockedMessage` is the current publish validation message while it blocks.
25
+ */
26
+ export declare function selectBannerMessage(state: EditorUiState, publishBlockedMessage: string | null): string | null;
27
+ export declare function failureFacts(state: EditorUiState, publishBlockedMessage: string | null): FailureFacts;
@@ -0,0 +1,104 @@
1
+ import type { EditorValueRecord, SendId, ValueSync } from '../../../core/src/index';
2
+ import type { EditorValueKey } from '../ui/editorSnapshot';
3
+ import type { AutosaveStatus, AutosaveType, LifecycleStatus } from '../ui/stores/types';
4
+ import { type SendMode } from './valueSync';
5
+ import type { ActiveFailure } from './lifecycleFailure';
6
+ /**
7
+ * Pure planners over the editor's values (issue 1553): what autosave sends, when a
8
+ * flush is done, and the status the status bars show. The store loads the inputs
9
+ * (`schedulerValues`); the hooks and `flushValues` perform the effects.
10
+ */
11
+ /** One value as the planners see it. */
12
+ export type ScheduledValue = Readonly<{
13
+ key: EditorValueKey;
14
+ scheduler: AutosaveType;
15
+ sync: ValueSync<EditorValueRecord | null>;
16
+ }>;
17
+ /** A value plus whether this tab may send it now. */
18
+ export type SchedulerValue = ScheduledValue & Readonly<{
19
+ /** The tab holds write authority for it (`canWriteDraftTarget`). */
20
+ writable: boolean;
21
+ /** Its values may be sent: blocks pass validation, metadata has a title. */
22
+ saveable: boolean;
23
+ }>;
24
+ /** How a flush treats a failed value: Save draft retries it, publish refuses, a grant only waits. */
25
+ export type FlushPolicy = 'save-draft' | 'publish' | 'grant-wait';
26
+ export type LifecycleDrain = Extract<LifecycleStatus, {
27
+ kind: 'holding';
28
+ }>;
29
+ export type FlushCheckpoint = Readonly<{
30
+ key: EditorValueKey;
31
+ values: EditorValueRecord | null;
32
+ saveable: boolean;
33
+ drain?: LifecycleDrain;
34
+ }>;
35
+ export type SendAcknowledgement = Readonly<{
36
+ key: EditorValueKey;
37
+ values: EditorValueRecord | null;
38
+ kind: 'accepted' | 'failed' | 'blocked';
39
+ }>;
40
+ export type FlushRequest = Readonly<{
41
+ scheduler: AutosaveType;
42
+ keys: readonly EditorValueKey[];
43
+ checkpoints?: readonly FlushCheckpoint[];
44
+ signal?: AbortSignal;
45
+ }>;
46
+ export type FlushPlan = Readonly<{
47
+ kind: 'ready';
48
+ }> | Readonly<{
49
+ kind: 'wait';
50
+ }> | Readonly<{
51
+ kind: 'send';
52
+ requests: readonly FlushRequest[];
53
+ }> | Readonly<{
54
+ kind: 'failed';
55
+ keys: readonly EditorValueKey[];
56
+ }> | Readonly<{
57
+ kind: 'blocked';
58
+ keys: readonly EditorValueKey[];
59
+ }>;
60
+ /** How a flush finished. */
61
+ export type FlushResult = Exclude<FlushPlan, Readonly<{
62
+ kind: 'wait' | 'send';
63
+ }>>;
64
+ /** The values that may send now: edited, writable, saveable and allowed by `canSend`. */
65
+ export declare function planSends(values: readonly SchedulerValue[], mode: SendMode): readonly SchedulerValue[];
66
+ /**
67
+ * What an autosave trigger watches: each sendable value with its displayed values and
68
+ * request. It changes on an edit, when a request settles with newer edits, and when a
69
+ * value becomes writable again (rows S2, S5, D2).
70
+ */
71
+ export type SendSignature = readonly unknown[];
72
+ export declare function sendSignature(sendable: readonly SchedulerValue[]): SendSignature;
73
+ export declare function sameSignature(left: SendSignature, right: SendSignature): boolean;
74
+ export declare function valueKeyId(key: EditorValueKey): string;
75
+ /**
76
+ * Whether "saved before X" holds yet. Outstanding requests (in flight or abandoned)
77
+ * are waited for; sendable values are sent; what can never send ends the flush.
78
+ * `retrying` holds the failures this flush may send again (Save draft, row S3b).
79
+ */
80
+ export declare function planFlush(values: readonly SchedulerValue[], policy: FlushPolicy, retrying?: ReadonlySet<SendId>): FlushPlan;
81
+ /** The failures a flush sends again: those it was asked to retry. */
82
+ export declare function retryableFailures(values: readonly ScheduledValue[]): ReadonlySet<SendId>;
83
+ export type AutosaveStatusInput = Readonly<{
84
+ syncs: readonly ValueSync<EditorValueRecord | null>[];
85
+ lifecycle: LifecycleStatus;
86
+ /** The lifecycle failure that still holds (`activeFailure`), the same one the banner reads. */
87
+ failure: ActiveFailure | null;
88
+ lastSavedAt: string | null;
89
+ }>;
90
+ /**
91
+ * The autosave status the status bars show, derived from the values' states plus the
92
+ * document lifecycle. A failure outranks saving, as the per-scheduler statuses it
93
+ * replaced did. Of the lifecycle failures only a refused request (`server`) is an error
94
+ * here: failed values already count through their own states, and blocked or invalid
95
+ * values are the banner's alone (rows B4, B5).
96
+ */
97
+ export declare function deriveAutosaveStatus(input: AutosaveStatusInput): AutosaveStatus;
98
+ /** An operation is under way: settling what it needs first, or holding while its request is out. */
99
+ export declare function isLifecycleRunning(lifecycle: LifecycleStatus): boolean;
100
+ /**
101
+ * The message of the first value whose save failed, which the error banner shows. It's
102
+ * null once no value is failed (a retry succeeded, the edit went back, or was discarded).
103
+ */
104
+ export declare function saveFailureMessage(values: readonly ScheduledValue[]): string | null;
@@ -0,0 +1,114 @@
1
+ import type { BaselineRevision, EditorValueRecord, SaveFailure, SendId, ValueBaseline, ValueSync } from '../../../core/src/index';
2
+ export { displayedValues, syncStateOf, valueStatus, type ValueStatus } from '../../../core/src/index';
3
+ /**
4
+ * The one sync model for editor values (issue 1553). Metadata, content, blocks and
5
+ * linked entries all move through `applyValueSyncEvent`; every rule here is a row in
6
+ * the plan's sequence tables and in `valueSync.test.ts`. Pure: the clock and send ids
7
+ * come in as event data.
8
+ */
9
+ export type SyncValues = EditorValueRecord | null;
10
+ /** Values at the operation boundary, and the server baseline they were based on. */
11
+ export type OwnWriteSince<V extends SyncValues> = Readonly<{
12
+ values: V;
13
+ basis: BaselineRevision;
14
+ }>;
15
+ /**
16
+ * How a refresh (a server read) treats a value the person has edited:
17
+ * - keep-local: an ordinary refresh; the edits stay.
18
+ * - take-back: the tab regained the lease; the edits survive only if nobody else changed the value.
19
+ * - replace: the server draft was discarded; the edits go.
20
+ *
21
+ * A response to this tab's own write isn't a read: it's the `own-write` event, rebased
22
+ * rather than refreshed (`rebaseOnOwnWrite`).
23
+ */
24
+ export type RefreshPolicy = 'keep-local' | 'take-back' | 'replace';
25
+ export type ValueSyncEvent<V extends SyncValues> = Readonly<{
26
+ kind: 'edited';
27
+ values: V;
28
+ }> | Readonly<{
29
+ kind: 'send-started';
30
+ id: SendId;
31
+ checkpoint?: V;
32
+ }> | Readonly<{
33
+ kind: 'send-succeeded';
34
+ id: SendId;
35
+ values: V;
36
+ revision: BaselineRevision;
37
+ at: string;
38
+ published?: Readonly<{
39
+ kind: 'known';
40
+ values: V;
41
+ } | {
42
+ kind: 'unknown';
43
+ }>;
44
+ }> | Readonly<{
45
+ kind: 'send-failed';
46
+ id: SendId;
47
+ failure: SaveFailure;
48
+ }> | Readonly<{
49
+ kind: 'discarded';
50
+ }> | Readonly<{
51
+ kind: 'refreshed';
52
+ baseline: ValueBaseline<V>;
53
+ policy: RefreshPolicy;
54
+ }>
55
+ /** This tab's own write returned `baseline`; `since` is what the person's edits are measured from. */
56
+ | Readonly<{
57
+ kind: 'own-write';
58
+ baseline: ValueBaseline<V>;
59
+ since: OwnWriteSince<V>;
60
+ }>;
61
+ /** `accepted` records `lastSavedAt`; `discarded` asks for the "edited in another tab" notice. */
62
+ export type ValueSyncOutcome = Readonly<{
63
+ kind: 'none';
64
+ }> | Readonly<{
65
+ kind: 'accepted';
66
+ at: string;
67
+ }> | Readonly<{
68
+ kind: 'discarded';
69
+ }>;
70
+ export type ValueSyncTransition<V extends SyncValues> = Readonly<{
71
+ sync: ValueSync<V>;
72
+ outcome: ValueSyncOutcome;
73
+ }>;
74
+ /** `background` sends leave a failure alone until its values change; `explicit` retries it. */
75
+ export type SendMode = 'background' | 'explicit';
76
+ export declare function applyValueSyncEvent<V extends SyncValues>(sync: ValueSync<V>, event: ValueSyncEvent<V>): ValueSyncTransition<V>;
77
+ /** Send ids are unique per store; the store's closure owns the only allocator. */
78
+ export declare function createSendIdAllocator(): () => SendId;
79
+ export declare function isEdited<V extends SyncValues>(sync: ValueSync<V>): boolean;
80
+ /** A request is in flight or abandoned: flushes and grants wait for it to settle. */
81
+ export declare function hasOutstandingRequest<V extends SyncValues>(sync: ValueSync<V>): boolean;
82
+ /** The baseline revision as the wire carries it; `undefined` until the editor receives one. */
83
+ export declare function revisionValue(revision: BaselineRevision): string | null | undefined;
84
+ export declare function baselineRevisionOf<V extends SyncValues>(sync: ValueSync<V>): string | null | undefined;
85
+ /** An optional wire revision (`undefined` means none was received) as a `BaselineRevision`. */
86
+ export declare function revisionFromWire(value: string | null | undefined): BaselineRevision;
87
+ /**
88
+ * Whether a send may start. A failure waits for new values in the background, so a
89
+ * rejected save isn't retried in a loop; an explicit Save draft retries it.
90
+ */
91
+ export declare function canSend<V extends SyncValues>(sync: ValueSync<V>, mode: SendMode): boolean;
92
+ /**
93
+ * The same server baseline, for take-back. Two revisions decide it when both are
94
+ * present; otherwise the revisions (possibly missing) and the values must both match.
95
+ */
96
+ export declare function sameServerBaseline<V extends SyncValues>(left: ValueBaseline<V>, right: ValueBaseline<V>): boolean;
97
+ export declare function valueSyncEqual<V extends SyncValues>(left: ValueSync<V>, right: ValueSync<V>): boolean;
98
+ /**
99
+ * Undo and redo restore what the person sees, never sync state: the target's displayed
100
+ * values become an edit over the present baseline and request (row U1, U2).
101
+ */
102
+ export declare function restoreDisplayedValues<V extends SyncValues>(present: ValueSync<V>, target: ValueSync<V>): ValueSync<V>;
103
+ /** A record brought back from history: its request is long gone (row U3). */
104
+ export declare function withIdleRequest<V extends SyncValues>(sync: ValueSync<V>): ValueSync<V>;
105
+ /**
106
+ * A response to this tab's own write (publish, schedule, cancel, discard). The displayed
107
+ * value keeps changes since the operation's snapshot: an edit is any
108
+ * top-level key whose presence or value differs between `since` and the local values, so
109
+ * a removed key stays removed and a key set to `null` counts. Nested values are whole
110
+ * fields (no deep merge), and where both sides changed a key the person's edit wins.
111
+ * Keys the person didn't touch take the server's value, including its removals. The
112
+ * request is kept: one based on the old revision isn't accepted over the new one (R6).
113
+ */
114
+ export declare function rebaseOnOwnWrite<V extends SyncValues>(sync: ValueSync<V>, server: ValueBaseline<V>, since: OwnWriteSince<V>): ValueSync<V>;
@@ -0,0 +1,8 @@
1
+ import { type EditorBlockCollectionOwner, type EditorBlockCollectionReadBaseline } from '../../../core/src/index';
2
+ import { type DraftBlockRefresh, type EditorBlockItem, type EditorHistorySnapshot } from './editorSnapshot';
3
+ /** A collection read enters through one boundary; a held lifecycle supplies its own result. */
4
+ export declare function mountBlockCollection(snapshot: EditorHistorySnapshot, owner: EditorBlockCollectionOwner, blocks: readonly EditorBlockItem[], seeds: readonly DraftBlockRefresh[], held: boolean, reads?: readonly EditorBlockCollectionReadBaseline[]): EditorHistorySnapshot;
5
+ export declare function unmountBlockCollection(snapshot: EditorHistorySnapshot, owner: EditorBlockCollectionOwner): EditorHistorySnapshot;
6
+ /** Query facts are not history edits; a held write will supply the authoritative receipt. */
7
+ export declare function refreshCollectionReadBaselines(snapshot: EditorHistorySnapshot, reads: readonly EditorBlockCollectionReadBaseline[], held?: boolean): EditorHistorySnapshot;
8
+ export declare function hasUnpublishedCollectionChanges(snapshot: EditorHistorySnapshot): boolean;
@@ -0,0 +1,18 @@
1
+ import type { DocumentBlockState } from '../../../api/src/content-editor';
2
+ import { type BlockFieldExtensions } from '../../../editor-blocks/src/block-editor/blockDraftBaselineSeed';
3
+ import type { DocumentSince } from '../sync/runLifecycle';
4
+ import { type OwnWrite, type PublishSuccessRefresh } from './editorRefresh';
5
+ import { type EditorHistorySnapshot } from './editorSnapshot';
6
+ /** A complete document operation always reconciles its block collections too. */
7
+ export type DocumentLifecycleResult = Readonly<{
8
+ blockState: DocumentBlockState;
9
+ since: DocumentSince;
10
+ }> & (Readonly<{
11
+ operation: 'publish';
12
+ values: PublishSuccessRefresh;
13
+ }> | Readonly<{
14
+ operation: 'discard';
15
+ values: readonly OwnWrite[];
16
+ }>);
17
+ /** Apply one receipt atomically: entry values, block values and block membership. */
18
+ export declare function documentLifecycleSnapshot(snapshot: EditorHistorySnapshot, result: DocumentLifecycleResult, extensions?: BlockFieldExtensions | null): EditorHistorySnapshot;
@@ -0,0 +1,7 @@
1
+ import type { EditorEditability } from '../controller/editorEditability';
2
+ export type EditorLeaseUiState = {
3
+ editability: EditorEditability;
4
+ setEditability: (editability: EditorEditability) => void;
5
+ leaseDiscardedChanges: boolean;
6
+ setLeaseDiscardedChanges: (discarded: boolean) => void;
7
+ };