@ds-mo/ui 13.11.1 → 13.12.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 (100) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +288 -10
  4. package/dist/angular/ds-mobile-header.d.ts +1 -1
  5. package/dist/angular/ds-mobile-header.js +3 -3
  6. package/dist/angular/ds-tab-group.d.ts +1 -1
  7. package/dist/angular/ds-tab-group.js +3 -3
  8. package/dist/angular/ds-table.d.ts +28 -0
  9. package/dist/angular/ds-table.js +54 -0
  10. package/dist/angular/ds-tag.d.ts +1 -1
  11. package/dist/angular/ds-tag.js +3 -3
  12. package/dist/angular/index.d.ts +1 -1
  13. package/dist/angular/index.js +1 -0
  14. package/dist/angular/proxies.d.ts +1 -0
  15. package/dist/angular/proxies.js +1 -0
  16. package/dist/components/ds-bar-nav.js +1 -1
  17. package/dist/components/ds-bar-title.js +1 -1
  18. package/dist/components/ds-bar-workflow.js +1 -1
  19. package/dist/components/ds-bar-workflow.js.map +1 -1
  20. package/dist/components/ds-card-overview.js +1 -1
  21. package/dist/components/ds-menu.js +1 -1
  22. package/dist/components/ds-mobile-header.js +1 -1
  23. package/dist/components/ds-mobile-section-switcher.js +1 -1
  24. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  25. package/dist/components/ds-modal.js +1 -1
  26. package/dist/components/ds-panel-sub-nav.js +1 -1
  27. package/dist/components/ds-radio.js +1 -1
  28. package/dist/components/ds-scroll-overlay.js +1 -1
  29. package/dist/components/ds-scroll-overlay.js.map +1 -1
  30. package/dist/components/ds-select.js +1 -1
  31. package/dist/components/ds-shell-app.js +1 -1
  32. package/dist/components/ds-shell-app.js.map +1 -1
  33. package/dist/components/ds-shell-tools.js +1 -1
  34. package/dist/components/ds-skeleton.js +1 -1
  35. package/dist/components/ds-slider.js +1 -1
  36. package/dist/components/ds-switch.js +1 -1
  37. package/dist/components/ds-tab-group.js +1 -1
  38. package/dist/components/ds-table.d.ts +11 -0
  39. package/dist/components/ds-table.js +2 -0
  40. package/dist/components/ds-table.js.map +1 -0
  41. package/dist/components/ds-tag.js +1 -1
  42. package/dist/components/ds-tag.js.map +1 -1
  43. package/dist/components/ds-toast.js +1 -1
  44. package/dist/components/ds-typing-indicator.js +1 -1
  45. package/dist/components/index.d.ts +30 -0
  46. package/dist/components/{p-BHb3Ws8e.js → p-BFXN4ioL.js} +2 -2
  47. package/dist/components/{p-DgglLVCj.js → p-BYre-ZDg.js} +2 -2
  48. package/dist/components/p-B_eqa09C.js +2 -0
  49. package/dist/components/p-B_eqa09C.js.map +1 -0
  50. package/dist/components/{p-BnGJrBPG.js → p-Bj7KrXzw.js} +2 -2
  51. package/dist/components/p-BxJurXEn.js +2 -0
  52. package/dist/components/p-BxJurXEn.js.map +1 -0
  53. package/dist/components/{p-Dg9qiMDa.js → p-C9StMCWg.js} +2 -2
  54. package/dist/components/p-CFNG0K3m.js +2 -0
  55. package/dist/components/p-CFNG0K3m.js.map +1 -0
  56. package/dist/components/{p-BQ7Nzx9A.js → p-Ch5yT3UA.js} +2 -2
  57. package/dist/components/{p-DJGdoPMG.js → p-DKftz0O8.js} +2 -2
  58. package/dist/components/p-DxygUurH.js +2 -0
  59. package/dist/components/p-DxygUurH.js.map +1 -0
  60. package/dist/components/{p-DCN04sgt.js → p-x9jO4lZ7.js} +2 -2
  61. package/dist/components/{p-DCN04sgt.js.map → p-x9jO4lZ7.js.map} +1 -1
  62. package/dist/docs/components.json +1547 -100
  63. package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +3 -2
  64. package/dist/mcp-data/registry/mobile-header.json +48 -10
  65. package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
  66. package/dist/mcp-data/registry/registry.json +290 -9
  67. package/dist/mcp-data/registry/shell-app.json +4 -2
  68. package/dist/mcp-data/registry/shell-tools.json +4 -4
  69. package/dist/mcp-data/registry/tab-group.json +22 -2
  70. package/dist/mcp-data/registry/table.json +758 -0
  71. package/dist/mcp-data/registry/tag.json +22 -3
  72. package/dist/react/components.d.ts +1 -0
  73. package/dist/react/components.js +1 -0
  74. package/dist/react/ds-table.d.ts +16 -0
  75. package/dist/react/ds-table.js +18 -0
  76. package/dist/styles/table.css +677 -0
  77. package/dist/types/components/MobileHeader/MobileHeader.d.ts +8 -3
  78. package/dist/types/components/MobileHeader/index.d.ts +1 -1
  79. package/dist/types/components/MobileHeader/mobile-header-types.d.ts +3 -2
  80. package/dist/types/components/ShellApp/ShellApp.d.ts +8 -0
  81. package/dist/types/components/TabGroup/TabGroup.d.ts +3 -0
  82. package/dist/types/components/Table/Table.d.ts +115 -0
  83. package/dist/types/components/Table/index.d.ts +2 -0
  84. package/dist/types/components/Table/table-model.d.ts +29 -0
  85. package/dist/types/components/Table/table-types.d.ts +178 -0
  86. package/dist/types/components/Tag/Tag.d.ts +2 -0
  87. package/dist/types/components.d.ts +393 -6
  88. package/package.json +3 -2
  89. package/dist/components/p-CVmtbj-6.js +0 -2
  90. package/dist/components/p-CVmtbj-6.js.map +0 -1
  91. package/dist/components/p-DW9p068S.js +0 -2
  92. package/dist/components/p-DW9p068S.js.map +0 -1
  93. package/dist/components/p-Xftomzsv.js +0 -2
  94. package/dist/components/p-Xftomzsv.js.map +0 -1
  95. /package/dist/components/{p-BHb3Ws8e.js.map → p-BFXN4ioL.js.map} +0 -0
  96. /package/dist/components/{p-DgglLVCj.js.map → p-BYre-ZDg.js.map} +0 -0
  97. /package/dist/components/{p-BnGJrBPG.js.map → p-Bj7KrXzw.js.map} +0 -0
  98. /package/dist/components/{p-Dg9qiMDa.js.map → p-C9StMCWg.js.map} +0 -0
  99. /package/dist/components/{p-BQ7Nzx9A.js.map → p-Ch5yT3UA.js.map} +0 -0
  100. /package/dist/components/{p-DJGdoPMG.js.map → p-DKftz0O8.js.map} +0 -0
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface DsTable extends Components.DsTable, HTMLElement {}
4
+ export const DsTable: {
5
+ prototype: DsTable;
6
+ new (): DsTable;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,2 @@
1
+ import{p as e,H as t,c as s,h as a,a as l,t as r}from"./index.js";import{d as i}from"./p-DwKC_9u2.js";import{d as n}from"./p-c1pY-Mqq.js";import{d as o}from"./p-DK4PGrHm.js";import{d}from"./p-DBJJiSP0.js";import{d as c}from"./p-DumWT7NN.js";import{d as b}from"./p-Ca-I2UnB.js";import{d as h}from"./p-C9StMCWg.js";import{d as _}from"./p-CFNG0K3m.js";import{d as u}from"./p-BNiIyZCn.js";const m={xs:"--dimension-table-column-width-xs",sm:"--dimension-table-column-width-sm",md:"--dimension-table-column-width-md",lg:"--dimension-table-column-width-lg",xl:"--dimension-table-column-width-xl"};function f(e){return typeof e==="object"&&e!==null&&"primary"in e&&!("kind"in e)}function p(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="primary-text"}function g(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="tag"}function w(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="icon"}function v(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="image"}function y(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="action"}function k(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="empty"}function x(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="blank"}function z(e){if(e==null)return null;if(g(e))return e.label;if(w(e))return null;if(v(e))return e.alt;if(y(e))return e.label??e.ariaLabel;if(p(e))return e.primary;if(k(e)||x(e))return null;return f(e)?e.primary:e}function C(e,t){const s=e.selectionLabel?.trim();if(s)return s;for(const s of t){const t=z(e.cells[s.id]);if(t!=null&&String(t).trim())return String(t)}return e.id}function M(e,t){if(e?.columnId!==t)return{columnId:t,direction:"asc"};if(e.direction==="asc")return{columnId:t,direction:"desc"};return{columnId:t,direction:"asc"}}function S(e){return{...e,direction:e.direction==="asc"?"desc":"asc"}}function L(e){if(typeof e.size!=="number"||!Number.isFinite(e.size)||e.size<=0){return undefined}const t=Number.isFinite(e.minSize)&&(e.minSize??0)>0?e.minSize:0;const s=Number.isFinite(e.maxSize)&&(e.maxSize??0)>0?Math.max(e.maxSize,t):Number.POSITIVE_INFINITY;return Math.min(Math.max(e.size,t),s)}function $(e){if(typeof e.size==="string"){return`var(${m[e.size]})`}const t=L(e);return t==null?undefined:`${t}px`}function I(e){const t=e.map($).filter((e=>!!e));if(t.length===0)return undefined;return t.length===1?t[0]:`calc(${t.join(" + ")})`}function j(e,t,s){return s?t.flatMap((e=>e.rows)):e}function E(e){return e.selectable!==false&&!e.disabled}function D(e,t){const s=new Set(t);const a=e.filter(E).map((e=>e.id));const l=a.reduce(((e,t)=>e+(s.has(t)?1:0)),0);return{selectableRowIds:a,selectedLoadedCount:l,allSelected:a.length>0&&l===a.length,indeterminate:l>0&&l<a.length}}function R(e,t){if(!E(t))return[...e];const s=new Set(e);if(s.has(t.id))s.delete(t.id);else s.add(t.id);return[...s]}function B(e,t){const s=new Set(e);const a=D(t,e);for(const e of a.selectableRowIds){if(a.allSelected)s.delete(e);else s.add(e)}return[...s]}function N(e){const t=Number.isFinite(e.totalCount)?Math.max(0,e.totalCount):0;return Math.max(t,e.rows.length)}function A(e,t,s,a){const l=[];const r=new Set;for(const t of e){if(!t.id.trim())l.push("Every column requires a non-empty id.");else if(r.has(t.id))l.push(`Duplicate column id: ${t.id}`);r.add(t.id)}const i=new Set;if(a){for(const e of s){if(!e.id.trim())l.push("Every group requires a non-empty id.");else if(i.has(e.id))l.push(`Duplicate group id: ${e.id}`);i.add(e.id);if(e.totalCount!=null&&e.totalCount<e.rows.length){l.push(`Group ${e.id} totalCount is smaller than its loaded row count.`)}}}const n=new Set;for(const e of j(t,s,a)){if(!e.id.trim())l.push("Every row requires a non-empty id.");else if(n.has(e.id))l.push(`Duplicate row id: ${e.id}`);n.add(e.id)}return[...new Set(l)]}const T=()=>`.sc-ds-table:where(.ds-table){--_table-cell-track-min-block-size:calc( var(--dimension-size-400) - var(--dimension-space-050) );--_table-cell-track-padding-inline:calc( var(--dimension-space-075) - var(--dimension-space-025) );--_table-cell-track-label-inset:var(--dimension-space-025);--_table-image-block-size:calc( var(--dimension-size-800) - var(--dimension-space-150) );--_table-surface:var(--ds-table-surface, var(--color-background-primary));--_table-header-surface:var(--ds-table-header-surface, var(--color-background-primary));--_table-group-surface:var(--ds-table-group-surface, var(--color-background-faint-neutral));--_table-row-hover:var(--ds-table-row-hover, var(--color-interaction-hover));--_table-row-pressed:var(--ds-table-row-pressed, var(--color-interaction-pressed));--_table-row-selected:var(--ds-table-row-selected, var(--color-interaction-active-brand));--_table-border:var(--ds-table-border, var(--color-border-secondary));--_table-column-border:var(--ds-table-column-border, var(--color-border-tertiary));--_table-border-strong:var(--ds-table-border-strong, var(--color-border-secondary));--_table-overflow-shadow:var(--ds-table-overflow-shadow, var(--color-border-secondary));--_table-radius:var(--ds-table-radius, var(--dimension-radius-075));--_table-header-min-block-size:var( --ds-table-header-min-block-size, var(--dimension-size-400) );--_table-row-min-block-size:var( --ds-table-row-min-block-size, var(--dimension-size-500) );--_table-cell-padding-block:var( --ds-table-cell-padding-block, var(--dimension-space-100) );--_table-cell-padding-inline:var( --ds-table-cell-padding-inline, var(--dimension-space-100) );--_table-selection-column-inline-size:var( --ds-table-selection-column-inline-size, var(--dimension-size-500) );--_table-selection-column-contribution:0;display:block;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;color:var(--color-foreground-primary);-webkit-user-select:none;user-select:none}.sc-ds-table:where(.ds-table__frame){position:relative;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;overflow:hidden;border:var(--dimension-stroke-width-012) solid var(--_table-border-strong);border-radius:var(--_table-radius);background:var(--_table-surface)}.sc-ds-table:where(.ds-table__frame)::before,.sc-ds-table:where(.ds-table__frame)::after{content:'';position:absolute;inset-block:0;z-index:3;inline-size:var(--dimension-space-200);pointer-events:none;opacity:0;transition:opacity var(--effect-motion-short-2)}.sc-ds-table:where(.ds-table__frame)::before{inset-inline-start:0;background:linear-gradient(to right, var(--_table-overflow-shadow), transparent)}.sc-ds-table:where(.ds-table__frame)::after{inset-inline-end:0;background:linear-gradient(to left, var(--_table-overflow-shadow), transparent)}.sc-ds-table:where(.ds-table__frame--overflow-start)::before,.sc-ds-table:where(.ds-table__frame--overflow-end)::after{opacity:var(--effect-opacity-low)}.sc-ds-table:where(.ds-table__viewport){box-sizing:border-box;max-block-size:var(--ds-table-max-block-size, none);max-inline-size:100%;min-inline-size:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;outline:none}.sc-ds-table:where(.ds-table__viewport:focus-visible){outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.sc-ds-table:where(.ds-table__table){box-sizing:border-box;inline-size:100%;min-inline-size:max(100%, var(--ds-table-explicit-min-inline-size, 0));border:0;border-spacing:0;border-collapse:separate;table-layout:fixed;background:var(--_table-surface);color:inherit}.sc-ds-table:where(.ds-table__table--selectable){--_table-selection-column-contribution:var(--_table-selection-column-inline-size);min-inline-size:max( 100%, calc(var(--ds-table-explicit-min-inline-size, 0) + var(--_table-selection-column-contribution)) )}.sc-ds-table:where(.ds-table__caption){padding:var(--_table-cell-padding-inline);border-block-end:var(--dimension-stroke-width-012) solid var(--_table-border);background:var(--_table-surface);text-align:start}.sc-ds-table:where(.ds-table__selection-column){inline-size:var(--_table-selection-column-inline-size)}.sc-ds-table:where(.ds-table__head){position:relative;z-index:1}.sc-ds-table:where(.ds-table--sticky-header .ds-table__head){position:sticky;inset-block-start:0;z-index:2}.sc-ds-table:where(.ds-table__header-row){min-block-size:var(--_table-header-min-block-size);background:var(--_table-header-surface)}.sc-ds-table:where(.ds-table__header-cell),.sc-ds-table:where(.ds-table__cell),.sc-ds-table:where(.ds-table__group-cell),.sc-ds-table:where(.ds-table__load-cell),.sc-ds-table:where(.ds-table__state-cell){box-sizing:border-box;border:0;border-block-end:var(--dimension-stroke-width-012) solid var(--_table-border);text-align:start;vertical-align:middle}.sc-ds-table:where(.ds-table__header-cell){min-block-size:calc( var(--_table-header-min-block-size) - var(--dimension-space-100) - var(--dimension-space-100) );block-size:calc( var(--_table-header-min-block-size) - var(--dimension-space-100) - var(--dimension-space-100) );padding:var(--dimension-space-100);border-block-end:0;box-shadow:inset 0 calc(-1 * var(--dimension-stroke-width-012)) 0 var(--_table-border);background:var(--_table-header-surface);color:var(--color-foreground-secondary)}.sc-ds-table:where(.ds-table__cell){min-block-size:var(--_table-row-min-block-size);block-size:var(--_table-row-min-block-size);padding:var(--_table-cell-padding-block) var(--_table-cell-padding-inline);border-block-end:0;background-color:inherit;background-image:linear-gradient(var(--_table-border), var(--_table-border));background-repeat:no-repeat;background-position:bottom;background-size:100% var(--dimension-stroke-width-012);vertical-align:top}.sc-ds-table:where(.ds-table__header-cell+.ds-table__header-cell),.sc-ds-table:where(.ds-table__cell+.ds-table__cell){border-inline-start:var(--dimension-stroke-width-012) solid var(--_table-column-border)}.sc-ds-table:where(.ds-table__header-labels),.sc-ds-table:where(.ds-table__header-static),.sc-ds-table:where(.ds-table__header-label){display:flex;align-items:center;box-sizing:border-box;min-inline-size:0;block-size:var(--dimension-size-200);padding:0;color:inherit;text-align:inherit}.sc-ds-table:where(.ds-table__header-labels){flex:0 1 auto}.sc-ds-table:where(.ds-table__header-label){flex:0 1 auto;inline-size:fit-content;padding-inline:var(--dimension-space-025);color:var(--color-foreground-secondary)}.sc-ds-table:where(.ds-table__header-label[data-sort-active='true']){color:var(--color-foreground-primary)}.sc-ds-table:where(.ds-table__header-label-box){min-inline-size:0;padding-inline:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-label--interactive){appearance:none;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default;outline:none;-webkit-tap-highlight-color:transparent}@media (hover: hover) and (pointer: fine){.sc-ds-table:where(.ds-table__header-label--interactive:hover){color:var(--color-foreground-primary)}.sc-ds-table:where(.ds-table__row:not(.ds-table__row--disabled):hover){background:var(--_table-row-hover)}}.sc-ds-table:where(.ds-table__header-label--interactive:active){color:var(--color-foreground-primary)}.sc-ds-table:where(.ds-table__header-label--interactive:focus-visible),.sc-ds-table:where(.ds-table__selection-control:focus-visible){outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.sc-ds-table:where(.ds-table__header-content),.sc-ds-table:where(.ds-table__header-labels),.sc-ds-table:where(.ds-table__header-segment),.sc-ds-table:where(.ds-table__sort-slot),.sc-ds-table:where(.ds-table__group-content),.sc-ds-table:where(.ds-table__load-content){display:inline-flex;align-items:center;min-inline-size:0}.sc-ds-table:where(.ds-table__header-content){display:flex;inline-size:100%;gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__header-labels){max-inline-size:100%;gap:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-segment){flex:0 1 auto;gap:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-separator){flex:0 0 auto}.sc-ds-table:where(.ds-table__sort-slot){justify-content:center;flex:0 0 auto;inline-size:var(--dimension-size-200);block-size:var(--dimension-size-200);margin-inline-start:auto}.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-content){justify-content:center}.sc-ds-table:where(.ds-table__cell--align-center .ds-table__sort-slot),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__sort-slot){margin-inline-start:0}.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-labels){margin-inline-start:auto}.sc-ds-table:where(.ds-table__cell-content),.sc-ds-table:where(.ds-table__cell-copy){display:flex;min-inline-size:0;max-inline-size:100%}.sc-ds-table:where(.ds-table__cell-content){align-items:flex-start;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-copy){flex:1;flex-direction:column;justify-content:flex-start}.sc-ds-table:where(.ds-table__cell-track){display:flex;align-items:center;box-sizing:border-box;min-inline-size:0;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-track--text){inline-size:100%;padding-inline:var(--_table-cell-track-label-inset)}.sc-ds-table:where(.ds-table__cell--text-single),.sc-ds-table:where(.ds-table__cell--text-multi),.sc-ds-table:where(.ds-table__cell--primary-text),.sc-ds-table:where(.ds-table__cell--empty),.sc-ds-table:where(.ds-table__cell--blank){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell--text-single .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--empty .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--blank .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--text-single .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--empty .ds-table__cell-track){min-block-size:0}.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-copy){gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-secondary){padding-block:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-secondary){padding-block:0}.sc-ds-table:where(.ds-table__cell--tag-tag-only),.sc-ds-table:where(.ds-table__cell--tag-tag-with-text){padding:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__cell--tag-text-with-tag){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell-tag-stack){display:flex;flex-direction:column;align-items:flex-start;box-sizing:border-box;min-inline-size:0;max-inline-size:100%}.sc-ds-table:where(.ds-table__cell-tag-text){inline-size:100%}.sc-ds-table:where(.ds-table__cell-tag-stack--tag-with-text .ds-table__cell-tag-text){padding-inline:calc( var(--_table-cell-track-padding-inline) + var(--_table-cell-track-label-inset) );padding-block:var(--dimension-space-025);min-block-size:0}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag .ds-table__cell-tag-text){padding-inline:var(--_table-cell-track-label-inset);min-block-size:0}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag){gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__cell-tag-control-track){display:flex;align-items:center;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag .ds-table__cell-tag-control-track){min-block-size:0}.sc-ds-table:where(.ds-table__cell--icon){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell--icon .ds-table__cell-content){align-items:center;justify-content:center;inline-size:100%;min-block-size:var(--dimension-iconography-md)}.sc-ds-table:where(.ds-table__cell--image){padding:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__cell-image){display:block;box-sizing:border-box;flex:none;block-size:var(--_table-image-block-size);aspect-ratio:16 / 9;overflow:hidden;border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);border-radius:var(--dimension-radius-025)}.sc-ds-table:where(.ds-table__cell-image-content),.sc-ds-table:where(.ds-table__cell-image-placeholder){display:block;inline-size:100%;block-size:100%}.sc-ds-table:where(.ds-table__cell-image-content){object-fit:cover}.sc-ds-table:where(.ds-table__cell--action){padding:var(--dimension-space-100)}.sc-ds-table:where(.ds-table__cell--action .ds-table__cell-content){min-block-size:var(--dimension-size-300)}.sc-ds-table:where(.ds-table__cell-primary),.sc-ds-table:where(.ds-table__cell-secondary){min-inline-size:0}.sc-ds-table:where(.ds-table__cell-copy--wrap){overflow-wrap:anywhere}.sc-ds-table:where(.ds-table__cell--align-center),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-static),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-labels),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-label){text-align:center;justify-content:center}.sc-ds-table:where(.ds-table__cell--align-end),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-static),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-labels),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-label){text-align:end;justify-content:flex-end}.sc-ds-table:where(.ds-table__body){background:var(--_table-surface)}.sc-ds-table:where(.ds-table__row){min-block-size:var(--_table-row-min-block-size);background:var(--_table-surface);transition:background-color var(--effect-motion-short-2)}.sc-ds-table:where(.ds-table__row:active:not(.ds-table__row--disabled)){background:var(--_table-row-pressed)}.sc-ds-table:where(.ds-table__row--selected){background:var(--_table-row-selected)}.sc-ds-table:where(.ds-table__row--disabled){color:var(--color-foreground-tertiary);opacity:var(--effect-opacity-medium)}.sc-ds-table:where(.ds-table__selection-cell){inline-size:var(--_table-selection-column-inline-size);padding:0;text-align:center}.sc-ds-table:where(.ds-table__cell.ds-table__selection-cell){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__selection-control){appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;inline-size:100%;min-block-size:calc( var(--_table-header-min-block-size) - var(--dimension-stroke-width-012) );padding:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:default;outline:none}.sc-ds-table:where(.ds-table__cell.ds-table__selection-cell .ds-table__selection-control){inline-size:var(--dimension-iconography-md);min-block-size:var(--dimension-iconography-md);block-size:var(--dimension-iconography-md)}.sc-ds-table:where(.ds-table__selection-control:disabled){cursor:default}.sc-ds-table:where(.ds-table__selection-control:disabled ds-checkbox){opacity:var(--effect-opacity-medium)}.sc-ds-table:where(.ds-table__group-cell){min-block-size:var(--_table-header-min-block-size);padding:var(--dimension-space-075) var(--_table-cell-padding-inline);background:var(--_table-group-surface)}.sc-ds-table:where(.ds-table__group-content){gap:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__load-cell),.sc-ds-table:where(.ds-table__state-cell){padding:var(--dimension-space-200) var(--_table-cell-padding-inline);background:var(--_table-surface);text-align:center}.sc-ds-table:where(.ds-table__load-content){justify-content:center;gap:var(--dimension-space-100)}.sc-ds-table:where(.ds-table__load-content--error){flex-wrap:wrap}.sc-ds-table:where(.ds-table__auto-sentinel){display:block;min-block-size:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__state-cell){block-size:calc(var(--dimension-size-800) * 2)}.sc-ds-table:where(.ds-table__skeleton-row){pointer-events:none}.sc-ds-table:where(.ds-table__skeleton-row:last-child .ds-table__cell),.sc-ds-table:where(.ds-table__load-row:last-child .ds-table__load-cell),.sc-ds-table:where(.ds-table__state-row:last-child .ds-table__state-cell),.sc-ds-table:where(.ds-table__body:last-child .ds-table__row:last-child .ds-table__cell){border-block-end:0;background-image:none}.sc-ds-table:where(.ds-visually-hidden){position:absolute;inline-size:var(--dimension-stroke-width-012);block-size:var(--dimension-stroke-width-012);padding:0;margin:calc(-1 * var(--dimension-stroke-width-012));overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){.sc-ds-table:where(.ds-table__frame)::before,.sc-ds-table:where(.ds-table__frame)::after,.sc-ds-table:where(.ds-table__row){transition:none}}@media (forced-colors: active){.sc-ds-table:where(.ds-table){--_table-surface:var(--ds-forced-color-surface);--_table-header-surface:var(--ds-forced-color-surface);--_table-group-surface:var(--ds-forced-color-surface);--_table-border:var(--ds-forced-color-control-boundary);--_table-column-border:var(--ds-forced-color-control-boundary);--_table-border-strong:var(--ds-forced-color-control-boundary);color:var(--ds-forced-color-content)}.sc-ds-table:where(.ds-table__frame)::before,.sc-ds-table:where(.ds-table__frame)::after{display:none}.sc-ds-table:where(.ds-table__row--selected>.ds-table__cell){background:var(--ds-forced-color-selected);color:var(--ds-forced-color-on-selected)}.sc-ds-table:where(.ds-table__row--disabled){color:var(--ds-forced-color-disabled);opacity:1}.sc-ds-table:where(.ds-table__selection-control:disabled ds-checkbox){--ds-forced-color-content:var(--ds-forced-color-disabled);opacity:1}.sc-ds-table:where(.ds-table__header-label--interactive:focus-visible),.sc-ds-table:where(.ds-table__selection-control:focus-visible),.sc-ds-table:where(.ds-table__viewport:focus-visible){outline-color:var(--ds-forced-color-selected)}}.sc-ds-table-h{display:block;box-sizing:border-box;min-width:0;max-width:100%}`;const H=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.dsSortChange=s(this,"dsSortChange");this.dsGroupingChange=s(this,"dsGroupingChange");this.dsSelectionChange=s(this,"dsSelectionChange");this.dsLoadMore=s(this,"dsLoadMore");this.dsCellAction=s(this,"dsCellAction");this.columns=[];this.rows=[];this.groups=[];this.grouping=null;this.sort=null;this.captionVisibility="hidden";this.stickyHeader=false;this.selectionMode="none";this.selectedRowIds=[];this.loading=false;this.skeletonRows=5;this.emptyHeading="No results";this.emptyBody="No data is available.";this.error=false;this.errorHeading="Unable to load data";this.errorBody="The data could not be loaded.";this.emptyCellLabel="Not available";this.lazyLoading=false;this.loadMoreMode="auto";this.hasMore=false;this.loadingMore=false;this.loadIdentity="default";this.loadMoreThreshold=0;this.loadMoreLabel="Load more";this.retryLabel="Retry";this.loadingMoreLabel="Loading more results";this.endOfResultsLabel="All results loaded";this.rowsLoadedLabel="{count} more rows loaded. {total} rows loaded.";this.overflowStart=false;this.overflowEnd=false;this.scrollable=false;this.intersectionSupported=true;this.announcement="";this.viewportEl=null;this.tableEl=null;this.sentinelEl=null;this.resizeObserver=null;this.intersectionObserver=null;this.observedSentinel=null;this.requestPending=false;this.requestedRowCount=0;this.previousLoadedRowCount=0;this.previousModelWarning="";this.hasLoaded=false;this.reconnectFrame=null;this.syncOverflow=()=>{const e=this.viewportEl;if(!e)return;const t=e.scrollWidth-e.clientWidth>1;const s=t||e.scrollHeight-e.clientHeight>1;const a=t&&e.scrollLeft>1;const l=t&&e.scrollLeft+e.clientWidth<e.scrollWidth-1;if(a!==this.overflowStart)this.overflowStart=a;if(l!==this.overflowEnd)this.overflowEnd=l;if(s!==this.scrollable)this.scrollable=s}}componentWillLoad(){this.previousLoadedRowCount=this.loadedRows.length;this.intersectionSupported=typeof IntersectionObserver!=="undefined";this.warnModelIssues()}componentDidLoad(){this.hasLoaded=true;this.connectViewportObserver();this.syncOverflow();this.connectIntersectionObserver()}componentDidRender(){this.connectIntersectionObserver()}connectedCallback(){if(!this.hasLoaded)return;if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=requestAnimationFrame((()=>{this.reconnectFrame=null;this.connectViewportObserver();this.syncOverflow();this.connectIntersectionObserver()}))}disconnectedCallback(){if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=null;this.viewportEl?.removeEventListener("scroll",this.syncOverflow);this.resizeObserver?.disconnect();this.resizeObserver=null;this.disconnectIntersectionObserver()}handleStructureChange(){this.warnModelIssues();this.resetLoadRequest()}handleDataChange(){const e=this.loadedRows.length;if(e>this.previousLoadedRowCount){const t=e-this.previousLoadedRowCount;this.announcement=this.rowsLoadedLabel.replace("{count}",String(t)).replace("{total}",String(e))}if(e>this.requestedRowCount)this.requestPending=false;this.previousLoadedRowCount=e;this.warnModelIssues();this.disconnectIntersectionObserver()}handleLoadIdentityChange(){this.previousLoadedRowCount=this.loadedRows.length;this.resetLoadRequest()}handleLazyConfigurationChange(){this.disconnectIntersectionObserver()}handleLoadingMoreChange(e){if(e){this.requestPending=true;this.announcement=this.loadingMoreLabel}else if(this.loadMoreMode==="manual"){this.requestPending=false}this.disconnectIntersectionObserver()}handleLoadMoreErrorChange(e){if(e?.trim()){this.requestPending=false;this.announcement=e}this.disconnectIntersectionObserver()}handleHasMoreChange(e,t){if(!e){this.requestPending=false;if(t)this.announcement=this.endOfResultsLabel}this.disconnectIntersectionObserver()}get grouped(){return this.grouping!==null}get selectable(){return this.selectionMode==="multiple"}get loadedRows(){return j(this.rows,this.groups,this.grouped)}get hasData(){return this.loadedRows.length>0}get totalColumns(){return this.columns.length+(this.selectable?1:0)}get selectedSet(){return new Set(this.selectedRowIds)}get selectionState(){return D(this.loadedRows,this.selectedRowIds)}get resolvedMaxHeight(){if(this.maxHeight==null||this.maxHeight==="")return undefined;return typeof this.maxHeight==="number"?`${Math.max(0,this.maxHeight)}px`:this.maxHeight}get tableStyle(){const e=I(this.columns);return e==null?undefined:{"--ds-table-explicit-min-inline-size":e}}warnModelIssues(){const e=A(this.columns,this.rows,this.groups,this.grouped);if(!this.caption?.trim())e.unshift("A non-empty caption is required.");if(this.grouping&&!this.columns.some((e=>e.id===this.grouping.columnId))){e.push(`Grouping references unknown column id: ${this.grouping.columnId}`)}if(this.sort&&!this.columns.some((e=>e.id===this.sort.columnId||e.headerSegments?.some((e=>e.sortKey===this.sort.columnId))))){e.push(`Sorting references unknown column id: ${this.sort.columnId}`)}const t=e.join(" ");if(!t||t===this.previousModelWarning)return;this.previousModelWarning=t;console.warn(`[ds-table] ${t}`)}connectViewportObserver(){if(!this.viewportEl)return;this.viewportEl.removeEventListener("scroll",this.syncOverflow);this.viewportEl.addEventListener("scroll",this.syncOverflow,{passive:true});this.resizeObserver?.disconnect();if(typeof ResizeObserver==="undefined")return;this.resizeObserver=new ResizeObserver(this.syncOverflow);this.resizeObserver.observe(this.viewportEl);if(this.tableEl)this.resizeObserver.observe(this.tableEl)}resetLoadRequest(){this.requestPending=false;this.requestedRowCount=this.loadedRows.length;this.disconnectIntersectionObserver()}disconnectIntersectionObserver(){this.intersectionObserver?.disconnect();this.intersectionObserver=null;this.observedSentinel=null}connectIntersectionObserver(){if(!this.lazyLoading||this.loadMoreMode!=="auto"||!this.hasMore||!!this.loadMoreError?.trim()||!this.intersectionSupported||!this.viewportEl||!this.sentinelEl){this.disconnectIntersectionObserver();return}if(this.intersectionObserver&&this.observedSentinel===this.sentinelEl)return;this.disconnectIntersectionObserver();const e=Number.isFinite(this.loadMoreThreshold)?Math.max(0,this.loadMoreThreshold):0;this.intersectionObserver=new IntersectionObserver((e=>{if(e.some((e=>e.isIntersecting)))this.requestLoadMore("auto")}),{root:this.viewportEl,rootMargin:`0px 0px ${e}px 0px`});this.observedSentinel=this.sentinelEl;this.intersectionObserver.observe(this.sentinelEl)}requestLoadMore(e){if(!this.lazyLoading||!this.hasMore||this.loadingMore||e!=="retry"&&!!this.loadMoreError?.trim()||this.requestPending)return;this.requestPending=true;this.requestedRowCount=this.loadedRows.length;this.announcement=this.loadingMoreLabel;this.dsLoadMore.emit({reason:e,loadIdentity:this.loadIdentity,loadedRowCount:this.requestedRowCount})}emitSort(e,t=e.id){if(this.grouping?.columnId===e.id&&t===e.id){this.dsGroupingChange.emit({grouping:S(this.grouping)});return}if(!e.sortable)return;this.dsSortChange.emit({sort:M(this.sort,t)})}sortButtonLabel(e,t=e.id,s=e.header){if(this.grouping?.columnId===e.id&&t===e.id){const t=this.grouping.direction==="asc"?"descending":"ascending";return`Sort ${e.header} groups ${t}. Currently grouped ${this.grouping.direction==="asc"?"ascending":"descending"}.`}if(this.sort?.columnId!==t)return`Sort ${s} ascending`;if(this.sort.direction==="asc")return`Sort ${s} descending. Currently ascending.`;return`Sort ${s} ascending. Currently descending.`}emitRowSelection(e){const t=R(this.selectedRowIds,e);const s=t.includes(e.id);this.dsSelectionChange.emit({selectedRowIds:t,scope:"row",changedRowId:e.id,selected:s})}emitAllSelection(){this.dsSelectionChange.emit({selectedRowIds:B(this.selectedRowIds,this.loadedRows),scope:"all-loaded",selected:!this.selectionState.allSelected})}renderSelectionControl(e,t,s,l,r){return a("button",{class:"ds-table__selection-control",type:"button",role:"checkbox","aria-label":e,"aria-checked":s?"mixed":String(t),disabled:l,onClick:r},a("ds-checkbox",{label:"",size:"md",checked:t,indeterminate:s,presentation:true}))}renderColumnHeader(e){const t=this.grouping?.columnId===e.id;const s=e.headerSegments?.length?e.headerSegments:[{label:e.header,sortKey:e.id}];const l=!t?s.find((e=>e.sortKey===this.sort?.columnId)):undefined;const r=!!l;const i=t||r;const n=e.align??"start";const o=t?this.grouping.direction:r?this.sort.direction:undefined;const d=r?this.sort.direction==="asc"?"ascending":"descending":undefined;const c=a("span",{class:"ds-table__header-labels"},s.map(((r,i)=>{const n=t?s.length===1:l?.sortKey===r.sortKey;const o=!!e.sortable||t&&r.sortKey===e.id;const d=a("ds-text",{class:"ds-table__header-label-box ds-control-label-box",as:"span",variant:"text-caption",emphasis:n,color:"inherit",lineTruncation:1},r.label);const c=o?a("button",{class:"ds-table__header-label ds-table__header-label--interactive",type:"button","aria-label":this.sortButtonLabel(e,r.sortKey,r.label),"data-sort-control":"label","data-sort-key":r.sortKey,"data-sort-active":n?"true":undefined,onClick:()=>this.emitSort(e,r.sortKey)},d):a("span",{class:"ds-table__header-label ds-table__header-static"},d);return a("span",{class:"ds-table__header-segment",key:r.sortKey},c,i<s.length-1&&a("ds-text",{class:"ds-table__header-separator",as:"span",variant:"text-caption",color:"tertiary","aria-hidden":"true"},r.separator??"/"))})));const b=a("span",{class:"ds-table__sort-slot"},i&&a("ds-button-unfilled",{class:"ds-table__sort-direction",variant:"icon",icon:o==="asc"?"ArrowUp":"ArrowDown",size:"xs","aria-label":this.sortButtonLabel(e,l?.sortKey??e.id,l?.label??e.header),hasBorder:false,activeFill:false,isActive:true,pressScale:false,"data-sort-control":"direction",onDsClick:()=>this.emitSort(e,l?.sortKey??e.id)}));return a("th",{key:e.id,class:`ds-table__header-cell ds-table__cell--align-${n}`,scope:"col","aria-sort":d,"data-column-id":e.id,"data-grouped":t?"true":undefined,"data-sort-active":i?"true":undefined},a("span",{class:"ds-table__header-content"},n==="end"&&b,n==="center"&&a("span",{class:"ds-table__sort-slot ds-table__sort-slot--balance","data-sort-balance":"true","aria-hidden":"true"}),c,n!=="end"&&b))}renderCellValue(e,t,s){if(x(e))return null;if(e==null||k(e)){return a("ds-text",{class:"ds-table__cell-track ds-table__cell-track--text",as:"span",variant:"text-body-medium",color:"secondary"},a("span",{"aria-hidden":"true"},"—"),a("span",{class:"ds-visually-hidden"},this.emptyCellLabel))}if(w(e)){return a("ds-icon",{name:e.icon,size:"md",color:e.color??"secondary",label:e.label})}if(v(e)){return a("span",{class:"ds-table__cell-image"},e.src?a("img",{class:"ds-table__cell-image-content",src:e.src,alt:e.alt,loading:"lazy"}):a("span",{class:"ds-table__cell-image-placeholder",role:"img","aria-label":e.alt}))}if(y(e)){return a("ds-button-unfilled",{variant:e.variant??"label",size:"sm",label:e.label??"",icon:e.icon??"","aria-label":e.ariaLabel??null,hasBorder:e.hasBorder??false,isInactive:e.isInactive??false,isLoading:e.isLoading??false,onDsClick:a=>{a.stopPropagation();this.dsCellAction.emit({actionId:e.actionId,rowId:s.id,columnId:t.id})}})}if(g(e)){const t=e.variant??"tag-only";const s=a("ds-tag",{label:e.label,intent:e.intent??"neutral",contrast:e.contrast??"faint",size:t==="text-with-tag"?"sm":"md",icon:e.icon??"",rounded:e.rounded??false,isInset:true});if(t==="tag-only")return s;return a("span",{class:`ds-table__cell-tag-stack ds-table__cell-tag-stack--${t}`},t==="tag-with-text"&&s,a("ds-text",{class:"ds-table__cell-tag-text ds-table__cell-track",as:"span",variant:t==="tag-with-text"?"text-body-small":"text-body-medium",color:"secondary",lineTruncation:1},e.text),t==="text-with-tag"&&a("span",{class:"ds-table__cell-tag-control-track"},s))}const l=p(e);const r=f(e)||l?e:{primary:e,fontFeature:typeof e==="number"?"tabular-nums":"normal"};const i=r.wrap??t.wrap??false;return a("span",{class:{"ds-table__cell-copy":true,"ds-table__cell-copy--wrap":i}},a("ds-text",{class:"ds-table__cell-primary ds-table__cell-track ds-table__cell-track--text",as:"span",variant:"text-body-medium",color:"primary",lineTruncation:i?"none":1,wrap:i?"wrap":"nowrap",fontFeature:r.fontFeature??"normal"},r.primary),r.secondary!==undefined&&r.secondary!==""&&a("ds-text",{class:"ds-table__cell-secondary ds-table__cell-track ds-table__cell-track--text",as:"span",variant:l?"text-body-medium":"text-body-small",color:l?"primary":"secondary",lineTruncation:i?"none":1,wrap:i?"wrap":"nowrap"},r.secondary))}renderRow(e){const t=this.selectedSet.has(e.id);const s=e.selectable!==false&&!e.disabled;return a("tr",{key:e.id,class:{"ds-table__row":true,"ds-table__row--selected":t,"ds-table__row--disabled":!!e.disabled},"data-row-id":e.id,"data-selected":t?"true":undefined,"aria-disabled":e.disabled?"true":undefined},this.selectable&&a("td",{class:"ds-table__cell ds-table__selection-cell"},this.renderSelectionControl(`${t?"Deselect":"Select"} ${C(e,this.columns)}`,t,false,!s,(()=>this.emitRowSelection(e)))),this.columns.map((t=>{const s=t.align??"start";const l=e.cells[t.id];const r=g(l);const i=w(l);const n=v(l);const o=y(l);const d=p(l);const c=l==null||k(l);const b=x(l);const h=d||!r&&!i&&!n&&!o&&!c&&!b;const _=h&&!d&&(!f(l)||!l.secondary);const u=r?l.variant??"tag-only":undefined;const m=h?d?"primary-pair":_?"single":"multi":undefined;const z=r?"tag":i?"icon":n?"image":o?"action":d?"primary-text":c?"empty":b?"blank":"text";return a("td",{key:`${e.id}:${t.id}`,class:{"ds-table__cell":true,[`ds-table__cell--align-${s}`]:true,"ds-table__cell--tag":r,[`ds-table__cell--tag-${u}`]:r,"ds-table__cell--icon":i,"ds-table__cell--image":n,"ds-table__cell--action":o,"ds-table__cell--primary-text":d,"ds-table__cell--text-single":_,"ds-table__cell--text-multi":h&&!_,"ds-table__cell--empty":c,"ds-table__cell--blank":b},"data-column-id":t.id,"data-cell-type":z,"data-cell-variant":u??m},a("span",{class:"ds-table__cell-content"},this.renderCellValue(l,t,e)))})))}renderDataBodies(){if(!this.grouped){return a("tbody",{class:"ds-table__body"},this.rows.map((e=>this.renderRow(e))))}return this.groups.map((e=>{const t=N(e);const s=e.countLabel??`${t} ${t===1?"item":"items"}`;return a("tbody",{class:"ds-table__body ds-table__group","data-group-id":e.id,key:e.id},a("tr",{class:"ds-table__group-row"},a("th",{class:"ds-table__group-cell",scope:"rowgroup",colSpan:this.totalColumns},a("span",{class:"ds-table__group-content"},a("ds-icon",{name:"GroupBy",size:"sm",color:"secondary","aria-hidden":"true"}),a("ds-text",{as:"span",variant:"text-body-small",emphasis:true,color:"primary"},e.label),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},s)))),e.rows.map((e=>this.renderRow(e))))}))}renderSkeletonBody(){const e=Math.min(20,Math.max(1,Math.round(this.skeletonRows)||1));return a("tbody",{class:"ds-table__body ds-table__skeleton-body"},Array.from({length:e},((e,t)=>a("tr",{class:"ds-table__row ds-table__skeleton-row",key:`skeleton-${t}`},this.selectable&&a("td",{class:"ds-table__cell ds-table__selection-cell"},a("ds-skeleton",{variant:"icon",iconSize:"md"})),this.columns.map((e=>a("td",{class:"ds-table__cell",key:`skeleton-${t}:${e.id}`},a("span",{class:"ds-table__cell-content"},a("ds-skeleton",{variant:"text",textVariant:"text-body-medium",width:"100%"})))))))))}renderStateBody(e){const t=e==="error";return a("tbody",{class:"ds-table__body ds-table__state-body"},a("tr",{class:"ds-table__state-row"},a("td",{class:"ds-table__state-cell",colSpan:this.totalColumns},a("ds-empty-state",{icon:t?"ErrorTriangle":"Inbox",heading:t?this.errorHeading:this.emptyHeading,body:t?this.errorBody:this.emptyBody}))))}renderLazyBody(){if(!this.lazyLoading||!this.hasData)return null;const e=this.loadMoreError?.trim();const t=this.loadMoreMode==="manual"||!this.intersectionSupported;return a("tbody",{class:"ds-table__body ds-table__load-body"},a("tr",{class:"ds-table__load-row",ref:e=>{this.sentinelEl=e??null}},a("td",{class:"ds-table__load-cell",colSpan:this.totalColumns},e?a("span",{class:"ds-table__load-content ds-table__load-content--error"},a("ds-icon",{name:"ErrorTriangle",size:"sm",color:"negative","aria-hidden":"true"}),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},e),a("ds-button-unfilled",{label:this.retryLabel,size:"sm",onDsClick:()=>this.requestLoadMore("retry")})):this.loadingMore?a("span",{class:"ds-table__load-content"},a("ds-loader",{size:"sm",color:"secondary"}),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},this.loadingMoreLabel)):this.hasMore&&t?a("ds-button-unfilled",{label:this.loadMoreLabel,size:"sm",onDsClick:()=>this.requestLoadMore("manual")}):this.hasMore?a("span",{class:"ds-table__auto-sentinel","aria-hidden":"true"}):a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},this.endOfResultsLabel))))}render(){const e=this.selectionState;const t=this.scrollLabel?.trim()||`${this.caption} scroll area`;const s=this.loading&&!this.hasData;const r=!this.hasData&&this.error;const i=this.resolvedMaxHeight?{"--ds-table-max-block-size":this.resolvedMaxHeight}:undefined;return a(l,{key:"32dcb3110b27ba0410d2eeaeea5993108956a4e2",class:"table-host"},a("div",{key:"ec2dcb4ea6dee5a8da33d50942ff665b0d92c32f",class:{"ds-table":true,"ds-table--sticky-header":this.stickyHeader}},a("div",{key:"4db3ba997b6db91a8695d6332756d6cc68080410",class:{"ds-table__frame":true,"ds-table__frame--overflow-start":this.overflowStart,"ds-table__frame--overflow-end":this.overflowEnd}},a("div",{key:"d55728df9708952a0d9e5f3df847827a0b7192d2",class:"ds-table__viewport",style:i,ref:e=>{this.viewportEl=e??null},role:this.scrollable?"region":undefined,"aria-label":this.scrollable?t:undefined,tabIndex:this.scrollable?0:undefined},a("table",{key:"877ce7c336329e841a208881375f25d2a5a585fa",class:{"ds-table__table":true,"ds-table__table--selectable":this.selectable},style:this.tableStyle,"aria-busy":s||this.loadingMore?"true":undefined,ref:e=>{this.tableEl=e??null}},a("caption",{key:"8c6a3083f4f13a1e90e50cf44edcdf9c9890953b",class:{"ds-table__caption":true,"ds-visually-hidden":this.captionVisibility==="hidden"}},a("ds-text",{key:"8f9d119643c5b583fe2ac7bf87e4da3347493a15",as:"span",variant:"text-title-small",emphasis:true,color:"primary"},this.caption)),a("colgroup",{key:"6534a2ddbb2cc5cfcdfa419a25169851544c1595"},this.selectable&&a("col",{key:"d8b2d1a16fe5da160a9463ce6463eb588aab6220",class:"ds-table__selection-column"}),this.columns.map((e=>{const t=$(e);return a("col",{key:e.id,style:t?{width:t}:undefined})}))),a("thead",{key:"13b3b87dd74b8ca0773168c57e6b76b930856da4",class:"ds-table__head"},a("tr",{key:"e9adebc210a6369324513bf3801abb8a7918f942",class:"ds-table__header-row"},this.selectable&&a("th",{key:"262e618175339019e77964b47e1d8a413b2b1ec0",class:"ds-table__header-cell ds-table__selection-cell",scope:"col"},this.renderSelectionControl(e.allSelected?"Deselect all loaded rows":"Select all loaded rows",e.allSelected,e.indeterminate,e.selectableRowIds.length===0,(()=>this.emitAllSelection()))),this.columns.map((e=>this.renderColumnHeader(e))))),s?this.renderSkeletonBody():r?this.renderStateBody("error"):this.hasData?this.renderDataBodies():this.renderStateBody("empty"),!s&&!r&&this.renderLazyBody()))),a("div",{key:"8470d11656985f6ba9776f7545923705441209f3",class:"ds-visually-hidden",role:"status","aria-live":"polite","aria-atomic":"true"},this.announcement)))}static get watchers(){return{columns:[{handleStructureChange:0}],grouping:[{handleStructureChange:0}],rows:[{handleDataChange:0}],groups:[{handleDataChange:0}],loadIdentity:[{handleLoadIdentityChange:0}],lazyLoading:[{handleLazyConfigurationChange:0}],loadMoreMode:[{handleLazyConfigurationChange:0}],loadMoreThreshold:[{handleLazyConfigurationChange:0}],loadingMore:[{handleLoadingMoreChange:0}],loadMoreError:[{handleLoadMoreErrorChange:0}],hasMore:[{handleHasMoreChange:0}]}}static get style(){return T()}},[2,"ds-table",{columns:[16],rows:[16],groups:[16],grouping:[16],sort:[16],caption:[1],captionVisibility:[1,"caption-visibility"],stickyHeader:[4,"sticky-header"],maxHeight:[8,"max-height"],scrollLabel:[1,"scroll-label"],selectionMode:[1,"selection-mode"],selectedRowIds:[16],loading:[4],skeletonRows:[2,"skeleton-rows"],emptyHeading:[1,"empty-heading"],emptyBody:[1,"empty-body"],error:[4],errorHeading:[1,"error-heading"],errorBody:[1,"error-body"],emptyCellLabel:[1,"empty-cell-label"],lazyLoading:[4,"lazy-loading"],loadMoreMode:[1,"load-more-mode"],hasMore:[4,"has-more"],loadingMore:[4,"loading-more"],loadMoreError:[1,"load-more-error"],loadIdentity:[8,"load-identity"],loadMoreThreshold:[2,"load-more-threshold"],loadMoreLabel:[1,"load-more-label"],retryLabel:[1,"retry-label"],loadingMoreLabel:[1,"loading-more-label"],endOfResultsLabel:[1,"end-of-results-label"],rowsLoadedLabel:[1,"rows-loaded-label"],overflowStart:[32],overflowEnd:[32],scrollable:[32],intersectionSupported:[32],announcement:[32]},undefined,{columns:[{handleStructureChange:0}],grouping:[{handleStructureChange:0}],rows:[{handleDataChange:0}],groups:[{handleDataChange:0}],loadIdentity:[{handleLoadIdentityChange:0}],lazyLoading:[{handleLazyConfigurationChange:0}],loadMoreMode:[{handleLazyConfigurationChange:0}],loadMoreThreshold:[{handleLazyConfigurationChange:0}],loadingMore:[{handleLoadingMoreChange:0}],loadMoreError:[{handleLoadMoreErrorChange:0}],hasMore:[{handleHasMoreChange:0}]}]);function q(){if(typeof customElements==="undefined"){return}const e=["ds-table","ds-badge","ds-button-unfilled","ds-checkbox","ds-empty-state","ds-icon","ds-loader","ds-skeleton","ds-tag","ds-text"];e.forEach((e=>{switch(e){case"ds-table":if(!customElements.get(r(e))){customElements.define(r(e),H)}break;case"ds-badge":if(!customElements.get(r(e))){i()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){n()}break;case"ds-checkbox":if(!customElements.get(r(e))){o()}break;case"ds-empty-state":if(!customElements.get(r(e))){d()}break;case"ds-icon":if(!customElements.get(r(e))){c()}break;case"ds-loader":if(!customElements.get(r(e))){b()}break;case"ds-skeleton":if(!customElements.get(r(e))){h()}break;case"ds-tag":if(!customElements.get(r(e))){_()}break;case"ds-text":if(!customElements.get(r(e))){u()}break}}))}q();const O=H;const F=q;export{O as DsTable,F as defineCustomElement};
2
+ //# sourceMappingURL=ds-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TABLE_COLUMN_WIDTH_TOKENS","xs","sm","md","lg","xl","isTableCellText","value","isTableCellPrimaryText","kind","isTableCellTag","isTableCellIcon","isTableCellImage","isTableCellAction","isTableCellEmpty","isTableCellBlank","tableCellPrimary","label","alt","ariaLabel","primary","tableRowSelectionLabel","row","columns","explicit","selectionLabel","trim","column","cells","id","String","nextTableSortState","current","columnId","direction","nextTableGroupOrder","grouping","clampTableColumnSize","size","Number","isFinite","undefined","minimum","minSize","maximum","maxSize","Math","max","POSITIVE_INFINITY","min","tableColumnSize","width","tableExplicitMinWidth","widths","map","filter","length","join","tableRows","rows","groups","grouped","flatMap","group","canSelectRow","selectable","disabled","deriveTableSelectionState","selectedRowIds","selected","Set","selectableRowIds","selectedLoadedCount","reduce","count","has","allSelected","indeterminate","toggleTableRowSelection","delete","add","toggleAllLoadedTableRows","loadedRows","state","resolvedTableGroupCount","total","totalCount","tableModelIssues","issues","columnIds","push","groupIds","rowIds","tableCss","Table","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","sort","captionVisibility","stickyHeader","selectionMode","loading","skeletonRows","emptyHeading","emptyBody","error","errorHeading","errorBody","emptyCellLabel","lazyLoading","loadMoreMode","hasMore","loadingMore","loadIdentity","loadMoreThreshold","loadMoreLabel","retryLabel","loadingMoreLabel","endOfResultsLabel","rowsLoadedLabel","overflowStart","overflowEnd","scrollable","intersectionSupported","announcement","viewportEl","tableEl","sentinelEl","resizeObserver","intersectionObserver","observedSentinel","requestPending","requestedRowCount","previousLoadedRowCount","previousModelWarning","hasLoaded","reconnectFrame","syncOverflow","viewport","overflows","scrollWidth","clientWidth","scrollHeight","clientHeight","nextStart","scrollLeft","nextEnd","componentWillLoad","IntersectionObserver","warnModelIssues","componentDidLoad","connectViewportObserver","connectIntersectionObserver","componentDidRender","connectedCallback","cancelAnimationFrame","requestAnimationFrame","disconnectedCallback","removeEventListener","disconnect","disconnectIntersectionObserver","handleStructureChange","resetLoadRequest","handleDataChange","nextCount","added","replace","handleLoadIdentityChange","handleLazyConfigurationChange","handleLoadingMoreChange","handleLoadMoreErrorChange","handleHasMoreChange","hadMore","hasData","totalColumns","selectedSet","selectionState","resolvedMaxHeight","maxHeight","tableStyle","caption","unshift","some","headerSegments","segment","sortKey","message","console","warn","addEventListener","passive","ResizeObserver","observe","loadMoreError","threshold","entries","entry","isIntersecting","requestLoadMore","root","rootMargin","reason","dsLoadMore","emit","loadedRowCount","emitSort","dsGroupingChange","sortable","dsSortChange","sortButtonLabel","header","next","emitRowSelection","includes","dsSelectionChange","scope","changedRowId","emitAllSelection","renderSelectionControl","checked","onActivate","h","class","type","role","onClick","presentation","renderColumnHeader","groupedColumn","activeMemberSegment","find","activeMemberSort","activeSort","align","memberAriaSort","labelControl","index","segmentActive","segmentInteractive","as","variant","emphasis","color","lineTruncation","control","key","separator","sortControl","icon","hasBorder","activeFill","isActive","pressScale","onDsClick","renderCellValue","name","src","isInactive","isLoading","event","stopPropagation","dsCellAction","actionId","rowId","tag","intent","contrast","rounded","isInset","text","primaryText","fontFeature","wraps","wrap","secondary","renderRow","rowSelectable","tagCell","iconCell","imageCell","actionCell","primaryTextCell","emptyCell","blankCell","textCell","singleTextCell","tagVariant","textVariant","cellType","renderDataBodies","countLabel","colSpan","renderSkeletonBody","round","Array","from","_","iconSize","renderStateBody","heading","body","renderLazyBody","manualFallback","ref","element","render","selection","regionLabel","scrollLabel","initialLoading","initialError","viewportStyle","Host","style","tabIndex"],"sources":["src/wc/components/Table/table-model.ts","src/wc/components/Table/Table.css?tag=ds-table&encapsulation=scoped","src/wc/components/Table/Table.tsx"],"sourcesContent":["import type {\n TableCellBlank,\n TableCellAction,\n TableCellEmpty,\n TableCellIcon,\n TableCellImage,\n TableCellPrimaryText,\n TableCellText,\n TableCellTag,\n TableCellValue,\n TableColumn,\n TableGroup,\n TableGroupingState,\n TableRow,\n TableSortState,\n} from './table-types';\n\nexport interface TableSelectionState {\n selectableRowIds: string[];\n selectedLoadedCount: number;\n allSelected: boolean;\n indeterminate: boolean;\n}\n\nconst TABLE_COLUMN_WIDTH_TOKENS = {\n xs: '--dimension-table-column-width-xs',\n sm: '--dimension-table-column-width-sm',\n md: '--dimension-table-column-width-md',\n lg: '--dimension-table-column-width-lg',\n xl: '--dimension-table-column-width-xl',\n} as const;\n\nexport function isTableCellText(value: TableCellValue): value is TableCellText {\n return typeof value === 'object' && value !== null && 'primary' in value && !('kind' in value);\n}\n\nexport function isTableCellPrimaryText(value: TableCellValue): value is TableCellPrimaryText {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'primary-text';\n}\n\nexport function isTableCellTag(value: TableCellValue): value is TableCellTag {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'tag';\n}\n\nexport function isTableCellIcon(value: TableCellValue): value is TableCellIcon {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'icon';\n}\n\nexport function isTableCellImage(value: TableCellValue): value is TableCellImage {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'image';\n}\n\nexport function isTableCellAction(value: TableCellValue): value is TableCellAction {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'action';\n}\n\nexport function isTableCellEmpty(value: TableCellValue): value is TableCellEmpty {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'empty';\n}\n\nexport function isTableCellBlank(value: TableCellValue): value is TableCellBlank {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'blank';\n}\n\nexport function tableCellPrimary(value: TableCellValue): string | number | null {\n if (value == null) return null;\n if (isTableCellTag(value)) return value.label;\n if (isTableCellIcon(value)) return null;\n if (isTableCellImage(value)) return value.alt;\n if (isTableCellAction(value)) return value.label ?? value.ariaLabel;\n if (isTableCellPrimaryText(value)) return value.primary;\n if (isTableCellEmpty(value) || isTableCellBlank(value)) return null;\n return isTableCellText(value) ? value.primary : value;\n}\n\nexport function tableRowSelectionLabel(row: TableRow, columns: TableColumn[]): string {\n const explicit = row.selectionLabel?.trim();\n if (explicit) return explicit;\n\n for (const column of columns) {\n const primary = tableCellPrimary(row.cells[column.id]);\n if (primary != null && String(primary).trim()) return String(primary);\n }\n\n return row.id;\n}\n\nexport function nextTableSortState(\n current: TableSortState | null | undefined,\n columnId: string,\n): TableSortState {\n if (current?.columnId !== columnId) return { columnId, direction: 'asc' };\n if (current.direction === 'asc') return { columnId, direction: 'desc' };\n return { columnId, direction: 'asc' };\n}\n\nexport function nextTableGroupOrder(grouping: TableGroupingState): TableGroupingState {\n return {\n ...grouping,\n direction: grouping.direction === 'asc' ? 'desc' : 'asc',\n };\n}\n\nexport function clampTableColumnSize(column: TableColumn): number | undefined {\n if (typeof column.size !== 'number' || !Number.isFinite(column.size) || column.size <= 0) {\n return undefined;\n }\n\n const minimum = Number.isFinite(column.minSize) && (column.minSize ?? 0) > 0\n ? column.minSize!\n : 0;\n const maximum = Number.isFinite(column.maxSize) && (column.maxSize ?? 0) > 0\n ? Math.max(column.maxSize!, minimum)\n : Number.POSITIVE_INFINITY;\n\n return Math.min(Math.max(column.size!, minimum), maximum);\n}\n\nexport function tableColumnSize(column: TableColumn): string | undefined {\n if (typeof column.size === 'string') {\n return `var(${TABLE_COLUMN_WIDTH_TOKENS[column.size]})`;\n }\n const width = clampTableColumnSize(column);\n return width == null ? undefined : `${width}px`;\n}\n\nexport function tableExplicitMinWidth(columns: TableColumn[]): string | undefined {\n const widths = columns.map(tableColumnSize).filter((width): width is string => !!width);\n if (widths.length === 0) return undefined;\n return widths.length === 1 ? widths[0] : `calc(${widths.join(' + ')})`;\n}\n\nexport function tableRows(rows: TableRow[], groups: TableGroup[], grouped: boolean): TableRow[] {\n return grouped ? groups.flatMap(group => group.rows) : rows;\n}\n\nfunction canSelectRow(row: TableRow): boolean {\n return row.selectable !== false && !row.disabled;\n}\n\nexport function deriveTableSelectionState(\n rows: TableRow[],\n selectedRowIds: readonly string[],\n): TableSelectionState {\n const selected = new Set(selectedRowIds);\n const selectableRowIds = rows.filter(canSelectRow).map(row => row.id);\n const selectedLoadedCount = selectableRowIds.reduce(\n (count, id) => count + (selected.has(id) ? 1 : 0),\n 0,\n );\n\n return {\n selectableRowIds,\n selectedLoadedCount,\n allSelected: selectableRowIds.length > 0 && selectedLoadedCount === selectableRowIds.length,\n indeterminate: selectedLoadedCount > 0 && selectedLoadedCount < selectableRowIds.length,\n };\n}\n\nexport function toggleTableRowSelection(\n selectedRowIds: readonly string[],\n row: TableRow,\n): string[] {\n if (!canSelectRow(row)) return [...selectedRowIds];\n const selected = new Set(selectedRowIds);\n if (selected.has(row.id)) selected.delete(row.id);\n else selected.add(row.id);\n return [...selected];\n}\n\nexport function toggleAllLoadedTableRows(\n selectedRowIds: readonly string[],\n loadedRows: TableRow[],\n): string[] {\n const selected = new Set(selectedRowIds);\n const state = deriveTableSelectionState(loadedRows, selectedRowIds);\n\n for (const id of state.selectableRowIds) {\n if (state.allSelected) selected.delete(id);\n else selected.add(id);\n }\n\n return [...selected];\n}\n\nexport function resolvedTableGroupCount(group: TableGroup): number {\n const total = Number.isFinite(group.totalCount) ? Math.max(0, group.totalCount!) : 0;\n return Math.max(total, group.rows.length);\n}\n\nexport function tableModelIssues(\n columns: TableColumn[],\n rows: TableRow[],\n groups: TableGroup[],\n grouped: boolean,\n): string[] {\n const issues: string[] = [];\n const columnIds = new Set<string>();\n for (const column of columns) {\n if (!column.id.trim()) issues.push('Every column requires a non-empty id.');\n else if (columnIds.has(column.id)) issues.push(`Duplicate column id: ${column.id}`);\n columnIds.add(column.id);\n }\n\n const groupIds = new Set<string>();\n if (grouped) {\n for (const group of groups) {\n if (!group.id.trim()) issues.push('Every group requires a non-empty id.');\n else if (groupIds.has(group.id)) issues.push(`Duplicate group id: ${group.id}`);\n groupIds.add(group.id);\n if (group.totalCount != null && group.totalCount < group.rows.length) {\n issues.push(`Group ${group.id} totalCount is smaller than its loaded row count.`);\n }\n }\n }\n\n const rowIds = new Set<string>();\n for (const row of tableRows(rows, groups, grouped)) {\n if (!row.id.trim()) issues.push('Every row requires a non-empty id.');\n else if (rowIds.has(row.id)) issues.push(`Duplicate row id: ${row.id}`);\n rowIds.add(row.id);\n }\n\n return [...new Set(issues)];\n}\n","@import '../../styles/table.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n deriveTableSelectionState,\n isTableCellAction,\n isTableCellBlank,\n isTableCellEmpty,\n isTableCellIcon,\n isTableCellImage,\n isTableCellPrimaryText,\n isTableCellText,\n isTableCellTag,\n nextTableGroupOrder,\n nextTableSortState,\n resolvedTableGroupCount,\n tableColumnSize,\n tableExplicitMinWidth,\n tableModelIssues,\n tableRows,\n tableRowSelectionLabel,\n toggleAllLoadedTableRows,\n toggleTableRowSelection,\n} from './table-model';\nimport type {\n TableCaptionVisibility,\n TableCellActionDetail,\n TableCellValue,\n TableColumn,\n TableGroup,\n TableGroupingChangeDetail,\n TableGroupingState,\n TableLoadMoreDetail,\n TableLoadMoreMode,\n TableLoadMoreReason,\n TableRow,\n TableSelectionChangeDetail,\n TableSelectionMode,\n TableSortChangeDetail,\n TableSortState,\n} from './table-types';\n\n@Component({\n tag: 'ds-table',\n styleUrl: 'Table.css',\n scoped: true,\n})\nexport class Table {\n /** Stable column definitions. Assign through JavaScript. */\n @Prop() columns: TableColumn[] = [];\n /** Ungrouped row data. Ignored while grouping is active. Assign through JavaScript. */\n @Prop() rows: TableRow[] = [];\n /** One level of application-owned grouped data. Assign through JavaScript. */\n @Prop() groups: TableGroup[] = [];\n /** Controlled grouping column and group-order direction. */\n @Prop() grouping: TableGroupingState | null = null;\n /** Controlled member-row sort state. */\n @Prop() sort: TableSortState | null = null;\n\n /** Required accessible table name, rendered as a native caption. */\n @Prop() caption!: string;\n @Prop() captionVisibility: TableCaptionVisibility = 'hidden';\n @Prop() stickyHeader: boolean = false;\n /** Maximum scroll-region height. Numbers resolve to CSS pixels. */\n @Prop() maxHeight: string | number | undefined;\n /** Optional explicit label for the horizontal/vertical scroll region. */\n @Prop() scrollLabel: string | undefined;\n\n @Prop() selectionMode: TableSelectionMode = 'none';\n /** Controlled selected row identities. IDs outside the loaded rows are preserved. */\n @Prop() selectedRowIds: string[] = [];\n\n /** Initial loading state. Existing rows stay visible; incremental loading uses loadingMore. */\n @Prop() loading: boolean = false;\n @Prop() skeletonRows: number = 5;\n @Prop() emptyHeading: string = 'No results';\n @Prop() emptyBody: string = 'No data is available.';\n /** Initial error state. Existing rows stay visible; incremental failures use loadMoreError. */\n @Prop() error: boolean = false;\n @Prop() errorHeading: string = 'Unable to load data';\n @Prop() errorBody: string = 'The data could not be loaded.';\n @Prop() emptyCellLabel: string = 'Not available';\n\n /** Enable application-owned incremental loading without pagination. */\n @Prop() lazyLoading: boolean = false;\n @Prop() loadMoreMode: TableLoadMoreMode = 'auto';\n @Prop() hasMore: boolean = false;\n @Prop() loadingMore: boolean = false;\n @Prop() loadMoreError: string | undefined;\n /** Reset key for a new query/group/sort dataset. */\n @Prop() loadIdentity: string | number = 'default';\n /** IntersectionObserver root margin in CSS pixels. */\n @Prop() loadMoreThreshold: number = 0;\n @Prop() loadMoreLabel: string = 'Load more';\n @Prop() retryLabel: string = 'Retry';\n @Prop() loadingMoreLabel: string = 'Loading more results';\n @Prop() endOfResultsLabel: string = 'All results loaded';\n /** Supports {count} and {total} placeholders. */\n @Prop() rowsLoadedLabel: string = '{count} more rows loaded. {total} rows loaded.';\n\n @Event() dsSortChange!: EventEmitter<TableSortChangeDetail>;\n @Event() dsGroupingChange!: EventEmitter<TableGroupingChangeDetail>;\n @Event() dsSelectionChange!: EventEmitter<TableSelectionChangeDetail>;\n @Event() dsLoadMore!: EventEmitter<TableLoadMoreDetail>;\n @Event() dsCellAction!: EventEmitter<TableCellActionDetail>;\n\n @State() private overflowStart = false;\n @State() private overflowEnd = false;\n @State() private scrollable = false;\n @State() private intersectionSupported = true;\n @State() private announcement = '';\n\n private viewportEl: HTMLElement | null = null;\n private tableEl: HTMLTableElement | null = null;\n private sentinelEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private intersectionObserver: IntersectionObserver | null = null;\n private observedSentinel: HTMLElement | null = null;\n private requestPending = false;\n private requestedRowCount = 0;\n private previousLoadedRowCount = 0;\n private previousModelWarning = '';\n private hasLoaded = false;\n private reconnectFrame: number | null = null;\n\n componentWillLoad(): void {\n this.previousLoadedRowCount = this.loadedRows.length;\n this.intersectionSupported = typeof IntersectionObserver !== 'undefined';\n this.warnModelIssues();\n }\n\n componentDidLoad(): void {\n this.hasLoaded = true;\n this.connectViewportObserver();\n this.syncOverflow();\n this.connectIntersectionObserver();\n }\n\n componentDidRender(): void {\n this.connectIntersectionObserver();\n }\n\n connectedCallback(): void {\n if (!this.hasLoaded) return;\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = requestAnimationFrame(() => {\n this.reconnectFrame = null;\n this.connectViewportObserver();\n this.syncOverflow();\n this.connectIntersectionObserver();\n });\n }\n\n disconnectedCallback(): void {\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = null;\n this.viewportEl?.removeEventListener('scroll', this.syncOverflow);\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.disconnectIntersectionObserver();\n }\n\n @Watch('columns')\n @Watch('grouping')\n handleStructureChange(): void {\n this.warnModelIssues();\n this.resetLoadRequest();\n }\n\n @Watch('rows')\n @Watch('groups')\n handleDataChange(): void {\n const nextCount = this.loadedRows.length;\n if (nextCount > this.previousLoadedRowCount) {\n const added = nextCount - this.previousLoadedRowCount;\n this.announcement = this.rowsLoadedLabel\n .replace('{count}', String(added))\n .replace('{total}', String(nextCount));\n }\n if (nextCount > this.requestedRowCount) this.requestPending = false;\n this.previousLoadedRowCount = nextCount;\n this.warnModelIssues();\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadIdentity')\n handleLoadIdentityChange(): void {\n this.previousLoadedRowCount = this.loadedRows.length;\n this.resetLoadRequest();\n }\n\n @Watch('lazyLoading')\n @Watch('loadMoreMode')\n @Watch('loadMoreThreshold')\n handleLazyConfigurationChange(): void {\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadingMore')\n handleLoadingMoreChange(loading: boolean): void {\n if (loading) {\n this.requestPending = true;\n this.announcement = this.loadingMoreLabel;\n } else if (this.loadMoreMode === 'manual') {\n // A completed manual request may legitimately append no rows. Permit a\n // deliberate follow-up activation; automatic mode stays guarded until\n // the data shape or query identity changes.\n this.requestPending = false;\n }\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadMoreError')\n handleLoadMoreErrorChange(error: string | undefined): void {\n if (error?.trim()) {\n this.requestPending = false;\n this.announcement = error;\n }\n this.disconnectIntersectionObserver();\n }\n\n @Watch('hasMore')\n handleHasMoreChange(hasMore: boolean, hadMore: boolean): void {\n if (!hasMore) {\n this.requestPending = false;\n if (hadMore) this.announcement = this.endOfResultsLabel;\n }\n this.disconnectIntersectionObserver();\n }\n\n private get grouped(): boolean {\n return this.grouping !== null;\n }\n\n private get selectable(): boolean {\n return this.selectionMode === 'multiple';\n }\n\n private get loadedRows(): TableRow[] {\n return tableRows(this.rows, this.groups, this.grouped);\n }\n\n private get hasData(): boolean {\n return this.loadedRows.length > 0;\n }\n\n private get totalColumns(): number {\n return this.columns.length + (this.selectable ? 1 : 0);\n }\n\n private get selectedSet(): Set<string> {\n return new Set(this.selectedRowIds);\n }\n\n private get selectionState() {\n return deriveTableSelectionState(this.loadedRows, this.selectedRowIds);\n }\n\n private get resolvedMaxHeight(): string | undefined {\n if (this.maxHeight == null || this.maxHeight === '') return undefined;\n return typeof this.maxHeight === 'number' ? `${Math.max(0, this.maxHeight)}px` : this.maxHeight;\n }\n\n private get tableStyle(): Record<string, string> | undefined {\n const width = tableExplicitMinWidth(this.columns);\n return width == null ? undefined : { '--ds-table-explicit-min-inline-size': width };\n }\n\n private warnModelIssues(): void {\n const issues = tableModelIssues(this.columns, this.rows, this.groups, this.grouped);\n if (!this.caption?.trim()) issues.unshift('A non-empty caption is required.');\n if (this.grouping && !this.columns.some(column => column.id === this.grouping!.columnId)) {\n issues.push(`Grouping references unknown column id: ${this.grouping.columnId}`);\n }\n if (\n this.sort &&\n !this.columns.some(column =>\n column.id === this.sort!.columnId ||\n column.headerSegments?.some(segment => segment.sortKey === this.sort!.columnId),\n )\n ) {\n issues.push(`Sorting references unknown column id: ${this.sort.columnId}`);\n }\n const message = issues.join(' ');\n if (!message || message === this.previousModelWarning) return;\n this.previousModelWarning = message;\n console.warn(`[ds-table] ${message}`);\n }\n\n private connectViewportObserver(): void {\n if (!this.viewportEl) return;\n this.viewportEl.removeEventListener('scroll', this.syncOverflow);\n this.viewportEl.addEventListener('scroll', this.syncOverflow, { passive: true });\n\n this.resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(this.syncOverflow);\n this.resizeObserver.observe(this.viewportEl);\n if (this.tableEl) this.resizeObserver.observe(this.tableEl);\n }\n\n private syncOverflow = (): void => {\n const viewport = this.viewportEl;\n if (!viewport) return;\n const overflows = viewport.scrollWidth - viewport.clientWidth > 1;\n const scrollable = overflows || viewport.scrollHeight - viewport.clientHeight > 1;\n const nextStart = overflows && viewport.scrollLeft > 1;\n const nextEnd = overflows && viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 1;\n if (nextStart !== this.overflowStart) this.overflowStart = nextStart;\n if (nextEnd !== this.overflowEnd) this.overflowEnd = nextEnd;\n if (scrollable !== this.scrollable) this.scrollable = scrollable;\n };\n\n private resetLoadRequest(): void {\n this.requestPending = false;\n this.requestedRowCount = this.loadedRows.length;\n this.disconnectIntersectionObserver();\n }\n\n private disconnectIntersectionObserver(): void {\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.observedSentinel = null;\n }\n\n private connectIntersectionObserver(): void {\n if (\n !this.lazyLoading ||\n this.loadMoreMode !== 'auto' ||\n !this.hasMore ||\n !!this.loadMoreError?.trim() ||\n !this.intersectionSupported ||\n !this.viewportEl ||\n !this.sentinelEl\n ) {\n this.disconnectIntersectionObserver();\n return;\n }\n\n if (this.intersectionObserver && this.observedSentinel === this.sentinelEl) return;\n this.disconnectIntersectionObserver();\n\n const threshold = Number.isFinite(this.loadMoreThreshold)\n ? Math.max(0, this.loadMoreThreshold)\n : 0;\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n if (entries.some(entry => entry.isIntersecting)) this.requestLoadMore('auto');\n },\n {\n root: this.viewportEl,\n rootMargin: `0px 0px ${threshold}px 0px`,\n },\n );\n this.observedSentinel = this.sentinelEl;\n this.intersectionObserver.observe(this.sentinelEl);\n }\n\n private requestLoadMore(reason: TableLoadMoreReason): void {\n if (\n !this.lazyLoading ||\n !this.hasMore ||\n this.loadingMore ||\n (reason !== 'retry' && !!this.loadMoreError?.trim()) ||\n this.requestPending\n ) return;\n\n this.requestPending = true;\n this.requestedRowCount = this.loadedRows.length;\n this.announcement = this.loadingMoreLabel;\n this.dsLoadMore.emit({\n reason,\n loadIdentity: this.loadIdentity,\n loadedRowCount: this.requestedRowCount,\n });\n }\n\n private emitSort(column: TableColumn, sortKey = column.id): void {\n if (this.grouping?.columnId === column.id && sortKey === column.id) {\n this.dsGroupingChange.emit({ grouping: nextTableGroupOrder(this.grouping) });\n return;\n }\n if (!column.sortable) return;\n this.dsSortChange.emit({ sort: nextTableSortState(this.sort, sortKey) });\n }\n\n private sortButtonLabel(column: TableColumn, sortKey = column.id, label = column.header): string {\n if (this.grouping?.columnId === column.id && sortKey === column.id) {\n const next = this.grouping.direction === 'asc' ? 'descending' : 'ascending';\n return `Sort ${column.header} groups ${next}. Currently grouped ${this.grouping.direction === 'asc' ? 'ascending' : 'descending'}.`;\n }\n\n if (this.sort?.columnId !== sortKey) return `Sort ${label} ascending`;\n if (this.sort.direction === 'asc') return `Sort ${label} descending. Currently ascending.`;\n return `Sort ${label} ascending. Currently descending.`;\n }\n\n private emitRowSelection(row: TableRow): void {\n const next = toggleTableRowSelection(this.selectedRowIds, row);\n const selected = next.includes(row.id);\n this.dsSelectionChange.emit({\n selectedRowIds: next,\n scope: 'row',\n changedRowId: row.id,\n selected,\n });\n }\n\n private emitAllSelection(): void {\n this.dsSelectionChange.emit({\n selectedRowIds: toggleAllLoadedTableRows(this.selectedRowIds, this.loadedRows),\n scope: 'all-loaded',\n selected: !this.selectionState.allSelected,\n });\n }\n\n private renderSelectionControl(\n label: string,\n checked: boolean,\n indeterminate: boolean,\n disabled: boolean,\n onActivate: () => void,\n ) {\n return (\n <button\n class=\"ds-table__selection-control\"\n type=\"button\"\n role=\"checkbox\"\n aria-label={label}\n aria-checked={indeterminate ? 'mixed' : String(checked)}\n disabled={disabled}\n onClick={onActivate}\n >\n <ds-checkbox\n label=\"\"\n size=\"md\"\n checked={checked}\n indeterminate={indeterminate}\n presentation={true}\n />\n </button>\n );\n }\n\n private renderColumnHeader(column: TableColumn) {\n const groupedColumn = this.grouping?.columnId === column.id;\n const headerSegments = column.headerSegments?.length\n ? column.headerSegments\n : [{ label: column.header, sortKey: column.id }];\n const activeMemberSegment = !groupedColumn\n ? headerSegments.find(segment => segment.sortKey === this.sort?.columnId)\n : undefined;\n const activeMemberSort = !!activeMemberSegment;\n const activeSort = groupedColumn || activeMemberSort;\n const align = column.align ?? 'start';\n const direction = groupedColumn\n ? this.grouping!.direction\n : activeMemberSort\n ? this.sort!.direction\n : undefined;\n const memberAriaSort = activeMemberSort\n ? (this.sort!.direction === 'asc' ? 'ascending' : 'descending')\n : undefined;\n\n const labelControl = (\n <span class=\"ds-table__header-labels\">\n {headerSegments.map((segment, index) => {\n const segmentActive = groupedColumn\n ? headerSegments.length === 1\n : activeMemberSegment?.sortKey === segment.sortKey;\n const segmentInteractive = !!column.sortable || (groupedColumn && segment.sortKey === column.id);\n const label = (\n <ds-text\n class=\"ds-table__header-label-box ds-control-label-box\"\n as=\"span\"\n variant=\"text-caption\"\n emphasis={segmentActive}\n color=\"inherit\"\n lineTruncation={1}\n >\n {segment.label}\n </ds-text>\n );\n const control = segmentInteractive ? (\n <button\n class=\"ds-table__header-label ds-table__header-label--interactive\"\n type=\"button\"\n aria-label={this.sortButtonLabel(column, segment.sortKey, segment.label)}\n data-sort-control=\"label\"\n data-sort-key={segment.sortKey}\n data-sort-active={segmentActive ? 'true' : undefined}\n onClick={() => this.emitSort(column, segment.sortKey)}\n >\n {label}\n </button>\n ) : (\n <span class=\"ds-table__header-label ds-table__header-static\">{label}</span>\n );\n\n return (\n <span class=\"ds-table__header-segment\" key={segment.sortKey}>\n {control}\n {index < headerSegments.length - 1 && (\n <ds-text\n class=\"ds-table__header-separator\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"tertiary\"\n aria-hidden=\"true\"\n >\n {segment.separator ?? '/'}\n </ds-text>\n )}\n </span>\n );\n })}\n </span>\n );\n const sortControl = (\n <span class=\"ds-table__sort-slot\">\n {activeSort && (\n <ds-button-unfilled\n class=\"ds-table__sort-direction\"\n variant=\"icon\"\n icon={direction === 'asc' ? 'ArrowUp' : 'ArrowDown'}\n size=\"xs\"\n aria-label={this.sortButtonLabel(\n column,\n activeMemberSegment?.sortKey ?? column.id,\n activeMemberSegment?.label ?? column.header,\n )}\n hasBorder={false}\n activeFill={false}\n isActive={true}\n pressScale={false}\n data-sort-control=\"direction\"\n onDsClick={() => this.emitSort(column, activeMemberSegment?.sortKey ?? column.id)}\n />\n )}\n </span>\n );\n\n return (\n <th\n key={column.id}\n class={`ds-table__header-cell ds-table__cell--align-${align}`}\n scope=\"col\"\n aria-sort={memberAriaSort}\n data-column-id={column.id}\n data-grouped={groupedColumn ? 'true' : undefined}\n data-sort-active={activeSort ? 'true' : undefined}\n >\n <span class=\"ds-table__header-content\">\n {align === 'end' && sortControl}\n {align === 'center' && (\n <span\n class=\"ds-table__sort-slot ds-table__sort-slot--balance\"\n data-sort-balance=\"true\"\n aria-hidden=\"true\"\n />\n )}\n {labelControl}\n {align !== 'end' && sortControl}\n </span>\n </th>\n );\n }\n\n private renderCellValue(value: TableCellValue, column: TableColumn, row: TableRow) {\n if (isTableCellBlank(value)) return null;\n\n if (value == null || isTableCellEmpty(value)) {\n return (\n <ds-text\n class=\"ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n >\n <span aria-hidden=\"true\">—</span>\n <span class=\"ds-visually-hidden\">{this.emptyCellLabel}</span>\n </ds-text>\n );\n }\n\n if (isTableCellIcon(value)) {\n return (\n <ds-icon\n name={value.icon}\n size=\"md\"\n color={value.color ?? 'secondary'}\n label={value.label}\n />\n );\n }\n\n if (isTableCellImage(value)) {\n return (\n <span class=\"ds-table__cell-image\">\n {value.src ? (\n <img class=\"ds-table__cell-image-content\" src={value.src} alt={value.alt} loading=\"lazy\" />\n ) : (\n <span\n class=\"ds-table__cell-image-placeholder\"\n role=\"img\"\n aria-label={value.alt}\n />\n )}\n </span>\n );\n }\n\n if (isTableCellAction(value)) {\n return (\n <ds-button-unfilled\n variant={value.variant ?? 'label'}\n size=\"sm\"\n label={value.label ?? ''}\n icon={value.icon ?? ''}\n aria-label={value.ariaLabel ?? null}\n hasBorder={value.hasBorder ?? false}\n isInactive={value.isInactive ?? false}\n isLoading={value.isLoading ?? false}\n onDsClick={event => {\n event.stopPropagation();\n this.dsCellAction.emit({\n actionId: value.actionId,\n rowId: row.id,\n columnId: column.id,\n });\n }}\n />\n );\n }\n\n if (isTableCellTag(value)) {\n const variant = value.variant ?? 'tag-only';\n const tag = (\n <ds-tag\n label={value.label}\n intent={value.intent ?? 'neutral'}\n contrast={value.contrast ?? 'faint'}\n size={variant === 'text-with-tag' ? 'sm' : 'md'}\n icon={value.icon ?? ''}\n rounded={value.rounded ?? false}\n isInset\n />\n );\n\n if (variant === 'tag-only') return tag;\n\n return (\n <span class={`ds-table__cell-tag-stack ds-table__cell-tag-stack--${variant}`}>\n {variant === 'tag-with-text' && tag}\n <ds-text\n class=\"ds-table__cell-tag-text ds-table__cell-track\"\n as=\"span\"\n variant={variant === 'tag-with-text' ? 'text-body-small' : 'text-body-medium'}\n color=\"secondary\"\n lineTruncation={1}\n >\n {value.text}\n </ds-text>\n {variant === 'text-with-tag' && (\n <span class=\"ds-table__cell-tag-control-track\">{tag}</span>\n )}\n </span>\n );\n }\n\n const primaryText = isTableCellPrimaryText(value);\n const text = isTableCellText(value) || primaryText\n ? value\n : { primary: value, fontFeature: typeof value === 'number' ? 'tabular-nums' as const : 'normal' as const };\n const wraps = text.wrap ?? column.wrap ?? false;\n\n return (\n <span class={{ 'ds-table__cell-copy': true, 'ds-table__cell-copy--wrap': wraps }}>\n <ds-text\n class=\"ds-table__cell-primary ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"primary\"\n lineTruncation={wraps ? 'none' : 1}\n wrap={wraps ? 'wrap' : 'nowrap'}\n fontFeature={text.fontFeature ?? 'normal'}\n >\n {text.primary}\n </ds-text>\n {text.secondary !== undefined && text.secondary !== '' && (\n <ds-text\n class=\"ds-table__cell-secondary ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant={primaryText ? 'text-body-medium' : 'text-body-small'}\n color={primaryText ? 'primary' : 'secondary'}\n lineTruncation={wraps ? 'none' : 1}\n wrap={wraps ? 'wrap' : 'nowrap'}\n >\n {text.secondary}\n </ds-text>\n )}\n </span>\n );\n }\n\n private renderRow(row: TableRow) {\n const selected = this.selectedSet.has(row.id);\n const rowSelectable = row.selectable !== false && !row.disabled;\n return (\n <tr\n key={row.id}\n class={{\n 'ds-table__row': true,\n 'ds-table__row--selected': selected,\n 'ds-table__row--disabled': !!row.disabled,\n }}\n data-row-id={row.id}\n data-selected={selected ? 'true' : undefined}\n aria-disabled={row.disabled ? 'true' : undefined}\n >\n {this.selectable && (\n <td class=\"ds-table__cell ds-table__selection-cell\">\n {this.renderSelectionControl(\n `${selected ? 'Deselect' : 'Select'} ${tableRowSelectionLabel(row, this.columns)}`,\n selected,\n false,\n !rowSelectable,\n () => this.emitRowSelection(row),\n )}\n </td>\n )}\n {this.columns.map(column => {\n const align = column.align ?? 'start';\n const value = row.cells[column.id];\n const tagCell = isTableCellTag(value);\n const iconCell = isTableCellIcon(value);\n const imageCell = isTableCellImage(value);\n const actionCell = isTableCellAction(value);\n const primaryTextCell = isTableCellPrimaryText(value);\n const emptyCell = value == null || isTableCellEmpty(value);\n const blankCell = isTableCellBlank(value);\n const textCell = primaryTextCell || (!tagCell && !iconCell && !imageCell && !actionCell && !emptyCell && !blankCell);\n const singleTextCell = textCell && !primaryTextCell && (!isTableCellText(value) || !value.secondary);\n const tagVariant = tagCell ? value.variant ?? 'tag-only' : undefined;\n const textVariant = textCell\n ? primaryTextCell\n ? 'primary-pair'\n : singleTextCell\n ? 'single'\n : 'multi'\n : undefined;\n const cellType = tagCell\n ? 'tag'\n : iconCell\n ? 'icon'\n : imageCell\n ? 'image'\n : actionCell\n ? 'action'\n : primaryTextCell\n ? 'primary-text'\n : emptyCell\n ? 'empty'\n : blankCell\n ? 'blank'\n : 'text';\n return (\n <td\n key={`${row.id}:${column.id}`}\n class={{\n 'ds-table__cell': true,\n [`ds-table__cell--align-${align}`]: true,\n 'ds-table__cell--tag': tagCell,\n [`ds-table__cell--tag-${tagVariant}`]: tagCell,\n 'ds-table__cell--icon': iconCell,\n 'ds-table__cell--image': imageCell,\n 'ds-table__cell--action': actionCell,\n 'ds-table__cell--primary-text': primaryTextCell,\n 'ds-table__cell--text-single': singleTextCell,\n 'ds-table__cell--text-multi': textCell && !singleTextCell,\n 'ds-table__cell--empty': emptyCell,\n 'ds-table__cell--blank': blankCell,\n }}\n data-column-id={column.id}\n data-cell-type={cellType}\n data-cell-variant={tagVariant ?? textVariant}\n >\n <span class=\"ds-table__cell-content\">\n {this.renderCellValue(value, column, row)}\n </span>\n </td>\n );\n })}\n </tr>\n );\n }\n\n private renderDataBodies() {\n if (!this.grouped) {\n return <tbody class=\"ds-table__body\">{this.rows.map(row => this.renderRow(row))}</tbody>;\n }\n\n return this.groups.map(group => {\n const count = resolvedTableGroupCount(group);\n const countLabel = group.countLabel ?? `${count} ${count === 1 ? 'item' : 'items'}`;\n return (\n <tbody class=\"ds-table__body ds-table__group\" data-group-id={group.id} key={group.id}>\n <tr class=\"ds-table__group-row\">\n <th class=\"ds-table__group-cell\" scope=\"rowgroup\" colSpan={this.totalColumns}>\n <span class=\"ds-table__group-content\">\n <ds-icon name=\"GroupBy\" size=\"sm\" color=\"secondary\" aria-hidden=\"true\" />\n <ds-text as=\"span\" variant=\"text-body-small\" emphasis={true} color=\"primary\">\n {group.label}\n </ds-text>\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {countLabel}\n </ds-text>\n </span>\n </th>\n </tr>\n {group.rows.map(row => this.renderRow(row))}\n </tbody>\n );\n });\n }\n\n private renderSkeletonBody() {\n const count = Math.min(20, Math.max(1, Math.round(this.skeletonRows) || 1));\n return (\n <tbody class=\"ds-table__body ds-table__skeleton-body\">\n {Array.from({ length: count }, (_, index) => (\n <tr class=\"ds-table__row ds-table__skeleton-row\" key={`skeleton-${index}`}>\n {this.selectable && (\n <td class=\"ds-table__cell ds-table__selection-cell\">\n <ds-skeleton variant=\"icon\" iconSize=\"md\" />\n </td>\n )}\n {this.columns.map(column => (\n <td class=\"ds-table__cell\" key={`skeleton-${index}:${column.id}`}>\n <span class=\"ds-table__cell-content\">\n <ds-skeleton variant=\"text\" textVariant=\"text-body-medium\" width=\"100%\" />\n </span>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n }\n\n private renderStateBody(kind: 'empty' | 'error') {\n const error = kind === 'error';\n return (\n <tbody class=\"ds-table__body ds-table__state-body\">\n <tr class=\"ds-table__state-row\">\n <td class=\"ds-table__state-cell\" colSpan={this.totalColumns}>\n <ds-empty-state\n icon={error ? 'ErrorTriangle' : 'Inbox'}\n heading={error ? this.errorHeading : this.emptyHeading}\n body={error ? this.errorBody : this.emptyBody}\n />\n </td>\n </tr>\n </tbody>\n );\n }\n\n private renderLazyBody() {\n if (!this.lazyLoading || !this.hasData) return null;\n const error = this.loadMoreError?.trim();\n const manualFallback = this.loadMoreMode === 'manual' || !this.intersectionSupported;\n\n return (\n <tbody class=\"ds-table__body ds-table__load-body\">\n <tr\n class=\"ds-table__load-row\"\n ref={element => {\n this.sentinelEl = element ?? null;\n }}\n >\n <td class=\"ds-table__load-cell\" colSpan={this.totalColumns}>\n {error ? (\n <span class=\"ds-table__load-content ds-table__load-content--error\">\n <ds-icon name=\"ErrorTriangle\" size=\"sm\" color=\"negative\" aria-hidden=\"true\" />\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">{error}</ds-text>\n <ds-button-unfilled\n label={this.retryLabel}\n size=\"sm\"\n onDsClick={() => this.requestLoadMore('retry')}\n />\n </span>\n ) : this.loadingMore ? (\n <span class=\"ds-table__load-content\">\n <ds-loader size=\"sm\" color=\"secondary\" />\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {this.loadingMoreLabel}\n </ds-text>\n </span>\n ) : this.hasMore && manualFallback ? (\n <ds-button-unfilled\n label={this.loadMoreLabel}\n size=\"sm\"\n onDsClick={() => this.requestLoadMore('manual')}\n />\n ) : this.hasMore ? (\n <span class=\"ds-table__auto-sentinel\" aria-hidden=\"true\" />\n ) : (\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {this.endOfResultsLabel}\n </ds-text>\n )}\n </td>\n </tr>\n </tbody>\n );\n }\n\n render() {\n const selection = this.selectionState;\n const regionLabel = this.scrollLabel?.trim() || `${this.caption} scroll area`;\n const initialLoading = this.loading && !this.hasData;\n const initialError = !this.hasData && this.error;\n const viewportStyle = this.resolvedMaxHeight\n ? { '--ds-table-max-block-size': this.resolvedMaxHeight }\n : undefined;\n\n return (\n <Host class=\"table-host\">\n <div class={{\n 'ds-table': true,\n 'ds-table--sticky-header': this.stickyHeader,\n }}>\n <div\n class={{\n 'ds-table__frame': true,\n 'ds-table__frame--overflow-start': this.overflowStart,\n 'ds-table__frame--overflow-end': this.overflowEnd,\n }}\n >\n <div\n class=\"ds-table__viewport\"\n style={viewportStyle}\n ref={element => {\n this.viewportEl = element ?? null;\n }}\n role={this.scrollable ? 'region' : undefined}\n aria-label={this.scrollable ? regionLabel : undefined}\n tabIndex={this.scrollable ? 0 : undefined}\n >\n <table\n class={{\n 'ds-table__table': true,\n 'ds-table__table--selectable': this.selectable,\n }}\n style={this.tableStyle}\n aria-busy={initialLoading || this.loadingMore ? 'true' : undefined}\n ref={element => {\n this.tableEl = element ?? null;\n }}\n >\n <caption\n class={{\n 'ds-table__caption': true,\n 'ds-visually-hidden': this.captionVisibility === 'hidden',\n }}\n >\n <ds-text as=\"span\" variant=\"text-title-small\" emphasis={true} color=\"primary\">\n {this.caption}\n </ds-text>\n </caption>\n <colgroup>\n {this.selectable && <col class=\"ds-table__selection-column\" />}\n {this.columns.map(column => {\n const width = tableColumnSize(column);\n return <col key={column.id} style={width ? { width } : undefined} />;\n })}\n </colgroup>\n <thead class=\"ds-table__head\">\n <tr class=\"ds-table__header-row\">\n {this.selectable && (\n <th class=\"ds-table__header-cell ds-table__selection-cell\" scope=\"col\">\n {this.renderSelectionControl(\n selection.allSelected ? 'Deselect all loaded rows' : 'Select all loaded rows',\n selection.allSelected,\n selection.indeterminate,\n selection.selectableRowIds.length === 0,\n () => this.emitAllSelection(),\n )}\n </th>\n )}\n {this.columns.map(column => this.renderColumnHeader(column))}\n </tr>\n </thead>\n {initialLoading\n ? this.renderSkeletonBody()\n : initialError\n ? this.renderStateBody('error')\n : this.hasData\n ? this.renderDataBodies()\n : this.renderStateBody('empty')}\n {!initialLoading && !initialError && this.renderLazyBody()}\n </table>\n </div>\n </div>\n <div class=\"ds-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {this.announcement}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as o,H as t,c as r,h as n,a as s,t as a}from"./index.js";import{d as i}from"./p-DumWT7NN.js";import{d as c}from"./p-BNiIyZCn.js";import{C as e}from"./p-CuwopElg.js";const d=()=>`.ds-control--lg.sc-ds-tag,.ds-control--lg.sc-ds-tag-h,.ds-control--md.sc-ds-tag-h,.ds-control--md.sc-ds-tag,.ds-control--sm.sc-ds-tag-h,.ds-control--sm.sc-ds-tag,.ds-control--xs.sc-ds-tag-h,.ds-control--xs.sc-ds-tag{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-tag-h,.ds-control--lg.sc-ds-tag{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-tag-h,.ds-control--md.sc-ds-tag{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-tag-h,.ds-control--sm.sc-ds-tag{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-tag-h,.ds-control--xs.sc-ds-tag{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-tag-h,.ds-interaction-fill.sc-ds-tag{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-tag-h::before,.ds-interaction-fill.sc-ds-tag::before,.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-tag-h::before,.ds-interaction-fill.sc-ds-tag::before{z-index:1}.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-tag-h,.ds-interaction-fill--bordered.sc-ds-tag{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-tag-h::before,.ds-interaction-fill--selected.sc-ds-tag::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-tag-h,.ds-interaction-fill--selected.sc-ds-tag{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tag-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-tag:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-tag-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-tag:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-tag-h>.ds-interaction-fill__content.sc-ds-tag,.ds-interaction-fill.sc-ds-tag>.ds-interaction-fill__content.sc-ds-tag,.ds-interaction-fill__content.sc-ds-tag{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-tag-h,.ds-interaction-fill--on-faint.sc-ds-tag{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-tag-h,.ds-interaction-fill--on-medium.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-tag-h,.ds-interaction-fill--on-bold.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-tag-h,.ds-interaction-fill--on-strong.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-tag-h,.ds-interaction-fill--on-translucent.sc-ds-tag{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-tag-h,.ds-interaction-fill--on-inverted.sc-ds-tag{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-tag-h,.ds-interaction-fill--on-media.sc-ds-tag{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-tag-h,.ds-interaction-fill--on-always-dark.sc-ds-tag{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-tag-h,.ds-interaction-fill--on-navigation.sc-ds-tag{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-tag-h::before,.ds-interaction-fill--selected.sc-ds-tag::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tag-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-tag:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-tag-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-tag-h,.ds-focus-ring.sc-ds-tag,.ds-focus-ring-inset.sc-ds-tag-h,.ds-focus-ring-inset.sc-ds-tag{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-tag-h:focus-visible,.ds-focus-ring.sc-ds-tag:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-tag-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-tag{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-tag-h:focus-visible,.ds-focus-ring-inset.sc-ds-tag:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-tag-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-tag:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-tag-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-control-inactive.sc-ds-tag-h,.ds-control-inactive.sc-ds-tag{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-tag-h,.ds-control-inactive.sc-ds-tag{color:var(--ds-forced-color-disabled);opacity:1}}.sc-ds-tag-h{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;color:var(--color-foreground-primary);position:relative;border-radius:var(--ds-control-radius, var(--dimension-radius-025));height:var(--ds-control-height);padding:0 var(--ds-control-padding-inline);gap:var(--ds-control-gap);user-select:none;-webkit-user-select:none}.tag--rounded.sc-ds-tag-h{border-radius:var(--dimension-radius-half)}.tag__label.sc-ds-tag{position:relative;z-index:2;padding:0 var(--ds-control-label-inset);white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.tag--intent-neutral.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-neutral);color:var(--color-foreground-medium-neutral)}.tag--intent-brand.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-brand);color:var(--color-foreground-on-strong-background-primary)}.tag--intent-ai.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-ai);color:var(--color-foreground-medium-ai)}.tag--intent-negative.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-negative);color:var(--color-foreground-medium-negative)}.tag--intent-warning.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-warning);color:var(--color-foreground-medium-warning)}.tag--intent-caution.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-caution);color:var(--color-foreground-medium-caution)}.tag--intent-positive.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-positive);color:var(--color-foreground-medium-positive)}.tag--intent-neutral.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-neutral);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-brand.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-brand);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-ai.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-ai);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-negative.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-negative);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-warning.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-warning);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-caution.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-caution);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-positive.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-positive);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-neutral.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-neutral);color:var(--color-foreground-strong-neutral)}.tag--intent-brand.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-brand);color:var(--color-foreground-on-medium-background-primary)}.tag--intent-ai.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-ai);color:var(--color-foreground-strong-ai)}.tag--intent-negative.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-negative);color:var(--color-foreground-strong-negative)}.tag--intent-warning.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-warning);color:var(--color-foreground-strong-warning)}.tag--intent-caution.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-caution);color:var(--color-foreground-strong-caution)}.tag--intent-positive.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-positive);color:var(--color-foreground-strong-positive)}.tag--intent-neutral.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-neutral);color:var(--color-foreground-bold-neutral)}.tag--intent-brand.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-brand);color:var(--color-foreground-bold-brand)}.tag--intent-ai.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-ai);color:var(--color-foreground-bold-ai)}.tag--intent-negative.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-negative);color:var(--color-foreground-bold-negative)}.tag--intent-warning.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-warning);color:var(--color-foreground-bold-warning)}.tag--intent-caution.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-caution);color:var(--color-foreground-bold-caution)}.tag--intent-positive.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-positive);color:var(--color-foreground-bold-positive)}.tag--interactive.sc-ds-tag-h{padding:0;gap:0}.tag__button.sc-ds-tag{all:unset;position:relative;z-index:0;display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;max-width:100%;height:100%;padding:0 var(--ds-control-padding-inline);gap:var(--ds-control-gap);border-radius:inherit;color:inherit;cursor:default}.tag__button.sc-ds-tag:disabled{cursor:not-allowed}.tag__button--expanded.sc-ds-tag::after{background:var(--ds-interaction-pressed)}.tag__prefix-icon.sc-ds-tag,.tag__suffix-icon.sc-ds-tag{position:relative;z-index:2;display:inline-flex;flex-shrink:0;width:var(--ds-control-icon);height:var(--ds-control-icon)}`;const l={md:"md",sm:"sm",xs:"xs"};const g=o(class o extends t{constructor(o){super();if(o!==false){this.__registerHost()}this.dsClick=r(this,"dsClick");this.icon="";this.intent="neutral";this.contrast="faint";this.size="md";this.rounded=false;this.interactive=false;this.expanded=false;this.isInactive=false;this.handleClick=o=>{if(!this.interactive||this.isInactive)return;this.dsClick.emit(o)}}render(){const o=e[this.size];const t=l[this.size];const r=this.maxWidth!=null?{maxWidth:typeof this.maxWidth==="number"?`${this.maxWidth}px`:this.maxWidth}:undefined;const a={tag:true,[`tag--intent-${this.intent}`]:true,[`tag--contrast-${this.contrast}`]:true,[`tag--size-${this.size}`]:true,"ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs","tag--rounded":this.rounded,"tag--interactive":this.interactive,"ds-control-inactive":this.interactive&&this.isInactive};const i=[this.icon&&n("ds-icon",{class:"tag__prefix-icon",name:this.icon,size:t,color:"inherit"}),n("ds-text",{class:"tag__label",as:"span",variant:o,color:"inherit"},this.label)];if(!this.interactive){return n(s,{class:a,style:r},i)}return n(s,{class:a,style:r},n("button",{type:"button",class:{tag__button:true,"tag__button--expanded":this.expanded,"ds-interaction-fill":true,"ds-focus-ring-inset":true},"aria-haspopup":"menu","aria-expanded":this.expanded?"true":"false","aria-controls":this.ariaControls,disabled:this.isInactive||undefined,onClick:this.handleClick},i,n("ds-icon",{class:"tag__suffix-icon",name:"ChevronUpDown",size:t,color:"inherit"})))}static get style(){return d()}},[2,"ds-tag",{label:[1],icon:[1],intent:[1],contrast:[1],size:[1],rounded:[4],maxWidth:[8,"max-width"],interactive:[4],expanded:[4],ariaControls:[1,"aria-controls"],isInactive:[4,"is-inactive"]}]);function u(){if(typeof customElements==="undefined"){return}const o=["ds-tag","ds-icon","ds-text"];o.forEach((o=>{switch(o){case"ds-tag":if(!customElements.get(a(o))){customElements.define(a(o),g)}break;case"ds-icon":if(!customElements.get(a(o))){i()}break;case"ds-text":if(!customElements.get(a(o))){c()}break}}))}u();const v=g;const f=u;export{v as DsTag,f as defineCustomElement};
1
+ import{T as o,d as s}from"./p-CFNG0K3m.js";const t=o;const m=s;export{t as DsTag,m as defineCustomElement};
2
2
  //# sourceMappingURL=ds-tag.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["tagCss","ICON_SIZE","md","sm","xs","Tag","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","icon","intent","contrast","size","rounded","interactive","expanded","isInactive","handleClick","event","dsClick","emit","render","textVariant","CONTROL_TEXT_VARIANT","iconSize","maxWidthStyle","maxWidth","undefined","hostClass","tag","content","h","class","name","color","as","variant","label","Host","style","type","tag__button","ariaControls","disabled","onClick"],"sources":["src/wc/components/Tag/Tag.css?tag=ds-tag&encapsulation=scoped","src/wc/components/Tag/Tag.tsx"],"sourcesContent":["@import '../../utils/tag-chip.css';\n\n/* ── Intent × Contrast — strong ─────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-strong) { background-color: var(--color-background-strong-neutral); color: var(--color-foreground-medium-neutral); }\n:host(.tag--intent-brand.tag--contrast-strong) { background-color: var(--color-background-strong-brand); color: var(--color-foreground-on-strong-background-primary); }\n:host(.tag--intent-ai.tag--contrast-strong) { background-color: var(--color-background-strong-ai); color: var(--color-foreground-medium-ai); }\n:host(.tag--intent-negative.tag--contrast-strong) { background-color: var(--color-background-strong-negative); color: var(--color-foreground-medium-negative); }\n:host(.tag--intent-warning.tag--contrast-strong) { background-color: var(--color-background-strong-warning); color: var(--color-foreground-medium-warning); }\n:host(.tag--intent-caution.tag--contrast-strong) { background-color: var(--color-background-strong-caution); color: var(--color-foreground-medium-caution); }\n:host(.tag--intent-positive.tag--contrast-strong) { background-color: var(--color-background-strong-positive); color: var(--color-foreground-medium-positive); }\n\n/* ── Intent × Contrast — bold ───────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-bold) { background-color: var(--color-background-bold-neutral); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-brand.tag--contrast-bold) { background-color: var(--color-background-bold-brand); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-ai.tag--contrast-bold) { background-color: var(--color-background-bold-ai); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-negative.tag--contrast-bold) { background-color: var(--color-background-bold-negative); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-warning.tag--contrast-bold) { background-color: var(--color-background-bold-warning); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-caution.tag--contrast-bold) { background-color: var(--color-background-bold-caution); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-positive.tag--contrast-bold) { background-color: var(--color-background-bold-positive); color: var(--color-foreground-on-bold-background-primary); }\n\n/* ── Intent × Contrast — medium ─────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-medium) { background-color: var(--color-background-medium-neutral); color: var(--color-foreground-strong-neutral); }\n:host(.tag--intent-brand.tag--contrast-medium) { background-color: var(--color-background-medium-brand); color: var(--color-foreground-on-medium-background-primary); }\n:host(.tag--intent-ai.tag--contrast-medium) { background-color: var(--color-background-medium-ai); color: var(--color-foreground-strong-ai); }\n:host(.tag--intent-negative.tag--contrast-medium) { background-color: var(--color-background-medium-negative); color: var(--color-foreground-strong-negative); }\n:host(.tag--intent-warning.tag--contrast-medium) { background-color: var(--color-background-medium-warning); color: var(--color-foreground-strong-warning); }\n:host(.tag--intent-caution.tag--contrast-medium) { background-color: var(--color-background-medium-caution); color: var(--color-foreground-strong-caution); }\n:host(.tag--intent-positive.tag--contrast-medium) { background-color: var(--color-background-medium-positive); color: var(--color-foreground-strong-positive); }\n\n/* ── Intent × Contrast — faint ──────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-faint) { background-color: var(--color-background-faint-neutral); color: var(--color-foreground-bold-neutral); }\n:host(.tag--intent-brand.tag--contrast-faint) { background-color: var(--color-background-faint-brand); color: var(--color-foreground-bold-brand); }\n:host(.tag--intent-ai.tag--contrast-faint) { background-color: var(--color-background-faint-ai); color: var(--color-foreground-bold-ai); }\n:host(.tag--intent-negative.tag--contrast-faint) { background-color: var(--color-background-faint-negative); color: var(--color-foreground-bold-negative); }\n:host(.tag--intent-warning.tag--contrast-faint) { background-color: var(--color-background-faint-warning); color: var(--color-foreground-bold-warning); }\n:host(.tag--intent-caution.tag--contrast-faint) { background-color: var(--color-background-faint-caution); color: var(--color-foreground-bold-caution); }\n:host(.tag--intent-positive.tag--contrast-faint) { background-color: var(--color-background-faint-positive); color: var(--color-foreground-bold-positive); }\n\n/* ── Interactive menu trigger ───────────────────────────────────────────── */\n\n:host(.tag--interactive) {\n padding: 0;\n gap: 0;\n}\n\n.tag__button {\n all: unset;\n position: relative;\n z-index: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n height: 100%;\n padding: 0 var(--ds-control-padding-inline);\n gap: var(--ds-control-gap);\n border-radius: inherit;\n color: inherit;\n cursor: default;\n}\n\n.tag__button:disabled {\n cursor: not-allowed;\n}\n\n.tag__button--expanded::after {\n background: var(--ds-interaction-pressed);\n}\n\n/* Hover/press wash stays above the Tag's semantic background. */\n\n/* ── Icons ──────────────────────────────────────────────────────────────── */\n\n.tag__prefix-icon,\n.tag__suffix-icon {\n position: relative;\n z-index: 2;\n display: inline-flex;\n flex-shrink: 0;\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n}\n","import { Component, Event, EventEmitter, Prop, h, Host } from '@stencil/core';\nimport { CONTROL_TEXT_VARIANT } from '../../utils';\n\nexport type TagIntent = 'neutral' | 'brand' | 'ai' | 'negative' | 'warning' | 'caution' | 'positive';\nexport type TagContrast = 'strong' | 'bold' | 'medium' | 'faint';\nexport type TagSize = 'md' | 'sm' | 'xs';\n\n/**\n * `ds-icon` size prop matching control-density icon metrics\n * (md→20 / sm→16 / xs→12 via `--dimension-iconography-*`).\n */\nconst ICON_SIZE: Record<TagSize, 'md' | 'sm' | 'xs'> = {\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\n@Component({\n tag: 'ds-tag',\n styleUrl: 'Tag.css',\n scoped: true,\n})\nexport class Tag {\n @Prop() label!: string;\n /** Canonical icon name rendered before the visible label. */\n @Prop() icon: string = '';\n @Prop() intent: TagIntent = 'neutral';\n @Prop() contrast: TagContrast = 'faint';\n @Prop() size: TagSize = 'md';\n @Prop() rounded: boolean = false;\n @Prop() maxWidth: string | number | undefined;\n /** Render a menu-trigger button with a fixed ChevronUpDown suffix. */\n @Prop() interactive: boolean = false;\n /** Controlled open state for the menu triggered by an interactive Tag. */\n @Prop() expanded: boolean = false;\n /** ID of the menu controlled by an interactive Tag. */\n @Prop() ariaControls: string | undefined;\n /** Disable an interactive Tag and apply the shared inactive treatment. */\n @Prop() isInactive: boolean = false;\n\n /** Fired when the interactive Tag button is activated. */\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.interactive || this.isInactive) return;\n this.dsClick.emit(event);\n };\n\n render() {\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n\n const maxWidthStyle = this.maxWidth != null\n ? { maxWidth: typeof this.maxWidth === 'number' ? `${this.maxWidth}px` : this.maxWidth }\n : undefined;\n const hostClass = {\n 'tag': true,\n [`tag--intent-${this.intent}`]: true,\n [`tag--contrast-${this.contrast}`]: true,\n [`tag--size-${this.size}`]: true,\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'tag--rounded': this.rounded,\n 'tag--interactive': this.interactive,\n 'ds-control-inactive': this.interactive && this.isInactive,\n };\n const content = [\n this.icon && (\n <ds-icon\n class=\"tag__prefix-icon\"\n name={this.icon}\n size={iconSize}\n color=\"inherit\"\n ></ds-icon>\n ),\n <ds-text class=\"tag__label\" as=\"span\" variant={textVariant} color=\"inherit\">\n {this.label}\n </ds-text>,\n ];\n\n if (!this.interactive) {\n return <Host class={hostClass} style={maxWidthStyle}>{content}</Host>;\n }\n\n return (\n <Host class={hostClass} style={maxWidthStyle}>\n <button\n type=\"button\"\n class={{\n 'tag__button': true,\n 'tag__button--expanded': this.expanded,\n 'ds-interaction-fill': true,\n 'ds-focus-ring-inset': true,\n }}\n aria-haspopup=\"menu\"\n aria-expanded={this.expanded ? 'true' : 'false'}\n aria-controls={this.ariaControls}\n disabled={this.isInactive || undefined}\n onClick={this.handleClick}\n >\n {content}\n <ds-icon\n class=\"tag__suffix-icon\"\n name=\"ChevronUpDown\"\n size={iconSize}\n color=\"inherit\"\n ></ds-icon>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"8KAAA,MAAMA,EAAS,IAAM,ojfCWrB,MAAMC,EAAiD,CACrDC,GAAI,KACJC,GAAI,KACJC,GAAI,M,MAQOC,EAAGC,EAAA,MAAAD,UAAAE,EALhB,WAAAC,CAAAC,G,2EAQUC,KAAAC,KAAe,GACfD,KAAAE,OAAoB,UACpBF,KAAAG,SAAwB,QACxBH,KAAAI,KAAgB,KAChBJ,KAAAK,QAAmB,MAGnBL,KAAAM,YAAuB,MAEvBN,KAAAO,SAAoB,MAIpBP,KAAAQ,WAAsB,MAKtBR,KAAAS,YAAeC,IACrB,IAAKV,KAAKM,aAAeN,KAAKQ,WAAY,OAC1CR,KAAKW,QAAQC,KAAKF,EAAM,CAmE3B,CAhEC,MAAAG,GACE,MAAMC,EAAcC,EAAqBf,KAAKI,MAC9C,MAAMY,EAAWzB,EAAUS,KAAKI,MAEhC,MAAMa,EAAgBjB,KAAKkB,UAAY,KACnC,CAAEA,gBAAiBlB,KAAKkB,WAAa,SAAW,GAAGlB,KAAKkB,aAAelB,KAAKkB,UAC5EC,UACJ,MAAMC,EAAY,CAChBC,IAAO,KACP,CAAC,eAAerB,KAAKE,UAAW,KAChC,CAAC,iBAAiBF,KAAKG,YAAa,KACpC,CAAC,aAAaH,KAAKI,QAAS,KAC5B,iBAAkBJ,KAAKI,OAAS,KAChC,iBAAkBJ,KAAKI,OAAS,KAChC,iBAAkBJ,KAAKI,OAAS,KAChC,eAAgBJ,KAAKK,QACrB,mBAAoBL,KAAKM,YACzB,sBAAuBN,KAAKM,aAAeN,KAAKQ,YAElD,MAAMc,EAAU,CACdtB,KAAKC,MACHsB,EAAA,WACEC,MAAM,mBACNC,KAAMzB,KAAKC,KACXG,KAAMY,EACNU,MAAM,YAGVH,EAAA,WAASC,MAAM,aAAaG,GAAG,OAAOC,QAASd,EAAaY,MAAM,WAC/D1B,KAAK6B,QAIV,IAAK7B,KAAKM,YAAa,CACrB,OAAOiB,EAACO,EAAI,CAACN,MAAOJ,EAAWW,MAAOd,GAAgBK,E,CAGxD,OACEC,EAACO,EAAI,CAACN,MAAOJ,EAAWW,MAAOd,GAC7BM,EAAA,UACES,KAAK,SACLR,MAAO,CACLS,YAAe,KACf,wBAAyBjC,KAAKO,SAC9B,sBAAuB,KACvB,sBAAuB,MACxB,gBACa,OAAM,gBACLP,KAAKO,SAAW,OAAS,QAAO,gBAChCP,KAAKkC,aACpBC,SAAUnC,KAAKQ,YAAcW,UAC7BiB,QAASpC,KAAKS,aAEba,EACDC,EAAA,WACEC,MAAM,mBACNC,KAAK,gBACLrB,KAAMY,EACNU,MAAM,a","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as t,H as s,c as i,h as e,a as o,t as n}from"./index.js";import{c as a}from"./p-BX0BMhgz.js";import{d as r}from"./p-DwKC_9u2.js";import{d as c}from"./p-c1pY-Mqq.js";import{d as h}from"./p-DumWT7NN.js";import{d}from"./p-Ca-I2UnB.js";import{d as l}from"./p-BNiIyZCn.js";import{T as f,r as u,a as m}from"./p-CXduurfd.js";import{r as p}from"./p-BJMRBHKW.js";function v(t,s){const i=typeof t==="function"?t(s):t;return typeof i==="string"?{description:i}:i}class g{constructor(){this.records=[];this.listeners=new Set;this.nextId=0}add(t){const s=t.id||`ds-toast-${++this.nextId}`;const i=this.records.findIndex((t=>t.id===s));if(!t.title?.trim()&&!t.description?.trim()){console.warn(`[ds-toast] Toast "${s}" should provide a title or description.`)}if(i>=0){const e=this.records[i];const o={...e,...t,id:s,priority:t.priority??e.priority,transitionStatus:"active",closeReason:undefined,updateKey:e.updateKey+1,timerKey:e.timerKey+1};this.records=[o,...this.records.filter(((t,s)=>s!==i))];this.emit();return s}const e={...t,id:s,priority:t.priority??"low",transitionStatus:"starting",updateKey:0,timerKey:0};this.records=[e,...this.records];this.emit();return s}update(t,s){const i=this.records.findIndex((s=>s.id===t));if(i<0)return;const e=this.records[i];const o=Object.prototype.hasOwnProperty.call(s,"timeout")||e.type==="loading"&&s.type!==undefined&&s.type!=="loading";const n={...e,...s,id:t,priority:s.priority??e.priority,updateKey:e.updateKey+1,timerKey:o?e.timerKey+1:e.timerKey};this.records=this.records.map(((t,s)=>s===i?n:t));this.emit()}close(t,s="programmatic"){const i=this.records.findIndex((s=>s.id===t));if(i<0||this.records[i].transitionStatus==="ending")return;const e={...this.records[i],transitionStatus:"ending",closeReason:s};this.records=this.records.map(((t,s)=>s===i?e:t));this.emit();e.onClose?.({id:t,reason:s,toast:e})}closeAll(t="programmatic"){for(const s of[...this.records])this.close(s.id,t)}async promise(t,s){const i=v(s.loading,undefined);const e=this.add({...i,type:i.type??"loading",timeout:0});try{const i=await t;const o=v(s.success,i);this.update(e,{...o,type:o.type??"success",timeout:o.timeout});return i}catch(t){const i=v(s.error,t);this.update(e,{...i,type:i.type??"error",timeout:i.timeout});throw t}}subscribe(t){this.listeners.add(t);t(this.getSnapshot());return()=>{this.listeners.delete(t)}}getSnapshot(){return this.records.map((t=>({...t})))}activate(t){const s=this.records.find((s=>s.id===t));if(!s||s.transitionStatus!=="starting")return;this.records=this.records.map((s=>s.id===t?{...s,transitionStatus:"active"}:s));this.emit()}remove(t){const s=this.records.find((s=>s.id===t));if(!s||s.transitionStatus!=="ending")return null;const i=s.closeReason??"programmatic";this.records=this.records.filter((s=>s.id!==t));this.emit();const e={id:t,reason:i,toast:s};return e}notifyRemove(t){const{toast:s}=t;s.onRemove?.(t)}emit(){const t=this.getSnapshot();for(const s of this.listeners)s(t)}}function w(){return new g}const y=Symbol.for("@ds-mo/ui/default-toast-manager");const b=globalThis;const x=b[y];const M=x??w();if(!x)b[y]=M;const T=()=>`.ds-visually-hidden.sc-ds-toast-h,.ds-visually-hidden.sc-ds-toast{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}@media (forced-colors: active){.sc-ds-toast:root,.sc-ds-toast-h,.ds-forced-colors-scope.sc-ds-toast{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-toast-h{display:contents}.toast-region.sc-ds-toast{position:fixed;inset:0;z-index:var(--dimension-z-index-floating);pointer-events:none;outline:none}.toast-viewport.sc-ds-toast{position:absolute;right:var(--dimension-space-200);bottom:var(--dimension-space-200);display:grid;width:min( var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)) )}@media (max-width: 767px){[avoid-mobile-shell-bar].sc-ds-toast-h .toast-viewport.sc-ds-toast{bottom:calc( var(--dimension-space-200) + var(--dimension-stroke-width-012) + var(--dimension-space-100) + var(--dimension-size-500) + max(var(--dimension-space-100), env(safe-area-inset-bottom)) )}}.toast-positioner.sc-ds-toast{grid-area:1 / 1;align-self:end;justify-self:center;width:100%;pointer-events:auto;transform:translateY( calc(-1 * var(--toast-index) * var(--dimension-space-100)) );transition:transform var(--effect-motion-short-3), width var(--effect-motion-short-3)}.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner.sc-ds-toast{width:calc( 100% - 2 * var(--toast-index) * var(--dimension-space-100) )}.toast-viewport[data-expanded].sc-ds-toast .toast-positioner.sc-ds-toast{transform:translateY(calc(-1 * var(--toast-offset-y)))}.toast-positioner[data-limited].sc-ds-toast{visibility:hidden;pointer-events:none}.toast-positioner--anchored.sc-ds-toast{position:fixed;width:min( var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)) );transform:none}.toast-positioner--anchored[data-positioned='false'].sc-ds-toast{visibility:hidden}.toast-surface.sc-ds-toast{position:relative;display:block;box-sizing:border-box;width:100%;height:var(--toast-height, auto);padding:var(--dimension-space-200);overflow:hidden;color:var(--color-foreground-primary);background-color:var(--color-background-primary);border-radius:var(--dimension-radius-050);box-shadow:var(--effect-elevation-elevated-floating);transform:translate( var(--toast-swipe-movement-x), var(--toast-swipe-movement-y) );animation:toast-enter var(--effect-motion-short-2) both}.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{animation:toast-exit var(--effect-motion-short-3) both}.toast-surface--swiping.sc-ds-toast{transition:none;user-select:none}.toast-content.sc-ds-toast{display:flex;flex-direction:column;min-width:0;padding-inline-end:var(--dimension-size-500);transition:opacity var(--effect-motion-short-3)}.toast-copy.sc-ds-toast{display:flex;flex-direction:column;min-width:0;min-height:var(--typography-lineheight-md);margin-block:calc(-1 * var(--dimension-space-025));gap:var(--dimension-space-050)}.toast-title.sc-ds-toast,.toast-description.sc-ds-toast{min-width:0}.toast-action.sc-ds-toast{align-self:start;margin-top:calc( var(--dimension-space-200) + var(--dimension-space-025) )}.toast-close.sc-ds-toast{position:absolute;top:var(--dimension-space-100);right:var(--dimension-space-100);transition:opacity var(--effect-motion-short-3)}.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner[data-behind].sc-ds-toast .toast-content.sc-ds-toast,.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner[data-behind].sc-ds-toast .toast-close.sc-ds-toast{opacity:0}@keyframes toast-enter{from{opacity:0;transform:translateY(var(--dimension-space-100))}to{opacity:1;transform:translateY(0)}}@keyframes toast-exit{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.toast-positioner.sc-ds-toast,.toast-surface.sc-ds-toast,.toast-content.sc-ds-toast,.toast-close.sc-ds-toast,.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{transition:none;animation:none}.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{opacity:0}}@media (forced-colors: active){.toast-surface.sc-ds-toast{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}}`;const k=40;const A=10;const C="__global-stack__";const P='button,a,input,textarea,select,[role="button"],[data-ds-toast-swipe-ignore]';const S=new WeakMap;const E=new Set;let F=null;let D=0;const z=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.dsToastClose=i(this,"dsToastClose");this.dsToastRemove=i(this,"dsToastRemove");this.dsToastAction=i(this,"dsToastAction");this.manager=M;this.limit=3;this.timeout=f.animationDelayLong2;this.label="Notifications";this.closeLabel="Close notification";this.avoidMobileShellBar=false;this.swipeDirections=["down","right"];this.records=[];this.expanded=false;this.keyboardActive=false;this.swipe=null;this.layoutVersion=0;this.instanceId=++D;this.domIds=new Map;this.timers=new Map;this.closeWatchdogs=new Map;this.closeFrames=new Map;this.closeEvents=new Set;this.activationFrames=new Map;this.pauseReasons=new Set;this.hoveredIds=new Set;this.heights=new Map;this.measuredUpdateKeys=new Map;this.anchoredPositions=new Map;this.dismissedSwipeDirections=new Map;this.observedElements=new Set;this.pendingRemovals=[];this.unsubscribe=null;this.attachedManager=null;this.previousFocus=null;this.resizeObserver=null;this.mutationObserver=null;this.layoutFrame=null;this.activeSwipe=null;this.nextDomId=0;this.connected=false;this.pendingHoverLeave=false;this.handleWindowBlur=()=>this.pauseTimers("window");this.handleWindowFocus=()=>this.resumeTimers("window");this.handleVisibilityChange=()=>{if(document.hidden)this.pauseTimers("document");else this.resumeTimers("document")};this.handleFocusIn=()=>{const t=document.activeElement;if(!(t instanceof s)||!t.matches(":focus-visible"))return;F=this;this.keyboardActive=true;this.expanded=true;this.pauseTimers("focus")};this.handleFocusOut=t=>{const s=t.relatedTarget;if(s instanceof Node&&this.el.contains(s))return;if(!this.keyboardActive)return;this.keyboardActive=false;this.expanded=this.hoveredIds.size>0;this.resumeTimers("focus")};this.handleDocumentKeyDown=t=>{if(t.key!=="F6")return;const s=Array.from(E).filter((t=>t.activeRecords.length>0));const i=F&&F.activeRecords.length?F:s[s.length-1];if(i!==this)return;t.preventDefault();if(!this.el.contains(document.activeElement)){this.previousFocus=document.activeElement}this.keyboardActive=true;this.regionElement?.focus()};this.handleRegionKeyDown=t=>{if(t.key==="Escape"){const s=t.target;const i=s.closest(".toast-positioner");const e=i?.dataset["toastId"]??this.activeRecords[0]?.id;if(e){t.preventDefault();this.manager.close(e,"escape")}return}if(t.key==="Tab"&&t.shiftKey&&t.target===this.regionElement){t.preventDefault();this.restorePreviousFocus()}};this.handleWindowResize=()=>{this.heights.clear();this.measuredUpdateKeys.clear();this.layoutVersion+=1;this.scheduleLayout()};this.scheduleLayout=()=>{if(this.layoutFrame!==null)return;this.layoutFrame=requestAnimationFrame((()=>{this.layoutFrame=null;this.measureLayout()}))}}connectedCallback(){this.connect()}componentDidLoad(){this.connect()}connect(){if(this.connected)return;this.connected=true;this.resizeObserver??(this.resizeObserver=new ResizeObserver((()=>this.scheduleLayout())));this.mutationObserver??(this.mutationObserver=new MutationObserver((()=>this.scheduleLayout())));this.mutationObserver.observe(document.body,{childList:true,subtree:true});if(!this.unsubscribe)this.attachManager(this.manager);window.addEventListener("blur",this.handleWindowBlur);window.addEventListener("focus",this.handleWindowFocus);window.addEventListener("resize",this.handleWindowResize);window.addEventListener("scroll",this.scheduleLayout,true);document.addEventListener("keydown",this.handleDocumentKeyDown);document.addEventListener("visibilitychange",this.handleVisibilityChange);E.add(this);if(!F)F=this}componentDidRender(){this.syncObservedElements();this.flushPendingRemovals();this.scheduleLayout()}disconnectedCallback(){this.connected=false;this.flushPendingRemovals();this.detachManager();this.resetManagerState();this.resizeObserver?.disconnect();this.resizeObserver=null;this.mutationObserver?.disconnect();this.mutationObserver=null;this.observedElements.clear();if(this.layoutFrame!==null)cancelAnimationFrame(this.layoutFrame);this.layoutFrame=null;window.removeEventListener("blur",this.handleWindowBlur);window.removeEventListener("focus",this.handleWindowFocus);window.removeEventListener("resize",this.handleWindowResize);window.removeEventListener("scroll",this.scheduleLayout,true);document.removeEventListener("keydown",this.handleDocumentKeyDown);document.removeEventListener("visibilitychange",this.handleVisibilityChange);E.delete(this);if(F===this){const t=Array.from(E);F=t[t.length-1]??null}}onManagerChange(t){this.detachManager();this.resetManagerState();if(this.connected)this.attachManager(t)}onTimeoutChange(){for(const t of this.timers.values()){if(t.handle)clearTimeout(t.handle)}this.timers.clear();this.syncTimers()}attachManager(t){const s=S.get(t);if(s&&s!==this){console.warn("[ds-toast] A manager can control only one connected ds-toast instance.");return}S.set(t,this);this.attachedManager=t;this.unsubscribe=t.subscribe((t=>{this.records=t;this.syncLifecycle(t);this.scheduleLayout()}))}detachManager(){this.unsubscribe?.();this.unsubscribe=null;if(this.attachedManager&&S.get(this.attachedManager)===this){S.delete(this.attachedManager)}this.attachedManager=null}resetManagerState(){this.flushPendingRemovals();if(this.el.contains(document.activeElement))this.restorePreviousFocus();this.clearAllTimers();for(const t of this.activationFrames.values())cancelAnimationFrame(t);for(const t of this.closeFrames.values())cancelAnimationFrame(t);this.activationFrames.clear();this.closeFrames.clear();this.closeEvents.clear();this.pauseReasons.clear();this.hoveredIds.clear();this.pendingHoverLeave=false;this.heights.clear();this.measuredUpdateKeys.clear();this.anchoredPositions.clear();this.dismissedSwipeDirections.clear();this.domIds.clear();this.activeSwipe=null;this.swipe=null;this.expanded=false;this.keyboardActive=false;this.records=[];this.resizeObserver?.disconnect();this.observedElements.clear()}syncObservedElements(){const t=new Set(this.el.querySelectorAll(".toast-positioner"));for(const s of this.records){if(!s.positioner)continue;const i=this.resolveAnchor(s.positioner.anchor);if(i)t.add(i)}for(const s of this.observedElements){if(!t.has(s)){this.resizeObserver?.unobserve(s);this.observedElements.delete(s)}}for(const s of t){if(this.observedElements.has(s))continue;this.resizeObserver?.observe(s);this.observedElements.add(s)}}flushPendingRemovals(){for(const t of this.pendingRemovals.splice(0)){t.manager.notifyRemove(t.context);this.dsToastRemove.emit({id:t.context.id,toast:t.context.toast})}}syncLifecycle(t){const s=new Set(t.map((t=>t.id)));for(const t of this.hoveredIds){if(t!==C&&!s.has(t))this.hoveredIds.delete(t)}const i=t.some((t=>t.transitionStatus==="ending"));if(this.pendingHoverLeave&&!i&&!this.hoveredIds.size){this.pendingHoverLeave=false;this.expanded=false;this.resumeTimers("hover")}else if(!this.hoveredIds.size&&!this.pendingHoverLeave){this.resumeTimers("hover")}for(const[t,i]of this.timers){if(s.has(t))continue;if(i.handle)clearTimeout(i.handle);this.timers.delete(t)}for(const[t,i]of this.closeWatchdogs){if(s.has(t))continue;clearTimeout(i);this.closeWatchdogs.delete(t)}for(const[t,i]of this.activationFrames){if(s.has(t))continue;cancelAnimationFrame(i);this.activationFrames.delete(t)}for(const[t,i]of this.closeFrames){if(s.has(t))continue;cancelAnimationFrame(i);this.closeFrames.delete(t)}for(const t of this.domIds.keys()){if(s.has(t))continue;this.closeEvents.delete(t);this.domIds.delete(t);this.heights.delete(t);this.measuredUpdateKeys.delete(t);this.anchoredPositions.delete(t);this.dismissedSwipeDirections.delete(t)}for(const s of t){this.ensureDomId(s.id);if(s.transitionStatus==="starting"&&!this.activationFrames.has(s.id)){const t=this.attachedManager;const i=requestAnimationFrame((()=>{this.activationFrames.delete(s.id);t?.activate(s.id)}));this.activationFrames.set(s.id,i)}if(s.transitionStatus==="ending"){this.clearToastTimer(s.id);this.beginRemoval(s)}else{const t=this.closeWatchdogs.get(s.id);if(t)clearTimeout(t);this.closeWatchdogs.delete(s.id);const i=this.closeFrames.get(s.id);if(i)cancelAnimationFrame(i);this.closeFrames.delete(s.id);this.closeEvents.delete(s.id)}}this.syncTimers()}syncTimers(){const t=new Set;for(const s of this.records){if(s.transitionStatus!=="active")continue;t.add(s.id);const i=this.resolveToastTimeout(s);if(i<=0){this.clearToastTimer(s.id);continue}const e=this.timers.get(s.id);if(!e||e.timerKey!==s.timerKey){this.clearToastTimer(s.id);this.timers.set(s.id,{timerKey:s.timerKey,remaining:i,startedAt:0,handle:null})}if(!this.isPaused)this.startToastTimer(s.id)}for(const s of this.timers.keys()){if(!t.has(s))this.clearToastTimer(s)}}resolveToastTimeout(t){const s=t.timeout??this.timeout;if(typeof s==="number")return Math.max(0,s);return u(s,f.animationDelayLong2)}startToastTimer(t){const s=this.timers.get(t);if(!s||s.handle||s.remaining<=0)return;s.startedAt=Date.now();s.handle=setTimeout((()=>{s.handle=null;s.remaining=0;this.manager.close(t,"timeout")}),s.remaining)}pauseTimers(t){const s=this.isPaused;this.pauseReasons.add(t);if(s)return;const i=Date.now();for(const t of this.timers.values()){if(!t.handle)continue;clearTimeout(t.handle);t.handle=null;t.remaining=Math.max(0,t.remaining-(i-t.startedAt))}}resumeTimers(t){this.pauseReasons.delete(t);if(this.isPaused)return;for(const t of this.timers.keys())this.startToastTimer(t)}get isPaused(){return this.pauseReasons.size>0}clearToastTimer(t){const s=this.timers.get(t);if(s?.handle)clearTimeout(s.handle);this.timers.delete(t)}clearAllTimers(){for(const t of this.timers.values()){if(t.handle)clearTimeout(t.handle)}for(const t of this.closeWatchdogs.values())clearTimeout(t);this.timers.clear();this.closeWatchdogs.clear()}beginRemoval(t){if(!this.closeEvents.has(t.id)){this.closeEvents.add(t.id);this.dsToastClose.emit({id:t.id,reason:t.closeReason??"programmatic",toast:t});this.moveFocusAfterClose(t.id)}if(this.closeWatchdogs.has(t.id)||this.closeFrames.has(t.id))return;const s=m(f.motionShort3,f.animationDurationShort3);if(s<=0){queueMicrotask((()=>this.completeRemoval(t)));return}const i=requestAnimationFrame((()=>{this.closeFrames.delete(t.id);const i=this.records.find((s=>s.id===t.id));if(!i||i.transitionStatus!=="ending")return;this.closeWatchdogs.set(t.id,setTimeout((()=>this.completeRemoval(i)),s))}));this.closeFrames.set(t.id,i)}completeRemoval(t){const s=this.records.find((s=>s.id===t.id));if(!s||s.transitionStatus!=="ending")return;const i=this.closeWatchdogs.get(t.id);if(i)clearTimeout(i);this.closeWatchdogs.delete(t.id);const e=this.closeFrames.get(t.id);if(e)cancelAnimationFrame(e);this.closeFrames.delete(t.id);const o=this.attachedManager;const n=o?.remove(t.id);if(o&&n)this.pendingRemovals.push({manager:o,context:n})}handleAnimationComplete(t){if(t.transitionStatus==="ending")this.completeRemoval(t)}bindAnimationCancel(t,s){if(!t||t.dataset["cancelBound"]==="true")return;t.dataset["cancelBound"]="true";t.addEventListener("animationcancel",(()=>{const t=this.records.find((t=>t.id===s));if(t)this.handleAnimationComplete(t)}))}handlePointerEnter(t){F=this;this.pendingHoverLeave=false;this.hoveredIds.add(t);this.expanded=true;this.pauseTimers("hover")}handlePointerLeave(t){this.hoveredIds.delete(t);if(this.hoveredIds.size)return;if(this.records.some((t=>t.transitionStatus==="ending"))){this.pendingHoverLeave=true;return}this.expanded=false;this.resumeTimers("hover")}get regionElement(){return this.el.querySelector(".toast-region")}restorePreviousFocus(){this.previousFocus?.focus?.();this.previousFocus=null;this.keyboardActive=false}moveFocusAfterClose(t){const s=document.activeElement;const i=this.positionerElement(t);if(!s||!i?.contains(s))return;requestAnimationFrame((()=>{const s=this.activeRecords.find((s=>s.id!==t));const i=s?this.positionerElement(s.id)?.querySelector("ds-button-unfilled"):null;if(i?.setFocus)void i.setFocus();else if(s)this.regionElement?.focus();else this.restorePreviousFocus()}))}handleAction(t,s){const i={id:t.id,toast:t,originalEvent:s.detail};this.dsToastAction.emit(i);t.action?.onAction?.({id:t.id,data:t.data,manager:this.manager,originalEvent:s.detail})}handlePointerDown(t,s){if(s.button!==0)return;const i=s.target;if(i.closest(P))return;const e=s.currentTarget;e.setPointerCapture(s.pointerId);this.activeSwipe={id:t.id,pointerId:s.pointerId,pointerType:s.pointerType,startX:s.clientX,startY:s.clientY,maxDistance:0,cancelled:false,axis:null};this.swipe={id:t.id,x:0,y:0};if(s.pointerType==="touch")this.pauseTimers("swipe")}handlePointerMove(t){const s=this.activeSwipe;if(!s||s.pointerId!==t.pointerId||s.cancelled)return;const i=t.clientX-s.startX;const e=t.clientY-s.startY;if(!s.axis&&Math.max(Math.abs(i),Math.abs(e))>1){s.axis=Math.abs(i)>=Math.abs(e)?"x":"y"}if(!s.axis)return;const o=s.axis==="x";const n=o?i>=0?"right":"left":e>=0?"down":"up";const a=this.swipeDirections.includes(n);const r=o?Math.abs(i):Math.abs(e);const c=a?r:Math.sqrt(r);const h=(o?i:e)<0?-c:c;const d=o?h:0;const l=o?0:h;if(s.maxDistance-c>=A){s.cancelled=true;this.cancelSwipe();return}s.maxDistance=Math.max(s.maxDistance,c);if(r>1)t.preventDefault();this.swipe={id:s.id,x:d,y:l,direction:a?n:undefined}}handlePointerUp(t){const s=this.activeSwipe;if(!s||s.pointerId!==t.pointerId)return;const i=this.swipe;const e=i?Math.max(Math.abs(i.x),Math.abs(i.y)):0;const o=!s.cancelled&&!!i?.direction&&e>=k;const n=s.id;const a=s.pointerType==="touch";this.activeSwipe=null;this.swipe=null;if(a)this.resumeTimers("swipe");if(o&&i.direction){this.dismissedSwipeDirections.set(n,i.direction);this.manager.close(n,"swipe")}}handlePointerCancel(t){if(this.activeSwipe?.pointerId!==t.pointerId)return;this.cancelSwipe()}cancelSwipe(){const t=this.activeSwipe?.pointerType==="touch";this.activeSwipe=null;this.swipe=null;if(t)this.resumeTimers("swipe")}get touchAction(){const t=this.swipeDirections.includes("left")||this.swipeDirections.includes("right");const s=this.swipeDirections.includes("up")||this.swipeDirections.includes("down");if(t&&s)return"none";if(t)return"pan-y";if(s)return"pan-x";return"auto"}measureNaturalHeight(t,s){const i=t.querySelector(".toast-surface");if(!i)return 0;const e=t.style.width;const o=t.style.transition;const n=i.style.height;if(s){t.style.transition="none";t.style.width="100%"}i.style.height="auto";const a=i.getBoundingClientRect().height;i.style.height=n;if(s){t.style.width=e;t.getBoundingClientRect();t.style.transition=o}return a}measureLayout(){let t=false;for(const s of this.records){const i=this.positionerElement(s.id);if(!i)continue;let e=this.heights.get(s.id)??0;const o=e<=0||this.measuredUpdateKeys.get(s.id)!==s.updateKey;if(o){e=this.measureNaturalHeight(i,!s.positioner);if(e>0){if(this.heights.get(s.id)!==e)t=true;this.heights.set(s.id,e);this.measuredUpdateKeys.set(s.id,s.updateKey)}}if(!s.positioner)continue;const n=this.resolveAnchor(s.positioner.anchor);if(!n||e<=0){if(this.anchoredPositions.delete(s.id))t=true;continue}const r=i.getBoundingClientRect();const c=p(s.positioner.sideOffset,f.space050);const h=p(s.positioner.alignOffset,0);const d=a({anchorRect:n.getBoundingClientRect(),popupWidth:r.width,popupHeight:e,side:s.positioner.side??"top",align:s.positioner.align??"center",sideOffsetPx:c,alignOffsetPx:h,viewportPadPx:p(undefined,f.space200),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});const l=this.anchoredPositions.get(s.id);if(!l||l.x!==d.x||l.y!==d.y||l.side!==d.resolvedSide){this.anchoredPositions.set(s.id,{x:d.x,y:d.y,side:d.resolvedSide});t=true}}if(t)this.layoutVersion+=1}resolveAnchor(t){return typeof t==="string"?document.getElementById(t):t}positionerElement(t){return Array.from(this.el.querySelectorAll(".toast-positioner")).find((s=>s.dataset["toastId"]===t))??null}ensureDomId(t){const s=this.domIds.get(t);if(s)return s;const i=++this.nextDomId;this.domIds.set(t,i);return i}get activeRecords(){return this.records.filter((t=>t.transitionStatus!=="ending"))}globalLayout(){const t=this.records.filter((t=>!t.positioner));let s=0;let i=0;const e=p(undefined,f.space200);const o=new Map;t.forEach(((t,n)=>{if(t.transitionStatus==="ending"){o.set(t.id,{index:n,offset:s,limited:false});return}const a=i>=Math.max(1,this.limit);o.set(t.id,{index:i,offset:s,limited:a});s+=(this.heights.get(t.id)??0)+e;i+=1}));return o}renderToast(t,s){const i=this.ensureDomId(t.id);const o=`ds-toast-${this.instanceId}-${i}-title`;const n=`ds-toast-${this.instanceId}-${i}-description`;const a=this.swipe?.id===t.id?this.swipe:null;const r=a?.direction??this.dismissedSwipeDirections.get(t.id);const c=!!t.positioner;const h=this.anchoredPositions.get(t.id);const d=t.priority==="high"&&!this.keyboardActive;const l=this.keyboardActive&&!s.limited?0:-1;const f=this.heights.get(t.id);return e("div",{ref:s=>this.bindAnimationCancel(s,t.id),class:{"toast-positioner":true,"toast-positioner--anchored":c,"toast-positioner--ending":t.transitionStatus==="ending"},"data-toast-id":t.id,"data-behind":!c&&s.index>0?"":undefined,"data-limited":s.limited?"":undefined,"data-positioned":c?String(!!h):undefined,"data-side":h?.side,inert:s.limited?true:undefined,"aria-hidden":s.limited?"true":undefined,style:{"--toast-index":String(s.index),"--toast-offset-y":`${s.offset}px`,"--toast-height":f?`${f}px`:undefined,zIndex:String(this.records.length-s.index),left:h?`${h.x}px`:undefined,top:h?`${h.y}px`:undefined},onAnimationEnd:()=>this.handleAnimationComplete(t)},e("div",{class:{"toast-surface":true,"toast-surface--swiping":!!a},role:t.priority==="high"?"alertdialog":"dialog","aria-modal":"false","aria-labelledby":t.title?o:t.description?n:undefined,"aria-describedby":t.title&&t.description?n:undefined,"aria-hidden":d?"true":undefined,"data-type":t.type,"data-priority":t.priority,"data-transition-status":t.transitionStatus,"data-swiping":a?"":undefined,"data-swipe-direction":r,style:{"--toast-swipe-movement-x":`${a?.x??0}px`,"--toast-swipe-movement-y":`${a?.y??0}px`,touchAction:this.touchAction},onPointerDown:s=>this.handlePointerDown(t,s),onPointerMove:t=>this.handlePointerMove(t),onPointerUp:t=>this.handlePointerUp(t),onPointerCancel:t=>this.handlePointerCancel(t),onPointerEnter:c?()=>this.handlePointerEnter(t.id):undefined,onPointerLeave:c?()=>this.handlePointerLeave(t.id):undefined},e("div",{class:"toast-content"},e("div",{class:"toast-copy"},t.title&&e("ds-text",{class:"toast-title",as:"div",variant:"text-title-small",color:"primary",textId:o},t.title),t.description&&e("ds-text",{class:"toast-description",as:"div",variant:"text-body-medium",color:"secondary",textId:n},t.description)),t.action&&e("ds-button-unfilled",{class:"toast-action",variant:"label",size:"md",type:"button",label:t.action.label,"aria-label":t.action.ariaLabel,hasBorder:true,focusTabIndex:l,"aria-hidden":!this.keyboardActive?"true":undefined,onDsClick:s=>this.handleAction(t,s)})),e("ds-button-unfilled",{class:"toast-close",variant:"icon",size:"md",type:"button",icon:"Cross","aria-label":this.closeLabel,hasBorder:false,activeFill:false,focusTabIndex:l,"aria-hidden":!this.keyboardActive?"true":undefined,onDsClick:()=>this.manager.close(t.id,"close-button")})))}render(){const t=this.globalLayout();const s=this.records.filter((t=>!t.positioner));const i=this.records.filter((t=>!!t.positioner));const n=this.records.filter((s=>s.priority==="high"&&s.transitionStatus!=="ending"&&!t.get(s.id)?.limited));return e(o,{key:"c69a849189d301c570397b7c83b3674c9ed48c6f"},e("section",{key:"ca457339d10fa1328e3715597397acedfc80763a",class:"toast-region",role:"region","aria-label":this.label,"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",tabIndex:-1,onFocusin:this.handleFocusIn,onFocusout:t=>this.handleFocusOut(t),onKeyDown:t=>this.handleRegionKeyDown(t)},e("div",{key:"13fea8a8d32111d0de94c573596504483a916dc9",class:"toast-viewport","data-expanded":this.expanded?"":undefined,onPointerEnter:()=>this.handlePointerEnter(C),onPointerLeave:()=>this.handlePointerLeave(C)},s.map((s=>this.renderToast(s,t.get(s.id)??{index:0,offset:0,limited:false})))),e("div",{key:"4b4176f0ae1268dceb8ffc732cb5ca0e58ded045",class:"toast-anchored-layer"},i.map((t=>this.renderToast(t,{index:0,offset:0,limited:false})))),e("div",{key:"65a17f61c3cde1a22cae64732c6a259c2a9221c8",class:"toast-assertive-announcer ds-visually-hidden"},n.map((t=>e("div",{role:"alert","aria-atomic":"true"},[t.title,t.description].filter(Boolean).join(". ")))))))}get el(){return this}static get watchers(){return{manager:[{onManagerChange:0}],timeout:[{onTimeoutChange:0}]}}static get style(){return T()}},[2,"ds-toast",{manager:[16],limit:[2],timeout:[8],label:[1],closeLabel:[1,"close-label"],avoidMobileShellBar:[516,"avoid-mobile-shell-bar"],swipeDirections:[16],records:[32],expanded:[32],keyboardActive:[32],swipe:[32],layoutVersion:[32]},undefined,{manager:[{onManagerChange:0}],timeout:[{onTimeoutChange:0}]}]);function R(){if(typeof customElements==="undefined"){return}const t=["ds-toast","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text"];t.forEach((t=>{switch(t){case"ds-toast":if(!customElements.get(n(t))){customElements.define(n(t),z)}break;case"ds-badge":if(!customElements.get(n(t))){r()}break;case"ds-button-unfilled":if(!customElements.get(n(t))){c()}break;case"ds-icon":if(!customElements.get(n(t))){h()}break;case"ds-loader":if(!customElements.get(n(t))){d()}break;case"ds-text":if(!customElements.get(n(t))){l()}break}}))}R();const $=z;const j=R;export{$ as DsToast,j as defineCustomElement};
1
+ import{p as t,H as s,c as i,h as e,a as o,t as n}from"./index.js";import{c as a}from"./p-BX0BMhgz.js";import{d as r}from"./p-DwKC_9u2.js";import{d as h}from"./p-c1pY-Mqq.js";import{d as c}from"./p-DumWT7NN.js";import{d}from"./p-Ca-I2UnB.js";import{d as l}from"./p-BNiIyZCn.js";import{T as f,r as u,a as m}from"./p-CXduurfd.js";import{r as p}from"./p-BJMRBHKW.js";function v(t,s){const i=typeof t==="function"?t(s):t;return typeof i==="string"?{description:i}:i}class g{constructor(){this.records=[];this.listeners=new Set;this.nextId=0}add(t){const s=t.id||`ds-toast-${++this.nextId}`;const i=this.records.findIndex((t=>t.id===s));if(!t.title?.trim()&&!t.description?.trim()){console.warn(`[ds-toast] Toast "${s}" should provide a title or description.`)}if(i>=0){const e=this.records[i];const o={...e,...t,id:s,priority:t.priority??e.priority,transitionStatus:"active",closeReason:undefined,updateKey:e.updateKey+1,timerKey:e.timerKey+1};this.records=[o,...this.records.filter(((t,s)=>s!==i))];this.emit();return s}const e={...t,id:s,priority:t.priority??"low",transitionStatus:"starting",updateKey:0,timerKey:0};this.records=[e,...this.records];this.emit();return s}update(t,s){const i=this.records.findIndex((s=>s.id===t));if(i<0)return;const e=this.records[i];const o=Object.prototype.hasOwnProperty.call(s,"timeout")||e.type==="loading"&&s.type!==undefined&&s.type!=="loading";const n={...e,...s,id:t,priority:s.priority??e.priority,updateKey:e.updateKey+1,timerKey:o?e.timerKey+1:e.timerKey};this.records=this.records.map(((t,s)=>s===i?n:t));this.emit()}close(t,s="programmatic"){const i=this.records.findIndex((s=>s.id===t));if(i<0||this.records[i].transitionStatus==="ending")return;const e={...this.records[i],transitionStatus:"ending",closeReason:s};this.records=this.records.map(((t,s)=>s===i?e:t));this.emit();e.onClose?.({id:t,reason:s,toast:e})}closeAll(t="programmatic"){for(const s of[...this.records])this.close(s.id,t)}async promise(t,s){const i=v(s.loading,undefined);const e=this.add({...i,type:i.type??"loading",timeout:0});try{const i=await t;const o=v(s.success,i);this.update(e,{...o,type:o.type??"success",timeout:o.timeout});return i}catch(t){const i=v(s.error,t);this.update(e,{...i,type:i.type??"error",timeout:i.timeout});throw t}}subscribe(t){this.listeners.add(t);t(this.getSnapshot());return()=>{this.listeners.delete(t)}}getSnapshot(){return this.records.map((t=>({...t})))}activate(t){const s=this.records.find((s=>s.id===t));if(!s||s.transitionStatus!=="starting")return;this.records=this.records.map((s=>s.id===t?{...s,transitionStatus:"active"}:s));this.emit()}remove(t){const s=this.records.find((s=>s.id===t));if(!s||s.transitionStatus!=="ending")return null;const i=s.closeReason??"programmatic";this.records=this.records.filter((s=>s.id!==t));this.emit();const e={id:t,reason:i,toast:s};return e}notifyRemove(t){const{toast:s}=t;s.onRemove?.(t)}emit(){const t=this.getSnapshot();for(const s of this.listeners)s(t)}}function w(){return new g}const b=Symbol.for("@ds-mo/ui/default-toast-manager");const y=globalThis;const x=y[b];const M=x??w();if(!x)y[b]=M;const T=()=>`.ds-visually-hidden.sc-ds-toast-h,.ds-visually-hidden.sc-ds-toast{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}@media (forced-colors: active){.sc-ds-toast:root,.sc-ds-toast-h,.ds-forced-colors-scope.sc-ds-toast{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-toast-h{display:contents}.toast-region.sc-ds-toast{position:fixed;inset:0;z-index:var(--dimension-z-index-floating);pointer-events:none;outline:none}.toast-viewport.sc-ds-toast{position:absolute;right:var(--dimension-space-200);bottom:var(--dimension-space-200);display:grid;width:min( var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)) )}@media (max-width: 767px){[avoid-mobile-shell-bar].sc-ds-toast-h .toast-viewport.sc-ds-toast{bottom:calc( var(--dimension-space-200) + var(--dimension-stroke-width-012) + var(--dimension-space-100) + var(--dimension-size-500) + max(var(--dimension-space-100), env(safe-area-inset-bottom)) )}}.toast-positioner.sc-ds-toast{grid-area:1 / 1;align-self:end;justify-self:center;width:100%;pointer-events:auto;transform:translateY( calc(-1 * var(--toast-index) * var(--dimension-space-100)) );transition:transform var(--effect-motion-short-3), width var(--effect-motion-short-3)}.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner.sc-ds-toast{width:calc( 100% - 2 * var(--toast-index) * var(--dimension-space-100) )}.toast-viewport[data-expanded].sc-ds-toast .toast-positioner.sc-ds-toast{transform:translateY(calc(-1 * var(--toast-offset-y)))}.toast-positioner[data-limited].sc-ds-toast{visibility:hidden;pointer-events:none}.toast-positioner--anchored.sc-ds-toast{position:fixed;width:min( var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)) );transform:none}.toast-positioner--anchored[data-positioned='false'].sc-ds-toast{visibility:hidden}.toast-surface.sc-ds-toast{position:relative;display:block;box-sizing:border-box;width:100%;height:var(--toast-height, auto);padding:var(--dimension-space-200);overflow:hidden;color:var(--color-foreground-primary);background-color:var(--color-background-primary);border-radius:var(--dimension-radius-050);box-shadow:var(--effect-elevation-elevated-floating);transform:translate( var(--toast-swipe-movement-x), var(--toast-swipe-movement-y) );animation:toast-enter var(--effect-motion-short-2) both}.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{animation:toast-exit var(--effect-motion-short-3) both}.toast-surface--swiping.sc-ds-toast{transition:none;user-select:none}.toast-content.sc-ds-toast{display:flex;flex-direction:column;min-width:0;padding-inline-end:var(--dimension-size-500);transition:opacity var(--effect-motion-short-3)}.toast-copy.sc-ds-toast{display:flex;flex-direction:column;min-width:0;min-height:var(--typography-lineheight-md);margin-block:calc(-1 * var(--dimension-space-025));gap:var(--dimension-space-050)}.toast-title.sc-ds-toast,.toast-description.sc-ds-toast{min-width:0}.toast-action.sc-ds-toast{align-self:start;margin-top:calc( var(--dimension-space-200) + var(--dimension-space-025) )}.toast-close.sc-ds-toast{position:absolute;top:var(--dimension-space-100);right:var(--dimension-space-100);transition:opacity var(--effect-motion-short-3)}.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner[data-behind].sc-ds-toast .toast-content.sc-ds-toast,.toast-viewport.sc-ds-toast:not([data-expanded]) .toast-positioner[data-behind].sc-ds-toast .toast-close.sc-ds-toast{opacity:0}@keyframes toast-enter{from{opacity:0;transform:translateY(var(--dimension-space-100))}to{opacity:1;transform:translateY(0)}}@keyframes toast-exit{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.toast-positioner.sc-ds-toast,.toast-surface.sc-ds-toast,.toast-content.sc-ds-toast,.toast-close.sc-ds-toast,.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{transition:none;animation:none}.toast-positioner--ending.sc-ds-toast .toast-surface.sc-ds-toast{opacity:0}}@media (forced-colors: active){.toast-surface.sc-ds-toast{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}}`;const k=40;const A=10;const C="__global-stack__";const P='button,a,input,textarea,select,[role="button"],[data-ds-toast-swipe-ignore]';const S=new WeakMap;const E=new Set;let F=null;let D=0;const z=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.dsToastClose=i(this,"dsToastClose");this.dsToastRemove=i(this,"dsToastRemove");this.dsToastAction=i(this,"dsToastAction");this.manager=M;this.limit=3;this.timeout=f.animationDelayLong2;this.label="Notifications";this.closeLabel="Close notification";this.avoidMobileShellBar=false;this.swipeDirections=["down","right"];this.records=[];this.expanded=false;this.keyboardActive=false;this.swipe=null;this.layoutVersion=0;this.instanceId=++D;this.domIds=new Map;this.timers=new Map;this.closeWatchdogs=new Map;this.closeFrames=new Map;this.closeEvents=new Set;this.activationFrames=new Map;this.pauseReasons=new Set;this.hoveredIds=new Set;this.heights=new Map;this.measuredUpdateKeys=new Map;this.anchoredPositions=new Map;this.dismissedSwipeDirections=new Map;this.observedElements=new Set;this.pendingRemovals=[];this.unsubscribe=null;this.attachedManager=null;this.previousFocus=null;this.resizeObserver=null;this.mutationObserver=null;this.layoutFrame=null;this.activeSwipe=null;this.nextDomId=0;this.connected=false;this.pendingHoverLeave=false;this.handleWindowBlur=()=>this.pauseTimers("window");this.handleWindowFocus=()=>this.resumeTimers("window");this.handleVisibilityChange=()=>{if(document.hidden)this.pauseTimers("document");else this.resumeTimers("document")};this.handleFocusIn=()=>{const t=document.activeElement;if(!(t instanceof s)||!t.matches(":focus-visible"))return;F=this;this.keyboardActive=true;this.expanded=true;this.pauseTimers("focus")};this.handleFocusOut=t=>{const s=t.relatedTarget;if(s instanceof Node&&this.el.contains(s))return;if(!this.keyboardActive)return;this.keyboardActive=false;this.expanded=this.hoveredIds.size>0;this.resumeTimers("focus")};this.handleDocumentKeyDown=t=>{if(t.key!=="F6")return;const s=Array.from(E).filter((t=>t.activeRecords.length>0));const i=F&&F.activeRecords.length?F:s[s.length-1];if(i!==this)return;t.preventDefault();if(!this.el.contains(document.activeElement)){this.previousFocus=document.activeElement}this.keyboardActive=true;this.regionElement?.focus()};this.handleRegionKeyDown=t=>{if(t.key==="Escape"){const s=t.target;const i=s.closest(".toast-positioner");const e=i?.dataset["toastId"]??this.activeRecords[0]?.id;if(e){t.preventDefault();this.manager.close(e,"escape")}return}if(t.key==="Tab"&&t.shiftKey&&t.target===this.regionElement){t.preventDefault();this.restorePreviousFocus()}};this.handleWindowResize=()=>{this.heights.clear();this.measuredUpdateKeys.clear();this.layoutVersion+=1;this.scheduleLayout()};this.scheduleLayout=()=>{if(this.layoutFrame!==null)return;this.layoutFrame=requestAnimationFrame((()=>{this.layoutFrame=null;this.measureLayout()}))}}connectedCallback(){this.connect()}componentDidLoad(){this.connect()}connect(){if(this.connected)return;this.connected=true;this.resizeObserver??(this.resizeObserver=new ResizeObserver((()=>this.scheduleLayout())));this.mutationObserver??(this.mutationObserver=new MutationObserver((()=>this.scheduleLayout())));this.mutationObserver.observe(document.body,{childList:true,subtree:true});if(!this.unsubscribe)this.attachManager(this.manager);window.addEventListener("blur",this.handleWindowBlur);window.addEventListener("focus",this.handleWindowFocus);window.addEventListener("resize",this.handleWindowResize);window.addEventListener("scroll",this.scheduleLayout,true);document.addEventListener("keydown",this.handleDocumentKeyDown);document.addEventListener("visibilitychange",this.handleVisibilityChange);E.add(this);if(!F)F=this}componentDidRender(){this.syncObservedElements();this.flushPendingRemovals();this.scheduleLayout()}disconnectedCallback(){this.connected=false;this.flushPendingRemovals();this.detachManager();this.resetManagerState();this.resizeObserver?.disconnect();this.resizeObserver=null;this.mutationObserver?.disconnect();this.mutationObserver=null;this.observedElements.clear();if(this.layoutFrame!==null)cancelAnimationFrame(this.layoutFrame);this.layoutFrame=null;window.removeEventListener("blur",this.handleWindowBlur);window.removeEventListener("focus",this.handleWindowFocus);window.removeEventListener("resize",this.handleWindowResize);window.removeEventListener("scroll",this.scheduleLayout,true);document.removeEventListener("keydown",this.handleDocumentKeyDown);document.removeEventListener("visibilitychange",this.handleVisibilityChange);E.delete(this);if(F===this){const t=Array.from(E);F=t[t.length-1]??null}}onManagerChange(t){this.detachManager();this.resetManagerState();if(this.connected)this.attachManager(t)}onTimeoutChange(){for(const t of this.timers.values()){if(t.handle)clearTimeout(t.handle)}this.timers.clear();this.syncTimers()}attachManager(t){const s=S.get(t);if(s&&s!==this){console.warn("[ds-toast] A manager can control only one connected ds-toast instance.");return}S.set(t,this);this.attachedManager=t;this.unsubscribe=t.subscribe((t=>{this.records=t;this.syncLifecycle(t);this.scheduleLayout()}))}detachManager(){this.unsubscribe?.();this.unsubscribe=null;if(this.attachedManager&&S.get(this.attachedManager)===this){S.delete(this.attachedManager)}this.attachedManager=null}resetManagerState(){this.flushPendingRemovals();if(this.el.contains(document.activeElement))this.restorePreviousFocus();this.clearAllTimers();for(const t of this.activationFrames.values())cancelAnimationFrame(t);for(const t of this.closeFrames.values())cancelAnimationFrame(t);this.activationFrames.clear();this.closeFrames.clear();this.closeEvents.clear();this.pauseReasons.clear();this.hoveredIds.clear();this.pendingHoverLeave=false;this.heights.clear();this.measuredUpdateKeys.clear();this.anchoredPositions.clear();this.dismissedSwipeDirections.clear();this.domIds.clear();this.activeSwipe=null;this.swipe=null;this.expanded=false;this.keyboardActive=false;this.records=[];this.resizeObserver?.disconnect();this.observedElements.clear()}syncObservedElements(){const t=new Set(this.el.querySelectorAll(".toast-positioner"));for(const s of this.records){if(!s.positioner)continue;const i=this.resolveAnchor(s.positioner.anchor);if(i)t.add(i)}for(const s of this.observedElements){if(!t.has(s)){this.resizeObserver?.unobserve(s);this.observedElements.delete(s)}}for(const s of t){if(this.observedElements.has(s))continue;this.resizeObserver?.observe(s);this.observedElements.add(s)}}flushPendingRemovals(){for(const t of this.pendingRemovals.splice(0)){t.manager.notifyRemove(t.context);this.dsToastRemove.emit({id:t.context.id,toast:t.context.toast})}}syncLifecycle(t){const s=new Set(t.map((t=>t.id)));for(const t of this.hoveredIds){if(t!==C&&!s.has(t))this.hoveredIds.delete(t)}const i=t.some((t=>t.transitionStatus==="ending"));if(this.pendingHoverLeave&&!i&&!this.hoveredIds.size){this.pendingHoverLeave=false;this.expanded=false;this.resumeTimers("hover")}else if(!this.hoveredIds.size&&!this.pendingHoverLeave){this.resumeTimers("hover")}for(const[t,i]of this.timers){if(s.has(t))continue;if(i.handle)clearTimeout(i.handle);this.timers.delete(t)}for(const[t,i]of this.closeWatchdogs){if(s.has(t))continue;clearTimeout(i);this.closeWatchdogs.delete(t)}for(const[t,i]of this.activationFrames){if(s.has(t))continue;cancelAnimationFrame(i);this.activationFrames.delete(t)}for(const[t,i]of this.closeFrames){if(s.has(t))continue;cancelAnimationFrame(i);this.closeFrames.delete(t)}for(const t of this.domIds.keys()){if(s.has(t))continue;this.closeEvents.delete(t);this.domIds.delete(t);this.heights.delete(t);this.measuredUpdateKeys.delete(t);this.anchoredPositions.delete(t);this.dismissedSwipeDirections.delete(t)}for(const s of t){this.ensureDomId(s.id);if(s.transitionStatus==="starting"&&!this.activationFrames.has(s.id)){const t=this.attachedManager;const i=requestAnimationFrame((()=>{this.activationFrames.delete(s.id);t?.activate(s.id)}));this.activationFrames.set(s.id,i)}if(s.transitionStatus==="ending"){this.clearToastTimer(s.id);this.beginRemoval(s)}else{const t=this.closeWatchdogs.get(s.id);if(t)clearTimeout(t);this.closeWatchdogs.delete(s.id);const i=this.closeFrames.get(s.id);if(i)cancelAnimationFrame(i);this.closeFrames.delete(s.id);this.closeEvents.delete(s.id)}}this.syncTimers()}syncTimers(){const t=new Set;for(const s of this.records){if(s.transitionStatus!=="active")continue;t.add(s.id);const i=this.resolveToastTimeout(s);if(i<=0){this.clearToastTimer(s.id);continue}const e=this.timers.get(s.id);if(!e||e.timerKey!==s.timerKey){this.clearToastTimer(s.id);this.timers.set(s.id,{timerKey:s.timerKey,remaining:i,startedAt:0,handle:null})}if(!this.isPaused)this.startToastTimer(s.id)}for(const s of this.timers.keys()){if(!t.has(s))this.clearToastTimer(s)}}resolveToastTimeout(t){const s=t.timeout??this.timeout;if(typeof s==="number")return Math.max(0,s);return u(s,f.animationDelayLong2)}startToastTimer(t){const s=this.timers.get(t);if(!s||s.handle||s.remaining<=0)return;s.startedAt=Date.now();s.handle=setTimeout((()=>{s.handle=null;s.remaining=0;this.manager.close(t,"timeout")}),s.remaining)}pauseTimers(t){const s=this.isPaused;this.pauseReasons.add(t);if(s)return;const i=Date.now();for(const t of this.timers.values()){if(!t.handle)continue;clearTimeout(t.handle);t.handle=null;t.remaining=Math.max(0,t.remaining-(i-t.startedAt))}}resumeTimers(t){this.pauseReasons.delete(t);if(this.isPaused)return;for(const t of this.timers.keys())this.startToastTimer(t)}get isPaused(){return this.pauseReasons.size>0}clearToastTimer(t){const s=this.timers.get(t);if(s?.handle)clearTimeout(s.handle);this.timers.delete(t)}clearAllTimers(){for(const t of this.timers.values()){if(t.handle)clearTimeout(t.handle)}for(const t of this.closeWatchdogs.values())clearTimeout(t);this.timers.clear();this.closeWatchdogs.clear()}beginRemoval(t){if(!this.closeEvents.has(t.id)){this.closeEvents.add(t.id);this.dsToastClose.emit({id:t.id,reason:t.closeReason??"programmatic",toast:t});this.moveFocusAfterClose(t.id)}if(this.closeWatchdogs.has(t.id)||this.closeFrames.has(t.id))return;const s=m(f.motionShort3,f.animationDurationShort3);if(s<=0){queueMicrotask((()=>this.completeRemoval(t)));return}const i=requestAnimationFrame((()=>{this.closeFrames.delete(t.id);const i=this.records.find((s=>s.id===t.id));if(!i||i.transitionStatus!=="ending")return;this.closeWatchdogs.set(t.id,setTimeout((()=>this.completeRemoval(i)),s))}));this.closeFrames.set(t.id,i)}completeRemoval(t){const s=this.records.find((s=>s.id===t.id));if(!s||s.transitionStatus!=="ending")return;const i=this.closeWatchdogs.get(t.id);if(i)clearTimeout(i);this.closeWatchdogs.delete(t.id);const e=this.closeFrames.get(t.id);if(e)cancelAnimationFrame(e);this.closeFrames.delete(t.id);const o=this.attachedManager;const n=o?.remove(t.id);if(o&&n)this.pendingRemovals.push({manager:o,context:n})}handleAnimationComplete(t){if(t.transitionStatus==="ending")this.completeRemoval(t)}bindAnimationCancel(t,s){if(!t||t.dataset["cancelBound"]==="true")return;t.dataset["cancelBound"]="true";t.addEventListener("animationcancel",(()=>{const t=this.records.find((t=>t.id===s));if(t)this.handleAnimationComplete(t)}))}handlePointerEnter(t){F=this;this.pendingHoverLeave=false;this.hoveredIds.add(t);this.expanded=true;this.pauseTimers("hover")}handlePointerLeave(t){this.hoveredIds.delete(t);if(this.hoveredIds.size)return;if(this.records.some((t=>t.transitionStatus==="ending"))){this.pendingHoverLeave=true;return}this.expanded=false;this.resumeTimers("hover")}get regionElement(){return this.el.querySelector(".toast-region")}restorePreviousFocus(){this.previousFocus?.focus?.();this.previousFocus=null;this.keyboardActive=false}moveFocusAfterClose(t){const s=document.activeElement;const i=this.positionerElement(t);if(!s||!i?.contains(s))return;requestAnimationFrame((()=>{const s=this.activeRecords.find((s=>s.id!==t));const i=s?this.positionerElement(s.id)?.querySelector("ds-button-unfilled"):null;if(i?.setFocus)void i.setFocus();else if(s)this.regionElement?.focus();else this.restorePreviousFocus()}))}handleAction(t,s){const i={id:t.id,toast:t,originalEvent:s.detail};this.dsToastAction.emit(i);t.action?.onAction?.({id:t.id,data:t.data,manager:this.manager,originalEvent:s.detail})}handlePointerDown(t,s){if(s.button!==0)return;const i=s.target;if(i.closest(P))return;const e=s.currentTarget;e.setPointerCapture(s.pointerId);this.activeSwipe={id:t.id,pointerId:s.pointerId,pointerType:s.pointerType,startX:s.clientX,startY:s.clientY,maxDistance:0,cancelled:false,axis:null};this.swipe={id:t.id,x:0,y:0};if(s.pointerType==="touch")this.pauseTimers("swipe")}handlePointerMove(t){const s=this.activeSwipe;if(!s||s.pointerId!==t.pointerId||s.cancelled)return;const i=t.clientX-s.startX;const e=t.clientY-s.startY;if(!s.axis&&Math.max(Math.abs(i),Math.abs(e))>1){s.axis=Math.abs(i)>=Math.abs(e)?"x":"y"}if(!s.axis)return;const o=s.axis==="x";const n=o?i>=0?"right":"left":e>=0?"down":"up";const a=this.swipeDirections.includes(n);const r=o?Math.abs(i):Math.abs(e);const h=a?r:Math.sqrt(r);const c=(o?i:e)<0?-h:h;const d=o?c:0;const l=o?0:c;if(s.maxDistance-h>=A){s.cancelled=true;this.cancelSwipe();return}s.maxDistance=Math.max(s.maxDistance,h);if(r>1)t.preventDefault();this.swipe={id:s.id,x:d,y:l,direction:a?n:undefined}}handlePointerUp(t){const s=this.activeSwipe;if(!s||s.pointerId!==t.pointerId)return;const i=this.swipe;const e=i?Math.max(Math.abs(i.x),Math.abs(i.y)):0;const o=!s.cancelled&&!!i?.direction&&e>=k;const n=s.id;const a=s.pointerType==="touch";this.activeSwipe=null;this.swipe=null;if(a)this.resumeTimers("swipe");if(o&&i.direction){this.dismissedSwipeDirections.set(n,i.direction);this.manager.close(n,"swipe")}}handlePointerCancel(t){if(this.activeSwipe?.pointerId!==t.pointerId)return;this.cancelSwipe()}cancelSwipe(){const t=this.activeSwipe?.pointerType==="touch";this.activeSwipe=null;this.swipe=null;if(t)this.resumeTimers("swipe")}get touchAction(){const t=this.swipeDirections.includes("left")||this.swipeDirections.includes("right");const s=this.swipeDirections.includes("up")||this.swipeDirections.includes("down");if(t&&s)return"none";if(t)return"pan-y";if(s)return"pan-x";return"auto"}measureNaturalHeight(t,s){const i=t.querySelector(".toast-surface");if(!i)return 0;const e=t.style.width;const o=t.style.transition;const n=i.style.height;if(s){t.style.transition="none";t.style.width="100%"}i.style.height="auto";const a=i.getBoundingClientRect().height;i.style.height=n;if(s){t.style.width=e;t.getBoundingClientRect();t.style.transition=o}return a}measureLayout(){let t=false;for(const s of this.records){const i=this.positionerElement(s.id);if(!i)continue;let e=this.heights.get(s.id)??0;const o=e<=0||this.measuredUpdateKeys.get(s.id)!==s.updateKey;if(o){e=this.measureNaturalHeight(i,!s.positioner);if(e>0){if(this.heights.get(s.id)!==e)t=true;this.heights.set(s.id,e);this.measuredUpdateKeys.set(s.id,s.updateKey)}}if(!s.positioner)continue;const n=this.resolveAnchor(s.positioner.anchor);if(!n||e<=0){if(this.anchoredPositions.delete(s.id))t=true;continue}const r=i.getBoundingClientRect();const h=p(s.positioner.sideOffset,f.space050);const c=p(s.positioner.alignOffset,0);const d=a({anchorRect:n.getBoundingClientRect(),popupWidth:r.width,popupHeight:e,side:s.positioner.side??"top",align:s.positioner.align??"center",sideOffsetPx:h,alignOffsetPx:c,viewportPadPx:p(undefined,f.space200),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});const l=this.anchoredPositions.get(s.id);if(!l||l.x!==d.x||l.y!==d.y||l.side!==d.resolvedSide){this.anchoredPositions.set(s.id,{x:d.x,y:d.y,side:d.resolvedSide});t=true}}if(t)this.layoutVersion+=1}resolveAnchor(t){return typeof t==="string"?document.getElementById(t):t}positionerElement(t){return Array.from(this.el.querySelectorAll(".toast-positioner")).find((s=>s.dataset["toastId"]===t))??null}ensureDomId(t){const s=this.domIds.get(t);if(s)return s;const i=++this.nextDomId;this.domIds.set(t,i);return i}get activeRecords(){return this.records.filter((t=>t.transitionStatus!=="ending"))}globalLayout(){const t=this.records.filter((t=>!t.positioner));let s=0;let i=0;const e=p(undefined,f.space200);const o=new Map;t.forEach(((t,n)=>{if(t.transitionStatus==="ending"){o.set(t.id,{index:n,offset:s,limited:false});return}const a=i>=Math.max(1,this.limit);o.set(t.id,{index:i,offset:s,limited:a});s+=(this.heights.get(t.id)??0)+e;i+=1}));return o}renderToast(t,s){const i=this.ensureDomId(t.id);const o=`ds-toast-${this.instanceId}-${i}-title`;const n=`ds-toast-${this.instanceId}-${i}-description`;const a=this.swipe?.id===t.id?this.swipe:null;const r=a?.direction??this.dismissedSwipeDirections.get(t.id);const h=!!t.positioner;const c=this.anchoredPositions.get(t.id);const d=t.priority==="high"&&!this.keyboardActive;const l=this.keyboardActive&&!s.limited?0:-1;const f=this.heights.get(t.id);return e("div",{ref:s=>this.bindAnimationCancel(s,t.id),class:{"toast-positioner":true,"toast-positioner--anchored":h,"toast-positioner--ending":t.transitionStatus==="ending"},"data-toast-id":t.id,"data-behind":!h&&s.index>0?"":undefined,"data-limited":s.limited?"":undefined,"data-positioned":h?String(!!c):undefined,"data-side":c?.side,inert:s.limited?true:undefined,"aria-hidden":s.limited?"true":undefined,style:{"--toast-index":String(s.index),"--toast-offset-y":`${s.offset}px`,"--toast-height":f?`${f}px`:undefined,zIndex:String(this.records.length-s.index),left:c?`${c.x}px`:undefined,top:c?`${c.y}px`:undefined},onAnimationEnd:()=>this.handleAnimationComplete(t)},e("div",{class:{"toast-surface":true,"toast-surface--swiping":!!a},role:t.priority==="high"?"alertdialog":"dialog","aria-modal":"false","aria-labelledby":t.title?o:t.description?n:undefined,"aria-describedby":t.title&&t.description?n:undefined,"aria-hidden":d?"true":undefined,"data-type":t.type,"data-priority":t.priority,"data-transition-status":t.transitionStatus,"data-swiping":a?"":undefined,"data-swipe-direction":r,style:{"--toast-swipe-movement-x":`${a?.x??0}px`,"--toast-swipe-movement-y":`${a?.y??0}px`,touchAction:this.touchAction},onPointerDown:s=>this.handlePointerDown(t,s),onPointerMove:t=>this.handlePointerMove(t),onPointerUp:t=>this.handlePointerUp(t),onPointerCancel:t=>this.handlePointerCancel(t),onPointerEnter:h?()=>this.handlePointerEnter(t.id):undefined,onPointerLeave:h?()=>this.handlePointerLeave(t.id):undefined},e("div",{class:"toast-content"},e("div",{class:"toast-copy"},t.title&&e("ds-text",{class:"toast-title",as:"div",variant:"text-title-small",color:"primary",textId:o},t.title),t.description&&e("ds-text",{class:"toast-description",as:"div",variant:"text-body-medium",color:"secondary",textId:n},t.description)),t.action&&e("ds-button-unfilled",{class:"toast-action",variant:"label",size:"md",type:"button",label:t.action.label,"aria-label":t.action.ariaLabel,hasBorder:true,focusTabIndex:l,"aria-hidden":!this.keyboardActive?"true":undefined,onDsClick:s=>this.handleAction(t,s)})),e("ds-button-unfilled",{class:"toast-close",variant:"icon",size:"md",type:"button",icon:"Cross","aria-label":this.closeLabel,hasBorder:false,activeFill:false,focusTabIndex:l,"aria-hidden":!this.keyboardActive?"true":undefined,onDsClick:()=>this.manager.close(t.id,"close-button")})))}render(){const t=this.globalLayout();const s=this.records.filter((t=>!t.positioner));const i=this.records.filter((t=>!!t.positioner));const n=this.records.filter((s=>s.priority==="high"&&s.transitionStatus!=="ending"&&!t.get(s.id)?.limited));return e(o,{key:"2738b78412ec7c4a8f1af8af40d335dc09c51347"},e("section",{key:"29480802b6b7909d541aa92aa7a9adc476ca7d6b",class:"toast-region",role:"region","aria-label":this.label,"aria-live":"polite","aria-atomic":"false","aria-relevant":"additions text",tabIndex:-1,onFocusin:this.handleFocusIn,onFocusout:t=>this.handleFocusOut(t),onKeyDown:t=>this.handleRegionKeyDown(t)},e("div",{key:"ef800b62d39aec905e058607dac0392c182007e0",class:"toast-viewport","data-expanded":this.expanded?"":undefined,onPointerEnter:()=>this.handlePointerEnter(C),onPointerLeave:()=>this.handlePointerLeave(C)},s.map((s=>this.renderToast(s,t.get(s.id)??{index:0,offset:0,limited:false})))),e("div",{key:"c96557d90f8a18cd3e7af549cdbd67bfc2f5442a",class:"toast-anchored-layer"},i.map((t=>this.renderToast(t,{index:0,offset:0,limited:false})))),e("div",{key:"260a666dc3e02a1f726fc5690b97964c58b4d239",class:"toast-assertive-announcer ds-visually-hidden"},n.map((t=>e("div",{role:"alert","aria-atomic":"true"},[t.title,t.description].filter(Boolean).join(". ")))))))}get el(){return this}static get watchers(){return{manager:[{onManagerChange:0}],timeout:[{onTimeoutChange:0}]}}static get style(){return T()}},[2,"ds-toast",{manager:[16],limit:[2],timeout:[8],label:[1],closeLabel:[1,"close-label"],avoidMobileShellBar:[516,"avoid-mobile-shell-bar"],swipeDirections:[16],records:[32],expanded:[32],keyboardActive:[32],swipe:[32],layoutVersion:[32]},undefined,{manager:[{onManagerChange:0}],timeout:[{onTimeoutChange:0}]}]);function R(){if(typeof customElements==="undefined"){return}const t=["ds-toast","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text"];t.forEach((t=>{switch(t){case"ds-toast":if(!customElements.get(n(t))){customElements.define(n(t),z)}break;case"ds-badge":if(!customElements.get(n(t))){r()}break;case"ds-button-unfilled":if(!customElements.get(n(t))){h()}break;case"ds-icon":if(!customElements.get(n(t))){c()}break;case"ds-loader":if(!customElements.get(n(t))){d()}break;case"ds-text":if(!customElements.get(n(t))){l()}break}}))}R();const $=z;const j=R;export{$ as DsToast,j as defineCustomElement};
2
2
  //# sourceMappingURL=ds-toast.js.map
@@ -1,2 +1,2 @@
1
- import{p as t,H as e,h as s,a as i,t as a}from"./index.js";import{d as n}from"./p-BNiIyZCn.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing..."}render(){return s(i,{key:"3d40d51bf6bead4b3abea981552b7d8538d9adea",role:"status","aria-live":"polite","aria-atomic":"true"},s("ds-text",{key:"380a3a16e474f2b7a1e8170436b3e2f662f80af6",as:"span",variant:"text-body-medium",color:"secondary",shimmer:true},this.label))}static get style(){return o()}},[2,"ds-typing-indicator",{label:[1]}]);function d(){if(typeof customElements==="undefined"){return}const t=["ds-typing-indicator","ds-text"];t.forEach((t=>{switch(t){case"ds-typing-indicator":if(!customElements.get(a(t))){customElements.define(a(t),r)}break;case"ds-text":if(!customElements.get(a(t))){n()}break}}))}d();const c=r;const m=d;export{c as DsTypingIndicator,m as defineCustomElement};
1
+ import{p as t,H as e,h as s,a as i,t as n}from"./index.js";import{d as a}from"./p-BNiIyZCn.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing..."}render(){return s(i,{key:"48efecb72182260bef9c8005af38545a0ec4821e",role:"status","aria-live":"polite","aria-atomic":"true"},s("ds-text",{key:"b0d8f39ae7b4f61a9c41151397bb40f315294915",as:"span",variant:"text-body-medium",color:"secondary",shimmer:true},this.label))}static get style(){return o()}},[2,"ds-typing-indicator",{label:[1]}]);function c(){if(typeof customElements==="undefined"){return}const t=["ds-typing-indicator","ds-text"];t.forEach((t=>{switch(t){case"ds-typing-indicator":if(!customElements.get(n(t))){customElements.define(n(t),r)}break;case"ds-text":if(!customElements.get(n(t))){a()}break}}))}c();const d=r;const m=c;export{d as DsTypingIndicator,m as defineCustomElement};
2
2
  //# sourceMappingURL=ds-typing-indicator.js.map
@@ -59,4 +59,34 @@ export type {
59
59
  AgentToolState,
60
60
  AgentResponsePart,
61
61
  } from '../types/components/conversation-types';
62
+ export type {
63
+ TableCaptionVisibility,
64
+ TableCellAlign,
65
+ TableCellAction,
66
+ TableCellActionDetail,
67
+ TableCellBlank,
68
+ TableCellEmpty,
69
+ TableCellIcon,
70
+ TableCellImage,
71
+ TableCellPrimaryText,
72
+ TableCellText,
73
+ TableCellTag,
74
+ TableCellTagVariant,
75
+ TableCellValue,
76
+ TableColumn,
77
+ TableColumnWidth,
78
+ TableGroup,
79
+ TableHeaderSegment,
80
+ TableGroupingChangeDetail,
81
+ TableGroupingState,
82
+ TableLoadMoreDetail,
83
+ TableLoadMoreMode,
84
+ TableLoadMoreReason,
85
+ TableRow,
86
+ TableSelectionChangeDetail,
87
+ TableSelectionMode,
88
+ TableSortChangeDetail,
89
+ TableSortDirection,
90
+ TableSortState,
91
+ } from '../types/components/Table/table-types';
62
92