@orangelogic/design-system 2.114.0 → 2.115.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 (50) hide show
  1. package/library/chunks/asset.CtPQLZOf.js +607 -0
  2. package/library/chunks/{color-swatch-group.5Mqr0rNP.js → color-swatch-group.DjjSIHSV.js} +1 -1
  3. package/library/chunks/{document-viewer.Cui5mV3v.js → document-viewer.BIC9iYpZ.js} +1232 -1228
  4. package/library/chunks/{endpoints.DBlquU2-.js → endpoints.CDX5PgQz.js} +251 -251
  5. package/library/chunks/{folder-select.Bc9x2hMO.js → folder-select.8xNjeJfp.js} +1 -1
  6. package/library/chunks/{list-editor.BBgFSBlF.js → list-editor.7zNWfBuW.js} +8 -8
  7. package/library/chunks/{table.DLrle5SR.js → table.BvbReIZh.js} +41 -40
  8. package/library/chunks/{time.BiQnh9wt.js → time.BSmpFe2G.js} +2 -2
  9. package/library/chunks/waveform.1U9U_0rd.js +60 -0
  10. package/library/components/asset-link-format.js +1 -1
  11. package/library/components/atoms.js +2 -2
  12. package/library/components/audio.js +131 -182
  13. package/library/components/color-swatch-group.js +2 -2
  14. package/library/components/document-viewer.js +1 -1
  15. package/library/components/folder-select.js +2 -2
  16. package/library/components/format-time.js +1 -1
  17. package/library/components/list-editor.js +2 -2
  18. package/library/components/molecules.js +2 -2
  19. package/library/components/organisms.js +1 -1
  20. package/library/components/table.js +6 -6
  21. package/library/components/types.js +25325 -25041
  22. package/library/package.json +1 -1
  23. package/library/packages/atoms/src/components/audio/audio.d.ts +36 -28
  24. package/library/packages/events/src/cx-facet-change.d.ts +16 -0
  25. package/library/packages/events/src/cx-faceted-filter-change.d.ts +6 -1
  26. package/library/packages/events/src/events.d.ts +1 -0
  27. package/library/packages/molecules/src/faceted-filter/components/facet-date-picker/facet-date-picker.d.ts +43 -0
  28. package/library/packages/molecules/src/faceted-filter/components/facet-date-picker/facet-date-picker.styles.d.ts +2 -0
  29. package/library/packages/molecules/src/faceted-filter/components/facet-date-range/facet-date-range.d.ts +51 -0
  30. package/library/packages/molecules/src/faceted-filter/components/facet-date-range/facet-date-range.styles.d.ts +2 -0
  31. package/library/packages/molecules/src/faceted-filter/facet-adapters.d.ts +12 -0
  32. package/library/packages/molecules/src/faceted-filter/faceted-filter.d.ts +14 -3
  33. package/library/packages/molecules/src/index.d.ts +3 -0
  34. package/library/packages/organisms/src/asset-transformation-dialog/asset-transformation-dialog.d.ts +1 -1
  35. package/library/packages/organisms/src/content-builder/components/gallery-config/gallery-config.d.ts +1 -0
  36. package/library/packages/organisms/src/content-builder/components/page-picker/page-picker.d.ts +1 -0
  37. package/library/packages/organisms/src/content-builder/configs/audio.d.ts +1 -1
  38. package/library/packages/organisms/src/content-builder/configs-controller.d.ts +2 -2
  39. package/library/packages/services/src/api/asset/asset.d.ts +3 -1
  40. package/library/packages/services/src/api/endpoints.d.ts +2 -0
  41. package/library/packages/tools/src/fetch-asset/fetch-asset.d.ts +6 -0
  42. package/library/packages/tools/src/fetch-image/fetch-image.d.ts +11 -4
  43. package/library/packages/types/src/faceted-filter.d.ts +71 -2
  44. package/library/packages/utils/src/image/index.d.ts +1 -0
  45. package/library/packages/utils/src/image/waveform.d.ts +29 -0
  46. package/library/react-web-component.d.ts +317 -194
  47. package/library/utils.js +174 -171
  48. package/package.json +1 -1
  49. package/library/chunks/asset.Drl4D1c7.js +0 -458
  50. package/library/chunks/wavesurfer.esm.Cwi1pz64.js +0 -1276
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.114.0",
4
+ "version": "2.115.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -4,20 +4,23 @@ import { CSSResultGroup } from 'lit';
4
4
  import { default as CxIconButton } from '../icon-button/icon-button';
5
5
  import { default as CxTypography } from '../typography/typography';
6
6
 
7
- /** A [lightColor, darkColor] tuple used for theme-aware waveform coloring. */
8
- type WaveColorPair = [string, string];
9
7
  /**
10
- * @summary Audio player with waveform visualization.
8
+ * @summary Audio player with server-rendered waveform visualization.
9
+ *
10
+ * @description Set `src` for the audio file and `waveform-src` for a server-rendered waveform PNG.
11
+ * The PNG is analyzed via canvas pixel sampling and rendered as a themeable SVG. A native `<audio>`
12
+ * element handles playback. Wave color and background are fully CSS-controllable.
11
13
  *
12
14
  * @event cx-play - Emitted when playback starts.
13
15
  * @event cx-pause - Emitted when playback pauses.
14
- * @event {{ currentTime: number }} cx-time-update - Emitted while the playback position changes.
16
+ * @event {{ time: number }} cx-time-update - Emitted while the playback position changes.
15
17
  * @event cx-ended - Emitted when playback reaches the end.
16
- * @event {{ error: Error }} cx-error - Emitted when the audio fails to load.
18
+ * @event cx-error - Emitted when the audio or waveform image fails to load.
17
19
  *
18
20
  * @csspart base - The main container.
19
21
  * @csspart player - Row containing play button and waveform.
20
- * @csspart waveform - WaveSurfer waveform container.
22
+ * @csspart waveform - Placeholder container shown while the waveform is loading.
23
+ * @csspart waveform-svg - SVG waveform element (once waveform-src is loaded).
21
24
  * @csspart footer - Time and filename row.
22
25
  * @csspart time - Current time / duration display.
23
26
  * @csspart filename - Audio filename label.
@@ -27,8 +30,10 @@ type WaveColorPair = [string, string];
27
30
  * @cssproperty [--height=auto] - Component height.
28
31
  * @cssproperty [--border=0px] - Border.
29
32
  * @cssproperty [--border-radius=0px] - Border radius.
30
- * @cssproperty [--background-color=white] - Background color.
31
- * @cssproperty --waves-color - Waveform bar color. Default: blue.
33
+ * @cssproperty [--background-color=transparent] - Background color.
34
+ * @cssproperty --waves-color - Waveform fill color. Default: `--cx-color-primary`.
35
+ * @cssproperty --played-color - Overlay color for the played portion. Default: `--cx-color-primary-700`.
36
+ * @cssproperty [--playhead-color=var(--cx-color-neutral-0)] - Color of the thin playhead line tracking current position.
32
37
  * @cssproperty --text-color - Time/icon color. Default: dark.
33
38
  * @cssproperty --margin-top - Top margin.
34
39
  * @cssproperty --margin-right - Right margin.
@@ -42,9 +47,9 @@ export default class CxAudio extends ResizableElement {
42
47
  'cx-typography': typeof CxTypography;
43
48
  };
44
49
  readonly localize: LocalizeController;
45
- private readonly waveformContainerAsync;
46
- private waveSurfer;
47
50
  private srcLoadVersion;
51
+ private extractWaveformPeaks;
52
+ private readonly audioEl;
48
53
  /**
49
54
  * The URL of the audio file to load.
50
55
  */
@@ -62,39 +67,42 @@ export default class CxAudio extends ResizableElement {
62
67
  */
63
68
  loop: boolean;
64
69
  /**
65
- * CSS color for the waveform bars. Accepts a plain CSS color or `light-dark(lightColor, darkColor)`
66
- * for theme-aware coloring. Defaults to `--cx-color-primary` if not set or if the value is invalid.
70
+ * URL of a server-rendered waveform PNG. The image is analyzed via canvas pixel sampling
71
+ * and rendered as a themeable SVG. Wave color and background are CSS-controllable via
72
+ * `--waves-color` and `--background-color`.
67
73
  */
68
- waveColor: WaveColorPair;
74
+ waveformSrc: string;
69
75
  /** Whether the audio is currently playing. */
70
76
  private isPlaying;
71
77
  /** Whether the audio has finished loading and is ready for playback. */
72
78
  private isLoaded;
73
- /** Whether an error occurred while loading the audio. */
79
+ /** Whether an error occurred while loading the audio or waveform image. */
74
80
  private isError;
75
81
  /** Current playback position in seconds. */
76
82
  private currentTimeSeconds;
77
83
  /** Total duration in seconds. */
78
84
  private durationSeconds;
79
- constructor();
85
+ /** SVG path data extracted from the waveform PNG. */
86
+ private waveformPath;
87
+ /** viewBox width matching the number of samples extracted from the waveform image. */
88
+ private waveformViewBoxWidth;
89
+ /** Fraction of the audio that has been played, 0–1, for the progress overlay. */
90
+ private playedFraction;
91
+ /** Effective audio src bound to the <audio> element; set after waveform loads, cleared on cleanUp. */
92
+ private audioSrc;
80
93
  runConnectedCallback(): void;
81
94
  disconnectedCallback(): void;
82
95
  handleSrcChange(): Promise<void>;
83
96
  protected applySrc(src: string): Promise<void>;
84
- handleWaveColorThemeChange(): Promise<void>;
85
97
  updated(changedProps: Map<string, unknown>): void;
86
- private onWaveSurferReady;
87
- private onWaveSurferPlay;
88
- private onWaveSurferPause;
89
- private onWaveSurferTimeUpdate;
90
- private onWaveSurferFinish;
91
- private onWaveSurferError;
92
- private resolveColorValue;
93
- private computeCursorColor;
94
- private setupColors;
95
- private setupWaveSurfer;
96
- private attachWaveSurferEvents;
97
98
  private cleanUp;
99
+ private setupPngWaveform;
100
+ private handleAudioPlay;
101
+ private handleAudioPause;
102
+ private handleAudioTimeUpdate;
103
+ private handleAudioDurationChange;
104
+ private handleAudioEnded;
105
+ private handleAudioError;
98
106
  private handleSizeChange;
99
107
  /** Starts audio playback. */
100
108
  play(): void;
@@ -103,6 +111,7 @@ export default class CxAudio extends ResizableElement {
103
111
  /** Toggles between play and pause. */
104
112
  togglePlay(): void;
105
113
  private formatTime;
114
+ private handleWaveformClick;
106
115
  private handlePlayButtonKeyDown;
107
116
  render(): import('lit').TemplateResult<1>;
108
117
  }
@@ -111,4 +120,3 @@ declare global {
111
120
  'cx-audio': CxAudio;
112
121
  }
113
122
  }
114
- export {};
@@ -0,0 +1,16 @@
1
+ import { DateRangeValue } from '../../types/src/faceted-filter';
2
+
3
+ /**
4
+ * Internal (non-composed) event emitted by date facet adapters
5
+ * (`cx-facet-date-picker`, `cx-facet-date-range`) up to `cx-faceted-filter`.
6
+ * `range` is `null` when the facet's selection has been cleared.
7
+ */
8
+ export type CxFacetChangeEvent = CustomEvent<{
9
+ field: string;
10
+ range: DateRangeValue | null;
11
+ }>;
12
+ declare global {
13
+ interface GlobalEventHandlersEventMap {
14
+ 'cx-facet-change': CxFacetChangeEvent;
15
+ }
16
+ }
@@ -1,5 +1,10 @@
1
+ import { SelectedDateRanges, SelectedFacets } from '../../types/src/faceted-filter';
2
+
1
3
  export type CxFacetedFilterChangeEvent = CustomEvent<{
2
- selection: Record<string, string[]>;
4
+ /** Date-facet selections (date-picker + date-range) keyed by facetFieldName. */
5
+ dateRanges?: SelectedDateRanges;
6
+ /** Checkbox-facet selections keyed by facetFieldName. */
7
+ selection: SelectedFacets;
3
8
  }>;
4
9
  declare global {
5
10
  interface GlobalEventHandlersEventMap {
@@ -70,6 +70,7 @@ export * from './cx-enter';
70
70
  export * from './cx-error';
71
71
  export * from './cx-expand';
72
72
  export * from './cx-export-settings';
73
+ export * from './cx-facet-change';
73
74
  export * from './cx-faceted-filter-change';
74
75
  export * from './cx-file-on-demand-load-more';
75
76
  export * from './cx-file-on-demand-pin';
@@ -0,0 +1,43 @@
1
+ import { default as CxDetails } from '../../../../../atoms/src/components/details/details.ts';
2
+ import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
3
+ import { default as CxInputDatePicker } from '../../../input-date-picker/input-date-picker.ts';
4
+ import { CSSResultGroup } from 'lit';
5
+
6
+ /**
7
+ * @summary Internal single-date facet adapter for `cx-faceted-filter`. Renders a
8
+ * collapsible section (matching the checkbox facet) wrapping `cx-input-date-picker`,
9
+ * and normalizes its `cx-change` into the shared `cx-facet-change` event (an `=`
10
+ * filter on the chosen day).
11
+ *
12
+ * @event {{ field: string; range: DateRangeValue | null }} cx-facet-change - Fired
13
+ * when a date is committed (`range.type` is `date-picker`) or cleared (`range` is `null`).
14
+ */
15
+ export default class CxFacetDatePicker extends CortexElement {
16
+ static readonly styles: CSSResultGroup;
17
+ static readonly dependencies: {
18
+ 'cx-details': typeof CxDetails;
19
+ 'cx-input-date-picker': typeof CxInputDatePicker;
20
+ };
21
+ /** Field name used as the filter key in the emitted event. */
22
+ field: string;
23
+ /** Human-readable label shown in the collapsible header. */
24
+ displayName: string;
25
+ /** Currently selected date in `YYYY-MM-DD`. */
26
+ value: string;
27
+ /** Currently selected time in 24-hour `HH:mm:ss`. */
28
+ fromTime: string;
29
+ /** Shows the hour/minute/second selects. */
30
+ showTime: boolean;
31
+ /** Minimum selectable date in `YYYY-MM-DD`. */
32
+ min: string;
33
+ /** Maximum selectable date in `YYYY-MM-DD`. */
34
+ max: string;
35
+ private handleChange;
36
+ private emitFacetChange;
37
+ render(): import('lit').TemplateResult<1>;
38
+ }
39
+ declare global {
40
+ interface HTMLElementTagNameMap {
41
+ 'cx-facet-date-picker': CxFacetDatePicker;
42
+ }
43
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import('lit').CSSResult;
2
+ export default _default;
@@ -0,0 +1,51 @@
1
+ import { default as CxDetails } from '../../../../../atoms/src/components/details/details.ts';
2
+ import { default as CortexElement } from '../../../../../base/src/cortex-element.ts';
3
+ import { default as CxInputDateRangePicker } from '../../../input-date-range-picker/input-date-range-picker.ts';
4
+ import { CSSResultGroup } from 'lit';
5
+
6
+ /**
7
+ * @summary Internal date-range facet adapter for `cx-faceted-filter`. Renders a
8
+ * collapsible section (matching the checkbox facet) wrapping `cx-input-date-range-picker`,
9
+ * and normalizes its `cx-change` into the shared `cx-facet-change` event. The event fires
10
+ * only once **both** the from and to dates are set, so incomplete edits keep the prior filter.
11
+ *
12
+ * @event {{ field: string; range: DateRangeValue | null }} cx-facet-change - Fired
13
+ * when both range ends are committed (`range.type` is `date-range`).
14
+ */
15
+ export default class CxFacetDateRange extends CortexElement {
16
+ static readonly styles: CSSResultGroup;
17
+ static readonly dependencies: {
18
+ 'cx-details': typeof CxDetails;
19
+ 'cx-input-date-range-picker': typeof CxInputDateRangePicker;
20
+ };
21
+ /** Field name used as the filter key in the emitted event. */
22
+ field: string;
23
+ /** Human-readable label shown in the collapsible header. */
24
+ displayName: string;
25
+ /** The from date in `YYYY-MM-DD`. */
26
+ fromDate: string;
27
+ /** The to date in `YYYY-MM-DD`. */
28
+ toDate: string;
29
+ /** The from time in 24-hour `HH:mm:ss`. */
30
+ fromTime: string;
31
+ /** The to time in 24-hour `HH:mm:ss`. */
32
+ toTime: string;
33
+ /** Shows the hour/minute/second selects on both pickers. */
34
+ showTime: boolean;
35
+ /** Shows the preset selector (Today, Last 7 days, …). */
36
+ showPreset: boolean;
37
+ /** Selected preset key. Controlled so clearing resets the inner picker's preset. */
38
+ preset: string;
39
+ /** Minimum selectable date in `YYYY-MM-DD`. */
40
+ min: string;
41
+ /** Maximum selectable date in `YYYY-MM-DD`. */
42
+ max: string;
43
+ private handleChange;
44
+ private emitFacetChange;
45
+ render(): import('lit').TemplateResult<1>;
46
+ }
47
+ declare global {
48
+ interface HTMLElementTagNameMap {
49
+ 'cx-facet-date-range': CxFacetDateRange;
50
+ }
51
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import('lit').CSSResult;
2
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import { Facet, FacetRenderContext, FacetType } from '../../../types/src/faceted-filter';
2
+ import { TemplateResult } from 'lit';
3
+
4
+ /** Per-facet data the orchestrator hands each adapter so its render stays pure. */
5
+ type FacetRenderer = (facet: Facet, ctx: FacetRenderContext) => TemplateResult;
6
+ /**
7
+ * Adapter registry: maps a {@link FacetType} to the template that renders it.
8
+ * Add a new facet type by adding one entry here — the orchestrator dispatches
9
+ * through this map and never branches on type itself.
10
+ */
11
+ export declare const FACET_ADAPTERS: Record<FacetType, FacetRenderer>;
12
+ export {};
@@ -9,9 +9,8 @@ import { default as CxSpinner } from '../../../atoms/src/components/spinner/spin
9
9
  import { default as CxTag } from '../../../atoms/src/components/tag/tag.ts';
10
10
  import { default as CxTooltip } from '../../../atoms/src/components/tooltip/tooltip.ts';
11
11
  import { default as CortexElement } from '../../../base/src/cortex-element.ts';
12
- import { Facet, FacetDetails, FacetSelectionMode, SelectedFacets } from '../../../types/src/faceted-filter';
12
+ import { Facet, FacetDetails, FacetSelectionMode, SelectedDateRanges, SelectedFacets } from '../../../types/src/faceted-filter';
13
13
  import { CSSResultGroup } from 'lit';
14
- import { default as CxFacetedFilterFacet } from './components/facet/facet';
15
14
 
16
15
  /**
17
16
  * @summary Filter icon button that opens a dropdown panel with collapsible facet groups.
@@ -27,7 +26,6 @@ export default class CxFacetedFilter extends CortexElement {
27
26
  'cx-button': typeof CxButton;
28
27
  'cx-details': typeof CxDetails;
29
28
  'cx-dropdown': typeof CxDropdown;
30
- 'cx-faceted-filter-facet': typeof CxFacetedFilterFacet;
31
29
  'cx-icon': typeof CxIcon;
32
30
  'cx-icon-button': typeof CxIconButton;
33
31
  'cx-space': typeof CxSpace;
@@ -36,12 +34,15 @@ export default class CxFacetedFilter extends CortexElement {
36
34
  'cx-tooltip': typeof CxTooltip;
37
35
  };
38
36
  private readonly localize;
37
+ private readonly shadowRootAutoloader;
39
38
  /** Active facets with their metadata and available option values. */
40
39
  facets: Facet[];
41
40
  /** Ordered list of facets to display. Controls which facets render and in what order. */
42
41
  availableFacets: FacetDetails[];
43
42
  /** Currently selected filter values. See `SelectedFacets` type. Can be set to reset selection. */
44
43
  selectedFacets: SelectedFacets;
44
+ /** Currently selected date facet values (date-picker + date-range). Can be set to reset selection. */
45
+ selectedDateRanges: SelectedDateRanges;
45
46
  /** Default selection mode for all facets. Per-facet selection in FacetDetails takes precedence. */
46
47
  selection: FacetSelectionMode;
47
48
  /** Whether the current selection is being applied by the consumer. */
@@ -50,17 +51,27 @@ export default class CxFacetedFilter extends CortexElement {
50
51
  private appliedFiltersCount;
51
52
  /** Internal selection state maintained by the component. */
52
53
  private internalSelection;
54
+ /** Internal date facet selection state maintained by the component. */
55
+ private internalDateRanges;
53
56
  /** Maps facetFieldName → (value → displayValue) for rendering applied-filter tags. */
54
57
  private mappedDisplayNames;
55
58
  handleFacetsChange(): void;
56
59
  handleSelectedFacetsChange(): void;
60
+ handleSelectedDateRangesChange(): void;
57
61
  handleInternalSelectionChange(): void;
58
62
  private updateAppliedFiltersCount;
59
63
  private getFacetSelectionMode;
64
+ private buildRenderContext;
60
65
  private handleSelectionChange;
66
+ private handleFacetChange;
61
67
  private handleRemove;
62
68
  private handleClearAllClick;
69
+ private emitChange;
63
70
  private renderAppliedFilters;
71
+ private getDateFacetLabel;
72
+ private formatDateRangeDisplay;
73
+ private renderDateTags;
74
+ private renderSelectionCheckboxTags;
64
75
  private renderFooter;
65
76
  render(): import('lit').TemplateResult<1>;
66
77
  }
@@ -14,7 +14,10 @@ export { default as CxDocsExample } from './docs-example/docs-example';
14
14
  export { default as CxDownloadFormatPicker } from './download-format-picker/download-format-picker';
15
15
  export { default as CxDynamicSelect } from './dynamic-select/dynamic-select';
16
16
  export { default as CxEstimatedReadingTime } from './estimated-reading-time/estimated-reading-time';
17
+ export { default as CxFacetDatePicker } from './faceted-filter/components/facet-date-picker/facet-date-picker';
18
+ export { default as CxFacetDateRange } from './faceted-filter/components/facet-date-range/facet-date-range';
17
19
  export { default as CxFacetedFilter } from './faceted-filter/faceted-filter';
20
+ export { default as CxFacetedFilterFacet } from './faceted-filter/components/facet/facet';
18
21
  export { default as CxFolderSelect } from './folder-select/folder-select';
19
22
  export { default as CxGalleryItem } from './gallery-item/gallery-item';
20
23
  export { default as CxGraphView } from './graph-view/graph-view';
@@ -84,7 +84,7 @@ export default class CxAssetTransformationDialog extends CortexElement {
84
84
  * announce the correct role/state rather than the custom-element host. */
85
85
  private updateAccessibleTrigger;
86
86
  /** Fetches the asset and its available proxies when the dialog opens.
87
- * Guards on `result.id` because `fetchAssetByID` returns `{}` on network error. */
87
+ * Guards on `result.id` because `fetchAssetByIDViaContentSdk` returns `{}` on network error. */
88
88
  private handleDialogShow;
89
89
  private handleTriggerClick;
90
90
  private handleTriggerKeyDown;
@@ -80,6 +80,7 @@ export default class CxGalleryConfig extends CortexElement {
80
80
  get galleryPickerDialogTitle(): string;
81
81
  constructor();
82
82
  private apiGetTeamSpaceSpaceList;
83
+ private apiGetAssets;
83
84
  private apiGetPagesAndLinks;
84
85
  fetchSelectedPage(): Promise<void>;
85
86
  /**
@@ -23,6 +23,7 @@ export default class CxPagePicker extends CortexElement {
23
23
  'cx-typography': typeof CxTypography;
24
24
  };
25
25
  private readonly localize;
26
+ private apiGetAssets;
26
27
  dialog: CxDialog;
27
28
  selectEl: CxFolderSelect;
28
29
  /**
@@ -15,7 +15,7 @@ type Attribute = {
15
15
  'resize-direction': CxSbAudio['resizeDirection'];
16
16
  src: CxSbAudio['src'];
17
17
  'version-label'?: string;
18
- 'wave-color': string;
18
+ 'waveform-src'?: string;
19
19
  width: string;
20
20
  };
21
21
  declare const _default: {
@@ -21,7 +21,7 @@ export default class ConfigsController {
21
21
  'resize-direction': import('./blocks/audio/audio').default["resizeDirection"];
22
22
  src: import('./blocks/audio/audio').default["src"];
23
23
  'version-label'?: string;
24
- 'wave-color': string;
24
+ 'waveform-src'?: string;
25
25
  width: string;
26
26
  }>[] | import('../../../types/src/content-builder').PropertyConfig<{
27
27
  'asset-button-type': import('./blocks/button/button').default["assetType"];
@@ -311,7 +311,7 @@ export default class ConfigsController {
311
311
  'resize-direction': import('./blocks/audio/audio').default["resizeDirection"];
312
312
  src: import('./blocks/audio/audio').default["src"];
313
313
  'version-label'?: string;
314
- 'wave-color': string;
314
+ 'waveform-src'?: string;
315
315
  width: string;
316
316
  }> | Partial<{
317
317
  'asset-button-type': import('./blocks/button/button').default["assetType"];
@@ -1,4 +1,4 @@
1
- import { GetAllFormatCodesResponse, GetAssetsInFolderRequest, GetAssetsInFolderResponse, GetAssetsRequest, GetAssetsResponse, GetAvailableProxiesResponse, GetCropZoneSuggestionRequest, GetCropZoneSuggestionResponse, GetTransformAssetLinkResponse, SearchAssetsParams, SearchAssetsResponse } from './asset.types';
1
+ import { GetAllFormatCodesResponse, GetAssetsInFolderRequest, GetAssetsInFolderResponse, GetAssetsRequest, GetAssetsResponse, GetAvailableProxiesResponse, GetCropZoneSuggestionRequest, GetCropZoneSuggestionResponse, GetFolderContentRequest, GetTransformAssetLinkResponse, SearchAssetsParams, SearchAssetsResponse } from './asset.types';
2
2
 
3
3
  export declare const DEFAULT_VIEW_SIZE = "CoreField.LargeSizePreview";
4
4
  export declare const FIELD_CORTEX_PATH = "Document.CortexPath";
@@ -38,7 +38,9 @@ export declare function apiGetTransformAssetLink({ assetId, extension, format, s
38
38
  useSession?: string;
39
39
  }): Promise<GetTransformAssetLinkResponse | null>;
40
40
  export declare function apiGetAssets({ extraFields, getPermanentAssetsPaths, recordIds, securityByPassToken, token, }: GetAssetsRequest): Promise<GetAssetsResponse>;
41
+ export declare function apiGetAssetsViaContentSdk({ extraFields, recordIds, }: GetAssetsRequest): Promise<GetAssetsResponse>;
41
42
  export declare function apiGetAssetsInFolder({ countPerPage, directParentFolderIdentifier, extraFields, getPermanentAssetsPaths, limitedDocTypes, pageNumber, parentFolderIdentifier, searchTerm, securityByPassToken, sortOrder, token, }: GetAssetsInFolderRequest): Promise<GetAssetsInFolderResponse>;
43
+ export declare function apiGetAssetsInFolderViaContentSdk({ extraFields, folderId, limit, limitedDocTypes, searchTerm, seeThrough, selectedFacets, sortOrder, start, }: GetFolderContentRequest): Promise<GetAssetsInFolderResponse>;
42
44
  export declare function apiGetCropFocusMode({ autoCropMode, cropHeight, cropWidth, imageUrl, useSession, }: GetCropZoneSuggestionRequest): Promise<GetCropZoneSuggestionResponse | null>;
43
45
  export declare function apiGetAvailableProxies({ assetRecordId, siteUrl, token, useSession, }: {
44
46
  assetRecordId: string;
@@ -9,6 +9,8 @@ export declare enum TEAMSPACE_API_ENDPOINT {
9
9
  GET_USER_ROLE = "webapi/objectmanagement/teamspaces/getuserroles_41E7_v1"
10
10
  }
11
11
  export declare enum ASSET_API_ENDPOINT {
12
+ GET_CONTENT_V1 = "webapi/extensibility/integrations/contentBrowserSDK/getcontent_4bw_v1",
13
+ GET_CONTENT_V3 = "webapi/extensibility/integrations/contentBrowserSDK/getcontent_4bw_v3",
12
14
  GET_CROP_ZONE_SUGGESTION = "webapi/mediafile/assettransformation/getcropzonesuggestion_41UP_v1",
13
15
  GET_LARGEST_DOWNLOAD_LINK = "webapi/objectmanagement/share/getlargestdownloadlink_46X_v1",
14
16
  GET_TRANSFORM_ASSET_LINK = "webapi/mediafile/assettransformation/transformasset_41E6_v1",
@@ -3,6 +3,8 @@ import { ReactiveController, ReactiveElement } from 'lit';
3
3
  export declare class FetchAssetController implements ReactiveController {
4
4
  private readonly host;
5
5
  private data;
6
+ private apiGetAssetsViaContentSdk;
7
+ private apiGetAssets;
6
8
  constructor(host: ReactiveElement);
7
9
  fetchAssetByID({ extraFields, recordId, securityByPassToken, token, }: {
8
10
  extraFields?: string[];
@@ -10,6 +12,10 @@ export declare class FetchAssetController implements ReactiveController {
10
12
  securityByPassToken?: string;
11
13
  token?: string;
12
14
  }): Promise<Record<string, string>>;
15
+ fetchAssetByIDViaContentSdk({ extraFields, recordId, }: {
16
+ extraFields?: string[];
17
+ recordId: string;
18
+ }): Promise<Record<string, string>>;
13
19
  hostConnected?(): void;
14
20
  hostDisconnected?(): void;
15
21
  }
@@ -23,17 +23,21 @@ export declare class FetchImageController implements ReactiveController {
23
23
  private readonly authToken;
24
24
  private securityByPassToken;
25
25
  private requestEpoch;
26
+ private apiGetAssets;
27
+ private apiGetAssetsInFolder;
28
+ private apiGetAssetsInFolderViaContentSdk;
26
29
  constructor(host: ReactiveElement, options?: FetchImageControllerOptions);
27
30
  get totalDataCount(): number;
28
31
  setSecurityByPassToken(token: string | undefined): void;
29
- fetchImages({ end, extraFields, format, start, transformations, }: {
32
+ fetchImages({ end, extraFields, format, start, transformations, useContentSdk, }: {
30
33
  end: number;
31
34
  extraFields: string[];
32
35
  format?: string;
33
36
  start: number;
34
37
  transformations?: Transformation[];
38
+ useContentSdk?: boolean;
35
39
  }): Promise<ExtendedGalleryItem[] | undefined>;
36
- fetchImagesInFolderBySlide({ activeSlide, extraFields, folderId, forceRefetch, format, minLimit, noPlaceholders, transformations, }: {
40
+ fetchImagesInFolderBySlide({ activeSlide, extraFields, folderId, forceRefetch, format, minLimit, noPlaceholders, transformations, useContentSdk, }: {
37
41
  activeSlide: number;
38
42
  extraFields?: string[];
39
43
  folderId: string;
@@ -42,6 +46,7 @@ export declare class FetchImageController implements ReactiveController {
42
46
  minLimit?: number;
43
47
  noPlaceholders?: boolean;
44
48
  transformations?: Transformation[];
49
+ useContentSdk?: boolean;
45
50
  }): Promise<ExtendedGalleryItem[]>;
46
51
  fetchImagesByIDs({ extraFields, format, recordIds, transformations, }: {
47
52
  extraFields?: string[];
@@ -49,7 +54,7 @@ export declare class FetchImageController implements ReactiveController {
49
54
  recordIds: string[];
50
55
  transformations?: Transformation[];
51
56
  }): Promise<ExtendedGalleryItem[]>;
52
- fetchImagesInFolderByPage({ extraFields, folderId, forceRefetch, format, noPlaceholders, page, pageSize, transformations, }: {
57
+ fetchImagesInFolderByPage({ extraFields, folderId, forceRefetch, format, noPlaceholders, page, pageSize, transformations, useContentSdk, }: {
53
58
  extraFields?: string[];
54
59
  folderId: string;
55
60
  forceRefetch?: boolean;
@@ -58,8 +63,9 @@ export declare class FetchImageController implements ReactiveController {
58
63
  page: number;
59
64
  pageSize?: number;
60
65
  transformations?: Transformation[];
66
+ useContentSdk?: boolean;
61
67
  }): Promise<ExtendedGalleryItem[]>;
62
- fetchImagesInFolderByChunk({ chunkSize: rawChunkSize, end, extraFields, folderId, forceRefetch, format, start, transformations, }: {
68
+ fetchImagesInFolderByChunk({ chunkSize: rawChunkSize, end, extraFields, folderId, forceRefetch, format, start, transformations, useContentSdk, }: {
63
69
  chunkSize?: number;
64
70
  end?: number;
65
71
  extraFields?: string[];
@@ -68,6 +74,7 @@ export declare class FetchImageController implements ReactiveController {
68
74
  format?: string;
69
75
  start?: number;
70
76
  transformations?: Transformation[];
77
+ useContentSdk?: boolean;
71
78
  }): AsyncGenerator<ExtendedGalleryItem[], void, unknown>;
72
79
  hostConnected?(): void;
73
80
  hostDisconnected?(): void;
@@ -2,13 +2,54 @@ export declare enum FacetSelectionMode {
2
2
  Multiple = "multiple",
3
3
  Single = "single"
4
4
  }
5
- export type FacetDetails = {
5
+ /** The kind of control a facet renders. Drives the adapter chosen by `cx-faceted-filter`. */
6
+ export declare enum FacetType {
7
+ /** Multi/single-select tree of values with counts (default). */
8
+ Checkbox = "checkbox",
9
+ /** A single date picker — emits an `=` filter on the chosen day. */
10
+ DatePicker = "date-picker",
11
+ /** A from/to date range — emits `>=` / `<=` filters once both ends are set. */
12
+ DateRange = "date-range"
13
+ }
14
+ /** Checkbox (tree) facet — `type` defaults to `checkbox` when omitted. */
15
+ export type CheckboxFacetDetails = {
6
16
  displayName: string;
7
17
  facetFieldName: string;
8
18
  facetIndexedFieldName?: string;
9
- /** Controls whether the facet allows single or multi-select. Defaults to single. */
10
19
  selection?: FacetSelectionMode;
20
+ type?: FacetType.Checkbox;
11
21
  };
22
+ /** Single date-picker facet. */
23
+ export type DatePickerFacetDetails = {
24
+ displayName: string;
25
+ facetFieldName: string;
26
+ facetIndexedFieldName?: string;
27
+ /** Maximum selectable date in `YYYY-MM-DD`. */
28
+ max?: string;
29
+ /** Minimum selectable date in `YYYY-MM-DD`. */
30
+ min?: string;
31
+ selection?: FacetSelectionMode;
32
+ /** Show the hour/minute/second selects. */
33
+ showTime?: boolean;
34
+ type: FacetType.DatePicker;
35
+ };
36
+ /** From/to date-range facet. */
37
+ export type DateRangeFacetDetails = {
38
+ displayName: string;
39
+ facetFieldName: string;
40
+ facetIndexedFieldName?: string;
41
+ /** Maximum selectable date in `YYYY-MM-DD`. */
42
+ max?: string;
43
+ /** Minimum selectable date in `YYYY-MM-DD`. */
44
+ min?: string;
45
+ selection?: FacetSelectionMode;
46
+ /** Show the preset selector (Today, Last 7 days, …). */
47
+ showPreset?: boolean;
48
+ /** Show the hour/minute/second selects. */
49
+ showTime?: boolean;
50
+ type: FacetType.DateRange;
51
+ };
52
+ export type FacetDetails = CheckboxFacetDetails | DatePickerFacetDetails | DateRangeFacetDetails;
12
53
  export type FacetValue = {
13
54
  count: number;
14
55
  displayValue: string;
@@ -21,3 +62,31 @@ export type Facet = {
21
62
  };
22
63
  /** Selected filter values keyed by facetFieldName. e.g. `{ status: ['active'], category: ['image>>png'] }` */
23
64
  export type SelectedFacets = Record<string, string[]>;
65
+ /**
66
+ * A committed date selection for a single date facet. Shared by both date types:
67
+ * - `DatePicker` sets `fromDate` only (`toDate` stays empty) and maps to an `=` filter.
68
+ * - `DateRange` sets both `fromDate` and `toDate` and maps to `>=` / `<=` filters.
69
+ *
70
+ * Dates are ISO `YYYY-MM-DD`; times are 24-hour `HH:mm:ss`. When `showTime` is true the
71
+ * consumer combines date + time into an ISO datetime (`YYYY-MM-DDTHH:mm:ss`).
72
+ */
73
+ export type DateRangeValue = {
74
+ fromDate: string;
75
+ fromTime: string;
76
+ /** Selected preset key for date-range facets when a preset was used. */
77
+ preset?: string;
78
+ showTime: boolean;
79
+ toDate: string;
80
+ toTime: string;
81
+ type: FacetType.DatePicker | FacetType.DateRange;
82
+ };
83
+ /** Committed date selections keyed by facetFieldName. e.g. `{ createdDate: { type: 'date-picker', fromDate: '2026-06-24', … } }` */
84
+ export type SelectedDateRanges = Record<string, DateRangeValue>;
85
+ export type FacetRenderContext = {
86
+ /** Committed date selection for this facet (`internalDateRanges[field]`). */
87
+ dateRange: DateRangeValue | undefined;
88
+ /** Fallback selection mode when the facet does not define its own. */
89
+ defaultSelection: FacetSelectionMode;
90
+ /** Selected checkbox values for this facet (`internalSelection[field]`). */
91
+ selectionValues: string[];
92
+ };
@@ -1 +1,2 @@
1
1
  export * from './image';
2
+ export * from './waveform';