@ds-mo/ui 14.21.0 → 14.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +8 -4
- package/dist/agent.json +62 -12
- package/dist/angular/ds-bar-title.d.ts +1 -1
- package/dist/angular/ds-bar-title.js +3 -3
- package/dist/angular/ds-panel-nav.d.ts +7 -1
- package/dist/angular/ds-panel-nav.js +7 -4
- package/dist/angular/ds-shell-app.d.ts +7 -1
- package/dist/angular/ds-shell-app.js +7 -4
- package/dist/angular/ds-shell-page.d.ts +1 -1
- package/dist/angular/ds-shell-page.js +3 -3
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/p-B0OZx3JB.js +2 -0
- package/dist/components/p-B0OZx3JB.js.map +1 -0
- package/dist/components/p-CB3fv_Oh.js +2 -0
- package/dist/components/p-CB3fv_Oh.js.map +1 -0
- package/dist/components/p-D9wZlB_N.js +2 -0
- package/dist/components/p-D9wZlB_N.js.map +1 -0
- package/dist/components/{p-Bc_z1UwJ.js → p-De0qjzPu.js} +2 -2
- package/dist/components/p-DnZ7DNaz.js +2 -0
- package/dist/components/p-DnZ7DNaz.js.map +1 -0
- package/dist/docs/components.json +292 -13
- package/dist/lib/components/BarTitle/bar-title-types.d.ts +1 -0
- package/dist/lib/components/Menu/menu-placement.d.ts +13 -0
- package/dist/lib/components/PanelNav/panel-nav-types.d.ts +19 -0
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +1 -0
- package/dist/lib/components/ShellPage/shell-page-types.d.ts +1 -0
- package/dist/lib/shell/index.d.ts +3 -3
- package/dist/lib/shell/index.js.map +2 -2
- package/dist/mcp-data/registry/bar-title.json +25 -4
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +71 -10
- package/dist/mcp-data/registry/registry.json +61 -11
- package/dist/mcp-data/registry/shell-app.json +47 -5
- package/dist/mcp-data/registry/shell-page.json +25 -5
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/react/ds-panel-nav.d.ts +2 -1
- package/dist/react/ds-panel-nav.js +1 -0
- package/dist/react/ds-shell-app.d.ts +2 -1
- package/dist/react/ds-shell-app.js +1 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +4 -1
- package/dist/types/components/BarTitle/bar-title-types.d.ts +1 -0
- package/dist/types/components/BarTitle/index.d.ts +1 -1
- package/dist/types/components/Menu/menu-placement.d.ts +13 -0
- package/dist/types/components/PanelNav/PanelNav.d.ts +29 -2
- package/dist/types/components/PanelNav/index.d.ts +2 -2
- package/dist/types/components/PanelNav/panel-nav-types.d.ts +19 -0
- package/dist/types/components/PanelNav/panel-nav-utils.d.ts +10 -2
- package/dist/types/components/ShellApp/ShellApp.d.ts +11 -1
- package/dist/types/components/ShellApp/shell-app-types.d.ts +1 -0
- package/dist/types/components/ShellPage/ShellPage.d.ts +6 -1
- package/dist/types/components/ShellPage/index.d.ts +1 -1
- package/dist/types/components/ShellPage/shell-page-types.d.ts +1 -0
- package/dist/types/components.d.ts +73 -8
- package/dist/types/shell/index.d.ts +3 -3
- package/dist/vue/ds-bar-title.js +1 -0
- package/dist/vue/ds-panel-nav.js +4 -0
- package/dist/vue/ds-shell-app.js +3 -0
- package/dist/vue/ds-shell-page.js +1 -0
- package/package.json +1 -1
- package/dist/components/p-CEnoPUn5.js +0 -2
- package/dist/components/p-CEnoPUn5.js.map +0 -1
- package/dist/components/p-Y5_MkCFn.js +0 -2
- package/dist/components/p-Y5_MkCFn.js.map +0 -1
- package/dist/components/p-YDxDyedE.js +0 -2
- package/dist/components/p-YDxDyedE.js.map +0 -1
- package/dist/components/p-rw0ZxIE4.js +0 -2
- package/dist/components/p-rw0ZxIE4.js.map +0 -1
- /package/dist/components/{p-Bc_z1UwJ.js.map → p-De0qjzPu.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as s,c as t,h as i,a,t as r}from"./index.js";import{A as o,r as c}from"./p-DCbKsABt.js";import{c as n,r as d,A as l}from"./p-etg-Uk1u.js";import{i as h}from"./p-BMERUCe1.js";import{d as b}from"./p-DzPtYdXy.js";import{d as p}from"./p-DSy1oOnd.js";import{d as f}from"./p-BqVXMEJm.js";import{d as v}from"./p-Bv6FSDPR.js";import{d as m}from"./p-CpeJMKJ5.js";import{d as u}from"./p-Cea7rROU.js";import{d as g}from"./p-0XTyQNRG.js";import{d as x}from"./p-Cd1JnnVK.js";import{d as y}from"./p-pnO8tAYB.js";import{r as w}from"./p-CochmPyg.js";import{T as _}from"./p-CUL5_8JM.js";function k(e){const s=[];const t=new Set;for(const i of e){if(h(i)||i.searchable===false)continue;const e=i.headerSegments??[];if(e.length>0){for(const i of e){const e=i.sortKey.trim();const a=i.dataLabel?.trim()||i.label.trim()||e;if(!e||!a||i.searchable===false||t.has(e))continue;t.add(e);s.push({id:e,label:a})}continue}const a=i.id.trim();const r=i.dataLabel?.trim()||i.header.trim()||i.headerLabel?.trim()||a;if(!a||!r||t.has(a))continue;t.add(a);s.push({id:a,label:r})}return s}function z(e,s){const t=new Map(e.map((e=>[e.id,e])));const i=[];const a=new Set;for(const e of s){if(a.has(e))continue;const s=t.get(e);if(!s)continue;a.add(e);i.push(s)}return i}function C(e,s){const t=new Set(s);return e.filter((e=>!t.has(e.id)))}function F(e,s){const t=s.trim().toLocaleLowerCase();if(!t)return[...e];return e.filter((e=>`${e.label} ${e.id}`.toLocaleLowerCase().includes(t)))}function I(e,s,t){if(s<=0)return-1;const i=e>=0&&e<s?e:0;return(i+t+s)%s}const T=()=>`@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-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-table-search-h,.ds-focus-ring.sc-ds-table-search,.ds-focus-ring-inset.sc-ds-table-search-h,.ds-focus-ring-inset.sc-ds-table-search{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-table-search-h:focus-visible,.ds-focus-ring.sc-ds-table-search: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-table-search-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-table-search{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-table-search-h:focus-visible,.ds-focus-ring-inset.sc-ds-table-search:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-table-search-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-table-search: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-table-search-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search::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-table-search-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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}}@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill.sc-ds-table-search{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-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-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-table-search-h::before,.ds-interaction-fill.sc-ds-table-search::before,.ds-interaction-fill.sc-ds-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-table-search-h::before,.ds-interaction-fill.sc-ds-table-search::before{z-index:1}.ds-interaction-fill.sc-ds-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-table-search-h,.ds-interaction-fill--bordered.sc-ds-table-search{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-table-search-h::before,.ds-interaction-fill--selected.sc-ds-table-search::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-table-search-h,.ds-interaction-fill--selected.sc-ds-table-search{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-table-search-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-search:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-table-search-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-search:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-table-search-h::after,.ds-interaction-fill--grouped.sc-ds-table-search::after,.ds-interaction-fill--grouped.sc-ds-table-search-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-search:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-table-search-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-search:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-table-search-h,.ds-interaction-fill--grouped.sc-ds-table-search{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-table-search-h>.ds-interaction-fill__content.sc-ds-table-search,.ds-interaction-fill.sc-ds-table-search>.ds-interaction-fill__content.sc-ds-table-search,.ds-interaction-fill__content.sc-ds-table-search{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-table-search-h,.ds-interaction-fill--on-faint.sc-ds-table-search{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-table-search-h,.ds-interaction-fill--on-medium.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-bold.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-strong.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-translucent.sc-ds-table-search{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-table-search-h,.ds-interaction-fill--on-inverted.sc-ds-table-search{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-table-search-h,.ds-interaction-fill--on-media.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-always-dark.sc-ds-table-search{--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-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-table-search-h,.ds-interaction-fill--on-navigation.sc-ds-table-search{--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-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::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-table-search-h::before,.ds-interaction-fill--selected.sc-ds-table-search::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-table-search-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-table-search: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-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-h,.ds-control-inactive.sc-ds-table-search{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-table-search-h,.ds-control-inactive.sc-ds-table-search{color:var(--ds-forced-color-disabled);opacity:1}}.ds-control--lg.sc-ds-table-search,.ds-control--lg.sc-ds-table-search-h,.ds-control--md.sc-ds-table-search-h,.ds-control--md.sc-ds-table-search,.ds-control--sm.sc-ds-table-search-h,.ds-control--sm.sc-ds-table-search,.ds-control--xs.sc-ds-table-search-h,.ds-control--xs.sc-ds-table-search{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-table-search-h,.ds-control--lg.sc-ds-table-search{--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-table-search-h,.ds-control--md.sc-ds-table-search{--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-table-search-h,.ds-control--sm.sc-ds-table-search{--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-table-search-h,.ds-control--xs.sc-ds-table-search{--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}.ds-chrome-space--sm.sc-ds-table-search-h,.ds-chrome-space--sm.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-table-search-h,.ds-chrome-space--md.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-table-search-h,.ds-chrome-space--lg.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-table-search-h,.ds-chrome-row.sc-ds-table-search,.ds-chrome-column.sc-ds-table-search-h,.ds-chrome-column.sc-ds-table-search,.ds-chrome-grid.sc-ds-table-search-h,.ds-chrome-grid.sc-ds-table-search{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-table-search-h,.ds-chrome-row.sc-ds-table-search{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-table-search-h,.ds-chrome-column.sc-ds-table-search{flex-direction:column}.ds-chrome-grid.sc-ds-table-search-h,.ds-chrome-grid.sc-ds-table-search{display:grid;align-items:center}.ds-control-frame.sc-ds-table-search{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-table-search{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-table-search{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-table-search{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-table-search{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-table-search{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-empty-region.sc-ds-table-search{display:flex;flex:1 1 auto;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;min-height:0}.ds-empty-region--padded.sc-ds-table-search{padding:var(--dimension-space-200)}.sc-ds-table-search:where(.ds-text-decoration,.ds-text-action).sc-ds-table-search{text-decoration-color:var(--ds-text-decoration-color, var(--color-foreground-tertiary));text-decoration-thickness:var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));text-underline-offset:var(--ds-text-decoration-offset, var(--dimension-space-025))}.ds-text-action.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-bold-brand);--ds-text-decoration-color:var(--ds-text-action-foreground);color:var(--ds-text-action-foreground);text-decoration-line:none}.ds-text-action--on-medium.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-medium-background-primary);--ds-text-decoration-color:var(--color-foreground-on-medium-background-secondary);text-decoration-line:underline}.ds-text-action--on-strong.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-strong-background-primary);--ds-text-decoration-color:var(--color-foreground-on-strong-background-secondary);text-decoration-line:underline}.ds-text-action--on-bold.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-bold-background-primary);--ds-text-decoration-color:var(--color-foreground-on-bold-background-secondary);text-decoration-line:underline}@media (hover: hover) and (pointer: fine){.ds-text-action.sc-ds-table-search:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-table-search{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-table-search{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--ds-choice-popup-min-inline-size, var(--dimension-menu-width-xs));max-width:min(var(--dimension-panel-width-lg), calc(100vw - var(--dimension-space-200)));max-height:calc(100vh - var(--dimension-space-200));overflow:hidden;inset:auto;margin:0;padding:0;border:0;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);color:var(--color-foreground-secondary);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-table-search::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.ds-choice-popup--closing.sc-ds-table-search{animation:dsChoiceFadeOut var(--effect-motion-short-2) forwards}@keyframes dsChoiceFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes dsChoiceFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.ds-choice-popup.sc-ds-table-search{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-table-search{opacity:0}}.ds-choice-list.sc-ds-table-search{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-table-search{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-table-search{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-table-search{margin-block-start:var(--dimension-space-050)}.ds-choice-item.sc-ds-table-search{width:100%;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:default;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-table-search:has(.ds-choice-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.ds-choice-item__content.sc-ds-table-search{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-table-search{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-table-search{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-table-search,.ds-choice-item__suffix.sc-ds-table-search{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.ds-choice-item.ds-interaction-fill--selected.sc-ds-table-search .ds-choice-item__icon.sc-ds-table-search{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-table-search{flex-shrink:0;pointer-events:none}.ds-choice-empty.sc-ds-table-search,.ds-choice-loading.sc-ds-table-search{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-table-search{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-table-search::before{content:'';position:absolute;inset:0 0 auto;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.ds-choice-footer__content.sc-ds-table-search{display:flex;align-items:center;justify-content:space-between;column-gap:var(--dimension-space-050);box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400))}.ds-choice-footer__summary.sc-ds-table-search,.ds-choice-footer__summary-measure.sc-ds-table-search,.ds-choice-footer__clear.sc-ds-table-search ds-text.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search ds-text.sc-ds-table-search{padding-inline:calc( var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-choice-footer__summary.sc-ds-table-search,.ds-choice-footer__summary-measure.sc-ds-table-search,.ds-choice-footer__clear.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-table-search{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default}@media (forced-colors: active){.ds-choice-popup.sc-ds-table-search{outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.ds-choice-popup.sc-ds-table-search::after{box-shadow:none}.ds-choice-section--divided.sc-ds-table-search{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-table-search::before{background-color:var(--ds-forced-color-content)}}.ds-control--lg.ds-control--inset.sc-ds-table-search-h,.ds-control--lg.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-025))}.ds-control--md.ds-control--inset.sc-ds-table-search-h,.ds-control--md.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-025))}.ds-control--sm.ds-control--inset.sc-ds-table-search-h,.ds-control--sm.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-025))}.ds-control--xs.ds-control--inset.sc-ds-table-search-h,.ds-control--xs.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-200) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-025) - var(--dimension-space-025))}.ds-control--lg.ds-control--inset-double.sc-ds-table-search-h,.ds-control--lg.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-050))}.ds-control--md.ds-control--inset-double.sc-ds-table-search-h,.ds-control--md.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-050))}.ds-control--sm.ds-control--inset-double.sc-ds-table-search-h,.ds-control--sm.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-050))}.ds-text--display-medium.sc-ds-table-search-h,.ds-text--display-medium.sc-ds-table-search{font-size:var(--typography-fontsize-3xl);line-height:var(--typography-lineheight-3xl)}.ds-text--display-small.sc-ds-table-search-h,.ds-text--display-small.sc-ds-table-search{font-size:var(--typography-fontsize-2xl);line-height:var(--typography-lineheight-2xl)}.ds-text--title-large.sc-ds-table-search-h,.ds-text--title-large.sc-ds-table-search{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl)}.ds-text--title-medium.sc-ds-table-search-h,.ds-text--title-medium.sc-ds-table-search{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--title-small.sc-ds-table-search-h,.ds-text--title-small.sc-ds-table-search{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-large.sc-ds-table-search-h,.ds-text--body-large.sc-ds-table-search{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--body-medium.sc-ds-table-search-h,.ds-text--body-medium.sc-ds-table-search{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-small.sc-ds-table-search-h,.ds-text--body-small.sc-ds-table-search{font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm)}.ds-text--caption.sc-ds-table-search-h,.ds-text--caption.sc-ds-table-search{font-size:var(--typography-fontsize-xs);line-height:var(--typography-lineheight-xs);text-transform:uppercase}.ds-text--display-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--display-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--display-medium.ds-text--emphasis.sc-ds-table-search,.ds-text--display-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-bold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--display-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--display-small.ds-text--regular.sc-ds-table-search-h,.ds-text--display-medium.ds-text--regular.sc-ds-table-search,.ds-text--display-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-large.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-large.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--title-large.ds-text--regular.sc-ds-table-search-h,.ds-text--title-large.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-medium.ds-text--emphasis.sc-ds-table-search,.ds-text--title-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--title-small.ds-text--regular.sc-ds-table-search-h,.ds-text--title-medium.ds-text--regular.sc-ds-table-search,.ds-text--title-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-large.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-large.ds-text--emphasis.sc-ds-table-search,.ds-text--body-medium.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--body-large.ds-text--regular.sc-ds-table-search-h,.ds-text--body-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--body-large.ds-text--regular.sc-ds-table-search,.ds-text--body-medium.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--regular.sc-ds-table-search-h,.ds-text--body-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-none)}.ds-text--caption.ds-text--emphasis.sc-ds-table-search-h,.ds-text--caption.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-positive)}.ds-text--caption.ds-text--regular.sc-ds-table-search-h,.ds-text--caption.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-positive)}.ds-visually-hidden.sc-ds-table-search-h,.ds-visually-hidden.sc-ds-table-search{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.table-search-host.sc-ds-table-search-h{display:inline-flex;box-sizing:border-box;inline-size:100%;min-inline-size:0;--ds-table-search-foreground:var(--color-foreground-primary);--ds-table-search-adornment:var(--color-foreground-secondary);--ds-table-search-placeholder:var(--color-foreground-secondary);--ds-table-search-placeholder-active:var(--color-foreground-quaternary);--ds-table-search-border:var(--color-border-secondary)}.table-search__control.sc-ds-table-search{inline-size:100%;min-inline-size:0;padding-inline-end:var(--dimension-space-050);overflow:hidden;border:0;background:transparent;color:var(--ds-table-search-foreground);--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-table-search-border)}.table-search__control.sc-ds-table-search:focus-within{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-brand)}.ds-control-inactive.sc-ds-table-search-h .table-search__control.sc-ds-table-search::after{background:transparent}.table-search__icon.sc-ds-table-search,.table-search__actions.sc-ds-table-search{position:relative;z-index:2;flex:none}.table-search__icon.sc-ds-table-search{color:var(--ds-table-search-adornment)}.table-search__editor.sc-ds-table-search{position:relative;z-index:2;display:flex;flex:1 1 auto;align-items:center;min-inline-size:0;block-size:100%;gap:var(--dimension-space-050);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.table-search__editor.sc-ds-table-search::-webkit-scrollbar{display:none}.table-search__chip.sc-ds-table-search{flex:none;max-inline-size:var(--dimension-panel-width-2xs)}.table-search__input.sc-ds-table-search{appearance:none;box-sizing:border-box;flex:1 0 var(--dimension-size-600);min-inline-size:var(--dimension-size-600);block-size:100%;margin:0;padding:0;border:0;outline:0;background:transparent;color:var(--ds-table-search-foreground);text-overflow:ellipsis}.table-search__input.sc-ds-table-search::-webkit-search-cancel-button,.table-search__input.sc-ds-table-search::-webkit-search-decoration{display:none}.table-search__input.sc-ds-table-search::placeholder{color:var(--ds-table-search-placeholder)}.table-search__input.sc-ds-table-search:focus::placeholder{color:var(--ds-table-search-placeholder-active)}.table-search__actions.sc-ds-table-search{display:flex;align-items:center;gap:var(--dimension-space-050)}.table-search__clear.sc-ds-table-search,.table-search__slash.sc-ds-table-search,.table-search__action-divider.sc-ds-table-search{flex:none}.table-search__slash.sc-ds-table-search{color:var(--ds-table-search-adornment)}.table-search__popup.sc-ds-table-search{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.table-search__list.sc-ds-table-search{padding:var(--dimension-space-050)}.table-search__option.sc-ds-table-search{flex:none;inline-size:100%}@media (forced-colors: active){.table-search__control.sc-ds-table-search:focus-within::after{outline-color:var(--ds-forced-color-selected)}}`;let A=0;const $=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",3);this.dsFieldsChange=t(this,"dsFieldsChange",3);this.dsClear=t(this,"dsClear",3);this.value="";this.columns=[];this.selectedFieldIds=[];this.placeholder="Search";this.ariaLabel="Search table";this.clearLabel="Clear search";this.fieldMenuLabel="Choose search fields";this.isInactive=false;this.menuOpen=false;this.menuQuery="";this.activeIndex=0;this.focusRingVisible=false;this.position={x:0,y:0};this.positionReady=false;this.availableHeight=null;this.announcement="";this.componentId=`ds-table-search-${++A}`;this.inputId=`${this.componentId}-input`;this.listboxId=`${this.componentId}-listbox`;this.descriptionId=`${this.componentId}-description`;this.inputEl=null;this.controlEl=null;this.popupEl=null;this.positionController=new o({getAnchor:()=>this.controlEl,getPopup:()=>this.popupEl,getOwnerDocument:()=>this.el.ownerDocument,measure:(e,s)=>{if(!this.menuOpen||!s.isConnected)return null;const t=w(_.space050,_.space050);s.style.minWidth=`max(var(--ds-choice-popup-min-inline-size, ${_.menuWidthXs}), ${n(e.offsetWidth,t)}px)`;const i=e.getBoundingClientRect();return{anchorRect:i,popupWidth:s.offsetWidth,popupHeight:s.offsetHeight,side:"bottom",align:"start",sideOffsetPx:t,alignOffsetPx:d({align:"start",alignOffsetPx:0,sectionInsetPx:t}),viewportPadPx:t,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:c(e)}},apply:({x:e,y:s,availableHeight:t})=>{this.position={x:e,y:s};this.availableHeight=t},onReady:()=>{this.positionReady=true},topLayer:true,liveUpdate:"frame",observeResize:true,observeAnchorMotion:true});this.interactionController=new l({getAnchor:()=>this.controlEl,getPopup:()=>this.popupEl,getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.closeMenu()})}disconnectedCallback(){this.closeMenu()}syncAvailableFields(){const e=this.availableFields.length;if(e===0){this.closeMenu();return}if(this.activeIndex>=e)this.activeIndex=e-1}syncInactive(e){if(e)this.closeMenu()}async setFocus(){this.inputEl?.focus()}get selectedFields(){return z(this.searchFields,this.selectedFieldIds)}get availableFields(){return C(this.searchFields,this.selectedFieldIds)}get visibleFields(){return F(this.availableFields,this.menuQuery)}get searchFields(){return k(this.columns)}get activeOptionId(){return this.menuOpen&&this.activeIndex>=0?`${this.componentId}-option-${this.activeIndex}`:undefined}openMenu(e){if(this.isInactive||this.menuOpen||this.availableFields.length===0)return;this.menuQuery="";this.activeIndex=0;this.focusRingVisible=e;this.positionReady=false;this.menuOpen=true;requestAnimationFrame((()=>{if(!this.menuOpen)return;this.interactionController.connect();this.positionController.observe();this.positionController.schedule()}))}closeMenu(){if(!this.menuOpen&&!this.popupEl)return;if(this.popupEl?.matches(":popover-open"))this.popupEl.hidePopover();this.positionController.unobserve();this.interactionController.disconnect();this.popupEl=null;this.positionReady=false;this.availableHeight=null;this.menuOpen=false;this.menuQuery=""}handleInput(e){const s=e.target.value;if(this.menuOpen){this.menuQuery=s;this.activeIndex=F(this.availableFields,s).length?0:-1;this.focusRingVisible=false;this.positionController.schedule();return}this.dsChange.emit(s)}selectField(e){this.dsFieldsChange.emit({selectedFieldIds:[...this.selectedFieldIds,e.id]});this.announcement=`${e.label} search field added.`;this.closeMenu();requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}removeLastField(){const e=this.selectedFields;const s=e[e.length-1];if(!s)return;this.dsFieldsChange.emit({selectedFieldIds:this.selectedFieldIds.filter((e=>e!==s.id))});this.announcement=`${s.label} search field removed.`}removeField(e){this.dsFieldsChange.emit({selectedFieldIds:this.selectedFieldIds.filter((s=>s!==e.id))});this.announcement=`${e.label} search field removed.`;requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}clearSearch(){if(this.value)this.dsChange.emit("");if(this.selectedFieldIds.length)this.dsFieldsChange.emit({selectedFieldIds:[]});this.dsClear.emit();this.announcement="Search cleared.";this.closeMenu();requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}handleKeyDown(e){if(e.key==="/"&&!this.menuOpen&&!e.altKey&&!e.ctrlKey&&!e.metaKey){e.preventDefault();this.openMenu(true);return}if(e.key==="Backspace"&&this.menuOpen&&this.menuQuery.length===0){e.preventDefault();this.closeMenu();return}if(e.key==="Backspace"&&this.value.length===0){if(this.selectedFields.length){e.preventDefault();this.removeLastField()}return}if(!this.menuOpen)return;if(e.key==="Escape"){e.preventDefault();this.closeMenu();return}if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();this.focusRingVisible=true;this.activeIndex=I(this.activeIndex,this.visibleFields.length,e.key==="ArrowDown"?1:-1);this.el.querySelector(`#${CSS.escape(this.activeOptionId??"")}`)?.scrollIntoView({block:"nearest"});return}if(e.key==="Enter"){const s=this.visibleFields[this.activeIndex];if(!s)return;e.preventDefault();this.selectField(s);return}if(e.key==="Tab")this.closeMenu()}render(){const e=this.selectedFields;const s=this.availableFields;const t=this.visibleFields;const r=this.menuOpen?this.menuQuery:this.value;const o=this.value.length>0||e.length>0;const c=e.length?`Search limited to ${e.map((e=>e.label)).join(" or ")}.`:"Search includes every available table field. Type slash to choose fields.";const n={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,zIndex:"var(--dimension-z-index-floating)",visibility:this.positionReady?"visible":"hidden"};if(this.availableHeight!==null){n["max-height"]=`${Math.floor(this.availableHeight)}px`}return i(a,{key:"2aaeb87d73bba4de56412d61573e7ffaf38e8983",class:{"table-search-host":true,"ds-control--md":true,"ds-control-inactive":this.isInactive},"data-filled":o?"":undefined,"data-expanded":this.menuOpen?"":undefined},i("div",{key:"a6748158cc4ff201f67c7f1cbfc6655daeaaf2b6",ref:e=>{this.controlEl=e??null},class:"table-search__control ds-control-frame ds-control--md ds-interaction-fill"},i("span",{key:"34ac91b778b07aecf70b927ba195ba602bb8ea9d",class:"table-search__icon ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{key:"f7c42f79837f9e2f93cacbdefa2b4d988a439b6e",name:"MagnifyingGlass",size:"md",color:"inherit"})),i("div",{key:"6c9513b3f4d0db56ec0175b0d0741338d5c69f05",class:"table-search__editor ds-interaction-fill__content"},e.map((e=>i("ds-chip",{class:"table-search__chip",key:e.id,label:e.label,size:"md",state:"default",isInset:true,insetDepth:"double",isInactive:this.isInactive,onDsRemove:()=>this.removeField(e)}))),i("input",{key:"b8330325a0344cd0bec2ffc72f6c46a2161f0d8b",ref:e=>{this.inputEl=e??null},id:this.inputId,class:"table-search__input ds-text--body-medium ds-text--regular",type:"search",role:"combobox",value:r,placeholder:this.placeholder,disabled:this.isInactive,"aria-label":this.ariaLabel,"aria-describedby":this.descriptionId,"aria-haspopup":"listbox","aria-expanded":String(this.menuOpen),"aria-controls":this.menuOpen?this.listboxId:undefined,"aria-activedescendant":this.activeOptionId,"aria-keyshortcuts":"/",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellcheck:false,onInput:e=>this.handleInput(e),onKeyDown:e=>this.handleKeyDown(e)})),this.searchFields.length>0&&i("div",{key:"6aa422d1416ce04e60ffdd1779fe043ab4bf9cfc",class:"table-search__actions ds-interaction-fill__content"},r.length>0&&!this.isInactive&&i("ds-button-unfilled",{key:"ef063e1b93de987a597441619dc5118a350f6810",class:"table-search__clear",variant:"icon",size:"sm",icon:"CrossCircle",hasBorder:false,rounded:true,ariaLabel:this.clearLabel,onDsClick:()=>this.clearSearch()}),r.length>0&&!this.isInactive&&i("ds-divider",{key:"fb8c3c63ed856cdac31dd4bf1dcabf1de0cd4d9d",class:"table-search__action-divider",orientation:"vertical",length:"var(--dimension-size-200)"}),i("ds-button-unfilled",{key:"d75501b52d4945467e0e1297c8f0290a84d5d891",class:"table-search__slash",variant:"label",size:"md",label:"/",labelEmphasis:false,isInset:true,insetDepth:"double",hasBorder:false,ariaLabel:this.fieldMenuLabel,focusTabIndex:-1,haspopup:"listbox",controls:this.menuOpen?this.listboxId:undefined,expanded:this.menuOpen,isInactive:this.isInactive||s.length===0,onMouseDown:e=>e.preventDefault(),onDsClick:()=>{this.inputEl?.focus({preventScroll:true});this.openMenu(false)}}))),i("span",{key:"9c9ab0439ab9542a43ffedd4a2586977cf32678a",id:this.descriptionId,class:"ds-visually-hidden"},c),i("span",{key:"eceab6c35d179cf2b9c78e832693c0a410d84468",class:"ds-visually-hidden","aria-live":"polite"},this.announcement),this.menuOpen&&i("div",{key:"0f810211e338a7fff5117d0a62389cac38cce357",popover:"manual",ref:e=>{this.popupEl=e??null},class:"table-search__popup ds-choice-popup",style:n},i("div",{key:"36d4997a6c8245a9a9a3a69a7e4886b2454814de",id:this.listboxId,class:"table-search__list ds-choice-list",role:"listbox","aria-label":this.fieldMenuLabel},t.map(((e,s)=>{const t=s===this.activeIndex;return i("div",{id:`${this.componentId}-option-${s}`,key:e.id,class:{"table-search__option":true,"ds-choice-item":true,"ds-control-frame":true,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":t&&this.focusRingVisible,"ds-interaction-fill":true,"ds-interaction-fill--selected":t},role:"option","aria-selected":String(t),onMouseDown:e=>e.preventDefault(),onMouseMove:()=>{this.focusRingVisible=false;this.activeIndex=s},onClick:()=>this.selectField(e)},i("ds-text",{class:"ds-choice-item__label ds-control-label-box ds-interaction-fill__content",as:"span",variant:"text-body-medium",color:t?"primary":"secondary"},e.label))})),t.length===0&&i("div",{key:"facd3b7791f4248868b7f5a8f1d2f3e5e7cac9c1",class:"table-search__empty ds-choice-empty ds-empty-region"},i("ds-empty-state",{key:"46ee2443e845b30f357afe2c4397cfdcda306dcb",body:"No matching data points"})))))}get el(){return this}static get watchers(){return{columns:[{syncAvailableFields:0}],selectedFieldIds:[{syncAvailableFields:0}],isInactive:[{syncInactive:0}]}}static get style(){return T()}},[2,"ds-table-search",{value:[1],columns:[16],selectedFieldIds:[16],placeholder:[1],ariaLabel:[1,"aria-label"],clearLabel:[1,"clear-label"],fieldMenuLabel:[1,"field-menu-label"],isInactive:[4,"is-inactive"],menuOpen:[32],menuQuery:[32],activeIndex:[32],focusRingVisible:[32],position:[32],positionReady:[32],availableHeight:[32],announcement:[32],setFocus:[64]},undefined,{columns:[{syncAvailableFields:0}],selectedFieldIds:[{syncAvailableFields:0}],isInactive:[{syncInactive:0}]}]);function j(){if(typeof customElements==="undefined"){return}const e=["ds-table-search","ds-badge","ds-button-unfilled","ds-chip","ds-divider","ds-empty-state","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-table-search":if(!customElements.get(r(e))){customElements.define(r(e),$)}break;case"ds-badge":if(!customElements.get(r(e))){b()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){p()}break;case"ds-chip":if(!customElements.get(r(e))){f()}break;case"ds-divider":if(!customElements.get(r(e))){v()}break;case"ds-empty-state":if(!customElements.get(r(e))){m()}break;case"ds-icon":if(!customElements.get(r(e))){u()}break;case"ds-loader":if(!customElements.get(r(e))){g()}break;case"ds-text":if(!customElements.get(r(e))){x()}break;case"ds-tooltip":if(!customElements.get(r(e))){y()}break}}))}j();const S=$;const D=j;export{S as DsTableSearch,D as defineCustomElement};
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a,t as r}from"./index.js";import{A as o,r as c}from"./p-DCbKsABt.js";import{c as n,r as d,A as l}from"./p-etg-Uk1u.js";import{i as h}from"./p-BMERUCe1.js";import{d as b}from"./p-DzPtYdXy.js";import{d as p}from"./p-DSy1oOnd.js";import{d as f}from"./p-BqVXMEJm.js";import{d as v}from"./p-Bv6FSDPR.js";import{d as m}from"./p-CpeJMKJ5.js";import{d as u}from"./p-Cea7rROU.js";import{d as g}from"./p-0XTyQNRG.js";import{d as x}from"./p-Cd1JnnVK.js";import{d as y}from"./p-pnO8tAYB.js";import{r as w}from"./p-CochmPyg.js";import{T as _}from"./p-CUL5_8JM.js";function k(e){const s=[];const t=new Set;for(const i of e){if(h(i)||i.searchable===false)continue;const e=i.headerSegments??[];if(e.length>0){for(const i of e){const e=i.sortKey.trim();const a=i.dataLabel?.trim()||i.label.trim()||e;if(!e||!a||i.searchable===false||t.has(e))continue;t.add(e);s.push({id:e,label:a})}continue}const a=i.id.trim();const r=i.dataLabel?.trim()||i.header.trim()||i.headerLabel?.trim()||a;if(!a||!r||t.has(a))continue;t.add(a);s.push({id:a,label:r})}return s}function z(e,s){const t=new Map(e.map((e=>[e.id,e])));const i=[];const a=new Set;for(const e of s){if(a.has(e))continue;const s=t.get(e);if(!s)continue;a.add(e);i.push(s)}return i}function C(e,s){const t=new Set(s);return e.filter((e=>!t.has(e.id)))}function F(e,s){const t=s.trim().toLocaleLowerCase();if(!t)return[...e];return e.filter((e=>`${e.label} ${e.id}`.toLocaleLowerCase().includes(t)))}function I(e,s,t){if(s<=0)return-1;const i=e>=0&&e<s?e:0;return(i+t+s)%s}const T=()=>`@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-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-table-search-h,.ds-focus-ring.sc-ds-table-search,.ds-focus-ring-inset.sc-ds-table-search-h,.ds-focus-ring-inset.sc-ds-table-search{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-table-search-h:focus-visible,.ds-focus-ring.sc-ds-table-search: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-table-search-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-table-search{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-table-search-h:focus-visible,.ds-focus-ring-inset.sc-ds-table-search:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-table-search-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-table-search: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-table-search-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-table-search::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-table-search-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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}}@media (forced-colors: active){.sc-ds-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill.sc-ds-table-search{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-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-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-table-search-h::before,.ds-interaction-fill.sc-ds-table-search::before,.ds-interaction-fill.sc-ds-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-table-search-h::before,.ds-interaction-fill.sc-ds-table-search::before{z-index:1}.ds-interaction-fill.sc-ds-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-table-search-h,.ds-interaction-fill--bordered.sc-ds-table-search{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-table-search-h::before,.ds-interaction-fill--selected.sc-ds-table-search::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-table-search-h,.ds-interaction-fill--selected.sc-ds-table-search{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-table-search-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-search:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-table-search-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-table-search:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-table-search-h::after,.ds-interaction-fill--grouped.sc-ds-table-search::after,.ds-interaction-fill--grouped.sc-ds-table-search-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-search:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-table-search-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-search:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-table-search-h,.ds-interaction-fill--grouped.sc-ds-table-search{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-table-search-h>.ds-interaction-fill__content.sc-ds-table-search,.ds-interaction-fill.sc-ds-table-search>.ds-interaction-fill__content.sc-ds-table-search,.ds-interaction-fill__content.sc-ds-table-search{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-table-search-h,.ds-interaction-fill--on-faint.sc-ds-table-search{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-table-search-h,.ds-interaction-fill--on-medium.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-bold.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-strong.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-translucent.sc-ds-table-search{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-table-search-h,.ds-interaction-fill--on-inverted.sc-ds-table-search{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-table-search-h,.ds-interaction-fill--on-media.sc-ds-table-search{--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-table-search-h,.ds-interaction-fill--on-always-dark.sc-ds-table-search{--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-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-table-search-h,.ds-interaction-fill--on-navigation.sc-ds-table-search{--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-table-search-h::after,.ds-interaction-fill.sc-ds-table-search::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-table-search-h::before,.ds-interaction-fill--selected.sc-ds-table-search::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-table-search-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-table-search: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-table-search:root,.sc-ds-table-search-h,.ds-forced-colors-scope.sc-ds-table-search{--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-table-search-h,.ds-control-inactive.sc-ds-table-search{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-table-search-h,.ds-control-inactive.sc-ds-table-search{color:var(--ds-forced-color-disabled);opacity:1}}.ds-control--lg.sc-ds-table-search,.ds-control--lg.sc-ds-table-search-h,.ds-control--md.sc-ds-table-search-h,.ds-control--md.sc-ds-table-search,.ds-control--sm.sc-ds-table-search-h,.ds-control--sm.sc-ds-table-search,.ds-control--xs.sc-ds-table-search-h,.ds-control--xs.sc-ds-table-search{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-table-search-h,.ds-control--lg.sc-ds-table-search{--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-table-search-h,.ds-control--md.sc-ds-table-search{--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-table-search-h,.ds-control--sm.sc-ds-table-search{--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-table-search-h,.ds-control--xs.sc-ds-table-search{--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}.ds-chrome-space--sm.sc-ds-table-search-h,.ds-chrome-space--sm.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-table-search-h,.ds-chrome-space--md.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-table-search-h,.ds-chrome-space--lg.sc-ds-table-search{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-table-search-h,.ds-chrome-row.sc-ds-table-search,.ds-chrome-column.sc-ds-table-search-h,.ds-chrome-column.sc-ds-table-search,.ds-chrome-grid.sc-ds-table-search-h,.ds-chrome-grid.sc-ds-table-search{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-table-search-h,.ds-chrome-row.sc-ds-table-search{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-table-search-h,.ds-chrome-column.sc-ds-table-search{flex-direction:column}.ds-chrome-grid.sc-ds-table-search-h,.ds-chrome-grid.sc-ds-table-search{display:grid;align-items:center}.ds-control-frame.sc-ds-table-search{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-table-search{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-table-search{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-table-search{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-table-search{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-table-search{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-empty-region.sc-ds-table-search{display:flex;flex:1 1 auto;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;min-height:0}.ds-empty-region--padded.sc-ds-table-search{padding:var(--dimension-space-200)}.sc-ds-table-search:where(.ds-text-decoration,.ds-text-action).sc-ds-table-search{text-decoration-color:var(--ds-text-decoration-color, var(--color-foreground-tertiary));text-decoration-thickness:var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));text-underline-offset:var(--ds-text-decoration-offset, var(--dimension-space-025))}.ds-text-action.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-bold-brand);--ds-text-decoration-color:var(--ds-text-action-foreground);color:var(--ds-text-action-foreground);text-decoration-line:none}.ds-text-action--on-medium.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-medium-background-primary);--ds-text-decoration-color:var(--color-foreground-on-medium-background-secondary);text-decoration-line:underline}.ds-text-action--on-strong.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-strong-background-primary);--ds-text-decoration-color:var(--color-foreground-on-strong-background-secondary);text-decoration-line:underline}.ds-text-action--on-bold.sc-ds-table-search{--ds-text-action-foreground:var(--color-foreground-on-bold-background-primary);--ds-text-decoration-color:var(--color-foreground-on-bold-background-secondary);text-decoration-line:underline}@media (hover: hover) and (pointer: fine){.ds-text-action.sc-ds-table-search:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-table-search{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-table-search{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--ds-choice-popup-min-inline-size, var(--dimension-menu-width-xs));max-width:min(var(--dimension-panel-width-lg), calc(100vw - var(--dimension-space-200)));max-height:calc(100vh - var(--dimension-space-200));overflow:hidden;inset:auto;margin:0;padding:0;border:0;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);color:var(--color-foreground-secondary);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-table-search::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.ds-choice-popup--closing.sc-ds-table-search{animation:dsChoiceFadeOut var(--effect-motion-short-2) forwards}@keyframes dsChoiceFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes dsChoiceFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.ds-choice-popup.sc-ds-table-search{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-table-search{opacity:0}}.ds-choice-list.sc-ds-table-search{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-table-search{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-table-search{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-table-search{margin-block-start:var(--dimension-space-050)}.ds-choice-item.sc-ds-table-search{width:100%;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:default;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-table-search:has(.ds-choice-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.ds-choice-item__content.sc-ds-table-search{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-table-search{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-table-search{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-table-search,.ds-choice-item__suffix.sc-ds-table-search{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.ds-choice-item.ds-interaction-fill--selected.sc-ds-table-search .ds-choice-item__icon.sc-ds-table-search{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-table-search{flex-shrink:0;pointer-events:none}.ds-choice-empty.sc-ds-table-search,.ds-choice-loading.sc-ds-table-search{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-table-search{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-table-search::before{content:'';position:absolute;inset:0 0 auto;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.ds-choice-footer__content.sc-ds-table-search{display:flex;align-items:center;justify-content:space-between;column-gap:var(--dimension-space-050);box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400))}.ds-choice-footer__summary.sc-ds-table-search,.ds-choice-footer__summary-measure.sc-ds-table-search,.ds-choice-footer__clear.sc-ds-table-search ds-text.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search ds-text.sc-ds-table-search{padding-inline:calc( var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-choice-footer__summary.sc-ds-table-search,.ds-choice-footer__summary-measure.sc-ds-table-search,.ds-choice-footer__clear.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-table-search{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-table-search,.ds-choice-footer__action.sc-ds-table-search{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default}@media (forced-colors: active){.ds-choice-popup.sc-ds-table-search{outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.ds-choice-popup.sc-ds-table-search::after{box-shadow:none}.ds-choice-section--divided.sc-ds-table-search{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-table-search::before{background-color:var(--ds-forced-color-content)}}.ds-control--lg.ds-control--inset.sc-ds-table-search-h,.ds-control--lg.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-025))}.ds-control--md.ds-control--inset.sc-ds-table-search-h,.ds-control--md.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-025))}.ds-control--sm.ds-control--inset.sc-ds-table-search-h,.ds-control--sm.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-025))}.ds-control--xs.ds-control--inset.sc-ds-table-search-h,.ds-control--xs.ds-control--inset.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-200) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-025) - var(--dimension-space-025))}.ds-control--lg.ds-control--inset-double.sc-ds-table-search-h,.ds-control--lg.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-050))}.ds-control--md.ds-control--inset-double.sc-ds-table-search-h,.ds-control--md.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-050))}.ds-control--sm.ds-control--inset-double.sc-ds-table-search-h,.ds-control--sm.ds-control--inset-double.sc-ds-table-search{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-050))}.ds-text--display-medium.sc-ds-table-search-h,.ds-text--display-medium.sc-ds-table-search{font-size:var(--typography-fontsize-3xl);line-height:var(--typography-lineheight-3xl)}.ds-text--display-small.sc-ds-table-search-h,.ds-text--display-small.sc-ds-table-search{font-size:var(--typography-fontsize-2xl);line-height:var(--typography-lineheight-2xl)}.ds-text--title-large.sc-ds-table-search-h,.ds-text--title-large.sc-ds-table-search{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl)}.ds-text--title-medium.sc-ds-table-search-h,.ds-text--title-medium.sc-ds-table-search{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--title-small.sc-ds-table-search-h,.ds-text--title-small.sc-ds-table-search{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-large.sc-ds-table-search-h,.ds-text--body-large.sc-ds-table-search{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg)}.ds-text--body-medium.sc-ds-table-search-h,.ds-text--body-medium.sc-ds-table-search{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md)}.ds-text--body-small.sc-ds-table-search-h,.ds-text--body-small.sc-ds-table-search{font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm)}.ds-text--caption.sc-ds-table-search-h,.ds-text--caption.sc-ds-table-search{font-size:var(--typography-fontsize-xs);line-height:var(--typography-lineheight-xs);text-transform:uppercase}.ds-text--display-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--display-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--display-medium.ds-text--emphasis.sc-ds-table-search,.ds-text--display-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-bold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--display-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--display-small.ds-text--regular.sc-ds-table-search-h,.ds-text--display-medium.ds-text--regular.sc-ds-table-search,.ds-text--display-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-large.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-large.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative-double)}.ds-text--title-large.ds-text--regular.sc-ds-table-search-h,.ds-text--title-large.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--title-medium.ds-text--emphasis.sc-ds-table-search,.ds-text--title-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--title-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--title-small.ds-text--regular.sc-ds-table-search-h,.ds-text--title-medium.ds-text--regular.sc-ds-table-search,.ds-text--title-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-large.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-medium.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-large.ds-text--emphasis.sc-ds-table-search,.ds-text--body-medium.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative)}.ds-text--body-large.ds-text--regular.sc-ds-table-search-h,.ds-text--body-medium.ds-text--regular.sc-ds-table-search-h,.ds-text--body-large.ds-text--regular.sc-ds-table-search,.ds-text--body-medium.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--emphasis.sc-ds-table-search-h,.ds-text--body-small.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.ds-text--body-small.ds-text--regular.sc-ds-table-search-h,.ds-text--body-small.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-none)}.ds-text--caption.ds-text--emphasis.sc-ds-table-search-h,.ds-text--caption.ds-text--emphasis.sc-ds-table-search{font-weight:var(--typography-weight-semibold);letter-spacing:var(--typography-letterspacing-positive)}.ds-text--caption.ds-text--regular.sc-ds-table-search-h,.ds-text--caption.ds-text--regular.sc-ds-table-search{font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-positive)}.ds-visually-hidden.sc-ds-table-search-h,.ds-visually-hidden.sc-ds-table-search{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.table-search-host.sc-ds-table-search-h{display:inline-flex;box-sizing:border-box;inline-size:100%;min-inline-size:0;--ds-table-search-foreground:var(--color-foreground-primary);--ds-table-search-adornment:var(--color-foreground-secondary);--ds-table-search-placeholder:var(--color-foreground-secondary);--ds-table-search-placeholder-active:var(--color-foreground-quaternary);--ds-table-search-border:var(--color-border-secondary)}.table-search__control.sc-ds-table-search{inline-size:100%;min-inline-size:0;padding-inline-end:var(--dimension-space-050);overflow:hidden;border:0;background:transparent;color:var(--ds-table-search-foreground);--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-table-search-border)}.table-search__control.sc-ds-table-search:focus-within{--ds-interaction-border-width:var(--dimension-stroke-width-018);--ds-interaction-border-color:var(--color-border-bold-brand)}.ds-control-inactive.sc-ds-table-search-h .table-search__control.sc-ds-table-search::after{background:transparent}.table-search__icon.sc-ds-table-search,.table-search__actions.sc-ds-table-search{position:relative;z-index:2;flex:none}.table-search__icon.sc-ds-table-search{color:var(--ds-table-search-adornment)}.table-search__editor.sc-ds-table-search{position:relative;z-index:2;display:flex;flex:1 1 auto;align-items:center;min-inline-size:0;block-size:100%;gap:var(--dimension-space-050);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.table-search__editor.sc-ds-table-search::-webkit-scrollbar{display:none}.table-search__chip.sc-ds-table-search{flex:none;max-inline-size:var(--dimension-panel-width-2xs)}.table-search__input.sc-ds-table-search{appearance:none;box-sizing:border-box;flex:1 0 var(--dimension-size-600);min-inline-size:var(--dimension-size-600);block-size:100%;margin:0;padding:0;border:0;outline:0;background:transparent;color:var(--ds-table-search-foreground);text-overflow:ellipsis}.table-search__input.sc-ds-table-search::-webkit-search-cancel-button,.table-search__input.sc-ds-table-search::-webkit-search-decoration{display:none}.table-search__input.sc-ds-table-search::placeholder{color:var(--ds-table-search-placeholder)}.table-search__input.sc-ds-table-search:focus::placeholder{color:var(--ds-table-search-placeholder-active)}.table-search__actions.sc-ds-table-search{display:flex;align-items:center;gap:var(--dimension-space-050)}.table-search__clear.sc-ds-table-search,.table-search__slash.sc-ds-table-search,.table-search__action-divider.sc-ds-table-search{flex:none}.table-search__slash.sc-ds-table-search{color:var(--ds-table-search-adornment)}.table-search__popup.sc-ds-table-search{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.table-search__list.sc-ds-table-search{padding:var(--dimension-space-050)}.table-search__option.sc-ds-table-search{flex:none;inline-size:100%}@media (forced-colors: active){.table-search__control.sc-ds-table-search:focus-within::after{outline-color:var(--ds-forced-color-selected)}}`;let A=0;const $=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",3);this.dsFieldsChange=t(this,"dsFieldsChange",3);this.dsClear=t(this,"dsClear",3);this.value="";this.columns=[];this.selectedFieldIds=[];this.placeholder="Search";this.ariaLabel="Search table";this.clearLabel="Clear search";this.fieldMenuLabel="Choose search fields";this.isInactive=false;this.menuOpen=false;this.menuQuery="";this.activeIndex=0;this.focusRingVisible=false;this.position={x:0,y:0};this.positionReady=false;this.availableHeight=null;this.announcement="";this.componentId=`ds-table-search-${++A}`;this.inputId=`${this.componentId}-input`;this.listboxId=`${this.componentId}-listbox`;this.descriptionId=`${this.componentId}-description`;this.inputEl=null;this.controlEl=null;this.popupEl=null;this.positionController=new o({getAnchor:()=>this.controlEl,getPopup:()=>this.popupEl,getOwnerDocument:()=>this.el.ownerDocument,measure:(e,s)=>{if(!this.menuOpen||!s.isConnected)return null;const t=w(_.space050,_.space050);s.style.minWidth=`max(var(--ds-choice-popup-min-inline-size, ${_.menuWidthXs}), ${n(e.offsetWidth,t)}px)`;const i=e.getBoundingClientRect();return{anchorRect:i,popupWidth:s.offsetWidth,popupHeight:s.offsetHeight,side:"bottom",align:"start",sideOffsetPx:t,alignOffsetPx:d({align:"start",alignOffsetPx:0,sectionInsetPx:t}),viewportPadPx:t,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:c(e)}},apply:({x:e,y:s,availableHeight:t})=>{this.position={x:e,y:s};this.availableHeight=t},onReady:()=>{this.positionReady=true},topLayer:true,liveUpdate:"frame",observeResize:true,observeAnchorMotion:true});this.interactionController=new l({getAnchor:()=>this.controlEl,getPopup:()=>this.popupEl,getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.closeMenu()})}disconnectedCallback(){this.closeMenu()}syncAvailableFields(){const e=this.availableFields.length;if(e===0){this.closeMenu();return}if(this.activeIndex>=e)this.activeIndex=e-1}syncInactive(e){if(e)this.closeMenu()}async setFocus(){this.inputEl?.focus()}get selectedFields(){return z(this.searchFields,this.selectedFieldIds)}get availableFields(){return C(this.searchFields,this.selectedFieldIds)}get visibleFields(){return F(this.availableFields,this.menuQuery)}get searchFields(){return k(this.columns)}get activeOptionId(){return this.menuOpen&&this.activeIndex>=0?`${this.componentId}-option-${this.activeIndex}`:undefined}openMenu(e){if(this.isInactive||this.menuOpen||this.availableFields.length===0)return;this.menuQuery="";if(this.inputEl)this.inputEl.value="";this.activeIndex=0;this.focusRingVisible=e;this.positionReady=false;this.menuOpen=true;requestAnimationFrame((()=>{if(!this.menuOpen)return;this.interactionController.connect();this.positionController.observe();this.positionController.schedule()}))}closeMenu(){if(!this.menuOpen&&!this.popupEl)return;if(this.popupEl?.matches(":popover-open"))this.popupEl.hidePopover();this.positionController.unobserve();this.interactionController.disconnect();this.popupEl=null;this.positionReady=false;this.availableHeight=null;this.menuOpen=false;this.menuQuery=""}handleInput(e){const s=e.target.value;if(this.menuOpen){this.menuQuery=s;this.activeIndex=F(this.availableFields,s).length?0:-1;this.focusRingVisible=false;this.positionController.schedule();return}this.dsChange.emit(s)}selectField(e){this.dsFieldsChange.emit({selectedFieldIds:[...this.selectedFieldIds,e.id]});this.announcement=`${e.label} search field added.`;this.closeMenu();requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}removeLastField(){const e=this.selectedFields;const s=e[e.length-1];if(!s)return;this.dsFieldsChange.emit({selectedFieldIds:this.selectedFieldIds.filter((e=>e!==s.id))});this.announcement=`${s.label} search field removed.`}removeField(e){this.dsFieldsChange.emit({selectedFieldIds:this.selectedFieldIds.filter((s=>s!==e.id))});this.announcement=`${e.label} search field removed.`;requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}clearSearch(){if(this.value)this.dsChange.emit("");if(this.selectedFieldIds.length)this.dsFieldsChange.emit({selectedFieldIds:[]});this.dsClear.emit();this.announcement="Search cleared.";this.closeMenu();requestAnimationFrame((()=>this.inputEl?.focus({preventScroll:true})))}handleKeyDown(e){if(e.key==="/"&&!this.menuOpen&&!e.altKey&&!e.ctrlKey&&!e.metaKey){e.preventDefault();this.openMenu(true);return}if(e.key==="Backspace"&&this.menuOpen&&this.menuQuery.length===0){e.preventDefault();this.closeMenu();return}if(e.key==="Backspace"&&this.value.length===0){if(this.selectedFields.length){e.preventDefault();this.removeLastField()}return}if(!this.menuOpen)return;if(e.key==="Escape"){e.preventDefault();this.closeMenu();return}if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();this.focusRingVisible=true;this.activeIndex=I(this.activeIndex,this.visibleFields.length,e.key==="ArrowDown"?1:-1);this.el.querySelector(`#${CSS.escape(this.activeOptionId??"")}`)?.scrollIntoView({block:"nearest"});return}if(e.key==="Enter"){const s=this.visibleFields[this.activeIndex];if(!s)return;e.preventDefault();this.selectField(s);return}if(e.key==="Tab")this.closeMenu()}render(){const e=this.selectedFields;const s=this.availableFields;const t=this.visibleFields;const r=this.menuOpen?this.menuQuery:this.value;const o=this.value.length>0||e.length>0;const c=e.length?`Search limited to ${e.map((e=>e.label)).join(" or ")}.`:"Search includes every available table field. Type slash to choose fields.";const n={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,zIndex:"var(--dimension-z-index-floating)",visibility:this.positionReady?"visible":"hidden"};if(this.availableHeight!==null){n["max-height"]=`${Math.floor(this.availableHeight)}px`}return i(a,{key:"14fd113152e41c3ab836e738b5856a3faa45c0c2",class:{"table-search-host":true,"ds-control--md":true,"ds-control-inactive":this.isInactive},"data-filled":o?"":undefined,"data-expanded":this.menuOpen?"":undefined},i("div",{key:"12ea798e38d6fbe0950e56298377f6c40a00f202",ref:e=>{this.controlEl=e??null},class:"table-search__control ds-control-frame ds-control--md ds-interaction-fill"},i("span",{key:"7aa31196146654c4f9b9f20c61ab566ef5a7d790",class:"table-search__icon ds-control-icon-box ds-interaction-fill__content","aria-hidden":"true"},i("ds-icon",{key:"7b573555419e2a7d3345b5afe0534d8b26f81d9e",name:"MagnifyingGlass",size:"md",color:"inherit"})),i("div",{key:"777217b03bbd7c57c29308c66c68b67a334fce01",class:"table-search__editor ds-interaction-fill__content"},e.map((e=>i("ds-chip",{class:"table-search__chip",key:e.id,label:e.label,size:"md",state:"default",isInset:true,insetDepth:"double",isInactive:this.isInactive,onDsRemove:()=>this.removeField(e)}))),i("input",{key:"604c98eb1c63f081af6dedd0cc5b58a663d21923",ref:e=>{this.inputEl=e??null},id:this.inputId,class:"table-search__input ds-text--body-medium ds-text--regular",type:"search",role:"combobox",value:r,placeholder:this.placeholder,disabled:this.isInactive,"aria-label":this.ariaLabel,"aria-describedby":this.descriptionId,"aria-haspopup":"listbox","aria-expanded":String(this.menuOpen),"aria-controls":this.menuOpen?this.listboxId:undefined,"aria-activedescendant":this.activeOptionId,"aria-keyshortcuts":"/",autoComplete:"off",autoCapitalize:"none",autoCorrect:"off",spellcheck:false,onInput:e=>this.handleInput(e),onKeyDown:e=>this.handleKeyDown(e)})),this.searchFields.length>0&&i("div",{key:"b46d932763b3e4efaccbd6c61d45de107a4dee91",class:"table-search__actions ds-interaction-fill__content"},r.length>0&&!this.isInactive&&i("ds-button-unfilled",{key:"39fb848aea6fb7a5dd5484e702d3b012c24472d3",class:"table-search__clear",variant:"icon",size:"sm",icon:"CrossCircle",hasBorder:false,rounded:true,ariaLabel:this.clearLabel,onDsClick:()=>this.clearSearch()}),r.length>0&&!this.isInactive&&i("ds-divider",{key:"5be3e362f1d450fb3e4fe9feddb4d7006bc23f49",class:"table-search__action-divider",orientation:"vertical",length:"var(--dimension-size-200)"}),i("ds-button-unfilled",{key:"725bea6ac23e5620fbc079106ab6a35eaf54881f",class:"table-search__slash",variant:"label",size:"md",label:"/",labelEmphasis:false,isInset:true,insetDepth:"double",hasBorder:false,ariaLabel:this.fieldMenuLabel,focusTabIndex:-1,haspopup:"listbox",controls:this.menuOpen?this.listboxId:undefined,expanded:this.menuOpen,isInactive:this.isInactive||s.length===0,onMouseDown:e=>e.preventDefault(),onDsClick:()=>{this.inputEl?.focus({preventScroll:true});this.openMenu(false)}}))),i("span",{key:"4ac16d58cb43979af3cea4f5692e6a8af8401516",id:this.descriptionId,class:"ds-visually-hidden"},c),i("span",{key:"60612b6f999e17bf48bd8c723c3546224774b090",class:"ds-visually-hidden","aria-live":"polite"},this.announcement),this.menuOpen&&i("div",{key:"7056325ba23d48f242675697d6fad1c26bdcdd4c",popover:"manual",ref:e=>{this.popupEl=e??null},class:"table-search__popup ds-choice-popup",style:n},i("div",{key:"bf56602c4c9f6e67dc0d4031931e40f8dc73879e",id:this.listboxId,class:"table-search__list ds-choice-list",role:"listbox","aria-label":this.fieldMenuLabel},t.map(((e,s)=>{const t=s===this.activeIndex;return i("div",{id:`${this.componentId}-option-${s}`,key:e.id,class:{"table-search__option":true,"ds-choice-item":true,"ds-control-frame":true,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":t&&this.focusRingVisible,"ds-interaction-fill":true,"ds-interaction-fill--selected":t},role:"option","aria-selected":String(t),onMouseDown:e=>e.preventDefault(),onMouseMove:()=>{this.focusRingVisible=false;this.activeIndex=s},onClick:()=>this.selectField(e)},i("ds-text",{class:"ds-choice-item__label ds-control-label-box ds-interaction-fill__content",as:"span",variant:"text-body-medium",color:t?"primary":"secondary"},e.label))})),t.length===0&&i("div",{key:"98d54cf736e557573bf170c7309708812eb6128e",class:"table-search__empty ds-choice-empty ds-empty-region"},i("ds-empty-state",{key:"bd98a81f2186b03b75f5bfb3a918aaebcd74362f",body:"No matching data points"})))))}get el(){return this}static get watchers(){return{columns:[{syncAvailableFields:0}],selectedFieldIds:[{syncAvailableFields:0}],isInactive:[{syncInactive:0}]}}static get style(){return T()}},[2,"ds-table-search",{value:[1],columns:[16],selectedFieldIds:[16],placeholder:[1],ariaLabel:[1,"aria-label"],clearLabel:[1,"clear-label"],fieldMenuLabel:[1,"field-menu-label"],isInactive:[4,"is-inactive"],menuOpen:[32],menuQuery:[32],activeIndex:[32],focusRingVisible:[32],position:[32],positionReady:[32],availableHeight:[32],announcement:[32],setFocus:[64]},undefined,{columns:[{syncAvailableFields:0}],selectedFieldIds:[{syncAvailableFields:0}],isInactive:[{syncInactive:0}]}]);function j(){if(typeof customElements==="undefined"){return}const e=["ds-table-search","ds-badge","ds-button-unfilled","ds-chip","ds-divider","ds-empty-state","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-table-search":if(!customElements.get(r(e))){customElements.define(r(e),$)}break;case"ds-badge":if(!customElements.get(r(e))){b()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){p()}break;case"ds-chip":if(!customElements.get(r(e))){f()}break;case"ds-divider":if(!customElements.get(r(e))){v()}break;case"ds-empty-state":if(!customElements.get(r(e))){m()}break;case"ds-icon":if(!customElements.get(r(e))){u()}break;case"ds-loader":if(!customElements.get(r(e))){g()}break;case"ds-text":if(!customElements.get(r(e))){x()}break;case"ds-tooltip":if(!customElements.get(r(e))){y()}break}}))}j();const S=$;const D=j;export{S as DsTableSearch,D as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-table-search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tableSearchFields","columns","resolved","seen","Set","column","isTableActionColumn","searchable","segments","headerSegments","length","segment","id","sortKey","trim","label","dataLabel","has","add","push","header","headerLabel","selectedTableSearchFields","fields","selectedFieldIds","byId","Map","map","field","selected","fieldId","get","availableTableSearchFields","filter","filterTableSearchFields","query","normalizedQuery","toLocaleLowerCase","includes","nextTableSearchActiveIndex","currentIndex","optionCount","direction","safeIndex","tableSearchCss","tableSearchSequence","TableSearch","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","placeholder","ariaLabel","clearLabel","fieldMenuLabel","isInactive","menuOpen","menuQuery","activeIndex","focusRingVisible","position","x","y","positionReady","availableHeight","announcement","componentId","inputId","listboxId","descriptionId","inputEl","controlEl","popupEl","positionController","AnchoredPositionController","getAnchor","getPopup","getOwnerDocument","el","ownerDocument","measure","anchor","popup","isConnected","inset","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","choicePopupMinWidth","offsetWidth","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","topLayer","liveUpdate","observeResize","observeAnchorMotion","interactionController","AnchoredOverlayInteractionController","onOutsideActivation","closeMenu","disconnectedCallback","syncAvailableFields","count","availableFields","syncInactive","setFocus","focus","selectedFields","searchFields","visibleFields","activeOptionId","undefined","openMenu","fromKeyboard","requestAnimationFrame","connect","observe","schedule","matches","hidePopover","unobserve","disconnect","handleInput","event","nextValue","target","dsChange","emit","selectField","dsFieldsChange","preventScroll","removeLastField","removed","removeField","clearSearch","dsClear","handleKeyDown","key","altKey","ctrlKey","metaKey","preventDefault","querySelector","CSS","escape","scrollIntoView","block","render","available","visible","inputValue","hasValue","description","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","floor","h","Host","class","ref","element","name","size","color","state","isInset","insetDepth","onDsRemove","type","role","disabled","String","autoComplete","autoCapitalize","autoCorrect","spellcheck","onInput","onKeyDown","variant","icon","hasBorder","rounded","onDsClick","orientation","labelEmphasis","focusTabIndex","haspopup","controls","expanded","onMouseDown","popover","index","active","onMouseMove","onClick","as","body"],"sources":["src/wc/components/TableSearch/table-search-model.ts","src/wc/components/TableSearch/TableSearch.css?tag=ds-table-search&encapsulation=scoped","src/wc/components/TableSearch/TableSearch.tsx"],"sourcesContent":["import { isTableActionColumn } from '../Table/table-column-customizer';\nimport type { TableColumn } from '../Table/table-types';\nimport type { TableSearchField } from './table-search-types';\n\n/** Searchable data points from the table catalog, including compound header segments. */\nexport function tableSearchFields(columns: readonly TableColumn[]): TableSearchField[] {\n const resolved: TableSearchField[] = [];\n const seen = new Set<string>();\n\n for (const column of columns) {\n if (isTableActionColumn(column) || column.searchable === false) continue;\n const segments = column.headerSegments ?? [];\n if (segments.length > 0) {\n for (const segment of segments) {\n const id = segment.sortKey.trim();\n const label = segment.dataLabel?.trim() || segment.label.trim() || id;\n if (!id || !label || segment.searchable === false || seen.has(id)) continue;\n seen.add(id);\n resolved.push({ id, label });\n }\n continue;\n }\n\n const id = column.id.trim();\n const label =\n column.dataLabel?.trim() || column.header.trim() || column.headerLabel?.trim() || id;\n if (!id || !label || seen.has(id)) continue;\n seen.add(id);\n resolved.push({ id, label });\n }\n\n return resolved;\n}\n\nexport function selectedTableSearchFields(\n fields: readonly TableSearchField[],\n selectedFieldIds: string[]\n): TableSearchField[] {\n const byId = new Map(fields.map(field => [field.id, field]));\n const selected: TableSearchField[] = [];\n const seen = new Set<string>();\n\n for (const fieldId of selectedFieldIds) {\n if (seen.has(fieldId)) continue;\n const field = byId.get(fieldId);\n if (!field) continue;\n seen.add(fieldId);\n selected.push(field);\n }\n\n return selected;\n}\n\nexport function availableTableSearchFields(\n fields: readonly TableSearchField[],\n selectedFieldIds: string[]\n): TableSearchField[] {\n const selected = new Set(selectedFieldIds);\n return fields.filter(field => !selected.has(field.id));\n}\n\n/** Matches the field-picker query against the complete visible label and canonical identity. */\nexport function filterTableSearchFields(\n fields: readonly TableSearchField[],\n query: string\n): TableSearchField[] {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (!normalizedQuery) return [...fields];\n\n return fields.filter(field =>\n `${field.label} ${field.id}`.toLocaleLowerCase().includes(normalizedQuery)\n );\n}\n\nexport function nextTableSearchActiveIndex(\n currentIndex: number,\n optionCount: number,\n direction: 1 | -1\n): number {\n if (optionCount <= 0) return -1;\n const safeIndex = currentIndex >= 0 && currentIndex < optionCount ? currentIndex : 0;\n return (safeIndex + direction + optionCount) % optionCount;\n}\n","@import '../../utils/choice-list.css';\n@import '../../utils/control-density-inset.css';\n@import '../../utils/typography.css';\n@import '../../utils/visually-hidden.css';\n\n:host(.table-search-host) {\n display: inline-flex;\n box-sizing: border-box;\n inline-size: 100%;\n min-inline-size: 0;\n --ds-table-search-foreground: var(--color-foreground-primary);\n --ds-table-search-adornment: var(--color-foreground-secondary);\n --ds-table-search-placeholder: var(--color-foreground-secondary);\n --ds-table-search-placeholder-active: var(--color-foreground-quaternary);\n --ds-table-search-border: var(--color-border-secondary);\n}\n\n.table-search__control {\n inline-size: 100%;\n min-inline-size: 0;\n padding-inline-end: var(--dimension-space-050);\n overflow: hidden;\n border: 0;\n background: transparent;\n color: var(--ds-table-search-foreground);\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-table-search-border);\n}\n\n.table-search__control:focus-within {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-brand);\n}\n\n:host(.ds-control-inactive) .table-search__control::after {\n background: transparent;\n}\n\n.table-search__icon,\n.table-search__actions {\n position: relative;\n z-index: 2;\n flex: none;\n}\n\n.table-search__icon {\n color: var(--ds-table-search-adornment);\n}\n\n.table-search__editor {\n position: relative;\n z-index: 2;\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-inline-size: 0;\n block-size: 100%;\n gap: var(--dimension-space-050);\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n}\n\n.table-search__editor::-webkit-scrollbar {\n display: none;\n}\n\n.table-search__chip {\n flex: none;\n max-inline-size: var(--dimension-panel-width-2xs);\n}\n\n.table-search__input {\n appearance: none;\n box-sizing: border-box;\n flex: 1 0 var(--dimension-size-600);\n min-inline-size: var(--dimension-size-600);\n block-size: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--ds-table-search-foreground);\n text-overflow: ellipsis;\n}\n\n.table-search__input::-webkit-search-cancel-button,\n.table-search__input::-webkit-search-decoration {\n display: none;\n}\n\n.table-search__input::placeholder {\n color: var(--ds-table-search-placeholder);\n}\n\n.table-search__input:focus::placeholder {\n color: var(--ds-table-search-placeholder-active);\n}\n\n.table-search__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n}\n\n.table-search__clear,\n.table-search__slash,\n.table-search__action-divider {\n flex: none;\n}\n\n.table-search__slash {\n color: var(--ds-table-search-adornment);\n}\n\n.table-search__popup {\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n}\n\n.table-search__list {\n padding: var(--dimension-space-050);\n}\n\n.table-search__option {\n flex: none;\n inline-size: 100%;\n}\n\n@media (forced-colors: active) {\n .table-search__control:focus-within::after {\n outline-color: var(--ds-forced-color-selected);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport {\n availableTableSearchFields,\n filterTableSearchFields,\n nextTableSearchActiveIndex,\n selectedTableSearchFields,\n tableSearchFields,\n} from './table-search-model';\nimport type { TableColumn } from '../Table/table-types';\nimport type { TableSearchField, TableSearchFieldsChangeDetail } from './table-search-types';\n\nlet tableSearchSequence = 0;\n\n@Component({\n tag: 'ds-table-search',\n styleUrl: 'TableSearch.css',\n scoped: true,\n})\nexport class TableSearch {\n @Element() private el!: HTMLElement;\n\n /** Controlled free-text query. */\n @Prop() value: string = '';\n /** Table column catalog used to derive searchable data points and their complete labels. */\n @Prop() columns: TableColumn[] = [];\n /** Controlled ordered field scopes rendered as Tags. */\n @Prop() selectedFieldIds: string[] = [];\n @Prop() placeholder: string = 'Search';\n @Prop({ attribute: 'aria-label' }) ariaLabel: string = 'Search table';\n @Prop() clearLabel: string = 'Clear search';\n @Prop() fieldMenuLabel: string = 'Choose search fields';\n @Prop() isInactive: boolean = false;\n\n @Event({ bubbles: false }) dsChange!: EventEmitter<string>;\n @Event({ bubbles: false }) dsFieldsChange!: EventEmitter<TableSearchFieldsChangeDetail>;\n @Event({ bubbles: false }) dsClear!: EventEmitter<void>;\n\n @State() private menuOpen = false;\n @State() private menuQuery = '';\n @State() private activeIndex = 0;\n @State() private focusRingVisible = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private availableHeight: number | null = null;\n @State() private announcement = '';\n\n private readonly componentId = `ds-table-search-${++tableSearchSequence}`;\n private readonly inputId = `${this.componentId}-input`;\n private readonly listboxId = `${this.componentId}-listbox`;\n private readonly descriptionId = `${this.componentId}-description`;\n private inputEl: HTMLInputElement | null = null;\n private controlEl: HTMLElement | null = null;\n private popupEl: HTMLElement | null = null;\n\n private readonly positionController = new AnchoredPositionController({\n getAnchor: () => this.controlEl,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.menuOpen || !popup.isConnected) return null;\n const inset = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${choicePopupMinWidth(anchor.offsetWidth, inset)}px)`;\n const anchorRect = anchor.getBoundingClientRect();\n return {\n anchorRect,\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: inset,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'start',\n alignOffsetPx: 0,\n sectionInsetPx: inset,\n }),\n viewportPadPx: inset,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y, availableHeight }) => {\n this.position = { x, y };\n this.availableHeight = availableHeight;\n },\n onReady: () => {\n this.positionReady = true;\n },\n topLayer: true,\n liveUpdate: 'frame',\n observeResize: true,\n observeAnchorMotion: true,\n });\n\n private readonly interactionController = new AnchoredOverlayInteractionController({\n getAnchor: () => this.controlEl,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.closeMenu(),\n });\n\n disconnectedCallback(): void {\n this.closeMenu();\n }\n\n @Watch('columns')\n @Watch('selectedFieldIds')\n syncAvailableFields(): void {\n const count = this.availableFields.length;\n if (count === 0) {\n this.closeMenu();\n return;\n }\n if (this.activeIndex >= count) this.activeIndex = count - 1;\n }\n\n @Watch('isInactive')\n syncInactive(isInactive: boolean): void {\n if (isInactive) this.closeMenu();\n }\n\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n private get selectedFields(): TableSearchField[] {\n return selectedTableSearchFields(this.searchFields, this.selectedFieldIds);\n }\n\n private get availableFields(): TableSearchField[] {\n return availableTableSearchFields(this.searchFields, this.selectedFieldIds);\n }\n\n private get visibleFields(): TableSearchField[] {\n return filterTableSearchFields(this.availableFields, this.menuQuery);\n }\n\n private get searchFields(): TableSearchField[] {\n return tableSearchFields(this.columns);\n }\n\n private get activeOptionId(): string | undefined {\n return this.menuOpen && this.activeIndex >= 0\n ? `${this.componentId}-option-${this.activeIndex}`\n : undefined;\n }\n\n private openMenu(fromKeyboard: boolean): void {\n if (this.isInactive || this.menuOpen || this.availableFields.length === 0) return;\n this.menuQuery = '';\n this.activeIndex = 0;\n this.focusRingVisible = fromKeyboard;\n this.positionReady = false;\n this.menuOpen = true;\n requestAnimationFrame(() => {\n if (!this.menuOpen) return;\n this.interactionController.connect();\n this.positionController.observe();\n this.positionController.schedule();\n });\n }\n\n private closeMenu(): void {\n if (!this.menuOpen && !this.popupEl) return;\n if (this.popupEl?.matches(':popover-open')) this.popupEl.hidePopover();\n this.positionController.unobserve();\n this.interactionController.disconnect();\n this.popupEl = null;\n this.positionReady = false;\n this.availableHeight = null;\n this.menuOpen = false;\n this.menuQuery = '';\n }\n\n private handleInput(event: Event): void {\n const nextValue = (event.target as HTMLInputElement).value;\n if (this.menuOpen) {\n this.menuQuery = nextValue;\n this.activeIndex = filterTableSearchFields(this.availableFields, nextValue).length ? 0 : -1;\n this.focusRingVisible = false;\n this.positionController.schedule();\n return;\n }\n\n this.dsChange.emit(nextValue);\n }\n\n private selectField(field: TableSearchField): void {\n this.dsFieldsChange.emit({ selectedFieldIds: [...this.selectedFieldIds, field.id] });\n this.announcement = `${field.label} search field added.`;\n this.closeMenu();\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private removeLastField(): void {\n const selected = this.selectedFields;\n const removed = selected[selected.length - 1];\n if (!removed) return;\n this.dsFieldsChange.emit({\n selectedFieldIds: this.selectedFieldIds.filter(fieldId => fieldId !== removed.id),\n });\n this.announcement = `${removed.label} search field removed.`;\n }\n\n private removeField(field: TableSearchField): void {\n this.dsFieldsChange.emit({\n selectedFieldIds: this.selectedFieldIds.filter(fieldId => fieldId !== field.id),\n });\n this.announcement = `${field.label} search field removed.`;\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private clearSearch(): void {\n if (this.value) this.dsChange.emit('');\n if (this.selectedFieldIds.length) this.dsFieldsChange.emit({ selectedFieldIds: [] });\n this.dsClear.emit();\n this.announcement = 'Search cleared.';\n this.closeMenu();\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (event.key === '/' && !this.menuOpen && !event.altKey && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n this.openMenu(true);\n return;\n }\n\n if (event.key === 'Backspace' && this.menuOpen && this.menuQuery.length === 0) {\n event.preventDefault();\n this.closeMenu();\n return;\n }\n\n if (event.key === 'Backspace' && this.value.length === 0) {\n if (this.selectedFields.length) {\n event.preventDefault();\n this.removeLastField();\n }\n return;\n }\n\n if (!this.menuOpen) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeMenu();\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusRingVisible = true;\n this.activeIndex = nextTableSearchActiveIndex(\n this.activeIndex,\n this.visibleFields.length,\n event.key === 'ArrowDown' ? 1 : -1\n );\n this.el\n .querySelector<HTMLElement>(`#${CSS.escape(this.activeOptionId ?? '')}`)\n ?.scrollIntoView({ block: 'nearest' });\n return;\n }\n\n if (event.key === 'Enter') {\n const field = this.visibleFields[this.activeIndex];\n if (!field) return;\n event.preventDefault();\n this.selectField(field);\n return;\n }\n\n if (event.key === 'Tab') this.closeMenu();\n }\n\n render() {\n const selected = this.selectedFields;\n const available = this.availableFields;\n const visible = this.visibleFields;\n const inputValue = this.menuOpen ? this.menuQuery : this.value;\n const hasValue = this.value.length > 0 || selected.length > 0;\n const description = selected.length\n ? `Search limited to ${selected.map(field => field.label).join(' or ')}.`\n : 'Search includes every available table field. Type slash to choose fields.';\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n if (this.availableHeight !== null) {\n popupStyle['max-height'] = `${Math.floor(this.availableHeight)}px`;\n }\n\n return (\n <Host\n class={{\n 'table-search-host': true,\n 'ds-control--md': true,\n 'ds-control-inactive': this.isInactive,\n }}\n data-filled={hasValue ? '' : undefined}\n data-expanded={this.menuOpen ? '' : undefined}\n >\n <div\n ref={element => {\n this.controlEl = element ?? null;\n }}\n class=\"table-search__control ds-control-frame ds-control--md ds-interaction-fill\"\n >\n <span\n class=\"table-search__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name=\"MagnifyingGlass\" size=\"md\" color=\"inherit\" />\n </span>\n <div class=\"table-search__editor ds-interaction-fill__content\">\n {selected.map(field => (\n <ds-chip\n class=\"table-search__chip\"\n key={field.id}\n label={field.label}\n size=\"md\"\n state=\"default\"\n isInset\n insetDepth=\"double\"\n isInactive={this.isInactive}\n onDsRemove={() => this.removeField(field)}\n />\n ))}\n <input\n ref={element => {\n this.inputEl = element ?? null;\n }}\n id={this.inputId}\n class=\"table-search__input ds-text--body-medium ds-text--regular\"\n type=\"search\"\n role=\"combobox\"\n value={inputValue}\n placeholder={this.placeholder}\n disabled={this.isInactive}\n aria-label={this.ariaLabel}\n aria-describedby={this.descriptionId}\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.menuOpen)}\n aria-controls={this.menuOpen ? this.listboxId : undefined}\n aria-activedescendant={this.activeOptionId}\n aria-keyshortcuts=\"/\"\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellcheck={false}\n onInput={event => this.handleInput(event)}\n onKeyDown={event => this.handleKeyDown(event)}\n />\n </div>\n {this.searchFields.length > 0 && (\n <div class=\"table-search__actions ds-interaction-fill__content\">\n {inputValue.length > 0 && !this.isInactive && (\n <ds-button-unfilled\n class=\"table-search__clear\"\n variant=\"icon\"\n size=\"sm\"\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={this.clearLabel}\n onDsClick={() => this.clearSearch()}\n />\n )}\n {inputValue.length > 0 && !this.isInactive && (\n <ds-divider\n class=\"table-search__action-divider\"\n orientation=\"vertical\"\n length=\"var(--dimension-size-200)\"\n />\n )}\n <ds-button-unfilled\n class=\"table-search__slash\"\n variant=\"label\"\n size=\"md\"\n label=\"/\"\n labelEmphasis={false}\n isInset\n insetDepth=\"double\"\n hasBorder={false}\n ariaLabel={this.fieldMenuLabel}\n focusTabIndex={-1}\n haspopup=\"listbox\"\n controls={this.menuOpen ? this.listboxId : undefined}\n expanded={this.menuOpen}\n isInactive={this.isInactive || available.length === 0}\n onMouseDown={(event: MouseEvent) => event.preventDefault()}\n onDsClick={() => {\n this.inputEl?.focus({ preventScroll: true });\n this.openMenu(false);\n }}\n />\n </div>\n )}\n </div>\n <span id={this.descriptionId} class=\"ds-visually-hidden\">\n {description}\n </span>\n <span class=\"ds-visually-hidden\" aria-live=\"polite\">\n {this.announcement}\n </span>\n {this.menuOpen && (\n <div\n popover=\"manual\"\n ref={element => {\n this.popupEl = element ?? null;\n }}\n class=\"table-search__popup ds-choice-popup\"\n style={popupStyle}\n >\n <div\n id={this.listboxId}\n class=\"table-search__list ds-choice-list\"\n role=\"listbox\"\n aria-label={this.fieldMenuLabel}\n >\n {visible.map((field, index) => {\n const active = index === this.activeIndex;\n return (\n /* eslint-disable-next-line local/prefer-direct-ds-text -- The option owns listbox semantics and pointer interaction while ds-text remains its typography child. */\n <div\n id={`${this.componentId}-option-${index}`}\n key={field.id}\n class={{\n 'table-search__option': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && this.focusRingVisible,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': active,\n }}\n role=\"option\"\n aria-selected={String(active)}\n onMouseDown={event => event.preventDefault()}\n onMouseMove={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onClick={() => this.selectField(field)}\n >\n <ds-text\n class=\"ds-choice-item__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={active ? 'primary' : 'secondary'}\n >\n {field.label}\n </ds-text>\n </div>\n );\n })}\n {visible.length === 0 && (\n <div class=\"table-search__empty ds-choice-empty ds-empty-region\">\n <ds-empty-state body=\"No matching data points\" />\n </div>\n )}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["tableSearchFields","columns","resolved","seen","Set","column","isTableActionColumn","searchable","segments","headerSegments","length","segment","id","sortKey","trim","label","dataLabel","has","add","push","header","headerLabel","selectedTableSearchFields","fields","selectedFieldIds","byId","Map","map","field","selected","fieldId","get","availableTableSearchFields","filter","filterTableSearchFields","query","normalizedQuery","toLocaleLowerCase","includes","nextTableSearchActiveIndex","currentIndex","optionCount","direction","safeIndex","tableSearchCss","tableSearchSequence","TableSearch","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","placeholder","ariaLabel","clearLabel","fieldMenuLabel","isInactive","menuOpen","menuQuery","activeIndex","focusRingVisible","position","x","y","positionReady","availableHeight","announcement","componentId","inputId","listboxId","descriptionId","inputEl","controlEl","popupEl","positionController","AnchoredPositionController","getAnchor","getPopup","getOwnerDocument","el","ownerDocument","measure","anchor","popup","isConnected","inset","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","choicePopupMinWidth","offsetWidth","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","topLayer","liveUpdate","observeResize","observeAnchorMotion","interactionController","AnchoredOverlayInteractionController","onOutsideActivation","closeMenu","disconnectedCallback","syncAvailableFields","count","availableFields","syncInactive","setFocus","focus","selectedFields","searchFields","visibleFields","activeOptionId","undefined","openMenu","fromKeyboard","requestAnimationFrame","connect","observe","schedule","matches","hidePopover","unobserve","disconnect","handleInput","event","nextValue","target","dsChange","emit","selectField","dsFieldsChange","preventScroll","removeLastField","removed","removeField","clearSearch","dsClear","handleKeyDown","key","altKey","ctrlKey","metaKey","preventDefault","querySelector","CSS","escape","scrollIntoView","block","render","available","visible","inputValue","hasValue","description","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","floor","h","Host","class","ref","element","name","size","color","state","isInset","insetDepth","onDsRemove","type","role","disabled","String","autoComplete","autoCapitalize","autoCorrect","spellcheck","onInput","onKeyDown","variant","icon","hasBorder","rounded","onDsClick","orientation","labelEmphasis","focusTabIndex","haspopup","controls","expanded","onMouseDown","popover","index","active","onMouseMove","onClick","as","body"],"sources":["src/wc/components/TableSearch/table-search-model.ts","src/wc/components/TableSearch/TableSearch.css?tag=ds-table-search&encapsulation=scoped","src/wc/components/TableSearch/TableSearch.tsx"],"sourcesContent":["import { isTableActionColumn } from '../Table/table-column-customizer';\nimport type { TableColumn } from '../Table/table-types';\nimport type { TableSearchField } from './table-search-types';\n\n/** Searchable data points from the table catalog, including compound header segments. */\nexport function tableSearchFields(columns: readonly TableColumn[]): TableSearchField[] {\n const resolved: TableSearchField[] = [];\n const seen = new Set<string>();\n\n for (const column of columns) {\n if (isTableActionColumn(column) || column.searchable === false) continue;\n const segments = column.headerSegments ?? [];\n if (segments.length > 0) {\n for (const segment of segments) {\n const id = segment.sortKey.trim();\n const label = segment.dataLabel?.trim() || segment.label.trim() || id;\n if (!id || !label || segment.searchable === false || seen.has(id)) continue;\n seen.add(id);\n resolved.push({ id, label });\n }\n continue;\n }\n\n const id = column.id.trim();\n const label =\n column.dataLabel?.trim() || column.header.trim() || column.headerLabel?.trim() || id;\n if (!id || !label || seen.has(id)) continue;\n seen.add(id);\n resolved.push({ id, label });\n }\n\n return resolved;\n}\n\nexport function selectedTableSearchFields(\n fields: readonly TableSearchField[],\n selectedFieldIds: string[]\n): TableSearchField[] {\n const byId = new Map(fields.map(field => [field.id, field]));\n const selected: TableSearchField[] = [];\n const seen = new Set<string>();\n\n for (const fieldId of selectedFieldIds) {\n if (seen.has(fieldId)) continue;\n const field = byId.get(fieldId);\n if (!field) continue;\n seen.add(fieldId);\n selected.push(field);\n }\n\n return selected;\n}\n\nexport function availableTableSearchFields(\n fields: readonly TableSearchField[],\n selectedFieldIds: string[]\n): TableSearchField[] {\n const selected = new Set(selectedFieldIds);\n return fields.filter(field => !selected.has(field.id));\n}\n\n/** Matches the field-picker query against the complete visible label and canonical identity. */\nexport function filterTableSearchFields(\n fields: readonly TableSearchField[],\n query: string\n): TableSearchField[] {\n const normalizedQuery = query.trim().toLocaleLowerCase();\n if (!normalizedQuery) return [...fields];\n\n return fields.filter(field =>\n `${field.label} ${field.id}`.toLocaleLowerCase().includes(normalizedQuery)\n );\n}\n\nexport function nextTableSearchActiveIndex(\n currentIndex: number,\n optionCount: number,\n direction: 1 | -1\n): number {\n if (optionCount <= 0) return -1;\n const safeIndex = currentIndex >= 0 && currentIndex < optionCount ? currentIndex : 0;\n return (safeIndex + direction + optionCount) % optionCount;\n}\n","@import '../../utils/choice-list.css';\n@import '../../utils/control-density-inset.css';\n@import '../../utils/typography.css';\n@import '../../utils/visually-hidden.css';\n\n:host(.table-search-host) {\n display: inline-flex;\n box-sizing: border-box;\n inline-size: 100%;\n min-inline-size: 0;\n --ds-table-search-foreground: var(--color-foreground-primary);\n --ds-table-search-adornment: var(--color-foreground-secondary);\n --ds-table-search-placeholder: var(--color-foreground-secondary);\n --ds-table-search-placeholder-active: var(--color-foreground-quaternary);\n --ds-table-search-border: var(--color-border-secondary);\n}\n\n.table-search__control {\n inline-size: 100%;\n min-inline-size: 0;\n padding-inline-end: var(--dimension-space-050);\n overflow: hidden;\n border: 0;\n background: transparent;\n color: var(--ds-table-search-foreground);\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-table-search-border);\n}\n\n.table-search__control:focus-within {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-brand);\n}\n\n:host(.ds-control-inactive) .table-search__control::after {\n background: transparent;\n}\n\n.table-search__icon,\n.table-search__actions {\n position: relative;\n z-index: 2;\n flex: none;\n}\n\n.table-search__icon {\n color: var(--ds-table-search-adornment);\n}\n\n.table-search__editor {\n position: relative;\n z-index: 2;\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-inline-size: 0;\n block-size: 100%;\n gap: var(--dimension-space-050);\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n}\n\n.table-search__editor::-webkit-scrollbar {\n display: none;\n}\n\n.table-search__chip {\n flex: none;\n max-inline-size: var(--dimension-panel-width-2xs);\n}\n\n.table-search__input {\n appearance: none;\n box-sizing: border-box;\n flex: 1 0 var(--dimension-size-600);\n min-inline-size: var(--dimension-size-600);\n block-size: 100%;\n margin: 0;\n padding: 0;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--ds-table-search-foreground);\n text-overflow: ellipsis;\n}\n\n.table-search__input::-webkit-search-cancel-button,\n.table-search__input::-webkit-search-decoration {\n display: none;\n}\n\n.table-search__input::placeholder {\n color: var(--ds-table-search-placeholder);\n}\n\n.table-search__input:focus::placeholder {\n color: var(--ds-table-search-placeholder-active);\n}\n\n.table-search__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n}\n\n.table-search__clear,\n.table-search__slash,\n.table-search__action-divider {\n flex: none;\n}\n\n.table-search__slash {\n color: var(--ds-table-search-adornment);\n}\n\n.table-search__popup {\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n}\n\n.table-search__list {\n padding: var(--dimension-space-050);\n}\n\n.table-search__option {\n flex: none;\n inline-size: 100%;\n}\n\n@media (forced-colors: active) {\n .table-search__control:focus-within::after {\n outline-color: var(--ds-forced-color-selected);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport {\n availableTableSearchFields,\n filterTableSearchFields,\n nextTableSearchActiveIndex,\n selectedTableSearchFields,\n tableSearchFields,\n} from './table-search-model';\nimport type { TableColumn } from '../Table/table-types';\nimport type { TableSearchField, TableSearchFieldsChangeDetail } from './table-search-types';\n\nlet tableSearchSequence = 0;\n\n@Component({\n tag: 'ds-table-search',\n styleUrl: 'TableSearch.css',\n scoped: true,\n})\nexport class TableSearch {\n @Element() private el!: HTMLElement;\n\n /** Controlled free-text query. */\n @Prop() value: string = '';\n /** Table column catalog used to derive searchable data points and their complete labels. */\n @Prop() columns: TableColumn[] = [];\n /** Controlled ordered field scopes rendered as Tags. */\n @Prop() selectedFieldIds: string[] = [];\n @Prop() placeholder: string = 'Search';\n @Prop({ attribute: 'aria-label' }) ariaLabel: string = 'Search table';\n @Prop() clearLabel: string = 'Clear search';\n @Prop() fieldMenuLabel: string = 'Choose search fields';\n @Prop() isInactive: boolean = false;\n\n @Event({ bubbles: false }) dsChange!: EventEmitter<string>;\n @Event({ bubbles: false }) dsFieldsChange!: EventEmitter<TableSearchFieldsChangeDetail>;\n @Event({ bubbles: false }) dsClear!: EventEmitter<void>;\n\n @State() private menuOpen = false;\n @State() private menuQuery = '';\n @State() private activeIndex = 0;\n @State() private focusRingVisible = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private availableHeight: number | null = null;\n @State() private announcement = '';\n\n private readonly componentId = `ds-table-search-${++tableSearchSequence}`;\n private readonly inputId = `${this.componentId}-input`;\n private readonly listboxId = `${this.componentId}-listbox`;\n private readonly descriptionId = `${this.componentId}-description`;\n private inputEl: HTMLInputElement | null = null;\n private controlEl: HTMLElement | null = null;\n private popupEl: HTMLElement | null = null;\n\n private readonly positionController = new AnchoredPositionController({\n getAnchor: () => this.controlEl,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.menuOpen || !popup.isConnected) return null;\n const inset = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${choicePopupMinWidth(anchor.offsetWidth, inset)}px)`;\n const anchorRect = anchor.getBoundingClientRect();\n return {\n anchorRect,\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: inset,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'start',\n alignOffsetPx: 0,\n sectionInsetPx: inset,\n }),\n viewportPadPx: inset,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y, availableHeight }) => {\n this.position = { x, y };\n this.availableHeight = availableHeight;\n },\n onReady: () => {\n this.positionReady = true;\n },\n topLayer: true,\n liveUpdate: 'frame',\n observeResize: true,\n observeAnchorMotion: true,\n });\n\n private readonly interactionController = new AnchoredOverlayInteractionController({\n getAnchor: () => this.controlEl,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.closeMenu(),\n });\n\n disconnectedCallback(): void {\n this.closeMenu();\n }\n\n @Watch('columns')\n @Watch('selectedFieldIds')\n syncAvailableFields(): void {\n const count = this.availableFields.length;\n if (count === 0) {\n this.closeMenu();\n return;\n }\n if (this.activeIndex >= count) this.activeIndex = count - 1;\n }\n\n @Watch('isInactive')\n syncInactive(isInactive: boolean): void {\n if (isInactive) this.closeMenu();\n }\n\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n private get selectedFields(): TableSearchField[] {\n return selectedTableSearchFields(this.searchFields, this.selectedFieldIds);\n }\n\n private get availableFields(): TableSearchField[] {\n return availableTableSearchFields(this.searchFields, this.selectedFieldIds);\n }\n\n private get visibleFields(): TableSearchField[] {\n return filterTableSearchFields(this.availableFields, this.menuQuery);\n }\n\n private get searchFields(): TableSearchField[] {\n return tableSearchFields(this.columns);\n }\n\n private get activeOptionId(): string | undefined {\n return this.menuOpen && this.activeIndex >= 0\n ? `${this.componentId}-option-${this.activeIndex}`\n : undefined;\n }\n\n private openMenu(fromKeyboard: boolean): void {\n if (this.isInactive || this.menuOpen || this.availableFields.length === 0) return;\n this.menuQuery = '';\n // The native value can be ahead of the controlled prop when slash follows input\n // in the same frame, so clear it before the queued render can skip an equal value.\n if (this.inputEl) this.inputEl.value = '';\n this.activeIndex = 0;\n this.focusRingVisible = fromKeyboard;\n this.positionReady = false;\n this.menuOpen = true;\n requestAnimationFrame(() => {\n if (!this.menuOpen) return;\n this.interactionController.connect();\n this.positionController.observe();\n this.positionController.schedule();\n });\n }\n\n private closeMenu(): void {\n if (!this.menuOpen && !this.popupEl) return;\n if (this.popupEl?.matches(':popover-open')) this.popupEl.hidePopover();\n this.positionController.unobserve();\n this.interactionController.disconnect();\n this.popupEl = null;\n this.positionReady = false;\n this.availableHeight = null;\n this.menuOpen = false;\n this.menuQuery = '';\n }\n\n private handleInput(event: Event): void {\n const nextValue = (event.target as HTMLInputElement).value;\n if (this.menuOpen) {\n this.menuQuery = nextValue;\n this.activeIndex = filterTableSearchFields(this.availableFields, nextValue).length ? 0 : -1;\n this.focusRingVisible = false;\n this.positionController.schedule();\n return;\n }\n\n this.dsChange.emit(nextValue);\n }\n\n private selectField(field: TableSearchField): void {\n this.dsFieldsChange.emit({ selectedFieldIds: [...this.selectedFieldIds, field.id] });\n this.announcement = `${field.label} search field added.`;\n this.closeMenu();\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private removeLastField(): void {\n const selected = this.selectedFields;\n const removed = selected[selected.length - 1];\n if (!removed) return;\n this.dsFieldsChange.emit({\n selectedFieldIds: this.selectedFieldIds.filter(fieldId => fieldId !== removed.id),\n });\n this.announcement = `${removed.label} search field removed.`;\n }\n\n private removeField(field: TableSearchField): void {\n this.dsFieldsChange.emit({\n selectedFieldIds: this.selectedFieldIds.filter(fieldId => fieldId !== field.id),\n });\n this.announcement = `${field.label} search field removed.`;\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private clearSearch(): void {\n if (this.value) this.dsChange.emit('');\n if (this.selectedFieldIds.length) this.dsFieldsChange.emit({ selectedFieldIds: [] });\n this.dsClear.emit();\n this.announcement = 'Search cleared.';\n this.closeMenu();\n requestAnimationFrame(() => this.inputEl?.focus({ preventScroll: true }));\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (event.key === '/' && !this.menuOpen && !event.altKey && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n this.openMenu(true);\n return;\n }\n\n if (event.key === 'Backspace' && this.menuOpen && this.menuQuery.length === 0) {\n event.preventDefault();\n this.closeMenu();\n return;\n }\n\n if (event.key === 'Backspace' && this.value.length === 0) {\n if (this.selectedFields.length) {\n event.preventDefault();\n this.removeLastField();\n }\n return;\n }\n\n if (!this.menuOpen) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.closeMenu();\n return;\n }\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.focusRingVisible = true;\n this.activeIndex = nextTableSearchActiveIndex(\n this.activeIndex,\n this.visibleFields.length,\n event.key === 'ArrowDown' ? 1 : -1\n );\n this.el\n .querySelector<HTMLElement>(`#${CSS.escape(this.activeOptionId ?? '')}`)\n ?.scrollIntoView({ block: 'nearest' });\n return;\n }\n\n if (event.key === 'Enter') {\n const field = this.visibleFields[this.activeIndex];\n if (!field) return;\n event.preventDefault();\n this.selectField(field);\n return;\n }\n\n if (event.key === 'Tab') this.closeMenu();\n }\n\n render() {\n const selected = this.selectedFields;\n const available = this.availableFields;\n const visible = this.visibleFields;\n const inputValue = this.menuOpen ? this.menuQuery : this.value;\n const hasValue = this.value.length > 0 || selected.length > 0;\n const description = selected.length\n ? `Search limited to ${selected.map(field => field.label).join(' or ')}.`\n : 'Search includes every available table field. Type slash to choose fields.';\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n if (this.availableHeight !== null) {\n popupStyle['max-height'] = `${Math.floor(this.availableHeight)}px`;\n }\n\n return (\n <Host\n class={{\n 'table-search-host': true,\n 'ds-control--md': true,\n 'ds-control-inactive': this.isInactive,\n }}\n data-filled={hasValue ? '' : undefined}\n data-expanded={this.menuOpen ? '' : undefined}\n >\n <div\n ref={element => {\n this.controlEl = element ?? null;\n }}\n class=\"table-search__control ds-control-frame ds-control--md ds-interaction-fill\"\n >\n <span\n class=\"table-search__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name=\"MagnifyingGlass\" size=\"md\" color=\"inherit\" />\n </span>\n <div class=\"table-search__editor ds-interaction-fill__content\">\n {selected.map(field => (\n <ds-chip\n class=\"table-search__chip\"\n key={field.id}\n label={field.label}\n size=\"md\"\n state=\"default\"\n isInset\n insetDepth=\"double\"\n isInactive={this.isInactive}\n onDsRemove={() => this.removeField(field)}\n />\n ))}\n <input\n ref={element => {\n this.inputEl = element ?? null;\n }}\n id={this.inputId}\n class=\"table-search__input ds-text--body-medium ds-text--regular\"\n type=\"search\"\n role=\"combobox\"\n value={inputValue}\n placeholder={this.placeholder}\n disabled={this.isInactive}\n aria-label={this.ariaLabel}\n aria-describedby={this.descriptionId}\n aria-haspopup=\"listbox\"\n aria-expanded={String(this.menuOpen)}\n aria-controls={this.menuOpen ? this.listboxId : undefined}\n aria-activedescendant={this.activeOptionId}\n aria-keyshortcuts=\"/\"\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellcheck={false}\n onInput={event => this.handleInput(event)}\n onKeyDown={event => this.handleKeyDown(event)}\n />\n </div>\n {this.searchFields.length > 0 && (\n <div class=\"table-search__actions ds-interaction-fill__content\">\n {inputValue.length > 0 && !this.isInactive && (\n <ds-button-unfilled\n class=\"table-search__clear\"\n variant=\"icon\"\n size=\"sm\"\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={this.clearLabel}\n onDsClick={() => this.clearSearch()}\n />\n )}\n {inputValue.length > 0 && !this.isInactive && (\n <ds-divider\n class=\"table-search__action-divider\"\n orientation=\"vertical\"\n length=\"var(--dimension-size-200)\"\n />\n )}\n <ds-button-unfilled\n class=\"table-search__slash\"\n variant=\"label\"\n size=\"md\"\n label=\"/\"\n labelEmphasis={false}\n isInset\n insetDepth=\"double\"\n hasBorder={false}\n ariaLabel={this.fieldMenuLabel}\n focusTabIndex={-1}\n haspopup=\"listbox\"\n controls={this.menuOpen ? this.listboxId : undefined}\n expanded={this.menuOpen}\n isInactive={this.isInactive || available.length === 0}\n onMouseDown={(event: MouseEvent) => event.preventDefault()}\n onDsClick={() => {\n this.inputEl?.focus({ preventScroll: true });\n this.openMenu(false);\n }}\n />\n </div>\n )}\n </div>\n <span id={this.descriptionId} class=\"ds-visually-hidden\">\n {description}\n </span>\n <span class=\"ds-visually-hidden\" aria-live=\"polite\">\n {this.announcement}\n </span>\n {this.menuOpen && (\n <div\n popover=\"manual\"\n ref={element => {\n this.popupEl = element ?? null;\n }}\n class=\"table-search__popup ds-choice-popup\"\n style={popupStyle}\n >\n <div\n id={this.listboxId}\n class=\"table-search__list ds-choice-list\"\n role=\"listbox\"\n aria-label={this.fieldMenuLabel}\n >\n {visible.map((field, index) => {\n const active = index === this.activeIndex;\n return (\n /* eslint-disable-next-line local/prefer-direct-ds-text -- The option owns listbox semantics and pointer interaction while ds-text remains its typography child. */\n <div\n id={`${this.componentId}-option-${index}`}\n key={field.id}\n class={{\n 'table-search__option': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && this.focusRingVisible,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': active,\n }}\n role=\"option\"\n aria-selected={String(active)}\n onMouseDown={event => event.preventDefault()}\n onMouseMove={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onClick={() => this.selectField(field)}\n >\n <ds-text\n class=\"ds-choice-item__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={active ? 'primary' : 'secondary'}\n >\n {field.label}\n </ds-text>\n </div>\n );\n })}\n {visible.length === 0 && (\n <div class=\"table-search__empty ds-choice-empty ds-empty-region\">\n <ds-empty-state body=\"No matching data points\" />\n </div>\n )}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as s,h as t,a as i,t as a}from"./index.js";import{r as l}from"./p-CochmPyg.js";function h(e,s,t){if(e!=="auto")return e;if(s==="constrained")return"constrained";if(s==="compact"||!t)return"compact";return"expanded"}const n=()=>`.sc-ds-shell-page-h{--_shell-page-content-background:var(--color-background-primary);--_shell-page-header-background:var(--color-background-primary);--_shell-page-responsive-content-block-start-inset:var(--dimension-space-400);--_shell-page-content-block-start-inset:var( --ds-shell-page-content-block-start-inset, var(--_shell-page-responsive-content-block-start-inset) );--ds-shell-page-sticky-header-block-size:var(--dimension-size-600);--ds-shell-page-content-block-start-offset:calc( var(--ds-shell-page-sticky-header-block-size) + var(--_shell-page-content-block-start-inset) );display:block;position:relative;min-width:0;min-height:100%;box-sizing:border-box;background:var(--_shell-page-content-background)}.shell-page-host--surface-secondary.sc-ds-shell-page-h{--_shell-page-content-background:var(--color-background-secondary)}.shell-page-host--surface-secondary[responsive-mode='desktop'].sc-ds-shell-page-h,.shell-page-host--surface-secondary[responsive-mode='tablet'].sc-ds-shell-page-h{--_shell-page-header-background:var(--color-background-secondary)}[responsive-mode='tablet'].sc-ds-shell-page-h,[responsive-mode='mobile'].sc-ds-shell-page-h{--_shell-page-responsive-content-block-start-inset:var(--dimension-space-200)}[responsive-mode='mobile'].sc-ds-shell-page-h{--ds-shell-page-sticky-header-block-size:calc( var(--dimension-size-500) + var(--dimension-space-200) )}.shell-page-host--header-compact.sc-ds-shell-page-h,.shell-page-host--header-constrained.sc-ds-shell-page-h{--_shell-page-content-block-start-inset:var( --ds-shell-page-compact-content-block-start-inset, var(--_shell-page-responsive-content-block-start-inset) )}.shell-page-host--inset-none.sc-ds-shell-page-h,.shell-page-host--block-start-inset-none.sc-ds-shell-page-h{--_shell-page-content-block-start-inset:0px}.shell-page-host--desktop-header-shell-bar.sc-ds-shell-page-h{--ds-shell-page-sticky-header-block-size:0px}.shell-page-host--desktop-header-shell-bar.shell-page-host--inset-default.sc-ds-shell-page-h{--_shell-page-content-block-start-inset:var(--_shell-page-responsive-content-block-start-inset)}.shell-page__scroll-sentinel.sc-ds-shell-page{position:absolute;inset-block-start:var(--ds-shell-page-header-travel, 0);inset-inline-start:0;width:var(--dimension-stroke-width-012);height:var(--dimension-stroke-width-012);pointer-events:none}.shell-page__sticky-header.sc-ds-shell-page{position:sticky;inset-block-start:var(--ds-shell-page-sticky-offset, 0);z-index:var(--dimension-z-index-raised);min-width:0;background:var(--_shell-page-header-background);overflow:visible;overflow-anchor:none}.shell-page__desktop-header.sc-ds-shell-page-s>ds-bar-title,.shell-page__desktop-header .sc-ds-shell-page-s>ds-bar-title,.shell-page__desktop-header.sc-ds-shell-page-s>ds-bar-workflow,.shell-page__desktop-header .sc-ds-shell-page-s>ds-bar-workflow,.shell-page__mobile-header.sc-ds-shell-page-s>ds-mobile-header,.shell-page__mobile-header .sc-ds-shell-page-s>ds-mobile-header{display:block;min-width:0}.shell-page__desktop-header[hidden].sc-ds-shell-page,.shell-page__mobile-header[hidden].sc-ds-shell-page{display:none}.shell-page-host--mobile.sc-ds-shell-page-h .shell-page__scroll-sentinel.sc-ds-shell-page,.shell-page-host--mobile.sc-ds-shell-page-h .shell-page__flow-spacer.sc-ds-shell-page{display:none}.shell-page__flow-spacer.sc-ds-shell-page{height:var(--ds-shell-page-flow-spacer, 0);background:var(--_shell-page-content-background)}.shell-page__content.sc-ds-shell-page{min-width:0;box-sizing:border-box;background:var(--_shell-page-content-background)}.shell-page-host--inset-default.sc-ds-shell-page-h .shell-page__content.sc-ds-shell-page{padding:var(--dimension-space-400);padding-block-start:var(--_shell-page-content-block-start-inset)}.shell-page-host--inset-default[responsive-mode='tablet'].sc-ds-shell-page-h .shell-page__content.sc-ds-shell-page,.shell-page-host--inset-default[responsive-mode='mobile'].sc-ds-shell-page-h .shell-page__content.sc-ds-shell-page{padding:var(--dimension-space-200);padding-block-start:var(--_shell-page-content-block-start-inset)}.shell-page-host--inset-none.sc-ds-shell-page-h .shell-page__content.sc-ds-shell-page{padding:0}`;const r=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.headerPresentation="auto";this.desktopHeaderPlacement="page";this.contentInset="default";this.contentInsetBlockStart="default";this.scrollCompaction=true;this.contentSurface="primary";this.responsiveMode="desktop";this.pageTopVisible=true;this.sentinelEl=null;this.spacerEl=null;this.stickyHeaderEl=null;this.headerEl=null;this.expandedHeaderHeight=0;this.headerTravel=0;this.expandedGeometryFrozen=false;this.pageHeaderResizeObserver=null;this.headerResizeObserver=null;this.headerMutationObserver=null;this.headerRevealFrame=null;this.headerGeometryFrame=null;this.reconnectFrame=null;this.scrollRoot=null;this.hasLoaded=false;this.handleScroll=()=>{if(!this.sentinelEl||!this.scrollRoot)return;const e=this.scrollRoot===window?0:this.scrollRoot.getBoundingClientRect().top;this.syncHeaderDividerInset(e);const s=this.sentinelEl.getBoundingClientRect().top>=e;if(this.effectiveScrollCompaction&&!s&&this.pageTopVisible&&this.headerEl?.classList.contains(this.variantClass("expanded"))){this.captureExpandedHeaderGeometry(this.headerEl);this.expandedGeometryFrozen=true}if(s&&this.expandedGeometryFrozen&&this.el.getBoundingClientRect().top>=e){this.expandedGeometryFrozen=false;if(this.headerEl?.classList.contains(this.variantClass("expanded"))){this.captureExpandedHeaderGeometry(this.headerEl)}}this.pageTopVisible=s};this.handleHeaderSlotChange=e=>{if(this.responsiveMode==="mobile")return;const s=e.target;const t=s.assignedElements().find((e=>e.tagName.toLowerCase()==="ds-bar-title"));this.observeHeader(t??null)}}handleHeaderContractChange(){this.syncHeaderVariant(true)}handleResponsiveModeChange(){this.el.style.removeProperty("--ds-shell-page-sticky-header-block-size");this.observeHeader(this.responsiveMode==="mobile"||this.desktopHeaderExternal?null:this.findHeader());this.syncPageHeaderBlockSize()}handleDesktopHeaderPlacementChange(){this.observeHeader(this.desktopHeaderExternal?null:this.findHeader());this.syncPageHeaderBlockSize()}componentDidLoad(){this.hasLoaded=true;this.connectRuntime()}componentDidRender(){this.syncHeaderVariant();this.syncPageHeaderBlockSize()}connectedCallback(){if(!this.hasLoaded)return;if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=requestAnimationFrame((()=>{this.reconnectFrame=null;if(this.el.isConnected)this.connectRuntime()}))}disconnectedCallback(){if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=null;this.headerResizeObserver?.disconnect();this.headerResizeObserver=null;this.pageHeaderResizeObserver?.disconnect();this.pageHeaderResizeObserver=null;this.headerMutationObserver?.disconnect();this.headerMutationObserver=null;this.cancelHeaderReveal();this.cancelHeaderGeometrySync();this.headerEl?.style.removeProperty("--ds-bar-title-divider-inset");this.scrollRoot?.removeEventListener("scroll",this.handleScroll);this.scrollRoot=null}connectRuntime(){this.observePageHeaderGeometry();this.observeHeader(this.responsiveMode==="mobile"?null:this.findHeader());this.connectScrollRoot()}get effectiveVariant(){if(this.desktopHeaderExternal)return"compact";return h(this.headerPresentation,this.headerCapacity??"roomy",this.effectiveScrollCompaction?this.pageTopVisible:true)}get desktopHeaderExternal(){return this.responsiveMode!=="mobile"&&this.desktopHeaderPlacement==="shell-bar"}get effectiveScrollCompaction(){return this.scrollCompaction&&!this.desktopHeaderExternal}get headerContractResolved(){return this.headerPresentation!=="auto"||this.headerCapacity!==undefined}get isScrollCompacted(){return this.effectiveScrollCompaction&&this.headerPresentation==="auto"&&this.headerCapacity==="roomy"&&!this.pageTopVisible}get contentInsetStyles(){const e={};const s=this.contentInsetBlockStartSize?.trim();const t=this.compactContentInsetBlockStartSize?.trim();if(s)e["--ds-shell-page-content-block-start-inset"]=s;if(t)e["--ds-shell-page-compact-content-block-start-inset"]=t;return e}composedParent(e){return e.assignedSlot?.parentElement??e.parentElement}findScrollRoot(){let e=this.composedParent(this.el);while(e&&e!==document.documentElement){const s=getComputedStyle(e).overflowY;if(s==="auto"||s==="scroll"||s==="overlay"){return e}e=this.composedParent(e)}return window}connectScrollRoot(){const e=this.findScrollRoot();if(e===this.scrollRoot)return;this.scrollRoot?.removeEventListener("scroll",this.handleScroll);this.scrollRoot=e;this.scrollRoot.addEventListener("scroll",this.handleScroll,{passive:true});this.handleScroll()}get scrollRootResolved(){const e=this.el.closest("ds-shell-app");if(!e)return true;const s=e.querySelector(".shell-app__content");return s!==null&&this.scrollRoot===s}findHeader(){return this.el.querySelector("ds-bar-title")}get compactHeaderHeight(){return l("--dimension-size-600",0)}syncHeaderDividerInset(e){const s=this.headerEl;if(!s)return;const t=this.effectiveScrollCompaction&&this.headerPresentation==="auto"&&this.headerCapacity==="roomy";const i=l("--dimension-space-400",0);if(!t||!this.sentinelEl||!this.scrollRoot||this.headerTravel<=0||i<=0){s.style.removeProperty("--ds-bar-title-divider-inset");return}const a=e??(this.scrollRoot===window?0:this.scrollRoot.getBoundingClientRect().top);const h=this.sentinelEl.getBoundingClientRect().top-a;const n=Math.min(1,Math.max(0,1-h/this.headerTravel));s.style.setProperty("--ds-bar-title-divider-inset",`${i*(1-n)}px`)}setHeaderTravel(e){const s=Math.max(0,e);if(Math.abs(s-this.headerTravel)<.5)return;this.headerTravel=s;this.el.style.setProperty("--ds-shell-page-header-travel",`${s}px`);this.handleScroll()}measureHeaderTravel(e){const s=e.querySelector("[data-shell-page-header-anchor]");const t=this.compactHeaderHeight;if(!s||t<=0)return;const i=e.getBoundingClientRect();const a=s.getBoundingClientRect();if(i.height<=0||a.height<=0)return;const l=a.top-i.top;const h=Math.max(0,(t-a.height)/2);this.setHeaderTravel(l-h)}captureExpandedHeaderGeometry(e){this.expandedHeaderHeight=Math.max(this.expandedHeaderHeight,e.getBoundingClientRect().height);this.measureHeaderTravel(e)}setSpacerHeight(e){if(!this.spacerEl)return;this.spacerEl.style.setProperty("--ds-shell-page-flow-spacer",`${Math.max(0,e)}px`)}variantClass(e){return`bar-title-host--${e}`}setStickyHeaderOffset(e){this.stickyHeaderEl?.style.setProperty("--ds-shell-page-sticky-offset",e==="expanded"&&this.effectiveScrollCompaction&&this.headerPresentation==="auto"&&this.headerCapacity==="roomy"?`${-this.headerTravel}px`:"0px")}syncPageHeaderBlockSize(){if(this.desktopHeaderExternal){this.el.style.setProperty("--ds-shell-page-sticky-header-block-size","0px");return}const e=this.stickyHeaderEl?.getBoundingClientRect().height??0;if(e>0){this.el.style.setProperty("--ds-shell-page-sticky-header-block-size",`${e}px`)}else{this.el.style.removeProperty("--ds-shell-page-sticky-header-block-size")}}observePageHeaderGeometry(){this.pageHeaderResizeObserver?.disconnect();this.pageHeaderResizeObserver=null;this.syncPageHeaderBlockSize();if(!this.stickyHeaderEl||typeof ResizeObserver==="undefined")return;this.pageHeaderResizeObserver=new ResizeObserver((()=>{this.syncPageHeaderBlockSize()}));this.pageHeaderResizeObserver.observe(this.stickyHeaderEl)}syncRenderedHeaderGeometry(e){const s=this.effectiveVariant;if(!e.classList.contains(this.variantClass(s)))return;this.syncPageHeaderBlockSize();this.setSpacerHeight(this.isScrollCompacted?this.expandedHeaderHeight-this.compactHeaderHeight:0);this.setStickyHeaderOffset(s);if(s==="expanded"&&!this.expandedGeometryFrozen){this.captureExpandedHeaderGeometry(e);this.setStickyHeaderOffset(s)}}cancelHeaderGeometrySync(){if(this.headerGeometryFrame!==null)cancelAnimationFrame(this.headerGeometryFrame);this.headerGeometryFrame=null}scheduleHeaderGeometrySync(s){this.cancelHeaderGeometrySync();let t=e.MAX_HEADER_GEOMETRY_FRAMES;let i=0;const a=()=>{if(this.headerEl!==s)return;t-=1;i+=1;this.connectScrollRoot();this.syncRenderedHeaderGeometry(s);const e=this.effectiveVariant!=="expanded"||this.expandedHeaderHeight>0&&this.headerTravel>0;if(e&&this.scrollRootResolved&&i>=2||t<=0){this.headerGeometryFrame=null;return}this.headerGeometryFrame=requestAnimationFrame(a)};this.headerGeometryFrame=requestAnimationFrame(a)}cancelHeaderReveal(){if(this.headerRevealFrame!==null)cancelAnimationFrame(this.headerRevealFrame);this.headerRevealFrame=null;this.headerEl?.removeAttribute("data-shell-page-syncing")}revealHeaderWhenSynced(s,t){let i=e.MAX_HEADER_REVEAL_FRAMES;const a=()=>{if(this.headerEl!==s){s.removeAttribute("data-shell-page-syncing");return}i-=1;if(s.classList.contains(this.variantClass(t))){s.removeAttribute("data-shell-page-syncing");this.headerRevealFrame=null;return}if(i<=0){this.headerRevealFrame=null;return}this.headerRevealFrame=requestAnimationFrame(a)};this.headerRevealFrame=requestAnimationFrame(a)}syncHeaderVariant(e=false){const s=this.headerEl;if(!s)return;this.syncHeaderDividerInset();if(!this.headerContractResolved){this.cancelHeaderReveal();s.setAttribute("data-shell-page-syncing","");return}const t=this.effectiveVariant;const i=!s.classList.contains(this.variantClass(t));if(!i)this.syncRenderedHeaderGeometry(s);if(i&&this.isScrollCompacted){this.setSpacerHeight(this.expandedHeaderHeight-this.compactHeaderHeight);this.setStickyHeaderOffset(t)}if(e){this.cancelHeaderReveal();s.setAttribute("data-shell-page-syncing","")}if(s.variant!==t){s.variant=t;this.scheduleHeaderGeometrySync(s)}if(e){this.revealHeaderWhenSynced(s,t)}}observeHeader(e){this.cancelHeaderReveal();this.cancelHeaderGeometrySync();this.headerResizeObserver?.disconnect();this.headerResizeObserver=null;this.headerMutationObserver?.disconnect();this.headerMutationObserver=null;this.headerEl?.style.removeProperty("--ds-bar-title-divider-inset");this.headerEl=e;this.expandedHeaderHeight=0;this.expandedGeometryFrozen=false;this.setHeaderTravel(0);this.setSpacerHeight(0);this.stickyHeaderEl?.style.setProperty("--ds-shell-page-sticky-offset","0px");if(!e)return;if(e.classList.contains(this.variantClass("expanded"))){this.captureExpandedHeaderGeometry(e)}if(typeof ResizeObserver!=="undefined"){this.headerResizeObserver=new ResizeObserver((()=>{this.syncRenderedHeaderGeometry(e)}));this.headerResizeObserver.observe(e)}if(typeof MutationObserver!=="undefined"){this.headerMutationObserver=new MutationObserver((()=>{this.syncRenderedHeaderGeometry(e)}));this.headerMutationObserver.observe(e,{attributes:true,attributeFilter:["class"],childList:true,subtree:true})}this.syncHeaderVariant(true);this.scheduleHeaderGeometrySync(e)}render(){const e=this.responsiveMode==="mobile";return t(i,{key:"8655e3a0b064e783e07de962a5bd8ca689ce1c4f",role:"main",style:this.contentInsetStyles,class:{"shell-page-host--inset-default":this.contentInset==="default","shell-page-host--inset-none":this.contentInset==="none","shell-page-host--block-start-inset-none":this.contentInsetBlockStart==="none","shell-page-host--surface-primary":this.contentSurface==="primary","shell-page-host--surface-secondary":this.contentSurface==="secondary","shell-page-host--mobile":e,"shell-page-host--desktop-header-shell-bar":this.desktopHeaderExternal,[`shell-page-host--header-${this.effectiveVariant}`]:true}},t("div",{key:"116dc95dff64166614e7097c8076745bb9574903",ref:e=>{this.sentinelEl=e??null},class:"shell-page__scroll-sentinel","aria-hidden":"true"}),t("div",{key:"0b1ec1c637ecba2f887dee3a3c494271352be139",ref:e=>{this.stickyHeaderEl=e??null},class:"shell-page__sticky-header"},t("div",{key:"10910679f7b9b2edb8a3036e71aece6a5bf391ad",class:"shell-page__desktop-header",hidden:e,"aria-hidden":e?"true":undefined,inert:e?true:undefined},t("slot",{key:"097d62cf90c261787343ee6cbef2f270108977cf",name:"header",onSlotchange:this.handleHeaderSlotChange})),t("div",{key:"a529f5f18a41821662eca83ef8d92da64823a3bc",class:"shell-page__mobile-header",hidden:!e,"aria-hidden":!e?"true":undefined,inert:!e?true:undefined},t("slot",{key:"77bbb9266024f69f2ef25c9c1c3da0e388b23093",name:"mobile-header"}))),t("div",{key:"ce2d2596ff0a68ccc67d3d0aba6550a85e8e7161",ref:e=>{this.spacerEl=e??null},class:"shell-page__flow-spacer","aria-hidden":"true"}),t("div",{key:"9a7d019bb834f7b83c8f795c87691490d1b3f9e0",class:"shell-page__content"},t("slot",{key:"a9a0a34c2a3ee57b5dbe5092e9423ddd2cea1aa4"})))}get el(){return this}static get watchers(){return{headerCapacity:[{handleHeaderContractChange:0}],headerPresentation:[{handleHeaderContractChange:0}],scrollCompaction:[{handleHeaderContractChange:0}],responsiveMode:[{handleResponsiveModeChange:0}],desktopHeaderPlacement:[{handleDesktopHeaderPlacementChange:0}]}}static get style(){return n()}},[262,"ds-shell-page",{headerPresentation:[1,"header-presentation"],headerCapacity:[1,"header-capacity"],desktopHeaderPlacement:[513,"desktop-header-placement"],contentInset:[1,"content-inset"],contentInsetBlockStart:[1,"content-inset-block-start"],contentInsetBlockStartSize:[1,"content-inset-block-start-size"],compactContentInsetBlockStartSize:[1,"compact-content-inset-block-start-size"],scrollCompaction:[4,"scroll-compaction"],contentSurface:[1,"content-surface"],responsiveMode:[513,"responsive-mode"],pageTopVisible:[32]},undefined,{headerCapacity:[{handleHeaderContractChange:0}],headerPresentation:[{handleHeaderContractChange:0}],scrollCompaction:[{handleHeaderContractChange:0}],responsiveMode:[{handleResponsiveModeChange:0}],desktopHeaderPlacement:[{handleDesktopHeaderPlacementChange:0}]}]);r.MAX_HEADER_REVEAL_FRAMES=12;r.MAX_HEADER_GEOMETRY_FRAMES=12;function o(){if(typeof customElements==="undefined"){return}const e=["ds-shell-page"];e.forEach((e=>{switch(e){case"ds-shell-page":if(!customElements.get(a(e))){customElements.define(a(e),r)}break}}))}o();export{r as S,o as d};
|
|
2
|
+
//# sourceMappingURL=p-B0OZx3JB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["resolveShellPageHeaderVariant","presentation","capacity","pageTopVisible","shellPageCss","ShellPage","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","headerPresentation","desktopHeaderPlacement","contentInset","contentInsetBlockStart","scrollCompaction","contentSurface","responsiveMode","sentinelEl","spacerEl","stickyHeaderEl","headerEl","expandedHeaderHeight","headerTravel","expandedGeometryFrozen","pageHeaderResizeObserver","headerResizeObserver","headerMutationObserver","headerRevealFrame","headerGeometryFrame","reconnectFrame","scrollRoot","hasLoaded","handleScroll","rootTop","window","getBoundingClientRect","top","syncHeaderDividerInset","nextPageTopVisible","effectiveScrollCompaction","classList","contains","variantClass","captureExpandedHeaderGeometry","el","handleHeaderSlotChange","event","slot","target","header","assignedElements","find","element","tagName","toLowerCase","observeHeader","handleHeaderContractChange","syncHeaderVariant","handleResponsiveModeChange","style","removeProperty","desktopHeaderExternal","findHeader","syncPageHeaderBlockSize","handleDesktopHeaderPlacementChange","componentDidLoad","connectRuntime","componentDidRender","connectedCallback","cancelAnimationFrame","requestAnimationFrame","isConnected","disconnectedCallback","disconnect","cancelHeaderReveal","cancelHeaderGeometrySync","removeEventListener","observePageHeaderGeometry","connectScrollRoot","effectiveVariant","headerCapacity","headerContractResolved","undefined","isScrollCompacted","contentInsetStyles","styles","expanded","contentInsetBlockStartSize","trim","compact","compactContentInsetBlockStartSize","composedParent","assignedSlot","parentElement","findScrollRoot","ancestor","document","documentElement","overflow","getComputedStyle","overflowY","next","addEventListener","passive","scrollRootResolved","shell","closest","expected","querySelector","compactHeaderHeight","resolveCssLengthPx","ownsScrollTransition","expandedInset","scrollRootTop","remainingTravel","progress","Math","min","max","setProperty","setHeaderTravel","distance","abs","measureHeaderTravel","anchor","compactHeight","headerRect","anchorRect","height","expandedAnchorTop","compactAnchorTop","setSpacerHeight","variant","setStickyHeaderOffset","renderedVariant","renderedHeight","ResizeObserver","observe","syncRenderedHeaderGeometry","scheduleHeaderGeometrySync","framesRemaining","MAX_HEADER_GEOMETRY_FRAMES","framesElapsed","sync","geometryReady","removeAttribute","revealHeaderWhenSynced","MAX_HEADER_REVEAL_FRAMES","reveal","concealUntilSynced","setAttribute","renderedVariantIsStale","MutationObserver","attributes","attributeFilter","childList","subtree","render","mobile","h","Host","key","role","class","ref","hidden","inert","name","onSlotchange"],"sources":["src/wc/components/ShellPage/shell-page-responsive.ts","src/wc/components/ShellPage/ShellPage.css?tag=ds-shell-page&encapsulation=scoped","src/wc/components/ShellPage/ShellPage.tsx"],"sourcesContent":["import type { ShellPageCapacity, ShellPageHeaderPresentation } from './shell-page-types';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\n\nexport function resolveShellPageHeaderVariant(\n presentation: ShellPageHeaderPresentation,\n capacity: ShellPageCapacity,\n pageTopVisible: boolean\n): BarTitleVariant {\n if (presentation !== 'auto') return presentation;\n if (capacity === 'constrained') return 'constrained';\n if (capacity === 'compact' || !pageTopVisible) return 'compact';\n return 'expanded';\n}\n",":host {\n --_shell-page-content-background: var(--color-background-primary);\n --_shell-page-header-background: var(--color-background-primary);\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-400);\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n --ds-shell-page-sticky-header-block-size: var(--dimension-size-600);\n --ds-shell-page-content-block-start-offset: calc(\n var(--ds-shell-page-sticky-header-block-size) + var(--_shell-page-content-block-start-inset)\n );\n display: block;\n position: relative;\n min-width: 0;\n min-height: 100%;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--surface-secondary) {\n --_shell-page-content-background: var(--color-background-secondary);\n}\n\n:host(.shell-page-host--surface-secondary[responsive-mode='desktop']),\n:host(.shell-page-host--surface-secondary[responsive-mode='tablet']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host([responsive-mode='tablet']),\n:host([responsive-mode='mobile']) {\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-200);\n}\n\n:host([responsive-mode='mobile']) {\n --ds-shell-page-sticky-header-block-size: calc(\n var(--dimension-size-500) + var(--dimension-space-200)\n );\n}\n\n:host(.shell-page-host--header-compact),\n:host(.shell-page-host--header-constrained) {\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-compact-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n}\n\n:host(.shell-page-host--inset-none),\n:host(.shell-page-host--block-start-inset-none) {\n --_shell-page-content-block-start-inset: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar) {\n --ds-shell-page-sticky-header-block-size: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar.shell-page-host--inset-default) {\n --_shell-page-content-block-start-inset: var(--_shell-page-responsive-content-block-start-inset);\n}\n\n.shell-page__scroll-sentinel {\n position: absolute;\n inset-block-start: var(--ds-shell-page-header-travel, 0);\n inset-inline-start: 0;\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-stroke-width-012);\n pointer-events: none;\n}\n\n.shell-page__sticky-header {\n position: sticky;\n inset-block-start: var(--ds-shell-page-sticky-offset, 0);\n z-index: var(--dimension-z-index-raised);\n min-width: 0;\n background: var(--_shell-page-header-background);\n overflow: visible;\n overflow-anchor: none;\n}\n\n.shell-page__desktop-header ::slotted(ds-bar-title),\n.shell-page__desktop-header ::slotted(ds-bar-workflow),\n.shell-page__mobile-header ::slotted(ds-mobile-header) {\n display: block;\n min-width: 0;\n}\n\n.shell-page__desktop-header[hidden],\n.shell-page__mobile-header[hidden] {\n display: none;\n}\n\n:host(.shell-page-host--mobile) .shell-page__scroll-sentinel,\n:host(.shell-page-host--mobile) .shell-page__flow-spacer {\n display: none;\n}\n\n.shell-page__flow-spacer {\n height: var(--ds-shell-page-flow-spacer, 0);\n background: var(--_shell-page-content-background);\n}\n\n.shell-page__content {\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--inset-default) .shell-page__content {\n padding: var(--dimension-space-400);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-default[responsive-mode='tablet']) .shell-page__content,\n:host(.shell-page-host--inset-default[responsive-mode='mobile']) .shell-page__content {\n padding: var(--dimension-space-200);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-none) .shell-page__content {\n padding: 0;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { ShellResponsiveMode } from '../../shell/shell-responsive';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\nimport { resolveShellPageHeaderVariant } from './shell-page-responsive';\nimport type {\n ShellPageCapacity,\n ShellPageContentInset,\n ShellPageContentSurface,\n ShellPageDesktopHeaderPlacement,\n ShellPageHeaderPresentation,\n} from './shell-page-types';\n\ntype BarTitleElement = HTMLElement & { variant: BarTitleVariant };\n\n@Component({\n tag: 'ds-shell-page',\n styleUrl: 'ShellPage.css',\n scoped: true,\n})\nexport class ShellPage {\n private static readonly MAX_HEADER_REVEAL_FRAMES = 12;\n private static readonly MAX_HEADER_GEOMETRY_FRAMES = 12;\n\n @Element() el!: HTMLElement;\n\n /** Automatic capacity/scroll behavior, or an explicit header variant override. */\n @Prop() headerPresentation: ShellPageHeaderPresentation = 'auto';\n\n /** Available page-header capacity supplied by the owning application shell. */\n @Prop() headerCapacity?: ShellPageCapacity;\n\n /** Desktop title chrome is rendered in this page or externally in the shell bar. */\n @Prop({ attribute: 'desktop-header-placement', reflect: true })\n desktopHeaderPlacement: ShellPageDesktopHeaderPlacement = 'page';\n\n /** Standard page gutters, or no inset for full-bleed page content. */\n @Prop() contentInset: ShellPageContentInset = 'default';\n\n /** Preserve the responsive side/end gutters while allowing content to meet the header. */\n @Prop() contentInsetBlockStart: ShellPageContentInset = 'default';\n\n /** Exact block-start content inset, overriding the responsive default when provided. */\n @Prop() contentInsetBlockStartSize?: string;\n\n /** Exact block-start content inset while the header is compact or constrained. */\n @Prop() compactContentInsetBlockStartSize?: string;\n\n /** Allow roomy automatic headers to compact as the page scrolls. */\n @Prop() scrollCompaction: boolean = true;\n\n /** Canvas surface painted around and beneath routed page content. */\n @Prop() contentSurface: ShellPageContentSurface = 'primary';\n\n /** Explicit shell breakpoint presentation. Mobile uses the dedicated mobile-header slot. */\n @Prop({ attribute: 'responsive-mode', reflect: true })\n responsiveMode: ShellResponsiveMode = 'desktop';\n\n @State() private pageTopVisible = true;\n\n private sentinelEl: HTMLElement | null = null;\n private spacerEl: HTMLElement | null = null;\n private stickyHeaderEl: HTMLElement | null = null;\n private headerEl: BarTitleElement | null = null;\n private expandedHeaderHeight = 0;\n private headerTravel = 0;\n private expandedGeometryFrozen = false;\n private pageHeaderResizeObserver: ResizeObserver | null = null;\n private headerResizeObserver: ResizeObserver | null = null;\n private headerMutationObserver: MutationObserver | null = null;\n private headerRevealFrame: number | null = null;\n private headerGeometryFrame: number | null = null;\n private reconnectFrame: number | null = null;\n private scrollRoot: HTMLElement | Window | null = null;\n private hasLoaded = false;\n\n @Watch('headerCapacity')\n @Watch('headerPresentation')\n @Watch('scrollCompaction')\n handleHeaderContractChange() {\n this.syncHeaderVariant(true);\n }\n\n @Watch('responsiveMode')\n handleResponsiveModeChange() {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n this.observeHeader(\n this.responsiveMode === 'mobile' || this.desktopHeaderExternal ? null : this.findHeader()\n );\n this.syncPageHeaderBlockSize();\n }\n\n @Watch('desktopHeaderPlacement')\n handleDesktopHeaderPlacementChange() {\n this.observeHeader(this.desktopHeaderExternal ? null : this.findHeader());\n this.syncPageHeaderBlockSize();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.connectRuntime();\n }\n\n componentDidRender() {\n this.syncHeaderVariant();\n this.syncPageHeaderBlockSize();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = requestAnimationFrame(() => {\n this.reconnectFrame = null;\n if (this.el.isConnected) this.connectRuntime();\n });\n }\n\n disconnectedCallback() {\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = null;\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = null;\n }\n\n private connectRuntime() {\n this.observePageHeaderGeometry();\n this.observeHeader(this.responsiveMode === 'mobile' ? null : this.findHeader());\n this.connectScrollRoot();\n }\n\n private get effectiveVariant(): BarTitleVariant {\n if (this.desktopHeaderExternal) return 'compact';\n return resolveShellPageHeaderVariant(\n this.headerPresentation,\n this.headerCapacity ?? 'roomy',\n this.effectiveScrollCompaction ? this.pageTopVisible : true\n );\n }\n\n private get desktopHeaderExternal(): boolean {\n return this.responsiveMode !== 'mobile' && this.desktopHeaderPlacement === 'shell-bar';\n }\n\n private get effectiveScrollCompaction(): boolean {\n return this.scrollCompaction && !this.desktopHeaderExternal;\n }\n\n private get headerContractResolved(): boolean {\n return this.headerPresentation !== 'auto' || this.headerCapacity !== undefined;\n }\n\n private get isScrollCompacted(): boolean {\n return (\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy' &&\n !this.pageTopVisible\n );\n }\n\n private get contentInsetStyles(): { [name: string]: string } {\n const styles: { [name: string]: string } = {};\n const expanded = this.contentInsetBlockStartSize?.trim();\n const compact = this.compactContentInsetBlockStartSize?.trim();\n if (expanded) styles['--ds-shell-page-content-block-start-inset'] = expanded;\n if (compact) styles['--ds-shell-page-compact-content-block-start-inset'] = compact;\n return styles;\n }\n\n private composedParent(element: Element): Element | null {\n return (element as HTMLElement).assignedSlot?.parentElement ?? element.parentElement;\n }\n\n private findScrollRoot(): HTMLElement | Window {\n let ancestor = this.composedParent(this.el);\n while (ancestor && ancestor !== document.documentElement) {\n const overflow = getComputedStyle(ancestor).overflowY;\n if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n return ancestor as HTMLElement;\n }\n ancestor = this.composedParent(ancestor);\n }\n return window;\n }\n\n private connectScrollRoot() {\n const next = this.findScrollRoot();\n if (next === this.scrollRoot) return;\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = next;\n this.scrollRoot.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll();\n }\n\n private get scrollRootResolved(): boolean {\n const shell = this.el.closest('ds-shell-app');\n if (!shell) return true;\n const expected = shell.querySelector<HTMLElement>('.shell-app__content');\n return expected !== null && this.scrollRoot === expected;\n }\n\n private handleScroll = () => {\n if (!this.sentinelEl || !this.scrollRoot) return;\n const rootTop =\n this.scrollRoot === window ? 0 : (this.scrollRoot as HTMLElement).getBoundingClientRect().top;\n this.syncHeaderDividerInset(rootTop);\n const nextPageTopVisible = this.sentinelEl.getBoundingClientRect().top >= rootTop;\n if (\n this.effectiveScrollCompaction &&\n !nextPageTopVisible &&\n this.pageTopVisible &&\n this.headerEl?.classList.contains(this.variantClass('expanded'))\n ) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n this.expandedGeometryFrozen = true;\n }\n if (\n nextPageTopVisible &&\n this.expandedGeometryFrozen &&\n this.el.getBoundingClientRect().top >= rootTop\n ) {\n this.expandedGeometryFrozen = false;\n if (this.headerEl?.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n }\n }\n this.pageTopVisible = nextPageTopVisible;\n };\n\n private findHeader(): BarTitleElement | null {\n return this.el.querySelector<BarTitleElement>('ds-bar-title');\n }\n\n private get compactHeaderHeight(): number {\n return resolveCssLengthPx('--dimension-size-600', 0);\n }\n\n private syncHeaderDividerInset(rootTop?: number) {\n const header = this.headerEl;\n if (!header) return;\n\n const ownsScrollTransition =\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy';\n const expandedInset = resolveCssLengthPx('--dimension-space-400', 0);\n if (\n !ownsScrollTransition ||\n !this.sentinelEl ||\n !this.scrollRoot ||\n this.headerTravel <= 0 ||\n expandedInset <= 0\n ) {\n header.style.removeProperty('--ds-bar-title-divider-inset');\n return;\n }\n\n const scrollRootTop =\n rootTop ??\n (this.scrollRoot === window\n ? 0\n : (this.scrollRoot as HTMLElement).getBoundingClientRect().top);\n const remainingTravel = this.sentinelEl.getBoundingClientRect().top - scrollRootTop;\n const progress = Math.min(1, Math.max(0, 1 - remainingTravel / this.headerTravel));\n header.style.setProperty('--ds-bar-title-divider-inset', `${expandedInset * (1 - progress)}px`);\n }\n\n private setHeaderTravel(distance: number) {\n const next = Math.max(0, distance);\n if (Math.abs(next - this.headerTravel) < 0.5) return;\n this.headerTravel = next;\n this.el.style.setProperty('--ds-shell-page-header-travel', `${next}px`);\n this.handleScroll();\n }\n\n private measureHeaderTravel(header: BarTitleElement) {\n const anchor = header.querySelector<HTMLElement>('[data-shell-page-header-anchor]');\n const compactHeight = this.compactHeaderHeight;\n if (!anchor || compactHeight <= 0) return;\n\n const headerRect = header.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n if (headerRect.height <= 0 || anchorRect.height <= 0) return;\n\n const expandedAnchorTop = anchorRect.top - headerRect.top;\n const compactAnchorTop = Math.max(0, (compactHeight - anchorRect.height) / 2);\n this.setHeaderTravel(expandedAnchorTop - compactAnchorTop);\n }\n\n private captureExpandedHeaderGeometry(header: BarTitleElement) {\n // Keep the largest observed expanded geometry for this header instance.\n // During a variant handoff Chromium can briefly report the compact box\n // before the child host class mutation is delivered; that transient must\n // not erase the flow reservation captured at the roomy page top.\n this.expandedHeaderHeight = Math.max(\n this.expandedHeaderHeight,\n header.getBoundingClientRect().height\n );\n this.measureHeaderTravel(header);\n }\n\n private setSpacerHeight(height: number) {\n if (!this.spacerEl) return;\n this.spacerEl.style.setProperty('--ds-shell-page-flow-spacer', `${Math.max(0, height)}px`);\n }\n\n private variantClass(variant: BarTitleVariant): string {\n return `bar-title-host--${variant}`;\n }\n\n private setStickyHeaderOffset(renderedVariant: BarTitleVariant) {\n this.stickyHeaderEl?.style.setProperty(\n '--ds-shell-page-sticky-offset',\n renderedVariant === 'expanded' &&\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy'\n ? `${-this.headerTravel}px`\n : '0px'\n );\n }\n\n private syncPageHeaderBlockSize() {\n if (this.desktopHeaderExternal) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', '0px');\n return;\n }\n const renderedHeight = this.stickyHeaderEl?.getBoundingClientRect().height ?? 0;\n if (renderedHeight > 0) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', `${renderedHeight}px`);\n } else {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n }\n }\n\n private observePageHeaderGeometry() {\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.syncPageHeaderBlockSize();\n\n if (!this.stickyHeaderEl || typeof ResizeObserver === 'undefined') return;\n this.pageHeaderResizeObserver = new ResizeObserver(() => {\n this.syncPageHeaderBlockSize();\n });\n this.pageHeaderResizeObserver.observe(this.stickyHeaderEl);\n }\n\n private syncRenderedHeaderGeometry(header: BarTitleElement) {\n const renderedVariant = this.effectiveVariant;\n if (!header.classList.contains(this.variantClass(renderedVariant))) return;\n\n this.syncPageHeaderBlockSize();\n\n // Update both flow-preservation pieces before reading layout. Otherwise a\n // reverse compact → expanded render can briefly contain the tall header and\n // the compact spacer together, giving browser scroll anchoring a transient\n // height change to compensate.\n this.setSpacerHeight(\n this.isScrollCompacted ? this.expandedHeaderHeight - this.compactHeaderHeight : 0\n );\n this.setStickyHeaderOffset(renderedVariant);\n\n if (renderedVariant === 'expanded' && !this.expandedGeometryFrozen) {\n this.captureExpandedHeaderGeometry(header);\n this.setStickyHeaderOffset(renderedVariant);\n }\n }\n\n private cancelHeaderGeometrySync() {\n if (this.headerGeometryFrame !== null) cancelAnimationFrame(this.headerGeometryFrame);\n this.headerGeometryFrame = null;\n }\n\n private scheduleHeaderGeometrySync(header: BarTitleElement) {\n this.cancelHeaderGeometrySync();\n let framesRemaining = ShellPage.MAX_HEADER_GEOMETRY_FRAMES;\n let framesElapsed = 0;\n const sync = () => {\n if (this.headerEl !== header) return;\n framesRemaining -= 1;\n framesElapsed += 1;\n // In WebKit a child's componentDidLoad can precede its assignment into\n // the parent's rendered slot. Revalidate after ShellApp has had a frame\n // to expose the actual content scroller.\n this.connectScrollRoot();\n this.syncRenderedHeaderGeometry(header);\n const geometryReady =\n this.effectiveVariant !== 'expanded' ||\n (this.expandedHeaderHeight > 0 && this.headerTravel > 0);\n if (\n (geometryReady && this.scrollRootResolved && framesElapsed >= 2) ||\n framesRemaining <= 0\n ) {\n this.headerGeometryFrame = null;\n return;\n }\n this.headerGeometryFrame = requestAnimationFrame(sync);\n };\n this.headerGeometryFrame = requestAnimationFrame(sync);\n }\n\n private cancelHeaderReveal() {\n if (this.headerRevealFrame !== null) cancelAnimationFrame(this.headerRevealFrame);\n this.headerRevealFrame = null;\n this.headerEl?.removeAttribute('data-shell-page-syncing');\n }\n\n private revealHeaderWhenSynced(header: BarTitleElement, variant: BarTitleVariant) {\n // Stencil normally re-renders within a frame or two of a prop change. Stop\n // polling at the cap, but fail closed: a stale variant must never paint.\n let framesRemaining = ShellPage.MAX_HEADER_REVEAL_FRAMES;\n const reveal = () => {\n if (this.headerEl !== header) {\n header.removeAttribute('data-shell-page-syncing');\n return;\n }\n framesRemaining -= 1;\n if (header.classList.contains(this.variantClass(variant))) {\n header.removeAttribute('data-shell-page-syncing');\n this.headerRevealFrame = null;\n return;\n }\n if (framesRemaining <= 0) {\n this.headerRevealFrame = null;\n return;\n }\n this.headerRevealFrame = requestAnimationFrame(reveal);\n };\n this.headerRevealFrame = requestAnimationFrame(reveal);\n }\n\n private syncHeaderVariant(concealUntilSynced = false) {\n const header = this.headerEl;\n if (!header) return;\n\n this.syncHeaderDividerInset();\n if (!this.headerContractResolved) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n return;\n }\n\n const next = this.effectiveVariant;\n const renderedVariantIsStale = !header.classList.contains(this.variantClass(next));\n if (!renderedVariantIsStale) this.syncRenderedHeaderGeometry(header);\n if (renderedVariantIsStale && this.isScrollCompacted) {\n // Preserve the expanded flow before asking BarTitle to become compact.\n // This prevents the sentinel from moving back into view during the\n // parent/child render handoff and keeps the variant transition stable.\n this.setSpacerHeight(this.expandedHeaderHeight - this.compactHeaderHeight);\n this.setStickyHeaderOffset(next);\n }\n if (concealUntilSynced) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n }\n if (header.variant !== next) {\n header.variant = next;\n // The child update and its MutationObserver callback can land in\n // different phases across engines. Poll the rendered class as the\n // authoritative handoff before committing sticky/spacer geometry.\n this.scheduleHeaderGeometrySync(header);\n }\n if (concealUntilSynced) {\n this.revealHeaderWhenSynced(header, next);\n }\n }\n\n private observeHeader(header: BarTitleElement | null) {\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.headerEl = header;\n this.expandedHeaderHeight = 0;\n this.expandedGeometryFrozen = false;\n this.setHeaderTravel(0);\n this.setSpacerHeight(0);\n this.stickyHeaderEl?.style.setProperty('--ds-shell-page-sticky-offset', '0px');\n\n if (!header) return;\n if (header.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(header);\n }\n if (typeof ResizeObserver !== 'undefined') {\n this.headerResizeObserver = new ResizeObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerResizeObserver.observe(header);\n }\n if (typeof MutationObserver !== 'undefined') {\n this.headerMutationObserver = new MutationObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerMutationObserver.observe(header, {\n attributes: true,\n attributeFilter: ['class'],\n childList: true,\n subtree: true,\n });\n }\n this.syncHeaderVariant(true);\n this.scheduleHeaderGeometrySync(header);\n }\n\n private handleHeaderSlotChange = (event: Event) => {\n if (this.responsiveMode === 'mobile') return;\n const slot = event.target as HTMLSlotElement;\n const header = slot\n .assignedElements()\n .find(element => element.tagName.toLowerCase() === 'ds-bar-title');\n this.observeHeader((header as BarTitleElement | undefined) ?? null);\n };\n\n render() {\n const mobile = this.responsiveMode === 'mobile';\n return (\n <Host\n role=\"main\"\n style={this.contentInsetStyles}\n class={{\n 'shell-page-host--inset-default': this.contentInset === 'default',\n 'shell-page-host--inset-none': this.contentInset === 'none',\n 'shell-page-host--block-start-inset-none': this.contentInsetBlockStart === 'none',\n 'shell-page-host--surface-primary': this.contentSurface === 'primary',\n 'shell-page-host--surface-secondary': this.contentSurface === 'secondary',\n 'shell-page-host--mobile': mobile,\n 'shell-page-host--desktop-header-shell-bar': this.desktopHeaderExternal,\n [`shell-page-host--header-${this.effectiveVariant}`]: true,\n }}\n >\n <div\n ref={el => {\n this.sentinelEl = el ?? null;\n }}\n class=\"shell-page__scroll-sentinel\"\n aria-hidden=\"true\"\n />\n <div\n ref={el => {\n this.stickyHeaderEl = el ?? null;\n }}\n class=\"shell-page__sticky-header\"\n >\n <div\n class=\"shell-page__desktop-header\"\n hidden={mobile}\n aria-hidden={mobile ? 'true' : undefined}\n inert={mobile ? true : undefined}\n >\n <slot name=\"header\" onSlotchange={this.handleHeaderSlotChange} />\n </div>\n <div\n class=\"shell-page__mobile-header\"\n hidden={!mobile}\n aria-hidden={!mobile ? 'true' : undefined}\n inert={!mobile ? true : undefined}\n >\n <slot name=\"mobile-header\" />\n </div>\n </div>\n <div\n ref={el => {\n this.spacerEl = el ?? null;\n }}\n class=\"shell-page__flow-spacer\"\n aria-hidden=\"true\"\n />\n <div class=\"shell-page__content\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"wGAGgBA,EACdC,EACAC,EACAC,GAEA,GAAIF,IAAiB,OAAQ,OAAOA,EACpC,GAAIC,IAAa,cAAe,MAAO,cACvC,GAAIA,IAAa,YAAcC,EAAgB,MAAO,UACtD,MAAO,UACT,CCZA,MAAMC,EAAe,IAAM,6mI,MCoBdC,EAASC,EAAA,MAAAD,UAAAE,EALtB,WAAAC,CAAAC,G,4CAYUC,KAAAC,mBAAkD,OAO1DD,KAAAE,uBAA0D,OAGlDF,KAAAG,aAAsC,UAGtCH,KAAAI,uBAAgD,UAShDJ,KAAAK,iBAA4B,KAG5BL,KAAAM,eAA0C,UAIlDN,KAAAO,eAAsC,UAErBP,KAAAP,eAAiB,KAE1BO,KAAAQ,WAAiC,KACjCR,KAAAS,SAA+B,KAC/BT,KAAAU,eAAqC,KACrCV,KAAAW,SAAmC,KACnCX,KAAAY,qBAAuB,EACvBZ,KAAAa,aAAe,EACfb,KAAAc,uBAAyB,MACzBd,KAAAe,yBAAkD,KAClDf,KAAAgB,qBAA8C,KAC9ChB,KAAAiB,uBAAkD,KAClDjB,KAAAkB,kBAAmC,KACnClB,KAAAmB,oBAAqC,KACrCnB,KAAAoB,eAAgC,KAChCpB,KAAAqB,WAA0C,KAC1CrB,KAAAsB,UAAY,MAwIZtB,KAAAuB,aAAe,KACrB,IAAKvB,KAAKQ,aAAeR,KAAKqB,WAAY,OAC1C,MAAMG,EACJxB,KAAKqB,aAAeI,OAAS,EAAKzB,KAAKqB,WAA2BK,wBAAwBC,IAC5F3B,KAAK4B,uBAAuBJ,GAC5B,MAAMK,EAAqB7B,KAAKQ,WAAWkB,wBAAwBC,KAAOH,EAC1E,GACExB,KAAK8B,4BACJD,GACD7B,KAAKP,gBACLO,KAAKW,UAAUoB,UAAUC,SAAShC,KAAKiC,aAAa,aACpD,CACAjC,KAAKkC,8BAA8BlC,KAAKW,UACxCX,KAAKc,uBAAyB,I,CAEhC,GACEe,GACA7B,KAAKc,wBACLd,KAAKmC,GAAGT,wBAAwBC,KAAOH,EACvC,CACAxB,KAAKc,uBAAyB,MAC9B,GAAId,KAAKW,UAAUoB,UAAUC,SAAShC,KAAKiC,aAAa,aAAc,CACpEjC,KAAKkC,8BAA8BlC,KAAKW,S,EAG5CX,KAAKP,eAAiBoC,CAAkB,EA0RlC7B,KAAAoC,uBAA0BC,IAChC,GAAIrC,KAAKO,iBAAmB,SAAU,OACtC,MAAM+B,EAAOD,EAAME,OACnB,MAAMC,EAASF,EACZG,mBACAC,MAAKC,GAAWA,EAAQC,QAAQC,gBAAkB,iBACrD7C,KAAK8C,cAAeN,GAA0C,KAAK,CA+DtE,CA3fC,0BAAAO,GACE/C,KAAKgD,kBAAkB,K,CAIzB,0BAAAC,GACEjD,KAAKmC,GAAGe,MAAMC,eAAe,4CAC7BnD,KAAK8C,cACH9C,KAAKO,iBAAmB,UAAYP,KAAKoD,sBAAwB,KAAOpD,KAAKqD,cAE/ErD,KAAKsD,yB,CAIP,kCAAAC,GACEvD,KAAK8C,cAAc9C,KAAKoD,sBAAwB,KAAOpD,KAAKqD,cAC5DrD,KAAKsD,yB,CAGP,gBAAAE,GACExD,KAAKsB,UAAY,KACjBtB,KAAKyD,gB,CAGP,kBAAAC,GACE1D,KAAKgD,oBACLhD,KAAKsD,yB,CAGP,iBAAAK,GACE,IAAK3D,KAAKsB,UAAW,OACrB,GAAItB,KAAKoB,iBAAmB,KAAMwC,qBAAqB5D,KAAKoB,gBAC5DpB,KAAKoB,eAAiByC,uBAAsB,KAC1C7D,KAAKoB,eAAiB,KACtB,GAAIpB,KAAKmC,GAAG2B,YAAa9D,KAAKyD,gBAAgB,G,CAIlD,oBAAAM,GACE,GAAI/D,KAAKoB,iBAAmB,KAAMwC,qBAAqB5D,KAAKoB,gBAC5DpB,KAAKoB,eAAiB,KACtBpB,KAAKgB,sBAAsBgD,aAC3BhE,KAAKgB,qBAAuB,KAC5BhB,KAAKe,0BAA0BiD,aAC/BhE,KAAKe,yBAA2B,KAChCf,KAAKiB,wBAAwB+C,aAC7BhE,KAAKiB,uBAAyB,KAC9BjB,KAAKiE,qBACLjE,KAAKkE,2BACLlE,KAAKW,UAAUuC,MAAMC,eAAe,gCACpCnD,KAAKqB,YAAY8C,oBAAoB,SAAUnE,KAAKuB,cACpDvB,KAAKqB,WAAa,I,CAGZ,cAAAoC,GACNzD,KAAKoE,4BACLpE,KAAK8C,cAAc9C,KAAKO,iBAAmB,SAAW,KAAOP,KAAKqD,cAClErD,KAAKqE,mB,CAGP,oBAAYC,GACV,GAAItE,KAAKoD,sBAAuB,MAAO,UACvC,OAAO9D,EACLU,KAAKC,mBACLD,KAAKuE,gBAAkB,QACvBvE,KAAK8B,0BAA4B9B,KAAKP,eAAiB,K,CAI3D,yBAAY2D,GACV,OAAOpD,KAAKO,iBAAmB,UAAYP,KAAKE,yBAA2B,W,CAG7E,6BAAY4B,GACV,OAAO9B,KAAKK,mBAAqBL,KAAKoD,qB,CAGxC,0BAAYoB,GACV,OAAOxE,KAAKC,qBAAuB,QAAUD,KAAKuE,iBAAmBE,S,CAGvE,qBAAYC,GACV,OACE1E,KAAK8B,2BACL9B,KAAKC,qBAAuB,QAC5BD,KAAKuE,iBAAmB,UACvBvE,KAAKP,c,CAIV,sBAAYkF,GACV,MAAMC,EAAqC,GAC3C,MAAMC,EAAW7E,KAAK8E,4BAA4BC,OAClD,MAAMC,EAAUhF,KAAKiF,mCAAmCF,OACxD,GAAIF,EAAUD,EAAO,6CAA+CC,EACpE,GAAIG,EAASJ,EAAO,qDAAuDI,EAC3E,OAAOJ,C,CAGD,cAAAM,CAAevC,GACrB,OAAQA,EAAwBwC,cAAcC,eAAiBzC,EAAQyC,a,CAGjE,cAAAC,GACN,IAAIC,EAAWtF,KAAKkF,eAAelF,KAAKmC,IACxC,MAAOmD,GAAYA,IAAaC,SAASC,gBAAiB,CACxD,MAAMC,EAAWC,iBAAiBJ,GAAUK,UAC5C,GAAIF,IAAa,QAAUA,IAAa,UAAYA,IAAa,UAAW,CAC1E,OAAOH,C,CAETA,EAAWtF,KAAKkF,eAAeI,E,CAEjC,OAAO7D,M,CAGD,iBAAA4C,GACN,MAAMuB,EAAO5F,KAAKqF,iBAClB,GAAIO,IAAS5F,KAAKqB,WAAY,OAC9BrB,KAAKqB,YAAY8C,oBAAoB,SAAUnE,KAAKuB,cACpDvB,KAAKqB,WAAauE,EAClB5F,KAAKqB,WAAWwE,iBAAiB,SAAU7F,KAAKuB,aAAc,CAAEuE,QAAS,OACzE9F,KAAKuB,c,CAGP,sBAAYwE,GACV,MAAMC,EAAQhG,KAAKmC,GAAG8D,QAAQ,gBAC9B,IAAKD,EAAO,OAAO,KACnB,MAAME,EAAWF,EAAMG,cAA2B,uBAClD,OAAOD,IAAa,MAAQlG,KAAKqB,aAAe6E,C,CA+B1C,UAAA7C,GACN,OAAOrD,KAAKmC,GAAGgE,cAA+B,e,CAGhD,uBAAYC,GACV,OAAOC,EAAmB,uBAAwB,E,CAG5C,sBAAAzE,CAAuBJ,GAC7B,MAAMgB,EAASxC,KAAKW,SACpB,IAAK6B,EAAQ,OAEb,MAAM8D,EACJtG,KAAK8B,2BACL9B,KAAKC,qBAAuB,QAC5BD,KAAKuE,iBAAmB,QAC1B,MAAMgC,EAAgBF,EAAmB,wBAAyB,GAClE,IACGC,IACAtG,KAAKQ,aACLR,KAAKqB,YACNrB,KAAKa,cAAgB,GACrB0F,GAAiB,EACjB,CACA/D,EAAOU,MAAMC,eAAe,gCAC5B,M,CAGF,MAAMqD,EACJhF,IACCxB,KAAKqB,aAAeI,OACjB,EACCzB,KAAKqB,WAA2BK,wBAAwBC,KAC/D,MAAM8E,EAAkBzG,KAAKQ,WAAWkB,wBAAwBC,IAAM6E,EACtE,MAAME,EAAWC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAG,EAAIJ,EAAkBzG,KAAKa,eACpE2B,EAAOU,MAAM4D,YAAY,+BAAgC,GAAGP,GAAiB,EAAIG,O,CAG3E,eAAAK,CAAgBC,GACtB,MAAMpB,EAAOe,KAAKE,IAAI,EAAGG,GACzB,GAAIL,KAAKM,IAAIrB,EAAO5F,KAAKa,cAAgB,GAAK,OAC9Cb,KAAKa,aAAe+E,EACpB5F,KAAKmC,GAAGe,MAAM4D,YAAY,gCAAiC,GAAGlB,OAC9D5F,KAAKuB,c,CAGC,mBAAA2F,CAAoB1E,GAC1B,MAAM2E,EAAS3E,EAAO2D,cAA2B,mCACjD,MAAMiB,EAAgBpH,KAAKoG,oBAC3B,IAAKe,GAAUC,GAAiB,EAAG,OAEnC,MAAMC,EAAa7E,EAAOd,wBAC1B,MAAM4F,EAAaH,EAAOzF,wBAC1B,GAAI2F,EAAWE,QAAU,GAAKD,EAAWC,QAAU,EAAG,OAEtD,MAAMC,EAAoBF,EAAW3F,IAAM0F,EAAW1F,IACtD,MAAM8F,EAAmBd,KAAKE,IAAI,GAAIO,EAAgBE,EAAWC,QAAU,GAC3EvH,KAAK+G,gBAAgBS,EAAoBC,E,CAGnC,6BAAAvF,CAA8BM,GAKpCxC,KAAKY,qBAAuB+F,KAAKE,IAC/B7G,KAAKY,qBACL4B,EAAOd,wBAAwB6F,QAEjCvH,KAAKkH,oBAAoB1E,E,CAGnB,eAAAkF,CAAgBH,GACtB,IAAKvH,KAAKS,SAAU,OACpBT,KAAKS,SAASyC,MAAM4D,YAAY,8BAA+B,GAAGH,KAAKE,IAAI,EAAGU,O,CAGxE,YAAAtF,CAAa0F,GACnB,MAAO,mBAAmBA,G,CAGpB,qBAAAC,CAAsBC,GAC5B7H,KAAKU,gBAAgBwC,MAAM4D,YACzB,gCACAe,IAAoB,YAClB7H,KAAK8B,2BACL9B,KAAKC,qBAAuB,QAC5BD,KAAKuE,iBAAmB,QACtB,IAAIvE,KAAKa,iBACT,M,CAIA,uBAAAyC,GACN,GAAItD,KAAKoD,sBAAuB,CAC9BpD,KAAKmC,GAAGe,MAAM4D,YAAY,2CAA4C,OACtE,M,CAEF,MAAMgB,EAAiB9H,KAAKU,gBAAgBgB,wBAAwB6F,QAAU,EAC9E,GAAIO,EAAiB,EAAG,CACtB9H,KAAKmC,GAAGe,MAAM4D,YAAY,2CAA4C,GAAGgB,M,KACpE,CACL9H,KAAKmC,GAAGe,MAAMC,eAAe,2C,EAIzB,yBAAAiB,GACNpE,KAAKe,0BAA0BiD,aAC/BhE,KAAKe,yBAA2B,KAChCf,KAAKsD,0BAEL,IAAKtD,KAAKU,uBAAyBqH,iBAAmB,YAAa,OACnE/H,KAAKe,yBAA2B,IAAIgH,gBAAe,KACjD/H,KAAKsD,yBAAyB,IAEhCtD,KAAKe,yBAAyBiH,QAAQhI,KAAKU,e,CAGrC,0BAAAuH,CAA2BzF,GACjC,MAAMqF,EAAkB7H,KAAKsE,iBAC7B,IAAK9B,EAAOT,UAAUC,SAAShC,KAAKiC,aAAa4F,IAAmB,OAEpE7H,KAAKsD,0BAMLtD,KAAK0H,gBACH1H,KAAK0E,kBAAoB1E,KAAKY,qBAAuBZ,KAAKoG,oBAAsB,GAElFpG,KAAK4H,sBAAsBC,GAE3B,GAAIA,IAAoB,aAAe7H,KAAKc,uBAAwB,CAClEd,KAAKkC,8BAA8BM,GACnCxC,KAAK4H,sBAAsBC,E,EAIvB,wBAAA3D,GACN,GAAIlE,KAAKmB,sBAAwB,KAAMyC,qBAAqB5D,KAAKmB,qBACjEnB,KAAKmB,oBAAsB,I,CAGrB,0BAAA+G,CAA2B1F,GACjCxC,KAAKkE,2BACL,IAAIiE,EAAkBxI,EAAUyI,2BAChC,IAAIC,EAAgB,EACpB,MAAMC,EAAO,KACX,GAAItI,KAAKW,WAAa6B,EAAQ,OAC9B2F,GAAmB,EACnBE,GAAiB,EAIjBrI,KAAKqE,oBACLrE,KAAKiI,2BAA2BzF,GAChC,MAAM+F,EACJvI,KAAKsE,mBAAqB,YACzBtE,KAAKY,qBAAuB,GAAKZ,KAAKa,aAAe,EACxD,GACG0H,GAAiBvI,KAAK+F,oBAAsBsC,GAAiB,GAC9DF,GAAmB,EACnB,CACAnI,KAAKmB,oBAAsB,KAC3B,M,CAEFnB,KAAKmB,oBAAsB0C,sBAAsByE,EAAK,EAExDtI,KAAKmB,oBAAsB0C,sBAAsByE,E,CAG3C,kBAAArE,GACN,GAAIjE,KAAKkB,oBAAsB,KAAM0C,qBAAqB5D,KAAKkB,mBAC/DlB,KAAKkB,kBAAoB,KACzBlB,KAAKW,UAAU6H,gBAAgB,0B,CAGzB,sBAAAC,CAAuBjG,EAAyBmF,GAGtD,IAAIQ,EAAkBxI,EAAU+I,yBAChC,MAAMC,EAAS,KACb,GAAI3I,KAAKW,WAAa6B,EAAQ,CAC5BA,EAAOgG,gBAAgB,2BACvB,M,CAEFL,GAAmB,EACnB,GAAI3F,EAAOT,UAAUC,SAAShC,KAAKiC,aAAa0F,IAAW,CACzDnF,EAAOgG,gBAAgB,2BACvBxI,KAAKkB,kBAAoB,KACzB,M,CAEF,GAAIiH,GAAmB,EAAG,CACxBnI,KAAKkB,kBAAoB,KACzB,M,CAEFlB,KAAKkB,kBAAoB2C,sBAAsB8E,EAAO,EAExD3I,KAAKkB,kBAAoB2C,sBAAsB8E,E,CAGzC,iBAAA3F,CAAkB4F,EAAqB,OAC7C,MAAMpG,EAASxC,KAAKW,SACpB,IAAK6B,EAAQ,OAEbxC,KAAK4B,yBACL,IAAK5B,KAAKwE,uBAAwB,CAChCxE,KAAKiE,qBACLzB,EAAOqG,aAAa,0BAA2B,IAC/C,M,CAGF,MAAMjD,EAAO5F,KAAKsE,iBAClB,MAAMwE,GAA0BtG,EAAOT,UAAUC,SAAShC,KAAKiC,aAAa2D,IAC5E,IAAKkD,EAAwB9I,KAAKiI,2BAA2BzF,GAC7D,GAAIsG,GAA0B9I,KAAK0E,kBAAmB,CAIpD1E,KAAK0H,gBAAgB1H,KAAKY,qBAAuBZ,KAAKoG,qBACtDpG,KAAK4H,sBAAsBhC,E,CAE7B,GAAIgD,EAAoB,CACtB5I,KAAKiE,qBACLzB,EAAOqG,aAAa,0BAA2B,G,CAEjD,GAAIrG,EAAOmF,UAAY/B,EAAM,CAC3BpD,EAAOmF,QAAU/B,EAIjB5F,KAAKkI,2BAA2B1F,E,CAElC,GAAIoG,EAAoB,CACtB5I,KAAKyI,uBAAuBjG,EAAQoD,E,EAIhC,aAAA9C,CAAcN,GACpBxC,KAAKiE,qBACLjE,KAAKkE,2BACLlE,KAAKgB,sBAAsBgD,aAC3BhE,KAAKgB,qBAAuB,KAC5BhB,KAAKiB,wBAAwB+C,aAC7BhE,KAAKiB,uBAAyB,KAC9BjB,KAAKW,UAAUuC,MAAMC,eAAe,gCACpCnD,KAAKW,SAAW6B,EAChBxC,KAAKY,qBAAuB,EAC5BZ,KAAKc,uBAAyB,MAC9Bd,KAAK+G,gBAAgB,GACrB/G,KAAK0H,gBAAgB,GACrB1H,KAAKU,gBAAgBwC,MAAM4D,YAAY,gCAAiC,OAExE,IAAKtE,EAAQ,OACb,GAAIA,EAAOT,UAAUC,SAAShC,KAAKiC,aAAa,aAAc,CAC5DjC,KAAKkC,8BAA8BM,E,CAErC,UAAWuF,iBAAmB,YAAa,CACzC/H,KAAKgB,qBAAuB,IAAI+G,gBAAe,KAC7C/H,KAAKiI,2BAA2BzF,EAAO,IAEzCxC,KAAKgB,qBAAqBgH,QAAQxF,E,CAEpC,UAAWuG,mBAAqB,YAAa,CAC3C/I,KAAKiB,uBAAyB,IAAI8H,kBAAiB,KACjD/I,KAAKiI,2BAA2BzF,EAAO,IAEzCxC,KAAKiB,uBAAuB+G,QAAQxF,EAAQ,CAC1CwG,WAAY,KACZC,gBAAiB,CAAC,SAClBC,UAAW,KACXC,QAAS,M,CAGbnJ,KAAKgD,kBAAkB,MACvBhD,KAAKkI,2BAA2B1F,E,CAYlC,MAAA4G,GACE,MAAMC,EAASrJ,KAAKO,iBAAmB,SACvC,OACE+I,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAK,OACLvG,MAAOlD,KAAK2E,mBACZ+E,MAAO,CACL,iCAAkC1J,KAAKG,eAAiB,UACxD,8BAA+BH,KAAKG,eAAiB,OACrD,0CAA2CH,KAAKI,yBAA2B,OAC3E,mCAAoCJ,KAAKM,iBAAmB,UAC5D,qCAAsCN,KAAKM,iBAAmB,YAC9D,0BAA2B+I,EAC3B,4CAA6CrJ,KAAKoD,sBAClD,CAAC,2BAA2BpD,KAAKsE,oBAAqB,OAGxDgF,EAAA,OAAAE,IAAA,2CACEG,IAAKxH,IACHnC,KAAKQ,WAAa2B,GAAM,IAAI,EAE9BuH,MAAM,8BAA6B,cACvB,SAEdJ,EAAA,OAAAE,IAAA,2CACEG,IAAKxH,IACHnC,KAAKU,eAAiByB,GAAM,IAAI,EAElCuH,MAAM,6BAENJ,EAAA,OAAAE,IAAA,2CACEE,MAAM,6BACNE,OAAQP,EAAM,cACDA,EAAS,OAAS5E,UAC/BoF,MAAOR,EAAS,KAAO5E,WAEvB6E,EAAA,QAAAE,IAAA,2CAAMM,KAAK,SAASC,aAAc/J,KAAKoC,0BAEzCkH,EAAA,OAAAE,IAAA,2CACEE,MAAM,4BACNE,QAASP,EAAM,eACDA,EAAS,OAAS5E,UAChCoF,OAAQR,EAAS,KAAO5E,WAExB6E,EAAA,QAAAE,IAAA,2CAAMM,KAAK,oBAGfR,EAAA,OAAAE,IAAA,2CACEG,IAAKxH,IACHnC,KAAKS,SAAW0B,GAAM,IAAI,EAE5BuH,MAAM,0BAAyB,cACnB,SAEdJ,EAAA,OAAAE,IAAA,2CAAKE,MAAM,uBACTJ,EAAA,QAAAE,IAAA,8C,+nCAhjBgB7J,EAAA+I,yBAA2B,GAC3B/I,EAAAyI,2BAA6B,G","ignoreList":[]}
|