@riverbankcms/sdk 0.90.1 → 0.91.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/{PreviewEditorSidebar-FNFRVSIM.mjs → PreviewEditorSidebar-3TT47WCF.mjs} +3 -3
- package/dist/{PreviewEditorUI-3WXJFQXG.mjs → PreviewEditorUI-ORCLLUNZ.mjs} +3 -3
- package/dist/SdkPreviewModeRuntime-GMCDQPZZ.mjs +8 -0
- package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +17 -0
- package/dist/_dts/core/src/string.d.ts +12 -0
- package/dist/_dts/sdk/src/cli/sync/validation.d.ts +2 -2
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/{chunk-SYYJZPKU.mjs → chunk-AFPMCLS7.mjs} +2 -2
- package/dist/{chunk-H6TT5ZXI.mjs → chunk-GDT2QGIL.mjs} +1 -1
- package/dist/{chunk-CR2VX432.mjs → chunk-RQUZYSES.mjs} +48 -36
- package/dist/{chunk-FA6LVZ7C.mjs → chunk-S3YHJWEU.mjs} +7 -7
- package/dist/{chunk-UG7I7S7W.mjs → chunk-U5YM4AWE.mjs} +1 -1
- package/dist/{chunk-BOQXMCSP.mjs → chunk-ZA2S7H34.mjs} +3 -3
- package/dist/cli/index.mjs +204 -335
- package/dist/cli/init-docs/content/workflow-add-block.md +48 -0
- package/dist/cli/init-docs/content/workflow-custom-block.md +10 -0
- package/dist/client/{accordion-4K7VGZ3I.mjs → accordion-AFX37652.mjs} +2 -2
- package/dist/client/{bookingForm-3QXA3CIS.mjs → bookingForm-32V5QCOW.mjs} +6 -6
- package/dist/client/bookings.mjs +16 -15
- package/dist/client/{carousel-BEJKNGQ7.mjs → carousel-TJGQJ7ER.mjs} +3 -3
- package/dist/client/{cart-44BBM6XG.mjs → cart-JUU2JEW4.mjs} +6 -6
- package/dist/client/{checkout-THMHEYKF.mjs → checkout-RD6BTFX4.mjs} +6 -6
- package/dist/client/{chunk-JV7ZNAOU.mjs → chunk-6QZIBNGV.mjs} +8 -8
- package/dist/client/{chunk-DQIRKNZE.mjs → chunk-6RN62XBV.mjs} +1 -1
- package/dist/client/{chunk-ZIAF2DA4.mjs → chunk-C4LP6BPG.mjs} +1 -1
- package/dist/client/{chunk-SLY6UDAS.mjs → chunk-CKXEUWWA.mjs} +2 -2
- package/dist/client/{chunk-5AJIMWKS.mjs → chunk-E6VIWZUG.mjs} +3 -3
- package/dist/client/{chunk-PEDNDLPB.mjs → chunk-FMZZHAIR.mjs} +2 -2
- package/dist/client/{chunk-KNTLBQ3N.mjs → chunk-ISAUXU5R.mjs} +1 -1
- package/dist/client/{chunk-HIHOQGIP.mjs → chunk-LJCX6V7Q.mjs} +9 -9
- package/dist/client/{chunk-B4H6QMPY.mjs → chunk-MLBNVN4H.mjs} +7 -5
- package/dist/client/{chunk-EJBHK74Y.mjs → chunk-PMNAV6LO.mjs} +1 -1
- package/dist/client/{chunk-4COPESPO.mjs → chunk-RMOFBBNA.mjs} +5 -5
- package/dist/client/{chunk-3H5CLFKT.mjs → chunk-RWYFG625.mjs} +9 -8
- package/dist/client/client.mjs +34 -31
- package/dist/client/{courseRegistration-URX7RCCK.mjs → courseRegistration-X63QAIVV.mjs} +6 -6
- package/dist/client/{eventCalendar-GTENOQCE.mjs → eventCalendar-5T24GCZL.mjs} +9 -9
- package/dist/client/{eventCombined-EZVB72MF.mjs → eventCombined-AZVTF22X.mjs} +9 -9
- package/dist/client/{eventDetails-CH4BJR5Z.mjs → eventDetails-7GPFNLGF.mjs} +9 -9
- package/dist/client/{eventListing-4BVOI5HS.mjs → eventListing-QEUMTMUM.mjs} +9 -9
- package/dist/client/{eventRegistration-37LPIKIE.mjs → eventRegistration-P2EDKCQZ.mjs} +9 -9
- package/dist/client/{form-FX3Y54YK.mjs → form-NUJ7H4IN.mjs} +3 -3
- package/dist/client/{headerSection-UOZZGVYL.mjs → headerSection-JB7LECPL.mjs} +3 -3
- package/dist/client/hooks.mjs +7 -7
- package/dist/client/{locationMap-VSIPKV35.mjs → locationMap-UEYWUCSW.mjs} +3 -3
- package/dist/client/{newsletterForm-6FRJKNAF.mjs → newsletterForm-S2YZQ2X7.mjs} +3 -3
- package/dist/client/{productDetail-6AHMLXCO.mjs → productDetail-H5MADGG7.mjs} +6 -6
- package/dist/client/{productList-M2CYIZVH.mjs → productList-DK7YON7H.mjs} +6 -6
- package/dist/client/rendering/client.mjs +31 -28
- package/dist/client/rendering/islands.mjs +19 -19
- package/dist/client/rendering.mjs +33 -30
- package/dist/client/{shop-AUOT6GEX.mjs → shop-6PA7RDRJ.mjs} +6 -6
- package/dist/client/spam-protection.mjs +10 -10
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/{sdk-runtime-6GPJNLU6.mjs → sdk-runtime-JP5347OB.mjs} +6 -6
- package/dist/server/components.mjs +13 -11
- package/dist/server/config-validation.mjs +7 -7
- package/dist/server/config.mjs +7 -7
- package/dist/server/data.mjs +7 -7
- package/dist/server/index.mjs +1 -1
- package/dist/server/navigation.mjs +2 -2
- package/dist/server/next.mjs +14 -12
- package/dist/server/page-converter.mjs +5 -5
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +13 -11
- package/dist/server/rendering.mjs +13 -11
- package/dist/server/routing.mjs +14 -14
- package/dist/server/server.mjs +8 -8
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-2UCIMKUB.mjs +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, previewWidgetOverrides, canInspectSiteStyle, mapContentSchemaToFormFields, PreviewFormProvider, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS } from './chunk-
|
|
3
|
-
import { useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, buildSiteChromeLookModels, planSiteChromeFooterLayoutSelection, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, unwrapResponse, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, getHeaderLayout, getHeaderStyle, getFooterLayout, findFooterLook, cycleSiteChromeLookId, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, listEntryPageContentSlots, ContentSpinner, Callout, CalloutDescription, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Separator, Surface, ColorPicker, Input } from './chunk-
|
|
4
|
-
import { usePreviewAuth, getDashboardUrl } from './chunk-
|
|
2
|
+
import { resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSidebarChromeModel, resolvePreviewEditorGuidanceModel, previewWidgetOverrides, canInspectSiteStyle, mapContentSchemaToFormFields, PreviewFormProvider, usePreviewBlockCustomizeSelectionOptional, BlockEditor, canApplySiteStyle, useBlockCustomizeControls, MAX_QUICK_MANIFEST_FIELDS } from './chunk-GDT2QGIL.mjs';
|
|
3
|
+
import { useEntryController, useEditorUiStoreInstance, useUISelector, resolvePreviewSidebarTab, unsafeAsEditorBlockId, Tabs, TabsList, TabsTrigger, Button, X, TabsContent, useEditorUiStore, deriveRouteMetadataPresentation, resolvePageRouteSlug, createManifestValidation, createStoreBackend, ManifestForm, previewAssistantEnabled, Collapsible, CollapsibleTrigger, ChevronRight, CollapsibleContent, ContentFieldsForm, usePreviewDesignCoordinator, useSiteChromeCustomizeOptional, resolveStyleConfiguratorInitialSnapshot, createStyleConfiguratorState, isPreviewingChange, createOptimisticActionRunner, syncStyleConfiguratorState, getCuratedSiteStyle, planSiteStylePreviewChange, openRow, previewSiteStyle, applyResolvedSelections, previewButtonPersonality, previewHeaderLayout, previewHeaderStyle, planSiteChromeLookSelection, previewFooterLook, buildSiteChromeLookModels, planSiteChromeFooterLayoutSelection, previewPaletteVariant, previewTypographyPreset, setTypographyBodyFontOverride, setTypographyHeadingFontOverride, clearTypographyFontOverrides, paletteOverridesSchema, setPaletteOverrides, toggleRow, cancelPreview, dismissWarnings, dismissNotices, deriveStyleConfiguratorCapabilities, buildApplySiteStyleSelectionBody, markApplyFailed, selectionSnapshotFromApplySiteStyleSelectionResponse, styleConfiguratorHistoryEntryForPersistedSelection, markApplySaved, unwrapResponse, markApplySaving, findButtonPersonality, findPaletteVariant, findTypographyPreset, getHeaderLayout, getHeaderStyle, getFooterLayout, findFooterLook, cycleSiteChromeLookId, resolveContentTitle, foldSubroute, SUBROUTE_KINDS, Smartphone, Tablet, Monitor, Maximize2, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuItem, listEntryPageContentSlots, ContentSpinner, Callout, CalloutDescription, curatedSiteStyles, ChevronLeft, cycleableSiteChromeOptions, requireEntriesForCuratedChoices, buttonPersonalities, typographyPresets, paletteVariants, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, FormRenderer, evaluateTypographyFontSlot, Separator, Surface, ColorPicker, Input } from './chunk-RQUZYSES.mjs';
|
|
4
|
+
import { usePreviewAuth, getDashboardUrl } from './chunk-ZA2S7H34.mjs';
|
|
5
5
|
import './chunk-R7POPVJR.mjs';
|
|
6
6
|
import { useMemo, useRef, useCallback, useEffect, useState, useTransition, useLayoutEffect, useSyncExternalStore, useId } from 'react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { resolvePreviewChromeSurface, usePreviewPageDesignEditorState, PREVIEW_CHROME_PORTAL_CLASS_NAME, PREVIEW_CHROME_THEME_CLASS_NAME, applyPreviewChromeSurfaceToElement, setPreviewSidebarTab } from './chunk-
|
|
3
|
-
import { useEntryEditorController, useEditorUiStore, useMultiAutosave, usePreviewDesignHistoryOrder, useSiteChromeCustomizeOptional, selectPreviewDesignHistoryDomain, EditorChrome, previewDesignHistoryDomainForCommand, classifyHistoryShortcut, previewAssistantEnabled, unwrapResponse, cn, Dialog, Button, Palette, DialogContent, DialogHeader, DialogTitle, DialogDescription, TriangleAlert, Pencil, Sparkles, useEditorUiStoreInstance } from './chunk-
|
|
4
|
-
import { usePreviewAuth } from './chunk-
|
|
2
|
+
import { resolvePreviewChromeSurface, usePreviewPageDesignEditorState, PREVIEW_CHROME_PORTAL_CLASS_NAME, PREVIEW_CHROME_THEME_CLASS_NAME, applyPreviewChromeSurfaceToElement, setPreviewSidebarTab } from './chunk-AFPMCLS7.mjs';
|
|
3
|
+
import { useEntryEditorController, useEditorUiStore, useMultiAutosave, usePreviewDesignHistoryOrder, useSiteChromeCustomizeOptional, selectPreviewDesignHistoryDomain, EditorChrome, previewDesignHistoryDomainForCommand, classifyHistoryShortcut, previewAssistantEnabled, unwrapResponse, cn, Dialog, Button, Palette, DialogContent, DialogHeader, DialogTitle, DialogDescription, TriangleAlert, Pencil, Sparkles, useEditorUiStoreInstance } from './chunk-RQUZYSES.mjs';
|
|
4
|
+
import { usePreviewAuth } from './chunk-ZA2S7H34.mjs';
|
|
5
5
|
import './chunk-R7POPVJR.mjs';
|
|
6
6
|
import { useState, useMemo, useCallback, useEffect, useTransition } from 'react';
|
|
7
7
|
import { createPortal } from 'react-dom';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export { SdkPreviewModeRuntime } from './chunk-S3YHJWEU.mjs';
|
|
3
|
+
import './chunk-U5YM4AWE.mjs';
|
|
4
|
+
import './chunk-GDT2QGIL.mjs';
|
|
5
|
+
import './chunk-AFPMCLS7.mjs';
|
|
6
|
+
import './chunk-RQUZYSES.mjs';
|
|
7
|
+
import './chunk-ZA2S7H34.mjs';
|
|
8
|
+
import './chunk-R7POPVJR.mjs';
|
|
@@ -134,6 +134,20 @@ type BaseIssue<K extends string, Extra extends object = Record<never, never>> =
|
|
|
134
134
|
fieldId: string;
|
|
135
135
|
label: string;
|
|
136
136
|
}> & Readonly<Extra>;
|
|
137
|
+
export type ManifestContentRequiredScope = "topLevel" | "nested";
|
|
138
|
+
export type ManifestContentValidationIssue = Readonly<{
|
|
139
|
+
kind: FieldValidationIssue["kind"];
|
|
140
|
+
field: string;
|
|
141
|
+
message: string;
|
|
142
|
+
requiredScope: ManifestContentRequiredScope | null;
|
|
143
|
+
}>;
|
|
144
|
+
export type ManifestContentValidationResult = Readonly<{
|
|
145
|
+
kind: "valid";
|
|
146
|
+
issues: readonly [];
|
|
147
|
+
}> | Readonly<{
|
|
148
|
+
kind: "invalid";
|
|
149
|
+
issues: readonly ManifestContentValidationIssue[];
|
|
150
|
+
}>;
|
|
137
151
|
type PlanBase<K extends string, ValueKind extends string, Constraints extends FieldConstraint> = Readonly<{
|
|
138
152
|
kind: K;
|
|
139
153
|
valueKind: ValueKind;
|
|
@@ -213,6 +227,9 @@ export declare function validateFieldValue(plan: FieldValidationPlan, value: unk
|
|
|
213
227
|
export declare function fieldPlanToZod(plan: FieldValidationPlan, options?: FieldValidationOptions): z.ZodTypeAny;
|
|
214
228
|
export declare function resolveFieldValidationDescriptor(plans: readonly FieldValidationPlan[], path: FieldPath): FieldValidationDescriptor | null;
|
|
215
229
|
export declare function validateManifestValues(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): FieldValidationIssue[];
|
|
230
|
+
export declare function validateManifestContentForPush(fields: readonly FieldDefinition[], values: Record<string, unknown>, options?: FieldValidationOptions): ManifestContentValidationResult;
|
|
231
|
+
export declare function isTopLevelRequiredManifestContentIssue(issue: ManifestContentValidationIssue): boolean;
|
|
232
|
+
export declare function formatManifestContentValidationIssue(issue: ManifestContentValidationIssue): string;
|
|
216
233
|
export declare function isCanonicalEmailValue(value: string): boolean;
|
|
217
234
|
export declare function isCanonicalPhoneValue(value: string): boolean;
|
|
218
235
|
export declare function isCanonicalUrlValue(value: string, options?: Readonly<{
|
|
@@ -9,6 +9,18 @@ export declare function asNullableString(value: unknown): string | null;
|
|
|
9
9
|
* Return a non-empty string value, otherwise null.
|
|
10
10
|
*/
|
|
11
11
|
export declare function asNonEmptyStringOrNull(value: unknown): string | null;
|
|
12
|
+
/**
|
|
13
|
+
* Narrow nullable values to the present value.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isPresent<T>(value: T | null | undefined): value is T;
|
|
16
|
+
/**
|
|
17
|
+
* Return true for string values that contain at least one character.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isNonEmptyString(value: unknown): value is string;
|
|
20
|
+
/**
|
|
21
|
+
* Narrow optional string values to non-empty strings.
|
|
22
|
+
*/
|
|
23
|
+
export declare function hasText(value: string | null | undefined): value is string;
|
|
12
24
|
/**
|
|
13
25
|
* Trim a user-entered string and collapse blank values to null.
|
|
14
26
|
*/
|
|
@@ -39,10 +39,10 @@ export declare function extractFieldIds(fields: readonly FieldDefinition[]): Set
|
|
|
39
39
|
*/
|
|
40
40
|
export declare function extractRequiredFieldIds(fields: readonly FieldDefinition[]): Set<string>;
|
|
41
41
|
/**
|
|
42
|
-
* Validate block content values against the manifest
|
|
42
|
+
* Validate block content values against the shared manifest push policy.
|
|
43
43
|
*
|
|
44
44
|
* This catches type mismatches, malformed structures, and invalid values
|
|
45
|
-
* that would
|
|
45
|
+
* that would be rejected by SDK block writes.
|
|
46
46
|
*
|
|
47
47
|
* @param data - The block data to validate
|
|
48
48
|
* @param manifest - The block manifest with field definitions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-
|
|
3
|
-
import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-
|
|
2
|
+
import { assertNever2, usePreviewDesignHistoryOrder, useOptionalEditorUiStoreInstance, getPageDesignEditorState, PAGE_DESIGN_EDITOR_STATE_FETCH_ERROR_MESSAGE, unwrapResponse, useDebouncedLatestSave, AMBIENT_BACKGROUND_ROLES, applyPageDesignEditorAction, resolvePreviewSidebarTab, confirmAutosaveBatch, beginAutosaveBatch, enqueueTransaction, applyBackgroundOverrideContentPatch, systemCustomizeFacetDefinitionForBlock, systemCustomizeFacetRollbackContentPatch, systemCustomizeFacetApplyContentPatch, unsafeAsEditorBlockId, createHistoryState, rejectAutosaveBatch, redoHistory, undoHistory, pushHistoryEntry, idleEditorTransactionQueueState, canRedoHistory, deriveTransactionCapabilities, canUndoHistory, backgroundOverrideEquals, attachRenderableMediaAssetFields, planPageDesignLayoutLookCompatibility, unsafeAsEditorBlockValues } from './chunk-RQUZYSES.mjs';
|
|
3
|
+
import { ApiRequestError, resolveSurfaceDocumentAttributes, SURFACE_DOCUMENT_DATA_ATTRIBUTE, SURFACE_IDS } from './chunk-ZA2S7H34.mjs';
|
|
4
4
|
import { createContext, useState, useRef, useEffect, useMemo, useLayoutEffect, useContext } from 'react';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { KeyboardCode, getBlockDefinition, CSS, useSdkConfig, unwrapResponse, parseSiteIconStyleGuideVersionId, parseBlockIconValue, listBlockDescriptors, useSensor, PointerSensor, useSensors, createEditorRemoveBlockCommand, unsafeAsEditorBlockId, DndContext, closestCenter, Button, Plus, useDroppable, useDraggable, useCombinedRefs, isKeyboardEvent, createCustomBlockRegistry, Card, cn, Collapsible, CollapsibleContent, listContentTypes, mergeBlockDescriptorsWithRegistry, createEditorReorderBlocksCommand, mutateBlockContent, deleteEntrySlotBlock, deleteBlock, useDndContext, useUniqueId, useIsomorphicLayoutEffect, EmptyState, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Search, getClientRect, resolveBlockTitle, CardHeader, GripVertical, ChevronRight, CardTitle, ArrowUp, ArrowDown, DropdownMenu, DropdownMenuTrigger, EllipsisVertical, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuItem, Copy, Trash2, DialogFooter, DialogClose, CardContent, createEntrySlotBlock, createBlock, createEditorInsertBlockCommand, reorderEntrySlotBlocks, reorderBlocks, LoaderCircle, ChevronDown, getFeatureCardIconCompletion, toFeatureCardIconSuggestionInputs, getBlockIconSemanticFallbackId, suggestSemanticIconForFeatureCard, getGeneratedBlockIconStyleState, assertNever, createManifestFormAdapter, getModalConfig, createStoreBackend, validateBlockManifestIssues, isNonEmptyValue, Settings, ScrollableDialogContent, FormRenderer, Tabs, TabsList, TabsTrigger, TabsContent, RotateCcw, ImagePlus, Sparkles, Textarea, Callout, CalloutDescription, normalEditorCuratedPromotedFieldPaths, resolveVisiblePromotedFieldPathsForEditorBlock, CalloutTitle, unfinishedBlockCopy, recoveryConflictCopy, ManifestForm, unsafeAsEditorBlockValues, Box, mergeManifestWithSdkOptions, augmentManifestWithStyleGroups, suggestFeatureCardSemanticIcons, applyFeatureCardIconSuggestions, createFeatureCardIconKey, lucide_react_exports, isThemeV2NormalEditorRawStylePath, getFieldIntent, isHeaderField, isThemeV2NormalEditorRawStyleFieldName, BackgroundGradientField, BackgroundColorField, useField, FieldFrame, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, useMediaEditorOptional, useRichTextEditor, RichTextEditorSurface, ThemeScope, isObjectRecord, EMPTY_DOC, useAsyncPickerOptions, resolvePickerSelectionLabel, shouldShowPickerSearch, normalizePickerSearchThreshold, Combobox, Badge, useBlockContext, resolveMediaSlotContract, asRecord, parseAspectRatioValue, MediaEditor, PUBLIC_FILE_FIELD_KINDS, useBackendWatch, resolveIconPickerPreset, isIconPickerPreset, getIconPickerOptionsForPreset, isKnownIconName, getIconComponent, isOfferingsPreviewSourceKey, EyeOff, CommandMultiSelect, expectParsedBrandedId, parseSiteId, buildThemeRuntime, SdkConfigProvider, PaletteProvider, MediaEditorProvider, useEditorUiStoreInstance, useUISelector, getRichTextImagePositionFromTarget, insertOrReplaceRichTextImage, emitMediaCropDebug, Pencil, resolveVideoSelectionIntentForMediaField, resolveOfferingsPreviewGroupOrderEntries, normalizeOfferingsPreviewGroupOrder, inferLegacyOfferingsPreviewGroupOrder, siteOptionSources, evaluateVisibility, Root2, List, Trigger, Content, Input, Check, Label, isInternalResolvedLinkValue, resolveImageUrlWithContext, useMediaEditor, MediaPickerMini, MediaPickerDialog, toRoutableLinkPayload, classifyKnownMimeType, getDirectImageUrlForMediaAsset, isSvgMimeType } from './chunk-
|
|
2
|
+
import { KeyboardCode, getBlockDefinition, CSS, useSdkConfig, unwrapResponse, parseSiteIconStyleGuideVersionId, parseBlockIconValue, listBlockDescriptors, useSensor, PointerSensor, useSensors, createEditorRemoveBlockCommand, unsafeAsEditorBlockId, DndContext, closestCenter, Button, Plus, useDroppable, useDraggable, useCombinedRefs, isKeyboardEvent, createCustomBlockRegistry, Card, cn, Collapsible, CollapsibleContent, listContentTypes, mergeBlockDescriptorsWithRegistry, createEditorReorderBlocksCommand, mutateBlockContent, deleteEntrySlotBlock, deleteBlock, useDndContext, useUniqueId, useIsomorphicLayoutEffect, EmptyState, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Search, getClientRect, resolveBlockTitle, CardHeader, GripVertical, ChevronRight, CardTitle, ArrowUp, ArrowDown, DropdownMenu, DropdownMenuTrigger, EllipsisVertical, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuItem, Copy, Trash2, DialogFooter, DialogClose, CardContent, createEntrySlotBlock, createBlock, createEditorInsertBlockCommand, reorderEntrySlotBlocks, reorderBlocks, LoaderCircle, ChevronDown, getFeatureCardIconCompletion, toFeatureCardIconSuggestionInputs, getBlockIconSemanticFallbackId, suggestSemanticIconForFeatureCard, getGeneratedBlockIconStyleState, assertNever, createManifestFormAdapter, getModalConfig, createStoreBackend, validateBlockManifestIssues, isNonEmptyValue, Settings, ScrollableDialogContent, FormRenderer, Tabs, TabsList, TabsTrigger, TabsContent, RotateCcw, ImagePlus, Sparkles, Textarea, Callout, CalloutDescription, normalEditorCuratedPromotedFieldPaths, resolveVisiblePromotedFieldPathsForEditorBlock, CalloutTitle, unfinishedBlockCopy, recoveryConflictCopy, ManifestForm, unsafeAsEditorBlockValues, Box, mergeManifestWithSdkOptions, augmentManifestWithStyleGroups, suggestFeatureCardSemanticIcons, applyFeatureCardIconSuggestions, createFeatureCardIconKey, lucide_react_exports, isThemeV2NormalEditorRawStylePath, getFieldIntent, isHeaderField, isThemeV2NormalEditorRawStyleFieldName, BackgroundGradientField, BackgroundColorField, useField, FieldFrame, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, useMediaEditorOptional, useRichTextEditor, RichTextEditorSurface, ThemeScope, isObjectRecord, EMPTY_DOC, useAsyncPickerOptions, resolvePickerSelectionLabel, shouldShowPickerSearch, normalizePickerSearchThreshold, Combobox, Badge, useBlockContext, resolveMediaSlotContract, asRecord, parseAspectRatioValue, MediaEditor, PUBLIC_FILE_FIELD_KINDS, useBackendWatch, resolveIconPickerPreset, isIconPickerPreset, getIconPickerOptionsForPreset, isKnownIconName, getIconComponent, isOfferingsPreviewSourceKey, EyeOff, CommandMultiSelect, expectParsedBrandedId, parseSiteId, buildThemeRuntime, SdkConfigProvider, PaletteProvider, MediaEditorProvider, useEditorUiStoreInstance, useUISelector, getRichTextImagePositionFromTarget, insertOrReplaceRichTextImage, emitMediaCropDebug, Pencil, resolveVideoSelectionIntentForMediaField, resolveOfferingsPreviewGroupOrderEntries, normalizeOfferingsPreviewGroupOrder, inferLegacyOfferingsPreviewGroupOrder, siteOptionSources, evaluateVisibility, Root2, List, Trigger, Content, Input, Check, Label, isInternalResolvedLinkValue, resolveImageUrlWithContext, useMediaEditor, MediaPickerMini, MediaPickerDialog, toRoutableLinkPayload, classifyKnownMimeType, getDirectImageUrlForMediaAsset, isSvgMimeType } from './chunk-RQUZYSES.mjs';
|
|
3
3
|
import React, { createContext, memo, useMemo, useState, useRef, useEffect, forwardRef, useCallback, useImperativeHandle, useContext, useSyncExternalStore, useLayoutEffect, Fragment as Fragment$1, useReducer } from 'react';
|
|
4
4
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { ApiRequestError } from './chunk-
|
|
2
|
+
import { ApiRequestError } from './chunk-ZA2S7H34.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';
|
|
@@ -385,10 +385,11 @@ function omitZeroAmountFutureRows(rows) {
|
|
|
385
385
|
if (rows.length <= 1) {
|
|
386
386
|
return rows;
|
|
387
387
|
}
|
|
388
|
-
const
|
|
389
|
-
if (
|
|
388
|
+
const firstRow = rows[0];
|
|
389
|
+
if (firstRow === void 0) {
|
|
390
390
|
return [];
|
|
391
391
|
}
|
|
392
|
+
const futureRows = rows.slice(1);
|
|
392
393
|
return [
|
|
393
394
|
firstRow,
|
|
394
395
|
...futureRows.filter((row) => row.amountCents > 0)
|
|
@@ -431,11 +432,11 @@ function isValidTimeZone(timeZone) {
|
|
|
431
432
|
}
|
|
432
433
|
function getSafeTimeZone(timeZone) {
|
|
433
434
|
const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
|
|
434
|
-
return normalized && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
435
|
+
return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
|
|
435
436
|
}
|
|
436
437
|
function parseStrictBookingTimeZone(timeZone) {
|
|
437
438
|
const normalized = timeZone.trim();
|
|
438
|
-
if (
|
|
439
|
+
if (normalized.length === 0 || !isValidTimeZone(normalized)) {
|
|
439
440
|
return null;
|
|
440
441
|
}
|
|
441
442
|
return normalized;
|
|
@@ -522,7 +523,7 @@ function parseScheduledBookingDateTime(input) {
|
|
|
522
523
|
try {
|
|
523
524
|
const startsAt = toUtcIsoDateTimeString(input.startsAt);
|
|
524
525
|
const timeZone = parseStrictBookingTimeZone(input.timeZone);
|
|
525
|
-
if (
|
|
526
|
+
if (timeZone === null) {
|
|
526
527
|
return {
|
|
527
528
|
ok: false,
|
|
528
529
|
field: "timeZone",
|
|
@@ -661,7 +662,7 @@ function getBookingLocalDateKey(input) {
|
|
|
661
662
|
}
|
|
662
663
|
function parseBookingLocalDate(value) {
|
|
663
664
|
const match2 = LOCAL_DATE_PATTERN.exec(value.trim());
|
|
664
|
-
if (
|
|
665
|
+
if (match2 === null || match2.groups === void 0) {
|
|
665
666
|
throw new Error(`Invalid booking date format: "${value}" (expected YYYY-MM-DD)`);
|
|
666
667
|
}
|
|
667
668
|
const year = Number(match2.groups.year);
|
|
@@ -695,10 +696,10 @@ function normalizeLocationAddressText(value) {
|
|
|
695
696
|
return null;
|
|
696
697
|
}
|
|
697
698
|
const trimmed = value.trim();
|
|
698
|
-
return trimmed ? trimmed : null;
|
|
699
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
699
700
|
}
|
|
700
701
|
function hasLocationCoordinates(value) {
|
|
701
|
-
return typeof value
|
|
702
|
+
return value != null && typeof value.lat === "number" && typeof value.lng === "number";
|
|
702
703
|
}
|
|
703
704
|
function toLocationCoordinates(value) {
|
|
704
705
|
if (!hasLocationCoordinates(value)) {
|
|
@@ -62335,7 +62336,7 @@ function formatCalendarTitle(viewDate, view, days, monthNames = MONTH_NAMES) {
|
|
|
62335
62336
|
if (view === "week") {
|
|
62336
62337
|
const weekStart = days[0];
|
|
62337
62338
|
const weekEnd = days[6];
|
|
62338
|
-
if (
|
|
62339
|
+
if (weekStart === void 0 || weekEnd === void 0) {
|
|
62339
62340
|
return `${monthNames[viewDate.getMonth()] ?? ""} ${viewDate.getFullYear()}`;
|
|
62340
62341
|
}
|
|
62341
62342
|
const startMonth = monthNames[weekStart.getMonth()] ?? "";
|
|
@@ -62441,7 +62442,9 @@ function getLocalDateKey(isoTimestamp, timeZone) {
|
|
|
62441
62442
|
const year = parts.find((part) => part.type === "year")?.value;
|
|
62442
62443
|
const month = parts.find((part) => part.type === "month")?.value;
|
|
62443
62444
|
const day = parts.find((part) => part.type === "day")?.value;
|
|
62444
|
-
if (
|
|
62445
|
+
if (year === void 0 || year.length === 0) return null;
|
|
62446
|
+
if (month === void 0 || month.length === 0) return null;
|
|
62447
|
+
if (day === void 0 || day.length === 0) return null;
|
|
62445
62448
|
return `${year}-${month}-${day}`;
|
|
62446
62449
|
}
|
|
62447
62450
|
var validTimeZoneCache = /* @__PURE__ */ new Map();
|
|
@@ -62698,7 +62701,7 @@ function enumerateDateKeys(startDateKey, endDateKey) {
|
|
|
62698
62701
|
}
|
|
62699
62702
|
function parseDateKey(dateKey) {
|
|
62700
62703
|
const match2 = /^(\d{4})-(\d{2})-(\d{2})$/.exec(dateKey);
|
|
62701
|
-
if (
|
|
62704
|
+
if (match2 === null) {
|
|
62702
62705
|
throw new Error(`Invalid timetable date key: ${dateKey}`);
|
|
62703
62706
|
}
|
|
62704
62707
|
const [, year, month, day] = match2;
|
|
@@ -62718,7 +62721,7 @@ function groupItemsByDate(items, accessors) {
|
|
|
62718
62721
|
const dateKey = getLocalDateKey(startsAt, timeZone);
|
|
62719
62722
|
if (dateKey == null) continue;
|
|
62720
62723
|
const existing = grouped.get(dateKey);
|
|
62721
|
-
if (existing) {
|
|
62724
|
+
if (existing !== void 0) {
|
|
62722
62725
|
existing.push(item);
|
|
62723
62726
|
} else {
|
|
62724
62727
|
grouped.set(dateKey, [item]);
|
|
@@ -71845,11 +71848,11 @@ function extractRouteUpdatedAt(candidate) {
|
|
|
71845
71848
|
}
|
|
71846
71849
|
function resolveRouteTargetForStage(routeIdValue, routes, stageInput) {
|
|
71847
71850
|
const routeId = typeof routeIdValue === "string" ? routeIdValue : null;
|
|
71848
|
-
if (
|
|
71851
|
+
if (routeId === null || routeId.length === 0 || routes === void 0) return null;
|
|
71849
71852
|
const routeEntry = routes[routeId];
|
|
71850
71853
|
if (!isRouteVisibleInStage(routeEntry, stageInput)) return null;
|
|
71851
71854
|
const href = extractRouteHref(routeEntry, stageInput);
|
|
71852
|
-
if (
|
|
71855
|
+
if (href === null) return null;
|
|
71853
71856
|
return {
|
|
71854
71857
|
routeId,
|
|
71855
71858
|
href,
|
|
@@ -95604,7 +95607,7 @@ function parsePath(path) {
|
|
|
95604
95607
|
for (const raw of parts) {
|
|
95605
95608
|
if (!raw) continue;
|
|
95606
95609
|
const baseMatch = raw.match(/^[^\[]+/);
|
|
95607
|
-
if (baseMatch) {
|
|
95610
|
+
if (baseMatch !== null) {
|
|
95608
95611
|
const base2 = baseMatch[1] ?? baseMatch[0];
|
|
95609
95612
|
if (/^\d+$/.test(base2)) {
|
|
95610
95613
|
segments.push(Number(base2));
|
|
@@ -95623,7 +95626,7 @@ function parsePath(path) {
|
|
|
95623
95626
|
segments.push(token);
|
|
95624
95627
|
}
|
|
95625
95628
|
}
|
|
95626
|
-
if (
|
|
95629
|
+
if (baseMatch === null && !raw.includes("[")) {
|
|
95627
95630
|
segments.push(raw);
|
|
95628
95631
|
}
|
|
95629
95632
|
}
|
|
@@ -110834,14 +110837,14 @@ CollapsibleContent.displayName = CONTENT_NAME5;
|
|
|
110834
110837
|
var CollapsibleContentImpl = React61.forwardRef((props2, forwardedRef) => {
|
|
110835
110838
|
const { __scopeCollapsible, present, children, ...contentProps } = props2;
|
|
110836
110839
|
const context = useCollapsibleContext(CONTENT_NAME5, __scopeCollapsible);
|
|
110837
|
-
const [
|
|
110840
|
+
const [isPresent2, setIsPresent] = React61.useState(present);
|
|
110838
110841
|
const ref = React61.useRef(null);
|
|
110839
110842
|
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
110840
110843
|
const heightRef = React61.useRef(0);
|
|
110841
110844
|
const height = heightRef.current;
|
|
110842
110845
|
const widthRef = React61.useRef(0);
|
|
110843
110846
|
const width = widthRef.current;
|
|
110844
|
-
const isOpen = context.open ||
|
|
110847
|
+
const isOpen = context.open || isPresent2;
|
|
110845
110848
|
const isMountAnimationPreventedRef = React61.useRef(isOpen);
|
|
110846
110849
|
const originalStylesRef = React61.useRef(void 0);
|
|
110847
110850
|
React61.useEffect(() => {
|
|
@@ -126912,22 +126915,22 @@ function AltchaWidget({
|
|
|
126912
126915
|
if (typeof window === "undefined") return;
|
|
126913
126916
|
let widget = null;
|
|
126914
126917
|
import('./altcha-EKUEQ4RP.mjs').then(() => {
|
|
126915
|
-
if (
|
|
126918
|
+
if (containerRef.current === null) return;
|
|
126916
126919
|
widget = document.createElement("altcha-widget");
|
|
126917
126920
|
widget.setAttribute("challengeurl", challengeUrl);
|
|
126918
|
-
if (auto) {
|
|
126921
|
+
if (auto === true) {
|
|
126919
126922
|
widget.setAttribute("auto", "onload");
|
|
126920
126923
|
}
|
|
126921
|
-
if (hidelogo) {
|
|
126924
|
+
if (hidelogo === true) {
|
|
126922
126925
|
widget.setAttribute("hidelogo", "true");
|
|
126923
126926
|
}
|
|
126924
126927
|
widget.setAttribute("hidefooter", "true");
|
|
126925
|
-
if (className) {
|
|
126928
|
+
if (className !== void 0 && className.length > 0) {
|
|
126926
126929
|
widget.className = className;
|
|
126927
126930
|
}
|
|
126928
126931
|
widget.addEventListener("statechange", ((event) => {
|
|
126929
126932
|
const { state, payload } = event.detail;
|
|
126930
|
-
if (state === "verified" && payload) {
|
|
126933
|
+
if (state === "verified" && payload !== void 0 && payload.length > 0) {
|
|
126931
126934
|
onSolutionChange?.(payload);
|
|
126932
126935
|
} else if (state === "error" || state === "expired") {
|
|
126933
126936
|
onSolutionChange?.(null);
|
|
@@ -126938,7 +126941,7 @@ function AltchaWidget({
|
|
|
126938
126941
|
console.error("Failed to load ALTCHA widget:", err4);
|
|
126939
126942
|
});
|
|
126940
126943
|
return () => {
|
|
126941
|
-
if (widget && containerRef.current) {
|
|
126944
|
+
if (widget !== null && containerRef.current !== null) {
|
|
126942
126945
|
containerRef.current.removeChild(widget);
|
|
126943
126946
|
}
|
|
126944
126947
|
};
|
|
@@ -126979,15 +126982,15 @@ new TextEncoder();
|
|
|
126979
126982
|
// ../altcha/src/index.ts
|
|
126980
126983
|
function getCmsApiUrl() {
|
|
126981
126984
|
const env = process.env.RIVERBANK_ENV;
|
|
126982
|
-
if (env) {
|
|
126985
|
+
if (env !== void 0 && env.length > 0) {
|
|
126983
126986
|
const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
|
|
126984
126987
|
const dashboardUrl2 = process.env[envKey];
|
|
126985
|
-
if (dashboardUrl2) {
|
|
126988
|
+
if (dashboardUrl2 !== void 0 && dashboardUrl2.length > 0) {
|
|
126986
126989
|
return `${dashboardUrl2.replace(/\/$/, "")}/api`;
|
|
126987
126990
|
}
|
|
126988
126991
|
}
|
|
126989
126992
|
const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
|
|
126990
|
-
if (dashboardUrl) {
|
|
126993
|
+
if (dashboardUrl !== void 0 && dashboardUrl.length > 0) {
|
|
126991
126994
|
return `${dashboardUrl.replace(/\/$/, "")}/api`;
|
|
126992
126995
|
}
|
|
126993
126996
|
throw new Error("Dashboard URL not configured. Set NEXT_PUBLIC_DASHBOARD_URL");
|
|
@@ -149507,6 +149510,15 @@ function fromArray(items) {
|
|
|
149507
149510
|
if (first2 === void 0) return err3("empty_array");
|
|
149508
149511
|
return ok$1([first2, ...rest]);
|
|
149509
149512
|
}
|
|
149513
|
+
function isPresent(value) {
|
|
149514
|
+
return value !== null && value !== void 0;
|
|
149515
|
+
}
|
|
149516
|
+
function isNonEmptyString(value) {
|
|
149517
|
+
return typeof value === "string" && value.length > 0;
|
|
149518
|
+
}
|
|
149519
|
+
function hasText(value) {
|
|
149520
|
+
return isNonEmptyString(value);
|
|
149521
|
+
}
|
|
149510
149522
|
var IMAGE_FILE_FORMATS = [
|
|
149511
149523
|
"jpeg",
|
|
149512
149524
|
"png",
|
|
@@ -149934,14 +149946,14 @@ function assertRelativeStoragePath(value) {
|
|
|
149934
149946
|
}
|
|
149935
149947
|
var pad = (value) => value.toString().padStart(2, "0");
|
|
149936
149948
|
var extractExtension = (filename) => {
|
|
149937
|
-
if (!filename) return "";
|
|
149949
|
+
if (!hasText(filename)) return "";
|
|
149938
149950
|
const lastDot = filename.lastIndexOf(".");
|
|
149939
149951
|
if (lastDot === -1) return "";
|
|
149940
149952
|
return filename.slice(lastDot).toLowerCase();
|
|
149941
149953
|
};
|
|
149942
149954
|
var generateId4 = () => {
|
|
149943
149955
|
const crypto2 = globalThis.crypto;
|
|
149944
|
-
if (crypto2 && typeof crypto2.getRandomValues === "function") {
|
|
149956
|
+
if (isPresent(crypto2) && typeof crypto2.getRandomValues === "function") {
|
|
149945
149957
|
const array = crypto2.getRandomValues(/* @__PURE__ */ new Uint32Array(4));
|
|
149946
149958
|
return Array.from(array).map((value) => value.toString(16).padStart(8, "0")).join("-");
|
|
149947
149959
|
}
|
|
@@ -157591,9 +157603,9 @@ var DEFAULT_MESSAGES = {
|
|
|
157591
157603
|
function isRecord22(value) {
|
|
157592
157604
|
return typeof value === "object" && value !== null;
|
|
157593
157605
|
}
|
|
157594
|
-
var normalizeLabels = (labels) => labels && labels.length ? labels.map((label) => label.trim()).filter(
|
|
157606
|
+
var normalizeLabels = (labels) => labels !== void 0 && labels.length > 0 ? labels.map((label) => label.trim()).filter((label) => label.length > 0).join(",") : void 0;
|
|
157595
157607
|
var fileFilterForMediaKinds = (mediaKinds) => {
|
|
157596
|
-
if (
|
|
157608
|
+
if (mediaKinds === void 0 || mediaKinds.length !== 1) return void 0;
|
|
157597
157609
|
const [mediaKind] = mediaKinds;
|
|
157598
157610
|
if (mediaKind === void 0) return void 0;
|
|
157599
157611
|
switch (mediaKind) {
|
|
@@ -157750,7 +157762,7 @@ function createCachedMediaRepo(baseRepo, options) {
|
|
|
157750
157762
|
}
|
|
157751
157763
|
function readCache(key, cache) {
|
|
157752
157764
|
const entry = cache.get(key);
|
|
157753
|
-
if (
|
|
157765
|
+
if (entry === void 0) return null;
|
|
157754
157766
|
if (entry.expiresAt <= Date.now()) {
|
|
157755
157767
|
cache.delete(key);
|
|
157756
157768
|
return null;
|
|
@@ -157772,10 +157784,10 @@ function createCachedMediaRepo(baseRepo, options) {
|
|
|
157772
157784
|
async getAsset(assetId) {
|
|
157773
157785
|
const cacheKey = `asset:${assetId}`;
|
|
157774
157786
|
const entry = globalAssetCache.get(cacheKey);
|
|
157775
|
-
if (entry) if (entry.expiresAt > Date.now()) return entry.data;
|
|
157787
|
+
if (entry !== void 0) if (entry.expiresAt > Date.now()) return entry.data;
|
|
157776
157788
|
else globalAssetCache.delete(cacheKey);
|
|
157777
157789
|
const inflightRequest = globalAssetInflightRequests.get(assetId);
|
|
157778
|
-
if (inflightRequest) return inflightRequest;
|
|
157790
|
+
if (inflightRequest !== void 0) return inflightRequest;
|
|
157779
157791
|
const fetchPromise = baseRepo.getAsset(assetId).then((result) => {
|
|
157780
157792
|
writeCache(cacheKey, result, globalAssetCache);
|
|
157781
157793
|
globalAssetInflightRequests.delete(assetId);
|
|
@@ -157790,7 +157802,7 @@ function createCachedMediaRepo(baseRepo, options) {
|
|
|
157790
157802
|
async listAssets(options2) {
|
|
157791
157803
|
const cacheKey = buildCacheKey(options2);
|
|
157792
157804
|
const cached = readCache(cacheKey, globalListCache);
|
|
157793
|
-
if (cached) return cached;
|
|
157805
|
+
if (cached !== null) return cached;
|
|
157794
157806
|
const result = await baseRepo.listAssets(options2);
|
|
157795
157807
|
writeCache(cacheKey, result, globalListCache);
|
|
157796
157808
|
return result;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-
|
|
3
|
-
import { PreviewBlockCustomizeSelectionProvider, resolveSiteStyleAccess, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, usePreviewBlockCustomizeSelectionOptional, useBlockCustomizeControls, MAX_CUSTOMIZE_POPOVER_ROWS, MAX_QUICK_MANIFEST_FIELDS, OfferingsPreviewWidgetProvider, previewWidgetOverrides, sanitizeDashboardPath } from './chunk-
|
|
4
|
-
import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState } from './chunk-
|
|
5
|
-
import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, SiteChromeCustomizeProvider, ResizableSplitPane, BlockApiProvider, EditorProvider, PreviewDesignHistoryOrderProvider, MediaEditorProvider, useEditorUiStoreInstance, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, surfaceResolutionContextFromTheme, designRuntimeRulesForTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, usePreviewThemeOverlay, planSiteDocument, assertNever, ResponsiveScope, ThemeScope, FixedBottomSurface, Button, unsafeAsLinkedContentEntryId, sectionTransitionVariantForBoundaryOptionId, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionFamilies, X, defaultSectionTransitionVariantForFamily, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, canCycleBackgroundOverrideValue, FormRenderer, stableSerialize, prefetchBlockData, isSupportedLoaderEndpoint, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, backgroundColorTokens, ChevronLeft, ChevronRight, createMicrobatcher, unwrapResponse, normalizePublicApiLoaderParams, visibleHeaderClearancePx, LINKED_CONTENT_ENTRY_META_KEY, useMediaEditorOptional, Image, defaultBackgroundOverrideForMode, decodePublicProductCategorySelectorQuery, EDITABLE_SURFACE_FORWARDING_PROP, useSiteChromeCustomizeOptional, SITE_CHROME_VISIBLE_HEADER_SELECTOR, getLinkedContentEntryMeta, GRADIENT_PRESETS, resolveImageUrlWithContext, gradientToCss, Upload, MediaEditor, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, parseMediaAssetId, formatSiteChromeBackgroundTokenLabel, planBackgroundOverride, planBackgroundTransition, systemCustomizeFacetNextValue } from './chunk-
|
|
6
|
-
import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken } from './chunk-
|
|
2
|
+
import { useOptionalPreviewLayout, PreviewQueryProvider } from './chunk-U5YM4AWE.mjs';
|
|
3
|
+
import { PreviewBlockCustomizeSelectionProvider, resolveSiteStyleAccess, resolvePreviewDashboardSetupHandoff, buildPreviewDashboardSetupUrl, resolvePreviewSetupBannerModel, usePreviewBlockCustomizeSelectionOptional, useBlockCustomizeControls, MAX_CUSTOMIZE_POPOVER_ROWS, MAX_QUICK_MANIFEST_FIELDS, OfferingsPreviewWidgetProvider, previewWidgetOverrides, sanitizeDashboardPath } from './chunk-GDT2QGIL.mjs';
|
|
4
|
+
import { resolvePreviewChromeSurface, getPreviewSidebarTab, onPreviewSidebarOpenRequest, getPreviewChromeSurfaceDataProps, PREVIEW_CHROME_THEME_CLASS_NAME, setPreviewSidebarTab, PreviewPageDesignEditorStateProvider, usePreviewPageDesignEditorState } from './chunk-AFPMCLS7.mjs';
|
|
5
|
+
import { clientComponentRegistry, deriveLaunchReadiness, DEFAULT_LAUNCH_READINESS_INPUT, useEditorUiStore, PreviewThemeOverlayProvider, PreviewDesignCoordinatorProvider, SiteChromeCustomizeProvider, ResizableSplitPane, BlockApiProvider, EditorProvider, PreviewDesignHistoryOrderProvider, MediaEditorProvider, useEditorUiStoreInstance, useEditor, createRoutingHelpers, createSnapshotFromPageRecord, EntryControllerProvider, useEntryEditorController, surfaceResolutionContextFromTheme, designRuntimeRulesForTheme, unsafeAsEditorBlockId, EditableBlockProvider, asDesignBlockId, PageRenderer, usePreviewThemeOverlay, planSiteDocument, assertNever, ResponsiveScope, ThemeScope, FixedBottomSurface, Button, unsafeAsLinkedContentEntryId, sectionTransitionVariantForBoundaryOptionId, sectionTransitionFamilyForBoundaryOptionId, sectionTransitionFamilies, X, defaultSectionTransitionVariantForFamily, RotateCcw, parseBackgroundOverrideFromContent, rankBackgroundImagePoolItems, imagePoolForOverride, resolveBackgroundCapability, enabledBackgroundModes, canCycleBackgroundOverrideValue, FormRenderer, stableSerialize, prefetchBlockData, isSupportedLoaderEndpoint, PreviewRichTextEditor, RichText, PreviewTextEditor, Text, buildThemeRuntime, renderBlock, siteHeaderManifest, siteFooterManifest, SiteDocumentLayout, SITE_CHROME_CLASS_NAMES, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, buildEditorModelRuntimeFieldsByBlockId, applyCompiledRuntimeFieldsToContent, assertNever2, getBlockDefinition, systemCustomizeFacetDefinitionsForBlock, systemCustomizeFacetAppliesToLayoutVariant, systemCustomizeFacetCurrentValue, systemCustomizeFacetLabelForValue, backgroundColorTokens, ChevronLeft, ChevronRight, createMicrobatcher, unwrapResponse, normalizePublicApiLoaderParams, visibleHeaderClearancePx, LINKED_CONTENT_ENTRY_META_KEY, useMediaEditorOptional, Image, defaultBackgroundOverrideForMode, decodePublicProductCategorySelectorQuery, EDITABLE_SURFACE_FORWARDING_PROP, useSiteChromeCustomizeOptional, SITE_CHROME_VISIBLE_HEADER_SELECTOR, getLinkedContentEntryMeta, GRADIENT_PRESETS, resolveImageUrlWithContext, gradientToCss, Upload, MediaEditor, SECTION_BACKGROUND_MIN_SOURCE_WIDTH, SECTION_BACKGROUND_MIN_SOURCE_HEIGHT, parseMediaAssetId, formatSiteChromeBackgroundTokenLabel, planBackgroundOverride, planBackgroundTransition, systemCustomizeFacetNextValue } from './chunk-RQUZYSES.mjs';
|
|
6
|
+
import { API_ENDPOINTS, createBearerAPIClient, isPreviewRuntimeSessionEditable, DEFAULT_SURFACE_ID, initPreviewAuth, usePreviewAuth, usePreviewAuthFetch, markPreviewAuthExpired, usePreviewToken } from './chunk-ZA2S7H34.mjs';
|
|
7
7
|
import React9, { createContext, useMemo, useState, useEffect, useRef, useCallback, useId, useReducer, Children, isValidElement, Fragment as Fragment$1, cloneElement, useContext } from 'react';
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
import { createPortal } from 'react-dom';
|
|
@@ -4758,11 +4758,11 @@ function LinkedEntryEditEventBridge() {
|
|
|
4758
4758
|
}
|
|
4759
4759
|
var previewContainerResponsiveEnabled = process.env.NEXT_PUBLIC_ENABLE_PREVIEW_CONTAINER_RESPONSIVE !== "false";
|
|
4760
4760
|
var PreviewEditorSidebar = React9.lazy(async () => {
|
|
4761
|
-
const mod = await import('./PreviewEditorSidebar-
|
|
4761
|
+
const mod = await import('./PreviewEditorSidebar-3TT47WCF.mjs');
|
|
4762
4762
|
return { default: mod.PreviewEditorSidebar };
|
|
4763
4763
|
});
|
|
4764
4764
|
var PreviewEditorUI = React9.lazy(async () => {
|
|
4765
|
-
const mod = await import('./PreviewEditorUI-
|
|
4765
|
+
const mod = await import('./PreviewEditorUI-ORCLLUNZ.mjs');
|
|
4766
4766
|
return { default: mod.PreviewEditorUI };
|
|
4767
4767
|
});
|
|
4768
4768
|
var previewPaneContainmentStyle = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { ApiRequestError, markPreviewAuthExpired } from './chunk-
|
|
2
|
+
import { ApiRequestError, markPreviewAuthExpired } from './chunk-ZA2S7H34.mjs';
|
|
3
3
|
import { createContext, useContext, useRef } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
5
5
|
import { QueryClient, MutationCache, QueryCache, QueryClientProvider } from '@tanstack/react-query';
|
|
@@ -61,9 +61,9 @@ function matchSurfaceRootHost(host) {
|
|
|
61
61
|
return matchSurfaceHost(host, SURFACE_ROOT_HOSTS);
|
|
62
62
|
}
|
|
63
63
|
function resolveSurfaceHostContext(value) {
|
|
64
|
-
if (
|
|
64
|
+
if (value === null || value === void 0 || typeof value === "string" && value.length === 0) return null;
|
|
65
65
|
const normalizedHost = normalizeHostLike(value instanceof URL ? value.toString() : value);
|
|
66
|
-
if (
|
|
66
|
+
if (normalizedHost === null) return null;
|
|
67
67
|
return matchSurfaceRootHost(normalizedHost);
|
|
68
68
|
}
|
|
69
69
|
function rewriteOriginHost(input) {
|
|
@@ -77,7 +77,7 @@ function rewriteOriginHost(input) {
|
|
|
77
77
|
}
|
|
78
78
|
function buildSurfaceAwareDashboardOriginForSurfaceId(input) {
|
|
79
79
|
const dashboardContext = resolveSurfaceHostContext(input.dashboardOrigin);
|
|
80
|
-
if (
|
|
80
|
+
if (dashboardContext === null) return null;
|
|
81
81
|
const targetRootHost = SURFACE_ROOT_HOSTS[input.surfaceId][dashboardContext.tier];
|
|
82
82
|
return rewriteOriginHost({
|
|
83
83
|
origin: input.dashboardOrigin,
|