@riverbankcms/sdk 0.84.2 → 0.88.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 (143) hide show
  1. package/dist/{PreviewEditorSidebar-4PH35ZIE.mjs → PreviewEditorSidebar-EVRS3C7T.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-WHMCRJGM.mjs → PreviewEditorUI-54WD4IGE.mjs} +3 -3
  3. package/dist/SdkPreviewModeRuntime-ZALZDJEK.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +684 -0
  5. package/dist/_dts/api/src/endpoints.d.ts +58 -14
  6. package/dist/_dts/api/src/index.d.ts +4 -1
  7. package/dist/_dts/api/src/launchReadiness.d.ts +3 -3
  8. package/dist/_dts/api/src/mailchimpIntegration.d.ts +215 -0
  9. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +35 -15
  10. package/dist/_dts/api/src/siteInfrastructure.d.ts +0 -14
  11. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +1 -13
  12. package/dist/_dts/api/src/types.d.ts +6 -3
  13. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  14. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -0
  15. package/dist/_dts/blocks/src/index.d.ts +2 -1
  16. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +288 -288
  17. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +288 -288
  18. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +288 -288
  19. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +288 -288
  20. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +288 -288
  21. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +42 -0
  22. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -0
  23. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +288 -288
  24. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +288 -288
  25. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +1 -1
  26. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +42 -42
  27. package/dist/_dts/blocks/src/system/blocks/newsletter-signup-destination.d.ts +300 -0
  28. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +63 -3
  29. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +288 -288
  30. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +288 -288
  31. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +288 -288
  32. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +53 -1
  33. package/dist/_dts/blocks/src/system/manifest/richTextSchema.d.ts +27 -0
  34. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +23 -23
  35. package/dist/_dts/blocks/src/system/runtime/api/types.d.ts +10 -2
  36. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +24 -0
  37. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +12 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +1 -0
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +4 -0
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.server.d.ts +1 -1
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +11 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +15 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.server.d.ts +1 -1
  44. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +32 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +5 -1
  46. package/dist/_dts/blocks/src/system/runtime/shared/components/ModalShell.d.ts +5 -1
  47. package/dist/_dts/blocks/src/system/runtime/shared/utils/formatting.d.ts +1 -1
  48. package/dist/_dts/content-model/src/referenceFields.d.ts +1 -1
  49. package/dist/_dts/core/src/currency-format.d.ts +37 -2
  50. package/dist/_dts/core/src/event-pricing.d.ts +24 -0
  51. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +551 -20
  52. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +3 -1
  53. package/dist/_dts/sdk/src/cli/canonical-entry-policy.d.ts +53 -0
  54. package/dist/_dts/sdk/src/cli/commands/migrate.d.ts +1 -0
  55. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +7 -1
  56. package/dist/_dts/sdk/src/cli/content/reader.d.ts +2 -0
  57. package/dist/_dts/sdk/src/cli/migrations/events.d.ts +73 -0
  58. package/dist/_dts/sdk/src/client/types.d.ts +9 -0
  59. package/dist/_dts/sdk/src/config/validation.d.ts +3 -0
  60. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +3 -0
  61. package/dist/_dts/sdk/src/data/prefetchBlockData.d.ts +3 -9
  62. package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +1 -1
  63. package/dist/_dts/sdk/src/manifest/three-pass-converter.d.ts +7 -18
  64. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -0
  65. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +3 -1
  66. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -3
  67. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +4 -24
  68. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +45 -0
  69. package/dist/_dts/sdk/src/version.d.ts +1 -1
  70. package/dist/_dts/site-commands/src/commands.d.ts +57 -0
  71. package/dist/_dts/surfaces/src/index.d.ts +12 -0
  72. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  73. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +9 -9
  74. package/dist/_dts/theme-core/src/schema.d.ts +11 -11
  75. package/dist/{chunk-ZR2GQK2A.mjs → chunk-7KOO7RPP.mjs} +953 -315
  76. package/dist/{chunk-OCGTXHSO.mjs → chunk-ER4UIW4X.mjs} +7 -7
  77. package/dist/{chunk-WFPYN7KA.mjs → chunk-HVOBXA3Y.mjs} +2 -2
  78. package/dist/{chunk-NFWGLRZZ.mjs → chunk-K3JWH6HE.mjs} +37 -3
  79. package/dist/{chunk-4QNLOTES.mjs → chunk-O4LVYUVH.mjs} +58 -14
  80. package/dist/{chunk-PYDHOMEO.mjs → chunk-YDMBIIS5.mjs} +1 -1
  81. package/dist/cli/index.mjs +1858 -512
  82. package/dist/client/{accordion-2UZPBMYM.mjs → accordion-PT5CGW5N.mjs} +2 -2
  83. package/dist/client/{bookingForm-36CWQUMV.mjs → bookingForm-2HLRTEYS.mjs} +7 -7
  84. package/dist/client/bookings.mjs +51 -6
  85. package/dist/client/{carousel-QH77HR6X.mjs → carousel-Z2LKYSWA.mjs} +3 -3
  86. package/dist/client/cart-ND5IK4A6.mjs +18 -0
  87. package/dist/client/checkout-EYUSGAY7.mjs +18 -0
  88. package/dist/client/{chunk-SYIJ5JO2.mjs → chunk-6DVPO44G.mjs} +1 -1
  89. package/dist/client/{chunk-3C2VTPWI.mjs → chunk-BAWHZ5GM.mjs} +176 -13
  90. package/dist/client/{chunk-52CGCQ7B.mjs → chunk-BL66UWGD.mjs} +10 -80
  91. package/dist/client/{chunk-VGDBVNOO.mjs → chunk-DIRW2LNG.mjs} +241 -210
  92. package/dist/client/{chunk-UDNSI5PY.mjs → chunk-GOFO7HRH.mjs} +1 -2
  93. package/dist/client/{chunk-ZKUO52W3.mjs → chunk-H4MHEXYS.mjs} +1 -1
  94. package/dist/client/{chunk-ZE5G642V.mjs → chunk-LI2C6M5O.mjs} +75 -1
  95. package/dist/client/{chunk-3DTWLTXM.mjs → chunk-MHBEWDT7.mjs} +117 -3
  96. package/dist/client/{chunk-4OXKTA3D.mjs → chunk-O5JNI3E4.mjs} +2 -2
  97. package/dist/client/{chunk-XSV6KW4D.mjs → chunk-S4G65LGR.mjs} +1 -1
  98. package/dist/client/{chunk-DVNUDUVT.mjs → chunk-WBQG7VJA.mjs} +4 -1
  99. package/dist/client/{chunk-F5VRX5Y6.mjs → chunk-WCVK4MBJ.mjs} +1 -1
  100. package/dist/client/{chunk-7UCLJ5SP.mjs → chunk-X7GVFB7Y.mjs} +4 -7
  101. package/dist/client/client.mjs +2125 -1403
  102. package/dist/client/{courseRegistration-TMKU6ABO.mjs → courseRegistration-H3AZBUEG.mjs} +7 -7
  103. package/dist/client/{eventCalendar-G6TI32X6.mjs → eventCalendar-FPKJGLGS.mjs} +10 -11
  104. package/dist/client/{eventCombined-SCKEMNAR.mjs → eventCombined-QCGIZBUY.mjs} +10 -11
  105. package/dist/client/{eventDetails-XPIFXXPK.mjs → eventDetails-HIT3BJWU.mjs} +10 -11
  106. package/dist/client/{eventListing-7QFMEMGT.mjs → eventListing-R4HNWJDN.mjs} +10 -11
  107. package/dist/client/{eventRegistration-TOODSZUI.mjs → eventRegistration-Q7BYY5HF.mjs} +10 -11
  108. package/dist/client/{form-MTCMVCZT.mjs → form-NI6YOG6S.mjs} +3 -3
  109. package/dist/client/{headerSection-Y5TMR3TW.mjs → headerSection-SDYGII36.mjs} +4 -4
  110. package/dist/client/hooks.mjs +1682 -1412
  111. package/dist/client/{locationMap-RH2LG7FZ.mjs → locationMap-BDETEUQD.mjs} +3 -4
  112. package/dist/client/{newsletterForm-PCAIPFMA.mjs → newsletterForm-EKYIU67X.mjs} +70 -22
  113. package/dist/client/{productDetail-OIGDR4YE.mjs → productDetail-5UTGNN76.mjs} +8 -9
  114. package/dist/client/{productList-4MA5S2CX.mjs → productList-7YA5KXZQ.mjs} +8 -9
  115. package/dist/client/rendering/client.mjs +753 -329
  116. package/dist/client/rendering/islands.mjs +19 -19
  117. package/dist/client/rendering.mjs +3786 -3034
  118. package/dist/client/shop-AIMUMZYC.mjs +20 -0
  119. package/dist/preview-next/before-render.mjs +58 -14
  120. package/dist/preview-next/client/runtime.mjs +5 -5
  121. package/dist/preview-next/editor-chrome.css +56 -9
  122. package/dist/preview-next/middleware.mjs +58 -14
  123. package/dist/{sdk-runtime-QLOCYKVU.mjs → sdk-runtime-NW472WNT.mjs} +6 -6
  124. package/dist/server/components.mjs +1518 -1015
  125. package/dist/server/config-validation.mjs +1719 -1461
  126. package/dist/server/config.mjs +1719 -1461
  127. package/dist/server/data.mjs +1683 -1413
  128. package/dist/server/index.mjs +79 -17
  129. package/dist/server/next.mjs +1902 -1311
  130. package/dist/server/page-converter.mjs +2193 -1169
  131. package/dist/server/prebuild.mjs +1 -1
  132. package/dist/server/rendering/server.mjs +1709 -1209
  133. package/dist/server/rendering.mjs +1894 -1347
  134. package/dist/server/routing.mjs +1872 -1499
  135. package/dist/server/server.mjs +1571 -1264
  136. package/dist/server/theme-bridge.mjs +234 -0
  137. package/dist/styles/index.css +232 -0
  138. package/package.json +1 -1
  139. package/dist/SdkPreviewModeRuntime-4FGSVUYI.mjs +0 -8
  140. package/dist/client/cart-X4YK4FTW.mjs +0 -19
  141. package/dist/client/checkout-OM2BEPWD.mjs +0 -19
  142. package/dist/client/chunk-I2MMZO53.mjs +0 -6
  143. package/dist/client/shop-WXSYV5QO.mjs +0 -21
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { ApiRequestError } from './chunk-4QNLOTES.mjs';
2
+ import { ApiRequestError } from './chunk-O4LVYUVH.mjs';
3
3
  import { __commonJS, __export, __toESM } from './chunk-R7POPVJR.mjs';
4
4
  import * as React61 from 'react';
5
5
  import React61__default, { createContext, forwardRef, useContext, createElement, useRef, useMemo, useEffect, useState, useCallback, useImperativeHandle, useLayoutEffect, memo, createRef, Component as Component$1, useDebugValue, useId as useId$1, useSyncExternalStore, isValidElement, cloneElement, useReducer, startTransition } from 'react';
@@ -154,6 +154,48 @@ function subtractDaysFromIso(isoString, dayCount) {
154
154
  return addDaysToIso(isoString, -dayCount);
155
155
  }
156
156
 
157
+ // ../core/src/assert-never.ts
158
+ function assertNever(value, message2 = "Unexpected variant") {
159
+ throw new Error(`${message2}: ${String(value)}`);
160
+ }
161
+
162
+ // ../core/src/currency-format.ts
163
+ var CURRENCY_LOCALE_BY_CODE = {
164
+ USD: "en-US",
165
+ GBP: "en-GB",
166
+ EUR: "de-DE",
167
+ AUD: "en-AU",
168
+ CAD: "en-CA",
169
+ NZD: "en-NZ",
170
+ JPY: "ja-JP",
171
+ CNY: "zh-CN",
172
+ CHF: "de-CH"
173
+ };
174
+ function resolveCurrencyLocale(currencyCode, override) {
175
+ return override ?? CURRENCY_LOCALE_BY_CODE[currencyCode] ?? "en";
176
+ }
177
+ function formatCurrencyAmount(amountCents, currency, options) {
178
+ const currencyCode = currency.toUpperCase();
179
+ const locale = resolveCurrencyLocale(currencyCode, options?.locale);
180
+ try {
181
+ const exactFormatter = new Intl.NumberFormat(locale, {
182
+ style: "currency",
183
+ currency: currencyCode
184
+ });
185
+ const fractionDigits = options?.decimals === "auto" ? {
186
+ minimumFractionDigits: 0,
187
+ maximumFractionDigits: exactFormatter.resolvedOptions().maximumFractionDigits
188
+ } : {};
189
+ return new Intl.NumberFormat(locale, {
190
+ style: "currency",
191
+ currency: currencyCode,
192
+ ...fractionDigits
193
+ }).format(amountCents / 100);
194
+ } catch {
195
+ return `${(amountCents / 100).toFixed(2)} ${currencyCode}`;
196
+ }
197
+ }
198
+
157
199
  // ../core/src/event-pricing.ts
158
200
  function publicEventPricingDisplay(pricing) {
159
201
  return pricing.display;
@@ -206,11 +248,48 @@ function isFreePublicEventPriceDisplay(display) {
206
248
  return display.display.kind === "free";
207
249
  case "exact":
208
250
  case "from":
251
+ case "range":
209
252
  case "mixed":
210
253
  case "unavailable":
211
254
  return false;
212
255
  }
213
256
  }
257
+ function formatCoursePriceDisplayLabel(display, options) {
258
+ switch (display.kind) {
259
+ case "free":
260
+ case "unavailable":
261
+ return "Course";
262
+ case "exact":
263
+ return `Course (${formatCurrencyAmount(display.amount, display.currency, options)})`;
264
+ case "from":
265
+ return `Course (From ${formatCurrencyAmount(display.amount, display.currency, options)})`;
266
+ default:
267
+ return assertNever(display);
268
+ }
269
+ }
270
+ function formatBookingPriceDisplay(display, options = {}) {
271
+ switch (display.kind) {
272
+ case "free":
273
+ return "Free";
274
+ case "exact":
275
+ return formatCurrencyAmount(display.amount, display.currency, options);
276
+ case "from":
277
+ return `From ${formatCurrencyAmount(display.amount, display.currency, options)}`;
278
+ case "range":
279
+ return `${formatCurrencyAmount(display.minAmount, display.currency, options)} - ${formatCurrencyAmount(display.maxAmount, display.currency, options)}`;
280
+ case "mixed":
281
+ return display.paidToAmount > display.paidFromAmount ? `Free / ${formatCurrencyAmount(display.paidFromAmount, display.currency, options)} - ${formatCurrencyAmount(display.paidToAmount, display.currency, options)}` : `Free / ${formatCurrencyAmount(display.paidFromAmount, display.currency, options)}`;
282
+ case "unavailable":
283
+ return "Pricing unavailable";
284
+ case "course":
285
+ return formatCoursePriceDisplayLabel(display.display, options);
286
+ default:
287
+ return assertNever(display);
288
+ }
289
+ }
290
+ function formatEventPricing(pricing, options = {}) {
291
+ return formatBookingPriceDisplay(publicEventPricingDisplay(pricing), options);
292
+ }
214
293
 
215
294
  // ../core/src/booking-flexible-balance.ts
216
295
  function clampFlexibleBalanceConfiguredAmount(amountCents, totalAmountCents) {
@@ -232,10 +311,10 @@ function resolveFlexibleBalanceDueAt(input) {
232
311
  case "fixed_calendar_date":
233
312
  return input.dueDateRule.dueAt;
234
313
  default:
235
- return assertNever(input.dueDateRule);
314
+ return assertNever2(input.dueDateRule);
236
315
  }
237
316
  }
238
- function assertNever(value) {
317
+ function assertNever2(value) {
239
318
  throw new Error(`Unexpected value: ${String(value)}`);
240
319
  }
241
320
 
@@ -248,7 +327,7 @@ function isDepositBearingBookingInstalmentPlan(plan) {
248
327
  case "equal_scheduled_instalments":
249
328
  return false;
250
329
  default:
251
- return assertNever2(plan);
330
+ return assertNever3(plan);
252
331
  }
253
332
  }
254
333
  function getBookingInstalmentDepositRefundability(plan) {
@@ -280,7 +359,7 @@ function addIntervalPreservingMonthAnchor(isoString, intervalCount, intervalUnit
280
359
  case "month":
281
360
  return addMonthsPreservingAnchorDay(date, intervalCount).toISOString();
282
361
  default:
283
- return assertNever2(intervalUnit);
362
+ return assertNever3(intervalUnit);
284
363
  }
285
364
  }
286
365
  function getBookingInstalmentPlanIntervalCount(plan) {
@@ -291,7 +370,7 @@ function getBookingInstalmentPlanIntervalCount(plan) {
291
370
  case "equal_scheduled_instalments":
292
371
  return plan.intervalCount;
293
372
  default:
294
- return assertNever2(plan);
373
+ return assertNever3(plan);
295
374
  }
296
375
  }
297
376
  function omitZeroAmountFutureRows(rows) {
@@ -326,7 +405,7 @@ function addMonthsPreservingAnchorDay(date, intervalCount) {
326
405
  nextMonth.setUTCDate(Math.min(anchorDay, lastDayOfTargetMonth));
327
406
  return nextMonth;
328
407
  }
329
- function assertNever2(value) {
408
+ function assertNever3(value) {
330
409
  throw new Error(`Unexpected value: ${String(value)}`);
331
410
  }
332
411
 
@@ -623,11 +702,6 @@ function toLocationCoordinates(value) {
623
702
  };
624
703
  }
625
704
 
626
- // ../core/src/assert-never.ts
627
- function assertNever3(value, message2 = "Unexpected variant") {
628
- throw new Error(`${message2}: ${String(value)}`);
629
- }
630
-
631
705
  // ../core/src/planner.ts
632
706
  var systemPlanningClock = {
633
707
  now: () => Date.now()
@@ -53538,15 +53612,53 @@ var newsletterFormFragment = defineFragment({
53538
53612
  title: "Newsletter Form",
53539
53613
  description: "Newsletter subscription form with preset field configurations.",
53540
53614
  fields: [
53615
+ {
53616
+ id: "destinationProvider",
53617
+ type: "select",
53618
+ label: "Send signups to",
53619
+ description: "Choose where new subscribers from this form should go.",
53620
+ defaultValue: "riverbank",
53621
+ required: true,
53622
+ ui: { intent: "behavior" },
53623
+ options: [
53624
+ { value: "riverbank", label: "Riverbank newsletter" }
53625
+ ]
53626
+ },
53541
53627
  {
53542
53628
  id: "listId",
53543
53629
  type: "reference",
53544
53630
  label: "Newsletter list",
53545
53631
  description: "Select the list new subscribers should be added to.",
53546
- required: true,
53632
+ required: false,
53547
53633
  referenceKind: "newsletterList",
53548
53634
  allowManualEntry: false,
53549
- ui: { intent: "behavior" }
53635
+ ui: {
53636
+ intent: "behavior",
53637
+ visibleWhen: { field: "destinationProvider", equals: "riverbank" }
53638
+ }
53639
+ },
53640
+ {
53641
+ id: "mailchimpAudienceId",
53642
+ type: "reference",
53643
+ label: "Mailchimp audience",
53644
+ description: "Choose the Mailchimp audience for new subscribers.",
53645
+ required: false,
53646
+ referenceKind: "mailchimpAudience",
53647
+ allowManualEntry: false,
53648
+ ui: {
53649
+ intent: "behavior",
53650
+ visibleWhen: { field: "destinationProvider", equals: "mailchimp" }
53651
+ }
53652
+ },
53653
+ {
53654
+ id: "mailchimpTags",
53655
+ type: "text",
53656
+ label: "Mailchimp tags",
53657
+ description: "Optional tags to apply in Mailchimp, separated by commas or semicolons.",
53658
+ ui: {
53659
+ intent: "behavior",
53660
+ visibleWhen: { field: "destinationProvider", equals: "mailchimp" }
53661
+ }
53550
53662
  },
53551
53663
  {
53552
53664
  id: "preset",
@@ -53593,13 +53705,18 @@ var newsletterFormFragment = defineFragment({
53593
53705
  id: "tags",
53594
53706
  type: "text",
53595
53707
  label: "Tags (optional)",
53596
- description: "Optional tags to apply on subscribe (comma or semicolon separated)."
53708
+ description: "Optional tags to apply on subscribe (comma or semicolon separated).",
53709
+ ui: {
53710
+ intent: "behavior",
53711
+ visibleWhen: { field: "destinationProvider", equals: "riverbank" }
53712
+ }
53597
53713
  }
53598
53714
  ],
53599
53715
  layout: [
53600
53716
  el(
53601
53717
  "newsletter-form",
53602
53718
  withApiBindings({
53719
+ destinationProvider: { $bind: { from: "destinationProvider" } },
53603
53720
  listId: { $bind: { from: "listId" } },
53604
53721
  preset: { $bind: { from: "preset" } },
53605
53722
  includePhone: { $bind: { from: "includePhone" } },
@@ -59560,6 +59677,107 @@ var mediaSchema2 = z40.discriminatedUnion("type", [
59560
59677
  spreadsheetMediaSchema,
59561
59678
  archiveMediaSchema
59562
59679
  ]);
59680
+ var TipTapMarkSchema = z.object({
59681
+ type: z.string(),
59682
+ attrs: z.record(z.string(), z.unknown()).optional()
59683
+ });
59684
+ var TipTapNodeSchema = z.lazy(
59685
+ () => z.object({
59686
+ type: z.string(),
59687
+ content: z.array(TipTapNodeSchema).optional(),
59688
+ text: z.string().optional(),
59689
+ attrs: z.record(z.string(), z.unknown()).optional(),
59690
+ marks: z.array(TipTapMarkSchema).optional()
59691
+ })
59692
+ );
59693
+ var RichTextValueSchema = z.union([
59694
+ // Canonical: TipTap document directly
59695
+ TipTapNodeSchema,
59696
+ // Legacy (read-tolerance only): wrapped in { doc: {...} }
59697
+ z.object({
59698
+ doc: TipTapNodeSchema
59699
+ })
59700
+ ]);
59701
+ var RichTextDocSchema = z.object({
59702
+ type: z.literal("doc"),
59703
+ content: z.array(TipTapNodeSchema)
59704
+ });
59705
+ function unwrapRichTextRoot(value) {
59706
+ if (!isRecord4(value)) return value;
59707
+ if (!("doc" in value)) return value;
59708
+ const inner = value.doc;
59709
+ if (isRecord4(inner) && inner.type === "doc") return inner;
59710
+ return value;
59711
+ }
59712
+ function createHardBreakNode() {
59713
+ return { type: "hardBreak" };
59714
+ }
59715
+ function parseRichTextInlineMarkdown(text2) {
59716
+ const out = [];
59717
+ const pushText = (value, marks) => {
59718
+ if (!value) return;
59719
+ out.push(
59720
+ marks && marks.length > 0 ? { type: "text", text: value, marks } : { type: "text", text: value }
59721
+ );
59722
+ };
59723
+ let rest = text2;
59724
+ while (rest.length > 0) {
59725
+ const start = rest.indexOf("**");
59726
+ if (start === -1) {
59727
+ pushText(rest);
59728
+ break;
59729
+ }
59730
+ const end = rest.indexOf("**", start + 2);
59731
+ if (end === -1) {
59732
+ pushText(rest);
59733
+ break;
59734
+ }
59735
+ pushText(rest.slice(0, start));
59736
+ pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
59737
+ rest = rest.slice(end + 2);
59738
+ }
59739
+ return out;
59740
+ }
59741
+ function parseRichTextParagraphInlineMarkdown(text2) {
59742
+ return text2.split("\n").flatMap((line, index2) => {
59743
+ const lineNodes = parseRichTextInlineMarkdown(line.trim());
59744
+ return index2 === 0 ? lineNodes : [createHardBreakNode(), ...lineNodes];
59745
+ });
59746
+ }
59747
+ function createRichTextDocFromMarkdown(markdown) {
59748
+ const normalized = markdown.replace(/\r\n/g, "\n").trim();
59749
+ if (!normalized) return { type: "doc", content: [] };
59750
+ const paragraphs = normalized.split(/\n{2,}/).map((paragraph) => paragraph.trim()).filter(Boolean);
59751
+ return {
59752
+ type: "doc",
59753
+ content: paragraphs.map((paragraph) => {
59754
+ const inline4 = parseRichTextParagraphInlineMarkdown(paragraph);
59755
+ return inline4.length > 0 ? { type: "paragraph", content: inline4 } : { type: "paragraph" };
59756
+ })
59757
+ };
59758
+ }
59759
+ function buildRichTextSchema(options) {
59760
+ let schema = RichTextValueSchema;
59761
+ if (options?.required) {
59762
+ const label = options.label ?? "This field";
59763
+ schema = schema.refine(
59764
+ (val) => {
59765
+ const doc3 = isRecord4(val) && "doc" in val ? val.doc : val;
59766
+ const content = isRecord4(doc3) ? doc3.content : void 0;
59767
+ if (!Array.isArray(content) || content.length === 0) return false;
59768
+ const first2 = content[0];
59769
+ if (content.length === 1 && isRecord4(first2) && first2.type === "paragraph" && (!("content" in first2) || first2.content == null)) {
59770
+ return false;
59771
+ }
59772
+ return true;
59773
+ },
59774
+ {
59775
+ message: `${label} is required`
59776
+ }
59777
+ );
59778
+ }
59779
+ return schema;
59780
+ }
59563
59781
  var bookingDepositRefundPolicySchema = z.enum([
59564
59782
  "refundable",
59565
59783
  "non_refundable"
@@ -59715,7 +59933,13 @@ z.discriminatedUnion("kind", [
59715
59933
  z.object({ kind: z.literal("free"), currency: z.string() }),
59716
59934
  z.object({ kind: z.literal("exact"), amount: z.number(), currency: z.string() }),
59717
59935
  z.object({ kind: z.literal("from"), amount: z.number(), currency: z.string() }),
59718
- z.object({ kind: z.literal("mixed"), paidFromAmount: z.number(), currency: z.string() }),
59936
+ z.object({ kind: z.literal("range"), minAmount: z.number(), maxAmount: z.number(), currency: z.string() }),
59937
+ z.object({
59938
+ kind: z.literal("mixed"),
59939
+ paidFromAmount: z.number(),
59940
+ paidToAmount: z.number(),
59941
+ currency: z.string()
59942
+ }),
59719
59943
  z.object({ kind: z.literal("unavailable"), currency: z.string() }),
59720
59944
  z.object({ kind: z.literal("course"), display: publicCoursePriceDisplaySchema })
59721
59945
  ]);
@@ -59723,7 +59947,13 @@ var publicEventTicketTypePriceDisplaySchema = z.union([
59723
59947
  z.object({ kind: z.literal("free"), currency: z.string() }),
59724
59948
  z.object({ kind: z.literal("exact"), amount: z.number(), currency: z.string() }),
59725
59949
  z.object({ kind: z.literal("from"), amount: z.number(), currency: z.string() }),
59726
- z.object({ kind: z.literal("mixed"), paidFromAmount: z.number(), currency: z.string() }),
59950
+ z.object({ kind: z.literal("range"), minAmount: z.number(), maxAmount: z.number(), currency: z.string() }),
59951
+ z.object({
59952
+ kind: z.literal("mixed"),
59953
+ paidFromAmount: z.number(),
59954
+ paidToAmount: z.number(),
59955
+ currency: z.string()
59956
+ }),
59727
59957
  z.object({ kind: z.literal("unavailable"), currency: z.string() })
59728
59958
  ]);
59729
59959
  var publicEventAttendanceModeSchema = z.enum(["in_person", "online"]);
@@ -59808,6 +60038,9 @@ var publicEventSchema = z.object({
59808
60038
  seriesId: z.string(),
59809
60039
  title: z.string(),
59810
60040
  description: z.string().nullable(),
60041
+ content: z.object({
60042
+ body: RichTextDocSchema.nullable().optional()
60043
+ }).optional(),
59811
60044
  presentation: z.object({
59812
60045
  cardTitleOverride: z.string().nullable().optional(),
59813
60046
  summary: z.string().nullable().optional(),
@@ -60153,10 +60386,21 @@ function readLegacyPriceDisplay(value, currency) {
60153
60386
  amount: readAmount(value.amount) ?? 0,
60154
60387
  currency: displayCurrency
60155
60388
  } : { kind: "unavailable", currency };
60389
+ case "range": {
60390
+ const minAmount = readAmount(value.minAmount);
60391
+ const maxAmount = readAmount(value.maxAmount);
60392
+ return minAmount !== null && maxAmount !== null ? {
60393
+ kind: "range",
60394
+ minAmount,
60395
+ maxAmount,
60396
+ currency: displayCurrency
60397
+ } : { kind: "unavailable", currency };
60398
+ }
60156
60399
  case "mixed":
60157
60400
  return readAmount(value.paidFromAmount) !== null ? {
60158
60401
  kind: "mixed",
60159
60402
  paidFromAmount: readAmount(value.paidFromAmount) ?? 0,
60403
+ paidToAmount: readAmount(value.paidToAmount) ?? readAmount(value.paidFromAmount) ?? 0,
60160
60404
  currency: displayCurrency
60161
60405
  } : { kind: "unavailable", currency };
60162
60406
  case "unavailable":
@@ -60336,6 +60580,7 @@ var eventRegistrationSourceSchema = z.object({
60336
60580
  successMessage: z.string().optional(),
60337
60581
  waitlistMessage: z.string().optional(),
60338
60582
  buttonVariant: registrationButtonVariantSchema.optional(),
60583
+ overlayEnabled: z.boolean().optional(),
60339
60584
  spamProtectionEnabled: z.boolean().optional(),
60340
60585
  stage: previewStageSchema.optional(),
60341
60586
  supportEmail: z.string().optional()
@@ -60359,6 +60604,7 @@ var eventRegistrationHydrationSchema = z.object({
60359
60604
  successMessage: z.string().optional(),
60360
60605
  waitlistMessage: z.string().optional(),
60361
60606
  buttonVariant: registrationButtonVariantSchema.optional(),
60607
+ overlayEnabled: z.boolean().optional(),
60362
60608
  spamProtectionEnabled: z.boolean().optional(),
60363
60609
  supportEmail: z.string().optional()
60364
60610
  });
@@ -60467,6 +60713,7 @@ var eventRegistrationBlockRuntime = defineClientOwnedBlockRuntime({
60467
60713
  successMessage: source.successMessage,
60468
60714
  waitlistMessage: source.waitlistMessage,
60469
60715
  buttonVariant: source.buttonVariant,
60716
+ overlayEnabled: source.overlayEnabled,
60470
60717
  spamProtectionEnabled: source.spamProtectionEnabled,
60471
60718
  supportEmail: source.supportEmail
60472
60719
  }
@@ -60643,6 +60890,12 @@ var eventRegistrationManifest = createBlockManifest({
60643
60890
  buttonVariant: {
60644
60891
  $bind: { from: "content.buttonVariant", fallback: "primary" }
60645
60892
  },
60893
+ overlayEnabled: {
60894
+ $bind: {
60895
+ from: "$root.eventRegistrationOverlayEnabled",
60896
+ fallback: false
60897
+ }
60898
+ },
60646
60899
  // Event data from loader
60647
60900
  events: { $bind: { from: "data.events" } },
60648
60901
  // Stage for preview mode (allows registering for draft events)
@@ -60790,29 +61043,7 @@ function resolveCoursePricingState(course, selectedPricingOptionId, nowInput = {
60790
61043
  }
60791
61044
  }
60792
61045
  function formatCoursePriceDisplay(display, locale) {
60793
- switch (display.kind) {
60794
- case "free":
60795
- return "Free";
60796
- case "unavailable":
60797
- return "Pricing unavailable";
60798
- case "exact":
60799
- return formatCourseCurrencyAmount(display.amount, display.currency, { locale });
60800
- case "from":
60801
- return `From ${formatCourseCurrencyAmount(display.amount, display.currency, { locale })}`;
60802
- }
60803
- }
60804
- function formatCourseCurrencyAmount(amount, currency, options) {
60805
- const {
60806
- locale = "en-US",
60807
- minimumFractionDigits,
60808
- maximumFractionDigits
60809
- } = options ?? {};
60810
- return new Intl.NumberFormat(locale, {
60811
- style: "currency",
60812
- currency: currency.toUpperCase(),
60813
- ...minimumFractionDigits === void 0 ? {} : { minimumFractionDigits },
60814
- ...maximumFractionDigits === void 0 ? {} : { maximumFractionDigits }
60815
- }).format(amount / 100);
61046
+ return formatBookingPriceDisplay(display, { decimals: "exact", locale });
60816
61047
  }
60817
61048
  function formatCoursePriceAmount(amount, currency, locale) {
60818
61049
  return formatCoursePriceDisplay(
@@ -61848,15 +62079,15 @@ function getLocalMinuteOfDay(isoTimestamp, timeZone) {
61848
62079
  const date = new Date(isoTimestamp);
61849
62080
  if (Number.isNaN(date.getTime())) return NaN;
61850
62081
  if (!isValidTimeZone2(timeZone)) return NaN;
61851
- const parts = new Intl.DateTimeFormat("en-US", {
62082
+ const parts = new Intl.DateTimeFormat("en-GB", {
61852
62083
  timeZone,
61853
62084
  hour: "2-digit",
61854
62085
  minute: "2-digit",
61855
- hour12: false,
61856
62086
  hourCycle: "h23"
61857
62087
  }).formatToParts(date);
61858
- const hour = Number(parts.find((part) => part.type === "hour")?.value);
62088
+ const hourPart = Number(parts.find((part) => part.type === "hour")?.value);
61859
62089
  const minute = Number(parts.find((part) => part.type === "minute")?.value);
62090
+ const hour = hourPart === 24 ? 0 : hourPart;
61860
62091
  if (Number.isNaN(hour) || Number.isNaN(minute)) return NaN;
61861
62092
  return hour * MINUTES_PER_HOUR + minute;
61862
62093
  }
@@ -62288,45 +62519,11 @@ function groupEventsByDate(events2) {
62288
62519
  }
62289
62520
  return map2;
62290
62521
  }
62291
- function formatCompactCurrencyAmount(amount, currency) {
62292
- return formatCourseCurrencyAmount(amount, currency, {
62293
- minimumFractionDigits: 0,
62294
- maximumFractionDigits: 2
62295
- });
62296
- }
62297
- function formatCourseEventPriceDisplay(display) {
62298
- if (display.kind !== "course") {
62299
- return "Course";
62300
- }
62301
- if (display.display.kind === "exact" || display.display.kind === "from") {
62302
- const amountLabel = formatCompactCurrencyAmount(
62303
- display.display.amount,
62304
- display.display.currency
62305
- );
62306
- return display.display.kind === "from" ? `Course (From ${amountLabel})` : `Course (${amountLabel})`;
62307
- }
62308
- return "Course";
62309
- }
62310
- function formatPublicEventPriceDisplay(display) {
62311
- switch (display.kind) {
62312
- case "free":
62313
- return "Free";
62314
- case "exact":
62315
- return formatCompactCurrencyAmount(display.amount, display.currency);
62316
- case "from":
62317
- return `From ${formatCompactCurrencyAmount(display.amount, display.currency)}`;
62318
- case "mixed":
62319
- return `Free / From ${formatCompactCurrencyAmount(display.paidFromAmount, display.currency)}`;
62320
- case "unavailable":
62321
- return "Pricing unavailable";
62322
- case "course":
62323
- return formatCourseEventPriceDisplay(display);
62324
- }
62325
- }
62326
62522
  function formatEventPrice(event) {
62327
- return formatPublicEventPriceDisplay(
62328
- publicEventPricingDisplay(resolveRuntimeEventPricing(event))
62329
- );
62523
+ return formatEventPricing(resolveRuntimeEventPricing(event), { decimals: "auto" });
62524
+ }
62525
+ function formatEventPriceDisplay(pricing) {
62526
+ return formatEventPricing(pricing, { decimals: "auto" });
62330
62527
  }
62331
62528
  function resolveEventCta(event, buttonText) {
62332
62529
  const { isFull: isSoldOut } = getEventAvailability(event);
@@ -65522,12 +65719,12 @@ function preferredPathsForSource(source) {
65522
65719
  case "performance":
65523
65720
  return ["/performances", "/performance"];
65524
65721
  default:
65525
- return assertNever3(source.preset, "Unhandled offerings preview event preset");
65722
+ return assertNever(source.preset, "Unhandled offerings preview event preset");
65526
65723
  }
65527
65724
  case "course":
65528
65725
  return ["/courses", "/course"];
65529
65726
  default:
65530
- return assertNever3(source, "Unhandled offerings preview source");
65727
+ return assertNever(source, "Unhandled offerings preview source");
65531
65728
  }
65532
65729
  }
65533
65730
  function normalizeRoutePath(value) {
@@ -67653,10 +67850,7 @@ function resolveSelectedProduct(products, contentEntry, productSlug) {
67653
67850
 
67654
67851
  // ../blocks/src/system/runtime/nodes/commerce/shared/display.ts
67655
67852
  function formatCommercePrice(cents, currency) {
67656
- return new Intl.NumberFormat("en-US", {
67657
- style: "currency",
67658
- currency: currency.toUpperCase()
67659
- }).format(cents / 100);
67853
+ return formatCurrencyAmount(cents, currency);
67660
67854
  }
67661
67855
  function getPassesHeading(passes, explicitHeading) {
67662
67856
  if (explicitHeading) return explicitHeading;
@@ -69130,6 +69324,60 @@ var giftingBlockDefinition = {
69130
69324
  }
69131
69325
  };
69132
69326
 
69327
+ // ../blocks/src/system/blocks/newsletter-signup-destination.ts
69328
+ function parseNewsletterSignupBlockId(value) {
69329
+ const trimmed = parseTrimmedString(value);
69330
+ return trimmed && BLOCK_ID_PATTERN.test(trimmed) ? trimmed : null;
69331
+ }
69332
+ function parseSignedNewsletterDestinationRef(value) {
69333
+ const trimmed = parseTrimmedString(value);
69334
+ return trimmed && SIGNED_DESTINATION_REF_PATTERN.test(trimmed) ? trimmed : null;
69335
+ }
69336
+ function parseNewsletterSignupDestinationProvider(value) {
69337
+ return value === "riverbank" || value === "mailchimp" ? value : null;
69338
+ }
69339
+ function buildNewsletterSignupBlockRef(blockId) {
69340
+ const parsed = parseNewsletterSignupBlockId(blockId);
69341
+ return parsed ? { tag: "block_ref", blockId: parsed } : null;
69342
+ }
69343
+ function normalizeNewsletterSignupEditorValuesForDestination(values) {
69344
+ const destinationProvider = parseNewsletterSignupDestinationProvider(values.destinationProvider) ?? "riverbank";
69345
+ if (destinationProvider === "mailchimp") {
69346
+ return {
69347
+ destinationProvider,
69348
+ mailchimpAudienceId: values.mailchimpAudienceId,
69349
+ mailchimpTags: values.mailchimpTags
69350
+ };
69351
+ }
69352
+ return {
69353
+ destinationProvider,
69354
+ listId: values.listId,
69355
+ tags: values.tags
69356
+ };
69357
+ }
69358
+ function deriveNewsletterSignupRuntimeSource(values) {
69359
+ const normalized = normalizeNewsletterSignupEditorValuesForDestination(values);
69360
+ if (normalized.destinationProvider === "mailchimp") {
69361
+ return {
69362
+ destinationProvider: "mailchimp",
69363
+ listId: null,
69364
+ tags: null
69365
+ };
69366
+ }
69367
+ return {
69368
+ destinationProvider: "riverbank",
69369
+ listId: parseTrimmedString(normalized.listId),
69370
+ tags: parseTrimmedString(normalized.tags)
69371
+ };
69372
+ }
69373
+ var BLOCK_ID_PATTERN = /^[A-Za-z0-9._:-]{1,200}$/;
69374
+ var SIGNED_DESTINATION_REF_PATTERN = /^[A-Za-z0-9._~-]{16,1000}$/;
69375
+ function parseTrimmedString(value) {
69376
+ if (typeof value !== "string") return null;
69377
+ const trimmed = value.trim();
69378
+ return trimmed.length > 0 ? trimmed : null;
69379
+ }
69380
+
69133
69381
  // ../blocks/src/system/runtime/nodes/newsletter-form.types.ts
69134
69382
  function getPresetFields(preset2, options) {
69135
69383
  const includePhone = Boolean(options?.includePhone);
@@ -69182,6 +69430,7 @@ function withOptionalPhone(fields3, includePhone) {
69182
69430
 
69183
69431
  // ../blocks/src/system/runtime/nodes/newsletter-form.interactive.ts
69184
69432
  var newsletterPresetSchema = z.enum(["emailOnly", "emailName", "emailFirstLast", "emailNameCompany"]);
69433
+ var newsletterDestinationProviderSchema = z.enum(["riverbank", "mailchimp"]);
69185
69434
  var newsletterFieldSchema = z.object({
69186
69435
  id: z.string(),
69187
69436
  type: z.enum(["email", "text"]),
@@ -69189,10 +69438,24 @@ var newsletterFieldSchema = z.object({
69189
69438
  required: z.boolean(),
69190
69439
  placeholder: z.string().optional()
69191
69440
  });
69441
+ var newsletterSignupBlockIdSchema = z.string().trim().min(1).transform(parseRequiredNewsletterSignupBlockId);
69442
+ var signedNewsletterDestinationRefSchema = z.string().trim().min(1).transform(parseRequiredSignedNewsletterDestinationRef);
69443
+ var newsletterPublicDestinationRefSchema = z.discriminatedUnion("tag", [
69444
+ z.object({
69445
+ tag: z.literal("block_ref"),
69446
+ blockId: newsletterSignupBlockIdSchema
69447
+ }),
69448
+ z.object({
69449
+ tag: z.literal("signed_destination_ref"),
69450
+ token: signedNewsletterDestinationRefSchema
69451
+ })
69452
+ ]);
69192
69453
  var newsletterSourceSchema = z.object({
69454
+ blockId: z.string().nullable().optional(),
69193
69455
  siteId: z.string().optional(),
69194
69456
  apiBaseUrl: z.string().optional(),
69195
69457
  listId: z.string().nullable().optional(),
69458
+ destinationProvider: newsletterDestinationProviderSchema.nullable().optional(),
69196
69459
  preset: newsletterPresetSchema.optional(),
69197
69460
  includePhone: z.boolean().optional(),
69198
69461
  buttonLabel: z.string().nullable().optional(),
@@ -69211,6 +69474,7 @@ var newsletterDisplaySchema = z.object({
69211
69474
  fields: z.array(newsletterFieldSchema)
69212
69475
  });
69213
69476
  var newsletterHydrationSchema = z.object({
69477
+ destinationRef: newsletterPublicDestinationRefSchema.nullable().optional(),
69214
69478
  listId: z.string().nullable().optional(),
69215
69479
  preset: newsletterPresetSchema,
69216
69480
  includePhone: z.boolean(),
@@ -69243,16 +69507,20 @@ var newsletterFormBlockRuntime = defineProgressiveBlockRuntime({
69243
69507
  source: createZodCodec(newsletterSourceSchema),
69244
69508
  render: createZodCodec(newsletterRenderSchema)
69245
69509
  },
69246
- buildRender: (source) => ({
69247
- display: buildNewsletterDisplay(source),
69248
- hydration: {
69249
- listId: source.listId,
69250
- preset: source.preset ?? "emailOnly",
69251
- includePhone: source.includePhone ?? false,
69252
- tags: source.tags ?? null,
69253
- spamProtectionEnabled: source.spamProtectionEnabled
69254
- }
69255
- })
69510
+ buildRender: (source) => {
69511
+ const runtimeSource = deriveNewsletterSignupRuntimeSource(source);
69512
+ return {
69513
+ display: buildNewsletterDisplay(source),
69514
+ hydration: {
69515
+ destinationRef: buildNewsletterSignupBlockRef(source.blockId),
69516
+ listId: runtimeSource.listId,
69517
+ preset: source.preset ?? "emailOnly",
69518
+ includePhone: source.includePhone ?? false,
69519
+ tags: runtimeSource.tags,
69520
+ spamProtectionEnabled: source.spamProtectionEnabled
69521
+ }
69522
+ };
69523
+ }
69256
69524
  });
69257
69525
  function buildNewsletterFormInteractiveIslandProps(props2) {
69258
69526
  return buildInteractiveIslandProps({
@@ -69265,6 +69533,20 @@ function buildNewsletterFormInteractiveIslandProps(props2) {
69265
69533
  source: props2
69266
69534
  });
69267
69535
  }
69536
+ function parseRequiredNewsletterSignupBlockId(value) {
69537
+ const parsed = parseNewsletterSignupBlockId(value);
69538
+ if (!parsed) {
69539
+ throw new Error("Newsletter signup block destination ref requires blockId");
69540
+ }
69541
+ return parsed;
69542
+ }
69543
+ function parseRequiredSignedNewsletterDestinationRef(value) {
69544
+ const parsed = parseSignedNewsletterDestinationRef(value);
69545
+ if (!parsed) {
69546
+ throw new Error("Newsletter signup signed destination ref requires token");
69547
+ }
69548
+ return parsed;
69549
+ }
69268
69550
 
69269
69551
  // ../blocks/src/system/blocks/newsletter-signup.ts
69270
69552
  var stackedComposition = composeFragments([
@@ -71463,7 +71745,7 @@ function resolveLinkedContentEditSupport(contentType) {
71463
71745
  case "unsupported-domain-backed":
71464
71746
  return { kind: "unsupported-domain-backed", reason: metadata.reason };
71465
71747
  default:
71466
- return assertNever3(metadata);
71748
+ return assertNever(metadata);
71467
71749
  }
71468
71750
  }
71469
71751
  function contentTypeKeyToLabel(key) {
@@ -71876,6 +72158,8 @@ function renderDoc(node, key, imageResolveContext) {
71876
72158
  return /* @__PURE__ */ jsx("blockquote", { children }, key);
71877
72159
  case "horizontalRule":
71878
72160
  return /* @__PURE__ */ jsx("hr", {}, key);
72161
+ case "hardBreak":
72162
+ return /* @__PURE__ */ jsx("br", {}, key);
71879
72163
  case "image": {
71880
72164
  const attrs = node.attrs ?? {};
71881
72165
  const src = typeof attrs.src === "string" ? attrs.src.trim() : "";
@@ -71928,104 +72212,12 @@ function Text({
71928
72212
  const dataAttributes = path ? { "data-builder-text": path } : void 0;
71929
72213
  return /* @__PURE__ */ jsx(Comp, { className, ...dataAttributes, children });
71930
72214
  }
71931
- var TipTapMarkSchema = z.object({
71932
- type: z.string(),
71933
- attrs: z.record(z.string(), z.unknown()).optional()
71934
- });
71935
- var TipTapNodeSchema = z.lazy(
71936
- () => z.object({
71937
- type: z.string(),
71938
- content: z.array(TipTapNodeSchema).optional(),
71939
- text: z.string().optional(),
71940
- attrs: z.record(z.string(), z.unknown()).optional(),
71941
- marks: z.array(TipTapMarkSchema).optional()
71942
- })
71943
- );
71944
- var RichTextValueSchema = z.union([
71945
- // Canonical: TipTap document directly
71946
- TipTapNodeSchema,
71947
- // Legacy (read-tolerance only): wrapped in { doc: {...} }
71948
- z.object({
71949
- doc: TipTapNodeSchema
71950
- })
71951
- ]);
71952
- z.object({
71953
- type: z.literal("doc"),
71954
- content: z.array(TipTapNodeSchema)
71955
- });
71956
- function unwrapRichTextRoot(value) {
71957
- if (!isRecord4(value)) return value;
71958
- if (!("doc" in value)) return value;
71959
- const inner = value.doc;
71960
- if (isRecord4(inner) && inner.type === "doc") return inner;
71961
- return value;
71962
- }
71963
- function buildRichTextSchema(options) {
71964
- let schema = RichTextValueSchema;
71965
- if (options?.required) {
71966
- const label = options.label ?? "This field";
71967
- schema = schema.refine(
71968
- (val) => {
71969
- const doc3 = isRecord4(val) && "doc" in val ? val.doc : val;
71970
- const content = isRecord4(doc3) ? doc3.content : void 0;
71971
- if (!Array.isArray(content) || content.length === 0) return false;
71972
- const first2 = content[0];
71973
- if (content.length === 1 && isRecord4(first2) && first2.type === "paragraph" && (!("content" in first2) || first2.content == null)) {
71974
- return false;
71975
- }
71976
- return true;
71977
- },
71978
- {
71979
- message: `${label} is required`
71980
- }
71981
- );
71982
- }
71983
- return schema;
71984
- }
71985
72215
 
71986
72216
  // ../blocks/src/system/runtime/nodes/richText-coerce.ts
71987
- function parseInlineMarkdown(text2) {
71988
- const out = [];
71989
- const pushText = (value, marks) => {
71990
- if (!value) return;
71991
- out.push(
71992
- marks && marks.length > 0 ? { type: "text", text: value, marks } : { type: "text", text: value }
71993
- );
71994
- };
71995
- let rest = text2;
71996
- while (rest.length > 0) {
71997
- const start = rest.indexOf("**");
71998
- if (start === -1) {
71999
- pushText(rest);
72000
- break;
72001
- }
72002
- const end = rest.indexOf("**", start + 2);
72003
- if (end === -1) {
72004
- pushText(rest);
72005
- break;
72006
- }
72007
- pushText(rest.slice(0, start));
72008
- pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
72009
- rest = rest.slice(end + 2);
72010
- }
72011
- return out;
72012
- }
72013
- function markdownToTipTapDoc(markdown) {
72014
- const normalized = markdown.replace(/\r\n/g, "\n").trim();
72015
- if (!normalized) return { type: "doc", content: [] };
72016
- const paragraphs = normalized.split(/\n{2,}/).map((p2) => p2.trim()).filter(Boolean);
72017
- return {
72018
- type: "doc",
72019
- content: paragraphs.map((p2) => {
72020
- const inline4 = parseInlineMarkdown(p2);
72021
- return inline4.length > 0 ? { type: "paragraph", content: inline4 } : { type: "paragraph" };
72022
- })
72023
- };
72024
- }
72025
72217
  function coerceRichTextDoc(value) {
72026
72218
  const raw = unwrapRichTextRoot(value);
72027
72219
  if (typeof raw === "string") {
72028
- return markdownToTipTapDoc(raw);
72220
+ return createRichTextDocFromMarkdown(raw);
72029
72221
  }
72030
72222
  if (isRecord4(raw) && typeof raw.type === "string") {
72031
72223
  return raw;
@@ -74022,6 +74214,32 @@ function TeamMemberName({
74022
74214
  }) {
74023
74215
  return profilePath ? /* @__PURE__ */ jsx("a", { href: profilePath, className: "rb-hover-opacity-80", children: /* @__PURE__ */ jsx("strong", { children: name }) }) : /* @__PURE__ */ jsx("strong", { children: name });
74024
74216
  }
74217
+ function formatTicketTypePrice(ticketType, currency) {
74218
+ return formatCurrencyAmount(ticketType.priceAmount, currency, { decimals: "auto" });
74219
+ }
74220
+ function getActiveTicketTypes(event) {
74221
+ return event.pricing.kind === "ticket_types" ? event.pricing.ticketTypes.filter((ticketType) => ticketType.isActive).sort((left, right) => left.sortOrder - right.sortOrder) : [];
74222
+ }
74223
+ function TicketTypePriceList({
74224
+ ticketTypes,
74225
+ currency
74226
+ }) {
74227
+ if (ticketTypes.length === 0) return null;
74228
+ return /* @__PURE__ */ jsx("div", { className: "rb-mt-3 rb-flex rb-flex-col rb-gap-2", children: ticketTypes.map((ticketType) => /* @__PURE__ */ jsxs(
74229
+ "div",
74230
+ {
74231
+ className: "rb-flex rb-items-start rb-justify-between rb-gap-4",
74232
+ children: [
74233
+ /* @__PURE__ */ jsxs("div", { children: [
74234
+ /* @__PURE__ */ jsx("p", { children: ticketType.name }),
74235
+ ticketType.description ? /* @__PURE__ */ jsx("p", { className: "rb-caption status-muted", children: ticketType.description }) : null
74236
+ ] }),
74237
+ /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: formatTicketTypePrice(ticketType, currency) }) })
74238
+ ]
74239
+ },
74240
+ ticketType.id
74241
+ )) });
74242
+ }
74025
74243
  function EventDetailsView({
74026
74244
  selection,
74027
74245
  showVenue,
@@ -74056,6 +74274,7 @@ function EventDetailsView({
74056
74274
  const shouldShowCoursePricing = showCost && !isDropIn && coursePricing !== null;
74057
74275
  const shouldShowEventCost = showCost && isPaid && !isDropIn && coursePricing === null;
74058
74276
  const eventCostLabel = shouldShowEventCost ? formatEventPrice(selected) : null;
74277
+ const ticketTypes = shouldShowEventCost ? getActiveTicketTypes(selected) : [];
74059
74278
  const acceptedItems = [];
74060
74279
  if (showAcceptedPasses) {
74061
74280
  acceptedItems.push(...applicablePasses.map((p2) => p2.name));
@@ -74112,6 +74331,7 @@ function EventDetailsView({
74112
74331
  /* @__PURE__ */ jsx("div", { className: "rb-label rb-mb-2", children: "Cost" }),
74113
74332
  /* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("strong", { children: eventCostLabel }) }),
74114
74333
  autoApplyDiscount ? /* @__PURE__ */ jsx("p", { className: "rb-caption rb-mt-1", children: formatAutoApplyDiscountLine(autoApplyDiscount, eventPricingCurrency) }) : null,
74334
+ /* @__PURE__ */ jsx(TicketTypePriceList, { ticketTypes, currency: eventPricingCurrency }),
74115
74335
  hasAcceptedItems ? /* @__PURE__ */ jsxs("p", { className: "rb-caption rb-mt-1", children: [
74116
74336
  "You can also attend with: ",
74117
74337
  acceptedItems.join(", ")
@@ -76166,6 +76386,7 @@ function EventRegistrationSSR({
76166
76386
  successMessage,
76167
76387
  waitlistMessage,
76168
76388
  buttonVariant,
76389
+ overlayEnabled,
76169
76390
  spamProtectionEnabled,
76170
76391
  stage,
76171
76392
  supportEmail,
@@ -76187,6 +76408,7 @@ function EventRegistrationSSR({
76187
76408
  successMessage,
76188
76409
  waitlistMessage,
76189
76410
  buttonVariant,
76411
+ overlayEnabled,
76190
76412
  spamProtectionEnabled,
76191
76413
  stage,
76192
76414
  supportEmail
@@ -76442,6 +76664,7 @@ function NewsletterFormSSR({
76442
76664
  siteId,
76443
76665
  apiBaseUrl,
76444
76666
  listId,
76667
+ destinationProvider,
76445
76668
  preset: preset2 = "emailOnly",
76446
76669
  includePhone,
76447
76670
  buttonLabel = "Subscribe",
@@ -76452,9 +76675,11 @@ function NewsletterFormSSR({
76452
76675
  className
76453
76676
  }) {
76454
76677
  const islandProps = buildNewsletterFormInteractiveIslandProps({
76678
+ blockId,
76455
76679
  siteId,
76456
76680
  apiBaseUrl,
76457
76681
  listId,
76682
+ destinationProvider,
76458
76683
  preset: preset2,
76459
76684
  includePhone,
76460
76685
  buttonLabel,
@@ -76909,7 +77134,7 @@ function previewEditableTargetToPath(target) {
76909
77134
  case "read-only":
76910
77135
  return void 0;
76911
77136
  default:
76912
- return assertNever3(target);
77137
+ return assertNever(target);
76913
77138
  }
76914
77139
  }
76915
77140
  function previewEditableTargetFieldConstraints(target, context) {
@@ -77811,7 +78036,7 @@ function collectNestedPreviewFieldConstraintEntries(field, path) {
77811
78036
  case "url":
77812
78037
  return [];
77813
78038
  default:
77814
- return assertNever3(field);
78039
+ return assertNever(field);
77815
78040
  }
77816
78041
  }
77817
78042
  function makeDefaultBlockComponent(args) {
@@ -81857,7 +82082,7 @@ function sourceLabel(source) {
81857
82082
  case "sdk-config":
81858
82083
  return "SDK config";
81859
82084
  default:
81860
- return assertNever3(source);
82085
+ return assertNever(source);
81861
82086
  }
81862
82087
  }
81863
82088
  function mergeBlockDescriptorsWithRegistry(systemBlocks, registry, onConflict) {
@@ -82242,6 +82467,7 @@ var MemoBlockSection = React61.memo(
82242
82467
  apiBaseUrl: dataContext?.apiBaseUrl ?? null,
82243
82468
  portalToken: dataContext?.portalToken ?? null,
82244
82469
  bookingOfferingPresets: dataContext?.bookingOfferingPresets ?? [],
82470
+ eventRegistrationOverlayEnabled: dataContext?.eventRegistrationOverlayEnabled ?? false,
82245
82471
  ...routes ? { routes } : {},
82246
82472
  // Identifier maps for CTA link resolution at render time
82247
82473
  ...dataContext?.pagesByIdentifier ? { pagesByIdentifier: dataContext.pagesByIdentifier } : {},
@@ -82382,7 +82608,7 @@ function foldSubroute(ctx, fold) {
82382
82608
  case "course-run":
82383
82609
  return fold["course-run"](ctx.run);
82384
82610
  default:
82385
- return assertNever3(ctx, "Unhandled subroute kind");
82611
+ return assertNever(ctx, "Unhandled subroute kind");
82386
82612
  }
82387
82613
  }
82388
82614
 
@@ -85674,6 +85900,7 @@ var containerResponsiveThemeCss = `/*
85674
85900
  */
85675
85901
 
85676
85902
  :where(.theme-scope) :where([data-block="event-registration"]) {
85903
+ --rb-modal-overlay-bg: rgb(var(--tb-text, 0 0 0) / 0.6);
85677
85904
  --rb-event-tile-bg: var(--er-event-card-bg);
85678
85905
  --rb-event-tile-border: var(--er-border);
85679
85906
  --rb-event-tile-border-width: var(--er-event-card-border-width);
@@ -87343,6 +87570,239 @@ var containerResponsiveThemeCss = `/*
87343
87570
  background: rgba(var(--tb-text), 0.05);
87344
87571
  }
87345
87572
 
87573
+ /* In-flow booking teaser (sits at the block's position in the page) */
87574
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser {
87575
+ display: flex;
87576
+ flex-wrap: wrap;
87577
+ align-items: center;
87578
+ justify-content: space-between;
87579
+ gap: 1rem 1.5rem;
87580
+ padding: 1.25rem 1.5rem;
87581
+ border: 1px solid var(--er-border);
87582
+ border-radius: var(--rb-block-radius);
87583
+ background: var(--er-event-card-bg);
87584
+ color: var(--er-on-surface);
87585
+ }
87586
+
87587
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__info {
87588
+ display: flex;
87589
+ flex-direction: column;
87590
+ gap: 0.25rem;
87591
+ min-width: 0;
87592
+ }
87593
+
87594
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__title {
87595
+ font-size: 1.0625rem;
87596
+ font-weight: 700;
87597
+ line-height: 1.2;
87598
+ }
87599
+
87600
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__meta {
87601
+ font-size: 0.9375rem;
87602
+ line-height: 1.3;
87603
+ opacity: 0.75;
87604
+ }
87605
+
87606
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__tickets {
87607
+ display: flex;
87608
+ flex-direction: column;
87609
+ gap: 0.375rem;
87610
+ margin-top: 0.5rem;
87611
+ padding-top: 0.625rem;
87612
+ border-top: 1px solid var(--er-border);
87613
+ }
87614
+
87615
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__ticket {
87616
+ display: flex;
87617
+ align-items: baseline;
87618
+ justify-content: space-between;
87619
+ gap: 1rem;
87620
+ font-size: 0.9375rem;
87621
+ line-height: 1.35;
87622
+ }
87623
+
87624
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__ticket-name {
87625
+ min-width: 0;
87626
+ }
87627
+
87628
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-teaser__cta {
87629
+ flex: 0 0 auto;
87630
+ }
87631
+
87632
+ /* Fixed, full-width sticky booking bar (content-agnostic; sits above page flow) */
87633
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar {
87634
+ position: fixed;
87635
+ left: 0;
87636
+ right: 0;
87637
+ bottom: 0;
87638
+ z-index: 12000;
87639
+ padding: 0.75rem max(1rem, env(safe-area-inset-right)) max(0.75rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
87640
+ background: rgb(var(--tb-background));
87641
+ border-top: 1px solid var(--er-border);
87642
+ box-shadow: 0 -10px 30px rgba(var(--tb-shadow), 0.16);
87643
+ }
87644
+
87645
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar__inner {
87646
+ display: flex;
87647
+ align-items: center;
87648
+ justify-content: space-between;
87649
+ gap: 1rem;
87650
+ width: 100%;
87651
+ max-width: 72rem;
87652
+ margin-inline: auto;
87653
+ }
87654
+
87655
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar__info {
87656
+ display: flex;
87657
+ flex-direction: column;
87658
+ gap: 0.125rem;
87659
+ min-width: 0;
87660
+ }
87661
+
87662
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar__title {
87663
+ font-size: 0.95rem;
87664
+ font-weight: 700;
87665
+ line-height: 1.2;
87666
+ white-space: nowrap;
87667
+ overflow: hidden;
87668
+ text-overflow: ellipsis;
87669
+ }
87670
+
87671
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar__meta {
87672
+ font-size: 0.8125rem;
87673
+ line-height: 1.25;
87674
+ opacity: 0.75;
87675
+ white-space: nowrap;
87676
+ overflow: hidden;
87677
+ text-overflow: ellipsis;
87678
+ }
87679
+
87680
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-bar__cta {
87681
+ flex: 0 0 auto;
87682
+ }
87683
+
87684
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay {
87685
+ position: fixed;
87686
+ inset: 0;
87687
+ height: 100dvh;
87688
+ z-index: 14000;
87689
+ display: flex;
87690
+ align-items: stretch;
87691
+ justify-content: stretch;
87692
+ background: var(--rb-modal-overlay-bg);
87693
+ }
87694
+
87695
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay__panel {
87696
+ position: relative;
87697
+ z-index: 1;
87698
+ display: flex;
87699
+ flex-direction: column;
87700
+ width: 100%;
87701
+ height: 100dvh;
87702
+ min-height: 0;
87703
+ overflow: hidden;
87704
+ background: rgb(var(--tb-background));
87705
+ color: var(--er-on-surface);
87706
+ }
87707
+
87708
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay__header {
87709
+ flex: 0 0 auto;
87710
+ z-index: 2;
87711
+ display: flex;
87712
+ align-items: center;
87713
+ justify-content: space-between;
87714
+ gap: 1rem;
87715
+ padding: 1rem;
87716
+ background: rgb(var(--tb-background));
87717
+ border-bottom: 1px solid var(--er-border);
87718
+ }
87719
+
87720
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay__title {
87721
+ margin: 0;
87722
+ font-size: 1rem;
87723
+ line-height: 1.25;
87724
+ font-weight: 700;
87725
+ }
87726
+
87727
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay__close {
87728
+ width: 2rem;
87729
+ height: 2rem;
87730
+ display: inline-flex;
87731
+ align-items: center;
87732
+ justify-content: center;
87733
+ border: 1px solid var(--er-border);
87734
+ border-radius: 999px;
87735
+ background: transparent;
87736
+ color: rgb(var(--tb-text));
87737
+ font-size: 1.25rem;
87738
+ line-height: 1;
87739
+ cursor: pointer;
87740
+ }
87741
+
87742
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay {
87743
+ max-width: none;
87744
+ border: 0;
87745
+ border-radius: 0;
87746
+ padding: 0;
87747
+ background: transparent;
87748
+ display: flex;
87749
+ flex: 1 1 auto;
87750
+ min-height: 0;
87751
+ overflow: hidden;
87752
+ }
87753
+
87754
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-payment-layout {
87755
+ flex: 1 1 auto;
87756
+ min-height: 0;
87757
+ height: 100%;
87758
+ gap: 0;
87759
+ grid-template-rows: minmax(0, 1fr) auto;
87760
+ grid-template-areas:
87761
+ "main"
87762
+ "footer";
87763
+ }
87764
+
87765
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-payment-layout-main {
87766
+ min-height: 0;
87767
+ overflow: auto;
87768
+ padding: 1rem;
87769
+ }
87770
+
87771
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-payment-layout-footer {
87772
+ position: relative;
87773
+ z-index: 3;
87774
+ padding: 0.875rem 1rem max(0.875rem, env(safe-area-inset-bottom));
87775
+ background: rgb(var(--tb-background));
87776
+ border-top: 1px solid var(--er-border);
87777
+ box-shadow: 0 -12px 26px rgba(var(--tb-shadow), 0.12);
87778
+ }
87779
+
87780
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-actions {
87781
+ margin-top: 0;
87782
+ }
87783
+
87784
+ @container rb-site (min-width: 768px) {
87785
+ @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
87786
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay {
87787
+ justify-content: flex-end;
87788
+ }
87789
+
87790
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-booking-overlay__panel {
87791
+ width: min(32rem, 100vw);
87792
+ min-height: 100%;
87793
+ box-shadow: -16px 0 40px rgba(var(--tb-shadow), 0.22);
87794
+ }
87795
+
87796
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-payment-layout-main {
87797
+ padding: 1.25rem;
87798
+ }
87799
+
87800
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-container--overlay .er-payment-layout-footer {
87801
+ padding: 0.875rem 1.25rem max(0.875rem, env(safe-area-inset-bottom));
87802
+ }
87803
+ }
87804
+ }
87805
+
87346
87806
  /* Magic Link Form */
87347
87807
  :where(.theme-scope) :where([data-block="event-registration"]) .er-magic-link-form {
87348
87808
  display: flex;
@@ -125553,9 +126013,8 @@ function createBlockApi(config) {
125553
126013
  name: data.name,
125554
126014
  company: data.company,
125555
126015
  phone: data.phone,
125556
- listId: data.listId,
126016
+ target: data.target,
125557
126017
  tags: data.tags,
125558
- blockId: data.blockId,
125559
126018
  meta: data.meta
125560
126019
  }
125561
126020
  });
@@ -126399,10 +126858,7 @@ var DEFAULT_CURRENCY = "GBP";
126399
126858
 
126400
126859
  // ../blocks/src/system/runtime/shared/utils/formatting.ts
126401
126860
  function formatPrice(cents, currency = DEFAULT_CURRENCY, locale) {
126402
- return new Intl.NumberFormat(locale, {
126403
- style: "currency",
126404
- currency: currency.toUpperCase()
126405
- }).format(cents / 100);
126861
+ return formatCurrencyAmount(cents, currency, { locale });
126406
126862
  }
126407
126863
 
126408
126864
  // ../blocks/src/system/runtime/shared/bookingPaymentOptions.ts
@@ -129364,6 +129820,8 @@ function ModalShell({
129364
129820
  children,
129365
129821
  portalRoot,
129366
129822
  portal = false,
129823
+ portalWrapperClassName,
129824
+ portalWrapperProps,
129367
129825
  overlayClassName,
129368
129826
  modalClassName,
129369
129827
  renderSrOnlyTitle = false,
@@ -129446,7 +129904,8 @@ function ModalShell({
129446
129904
  if (!portalRoot) {
129447
129905
  return null;
129448
129906
  }
129449
- return createPortal(modal, portalRoot);
129907
+ const modalNode = portalWrapperClassName || portalWrapperProps ? /* @__PURE__ */ jsx("div", { ...portalWrapperProps, className: portalWrapperClassName, children: modal }) : modal;
129908
+ return createPortal(modalNode, portalRoot);
129450
129909
  }
129451
129910
  function clampIndex(idx, len) {
129452
129911
  if (len <= 0) return 0;
@@ -132684,6 +133143,12 @@ function EventPortalAuthPrompt(props2) {
132684
133143
  /* @__PURE__ */ jsx("button", { type: "button", className: "er-portal-auth-link", onClick: props2.onRequestLogin, children: props2.copy.buttonText })
132685
133144
  ] });
132686
133145
  }
133146
+ function getActiveTicketTypes2(event) {
133147
+ return event?.pricing.kind === "ticket_types" ? event.pricing.ticketTypes.filter((ticketType) => ticketType.isActive).sort((left, right) => left.sortOrder - right.sortOrder) : [];
133148
+ }
133149
+ function formatTicketTypePrice2(ticketType, currency) {
133150
+ return formatCurrencyAmount(ticketType.priceAmount, currency, { decimals: "auto" });
133151
+ }
132687
133152
  function EventRegistrationWizard(props2) {
132688
133153
  const {
132689
133154
  occurrenceContext,
@@ -132703,6 +133168,8 @@ function EventRegistrationWizard(props2) {
132703
133168
  const maxTicketsNum = normalizeEventRegistrationMaxTickets(maxTickets);
132704
133169
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
132705
133170
  const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
133171
+ const registrationRootClassName = `event-registration ${className || ""}`;
133172
+ const registrationRootRef = React61__default.useRef(null);
132706
133173
  const wizard = useEventRegistrationWizard({
132707
133174
  anchorId: EVENT_REGISTRATION_ANCHOR_ID,
132708
133175
  occurrenceContext: occurrenceContext ?? null,
@@ -132710,13 +133177,44 @@ function EventRegistrationWizard(props2) {
132710
133177
  events: events2 ?? [],
132711
133178
  maxTicketsNum
132712
133179
  });
133180
+ const [bookingOverlayOpen, setBookingOverlayOpen] = useState(false);
133181
+ const [floatingPortalRoot, setFloatingPortalRoot] = useState(null);
133182
+ useEffect(() => {
133183
+ const sourceEl = registrationRootRef.current;
133184
+ if (!sourceEl) return;
133185
+ const portal = createBodyThemePortalRoot(sourceEl);
133186
+ if (!portal) return;
133187
+ setFloatingPortalRoot(portal.root);
133188
+ return () => {
133189
+ setFloatingPortalRoot(null);
133190
+ portal.cleanup();
133191
+ };
133192
+ }, []);
132713
133193
  if (wizard.scopedEvents.length === 0 && !wizard.occurrenceContext) {
132714
- return /* @__PURE__ */ jsx("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsx("div", { className: "er-empty", children: /* @__PURE__ */ jsx("p", { className: "er-empty__text", children: "No events available for registration." }) }) });
133194
+ return /* @__PURE__ */ jsx(
133195
+ "div",
133196
+ {
133197
+ ref: registrationRootRef,
133198
+ id: EVENT_REGISTRATION_ANCHOR_ID,
133199
+ className: registrationRootClassName,
133200
+ "data-block": "event-registration",
133201
+ children: /* @__PURE__ */ jsx("div", { className: "er-empty", children: /* @__PURE__ */ jsx("p", { className: "er-empty__text", children: "No events available for registration." }) })
133202
+ }
133203
+ );
132715
133204
  }
132716
133205
  const allowedStatuses = getRegistrableStatuses(wizard.api.config.isPreview);
132717
133206
  const hasRegistrableEvents = wizard.scopedEvents.some((event) => !event.status || allowedStatuses.includes(event.status));
132718
133207
  if (!hasRegistrableEvents && !wizard.occurrenceContext) {
132719
- return /* @__PURE__ */ jsx("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsx("div", { className: "er-empty", children: /* @__PURE__ */ jsx("p", { className: "er-empty__text", children: "Registration is not currently available for this event." }) }) });
133208
+ return /* @__PURE__ */ jsx(
133209
+ "div",
133210
+ {
133211
+ ref: registrationRootRef,
133212
+ id: EVENT_REGISTRATION_ANCHOR_ID,
133213
+ className: registrationRootClassName,
133214
+ "data-block": "event-registration",
133215
+ children: /* @__PURE__ */ jsx("div", { className: "er-empty", children: /* @__PURE__ */ jsx("p", { className: "er-empty__text", children: "Registration is not currently available for this event." }) })
133216
+ }
133217
+ );
132720
133218
  }
132721
133219
  const isWizardStep = WIZARD_STEPS.includes(wizard.step);
132722
133220
  const activeWizardSteps = useMemo(
@@ -132758,13 +133256,15 @@ function EventRegistrationWizard(props2) {
132758
133256
  const currentStepNumber = getStepNumber(wizard.step, activeWizardSteps);
132759
133257
  const summaryEvent = wizard.selectedEvent ?? wizard.preSelectedEvent;
132760
133258
  const summaryEventPricingType = summaryEvent ? publicEventPricingType(summaryEvent.pricing) : "free";
133259
+ const summaryPriceLabel = summaryEvent ? formatEventPriceDisplay(summaryEvent.pricing) : null;
133260
+ const summaryAvailabilityLabel = summaryEvent?.availableSpots === null || summaryEvent?.availableSpots === void 0 ? null : summaryEvent.availableSpots > 0 ? `${summaryEvent.availableSpots} spots left` : summaryEvent.waitlistEnabled ? "Waitlist available" : "Fully booked";
132761
133261
  const waitlistClaimRequiresPortalLogin = wizard.waitlistClaim.requiresPortalLogin && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking";
132762
133262
  const portalAuthCopy = waitlistClaimRequiresPortalLogin ? {
132763
133263
  ...EVENT_PORTAL_AUTH_COPY["waitlist-claim"],
132764
133264
  description: wizard.waitlistClaim.loginMessage ?? "Log in to continue with your waitlist claim."
132765
133265
  } : EVENT_PORTAL_AUTH_COPY.membership;
132766
133266
  const showPortalAuthPrompt = waitlistClaimRequiresPortalLogin || wizard.step === "select-tickets" && wizard.portalAuthState !== "authenticated" && wizard.portalAuthState !== "checking" && summaryEventPricingType !== "free";
132767
- return /* @__PURE__ */ jsx("div", { id: EVENT_REGISTRATION_ANCHOR_ID, className: `event-registration ${className || ""}`, "data-block": "event-registration", children: /* @__PURE__ */ jsxs("div", { className: "er-container", children: [
133267
+ const renderRegistrationSurface = (variant) => /* @__PURE__ */ jsxs("div", { className: `er-container${variant === "overlay" ? " er-container--overlay" : ""}`, children: [
132768
133268
  isWizardStep && /* @__PURE__ */ jsxs("div", { className: "er-payment-layout er-payment-layout--no-sidebar", children: [
132769
133269
  /* @__PURE__ */ jsxs("div", { className: "er-payment-layout-main", children: [
132770
133270
  totalSteps > 1 && /* @__PURE__ */ jsx(StepIndicator2, { currentStep: currentStepNumber, totalSteps, stepLabels }),
@@ -132832,7 +133332,100 @@ function EventRegistrationWizard(props2) {
132832
133332
  }
132833
133333
  ),
132834
133334
  wizard.step === "error" && /* @__PURE__ */ jsx(ErrorStep, { message: wizard.errorMessage, onRetry: wizard.handleRetry })
132835
- ] }) });
133335
+ ] });
133336
+ const isEmbedded = (className ?? "").includes("event-registration--embedded");
133337
+ const overlayEnabled = props2.overlayEnabled === true;
133338
+ if (isEmbedded || !overlayEnabled) {
133339
+ return /* @__PURE__ */ jsx(
133340
+ "div",
133341
+ {
133342
+ ref: registrationRootRef,
133343
+ id: EVENT_REGISTRATION_ANCHOR_ID,
133344
+ className: registrationRootClassName,
133345
+ "data-block": "event-registration",
133346
+ children: renderRegistrationSurface("inline")
133347
+ }
133348
+ );
133349
+ }
133350
+ const bookingSummaryMeta = [summaryPriceLabel, summaryAvailabilityLabel].filter(Boolean).join(" \xB7 ");
133351
+ const bookingTicketTypes = getActiveTicketTypes2(summaryEvent);
133352
+ const bookingTicketTypesCurrency = summaryEvent?.pricing.kind === "ticket_types" ? summaryEvent.pricing.currency : null;
133353
+ const renderBookingEntry = (base2) => /* @__PURE__ */ jsxs(Fragment, { children: [
133354
+ /* @__PURE__ */ jsxs("div", { className: `${base2}__info`, children: [
133355
+ /* @__PURE__ */ jsx("span", { className: `${base2}__title`, children: "Book this event" }),
133356
+ bookingSummaryMeta && /* @__PURE__ */ jsx("span", { className: `${base2}__meta`, children: bookingSummaryMeta }),
133357
+ base2 === "er-booking-teaser" && bookingTicketTypesCurrency && bookingTicketTypes.length > 0 ? /* @__PURE__ */ jsx("div", { className: "er-booking-teaser__tickets", children: bookingTicketTypes.map((ticketType) => /* @__PURE__ */ jsxs("div", { className: "er-booking-teaser__ticket", children: [
133358
+ /* @__PURE__ */ jsx("span", { className: "er-booking-teaser__ticket-name", children: ticketType.name }),
133359
+ /* @__PURE__ */ jsx("strong", { children: formatTicketTypePrice2(ticketType, bookingTicketTypesCurrency) })
133360
+ ] }, ticketType.id)) }) : null
133361
+ ] }),
133362
+ /* @__PURE__ */ jsx(
133363
+ "button",
133364
+ {
133365
+ type: "button",
133366
+ className: `${base2}__cta ${buttonClass}`,
133367
+ onClick: () => setBookingOverlayOpen(true),
133368
+ children: "Book now"
133369
+ }
133370
+ )
133371
+ ] });
133372
+ const floatingBookingUi = !bookingOverlayOpen && isWizardStep ? /* @__PURE__ */ jsx("div", { className: "er-booking-bar", children: /* @__PURE__ */ jsx("div", { className: "er-booking-bar__inner", children: renderBookingEntry("er-booking-bar") }) }) : null;
133373
+ const floatingBookingLayer = floatingPortalRoot ? createPortal(
133374
+ /* @__PURE__ */ jsx("div", { className: registrationRootClassName, "data-block": "event-registration", children: floatingBookingUi }),
133375
+ floatingPortalRoot
133376
+ ) : floatingBookingUi;
133377
+ const bookingOverlayLayer = bookingOverlayOpen ? /* @__PURE__ */ jsx(
133378
+ ModalShell,
133379
+ {
133380
+ title: "Book this event",
133381
+ titleId: "event-registration-booking-title",
133382
+ onClose: () => setBookingOverlayOpen(false),
133383
+ portal: floatingPortalRoot != null,
133384
+ portalRoot: floatingPortalRoot,
133385
+ portalWrapperClassName: registrationRootClassName,
133386
+ portalWrapperProps: { "data-block": "event-registration" },
133387
+ overlayClassName: "er-booking-overlay",
133388
+ modalClassName: "er-booking-overlay__panel",
133389
+ renderHeader: ({ closeButtonRef, onClose, title, titleId }) => /* @__PURE__ */ jsxs("div", { className: "er-booking-overlay__header", children: [
133390
+ /* @__PURE__ */ jsx("h2", { className: "er-booking-overlay__title", id: titleId, children: title }),
133391
+ /* @__PURE__ */ jsx(
133392
+ "button",
133393
+ {
133394
+ ref: closeButtonRef,
133395
+ type: "button",
133396
+ className: "er-booking-overlay__close",
133397
+ onClick: onClose,
133398
+ "aria-label": "Close booking",
133399
+ children: "\xD7"
133400
+ }
133401
+ )
133402
+ ] }),
133403
+ children: renderRegistrationSurface("overlay")
133404
+ }
133405
+ ) : null;
133406
+ return /* @__PURE__ */ jsxs(
133407
+ "div",
133408
+ {
133409
+ ref: registrationRootRef,
133410
+ id: EVENT_REGISTRATION_ANCHOR_ID,
133411
+ className: registrationRootClassName,
133412
+ "data-block": "event-registration",
133413
+ children: [
133414
+ isWizardStep ? (
133415
+ // In-flow: a lightweight teaser at the block's position. The full wizard
133416
+ // lives in the sheet, so there is only ever one form surface mounted.
133417
+ /* @__PURE__ */ jsx("div", { className: "er-booking-teaser", children: renderBookingEntry("er-booking-teaser") })
133418
+ ) : (
133419
+ // Terminal states (success, error, payment verification on redirect
133420
+ // return) render in the page where the visitor lands, unless the sheet is
133421
+ // open and already showing them.
133422
+ !bookingOverlayOpen && renderRegistrationSurface("inline")
133423
+ ),
133424
+ floatingBookingLayer,
133425
+ bookingOverlayLayer
133426
+ ]
133427
+ }
133428
+ );
132836
133429
  }
132837
133430
  function isPastOccurrence(startsAt) {
132838
133431
  if (!startsAt) return false;
@@ -135542,7 +136135,7 @@ function PassesMembershipsController({ render }) {
135542
136135
  window.location.href = result.checkoutUrl;
135543
136136
  return;
135544
136137
  default:
135545
- return assertNever3(result);
136138
+ return assertNever(result);
135546
136139
  }
135547
136140
  } catch (submitError) {
135548
136141
  dispatch({
@@ -136860,10 +137453,7 @@ function buildGiftingCheckoutInput(formData, input) {
136860
137453
  };
136861
137454
  }
136862
137455
  function formatCurrency(amountCents, currency) {
136863
- return new Intl.NumberFormat("en-GB", {
136864
- style: "currency",
136865
- currency
136866
- }).format(amountCents / 100);
137456
+ return formatCurrencyAmount(amountCents, currency);
136867
137457
  }
136868
137458
  var sectionCardStyle = {
136869
137459
  gap: "0.875rem",
@@ -140731,6 +141321,49 @@ function getNewsletterFieldError(error, fieldId) {
140731
141321
  function getNewsletterFormError(error) {
140732
141322
  return error?.kind === "form" ? error.message : null;
140733
141323
  }
141324
+
141325
+ // ../blocks/src/system/runtime/nodes/newsletter-form.submission.ts
141326
+ function mapNewsletterFormFieldsToSubscriberInput(fields3) {
141327
+ return {
141328
+ email: readSubmittedText(fields3.email),
141329
+ firstName: readOptionalSubmittedText(fields3.firstName),
141330
+ lastName: readOptionalSubmittedText(fields3.lastName),
141331
+ name: readOptionalSubmittedText(fields3.name),
141332
+ company: readOptionalSubmittedText(fields3.company),
141333
+ phone: readOptionalSubmittedText(fields3.phone),
141334
+ honeypot: readSubmittedText(fields3.website)
141335
+ };
141336
+ }
141337
+ function resolveNewsletterSubmitTarget(input) {
141338
+ const listId = input.listId?.trim();
141339
+ if (input.destinationRef) {
141340
+ return {
141341
+ tag: "ready",
141342
+ target: {
141343
+ tag: "published_block_ref",
141344
+ destinationRef: input.destinationRef
141345
+ }
141346
+ };
141347
+ }
141348
+ if (!listId) {
141349
+ return { tag: "unavailable", reason: "missing_legacy_list" };
141350
+ }
141351
+ return {
141352
+ tag: "ready",
141353
+ target: {
141354
+ tag: "legacy_riverbank_list",
141355
+ listId,
141356
+ destinationRef: input.destinationRef ?? void 0
141357
+ }
141358
+ };
141359
+ }
141360
+ function readOptionalSubmittedText(value) {
141361
+ const text2 = readSubmittedText(value);
141362
+ return text2.length > 0 ? text2 : void 0;
141363
+ }
141364
+ function readSubmittedText(value) {
141365
+ return typeof value === "string" ? value.trim() : "";
141366
+ }
140734
141367
  function NewsletterFormClient({
140735
141368
  render
140736
141369
  }) {
@@ -140746,39 +141379,44 @@ function NewsletterFormClient({
140746
141379
  e3.preventDefault();
140747
141380
  setError(null);
140748
141381
  const formData = new FormData(e3.currentTarget);
140749
- const honeypot = formData.get("website");
140750
- if (honeypot?.trim()) {
141382
+ const submittedFields = mapNewsletterFormFieldsToSubscriberInput({
141383
+ email: formData.get("email"),
141384
+ firstName: formData.get("firstName"),
141385
+ lastName: formData.get("lastName"),
141386
+ name: formData.get("name"),
141387
+ company: formData.get("company"),
141388
+ phone: formData.get("phone"),
141389
+ website: formData.get("website")
141390
+ });
141391
+ if (submittedFields.honeypot) {
140751
141392
  setIsSuccess(true);
140752
141393
  return;
140753
141394
  }
140754
- const email = formData.get("email")?.trim();
140755
- const firstName = formData.get("firstName")?.trim() || void 0;
140756
- const lastName = formData.get("lastName")?.trim() || void 0;
140757
- const name = formData.get("name")?.trim() || void 0;
140758
- const company = formData.get("company")?.trim() || void 0;
140759
- const phone = formData.get("phone")?.trim() || void 0;
140760
- if (!email) {
141395
+ if (!submittedFields.email) {
140761
141396
  setError(newsletterFieldError("email", "Email is required"));
140762
141397
  return;
140763
141398
  }
140764
- if (!render.hydration.listId) {
141399
+ const submitTarget = resolveNewsletterSubmitTarget({
141400
+ listId: render.hydration.listId,
141401
+ destinationRef: render.hydration.destinationRef
141402
+ });
141403
+ if (submitTarget.tag === "unavailable") {
140765
141404
  setError(newsletterFormError("Newsletter list is not configured"));
140766
141405
  return;
140767
141406
  }
140768
141407
  setIsSubmitting(true);
140769
141408
  try {
140770
141409
  await api.subscribeNewsletter({
140771
- email,
140772
- firstName,
140773
- lastName,
140774
- name,
140775
- company,
140776
- phone,
140777
- listId: render.hydration.listId,
141410
+ email: submittedFields.email,
141411
+ firstName: submittedFields.firstName,
141412
+ lastName: submittedFields.lastName,
141413
+ name: submittedFields.name,
141414
+ company: submittedFields.company,
141415
+ phone: submittedFields.phone,
141416
+ target: submitTarget.target,
140778
141417
  tags: parsedTags.length > 0 ? parsedTags : void 0,
140779
- blockId: void 0,
140780
141418
  meta: {
140781
- honeypot,
141419
+ honeypot: submittedFields.honeypot,
140782
141420
  altchaSolution
140783
141421
  }
140784
141422
  });
@@ -146646,8 +147284,8 @@ function deriveLaunchReadiness(input) {
146646
147284
  priority: "optional",
146647
147285
  state: input.customDomain.kind === "connected" ? "complete" : "pending",
146648
147286
  owner: "admin",
146649
- title: "Connect a custom domain",
146650
- description: input.customDomain.kind === "connected" ? "A custom domain is already connected." : "You can connect a custom domain later when you are ready to launch.",
147287
+ title: "Connect a domain",
147288
+ description: input.customDomain.kind === "connected" ? "A domain is already connected." : "You can connect a domain later when you are ready to launch.",
146651
147289
  action: openDashboardPathAction(
146652
147290
  siteId,
146653
147291
  "/settings/domains?setup=domain",
@@ -159882,7 +160520,7 @@ function findDiffEnd(a2, b2, posA, posB) {
159882
160520
  posB -= size4;
159883
160521
  }
159884
160522
  }
159885
- var Fragment52 = class _Fragment {
160523
+ var Fragment53 = class _Fragment {
159886
160524
  /**
159887
160525
  @internal
159888
160526
  */
@@ -160174,7 +160812,7 @@ var Fragment52 = class _Fragment {
160174
160812
  throw new RangeError("Can not convert " + nodes + " to a Fragment" + (nodes.nodesBetween ? " (looks like multiple versions of prosemirror-model were loaded)" : ""));
160175
160813
  }
160176
160814
  };
160177
- Fragment52.empty = new Fragment52([], 0);
160815
+ Fragment53.empty = new Fragment53([], 0);
160178
160816
  var found = { index: 0, offset: 0 };
160179
160817
  function retIndex(index2, offset4) {
160180
160818
  found.index = index2;
@@ -160399,7 +161037,7 @@ var Slice2 = class _Slice {
160399
161037
  let openStart = json.openStart || 0, openEnd = json.openEnd || 0;
160400
161038
  if (typeof openStart != "number" || typeof openEnd != "number")
160401
161039
  throw new RangeError("Invalid input for Slice.fromJSON");
160402
- return new _Slice(Fragment52.fromJSON(schema, json.content), openStart, openEnd);
161040
+ return new _Slice(Fragment53.fromJSON(schema, json.content), openStart, openEnd);
160403
161041
  }
160404
161042
  /**
160405
161043
  Create a slice from a fragment by taking the maximum possible
@@ -160414,7 +161052,7 @@ var Slice2 = class _Slice {
160414
161052
  return new _Slice(fragment, openStart, openEnd);
160415
161053
  }
160416
161054
  };
160417
- Slice2.empty = new Slice2(Fragment52.empty, 0, 0);
161055
+ Slice2.empty = new Slice2(Fragment53.empty, 0, 0);
160418
161056
  function removeRange(content, from2, to) {
160419
161057
  let { index: index2, offset: offset4 } = content.findIndex(from2), child = content.maybeChild(index2);
160420
161058
  let { index: indexTo, offset: offsetTo } = content.findIndex(to);
@@ -160512,7 +161150,7 @@ function replaceThreeWay($from, $start, $end, $to, depth) {
160512
161150
  addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);
160513
161151
  }
160514
161152
  addRange($to, null, depth, content);
160515
- return new Fragment52(content);
161153
+ return new Fragment53(content);
160516
161154
  }
160517
161155
  function replaceTwoWay($from, $to, depth) {
160518
161156
  let content = [];
@@ -160522,13 +161160,13 @@ function replaceTwoWay($from, $to, depth) {
160522
161160
  addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);
160523
161161
  }
160524
161162
  addRange($to, null, depth, content);
160525
- return new Fragment52(content);
161163
+ return new Fragment53(content);
160526
161164
  }
160527
161165
  function prepareSliceForReplace(slice2, $along) {
160528
161166
  let extra = $along.depth - slice2.openStart, parent = $along.node(extra);
160529
161167
  let node = parent.copy(slice2.content);
160530
161168
  for (let i2 = extra - 1; i2 >= 0; i2--)
160531
- node = $along.node(i2).copy(Fragment52.from(node));
161169
+ node = $along.node(i2).copy(Fragment53.from(node));
160532
161170
  return {
160533
161171
  start: node.resolveNoCache(slice2.openStart + extra),
160534
161172
  end: node.resolveNoCache(node.content.size - slice2.openEnd - extra)
@@ -160867,7 +161505,7 @@ var Node2 = class _Node {
160867
161505
  this.type = type;
160868
161506
  this.attrs = attrs;
160869
161507
  this.marks = marks;
160870
- this.content = content || Fragment52.empty;
161508
+ this.content = content || Fragment53.empty;
160871
161509
  }
160872
161510
  /**
160873
161511
  The array of this node's child nodes.
@@ -161172,7 +161810,7 @@ var Node2 = class _Node {
161172
161810
  can optionally pass `start` and `end` indices into the
161173
161811
  replacement fragment.
161174
161812
  */
161175
- canReplace(from2, to, replacement = Fragment52.empty, start = 0, end = replacement.childCount) {
161813
+ canReplace(from2, to, replacement = Fragment53.empty, start = 0, end = replacement.childCount) {
161176
161814
  let one = this.contentMatchAt(from2).matchFragment(replacement, start, end);
161177
161815
  let two = one && one.matchFragment(this.content, to);
161178
161816
  if (!two || !two.validEnd)
@@ -161254,7 +161892,7 @@ var Node2 = class _Node {
161254
161892
  throw new RangeError("Invalid text node in JSON");
161255
161893
  return schema.text(json.text, marks);
161256
161894
  }
161257
- let content = Fragment52.fromJSON(schema, json.content);
161895
+ let content = Fragment53.fromJSON(schema, json.content);
161258
161896
  let node = schema.nodeType(json.type).create(json.attrs, content, marks);
161259
161897
  node.type.checkAttrs(node.attrs);
161260
161898
  return node;
@@ -161396,7 +162034,7 @@ var ContentMatch = class _ContentMatch {
161396
162034
  function search(match2, types) {
161397
162035
  let finished = match2.matchFragment(after, startIndex);
161398
162036
  if (finished && (!toEnd || finished.validEnd))
161399
- return Fragment52.from(types.map((tp) => tp.createAndFill()));
162037
+ return Fragment53.from(types.map((tp) => tp.createAndFill()));
161400
162038
  for (let i2 = 0; i2 < match2.next.length; i2++) {
161401
162039
  let { type, next } = match2.next[i2];
161402
162040
  if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {
@@ -161848,7 +162486,7 @@ var NodeType = class _NodeType {
161848
162486
  create(attrs = null, content, marks) {
161849
162487
  if (this.isText)
161850
162488
  throw new Error("NodeType.create can't construct text nodes");
161851
- return new Node2(this, this.computeAttrs(attrs), Fragment52.from(content), Mark.setFrom(marks));
162489
+ return new Node2(this, this.computeAttrs(attrs), Fragment53.from(content), Mark.setFrom(marks));
161852
162490
  }
161853
162491
  /**
161854
162492
  Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content
@@ -161856,7 +162494,7 @@ var NodeType = class _NodeType {
161856
162494
  if it doesn't match.
161857
162495
  */
161858
162496
  createChecked(attrs = null, content, marks) {
161859
- content = Fragment52.from(content);
162497
+ content = Fragment53.from(content);
161860
162498
  this.checkContent(content);
161861
162499
  return new Node2(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));
161862
162500
  }
@@ -161870,7 +162508,7 @@ var NodeType = class _NodeType {
161870
162508
  */
161871
162509
  createAndFill(attrs = null, content, marks) {
161872
162510
  attrs = this.computeAttrs(attrs);
161873
- content = Fragment52.from(content);
162511
+ content = Fragment53.from(content);
161874
162512
  if (content.size) {
161875
162513
  let before = this.contentMatch.fillBefore(content);
161876
162514
  if (!before)
@@ -161878,7 +162516,7 @@ var NodeType = class _NodeType {
161878
162516
  content = before.append(content);
161879
162517
  }
161880
162518
  let matched = this.contentMatch.matchFragment(content);
161881
- let after = matched && matched.fillBefore(Fragment52.empty, true);
162519
+ let after = matched && matched.fillBefore(Fragment53.empty, true);
161882
162520
  if (!after)
161883
162521
  return null;
161884
162522
  return new Node2(this, attrs, content.append(after), Mark.setFrom(marks));
@@ -162342,7 +162980,7 @@ var NodeContext = class {
162342
162980
  if (!this.match) {
162343
162981
  if (!this.type)
162344
162982
  return [];
162345
- let fill = this.type.contentMatch.fillBefore(Fragment52.from(node));
162983
+ let fill = this.type.contentMatch.fillBefore(Fragment53.from(node));
162346
162984
  if (fill) {
162347
162985
  this.match = this.type.contentMatch.matchFragment(fill);
162348
162986
  } else {
@@ -162368,9 +163006,9 @@ var NodeContext = class {
162368
163006
  this.content[this.content.length - 1] = text2.withText(text2.text.slice(0, text2.text.length - m2[0].length));
162369
163007
  }
162370
163008
  }
162371
- let content = Fragment52.from(this.content);
163009
+ let content = Fragment53.from(this.content);
162372
163010
  if (!openEnd && this.match)
162373
- content = content.append(this.match.fillBefore(Fragment52.empty, true));
163011
+ content = content.append(this.match.fillBefore(Fragment53.empty, true));
162374
163012
  return this.type ? this.type.create(this.attrs, content, this.marks) : content;
162375
163013
  }
162376
163014
  inlineContext(node) {
@@ -163386,7 +164024,7 @@ function mapFragment(fragment, f2, parent) {
163386
164024
  child = f2(child, parent, i2);
163387
164025
  mapped.push(child);
163388
164026
  }
163389
- return Fragment52.fromArray(mapped);
164027
+ return Fragment53.fromArray(mapped);
163390
164028
  }
163391
164029
  var AddMarkStep = class _AddMarkStep extends Step {
163392
164030
  /**
@@ -163503,7 +164141,7 @@ var AddNodeMarkStep = class _AddNodeMarkStep extends Step {
163503
164141
  if (!node)
163504
164142
  return StepResult.fail("No node at mark step's position");
163505
164143
  let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));
163506
- return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment52.from(updated), 0, node.isLeaf ? 0 : 1));
164144
+ return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment53.from(updated), 0, node.isLeaf ? 0 : 1));
163507
164145
  }
163508
164146
  invert(doc3) {
163509
164147
  let node = doc3.nodeAt(this.pos);
@@ -163549,7 +164187,7 @@ var RemoveNodeMarkStep = class _RemoveNodeMarkStep extends Step {
163549
164187
  if (!node)
163550
164188
  return StepResult.fail("No node at mark step's position");
163551
164189
  let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));
163552
- return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment52.from(updated), 0, node.isLeaf ? 0 : 1));
164190
+ return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment53.from(updated), 0, node.isLeaf ? 0 : 1));
163553
164191
  }
163554
164192
  invert(doc3) {
163555
164193
  let node = doc3.nodeAt(this.pos);
@@ -163814,7 +164452,7 @@ function clearIncompatible(tr2, pos, parentType, match2 = parentType.contentMatc
163814
164452
  let m2, newline = /\r?\n|\r/g, slice2;
163815
164453
  while (m2 = newline.exec(child.text)) {
163816
164454
  if (!slice2)
163817
- slice2 = new Slice2(Fragment52.from(parentType.schema.text(" ", parentType.allowedMarks(child.marks))), 0, 0);
164455
+ slice2 = new Slice2(Fragment53.from(parentType.schema.text(" ", parentType.allowedMarks(child.marks))), 0, 0);
163818
164456
  replSteps.push(new ReplaceStep(cur + m2.index, cur + m2.index + m2[0].length, slice2));
163819
164457
  }
163820
164458
  }
@@ -163822,7 +164460,7 @@ function clearIncompatible(tr2, pos, parentType, match2 = parentType.contentMatc
163822
164460
  cur = end;
163823
164461
  }
163824
164462
  if (!match2.validEnd) {
163825
- let fill = match2.fillBefore(Fragment52.empty, true);
164463
+ let fill = match2.fillBefore(Fragment53.empty, true);
163826
164464
  tr2.replace(cur, cur, new Slice2(fill, 0, 0));
163827
164465
  }
163828
164466
  for (let i2 = replSteps.length - 1; i2 >= 0; i2--)
@@ -163848,20 +164486,20 @@ function lift(tr2, range, target) {
163848
164486
  let { $from, $to, depth } = range;
163849
164487
  let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);
163850
164488
  let start = gapStart, end = gapEnd;
163851
- let before = Fragment52.empty, openStart = 0;
164489
+ let before = Fragment53.empty, openStart = 0;
163852
164490
  for (let d2 = depth, splitting = false; d2 > target; d2--)
163853
164491
  if (splitting || $from.index(d2) > 0) {
163854
164492
  splitting = true;
163855
- before = Fragment52.from($from.node(d2).copy(before));
164493
+ before = Fragment53.from($from.node(d2).copy(before));
163856
164494
  openStart++;
163857
164495
  } else {
163858
164496
  start--;
163859
164497
  }
163860
- let after = Fragment52.empty, openEnd = 0;
164498
+ let after = Fragment53.empty, openEnd = 0;
163861
164499
  for (let d2 = depth, splitting = false; d2 > target; d2--)
163862
164500
  if (splitting || $to.after(d2 + 1) < $to.end(d2)) {
163863
164501
  splitting = true;
163864
- after = Fragment52.from($to.node(d2).copy(after));
164502
+ after = Fragment53.from($to.node(d2).copy(after));
163865
164503
  openEnd++;
163866
164504
  } else {
163867
164505
  end++;
@@ -163901,14 +164539,14 @@ function findWrappingInside(range, type) {
163901
164539
  return inside;
163902
164540
  }
163903
164541
  function wrap(tr2, range, wrappers) {
163904
- let content = Fragment52.empty;
164542
+ let content = Fragment53.empty;
163905
164543
  for (let i2 = wrappers.length - 1; i2 >= 0; i2--) {
163906
164544
  if (content.size) {
163907
164545
  let match2 = wrappers[i2].type.contentMatch.matchFragment(content);
163908
164546
  if (!match2 || !match2.validEnd)
163909
164547
  throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper");
163910
164548
  }
163911
- content = Fragment52.from(wrappers[i2].type.create(wrappers[i2].attrs, content));
164549
+ content = Fragment53.from(wrappers[i2].type.create(wrappers[i2].attrs, content));
163912
164550
  }
163913
164551
  let start = range.start, end = range.end;
163914
164552
  tr2.step(new ReplaceAroundStep(start, end, start, end, new Slice2(content, 0, 0), wrappers.length, true));
@@ -163933,7 +164571,7 @@ function setBlockType(tr2, from2, to, type, attrs) {
163933
164571
  clearIncompatible(tr2, tr2.mapping.slice(mapFrom).map(pos, 1), type, void 0, convertNewlines === null);
163934
164572
  let mapping = tr2.mapping.slice(mapFrom);
163935
164573
  let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);
163936
- tr2.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice2(Fragment52.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));
164574
+ tr2.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice2(Fragment53.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));
163937
164575
  if (convertNewlines === true)
163938
164576
  replaceNewlines(tr2, node, pos, mapFrom);
163939
164577
  return false;
@@ -163974,7 +164612,7 @@ function setNodeMarkup(tr2, pos, type, attrs, marks) {
163974
164612
  return tr2.replaceWith(pos, pos + node.nodeSize, newNode);
163975
164613
  if (!type.validContent(node.content))
163976
164614
  throw new RangeError("Invalid content for node type " + type.name);
163977
- tr2.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice2(Fragment52.from(newNode), 0, 0), 1, true));
164615
+ tr2.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice2(Fragment53.from(newNode), 0, 0), 1, true));
163978
164616
  }
163979
164617
  function canSplit(doc3, pos, depth = 1, typesAfter) {
163980
164618
  let $pos = doc3.resolve(pos), base2 = $pos.depth - depth;
@@ -163998,11 +164636,11 @@ function canSplit(doc3, pos, depth = 1, typesAfter) {
163998
164636
  return $pos.node(base2).canReplaceWith(index2, index2, baseType ? baseType.type : $pos.node(base2 + 1).type);
163999
164637
  }
164000
164638
  function split(tr2, pos, depth = 1, typesAfter) {
164001
- let $pos = tr2.doc.resolve(pos), before = Fragment52.empty, after = Fragment52.empty;
164639
+ let $pos = tr2.doc.resolve(pos), before = Fragment53.empty, after = Fragment53.empty;
164002
164640
  for (let d2 = $pos.depth, e3 = $pos.depth - depth, i2 = depth - 1; d2 > e3; d2--, i2--) {
164003
- before = Fragment52.from($pos.node(d2).copy(before));
164641
+ before = Fragment53.from($pos.node(d2).copy(before));
164004
164642
  let typeAfter = typesAfter && typesAfter[i2];
164005
- after = Fragment52.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d2).copy(after));
164643
+ after = Fragment53.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d2).copy(after));
164006
164644
  }
164007
164645
  tr2.step(new ReplaceStep(pos, pos, new Slice2(before.append(after), depth, depth), true));
164008
164646
  }
@@ -164141,7 +164779,7 @@ var Fitter = class {
164141
164779
  this.$to = $to;
164142
164780
  this.unplaced = unplaced;
164143
164781
  this.frontier = [];
164144
- this.placed = Fragment52.empty;
164782
+ this.placed = Fragment53.empty;
164145
164783
  for (let i2 = 0; i2 <= $from.depth; i2++) {
164146
164784
  let node = $from.node(i2);
164147
164785
  this.frontier.push({
@@ -164150,7 +164788,7 @@ var Fitter = class {
164150
164788
  });
164151
164789
  }
164152
164790
  for (let i2 = $from.depth; i2 > 0; i2--)
164153
- this.placed = Fragment52.from($from.node(i2).copy(this.placed));
164791
+ this.placed = Fragment53.from($from.node(i2).copy(this.placed));
164154
164792
  }
164155
164793
  get depth() {
164156
164794
  return this.frontier.length - 1;
@@ -164207,7 +164845,7 @@ var Fitter = class {
164207
164845
  let first2 = fragment.firstChild;
164208
164846
  for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {
164209
164847
  let { type, match: match2 } = this.frontier[frontierDepth], wrap2, inject = null;
164210
- if (pass == 1 && (first2 ? match2.matchType(first2.type) || (inject = match2.fillBefore(Fragment52.from(first2), false)) : parent && type.compatibleContent(parent.type)))
164848
+ if (pass == 1 && (first2 ? match2.matchType(first2.type) || (inject = match2.fillBefore(Fragment53.from(first2), false)) : parent && type.compatibleContent(parent.type)))
164211
164849
  return { sliceDepth, frontierDepth, parent, inject };
164212
164850
  else if (pass == 2 && first2 && (wrap2 = match2.findWrapping(first2.type)))
164213
164851
  return { sliceDepth, frontierDepth, parent, wrap: wrap2 };
@@ -164267,7 +164905,7 @@ var Fitter = class {
164267
164905
  let toEnd = taken == fragment.childCount;
164268
164906
  if (!toEnd)
164269
164907
  openEndCount = -1;
164270
- this.placed = addToFragment(this.placed, frontierDepth, Fragment52.from(add2));
164908
+ this.placed = addToFragment(this.placed, frontierDepth, Fragment53.from(add2));
164271
164909
  this.frontier[frontierDepth].match = match2;
164272
164910
  if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)
164273
164911
  this.closeFrontierNode();
@@ -164323,12 +164961,12 @@ var Fitter = class {
164323
164961
  openFrontierNode(type, attrs = null, content) {
164324
164962
  let top = this.frontier[this.depth];
164325
164963
  top.match = top.match.matchType(type);
164326
- this.placed = addToFragment(this.placed, this.depth, Fragment52.from(type.create(attrs, content)));
164964
+ this.placed = addToFragment(this.placed, this.depth, Fragment53.from(type.create(attrs, content)));
164327
164965
  this.frontier.push({ type, match: type.contentMatch });
164328
164966
  }
164329
164967
  closeFrontierNode() {
164330
164968
  let open = this.frontier.pop();
164331
- let add2 = open.match.fillBefore(Fragment52.empty, true);
164969
+ let add2 = open.match.fillBefore(Fragment53.empty, true);
164332
164970
  if (add2.childCount)
164333
164971
  this.placed = addToFragment(this.placed, this.frontier.length, add2);
164334
164972
  }
@@ -164357,7 +164995,7 @@ function closeNodeStart(node, openStart, openEnd) {
164357
164995
  if (openStart > 0) {
164358
164996
  frag = node.type.contentMatch.fillBefore(frag).append(frag);
164359
164997
  if (openEnd <= 0)
164360
- frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment52.empty, true));
164998
+ frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment53.empty, true));
164361
164999
  }
164362
165000
  return node.copy(frag);
164363
165001
  }
@@ -164449,7 +165087,7 @@ function closeFragment(fragment, depth, oldOpen, newOpen, parent) {
164449
165087
  if (depth > newOpen) {
164450
165088
  let match2 = parent.contentMatchAt(0);
164451
165089
  let start = match2.fillBefore(fragment).append(fragment);
164452
- fragment = start.append(match2.matchFragment(start).fillBefore(Fragment52.empty, true));
165090
+ fragment = start.append(match2.matchFragment(start).fillBefore(Fragment53.empty, true));
164453
165091
  }
164454
165092
  return fragment;
164455
165093
  }
@@ -164459,7 +165097,7 @@ function replaceRangeWith(tr2, from2, to, node) {
164459
165097
  if (point != null)
164460
165098
  from2 = to = point;
164461
165099
  }
164462
- tr2.replaceRange(from2, to, new Slice2(Fragment52.from(node), 0, 0));
165100
+ tr2.replaceRange(from2, to, new Slice2(Fragment53.from(node), 0, 0));
164463
165101
  }
164464
165102
  function deleteRange(tr2, from2, to) {
164465
165103
  let $from = tr2.doc.resolve(from2), $to = tr2.doc.resolve(to);
@@ -164507,7 +165145,7 @@ var AttrStep = class _AttrStep extends Step {
164507
165145
  attrs[name] = node.attrs[name];
164508
165146
  attrs[this.attr] = this.value;
164509
165147
  let updated = node.type.create(attrs, null, node.marks);
164510
- return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment52.from(updated), 0, node.isLeaf ? 0 : 1));
165148
+ return StepResult.fromReplace(doc3, this.pos, this.pos + 1, new Slice2(Fragment53.from(updated), 0, node.isLeaf ? 0 : 1));
164511
165149
  }
164512
165150
  getMap() {
164513
165151
  return StepMap.empty;
@@ -164642,7 +165280,7 @@ var Transform = class {
164642
165280
  fragment, node, or array of nodes.
164643
165281
  */
164644
165282
  replaceWith(from2, to, content) {
164645
- return this.replace(from2, to, new Slice2(Fragment52.from(content), 0, 0));
165283
+ return this.replace(from2, to, new Slice2(Fragment53.from(content), 0, 0));
164646
165284
  }
164647
165285
  /**
164648
165286
  Delete the content between the given positions.
@@ -165144,7 +165782,7 @@ var NodeSelection = class _NodeSelection extends Selection {
165144
165782
  return new _NodeSelection($pos);
165145
165783
  }
165146
165784
  content() {
165147
- return new Slice2(Fragment52.from(this.node), 0, 0);
165785
+ return new Slice2(Fragment53.from(this.node), 0, 0);
165148
165786
  }
165149
165787
  eq(other) {
165150
165788
  return other instanceof _NodeSelection && other.anchor == this.anchor;
@@ -166966,7 +167604,7 @@ var NodeViewDesc = class _NodeViewDesc extends ViewDesc {
166966
167604
  }
166967
167605
  }
166968
167606
  if (!rule2.contentElement)
166969
- rule2.getContent = () => Fragment52.empty;
167607
+ rule2.getContent = () => Fragment53.empty;
166970
167608
  }
166971
167609
  return rule2;
166972
167610
  }
@@ -168278,7 +168916,7 @@ function parseFromClipboard(view, text2, html, plainText, $context) {
168278
168916
  text2 = f2(text2, inCode || plainText, view);
168279
168917
  });
168280
168918
  if (inCode) {
168281
- slice2 = new Slice2(Fragment52.from(view.state.schema.text(text2.replace(/\r\n?/g, "\n"))), 0, 0);
168919
+ slice2 = new Slice2(Fragment53.from(view.state.schema.text(text2.replace(/\r\n?/g, "\n"))), 0, 0);
168282
168920
  view.someProp("transformPasted", (f2) => {
168283
168921
  slice2 = f2(slice2, view, true);
168284
168922
  });
@@ -168372,13 +169010,13 @@ function normalizeSiblings(fragment, $context) {
168372
169010
  }
168373
169011
  });
168374
169012
  if (result)
168375
- return Fragment52.from(result);
169013
+ return Fragment53.from(result);
168376
169014
  }
168377
169015
  return fragment;
168378
169016
  }
168379
169017
  function withWrappers(node, wrap2, from2 = 0) {
168380
169018
  for (let i2 = wrap2.length - 1; i2 >= from2; i2--)
168381
- node = wrap2[i2].create(null, Fragment52.from(node));
169019
+ node = wrap2[i2].create(null, Fragment53.from(node));
168382
169020
  return node;
168383
169021
  }
168384
169022
  function addToSibling(wrap2, lastWrap, node, sibling, depth) {
@@ -168388,14 +169026,14 @@ function addToSibling(wrap2, lastWrap, node, sibling, depth) {
168388
169026
  return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));
168389
169027
  let match2 = sibling.contentMatchAt(sibling.childCount);
168390
169028
  if (match2.matchType(depth == wrap2.length - 1 ? node.type : wrap2[depth + 1]))
168391
- return sibling.copy(sibling.content.append(Fragment52.from(withWrappers(node, wrap2, depth + 1))));
169029
+ return sibling.copy(sibling.content.append(Fragment53.from(withWrappers(node, wrap2, depth + 1))));
168392
169030
  }
168393
169031
  }
168394
169032
  function closeRight(node, depth) {
168395
169033
  if (depth == 0)
168396
169034
  return node;
168397
169035
  let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));
168398
- let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment52.empty, true);
169036
+ let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment53.empty, true);
168399
169037
  return node.copy(fragment.append(fill));
168400
169038
  }
168401
169039
  function closeRange(fragment, side, from2, to, depth, openEnd) {
@@ -168405,7 +169043,7 @@ function closeRange(fragment, side, from2, to, depth, openEnd) {
168405
169043
  if (depth < to - 1)
168406
169044
  inner = closeRange(inner, side, from2, to, depth + 1, openEnd);
168407
169045
  if (depth >= from2)
168408
- inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner) : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment52.empty, true));
169046
+ inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner) : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment53.empty, true));
168409
169047
  return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));
168410
169048
  }
168411
169049
  function closeSlice(slice2, openStart, openEnd) {
@@ -168475,7 +169113,7 @@ function addContext(slice2, context) {
168475
169113
  let type = schema.nodes[array[i2]];
168476
169114
  if (!type || type.hasRequiredAttrs())
168477
169115
  break;
168478
- content = Fragment52.from(type.create(array[i2 + 1], content));
169116
+ content = Fragment53.from(type.create(array[i2 + 1], content));
168479
169117
  openStart++;
168480
169118
  openEnd++;
168481
169119
  }
@@ -170334,7 +170972,7 @@ function isMarkChange(cur, prev) {
170334
170972
  let updated = [];
170335
170973
  for (let i2 = 0; i2 < prev.childCount; i2++)
170336
170974
  updated.push(update(prev.child(i2)));
170337
- if (Fragment52.from(updated).eq(cur))
170975
+ if (Fragment53.from(updated).eq(cur))
170338
170976
  return { mark, type };
170339
170977
  }
170340
170978
  function looksLikeBackspace(old, start, end, $newStart, $newEnd) {
@@ -171484,10 +172122,10 @@ function deleteBarrier(state, $cut, dispatch, dir) {
171484
172122
  let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);
171485
172123
  if (canDelAfter && (conn = (match2 = before.contentMatchAt(before.childCount)).findWrapping(after.type)) && match2.matchType(conn[0] || after.type).validEnd) {
171486
172124
  if (dispatch) {
171487
- let end = $cut.pos + after.nodeSize, wrap2 = Fragment52.empty;
172125
+ let end = $cut.pos + after.nodeSize, wrap2 = Fragment53.empty;
171488
172126
  for (let i2 = conn.length - 1; i2 >= 0; i2--)
171489
- wrap2 = Fragment52.from(conn[i2].create(null, wrap2));
171490
- wrap2 = Fragment52.from(before.copy(wrap2));
172127
+ wrap2 = Fragment53.from(conn[i2].create(null, wrap2));
172128
+ wrap2 = Fragment53.from(before.copy(wrap2));
171491
172129
  let tr2 = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice2(wrap2, 1, 0), conn.length, true));
171492
172130
  let $joinAt = tr2.doc.resolve(end + 2 * conn.length);
171493
172131
  if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type && canJoin(tr2.doc, $joinAt.pos))
@@ -171516,9 +172154,9 @@ function deleteBarrier(state, $cut, dispatch, dir) {
171516
172154
  afterDepth++;
171517
172155
  if (at.canReplace(at.childCount, at.childCount, afterText.content)) {
171518
172156
  if (dispatch) {
171519
- let end = Fragment52.empty;
172157
+ let end = Fragment53.empty;
171520
172158
  for (let i2 = wrap2.length - 1; i2 >= 0; i2--)
171521
- end = Fragment52.from(wrap2[i2].copy(end));
172159
+ end = Fragment53.from(wrap2[i2].copy(end));
171522
172160
  let tr2 = state.tr.step(new ReplaceAroundStep($cut.pos - wrap2.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice2(end, wrap2.length, 0), 0, true));
171523
172161
  dispatch(tr2.scrollIntoView());
171524
172162
  }
@@ -171635,9 +172273,9 @@ function wrapRangeInList(tr2, range, listType, attrs = null) {
171635
172273
  return true;
171636
172274
  }
171637
172275
  function doWrapInList(tr2, range, wrappers, joinBefore, listType) {
171638
- let content = Fragment52.empty;
172276
+ let content = Fragment53.empty;
171639
172277
  for (let i2 = wrappers.length - 1; i2 >= 0; i2--)
171640
- content = Fragment52.from(wrappers[i2].type.create(wrappers[i2].attrs, content));
172278
+ content = Fragment53.from(wrappers[i2].type.create(wrappers[i2].attrs, content));
171641
172279
  tr2.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice2(content, 0, 0), wrappers.length, true));
171642
172280
  let found2 = 0;
171643
172281
  for (let i2 = 0; i2 < wrappers.length; i2++)
@@ -171671,7 +172309,7 @@ function liftListItem(itemType) {
171671
172309
  function liftToOuterList(state, dispatch, itemType, range) {
171672
172310
  let tr2 = state.tr, end = range.end, endOfList = range.$to.end(range.depth);
171673
172311
  if (end < endOfList) {
171674
- tr2.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice2(Fragment52.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));
172312
+ tr2.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice2(Fragment53.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));
171675
172313
  range = new NodeRange(tr2.doc.resolve(range.$from.pos), tr2.doc.resolve(endOfList), range.depth);
171676
172314
  }
171677
172315
  const target = liftTarget(range);
@@ -171695,10 +172333,10 @@ function liftOutOfList(state, dispatch, range) {
171695
172333
  return false;
171696
172334
  let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;
171697
172335
  let parent = $start.node(-1), indexBefore = $start.index(-1);
171698
- if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment52.empty : Fragment52.from(list))))
172336
+ if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment53.empty : Fragment53.from(list))))
171699
172337
  return false;
171700
172338
  let start = $start.pos, end = start + item.nodeSize;
171701
- tr2.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice2((atStart ? Fragment52.empty : Fragment52.from(list.copy(Fragment52.empty))).append(atEnd ? Fragment52.empty : Fragment52.from(list.copy(Fragment52.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));
172339
+ tr2.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice2((atStart ? Fragment53.empty : Fragment53.from(list.copy(Fragment53.empty))).append(atEnd ? Fragment53.empty : Fragment53.from(list.copy(Fragment53.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));
171702
172340
  dispatch(tr2.scrollIntoView());
171703
172341
  return true;
171704
172342
  }
@@ -171716,8 +172354,8 @@ function sinkListItem(itemType) {
171716
172354
  return false;
171717
172355
  if (dispatch) {
171718
172356
  let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;
171719
- let inner = Fragment52.from(nestedBefore ? itemType.create() : null);
171720
- let slice2 = new Slice2(Fragment52.from(itemType.create(null, Fragment52.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);
172357
+ let inner = Fragment53.from(nestedBefore ? itemType.create() : null);
172358
+ let slice2 = new Slice2(Fragment53.from(itemType.create(null, Fragment53.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);
171721
172359
  let before = range.start, after = range.end;
171722
172360
  dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice2, 1, true)).scrollIntoView());
171723
172361
  }
@@ -172348,7 +172986,7 @@ function inputRulesPlugin(props2) {
172348
172986
  if (typeof text2 === "string") {
172349
172987
  text2 = text2;
172350
172988
  } else {
172351
- text2 = getHTMLFromFragment(Fragment52.from(text2), state.schema);
172989
+ text2 = getHTMLFromFragment(Fragment53.from(text2), state.schema);
172352
172990
  }
172353
172991
  const { from: from2 } = simulatedInputMeta;
172354
172992
  const to = from2 + text2.length;
@@ -172707,7 +173345,7 @@ function pasteRulesPlugin(props2) {
172707
173345
  if (typeof text2 === "string") {
172708
173346
  text2 = text2;
172709
173347
  } else {
172710
- text2 = getHTMLFromFragment(Fragment52.from(text2), state.schema);
173348
+ text2 = getHTMLFromFragment(Fragment53.from(text2), state.schema);
172711
173349
  }
172712
173350
  const { from: from3 } = simulatedPasteMeta;
172713
173351
  const to2 = from3 + text2.length;
@@ -173408,7 +174046,7 @@ function elementFromString(value) {
173408
174046
  return removeWhitespaces(html);
173409
174047
  }
173410
174048
  function createNodeFromContent(content, schema, options) {
173411
- if (content instanceof Node2 || content instanceof Fragment52) {
174049
+ if (content instanceof Node2 || content instanceof Fragment53) {
173412
174050
  return content;
173413
174051
  }
173414
174052
  options = {
@@ -173422,7 +174060,7 @@ function createNodeFromContent(content, schema, options) {
173422
174060
  try {
173423
174061
  const isArrayContent = Array.isArray(content) && content.length > 0;
173424
174062
  if (isArrayContent) {
173425
- return Fragment52.fromArray(content.map((item) => schema.nodeFromJSON(item)));
174063
+ return Fragment53.fromArray(content.map((item) => schema.nodeFromJSON(item)));
173426
174064
  }
173427
174065
  const node = schema.nodeFromJSON(content);
173428
174066
  if (options.errorOnInvalidContent) {
@@ -173567,7 +174205,7 @@ var insertContentAt = (position, value, options) => ({ tr: tr2, dispatch, editor
173567
174205
  if (isOnlyTextContent) {
173568
174206
  if (Array.isArray(value)) {
173569
174207
  newContent = value.map((v2) => v2.text || "").join("");
173570
- } else if (value instanceof Fragment52) {
174208
+ } else if (value instanceof Fragment53) {
173571
174209
  let text2 = "";
173572
174210
  value.forEach((node) => {
173573
174211
  if (node.text) {
@@ -174366,10 +175004,10 @@ var splitListItem = (typeOrName, overrideAttrs = {}) => ({ tr: tr2, state, dispa
174366
175004
  return false;
174367
175005
  }
174368
175006
  if (dispatch) {
174369
- let wrap2 = Fragment52.empty;
175007
+ let wrap2 = Fragment53.empty;
174370
175008
  const depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;
174371
175009
  for (let d2 = $from.depth - depthBefore; d2 >= $from.depth - 3; d2 -= 1) {
174372
- wrap2 = Fragment52.from($from.node(d2).copy(wrap2));
175010
+ wrap2 = Fragment53.from($from.node(d2).copy(wrap2));
174373
175011
  }
174374
175012
  const depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1 : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;
174375
175013
  const newNextTypeAttributes2 = {
@@ -174377,7 +175015,7 @@ var splitListItem = (typeOrName, overrideAttrs = {}) => ({ tr: tr2, state, dispa
174377
175015
  ...overrideAttrs
174378
175016
  };
174379
175017
  const nextType2 = ((_a = type.contentMatch.defaultType) === null || _a === void 0 ? void 0 : _a.createAndFill(newNextTypeAttributes2)) || void 0;
174380
- wrap2 = wrap2.append(Fragment52.from(type.createAndFill(null, nextType2) || void 0));
175018
+ wrap2 = wrap2.append(Fragment53.from(type.createAndFill(null, nextType2) || void 0));
174381
175019
  const start = $from.before($from.depth - (depthBefore - 1));
174382
175020
  tr2.replace(start, $from.after(-depthAfter), new Slice2(wrap2, 4 - depthBefore, 0));
174383
175021
  let sel = -1;
@@ -176678,9 +177316,9 @@ function beforeinput(view, event) {
176678
177316
  let insert2 = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);
176679
177317
  if (!insert2)
176680
177318
  return false;
176681
- let frag = Fragment52.empty;
177319
+ let frag = Fragment53.empty;
176682
177320
  for (let i2 = insert2.length - 1; i2 >= 0; i2--)
176683
- frag = Fragment52.from(insert2[i2].createAndFill(null, frag));
177321
+ frag = Fragment53.from(insert2[i2].createAndFill(null, frag));
176684
177322
  let tr2 = view.state.tr.replace($from.pos, $from.pos, new Slice2(frag, 0, 0));
176685
177323
  tr2.setSelection(TextSelection.near(tr2.doc.resolve($from.pos + 1)));
176686
177324
  view.dispatch(tr2);
@@ -180314,7 +180952,7 @@ function requireUseSyncExternalStoreShim_development() {
180314
180952
  return x === y2 && (x !== 0 || 1 / x === 1 / y2) || x !== x && y2 !== y2;
180315
180953
  }
180316
180954
  var objectIs = typeof Object.is === "function" ? Object.is : is;
180317
- var useState98 = React$1.useState, useEffect99 = React$1.useEffect, useLayoutEffect11 = React$1.useLayoutEffect, useDebugValue2 = React$1.useDebugValue;
180955
+ var useState99 = React$1.useState, useEffect100 = React$1.useEffect, useLayoutEffect11 = React$1.useLayoutEffect, useDebugValue2 = React$1.useDebugValue;
180318
180956
  var didWarnOld18Alpha = false;
180319
180957
  var didWarnUncachedGetSnapshot = false;
180320
180958
  function useSyncExternalStore7(subscribe, getSnapshot, getServerSnapshot) {
@@ -180336,7 +180974,7 @@ function requireUseSyncExternalStoreShim_development() {
180336
180974
  }
180337
180975
  }
180338
180976
  }
180339
- var _useState = useState98({
180977
+ var _useState = useState99({
180340
180978
  inst: {
180341
180979
  value,
180342
180980
  getSnapshot
@@ -180351,7 +180989,7 @@ function requireUseSyncExternalStoreShim_development() {
180351
180989
  });
180352
180990
  }
180353
180991
  }, [subscribe, value, getSnapshot]);
180354
- useEffect99(function() {
180992
+ useEffect100(function() {
180355
180993
  if (checkIfSnapshotChanged(inst)) {
180356
180994
  forceUpdate({
180357
180995
  inst
@@ -180616,7 +181254,7 @@ function requireWithSelector_development() {
180616
181254
  }
180617
181255
  var objectIs = typeof Object.is === "function" ? Object.is : is;
180618
181256
  var useSyncExternalStore7 = shim2.useSyncExternalStore;
180619
- var useRef81 = React$1.useRef, useEffect99 = React$1.useEffect, useMemo92 = React$1.useMemo, useDebugValue2 = React$1.useDebugValue;
181257
+ var useRef81 = React$1.useRef, useEffect100 = React$1.useEffect, useMemo92 = React$1.useMemo, useDebugValue2 = React$1.useDebugValue;
180620
181258
  function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
180621
181259
  var instRef = useRef81(null);
180622
181260
  var inst;
@@ -180673,7 +181311,7 @@ function requireWithSelector_development() {
180673
181311
  return [getSnapshotWithSelector, getServerSnapshotWithSelector];
180674
181312
  }, [getSnapshot, getServerSnapshot, selector, isEqual]), getSelection2 = _useMemo[0], getServerSelection = _useMemo[1];
180675
181313
  var value = useSyncExternalStore7(subscribe, getSelection2, getServerSelection);
180676
- useEffect99(function() {
181314
+ useEffect100(function() {
180677
181315
  inst.hasValue = true;
180678
181316
  inst.value = value;
180679
181317
  }, [value]);
@@ -186543,4 +187181,4 @@ lucide-react/dist/esm/lucide-react.mjs:
186543
187181
  *)
186544
187182
  */
186545
187183
 
186546
- export { AMBIENT_BACKGROUND_ROLES2 as AMBIENT_BACKGROUND_ROLES, ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, CommandMultiSelect, Content, ContentFieldsForm, ContentSpinner, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EDITABLE_SURFACE_FORWARDING_PROP, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EllipsisVertical, EmptyState2 as EmptyState, EntryControllerProvider, EyeOff, FieldFrame, FixedBottomSurface, FormRenderer, GRADIENT_PRESETS, GripVertical, Image, ImagePlus, Input, KeyboardCode, LINKED_CONTENT_ENTRY_META_KEY, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewDesignCoordinatorProvider, PreviewDesignHistoryOrderProvider, PreviewRichTextEditor, PreviewTextEditor, PreviewThemeOverlayProvider, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SITE_CHROME_CLASS_NAMES, SITE_CHROME_VISIBLE_HEADER_SELECTOR, SUBROUTE_KINDS, ScrollableDialogContent, SdkConfigProvider, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteChromeCustomizeProvider, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, Textarea, ThemeScope, Trash2, TriangleAlert, Trigger, Upload, X, applyBackgroundOverrideContentPatch, applyCompiledRuntimeFieldsToContent, applyFeatureCardIconSuggestions, applyPageDesignEditorAction, applyResolvedSelections, asDesignBlockId, asRecord, assertNever3 as assertNever, assertNever5 as assertNever2, attachRenderableMediaAssetFields, augmentManifestWithStyleGroups, backgroundColorTokens, backgroundOverrideEquals, beginAutosaveBatch, buildApplySiteStyleSelectionBody, buildEditorModelRuntimeFieldsByBlockId, buildSiteChromeLookModels, buildThemeRuntime, buttonPersonalities, canCycleBackgroundOverrideValue, canRedoHistory, canUndoHistory, cancelPreview, classifyHistoryShortcut, classifyKnownMimeType, clearTypographyFontOverrides, clientComponentRegistry, closestCenter, cn, confirmAutosaveBatch, createBlock, createCustomBlockRegistry, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createEntrySlotBlock, createFeatureCardIconKey, createHistoryState, createManifestFormAdapter, createManifestValidation, createMicrobatcher, createOptimisticActionRunner, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, createStyleConfiguratorState, curatedSiteStyles, cycleSiteChromeLookId, cycleableSiteChromeOptions, decodePublicProductCategorySelectorQuery, defaultBackgroundOverrideForMode, defaultSectionTransitionVariantForFamily, deleteBlock, deleteEntrySlotBlock, deriveLaunchReadiness, deriveRouteMetadataPresentation, deriveStyleConfiguratorCapabilities, deriveTransactionCapabilities, designRuntimeRulesForTheme, dismissNotices, dismissWarnings, emitMediaCropDebug, enabledBackgroundModes, enqueueTransaction, evaluateTypographyFontSlot, evaluateVisibility, expectParsedBrandedId, findButtonPersonality, findFooterLook, findPaletteVariant, findTypographyPreset, foldSubroute, formatSiteChromeBackgroundTokenLabel, getBlockDefinition, getBlockIconSemanticFallbackId, getClientRect, getCuratedSiteStyle, getDirectImageUrlForMediaAsset, getFeatureCardIconCompletion, getFieldIntent, getFooterLayout, getGeneratedBlockIconStyleState, getHeaderLayout, getHeaderStyle, getIconComponent, getIconPickerOptionsForPreset, getLinkedContentEntryMeta, getModalConfig, getPageDesignEditorState, getRichTextImagePositionFromTarget, gradientToCss, idleEditorTransactionQueueState, imagePoolForOverride, inferLegacyOfferingsPreviewGroupOrder, insertOrReplaceRichTextImage, isHeaderField, isIconPickerPreset, isInternalResolvedLinkValue, isKeyboardEvent, isKnownIconName, isNonEmptyValue, isObjectRecord2 as isObjectRecord, isOfferingsPreviewSourceKey, isPreviewingChange, isSupportedLoaderEndpoint, isSvgMimeType, isThemeV2NormalEditorRawStyleFieldName, isThemeV2NormalEditorRawStylePath, listBlockDescriptors, listContentTypes, listEntryPageContentSlots, lucide_react_exports, markApplyFailed, markApplySaved, markApplySaving, mergeBlockDescriptorsWithRegistry, mergeManifestWithSdkOptions, mutateBlockContent, normalEditorCuratedPromotedFieldPaths, normalizeOfferingsPreviewGroupOrder, normalizePickerSearchThreshold, normalizePublicApiLoaderParams, openRow, paletteOverridesSchema, paletteVariants, parseAspectRatioValue, parseBackgroundOverrideFromContent, parseBlockIconValue, parseMediaAssetId, parseSiteIconStyleGuideVersionId, parseSiteId, planBackgroundOverride, planBackgroundTransition, planPageDesignLayoutLookCompatibility, planSiteChromeFooterLayoutSelection, planSiteChromeLookSelection, planSiteDocument, planSiteStylePreviewChange, prefetchBlockData, previewAssistantEnabled, previewButtonPersonality, previewDesignHistoryDomainForCommand, previewFooterLook, previewHeaderLayout, previewHeaderStyle, previewPaletteVariant, previewSiteStyle, previewTypographyPreset, pushHistoryEntry, rankBackgroundImagePoolItems, recoveryConflictCopy, redoHistory, rejectAutosaveBatch, renderBlock, reorderBlocks, reorderEntrySlotBlocks, requireEntriesForCuratedChoices, resolveBackgroundCapability, resolveBlockTitle, resolveContentTitle, resolveIconPickerPreset, resolveImageUrlWithContext, resolveMediaSlotContract, resolveOfferingsPreviewGroupOrderEntries, resolvePageRouteSlug, resolvePickerSelectionLabel, resolvePreviewSidebarTab, resolveStyleConfiguratorInitialSnapshot, resolveVideoSelectionIntentForMediaField, resolveVisiblePromotedFieldPathsForEditorBlock, sectionTransitionFamilies, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionVariantForBoundaryOptionId, selectPreviewDesignHistoryDomain, selectionSnapshotFromApplySiteStyleSelectionResponse, setPaletteOverrides, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, shouldShowPickerSearch, siteFooterManifest, siteHeaderManifest, siteOptionSources, stableSerialize, styleConfiguratorHistoryEntryForPersistedSelection, suggestFeatureCardSemanticIcons, suggestSemanticIconForFeatureCard, surfaceResolutionContextFromTheme, syncStyleConfiguratorState, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetApplyContentPatch, systemCustomizeFacetCurrentValue, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, systemCustomizeFacetRollbackContentPatch, toFeatureCardIconSuggestionInputs, toRoutableLinkPayload, toggleRow, typographyPresets, undoHistory, unfinishedBlockCopy, unsafeAsEditorBlockId, unsafeAsEditorBlockValues, unsafeAsLinkedContentEntryId, unwrapResponse, useAsyncPickerOptions, useBackendWatch, useBlockContext, useCombinedRefs, useDebouncedLatestSave, useDndContext, useDraggable, useDroppable, useEditor, useEditorUiStore, useEditorUiStoreInstance, useEntryController, useEntryEditorController, useField, useIsomorphicLayoutEffect3 as useIsomorphicLayoutEffect, useMediaEditor, useMediaEditorOptional, useMultiAutosave, useOptionalEditorUiStoreInstance, usePreviewDesignCoordinator, usePreviewDesignHistoryOrder, usePreviewThemeOverlay, useRichTextEditor, useSdkConfig, useSensor, useSensors, useSiteChromeCustomizeOptional, useUISelector, useUniqueId, validateBlockManifestIssues, visibleHeaderClearancePx };
187184
+ export { AMBIENT_BACKGROUND_ROLES2 as AMBIENT_BACKGROUND_ROLES, ArrowDown, ArrowUp, BackgroundColorField, BackgroundGradientField, Badge2 as Badge, BlockApiProvider, Box, Button, CSS2 as CSS, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardHeader, CardTitle, Check, ChevronDown, ChevronLeft, ChevronRight, Collapsible2 as Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorPicker, Combobox, CommandMultiSelect, Content, ContentFieldsForm, ContentSpinner, Copy, DEFAULT_LAUNCH_READINESS_INPUT, Dialog2 as Dialog, DialogClose2 as DialogClose, DialogContent2 as DialogContent, DialogDescription2 as DialogDescription, DialogFooter, DialogHeader, DialogTitle2 as DialogTitle, DndContext, DropdownMenu2 as DropdownMenu, DropdownMenuContent2 as DropdownMenuContent, DropdownMenuItem2 as DropdownMenuItem, DropdownMenuLabel2 as DropdownMenuLabel, DropdownMenuSeparator2 as DropdownMenuSeparator, DropdownMenuTrigger2 as DropdownMenuTrigger, EDITABLE_SURFACE_FORWARDING_PROP, EMPTY_DOC, EditableBlockProvider, EditorChrome, EditorProvider, EllipsisVertical, EmptyState2 as EmptyState, EntryControllerProvider, EyeOff, FieldFrame, FixedBottomSurface, FormRenderer, GRADIENT_PRESETS, GripVertical, Image, ImagePlus, Input, KeyboardCode, LINKED_CONTENT_ENTRY_META_KEY, Label4 as Label, List2 as List, LoaderCircle, ManifestForm, Maximize2, MediaEditor, MediaEditorProvider, MediaPickerDialog, MediaPickerMini, Monitor, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, PUBLIC_FILE_FIELD_KINDS, PageRenderer, Palette, PaletteProvider, Pencil, Plus, PointerSensor, PreviewDesignCoordinatorProvider, PreviewDesignHistoryOrderProvider, PreviewRichTextEditor, PreviewTextEditor, PreviewThemeOverlayProvider, ResizableSplitPane, RichText2 as RichText, RichTextEditorSurface, Root2, RotateCcw, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SITE_CHROME_CLASS_NAMES, SITE_CHROME_VISIBLE_HEADER_SELECTOR, SUBROUTE_KINDS, ScrollableDialogContent, SdkConfigProvider, Search, Select2 as Select, SelectContent2 as SelectContent, SelectItem2 as SelectItem, SelectTrigger2 as SelectTrigger, SelectValue2 as SelectValue, Separator2 as Separator, Settings, SiteChromeCustomizeProvider, SiteDocumentLayout, Smartphone, Sparkles, Surface, Tablet, Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger, Text2 as Text, Textarea, ThemeScope, Trash2, TriangleAlert, Trigger, Upload, X, applyBackgroundOverrideContentPatch, applyCompiledRuntimeFieldsToContent, applyFeatureCardIconSuggestions, applyPageDesignEditorAction, applyResolvedSelections, asDesignBlockId, asRecord, assertNever, assertNever5 as assertNever2, attachRenderableMediaAssetFields, augmentManifestWithStyleGroups, backgroundColorTokens, backgroundOverrideEquals, beginAutosaveBatch, buildApplySiteStyleSelectionBody, buildEditorModelRuntimeFieldsByBlockId, buildSiteChromeLookModels, buildThemeRuntime, buttonPersonalities, canCycleBackgroundOverrideValue, canRedoHistory, canUndoHistory, cancelPreview, classifyHistoryShortcut, classifyKnownMimeType, clearTypographyFontOverrides, clientComponentRegistry, closestCenter, cn, confirmAutosaveBatch, createBlock, createCustomBlockRegistry, createEditorInsertBlockCommand, createEditorRemoveBlockCommand, createEditorReorderBlocksCommand, createEntrySlotBlock, createFeatureCardIconKey, createHistoryState, createManifestFormAdapter, createManifestValidation, createMicrobatcher, createOptimisticActionRunner, createRoutingHelpers, createSnapshotFromPageRecord, createStoreBackend, createStyleConfiguratorState, curatedSiteStyles, cycleSiteChromeLookId, cycleableSiteChromeOptions, decodePublicProductCategorySelectorQuery, defaultBackgroundOverrideForMode, defaultSectionTransitionVariantForFamily, deleteBlock, deleteEntrySlotBlock, deriveLaunchReadiness, deriveRouteMetadataPresentation, deriveStyleConfiguratorCapabilities, deriveTransactionCapabilities, designRuntimeRulesForTheme, dismissNotices, dismissWarnings, emitMediaCropDebug, enabledBackgroundModes, enqueueTransaction, evaluateTypographyFontSlot, evaluateVisibility, expectParsedBrandedId, findButtonPersonality, findFooterLook, findPaletteVariant, findTypographyPreset, foldSubroute, formatSiteChromeBackgroundTokenLabel, getBlockDefinition, getBlockIconSemanticFallbackId, getClientRect, getCuratedSiteStyle, getDirectImageUrlForMediaAsset, getFeatureCardIconCompletion, getFieldIntent, getFooterLayout, getGeneratedBlockIconStyleState, getHeaderLayout, getHeaderStyle, getIconComponent, getIconPickerOptionsForPreset, getLinkedContentEntryMeta, getModalConfig, getPageDesignEditorState, getRichTextImagePositionFromTarget, gradientToCss, idleEditorTransactionQueueState, imagePoolForOverride, inferLegacyOfferingsPreviewGroupOrder, insertOrReplaceRichTextImage, isHeaderField, isIconPickerPreset, isInternalResolvedLinkValue, isKeyboardEvent, isKnownIconName, isNonEmptyValue, isObjectRecord2 as isObjectRecord, isOfferingsPreviewSourceKey, isPreviewingChange, isSupportedLoaderEndpoint, isSvgMimeType, isThemeV2NormalEditorRawStyleFieldName, isThemeV2NormalEditorRawStylePath, listBlockDescriptors, listContentTypes, listEntryPageContentSlots, lucide_react_exports, markApplyFailed, markApplySaved, markApplySaving, mergeBlockDescriptorsWithRegistry, mergeManifestWithSdkOptions, mutateBlockContent, normalEditorCuratedPromotedFieldPaths, normalizeOfferingsPreviewGroupOrder, normalizePickerSearchThreshold, normalizePublicApiLoaderParams, openRow, paletteOverridesSchema, paletteVariants, parseAspectRatioValue, parseBackgroundOverrideFromContent, parseBlockIconValue, parseMediaAssetId, parseSiteIconStyleGuideVersionId, parseSiteId, planBackgroundOverride, planBackgroundTransition, planPageDesignLayoutLookCompatibility, planSiteChromeFooterLayoutSelection, planSiteChromeLookSelection, planSiteDocument, planSiteStylePreviewChange, prefetchBlockData, previewAssistantEnabled, previewButtonPersonality, previewDesignHistoryDomainForCommand, previewFooterLook, previewHeaderLayout, previewHeaderStyle, previewPaletteVariant, previewSiteStyle, previewTypographyPreset, pushHistoryEntry, rankBackgroundImagePoolItems, recoveryConflictCopy, redoHistory, rejectAutosaveBatch, renderBlock, reorderBlocks, reorderEntrySlotBlocks, requireEntriesForCuratedChoices, resolveBackgroundCapability, resolveBlockTitle, resolveContentTitle, resolveIconPickerPreset, resolveImageUrlWithContext, resolveMediaSlotContract, resolveOfferingsPreviewGroupOrderEntries, resolvePageRouteSlug, resolvePickerSelectionLabel, resolvePreviewSidebarTab, resolveStyleConfiguratorInitialSnapshot, resolveVideoSelectionIntentForMediaField, resolveVisiblePromotedFieldPathsForEditorBlock, sectionTransitionFamilies, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionVariantForBoundaryOptionId, selectPreviewDesignHistoryDomain, selectionSnapshotFromApplySiteStyleSelectionResponse, setPaletteOverrides, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, shouldShowPickerSearch, siteFooterManifest, siteHeaderManifest, siteOptionSources, stableSerialize, styleConfiguratorHistoryEntryForPersistedSelection, suggestFeatureCardSemanticIcons, suggestSemanticIconForFeatureCard, surfaceResolutionContextFromTheme, syncStyleConfiguratorState, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetApplyContentPatch, systemCustomizeFacetCurrentValue, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetLabelForValue, systemCustomizeFacetNextValue, systemCustomizeFacetRollbackContentPatch, toFeatureCardIconSuggestionInputs, toRoutableLinkPayload, toggleRow, typographyPresets, undoHistory, unfinishedBlockCopy, unsafeAsEditorBlockId, unsafeAsEditorBlockValues, unsafeAsLinkedContentEntryId, unwrapResponse, useAsyncPickerOptions, useBackendWatch, useBlockContext, useCombinedRefs, useDebouncedLatestSave, useDndContext, useDraggable, useDroppable, useEditor, useEditorUiStore, useEditorUiStoreInstance, useEntryController, useEntryEditorController, useField, useIsomorphicLayoutEffect3 as useIsomorphicLayoutEffect, useMediaEditor, useMediaEditorOptional, useMultiAutosave, useOptionalEditorUiStoreInstance, usePreviewDesignCoordinator, usePreviewDesignHistoryOrder, usePreviewThemeOverlay, useRichTextEditor, useSdkConfig, useSensor, useSensors, useSiteChromeCustomizeOptional, useUISelector, useUniqueId, validateBlockManifestIssues, visibleHeaderClearancePx };