@orangelogic/design-system 3.3.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 (58) hide show
  1. package/library/chunks/{asset-link-format.BnIUG_vO.js → asset-link-format.SaFYESLe.js} +1148 -1001
  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 +22307 -22153
  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/asset-picker/asset-picker.d.ts +20 -1
  28. package/library/packages/molecules/src/cropper/cropper.d.ts +0 -1
  29. package/library/packages/molecules/src/cropper/react/Cropper.d.ts +0 -1
  30. package/library/packages/molecules/src/masonry/masonry.d.ts +15 -0
  31. package/library/packages/molecules/src/view-and-sort/view-and-sort.d.ts +2 -0
  32. package/library/packages/organisms/src/asset-link-format/asset-link-format.d.ts +46 -2
  33. package/library/packages/organisms/src/asset-link-format/components/asset-link-format-proxy/asset-link-format-proxy.d.ts +36 -1
  34. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.d.ts +20 -2
  35. package/library/packages/organisms/src/bento-grid/bento-grid.d.ts +13 -0
  36. package/library/packages/organisms/src/carousel/carousel.d.ts +13 -0
  37. package/library/packages/organisms/src/content-builder/blocks/image/image.d.ts +54 -0
  38. package/library/packages/organisms/src/content-builder/blocks/video/video.d.ts +5 -0
  39. package/library/packages/organisms/src/content-builder/components/config-form/config-form.d.ts +2 -1
  40. package/library/packages/organisms/src/content-builder/components/gallery-picker/gallery-picker.d.ts +6 -0
  41. package/library/packages/organisms/src/content-builder/configs/carousel.d.ts +1 -0
  42. package/library/packages/organisms/src/content-builder/configs/gallery.d.ts +1 -0
  43. package/library/packages/organisms/src/content-builder/configs/image.d.ts +2 -0
  44. package/library/packages/organisms/src/content-builder/configs/timeline.d.ts +1 -0
  45. package/library/packages/organisms/src/content-builder/configs/video.d.ts +1 -0
  46. package/library/packages/organisms/src/content-builder/configs-controller.d.ts +10 -0
  47. package/library/packages/organisms/src/content-builder/styleController.d.ts +2 -0
  48. package/library/packages/tools/src/fetch-image/fetch-image.d.ts +28 -5
  49. package/library/packages/types/src/asset-link-format.d.ts +0 -1
  50. package/library/packages/types/src/content-builder.d.ts +7 -0
  51. package/library/packages/types/src/gallery-item.d.ts +1 -0
  52. package/library/packages/types/src/masonry.d.ts +1 -0
  53. package/library/packages/utils/src/transformation/transformation.d.ts +42 -3
  54. package/library/react-web-component.d.ts +55 -7
  55. package/library/utils.js +113 -109
  56. package/package.json +1 -1
  57. package/library/chunks/transformation.CWKaoGaY.js +0 -254
  58. package/library/packages/types/src/download-format-picker.d.ts +0 -7
@@ -70,6 +70,7 @@ export default class ConfigsController {
70
70
  'highlight-drop-shadow': boolean;
71
71
  'item-height': string;
72
72
  loop: boolean;
73
+ 'manual-format'?: boolean;
73
74
  navigation: string;
74
75
  orientation: string;
75
76
  'peek-slides': boolean;
@@ -204,6 +205,7 @@ export default class ConfigsController {
204
205
  'highlight-siblings-fade-out': boolean;
205
206
  'item-height': string;
206
207
  'large-content-position': import('../../../types/src/highlightable-element').HighlightableElementContentPosition;
208
+ 'manual-format'?: boolean;
207
209
  'max-rows': string;
208
210
  navigation: "both" | "arrows" | "pagination";
209
211
  orientation: import('../../../types/src/index.ts').Orientation;
@@ -264,6 +266,8 @@ export default class ConfigsController {
264
266
  'highlight-border'?: import('./blocks/image/image').default["highlightBorder"];
265
267
  'highlight-color-overlay'?: import('./blocks/image/image').default["highlightColorOverlay"];
266
268
  'highlight-drop-shadow'?: import('./blocks/image/image').default["highlightDropShadow"];
269
+ 'manual-format'?: import('./blocks/image/image').default["manualFormat"];
270
+ 'manual-format-dark-mode'?: import('./blocks/image/image').default["manualFormatDarkMode"];
267
271
  'object-fit': import('./blocks/image/image').default["objectFit"];
268
272
  'open-in-new-tab'?: import('./blocks/image/image').default["openInNewTab"];
269
273
  'page-url'?: import('./blocks/image/image').default["pageUrl"];
@@ -299,6 +303,7 @@ export default class ConfigsController {
299
303
  }>[] | import('../../../types/src/content-builder').PropertyConfig<{
300
304
  data: string;
301
305
  format: string;
306
+ 'manual-format'?: boolean;
302
307
  'min-tab-width': string;
303
308
  'multi-language': boolean;
304
309
  'navigation-arrows': boolean;
@@ -332,6 +337,7 @@ export default class ConfigsController {
332
337
  height: import('./blocks/video/video').default["height"];
333
338
  'height-mode': import('./blocks/video/video').default["heightMode"];
334
339
  loop: import('./blocks/video/video').default["loop"];
340
+ 'manual-thumbnail-format'?: boolean;
335
341
  name: import('./blocks/video/video').default["name"];
336
342
  'name-source-field': import('./blocks/video/video').default["nameSourceField"];
337
343
  'open-in-new-tab'?: import('./blocks/video/video').default["openInNewTab"];
@@ -412,6 +418,7 @@ export default class ConfigsController {
412
418
  'highlight-drop-shadow': boolean;
413
419
  'item-height': string;
414
420
  loop: boolean;
421
+ 'manual-format'?: boolean;
415
422
  navigation: string;
416
423
  orientation: string;
417
424
  'peek-slides': boolean;
@@ -543,6 +550,7 @@ export default class ConfigsController {
543
550
  'highlight-siblings-fade-out': boolean;
544
551
  'item-height': string;
545
552
  'large-content-position': import('../../../types/src/highlightable-element').HighlightableElementContentPosition;
553
+ 'manual-format'?: boolean;
546
554
  'max-rows': string;
547
555
  navigation: "both" | "arrows" | "pagination";
548
556
  orientation: import('../../../types/src/index.ts').Orientation;
@@ -575,6 +583,7 @@ export default class ConfigsController {
575
583
  } | {
576
584
  data: string;
577
585
  format: string;
586
+ 'manual-format'?: boolean;
578
587
  'min-tab-width': string;
579
588
  'multi-language': boolean;
580
589
  'navigation-arrows': boolean;
@@ -608,6 +617,7 @@ export default class ConfigsController {
608
617
  height: import('./blocks/video/video').default["height"];
609
618
  'height-mode': import('./blocks/video/video').default["heightMode"];
610
619
  loop: import('./blocks/video/video').default["loop"];
620
+ 'manual-thumbnail-format'?: boolean;
611
621
  name: import('./blocks/video/video').default["name"];
612
622
  'name-source-field': import('./blocks/video/video').default["nameSourceField"];
613
623
  'open-in-new-tab'?: import('./blocks/video/video').default["openInNewTab"];
@@ -59,6 +59,7 @@ export default class StyleController {
59
59
  defaultFormat?: string;
60
60
  dialogLabel?: string;
61
61
  formatKey?: string;
62
+ manualFormatKey?: string;
62
63
  multiple?: boolean;
63
64
  noCrop?: boolean;
64
65
  noResize?: boolean;
@@ -102,6 +103,7 @@ export default class StyleController {
102
103
  galleryPickerConfigs?: {
103
104
  dialog: import('../../../types/src/content-builder').DialogType;
104
105
  formatKey?: string;
106
+ manualFormatKey?: string;
105
107
  transformationRecordIdKey?: string;
106
108
  transformationsKey?: string;
107
109
  };
@@ -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
  /**
@@ -5397,6 +5397,10 @@
5397
5397
  * When true, restricts selection to the picker's declared `type`(s): assets of any other type are rejected on confirmation. When false, `type` only pre-fills the filter.
5398
5398
  */
5399
5399
  restrict?: boolean;
5400
+ /**
5401
+ * Asset types whose original `src` is used as-is, bypassing the API's representative (thumbnail/preview) URL. Only images are renderable directly, so every other type — video, audio, documents — falls back to its representative when the API returns one.
5402
+ */
5403
+ noRepresentativeFor?: 'all' | 'audio' | 'image' | 'other' | 'video'[];
5400
5404
  /**
5401
5405
  * An optional record ID (or space-separated list of record IDs, for `multiple` pickers) used to fetch a clean preview image and title, bypassing any stored URL/name that may be stale or have transformations applied.
5402
5406
  */
@@ -5644,7 +5648,7 @@
5644
5648
  /**
5645
5649
  *
5646
5650
  */
5647
- 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; };
5648
5652
  /**
5649
5653
  *
5650
5654
  */
@@ -6770,7 +6774,15 @@
6770
6774
  /**
6771
6775
  * The key to use for the id of the items in the masonry layout.
6772
6776
  */
6773
- 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;
6774
6786
  /**
6775
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).
6776
6788
  */
@@ -7875,6 +7887,14 @@
7875
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.
7876
7888
  */
7877
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;
7878
7898
  /**
7879
7899
  *
7880
7900
  */
@@ -7957,6 +7977,10 @@
7957
7977
  * The default format to fall back to if the asset has no transformations or selected proxy.
7958
7978
  */
7959
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;
7960
7984
  /**
7961
7985
  * Optional label rendered as the dialog title. Falls back to the localized "Asset format" term.
7962
7986
  */
@@ -8047,6 +8071,14 @@
8047
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.
8048
8072
  */
8049
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;
8050
8082
  /**
8051
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.
8052
8084
  */
@@ -8207,6 +8239,14 @@
8207
8239
  * The real total number of data in the carousel. Not affected by chunking.
8208
8240
  */
8209
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;
8210
8250
  /**
8211
8251
  * When set, allows the user to navigate the carousel in the same direction indefinitely.
8212
8252
  */
@@ -9605,6 +9645,10 @@
9605
9645
  * Asset transformation proxy format key.
9606
9646
  */
9607
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;
9608
9652
  /**
9609
9653
  * Asset transformations applied to the image.
9610
9654
  */
@@ -9731,6 +9775,10 @@
9731
9775
  * Asset transformation proxy format key.
9732
9776
  */
9733
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;
9734
9782
  /**
9735
9783
  * Asset transformations applied to the image.
9736
9784
  */