riverbankcms 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acceptance/matrix.mjs +4 -4
- package/dist/cli/index.mjs +62123 -699
- package/dist/cli/init-docs/content/getting-started.md +27 -0
- package/dist/entryCommands-DSQZqznu.mjs +23110 -0
- package/dist/{eventUpsertInputSchema-VVBVGA6x.mjs → eventUpsertInputSchema-zCTx0fdF.mjs} +233 -7
- package/dist/{load-config-gqUEjIyB.mjs → load-config-B68gtN45.mjs} +3 -3
- package/dist/load-config-ghkXBKim.mjs +4 -0
- package/dist/{plan-HAEMHc5T.mjs → plan-CkMANumv.mjs} +36 -3
- package/dist/scaffold/index.mjs +2 -2
- package/dist/{richTextSchema-DTvrDDF5.mjs → sdk-event-upsert-CrOuJrxo.mjs} +46 -271
- package/dist/{src-Dixcv4PB.mjs → src-BENi4Q5k.mjs} +28 -17
- package/dist/testing.mjs +4 -4
- package/package.json +2 -2
- package/dist/entryCommands-8kDjOex0.mjs +0 -111695
- package/dist/load-config-Cut7_6t_.mjs +0 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { An as
|
|
2
|
+
import { An as unsafeAsSiteScopedStoragePath, B as isPresent, C as stableJsonStringify, Cn as unsafeAsPositiveByteCount, Dn as unsafeAsSafeDownloadFilename, En as unsafeAsProductId, Fn as unsafeAsUserId, Ft as fromArray, In as err, It as mapNonEmptyArray, L as isCanonicalRichTextDoc, Ln as ok, Lt as mapReadonlyNonEmptyArray, M as parseFooterCompositionV1, Mn as unsafeAsStorageBucketName, N as footerNavigationLayouts, Nn as unsafeAsStoragePath, On as unsafeAsSiteFontId, Pn as unsafeAsUploadSessionId, R as parsePublicContactDetails, c as resolveSiteVerticalBookingConfig, cn as unsafeAsBookingRequirementId, d as ORDINARY_EVENT_PRESET_VALUES, dn as unsafeAsDeclaredMimeType, dt as validateBookingPaymentOptionKinds, en as parseMediaAssetId, in as parseSiteId, it as parseUtcIsoDateTimeString, kn as unsafeAsSiteId, ln as unsafeAsBookingSessionId, mn as unsafeAsEntitlementId, pn as unsafeAsDetectedMimeType, qt as assertNever, r as NAVIGATION_LOCATIONS, rt as localScheduleTimePattern, u as EVENT_PRESET_VALUES, ut as parseBookingTimeZone, vn as unsafeAsFileChecksumSha256, wn as unsafeAsPositiveSeconds, xn as unsafeAsOriginalFilename, yn as unsafeAsMediaAssetId } from "./src-BENi4Q5k.mjs";
|
|
3
3
|
import "node:module";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
|
|
@@ -8763,11 +8763,11 @@ function isVideoPosterFileAssetSource(source) {
|
|
|
8763
8763
|
|
|
8764
8764
|
//#endregion
|
|
8765
8765
|
//#region ../media-core/src/typeGuards.ts
|
|
8766
|
-
function isRecord$
|
|
8766
|
+
function isRecord$3(value) {
|
|
8767
8767
|
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
8768
8768
|
}
|
|
8769
|
-
function asRecord
|
|
8770
|
-
return isRecord$
|
|
8769
|
+
function asRecord(value) {
|
|
8770
|
+
return isRecord$3(value) ? value : undefined;
|
|
8771
8771
|
}
|
|
8772
8772
|
|
|
8773
8773
|
//#endregion
|
|
@@ -9698,7 +9698,7 @@ function parseTaggedObject(value, allowed) {
|
|
|
9698
9698
|
return parseOneOf(record.value.tag, allowed);
|
|
9699
9699
|
}
|
|
9700
9700
|
function requireRecord(value) {
|
|
9701
|
-
if (!isRecord$
|
|
9701
|
+
if (!isRecord$3(value)) return err("expected-object");
|
|
9702
9702
|
return ok(value);
|
|
9703
9703
|
}
|
|
9704
9704
|
function requireString(value) {
|
|
@@ -9909,7 +9909,7 @@ function parseOptionalRowExif(value) {
|
|
|
9909
9909
|
if (value === null || value === undefined) {
|
|
9910
9910
|
return ok(undefined);
|
|
9911
9911
|
}
|
|
9912
|
-
if (!isRecord$
|
|
9912
|
+
if (!isRecord$3(value) || !isFileJsonObject(value)) {
|
|
9913
9913
|
return err({
|
|
9914
9914
|
tag: "invalid-exif",
|
|
9915
9915
|
error: "expected-object"
|
|
@@ -9983,7 +9983,7 @@ function isFileJsonValue(value) {
|
|
|
9983
9983
|
if (Array.isArray(value)) {
|
|
9984
9984
|
return value.every(isFileJsonValue);
|
|
9985
9985
|
}
|
|
9986
|
-
return isRecord$
|
|
9986
|
+
return isRecord$3(value) && isFileJsonObject(value);
|
|
9987
9987
|
}
|
|
9988
9988
|
function emptyStatePatch(patch) {
|
|
9989
9989
|
return {
|
|
@@ -12562,7 +12562,7 @@ function isCmsMediaObjectType(value) {
|
|
|
12562
12562
|
return mediaTypeDiscriminants.some((type) => type === value);
|
|
12563
12563
|
}
|
|
12564
12564
|
function isCmsMediaObject(value) {
|
|
12565
|
-
if (!isRecord$
|
|
12565
|
+
if (!isRecord$3(value)) return false;
|
|
12566
12566
|
if (value.tag === "media") return true;
|
|
12567
12567
|
const type = value.type;
|
|
12568
12568
|
if (!isCmsMediaObjectType(type)) return false;
|
|
@@ -12581,7 +12581,7 @@ function collectMediaObjects(value, out, location = "") {
|
|
|
12581
12581
|
value.forEach((item, index) => collectMediaObjects(item, out, `${location}[${index}]`));
|
|
12582
12582
|
return;
|
|
12583
12583
|
}
|
|
12584
|
-
if (!isRecord$
|
|
12584
|
+
if (!isRecord$3(value)) return;
|
|
12585
12585
|
if (isCmsMediaObject(value)) {
|
|
12586
12586
|
out.push({
|
|
12587
12587
|
obj: value,
|
|
@@ -12641,7 +12641,7 @@ function scanForMediaAssetUsage(value, tokens) {
|
|
|
12641
12641
|
for (const item of node) visit(item);
|
|
12642
12642
|
return;
|
|
12643
12643
|
}
|
|
12644
|
-
if (!isRecord$
|
|
12644
|
+
if (!isRecord$3(node)) return;
|
|
12645
12645
|
for (const [key, child] of Object.entries(node)) {
|
|
12646
12646
|
if (typeof child === "string") {
|
|
12647
12647
|
switch (key) {
|
|
@@ -12753,8 +12753,8 @@ function walkAndCollectImageAttrs(value, out, location = "") {
|
|
|
12753
12753
|
value.forEach((item, index) => walkAndCollectImageAttrs(item, out, `${location}[${index}]`));
|
|
12754
12754
|
return;
|
|
12755
12755
|
}
|
|
12756
|
-
if (!isRecord$
|
|
12757
|
-
if (value.type === "image" && isRecord$
|
|
12756
|
+
if (!isRecord$3(value)) return;
|
|
12757
|
+
if (value.type === "image" && isRecord$3(value.attrs)) {
|
|
12758
12758
|
out.push({
|
|
12759
12759
|
attrs: value.attrs,
|
|
12760
12760
|
location: location ? `${location}.attrs` : "attrs"
|
|
@@ -12951,7 +12951,7 @@ function resolvePortableMediaReferences(references, lookup) {
|
|
|
12951
12951
|
|
|
12952
12952
|
//#endregion
|
|
12953
12953
|
//#region ../media-core/src/contentMediaAudit.ts
|
|
12954
|
-
function isRecord$
|
|
12954
|
+
function isRecord$5(value) {
|
|
12955
12955
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
12956
12956
|
}
|
|
12957
12957
|
function formatContentFieldPath(path) {
|
|
@@ -12965,11 +12965,11 @@ function summarizeContentMediaValue(value) {
|
|
|
12965
12965
|
}
|
|
12966
12966
|
if (value === null) return "null";
|
|
12967
12967
|
if (Array.isArray(value)) return `array(${value.length})`;
|
|
12968
|
-
if (isRecord$
|
|
12968
|
+
if (isRecord$5(value)) return `object(${Object.keys(value).sort().join(",")})`;
|
|
12969
12969
|
return typeof value;
|
|
12970
12970
|
}
|
|
12971
12971
|
function isPortableMediaValue(value, allowedMediaTypes$1) {
|
|
12972
|
-
if (!isRecord$
|
|
12972
|
+
if (!isRecord$5(value) || !parseCanonicalMediaIdentifier(value.identifier).ok) return false;
|
|
12973
12973
|
const type = value.type ?? allowedMediaTypes$1[0];
|
|
12974
12974
|
const validType = allowedMediaTypes$1.some((allowed) => allowed === type);
|
|
12975
12975
|
const hasEnvironmentFields = [
|
|
@@ -13020,7 +13020,7 @@ function auditMediaValue(context, path, allowedMediaTypes$1, value) {
|
|
|
13020
13020
|
}];
|
|
13021
13021
|
}
|
|
13022
13022
|
function auditFields(context, fields, value, parentPath) {
|
|
13023
|
-
if (!isRecord$
|
|
13023
|
+
if (!isRecord$5(value)) return [];
|
|
13024
13024
|
const findings = [];
|
|
13025
13025
|
for (const field of fields) {
|
|
13026
13026
|
if (!(field.id in value)) continue;
|
|
@@ -13037,7 +13037,7 @@ function auditFields(context, fields, value, parentPath) {
|
|
|
13037
13037
|
if (!Array.isArray(fieldValue)) break;
|
|
13038
13038
|
for (const [index, item] of fieldValue.entries()) {
|
|
13039
13039
|
const itemPath = [...fieldPath, index];
|
|
13040
|
-
if (!isRecord$
|
|
13040
|
+
if (!isRecord$5(item)) {
|
|
13041
13041
|
findings.push({
|
|
13042
13042
|
tag: "missing-schema",
|
|
13043
13043
|
context,
|
|
@@ -13139,7 +13139,7 @@ function resolveLegacyMediaFindings(findings, assets) {
|
|
|
13139
13139
|
//#endregion
|
|
13140
13140
|
//#region ../media-core/src/contentMediaAuditFieldAdapter.ts
|
|
13141
13141
|
const contentMediaTypes = new Set(mediaTypeDiscriminants);
|
|
13142
|
-
function isRecord$
|
|
13142
|
+
function isRecord$4(value) {
|
|
13143
13143
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13144
13144
|
}
|
|
13145
13145
|
function unknownArray(value) {
|
|
@@ -13148,7 +13148,7 @@ function unknownArray(value) {
|
|
|
13148
13148
|
function fieldsArray(value) {
|
|
13149
13149
|
const directFields = unknownArray(value);
|
|
13150
13150
|
if (directFields) return directFields;
|
|
13151
|
-
if (!isRecord$
|
|
13151
|
+
if (!isRecord$4(value)) return null;
|
|
13152
13152
|
return unknownArray(value.fields);
|
|
13153
13153
|
}
|
|
13154
13154
|
function nestedFields(field) {
|
|
@@ -13217,7 +13217,7 @@ function mergeFields(fields) {
|
|
|
13217
13217
|
}
|
|
13218
13218
|
function adaptFields(rawFields, flattenRepeaterGroups = false, defaultFileKinds = ["document"]) {
|
|
13219
13219
|
return mergeFields(rawFields.flatMap((rawField) => {
|
|
13220
|
-
if (!isRecord$
|
|
13220
|
+
if (!isRecord$4(rawField)) return [];
|
|
13221
13221
|
const { id: id$2, type } = rawField;
|
|
13222
13222
|
if (typeof id$2 !== "string" || !id$2 || typeof type !== "string") return [];
|
|
13223
13223
|
if (type === "media" || type === "file") {
|
|
@@ -13227,7 +13227,7 @@ function adaptFields(rawFields, flattenRepeaterGroups = false, defaultFileKinds
|
|
|
13227
13227
|
allowedMediaTypes: allowedMediaTypes(rawField, type, defaultFileKinds)
|
|
13228
13228
|
}];
|
|
13229
13229
|
}
|
|
13230
|
-
if (flattenRepeaterGroups && type === "group" && isRecord$
|
|
13230
|
+
if (flattenRepeaterGroups && type === "group" && isRecord$4(rawField.ui) && rawField.ui.flattenInRepeater === true) {
|
|
13231
13231
|
return adaptFields(nestedFields(rawField), false, defaultFileKinds);
|
|
13232
13232
|
}
|
|
13233
13233
|
if (type === "group" || type === "modal") {
|
|
@@ -13242,12 +13242,12 @@ function adaptFields(rawFields, flattenRepeaterGroups = false, defaultFileKinds
|
|
|
13242
13242
|
return [{
|
|
13243
13243
|
kind: "object",
|
|
13244
13244
|
id: id$2,
|
|
13245
|
-
fields: adaptFields(tabs.flatMap((tab) => isRecord$
|
|
13245
|
+
fields: adaptFields(tabs.flatMap((tab) => isRecord$4(tab) ? unknownArray(tab.fields) ?? [] : []), false, defaultFileKinds)
|
|
13246
13246
|
}];
|
|
13247
13247
|
}
|
|
13248
13248
|
if (type !== "repeater") return [];
|
|
13249
|
-
if (isRecord$
|
|
13250
|
-
const variants = Object.entries(rawField.itemTypes).flatMap(([typeId, itemType]) => isRecord$
|
|
13249
|
+
if (isRecord$4(rawField.itemTypes)) {
|
|
13250
|
+
const variants = Object.entries(rawField.itemTypes).flatMap(([typeId, itemType]) => isRecord$4(itemType) && Array.isArray(itemType.fields) ? [{
|
|
13251
13251
|
typeId,
|
|
13252
13252
|
fields: adaptFields(itemType.fields, true, defaultFileKinds)
|
|
13253
13253
|
}] : []);
|
|
@@ -13746,7 +13746,7 @@ const runtimeBoxBackgroundSchema = z.discriminatedUnion("type", [
|
|
|
13746
13746
|
]).nullable().optional() })
|
|
13747
13747
|
]);
|
|
13748
13748
|
function normalizeAuthoringOpacity(value) {
|
|
13749
|
-
if (!isRecord$
|
|
13749
|
+
if (!isRecord$2(value)) return value;
|
|
13750
13750
|
return {
|
|
13751
13751
|
...value,
|
|
13752
13752
|
opacity: normalizeOpacity(value.opacity)
|
|
@@ -13755,7 +13755,7 @@ function normalizeAuthoringOpacity(value) {
|
|
|
13755
13755
|
function normalizeOpacity(value) {
|
|
13756
13756
|
return typeof value === "number" && value > 1 && value <= 100 ? value / 100 : value;
|
|
13757
13757
|
}
|
|
13758
|
-
function isRecord$
|
|
13758
|
+
function isRecord$2(value) {
|
|
13759
13759
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13760
13760
|
}
|
|
13761
13761
|
|
|
@@ -14628,7 +14628,7 @@ function validateCompositionBudget(input) {
|
|
|
14628
14628
|
|
|
14629
14629
|
//#endregion
|
|
14630
14630
|
//#region ../theme-core/src/site-styles/records.ts
|
|
14631
|
-
function isRecord$
|
|
14631
|
+
function isRecord$1(value) {
|
|
14632
14632
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
14633
14633
|
}
|
|
14634
14634
|
|
|
@@ -14830,15 +14830,15 @@ function parsePersistedFooterPreferences(value) {
|
|
|
14830
14830
|
}
|
|
14831
14831
|
/** One-time backfill rule, also exercised against the migration SQL. Not a runtime fallback. */
|
|
14832
14832
|
function readFooterPreferences(theme) {
|
|
14833
|
-
const footer = isRecord$
|
|
14834
|
-
const background = isRecord$
|
|
14833
|
+
const footer = isRecord$1(theme) && isRecord$1(theme.footer) ? theme.footer : {};
|
|
14834
|
+
const background = isRecord$1(footer.background) ? footer.background : {};
|
|
14835
14835
|
const token = background.type === "color" && background.contentOwner === siteChromeBackgroundOverrideOwner ? parseSiteChromeBackgroundColorToken(background.color) : null;
|
|
14836
14836
|
return {
|
|
14837
14837
|
background: token === null ? { kind: "default" } : {
|
|
14838
14838
|
kind: "color",
|
|
14839
14839
|
token
|
|
14840
14840
|
},
|
|
14841
|
-
navigationLayout: isRecord$
|
|
14841
|
+
navigationLayout: isRecord$1(footer.navLayout) && footer.navLayout.layout === "stack" ? "stack" : "inline-wrap"
|
|
14842
14842
|
};
|
|
14843
14843
|
}
|
|
14844
14844
|
function applyFooterPreferences(theme, footer, preferences) {
|
|
@@ -38668,29 +38668,29 @@ function planGeneratedHeaderOpeningSection(input) {
|
|
|
38668
38668
|
}
|
|
38669
38669
|
function hasPersistedImageBackground(content) {
|
|
38670
38670
|
const sectionStyles = content._sectionStyles;
|
|
38671
|
-
if (!isRecord$
|
|
38671
|
+
if (!isRecord$1(sectionStyles)) return false;
|
|
38672
38672
|
const background = sectionStyles.background;
|
|
38673
|
-
return isRecord$
|
|
38673
|
+
return isRecord$1(background) && background.type === "image" && background.image !== undefined;
|
|
38674
38674
|
}
|
|
38675
38675
|
function openingBackground(content) {
|
|
38676
38676
|
const sectionStyles = content ? content._sectionStyles : null;
|
|
38677
|
-
if (!isRecord$
|
|
38677
|
+
if (!isRecord$1(sectionStyles)) return null;
|
|
38678
38678
|
const background = sectionStyles.background;
|
|
38679
|
-
return isRecord$
|
|
38679
|
+
return isRecord$1(background) ? background : null;
|
|
38680
38680
|
}
|
|
38681
38681
|
function contentHasContrastOverlay(content) {
|
|
38682
38682
|
if (!content) return false;
|
|
38683
38683
|
const imageSurfaceTreatment = content.imageSurfaceTreatment;
|
|
38684
|
-
const imageSurfaceTreatmentKind = isRecord$
|
|
38684
|
+
const imageSurfaceTreatmentKind = isRecord$1(imageSurfaceTreatment) ? imageSurfaceTreatment.kind : null;
|
|
38685
38685
|
const background = openingBackground(content);
|
|
38686
38686
|
const backgroundOverlay = background?.overlay;
|
|
38687
|
-
const hasBackgroundOverlay = isRecord$
|
|
38687
|
+
const hasBackgroundOverlay = isRecord$1(backgroundOverlay) && backgroundOverlay.type !== undefined && backgroundOverlay.type !== null && backgroundOverlay.type !== "none";
|
|
38688
38688
|
return content.heroLegibility === "scrim-gradient" || imageSurfaceTreatmentKind === "brand-scrim" || imageSurfaceTreatmentKind === "neutral-scrim" || hasBackgroundOverlay;
|
|
38689
38689
|
}
|
|
38690
38690
|
function contentHasOpeningTopSpacing(content) {
|
|
38691
38691
|
if (!content) return false;
|
|
38692
38692
|
const sectionStyles = content._sectionStyles;
|
|
38693
|
-
const minHeight = isRecord$
|
|
38693
|
+
const minHeight = isRecord$1(sectionStyles) ? sectionStyles.minHeight : null;
|
|
38694
38694
|
return content.sectionHeight === "hero" || content.sectionHeight === "immersive" || minHeight === "hero" || minHeight === "immersive";
|
|
38695
38695
|
}
|
|
38696
38696
|
function runtimeHasContrastOverlay(block) {
|
|
@@ -46141,7 +46141,7 @@ function planCommandOrderingDependencies(command, commands, providerByRef, requi
|
|
|
46141
46141
|
|
|
46142
46142
|
//#endregion
|
|
46143
46143
|
//#region ../site-commands/src/guards.ts
|
|
46144
|
-
function isRecord
|
|
46144
|
+
function isRecord(value) {
|
|
46145
46145
|
return typeof value === "object" && value !== null;
|
|
46146
46146
|
}
|
|
46147
46147
|
|
|
@@ -46488,7 +46488,7 @@ function collectVenueRefsFromIntervals(intervals, path) {
|
|
|
46488
46488
|
}
|
|
46489
46489
|
function collectNavigationRefs(items, path) {
|
|
46490
46490
|
return items.flatMap((item, index) => {
|
|
46491
|
-
if (!isRecord
|
|
46491
|
+
if (!isRecord(item)) return [];
|
|
46492
46492
|
const itemPath = `${path}[${index}]`;
|
|
46493
46493
|
const refs = [];
|
|
46494
46494
|
if (typeof item.pageRef === "string") {
|
|
@@ -46511,7 +46511,7 @@ function collectNavigationRefs(items, path) {
|
|
|
46511
46511
|
}
|
|
46512
46512
|
function collectBlockRefs(blocks, path) {
|
|
46513
46513
|
return blocks.flatMap((block, index) => {
|
|
46514
|
-
if (!isRecord
|
|
46514
|
+
if (!isRecord(block)) return [];
|
|
46515
46515
|
const blockPath = `${path}[${index}]`;
|
|
46516
46516
|
return [...collectNestedRefs(block.props, `${blockPath}.props`), ...collectNestedRefs(block.children, `${blockPath}.children`)];
|
|
46517
46517
|
});
|
|
@@ -46527,7 +46527,7 @@ function collectNestedRefs(value, path) {
|
|
|
46527
46527
|
if (Array.isArray(value)) {
|
|
46528
46528
|
return value.flatMap((item, index) => collectNestedRefs(item, `${path}[${index}]`));
|
|
46529
46529
|
}
|
|
46530
|
-
if (!isRecord
|
|
46530
|
+
if (!isRecord(value)) return [];
|
|
46531
46531
|
return Object.entries(value).flatMap(([key, child]) => collectNestedRefs(child, `${path}.${key}`));
|
|
46532
46532
|
}
|
|
46533
46533
|
|
|
@@ -46762,9 +46762,9 @@ function deriveIdempotencyKey(input) {
|
|
|
46762
46762
|
].join("|"));
|
|
46763
46763
|
}
|
|
46764
46764
|
function findUnknownCommandTypes(input) {
|
|
46765
|
-
if (!isRecord
|
|
46765
|
+
if (!isRecord(input) || !Array.isArray(input.commands)) return [];
|
|
46766
46766
|
return input.commands.flatMap((command, commandIndex) => {
|
|
46767
|
-
if (!isRecord
|
|
46767
|
+
if (!isRecord(command) || typeof command.type !== "string") return [];
|
|
46768
46768
|
if (commandTypeSet.has(command.type)) return [];
|
|
46769
46769
|
return [{
|
|
46770
46770
|
code: "unknown_command_type",
|
|
@@ -46790,9 +46790,9 @@ function commandIndexForIssuePath(path) {
|
|
|
46790
46790
|
return path[0] === "commands" && typeof path[1] === "number" ? path[1] : -1;
|
|
46791
46791
|
}
|
|
46792
46792
|
function commandTypeForIssue(input, commandIndex) {
|
|
46793
|
-
if (!isRecord
|
|
46793
|
+
if (!isRecord(input) || !isUnknownArray(input.commands)) return null;
|
|
46794
46794
|
const command = input.commands[commandIndex];
|
|
46795
|
-
return isRecord
|
|
46795
|
+
return isRecord(command) && typeof command.type === "string" ? command.type : null;
|
|
46796
46796
|
}
|
|
46797
46797
|
function isUnknownArray(value) {
|
|
46798
46798
|
return Array.isArray(value);
|
|
@@ -47842,229 +47842,4 @@ function parseSdkEventRunUpsertInput(input, runIndex, options) {
|
|
|
47842
47842
|
}
|
|
47843
47843
|
|
|
47844
47844
|
//#endregion
|
|
47845
|
-
|
|
47846
|
-
/**
|
|
47847
|
-
* Strict record guard: excludes null, primitives, and arrays.
|
|
47848
|
-
*/
|
|
47849
|
-
function isRecord(value) {
|
|
47850
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
47851
|
-
}
|
|
47852
|
-
/**
|
|
47853
|
-
* Non-null object guard: includes arrays for behavior parity with legacy helpers.
|
|
47854
|
-
*
|
|
47855
|
-
* NOTE: This intentionally narrows to UnknownRecord for compatibility with existing
|
|
47856
|
-
* callsites even though arrays pass at runtime. Follow-up cleanup should replace
|
|
47857
|
-
* this API with a more precise predicate type and migrate consumers.
|
|
47858
|
-
*/
|
|
47859
|
-
function isObjectRecord(value) {
|
|
47860
|
-
return typeof value === "object" && value !== null;
|
|
47861
|
-
}
|
|
47862
|
-
/**
|
|
47863
|
-
* Coerces unknown input into a strict record, returning an empty object fallback.
|
|
47864
|
-
*/
|
|
47865
|
-
function asRecord(value) {
|
|
47866
|
-
return isRecord(value) ? value : {};
|
|
47867
|
-
}
|
|
47868
|
-
|
|
47869
|
-
//#endregion
|
|
47870
|
-
//#region ../blocks/src/system/manifest/richTextSchema.ts
|
|
47871
|
-
/**
|
|
47872
|
-
* Shared Rich Text Schema
|
|
47873
|
-
*
|
|
47874
|
-
* This module provides a single source of truth for TipTap rich text validation
|
|
47875
|
-
* across both the block-form editor and the block rendering system.
|
|
47876
|
-
*
|
|
47877
|
-
* Rich-text fields use one canonical root shape:
|
|
47878
|
-
* `{ type: 'doc', content: [...] }`.
|
|
47879
|
-
*/
|
|
47880
|
-
/**
|
|
47881
|
-
* TipTap document node schema (recursive structure)
|
|
47882
|
-
*
|
|
47883
|
-
* Supports the full TipTap document structure including:
|
|
47884
|
-
* - type: Node type (e.g., 'doc', 'paragraph', 'text')
|
|
47885
|
-
* - content: Nested array of child nodes
|
|
47886
|
-
* - text: Text content for text nodes
|
|
47887
|
-
* - attrs: Node attributes (e.g., alignment, color)
|
|
47888
|
-
* - marks: Text formatting marks (e.g., bold, italic)
|
|
47889
|
-
*/
|
|
47890
|
-
const TipTapMarkSchema = z.object({
|
|
47891
|
-
type: z.string().min(1),
|
|
47892
|
-
attrs: z.record(z.string(), z.unknown()).optional()
|
|
47893
|
-
}).strict();
|
|
47894
|
-
const TipTapNodeSchema = z.lazy(() => z.object({
|
|
47895
|
-
type: z.string().min(1),
|
|
47896
|
-
content: z.array(TipTapNodeSchema).optional(),
|
|
47897
|
-
text: z.string().optional(),
|
|
47898
|
-
attrs: z.record(z.string(), z.unknown()).optional(),
|
|
47899
|
-
marks: z.array(TipTapMarkSchema).optional()
|
|
47900
|
-
}).strict().superRefine((node, ctx) => {
|
|
47901
|
-
if (node.type === "doc") {
|
|
47902
|
-
ctx.addIssue({
|
|
47903
|
-
code: "custom",
|
|
47904
|
-
path: ["type"],
|
|
47905
|
-
message: "Document nodes are only valid at the rich-text root"
|
|
47906
|
-
});
|
|
47907
|
-
}
|
|
47908
|
-
if (node.type === "text") {
|
|
47909
|
-
if (node.text === undefined || node.text.length === 0) {
|
|
47910
|
-
ctx.addIssue({
|
|
47911
|
-
code: "custom",
|
|
47912
|
-
path: ["text"],
|
|
47913
|
-
message: "Text nodes require a non-empty text value"
|
|
47914
|
-
});
|
|
47915
|
-
}
|
|
47916
|
-
if (node.content !== undefined) {
|
|
47917
|
-
ctx.addIssue({
|
|
47918
|
-
code: "custom",
|
|
47919
|
-
path: ["content"],
|
|
47920
|
-
message: "Text nodes cannot contain child nodes"
|
|
47921
|
-
});
|
|
47922
|
-
}
|
|
47923
|
-
return;
|
|
47924
|
-
}
|
|
47925
|
-
if (node.text !== undefined) {
|
|
47926
|
-
ctx.addIssue({
|
|
47927
|
-
code: "custom",
|
|
47928
|
-
path: ["text"],
|
|
47929
|
-
message: "Only text nodes can contain a text value"
|
|
47930
|
-
});
|
|
47931
|
-
}
|
|
47932
|
-
}));
|
|
47933
|
-
/**
|
|
47934
|
-
* Canonical schema for a TipTap rich-text document root.
|
|
47935
|
-
*
|
|
47936
|
-
* Stricter than {@link TipTapNodeSchema}: `type` is literally `'doc'` and
|
|
47937
|
-
* `content` is required (possibly empty). This is the shape every producer
|
|
47938
|
-
* (dummy content, editor output, migrations) must emit, and the shape every
|
|
47939
|
-
* non-legacy consumer can rely on.
|
|
47940
|
-
*
|
|
47941
|
-
*/
|
|
47942
|
-
const RichTextDocSchema = z.object({
|
|
47943
|
-
type: z.literal("doc"),
|
|
47944
|
-
content: z.array(TipTapNodeSchema)
|
|
47945
|
-
}).strict();
|
|
47946
|
-
/**
|
|
47947
|
-
* Type guard for {@link RichTextDoc}.
|
|
47948
|
-
*
|
|
47949
|
-
* Returns `true` only for the canonical unwrapped form. The shared structural
|
|
47950
|
-
* contract lives in `@riverbankcms/core`; parity tests keep its dependency-free
|
|
47951
|
-
* guard aligned with this detailed Zod validator.
|
|
47952
|
-
*/
|
|
47953
|
-
function isRichTextDoc(value) {
|
|
47954
|
-
return RichTextDocSchema.safeParse(value).success;
|
|
47955
|
-
}
|
|
47956
|
-
/**
|
|
47957
|
-
* Build a canonical {@link RichTextDoc} from plain-text paragraphs.
|
|
47958
|
-
*
|
|
47959
|
-
* Single source of truth for constructing a TipTap doc from strings.
|
|
47960
|
-
* Used by:
|
|
47961
|
-
* - `@riverbankcms/dummy-content` (fixture body generators)
|
|
47962
|
-
* - `@riverbankcms/content-model` (default template `cta-full` content)
|
|
47963
|
-
*
|
|
47964
|
-
* Empty strings produce a paragraph with no `content` array — matching
|
|
47965
|
-
* the TipTap convention for empty paragraphs. The shape is exactly what
|
|
47966
|
-
* {@link RichTextDocSchema} validates, so the type and runtime check
|
|
47967
|
-
* never drift from the constructor.
|
|
47968
|
-
*/
|
|
47969
|
-
function createRichTextDoc(paragraphs) {
|
|
47970
|
-
return {
|
|
47971
|
-
type: "doc",
|
|
47972
|
-
content: paragraphs.map((text) => text ? {
|
|
47973
|
-
type: "paragraph",
|
|
47974
|
-
content: [{
|
|
47975
|
-
type: "text",
|
|
47976
|
-
text
|
|
47977
|
-
}]
|
|
47978
|
-
} : { type: "paragraph" })
|
|
47979
|
-
};
|
|
47980
|
-
}
|
|
47981
|
-
function createHardBreakNode() {
|
|
47982
|
-
return { type: "hardBreak" };
|
|
47983
|
-
}
|
|
47984
|
-
/**
|
|
47985
|
-
* Parse a small markdown subset into TipTap inline nodes.
|
|
47986
|
-
*
|
|
47987
|
-
* This intentionally supports only bold (`**text**`) because the SDK/content
|
|
47988
|
-
* import paths use it for lightweight default content, not full markdown.
|
|
47989
|
-
*/
|
|
47990
|
-
function parseRichTextInlineMarkdown(text) {
|
|
47991
|
-
const out = [];
|
|
47992
|
-
const pushText = (value, marks) => {
|
|
47993
|
-
if (!value) return;
|
|
47994
|
-
out.push(marks && marks.length > 0 ? {
|
|
47995
|
-
type: "text",
|
|
47996
|
-
text: value,
|
|
47997
|
-
marks
|
|
47998
|
-
} : {
|
|
47999
|
-
type: "text",
|
|
48000
|
-
text: value
|
|
48001
|
-
});
|
|
48002
|
-
};
|
|
48003
|
-
let rest = text;
|
|
48004
|
-
while (rest.length > 0) {
|
|
48005
|
-
const start = rest.indexOf("**");
|
|
48006
|
-
if (start === -1) {
|
|
48007
|
-
pushText(rest);
|
|
48008
|
-
break;
|
|
48009
|
-
}
|
|
48010
|
-
const end = rest.indexOf("**", start + 2);
|
|
48011
|
-
if (end === -1) {
|
|
48012
|
-
pushText(rest);
|
|
48013
|
-
break;
|
|
48014
|
-
}
|
|
48015
|
-
pushText(rest.slice(0, start));
|
|
48016
|
-
pushText(rest.slice(start + 2, end), [{ type: "bold" }]);
|
|
48017
|
-
rest = rest.slice(end + 2);
|
|
48018
|
-
}
|
|
48019
|
-
return out;
|
|
48020
|
-
}
|
|
48021
|
-
function parseRichTextParagraphInlineMarkdown(text) {
|
|
48022
|
-
return text.split("\n").flatMap((line, index) => {
|
|
48023
|
-
const lineNodes = parseRichTextInlineMarkdown(line.trim());
|
|
48024
|
-
return index === 0 ? lineNodes : [createHardBreakNode(), ...lineNodes];
|
|
48025
|
-
});
|
|
48026
|
-
}
|
|
48027
|
-
/**
|
|
48028
|
-
* Convert a plain string with a tiny markdown subset to canonical TipTap JSON.
|
|
48029
|
-
*
|
|
48030
|
-
* Double newlines create semantic paragraphs. Single newlines remain inside the
|
|
48031
|
-
* current paragraph as TipTap `hardBreak` nodes for line-oriented content such
|
|
48032
|
-
* as addresses, opening hours, and contact details.
|
|
48033
|
-
*/
|
|
48034
|
-
function createRichTextDocFromMarkdown(markdown) {
|
|
48035
|
-
const normalized = markdown.replace(/\r\n/g, "\n").trim();
|
|
48036
|
-
if (!normalized) return {
|
|
48037
|
-
type: "doc",
|
|
48038
|
-
content: []
|
|
48039
|
-
};
|
|
48040
|
-
const paragraphs = normalized.split(/\n{2,}/).map((paragraph) => paragraph.trim()).filter(Boolean);
|
|
48041
|
-
return {
|
|
48042
|
-
type: "doc",
|
|
48043
|
-
content: paragraphs.map((paragraph) => {
|
|
48044
|
-
const inline = parseRichTextParagraphInlineMarkdown(paragraph);
|
|
48045
|
-
return inline.length > 0 ? {
|
|
48046
|
-
type: "paragraph",
|
|
48047
|
-
content: inline
|
|
48048
|
-
} : { type: "paragraph" };
|
|
48049
|
-
})
|
|
48050
|
-
};
|
|
48051
|
-
}
|
|
48052
|
-
function buildRichTextSchema(options) {
|
|
48053
|
-
let schema = RichTextDocSchema;
|
|
48054
|
-
if (options?.required) {
|
|
48055
|
-
const label = options.label ?? "This field";
|
|
48056
|
-
schema = schema.refine((val) => {
|
|
48057
|
-
const content = val.content;
|
|
48058
|
-
if (!Array.isArray(content) || content.length === 0) return false;
|
|
48059
|
-
const first = content[0];
|
|
48060
|
-
if (content.length === 1 && isRecord(first) && first.type === "paragraph" && (!("content" in first) || first.content == null)) {
|
|
48061
|
-
return false;
|
|
48062
|
-
}
|
|
48063
|
-
return true;
|
|
48064
|
-
}, { message: `${label} is required` });
|
|
48065
|
-
}
|
|
48066
|
-
return schema;
|
|
48067
|
-
}
|
|
48068
|
-
|
|
48069
|
-
//#endregion
|
|
48070
|
-
export { createBlocksRef as $, isOnColorBackgroundCandidateToken as $i, looksLikeUuid as $n, asLayoutVariantKey as $r, ACCORDION_OPEN_ACCENT_THICKNESS as $t, parseAndPlanCommandBatchForTypes as A, opaqueSurfaceDeclarations as Ai, pageDesignIntentSchemaVersion as An, parseRelativeStoragePath as Ar, themeSchema as At, pageIdentifierForCommand as B, unsafeAsOpaqueButtonColourToken as Bi, parseCanonicalRuntimeBackground as Bn, generateShadowValue as Br, MQ_MD_DOWN as Bt, pageLinkSchema as C, borderColorStyle as Ci, buildTextContrastShadow as Cn, slugifyMediaIdentifier as Cr, resolvePublishedLook as Ct, sortRecord as D, textColorStyle as Di, resolveItemSurface as Dn, getMimeType as Dr, getGradientPreset as Dt, venueManagementFields as E, rgbColorValue as Ei, arrangementSlotNames as En, getExtensionForMimeType as Er, GRADIENT_PRESET_IDS as Et, eventManagementTiming as F, resolveThemeColorReferenceValue as Fi, sectionFactsForContent as Fn, parseSafeDownloadFilename as Fr, BREAKPOINT_LG as Ft, bookingPaymentCollectionOptionSchema as G, DEFAULT_SURFACE_TEXT_COLOR as Gi, runtimeBoxBackgroundSchema as Gn, backgroundAppearanceQuickColorTokenNames as Gr, getComponentBorderWidthPx as Gt, hasConfiguredBookingVertical as H, surfaceToneFromForegroundToken as Hi, resolveSectionPhotoPlacement as Hn, cardVariantRoleValues as Hr, MQ_SM_UP as Ht, blockIdentifierForCommand as I, resolveTokenOrCssColorValue as Ii, boundaryRuntimeMetricsForDecorativeTransition as In, generateCardCoreCss as Ir, BREAKPOINT_MD as It, require_react as J, surfaceForegroundInputFromResolved as Ji, stripStaleTransitionStyleGroup as Jn, resolveEffectiveKnobs as Jr, parseCustomCssRules as Jt, bookingPaymentTermsSchema as K, SURFACE_FOREGROUND_CSS_VARS as Ki, pageDesignEditorBackgroundOverrideOwner as Kn, parseBackgroundAppearanceColorToken as Kr, getComponentShadowVar as Kt, blockOrderIdentifiersForCommand as L, generateShadowValue$1 as Li, anglePolygonCss as Ln, getDefaultCardVariants as Lr, BREAKPOINT_SM as Lt, evaluateSiteCommandBatchExposure as M, formatButtonColourContractError as Mi, headerRootPaint as Mn, MAX_MANAGEMENT_MEDIA_UPLOAD_BYTES as Mr, generateMobileOverlayBackdropFilterFix as Mt, evaluateSiteCommandExposure as N, isCssColorLiteral as Ni, boundaryLayout as Nn, classifyKnownMimeType as Nr, getHeaderPaintTargets as Nt, stableStringify as O, textColorValue as Oi, resolveLookSlotSurfaces as On, asRecord$1 as Or, parseGradientPresetId as Ot, getSiteCommandMetadata as P, resolveOnColorForThemeToken as Pi, composeBoundary as Pn, managementMediaLibraryUploadLimitForMimeType as Pr, renderHeaderPaintTargetRules as Pt, createBlockRef as Q, expandPalette as Qi, deleteEnvSpecificKeys as Qn, asDesignBlockId as Qr, LABEL_FONT_SIZE_MAP as Qt, entryIdentifierForCommand as R, PUBLIC_BUTTON_ROLES as Ri, transitionCatalogueEntries as Rn, generateCardCss as Rr, BREAKPOINT_XL as Rt, normalizeLinkValue as S, backgroundColorStyle as Si, footerForegroundCandidates as Sn, resolveMediaIdentifier as Sr, resolveModeArrangement as St, isEventVisibility as T, mergeStyles as Ti, arrangementLookHooks as Tn, resolveVideoSelectionIntentForMediaField as Tr, gradientToCss as Tt, eventCommandScheduleSchema as U, buildThemeTokens as Ui, boxBackgroundOverlaySchema as Un, normalizeCardRole as Ur, MQ_TABLET_ONLY as Ut, pagePathForCommand as V, selectLogoVariant as Vi, resolveSectionBackground as Vn, cardRoleSchema as Vr, MQ_SM_DOWN as Vt, eventBookingOfferIntentSchema as W, defaultThemeTokens as Wi, boxBackgroundSchema as Wn, backgroundAppearanceColorTokenNames as Wr, headerVariantValues as Wt, generateCssVars as X, surfaceForegroundValue as Xi, summarizePortableMediaReferences as Xn, cardListKnobBlocks as Xr, INPUT_FONT_SIZE_MAP as Xt, pickShadeTowardBackground as Y, surfaceForegroundStyle as Yi, collectPortableMediaReferencesFromContent as Yn, cardListFamilyBlocks as Yr, FONT_WEIGHT_MAP as Yt, ianaTimezoneSchema as Z, surfaceForegroundValueWithOpacity as Zi, walkAndCollectImageAttrs as Zn, asAppearancePresetId as Zr, INPUT_SPACING_MAP as Zt, internalResolvedLinkSchema as _, resolveSurface as _i, buildGoogleFontFamilyQuery as _n, mediaTypeDiscriminants as _r, mergeHeaderNavTypographyPreference as _t, isRecord as a, parseThemeColorToken as aa, defineNoBlockDesignCapability as ai, generateButtonActionLayoutCss as an, getDirectImageUrlForRelativePath as ar, createFormRef as at, isResolvedInternalLinkEntityType as b, safeTokenOr as bi, buttonStyleSelectionSchema as bn, parseCanonicalMediaIdentifier as br, readStoredMode as bt, sdkEventOccurrenceInputSchema as c, featuresFromHex as ca, featureCardCompositionTreatmentValues as ci, resolvedButtonColourDeclarations as cn, isSiteScopedDirectImageStoragePath as cr, createSiteCommandSiteRef as ct, classifySdkEventBookingOffer as d, __commonJSMin as da, makeBoundaryId as di, parseThemeButtonVariantId as dn, mediaSchema as dr, slugPart as dt, onColorTokenName as ea, asPageFlowPresetId as ei, ACCORDION_SPACING_MAP as en, rotateNormalizedPoint as er, createCommandRef as et, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as f, __toESM as fa, offeringsPreviewCompositionTreatmentValues as fi, themeButtonExtraClassesWithTrailingIcon as fn, persistableMediaSchema as fr, effectiveHeaderNavLinkStyle as ft, internalLinkSchema as g, visibleHeadingDecorationFamilyValues as gi, skinTokenCssVars as gn, resolveManagedMediaReference as gr, readOpeningForegroundProjection as gt, externalLinkSchema as h, toNonEmptyReadonlyArray as hi, parseThemeForPersistence as hn, indexRenderableMediaAssets as hr, transparentHeaderForegroundInput as ht, isObjectRecord as i, resolveOpaqueSurfaceHex as ia, defineFrameCapability as ii, ICON_SIZE_PX as in, resolveMediaTransformForAspect as ir, createFooterRef as it, mapEventCommandContent as j, compileButtonColourStates as ji, footerPreferencesSchema as jn, FILE_SIZE_LIMITS as jr, generateHeaderScrollTreatmentStyles as jt, createDryRunReport as k, opaqueSurfaceContextFromTheme as ki, pageDesignBoundaryTreatmentSchema as kn, normalizeAmbiguousStoragePathForSite as kr, deriveSiteStyleBlockPolicy as kt, sdkEventUpsertOptionalFieldSchemas as l, hexToRgb as la, headingDecorationColorTokenValues as li, resolvedButtonFocusDeclarations as ln, imageMediaSchema as lr, createVenueRef as lt, entryLinkSchema as m, tileTreatmentValues as mi, themeButtonVariantClassNames as mn, buildRenderableMediaAssetIndex as mr, headerLeafTextColor as mt, createRichTextDoc as n, ORDINARY_TEXT_MIN_CONTRAST_RATIO as na, assertNever$1 as ni, ACCORDION_TRIGGER_LETTER_SPACING as nn, isExplicitRectCrop as nr, createEventCategoryRef as nt, classifySdkEventTiming as o, parseBlockColorToken as oa, eventListTreatmentValues as oi, generateButtonCss as on, getDirectImageUrlForSiteScopedPath as or, createNavigationRef as ot, customLinkSchema as p, testimonialsCompositionTreatmentValues as pi, themeButtonSizeClassName as pn, runtimeMediaSchema as pr, headerForegroundCandidates as pt, require_jsx_runtime as q, surfaceForegroundDeclarations as qi, siteChromeBackgroundOverrideOwner as qn, defineBlockDesignMetadata as qr, parseBlockCustomCssRules as qt, isRichTextDoc as r, contrastRatio as ra, defineBlockDesignCapability as ri, ICON_CONFIG as rn, parseAspectRatioValue as rr, createEventSeriesRef as rt, sdkCourseBookingSettingsSchema as s, parseColorTokenParts as sa, eyebrowTreatmentValues as si, RESOLVED_BUTTON_DISABLED_DECLARATIONS as sn, getImageUrl as sr, createPageRef as st, RichTextDocSchema as t, getTextColorForBackground as ta, asSiteStyleId as ti, ACCORDION_TRIGGER_FONT_SCALE as tn, normalizeWidthCandidates as tr, createContentEntryRef as tt, classifySdkEventSchedule as u, oklchToHexGamut as ua, introCompositionTreatmentValues as ui, generateDefaultButtonSystem as un, mediaPosterSchema as ur, refSlug as ut, internalRouteOnlyLinkSchema as v, surfaceDecorationColors as vi, generateFontFaceCss as vn, mediaIdentifierSchema as vr, readHeaderNavFontSizePreference as vt, eventVisibilitySchema as w, cssVarValue as wi, generateNavLinkCSS as wn, deriveVideoSlotPolicy as wr, requireCuratedSiteStyle as wt, linkSchema as x, TokenResolver as xi, generateFooterCss as xn, parseMediaIdentifier as xr, resolveEffectiveArrangement as xt, isInternalResolvedLinkValue as y, resolveSurfaceForeground as yi, getFontWidthRange as yn, buildMediaIdentifierFromFilename as yr, arrangementManifestFromVariants as yt, pageIdentifierForBlockCommand as z, buttonVariantIdSchema as zi, deriveSectionGround as zn, renderCssDeclarations as zr, MQ_LG_UP as zt };
|
|
47845
|
+
export { createNavigationRef as $, cardVariantRoleValues as $n, headerRootPaint as $t, eventManagementTiming as A, buildRenderableMediaAssetIndex as An, borderColorStyle as Ar, BREAKPOINT_XL as At, bookingPaymentCollectionOptionSchema as B, resolveVideoSelectionIntentForMediaField as Bn, selectLogoVariant as Br, themeButtonVariantClassNames as Bt, stableStringify as C, getDirectImageUrlForSiteScopedPath as Cn, toNonEmptyReadonlyArray as Cr, generateHeaderScrollTreatmentStyles as Ct, evaluateSiteCommandBatchExposure as D, mediaSchema as Dn, resolveSurfaceForeground as Dr, BREAKPOINT_LG as Dt, mapEventCommandContent as E, mediaPosterSchema as En, surfaceDecorationColors as Er, renderHeaderPaintTargetRules as Et, pageIdentifierForCommand as F, parseCanonicalMediaIdentifier as Fn, isCssColorLiteral as Fr, ICON_CONFIG as Ft, createBlockRef as G, parseRelativeStoragePath as Gn, surfaceForegroundStyle as Gr, generateNavLinkCSS as Gt, require_jsx_runtime as H, getMimeType as Hn, defaultThemeTokens as Hr, buttonStyleSelectionSchema as Ht, pagePathForCommand as I, parseMediaIdentifier as In, resolveOnColorForThemeToken as Ir, generateDefaultButtonSystem as It, createContentEntryRef as J, classifyKnownMimeType as Jn, getTextColorForBackground as Jr, resolveItemSurface as Jt, createBlocksRef as K, FILE_SIZE_LIMITS as Kn, surfaceForegroundValue as Kr, arrangementLookHooks as Kt, hasConfiguredBookingVertical as L, resolveMediaIdentifier as Ln, resolveThemeColorReferenceValue as Lr, parseThemeButtonVariantId as Lt, blockOrderIdentifiersForCommand as M, mediaTypeDiscriminants as Mn, rgbColorValue as Mr, headerVariantValues as Mt, entryIdentifierForCommand as N, mediaIdentifierSchema as Nn, textColorStyle as Nr, getComponentBorderWidthPx as Nt, evaluateSiteCommandExposure as O, persistableMediaSchema as On, TokenResolver as Or, BREAKPOINT_MD as Ot, pageIdentifierForBlockCommand as P, buildMediaIdentifierFromFilename as Pn, opaqueSurfaceDeclarations as Pr, getComponentShadowVar as Pt, createFormRef as Q, cardRoleSchema as Qn, __toESM as Qr, footerPreferencesSchema as Qt, eventCommandScheduleSchema as R, slugifyMediaIdentifier as Rn, resolveTokenOrCssColorValue as Rr, themeButtonExtraClassesWithTrailingIcon as Rt, sortRecord as S, getDirectImageUrlForRelativePath as Sn, tileTreatmentValues as Sr, themeSchema as St, parseAndPlanCommandBatchForTypes as T, isSiteScopedDirectImageStoragePath as Tn, resolveSurface as Tr, getHeaderPaintTargets as Tt, require_react as U, asRecord as Un, surfaceForegroundDeclarations as Ur, footerForegroundCandidates as Ut, bookingPaymentTermsSchema as V, getExtensionForMimeType as Vn, surfaceToneFromForegroundToken as Vr, parseThemeForPersistence as Vt, ianaTimezoneSchema as W, normalizeAmbiguousStoragePathForSite as Wn, surfaceForegroundInputFromResolved as Wr, buildTextContrastShadow as Wt, createEventSeriesRef as X, parseSafeDownloadFilename as Xn, parseBlockColorToken as Xr, pageDesignBoundaryTreatmentSchema as Xt, createEventCategoryRef as Y, managementMediaLibraryUploadLimitForMimeType as Yn, parseThemeColorToken as Yr, resolveLookSlotSurfaces as Yt, createFooterRef as Z, renderCssDeclarations as Zn, __commonJSMin as Zr, pageDesignIntentSchemaVersion as Zt, normalizeLinkValue as _, rotateNormalizedPoint as _n, headingDecorationColorTokenValues as _r, requireCuratedSiteStyle as _t, classifySdkEventSchedule as a, resolveSectionBackground as an, asAppearancePresetId as ar, effectiveHeaderNavLinkStyle as at, isEventVisibility as b, parseAspectRatioValue as bn, offeringsPreviewCompositionTreatmentValues as br, parseGradientPresetId as bt, customLinkSchema as c, boxBackgroundSchema as cn, asPageFlowPresetId as cr, transparentHeaderForegroundInput as ct, internalLinkSchema as d, stripStaleTransitionStyleGroup as dn, defineBlockDesignCapability as dr, readHeaderNavFontSizePreference as dt, boundaryLayout as en, normalizeCardRole as er, createPageRef as et, internalResolvedLinkSchema as f, collectPortableMediaReferencesFromContent as fn, defineFrameCapability as fr, arrangementManifestFromVariants as ft, linkSchema as g, looksLikeUuid as gn, featureCardCompositionTreatmentValues as gr, resolvePublishedLook as gt, isResolvedInternalLinkEntityType as h, deleteEnvSpecificKeys as hn, eyebrowTreatmentValues as hr, resolveModeArrangement as ht, sdkEventUpsertOptionalFieldSchemas as i, parseCanonicalRuntimeBackground as in, cardListKnobBlocks as ir, slugPart as it, blockIdentifierForCommand as j, resolveManagedMediaReference as jn, mergeStyles as jr, MQ_MD_DOWN as jt, getSiteCommandMetadata as k, runtimeMediaSchema as kn, backgroundColorStyle as kr, BREAKPOINT_SM as kt, entryLinkSchema as l, runtimeBoxBackgroundSchema as ln, asSiteStyleId as lr, readOpeningForegroundProjection as lt, isInternalResolvedLinkValue as m, walkAndCollectImageAttrs as mn, eventListTreatmentValues as mr, resolveEffectiveArrangement as mt, sdkCourseBookingSettingsSchema as n, sectionFactsForContent as nn, resolveEffectiveKnobs as nr, createVenueRef as nt, classifySdkEventBookingOffer as o, resolveSectionPhotoPlacement as on, asDesignBlockId as or, headerForegroundCandidates as ot, internalRouteOnlyLinkSchema as p, summarizePortableMediaReferences as pn, defineNoBlockDesignCapability as pr, readStoredMode as pt, createCommandRef as q, MAX_MANAGEMENT_MEDIA_UPLOAD_BYTES as qn, expandPalette as qr, arrangementSlotNames as qt, sdkEventOccurrenceInputSchema as r, deriveSectionGround as rn, cardListFamilyBlocks as rr, refSlug as rt, RESOLVED_INTERNAL_LINK_ENTITY_TYPES as s, boxBackgroundOverlaySchema as sn, asLayoutVariantKey as sr, headerLeafTextColor as st, classifySdkEventTiming as t, composeBoundary as tn, defineBlockDesignMetadata as tr, createSiteCommandSiteRef as tt, externalLinkSchema as u, siteChromeBackgroundOverrideOwner as un, assertNever$1 as ur, mergeHeaderNavTypographyPreference as ut, pageLinkSchema as v, normalizeWidthCandidates as vn, introCompositionTreatmentValues as vr, gradientToCss as vt, createDryRunReport as w, getImageUrl as wn, visibleHeadingDecorationFamilyValues as wr, generateMobileOverlayBackdropFilterFix as wt, venueManagementFields as x, resolveMediaTransformForAspect as xn, testimonialsCompositionTreatmentValues as xr, deriveSiteStyleBlockPolicy as xt, eventVisibilitySchema as y, isExplicitRectCrop as yn, makeBoundaryId as yr, getGradientPreset as yt, eventBookingOfferIntentSchema as z, deriveVideoSlotPolicy as zn, PUBLIC_BUTTON_ROLES as zr, themeButtonSizeClassName as zt };
|