@orangelogic/design-system 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/library/chunks/{asset-link-format.O2It93rl.js → asset-link-format.SaFYESLe.js} +1140 -992
  2. package/library/chunks/{color-swatch-group.CTcv62MK.js → color-swatch-group.Bu1ev_Af.js} +2 -2
  3. package/library/chunks/{document-viewer.D6PxGcEL.js → document-viewer.hfxnrrUV.js} +3 -3
  4. package/library/chunks/{image.B-4cVbol.js → image.ysU1iW6e.js} +1 -1
  5. package/library/chunks/{menu-item.DgUMVYe5.js → menu-item.uFqeX_J6.js} +12 -12
  6. package/library/chunks/{tab-group.BSl6GdIO.js → tab-group.CdTSrsM1.js} +1 -1
  7. package/library/chunks/transformation.BfIEi4p4.js +300 -0
  8. package/library/components/asset-link-format.js +2 -2
  9. package/library/components/atoms.js +4 -4
  10. package/library/components/color-swatch-group.js +1 -1
  11. package/library/components/cropper.js +1 -1
  12. package/library/components/document-viewer.js +2 -2
  13. package/library/components/file-on-demand.js +1 -1
  14. package/library/components/image.js +1 -1
  15. package/library/components/masonry.js +65 -49
  16. package/library/components/menu-item.js +1 -1
  17. package/library/components/menu-section.js +16 -13
  18. package/library/components/menu.js +1 -1
  19. package/library/components/organisms.js +2 -2
  20. package/library/components/tab-group.js +2 -2
  21. package/library/components/types.js +12386 -12220
  22. package/library/components/video.js +1 -1
  23. package/library/package.json +1 -1
  24. package/library/packages/atoms/src/components/image/image.d.ts +6 -0
  25. package/library/packages/atoms/src/components/menu-section/menu-section.d.ts +1 -0
  26. package/library/packages/events/src/cx-asset-transformation-dialog-confirm.d.ts +2 -0
  27. package/library/packages/molecules/src/cropper/cropper.d.ts +0 -1
  28. package/library/packages/molecules/src/cropper/react/Cropper.d.ts +0 -1
  29. package/library/packages/molecules/src/masonry/masonry.d.ts +15 -0
  30. package/library/packages/molecules/src/view-and-sort/view-and-sort.d.ts +2 -0
  31. package/library/packages/organisms/src/asset-link-format/asset-link-format.d.ts +46 -2
  32. package/library/packages/organisms/src/asset-link-format/components/asset-link-format-proxy/asset-link-format-proxy.d.ts +36 -1
  33. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.d.ts +20 -2
  34. package/library/packages/organisms/src/bento-grid/bento-grid.d.ts +13 -0
  35. package/library/packages/organisms/src/carousel/carousel.d.ts +13 -0
  36. package/library/packages/organisms/src/content-builder/blocks/image/image.d.ts +54 -0
  37. package/library/packages/organisms/src/content-builder/blocks/video/video.d.ts +5 -0
  38. package/library/packages/organisms/src/content-builder/components/config-form/config-form.d.ts +2 -1
  39. package/library/packages/organisms/src/content-builder/components/gallery-picker/gallery-picker.d.ts +6 -0
  40. package/library/packages/organisms/src/content-builder/configs/carousel.d.ts +1 -0
  41. package/library/packages/organisms/src/content-builder/configs/gallery.d.ts +1 -0
  42. package/library/packages/organisms/src/content-builder/configs/image.d.ts +2 -0
  43. package/library/packages/organisms/src/content-builder/configs/timeline.d.ts +1 -0
  44. package/library/packages/organisms/src/content-builder/configs/video.d.ts +1 -0
  45. package/library/packages/organisms/src/content-builder/configs-controller.d.ts +10 -0
  46. package/library/packages/organisms/src/content-builder/styleController.d.ts +2 -0
  47. package/library/packages/tools/src/fetch-image/fetch-image.d.ts +28 -5
  48. package/library/packages/types/src/asset-link-format.d.ts +0 -1
  49. package/library/packages/types/src/content-builder.d.ts +7 -0
  50. package/library/packages/types/src/gallery-item.d.ts +1 -0
  51. package/library/packages/types/src/masonry.d.ts +1 -0
  52. package/library/packages/utils/src/transformation/transformation.d.ts +42 -3
  53. package/library/react-web-component.d.ts +51 -7
  54. package/library/utils.js +113 -109
  55. package/package.json +1 -1
  56. package/library/chunks/transformation.CWKaoGaY.js +0 -254
@@ -28,46 +28,69 @@ export declare class FetchImageController implements ReactiveController {
28
28
  constructor(host: ReactiveElement, options?: FetchImageControllerOptions);
29
29
  get totalDataCount(): number;
30
30
  setSecurityByPassToken(token: string | undefined): void;
31
- fetchImages({ end, extraFields, format, start, transformations, }: {
31
+ /**
32
+ * Changes how many items each request asks for.
33
+ *
34
+ * A new size moves every page boundary, so cached pages are dropped and the next fetch
35
+ * starts from page 1. `data` is kept — it is indexed absolutely, so the refetch
36
+ * overwrites in place instead of blanking the grid.
37
+ *
38
+ * Shrinking is ignored once pages are cached: collapsing already has what it needs.
39
+ */
40
+ setPageSize(pageSize: number): void;
41
+ fetchImages({ end, extraFields, format, manualFormat, start, transformations, }: {
32
42
  end: number;
33
43
  extraFields: string[];
34
44
  format?: string;
45
+ /**
46
+ * When false, `format` is ignored and each item resolves its own from its file
47
+ * extension. Defaults to true so existing callers keep their explicit format.
48
+ */
49
+ manualFormat?: boolean;
35
50
  start: number;
36
51
  transformations?: Transformation[];
37
52
  }): Promise<ExtendedGalleryItem[] | undefined>;
38
- fetchImagesInFolderBySlide({ activeSlide, extraFields, folderId, forceRefetch, format, minLimit, noPlaceholders, transformations, }: {
53
+ fetchImagesInFolderBySlide({ activeSlide, extraFields, folderId, forceRefetch, format, manualFormat, minLimit, noPlaceholders, transformations, }: {
39
54
  activeSlide: number;
40
55
  extraFields?: string[];
41
56
  folderId: string;
42
57
  forceRefetch?: boolean;
43
58
  format?: string;
59
+ manualFormat?: boolean;
44
60
  minLimit?: number;
45
61
  noPlaceholders?: boolean;
46
62
  transformations?: Transformation[];
47
63
  }): Promise<ExtendedGalleryItem[]>;
48
- fetchImagesByIDs({ extraFields, format, recordIds, transformations, }: {
64
+ fetchImagesByIDs({ extraFields, format, manualFormat, recordIds, transformations, }: {
49
65
  extraFields?: string[];
50
66
  format?: string;
67
+ /**
68
+ * When false, `format` is ignored and each item resolves its own from its file
69
+ * extension. Defaults to true so existing callers keep their explicit format.
70
+ */
71
+ manualFormat?: boolean;
51
72
  recordIds: string[];
52
73
  transformations?: Transformation[];
53
74
  }): Promise<ExtendedGalleryItem[]>;
54
- fetchImagesInFolderByPage({ extraFields, folderId, forceRefetch, format, noPlaceholders, page, pageSize, transformations, }: {
75
+ fetchImagesInFolderByPage({ extraFields, folderId, forceRefetch, format, manualFormat, noPlaceholders, page, pageSize, transformations, }: {
55
76
  extraFields?: string[];
56
77
  folderId: string;
57
78
  forceRefetch?: boolean;
58
79
  format?: string;
80
+ manualFormat?: boolean;
59
81
  noPlaceholders?: boolean;
60
82
  page: number;
61
83
  pageSize?: number;
62
84
  transformations?: Transformation[];
63
85
  }): Promise<ExtendedGalleryItem[]>;
64
- fetchImagesInFolderByChunk({ chunkSize: rawChunkSize, end, extraFields, folderId, forceRefetch, format, start, transformations, }: {
86
+ fetchImagesInFolderByChunk({ chunkSize: rawChunkSize, end, extraFields, folderId, forceRefetch, format, manualFormat, start, transformations, }: {
65
87
  chunkSize?: number;
66
88
  end?: number;
67
89
  extraFields?: string[];
68
90
  folderId: string;
69
91
  forceRefetch?: boolean;
70
92
  format?: string;
93
+ manualFormat?: boolean;
71
94
  start?: number;
72
95
  transformations?: Transformation[];
73
96
  }): AsyncGenerator<ExtendedGalleryItem[], void, unknown>;
@@ -58,7 +58,6 @@ export type Asset = {
58
58
  identifier: string;
59
59
  imageUrl: string;
60
60
  name: string;
61
- originalUrl: string;
62
61
  scrubUrl: string;
63
62
  size: string;
64
63
  tags: string;
@@ -64,6 +64,11 @@ export type PropertyConfig<T = Record<string, any>> = Omit<TraitProperties, 'opt
64
64
  defaultFormat?: string;
65
65
  dialogLabel?: string;
66
66
  formatKey?: string;
67
+ /**
68
+ * The block-attribute key that records whether the format was picked by hand. When
69
+ * absent or false the format follows the asset's file extension.
70
+ */
71
+ manualFormatKey?: string;
67
72
  multiple?: boolean;
68
73
  noCrop?: boolean;
69
74
  noResize?: boolean;
@@ -114,6 +119,8 @@ export type PropertyConfig<T = Record<string, any>> = Omit<TraitProperties, 'opt
114
119
  dialog: DialogType;
115
120
  /** The block-attribute key for the format used to resolve records' src URLs after picking. */
116
121
  formatKey?: string;
122
+ /** The block-attribute key recording whether that format was picked by hand. */
123
+ manualFormatKey?: string;
117
124
  transformationRecordIdKey?: string;
118
125
  transformationsKey?: string;
119
126
  };
@@ -25,6 +25,7 @@ export type GalleryItem = {
25
25
  className?: string;
26
26
  details?: string;
27
27
  docType?: MediaType | '';
28
+ extension?: string;
28
29
  filler?: boolean;
29
30
  header?: string;
30
31
  id: string;
@@ -6,6 +6,7 @@ export declare enum MasonryVariant {
6
6
  }
7
7
  export type MasonryItem = {
8
8
  alt?: string;
9
+ extension?: string;
9
10
  hasError?: boolean;
10
11
  id: string;
11
12
  loading?: boolean;
@@ -46,6 +46,42 @@ export declare function applyWidthToAssetUrl(url: string, width: number): string
46
46
  * crop or proxy format), so a ladder must not add a competing one.
47
47
  */
48
48
  export declare function hasTransformSegment(url: string): boolean;
49
+ /** Proxy format that is always transcoded to a raster image, whatever the source file is. */
50
+ export declare const AUTO_FALLBACK_FORMAT = "TR1";
51
+ /**
52
+ * Largest original file `Auto` will serve untouched, in bytes.
53
+ *
54
+ * Past this the transcoded proxy wins even for extensions that would normally keep their
55
+ * original: delivering a very large original costs the viewer more than the animation or
56
+ * alpha it preserves.
57
+ */
58
+ export declare const AUTO_ORIGINAL_FORMAT_MAX_BYTES: number;
59
+ /**
60
+ * Reads an asset file size into bytes, or `undefined` when the value says nothing usable.
61
+ *
62
+ * `CoreField.FileSize` is typed as a string and has been observed both as a plain byte
63
+ * count (`'1024'`) and as a formatted value (`'63.47 KB'`), so both are accepted. A bare
64
+ * number is read as bytes, matching the raw form.
65
+ *
66
+ * Returns `undefined` rather than `0` for unusable input so callers can tell "no size
67
+ * reported" apart from "genuinely empty file" — the two lead to different decisions.
68
+ */
69
+ export declare function parseFileSizeToBytes(size: string | number | null | undefined): number | undefined;
70
+ /**
71
+ * Picks the proxy format an asset should be served under when the author chose `Auto`
72
+ * instead of naming a format.
73
+ *
74
+ * Extensions that would lose something to a transcode (animation, alpha, bit depth) take
75
+ * the original-file proxy, but only up to `AUTO_ORIGINAL_FORMAT_MAX_BYTES`; everything
76
+ * else takes the transcoded raster proxy, which is the one `buildAssetSrcset` may resize.
77
+ *
78
+ * An unknown or missing extension resolves to the raster proxy — the safe default for the
79
+ * majority of assets, and the same value the format ladders already fall back to.
80
+ *
81
+ * An unknown *size* does not: a size the API did not report is treated as within the
82
+ * limit, so a missing field never silently strips a GIF of its animation.
83
+ */
84
+ export declare function resolveAutoFormat(extension: string | null | undefined, size?: string | number | null): string;
49
85
  /**
50
86
  * Builds a `srcset` value for an asset-link URL by emitting one width-only resize
51
87
  * candidate per ladder entry, letting the browser fetch and decode only the pixels
@@ -56,11 +92,14 @@ export declare function hasTransformSegment(url: string): boolean;
56
92
  * ladder, the smallest candidate is still emitted so a `srcset` is always produced
57
93
  * for an eligible URL.
58
94
  *
59
- * Returns an empty string when the URL is not an asset link, or when it already carries
60
- * a transformation — signalling the caller to omit the attribute and honour the width
61
- * that was configured upstream.
95
+ * Returns an empty string when the URL is not an asset link, when it already carries
96
+ * a transformation (the width was configured upstream), or when it is an animated GIF
97
+ * served as the original file — resizing that flattens it to a still frame, so the
98
+ * original has to be delivered untouched.
62
99
  */
63
100
  export declare function buildAssetSrcset(url: string, options?: {
101
+ extension?: string | null;
102
+ format?: string;
64
103
  maxWidth?: number;
65
104
  widths?: readonly number[];
66
105
  }): string;
@@ -22,19 +22,19 @@
22
22
  export type CxGraphViewNodeAction = { controlType: 'default' | 'switch'; icon: string; id: string; name: string; showDivider: boolean; style: { color: string; }; };
23
23
  export type CxGraphViewRecord = any;
24
24
  export type CxGraphViewSummary = { icon: string; texts: string[]; };
25
- export type CxMasonryMasonryItem = { alt: string; hasError: boolean; id: string; loading: boolean; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; src: string; };
25
+ export type CxMasonryMasonryItem = { alt: string; extension: string; hasError: boolean; id: string; loading: boolean; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; src: string; };
26
26
  export type CxMasonryMasonryItemAction = { color: string; event: string; icon: string; src: string; tooltip: string; };
27
27
  export type CxMentionsAutocompleteItem = { id: string; label: string; name: string; suffixContent: string; suffixIcon: string; suffixTooltip: string; suffixType: 'badge'; title: string; type: string; };
28
28
  export type CxMultiSelectColumnData = { id: string; items: { disabled: boolean; group: string; id: string; index: string; text: string; tooltip: string; type: string; }[]; sort: boolean; title: string; };
29
29
  export type CxShareOptionListShareOptionListItem = { disabled: boolean; icon: string; id: string; name: string; tooltip: string; };
30
30
  export type CxStepperWizardStepData = { color: string; description: string; icon: string; iconVariant: 'outlined' | 'filled' | 'fa'; id: string; name: string; readonly: boolean; state: 'Done' | 'Active' | 'None' | 'Disabled'; };
31
- export type CxAssetLinkFormatAsset = { allowATSLink: boolean; docSubType: string; docType: 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; height: string; id: string; identifier: string; imageUrl: string; name: string; originalUrl: string; scrubUrl: string; size: string; tags: string; width: string; };
31
+ export type CxAssetLinkFormatAsset = { allowATSLink: boolean; docSubType: string; docType: 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; height: string; id: string; identifier: string; imageUrl: string; name: string; scrubUrl: string; size: string; tags: string; width: string; };
32
32
  export type CxAssetLinkFormatCropMode = { auto: boolean; disabledSize: boolean; label: string; value: string; };
33
33
  export type CxAssetLinkFormatFocusMode = { auto: boolean; label: string; value: string; };
34
34
  export type CxAssetLinkFormatProxy = { cdnName: string; extension: string; formatHeight: number; formatWidth: number; height: number; id: string; permanentLink: string; proxyLabel: string; proxyName: string; width: number; };
35
35
  export type CxAssetLinkFormatTransformation = { key: 'Crop' | 'Metadata' | 'Proxy' | 'Quality' | 'Resize' | 'Rotate'; value: { disabledSize: boolean; focusMode: string; height: number; isFocusModeAuto: boolean; keepMetadata: boolean; mode: string; position: 'bottom-center' | 'bottom-left' | 'bottom-right' | 'center-center' | 'center-left' | 'center-right' | 'top-center' | 'top-left' | 'top-right'; quality: number; ratioHeight: number; ratioWidth: number; rotation: number; unit: '%' | 'px'; width: number; x: number; y: number; }; };
36
- export type CxBentoGridGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
37
- export type CxCarouselGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
36
+ export type CxBentoGridGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
37
+ export type CxCarouselGalleryItem = { additions: string[]; alt: string; cardType: 'asset' | 'folder' | 'link' | 'page' | 'space'; className: string; details: string; docType: '' | 'Album' | 'Audio' | 'Audio segment' | 'Image' | 'Multimedia' | 'ProjectDocument' | 'Story' | 'Video' | 'Widget'; extension: string; filler: boolean; header: string; id: string; isClone: boolean; name: string; objectFit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'; openInNewTab: boolean; pageId: string; rawId: string; size: string; src: string; url: string; };
38
38
  export type CxChatbotChatbotEvent = { event: string; excludedFromPurposes: string[]; label: string; };
39
39
  export type CxTableTimeFormatterParams = { color: string; fontSize: string; fontWeight: string; inputUnit: string; locale: string; placeholder: string; style: dictionary; unitsFormat: string; displayStyle: string; paramsMapField: string; paramsMap: dictionary; };
40
40
  export type CxTableTextFormatParams = { colorMap: dictionary; color: string; };
@@ -2572,7 +2572,7 @@
2572
2572
  */
2573
2573
  retryOnError?: boolean;
2574
2574
  /**
2575
- * Maximum number of retry attempts when `retry-on-error` is enabled.
2575
+ * Maximum number of retry attempts when `retry-on-error` is enabled. <br/> Set high enough to outlast a transient backend overload: a page full of images can push the transform service into 503s, and those images need to keep retrying until it recovers rather than falling back to a broken-image icon. The backoff is exponential and capped at 10s per attempt, so the attempts spread out instead of adding to the load.
2576
2576
  */
2577
2577
  maxRetries?: number;
2578
2578
  /**
@@ -5648,7 +5648,7 @@
5648
5648
  /**
5649
5649
  *
5650
5650
  */
5651
- image?: { extension: string; height: number; originalUrl: string; rotation: number; url: string; width: number; x: number; y: number; };
5651
+ image?: { extension: string; height: number; rotation: number; url: string; width: number; x: number; y: number; };
5652
5652
  /**
5653
5653
  *
5654
5654
  */
@@ -6774,7 +6774,15 @@
6774
6774
  /**
6775
6775
  * The key to use for the id of the items in the masonry layout.
6776
6776
  */
6777
- idKey?: 'src' | 'loading' | 'alt' | 'hasError' | 'id' | 'objectFit';
6777
+ idKey?: 'src' | 'extension' | 'loading' | 'alt' | 'hasError' | 'id' | 'objectFit';
6778
+ /**
6779
+ * The proxy format the item images were resolved with. <br/> Only used to decide whether a `srcset` may be generated: an original-file format paired with an animated source must be delivered untouched.
6780
+ */
6781
+ format?: string;
6782
+ /**
6783
+ * Whether `format` was picked by hand. When false each item's format follows its own file extension instead, so a mixed list can serve animated originals and resizable raster proxies side by side.
6784
+ */
6785
+ manualFormat?: boolean;
6778
6786
  /**
6779
6787
  * When true, forwards `no-crossorigin` to each inner `cx-image`, disabling CORS mode (e.g. in Site Builder contexts where CORS headers are absent).
6780
6788
  */
@@ -7879,6 +7887,14 @@
7879
7887
  * The ID of the default proxy format. This is a string that represents the ID of the selected proxy format from the list of available proxies.
7880
7888
  */
7881
7889
  defaultProxy?: string;
7890
+ /**
7891
+ * Whether the format listbox offers an `Auto` entry, which derives the proxy from the asset's file extension instead of the author naming one.
7892
+ */
7893
+ canAutoFormat?: boolean;
7894
+ /**
7895
+ * Whether `Auto` is the current choice. <br/> Tracked next to `selectedProxy` rather than encoded into it, so `selectedProxy` stays a real proxy id for every consumer that reads it — only the origin of that id differs.
7896
+ */
7897
+ autoFormat?: boolean;
7882
7898
  /**
7883
7899
  *
7884
7900
  */
@@ -7961,6 +7977,10 @@
7961
7977
  * The default format to fall back to if the asset has no transformations or selected proxy.
7962
7978
  */
7963
7979
  defaultFormat?: string;
7980
+ /**
7981
+ * Whether the author picked the format by hand rather than letting it follow the asset's file extension. `false` (the default) means `Auto`.
7982
+ */
7983
+ manualFormat?: boolean;
7964
7984
  /**
7965
7985
  * Optional label rendered as the dialog title. Falls back to the localized "Asset format" term.
7966
7986
  */
@@ -8051,6 +8071,14 @@
8051
8071
  * Total number of items in the dataset, including those not yet loaded. When set, the scroll container height is extended to reflect the full dataset size so the scrollbar is accurate from the first render. Unloaded slots are approximated as 1×1 items.
8052
8072
  */
8053
8073
  totalItems?: number;
8074
+ /**
8075
+ * The proxy format the item images were resolved with. <br/> Only used to decide whether a `srcset` may be generated: an original-file format paired with an animated source must be delivered untouched.
8076
+ */
8077
+ format?: string;
8078
+ /**
8079
+ * Whether `format` was picked by hand. When false each item's format follows its own file extension instead, so a mixed grid can serve animated originals and resizable raster proxies side by side.
8080
+ */
8081
+ manualFormat?: boolean;
8054
8082
  /**
8055
8083
  * Delay in milliseconds between releasing one row of images and the next. <br/> Images are held back until their row is released, so the browser opens roughly one row's worth of requests at a time instead of one per rendered item. Each transform URL is an uncached backend render, and enough of them in parallel returns 503. <br/> A row also waits for the previous row's images to finish (capped by `ROW_RELEASE_TIMEOUT`), so this is the floor between releases rather than the exact cadence. Set to `0` to disable gating and let every rendered row load immediately.
8056
8084
  */
@@ -8211,6 +8239,14 @@
8211
8239
  * The real total number of data in the carousel. Not affected by chunking.
8212
8240
  */
8213
8241
  totalData?: number;
8242
+ /**
8243
+ * The proxy format the slide images were resolved with. <br/> Only used to decide whether a `srcset` may be generated: an original-file format paired with an animated source must be delivered untouched.
8244
+ */
8245
+ format?: string;
8246
+ /**
8247
+ * Whether `format` was picked by hand. When false each slide's format follows its own file extension instead, so a mixed carousel can serve animated originals and resizable raster proxies side by side.
8248
+ */
8249
+ manualFormat?: boolean;
8214
8250
  /**
8215
8251
  * When set, allows the user to navigate the carousel in the same direction indefinitely.
8216
8252
  */
@@ -9609,6 +9645,10 @@
9609
9645
  * Asset transformation proxy format key.
9610
9646
  */
9611
9647
  format?: string;
9648
+ /**
9649
+ * Whether `format` was picked by hand. When false each card's format follows its own file extension instead.
9650
+ */
9651
+ manualFormat?: boolean;
9612
9652
  /**
9613
9653
  * Asset transformations applied to the image.
9614
9654
  */
@@ -9735,6 +9775,10 @@
9735
9775
  * Asset transformation proxy format key.
9736
9776
  */
9737
9777
  format?: string;
9778
+ /**
9779
+ * Whether `format` was picked by hand. When false each item's format follows its own file extension instead.
9780
+ */
9781
+ manualFormat?: boolean;
9738
9782
  /**
9739
9783
  * Asset transformations applied to the image.
9740
9784
  */