@ds-mo/ui 14.22.2 → 14.24.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 +14 -7
- package/dist/agent.json +112 -26
- package/dist/angular/ds-bar-title.d.ts +1 -1
- package/dist/angular/ds-bar-title.js +3 -3
- package/dist/angular/ds-button-filled.d.ts +3 -1
- package/dist/angular/ds-button-filled.js +7 -4
- package/dist/angular/ds-button-unfilled.d.ts +3 -1
- package/dist/angular/ds-button-unfilled.js +7 -4
- package/dist/angular/ds-panel-tools.d.ts +7 -1
- package/dist/angular/ds-panel-tools.js +7 -4
- package/dist/angular/ds-shell-app.d.ts +7 -1
- package/dist/angular/ds-shell-app.js +5 -2
- package/dist/angular/ds-shell-tools.d.ts +4 -1
- package/dist/angular/ds-shell-tools.js +7 -4
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-select.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-tools.js +1 -1
- package/dist/components/ds-table-filter.js +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/p-BR1ayqMU.js +2 -0
- package/dist/components/p-BR1ayqMU.js.map +1 -0
- package/dist/components/{p-DzVYGJJv.js → p-BSRIF4m8.js} +2 -2
- package/dist/components/{p-FitB53eM.js → p-BZlhBJZL.js} +2 -2
- package/dist/components/{p-BmqnrfTf.js → p-Bo6uW_8T.js} +2 -2
- package/dist/components/{p-BIaHDBfP.js → p-Bq8svcPs.js} +2 -2
- package/dist/components/{p-DAFR4U9P.js → p-BqbdABo3.js} +2 -2
- package/dist/components/{p-nVv71P3f.js → p-CEXchU5N.js} +2 -2
- package/dist/components/p-CEfxLsbX.js +2 -0
- package/dist/components/p-CEfxLsbX.js.map +1 -0
- package/dist/components/{p-DXbryJHz.js → p-CYMKmJ2s.js} +2 -2
- package/dist/components/p-CZHIkVgj.js +2 -0
- package/dist/components/p-CZHIkVgj.js.map +1 -0
- package/dist/components/{p-CL0tECXf.js → p-CZjjDhUl.js} +2 -2
- package/dist/components/p-C_FFU6W3.js +2 -0
- package/dist/components/p-C_FFU6W3.js.map +1 -0
- package/dist/components/{p-CilwchJH.js → p-CglHiyY2.js} +2 -2
- package/dist/components/{p-9M0ak2q_.js → p-DLaN9BPq.js} +2 -2
- package/dist/components/{p-CrYJnDev.js → p-DiS5BgLA.js} +2 -2
- package/dist/components/{p-DiyO47xX.js → p-PXdvBMXB.js} +2 -2
- package/dist/components/{p-7MWaWl8w.js → p-kslioYhf.js} +2 -2
- package/dist/components/p-kslioYhf.js.map +1 -0
- package/dist/docs/components.json +434 -32
- package/dist/lib/components/BarTitle/bar-title-types.d.ts +54 -1
- package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +12 -1
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +6 -2
- package/dist/lib/shell/index.d.ts +2 -1
- package/dist/lib/shell/index.js.map +2 -2
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +35 -13
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +61 -7
- package/dist/mcp-data/registry/button-unfilled.json +61 -7
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +9 -2
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +62 -15
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +112 -26
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +26 -3
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +39 -6
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +1 -1
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table-filter.json +1 -1
- package/dist/mcp-data/registry/table-group.json +1 -1
- package/dist/mcp-data/registry/table-saved-views.json +1 -1
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/mcp-data/registry/table-sort.json +1 -1
- package/dist/mcp-data/registry/table-toolbar.json +1 -1
- package/dist/mcp-data/registry/table.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/ds-button-filled.d.ts +1 -0
- package/dist/react/ds-button-filled.js +4 -1
- package/dist/react/ds-button-unfilled.d.ts +1 -0
- package/dist/react/ds-button-unfilled.js +1 -0
- package/dist/react/ds-panel-tools.d.ts +2 -1
- package/dist/react/ds-panel-tools.js +1 -0
- package/dist/react/ds-shell-app.d.ts +2 -1
- package/dist/react/ds-shell-app.js +1 -0
- package/dist/react/ds-shell-tools.d.ts +2 -1
- package/dist/react/ds-shell-tools.js +2 -1
- package/dist/types/components/BarTitle/BarTitle.d.ts +19 -6
- package/dist/types/components/BarTitle/bar-title-actions.d.ts +11 -0
- package/dist/types/components/BarTitle/bar-title-types.d.ts +54 -1
- package/dist/types/components/BarTitle/index.d.ts +1 -1
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +12 -1
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +12 -1
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +14 -0
- package/dist/types/components/MessageScroller/message-scroller-transcript.d.ts +9 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +17 -1
- package/dist/types/components/PanelTools/index.d.ts +1 -1
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/types/components/PanelTools/panel-tools-utils.d.ts +17 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +16 -1
- package/dist/types/components/ShellApp/shell-app-types.d.ts +6 -2
- package/dist/types/components/ShellTools/ShellTools.d.ts +5 -1
- package/dist/types/components/ShellTools/index.d.ts +1 -1
- package/dist/types/components.d.ts +94 -6
- package/dist/types/shell/index.d.ts +2 -1
- package/dist/types/utils/button-story-foundation.d.ts +2 -0
- package/dist/vue/ds-bar-title.js +1 -0
- package/dist/vue/ds-button-filled.js +6 -2
- package/dist/vue/ds-button-unfilled.js +4 -0
- package/dist/vue/ds-panel-tools.js +3 -0
- package/dist/vue/ds-shell-app.js +2 -0
- package/dist/vue/ds-shell-tools.js +5 -2
- package/package.json +3 -3
- package/dist/components/p--68f7nIx.js +0 -2
- package/dist/components/p--68f7nIx.js.map +0 -1
- package/dist/components/p-7MWaWl8w.js.map +0 -1
- package/dist/components/p-BnTPuV3x.js +0 -2
- package/dist/components/p-BnTPuV3x.js.map +0 -1
- package/dist/components/p-COFw_fcj.js +0 -2
- package/dist/components/p-COFw_fcj.js.map +0 -1
- package/dist/components/p-CvHrCyuz.js +0 -2
- package/dist/components/p-CvHrCyuz.js.map +0 -1
- /package/dist/components/{p-DzVYGJJv.js.map → p-BSRIF4m8.js.map} +0 -0
- /package/dist/components/{p-FitB53eM.js.map → p-BZlhBJZL.js.map} +0 -0
- /package/dist/components/{p-BmqnrfTf.js.map → p-Bo6uW_8T.js.map} +0 -0
- /package/dist/components/{p-BIaHDBfP.js.map → p-Bq8svcPs.js.map} +0 -0
- /package/dist/components/{p-DAFR4U9P.js.map → p-BqbdABo3.js.map} +0 -0
- /package/dist/components/{p-nVv71P3f.js.map → p-CEXchU5N.js.map} +0 -0
- /package/dist/components/{p-DXbryJHz.js.map → p-CYMKmJ2s.js.map} +0 -0
- /package/dist/components/{p-CL0tECXf.js.map → p-CZjjDhUl.js.map} +0 -0
- /package/dist/components/{p-CilwchJH.js.map → p-CglHiyY2.js.map} +0 -0
- /package/dist/components/{p-9M0ak2q_.js.map → p-DLaN9BPq.js.map} +0 -0
- /package/dist/components/{p-CrYJnDev.js.map → p-DiS5BgLA.js.map} +0 -0
- /package/dist/components/{p-DiyO47xX.js.map → p-PXdvBMXB.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as r,H as s,c as a,h as d,a as c,t as e}from"./index.js";import{d as t}from"./p-DzPtYdXy.js";import{d as o}from"./p-
|
|
1
|
+
import{p as r,H as s,c as a,h as d,a as c,t as e}from"./index.js";import{d as t}from"./p-DzPtYdXy.js";import{d as o}from"./p-kslioYhf.js";import{d as i}from"./p-Cea7rROU.js";import{d as n}from"./p-0XTyQNRG.js";import{d as h}from"./p-Cd1JnnVK.js";import{d as l}from"./p-9X_p0bHr.js";const m=()=>`.ds-control--lg.sc-ds-card-chart,.ds-control--lg.sc-ds-card-chart-h,.ds-control--md.sc-ds-card-chart-h,.ds-control--md.sc-ds-card-chart,.ds-control--sm.sc-ds-card-chart-h,.ds-control--sm.sc-ds-card-chart,.ds-control--xs.sc-ds-card-chart-h,.ds-control--xs.sc-ds-card-chart{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-card-chart-h,.ds-control--lg.sc-ds-card-chart{--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-card-chart-h,.ds-control--md.sc-ds-card-chart{--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-card-chart-h,.ds-control--sm.sc-ds-card-chart{--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-card-chart-h,.ds-control--xs.sc-ds-card-chart{--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-header.sc-ds-card-chart{display:flex;align-items:center;box-sizing:border-box;min-width:0;min-block-size:var(--dimension-size-600);padding:var(--dimension-space-100);gap:var(--dimension-space-100)}.ds-chrome-header--wrapping.sc-ds-card-chart{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-card-chart{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-card-chart,.ds-chrome-header__trailing.sc-ds-card-chart{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-card-chart{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-card-chart{display:flex;flex:1 1 0;min-width:0;padding:var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box}.ds-chrome-header__copy--wrapping.sc-ds-card-chart{align-items:baseline;flex-wrap:wrap;column-gap:var(--dimension-space-100);row-gap:var(--dimension-space-050)}.ds-chrome-header__copy--stacked.sc-ds-card-chart{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-card-chart,.ds-chrome-header__description.sc-ds-card-chart{width:auto;min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025));box-sizing:border-box}.ds-chrome-header__heading.sc-ds-card-chart{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-card-chart .ds-chrome-header__description.sc-ds-card-chart{flex:1 1 var(--dimension-card-width-xs)}@media (forced-colors: active){.sc-ds-card-chart:root,.sc-ds-card-chart-h,.ds-forced-colors-scope.sc-ds-card-chart{--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-card-chart-h{position:relative;display:flex;flex-direction:column;box-sizing:border-box;width:var(--_card-chart-width);min-height:var(--_card-chart-min-height);max-width:100%;overflow:visible;border:none;border-radius:var(--dimension-radius-125);background-color:var(--color-background-primary);box-shadow:var(--effect-shadow-elevated-sm)}.sc-ds-card-chart-h::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--effect-highlight-elevated-sm);pointer-events:none}.card-chart__header.sc-ds-card-chart{flex-shrink:0;border-bottom:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.card-chart__copy.sc-ds-card-chart{align-items:center}ds-text.card-chart__title.sc-ds-card-chart{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-chart__actions.sc-ds-card-chart{flex-shrink:0}.card-chart__actions.sc-ds-card-chart:empty{display:none}.card-chart__body.sc-ds-card-chart,.card-chart__layout.sc-ds-card-chart{display:flex;flex:1 1 auto;flex-direction:column;box-sizing:border-box;min-height:0}.card-chart__body.sc-ds-card-chart{border-radius:0 0 var(--dimension-radius-125) var(--dimension-radius-125);background-color:var(--color-background-primary)}.card-chart__layout.sc-ds-card-chart{height:100%;gap:var(--dimension-space-200)}.card-chart__chart.sc-ds-card-chart{display:grid;flex:1 1 auto;align-items:center;box-sizing:border-box;min-height:0;padding:var(--dimension-space-200) var(--dimension-space-200) 0 var(--dimension-space-200)}.card-chart__chart.sc-ds-card-chart>*.sc-ds-card-chart{width:100%;min-width:0;max-width:100%}.card-chart__chart.sc-ds-card-chart>ds-chart.sc-ds-card-chart{--ds-chart-container-height:100%}.card-chart__legend.sc-ds-card-chart{flex:0 0 auto;box-sizing:border-box;padding:0 var(--dimension-space-100) var(--dimension-space-100) var(--dimension-space-100)}@media (forced-colors: active){.sc-ds-card-chart-h{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.sc-ds-card-chart-h::after{box-shadow:none}}`;const p={sm:"var(--dimension-card-width-sm)",md:"var(--dimension-card-width-md)",lg:"var(--dimension-card-width-lg)"};const g={sm:"var(--dimension-card-height-sm)",md:"var(--dimension-card-height-md)",lg:"var(--dimension-card-height-lg)"};const b=r(class r extends s{constructor(r){super();if(r!==false){this.__registerHost()}this.dsFilterClick=a(this,"dsFilterClick",7);this.variant="custom";this.cardWidth="md";this.showFilter=false;this.filterLabel="Filter";this.hasChartSlot=false;this.hasLegendSlot=false;this.handleFilterClick=()=>{this.dsFilterClick.emit()}}componentWillRender(){this.hasChartSlot=!!this.el.querySelector('[slot="chart"]');this.hasLegendSlot=!!this.el.querySelector('[slot="legend"]')}componentDidRender(){const r=this.el.querySelector('ds-chart-legend[slot="legend"]');if(this.variant==="chart"&&r){r.setAttribute("highlight-on-hover","false");if("highlightOnHover"in r)r.highlightOnHover=false}}render(){const r=this.variant!=="custom"||this.hasChartSlot;return d(c,{key:"82ad125163529a6a066d2fc3226a61706024ea2c",class:{"card-chart":true,[`card-chart--${this.variant}`]:true},style:{"--_card-chart-width":p[this.cardWidth],"--_card-chart-min-height":g[this.cardWidth]}},d("header",{key:"da2d76e66ad994e369f923aaafe6efe943d0da8a",class:"card-chart__header ds-chrome-header"},d("div",{key:"5f8552c5dbfe60793c756607538a519e7dcc3cda",class:"card-chart__copy ds-chrome-header__copy ds-control--md"},d("ds-text",{key:"754cbb10c74df2761a8c20c2f00606ab86351b5b",class:"card-chart__title ds-chrome-header__heading",variant:"text-title-small",emphasis:true,color:"primary",as:"h2"},this.heading)),d("div",{key:"63b805deed7db697d0abdb521ea34446064c4372",class:"card-chart__actions ds-chrome-header__trailing"},this.showFilter?d("ds-button-unfilled",{variant:"icon",type:"button",icon:"Filters","aria-label":this.filterLabel,onDsClick:this.handleFilterClick}):null,d("slot",{key:"d8b9eff64f01125acdb2735cd302e50ebc76b02b",name:"actions"}))),d("div",{key:"4ef0c8941371eae64ac52768888f3a95dbcb30a0",class:"card-chart__body"},r?d("div",{class:"card-chart__layout"},this.hasChartSlot?d("div",{class:{"card-chart__chart":true}},d("slot",{name:"chart"})):null,this.hasLegendSlot?d("div",{class:"card-chart__legend"},d("slot",{name:"legend"})):null,d("slot",null)):d("slot",null)))}get el(){return this}static get style(){return m()}},[262,"ds-card-chart",{heading:[1],variant:[1],cardWidth:[1,"card-width"],showFilter:[4,"show-filter"],filterLabel:[1,"filter-label"],hasChartSlot:[32],hasLegendSlot:[32]}]);function f(){if(typeof customElements==="undefined"){return}const r=["ds-card-chart","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];r.forEach((r=>{switch(r){case"ds-card-chart":if(!customElements.get(e(r))){customElements.define(e(r),b)}break;case"ds-badge":if(!customElements.get(e(r))){t()}break;case"ds-button-unfilled":if(!customElements.get(e(r))){o()}break;case"ds-icon":if(!customElements.get(e(r))){i()}break;case"ds-loader":if(!customElements.get(e(r))){n()}break;case"ds-text":if(!customElements.get(e(r))){h()}break;case"ds-tooltip":if(!customElements.get(e(r))){l()}break}}))}f();const v=b;const _=f;export{v as DsCardChart,_ as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-card-chart.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as s,H as e,c as d,h as t,a as i,t as n}from"./index.js";import{d as r}from"./p-DzPtYdXy.js";import{d as o}from"./p-
|
|
1
|
+
import{p as s,H as e,c as d,h as t,a as i,t as n}from"./index.js";import{d as r}from"./p-DzPtYdXy.js";import{d as o}from"./p-BR1ayqMU.js";import{d as a}from"./p-kslioYhf.js";import{d as c}from"./p-Cea7rROU.js";import{d as l}from"./p-0XTyQNRG.js";import{d as g}from"./p-Cd1JnnVK.js";import{d as h}from"./p-9X_p0bHr.js";const m=()=>`.ds-control--lg.sc-ds-card-setting,.ds-control--lg.sc-ds-card-setting-h,.ds-control--md.sc-ds-card-setting-h,.ds-control--md.sc-ds-card-setting,.ds-control--sm.sc-ds-card-setting-h,.ds-control--sm.sc-ds-card-setting,.ds-control--xs.sc-ds-card-setting-h,.ds-control--xs.sc-ds-card-setting{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-card-setting-h,.ds-control--lg.sc-ds-card-setting{--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-card-setting-h,.ds-control--md.sc-ds-card-setting{--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-card-setting-h,.ds-control--sm.sc-ds-card-setting{--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-card-setting-h,.ds-control--xs.sc-ds-card-setting{--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-header.sc-ds-card-setting{display:flex;align-items:center;box-sizing:border-box;min-width:0;min-block-size:var(--dimension-size-600);padding:var(--dimension-space-100);gap:var(--dimension-space-100)}.ds-chrome-header--wrapping.sc-ds-card-setting{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-card-setting{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-card-setting,.ds-chrome-header__trailing.sc-ds-card-setting{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-card-setting{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-card-setting{display:flex;flex:1 1 0;min-width:0;padding:var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box}.ds-chrome-header__copy--wrapping.sc-ds-card-setting{align-items:baseline;flex-wrap:wrap;column-gap:var(--dimension-space-100);row-gap:var(--dimension-space-050)}.ds-chrome-header__copy--stacked.sc-ds-card-setting{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-card-setting,.ds-chrome-header__description.sc-ds-card-setting{width:auto;min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025));box-sizing:border-box}.ds-chrome-header__heading.sc-ds-card-setting{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-card-setting .ds-chrome-header__description.sc-ds-card-setting{flex:1 1 var(--dimension-card-width-xs)}@media (forced-colors: active){.sc-ds-card-setting:root,.sc-ds-card-setting-h,.ds-forced-colors-scope.sc-ds-card-setting{--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-card-setting-h{position:relative;display:flex;flex-direction:column;box-sizing:border-box;width:var(--_card-setting-width);min-height:var(--_card-setting-min-height);max-width:100%;overflow:hidden;border:none;border-radius:var(--dimension-radius-125);background-color:var(--color-background-primary);box-shadow:var(--effect-shadow-elevated-sm)}.sc-ds-card-setting-h::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--effect-highlight-elevated-sm);pointer-events:none}.card-setting--editing.sc-ds-card-setting-h{background-color:var(--color-background-bold-brand);box-shadow:0 0 0 var(--dimension-stroke-width-025) var(--color-border-bold-brand)}.card-setting--editing.sc-ds-card-setting-h::after{box-shadow:none}.card-setting__header.sc-ds-card-setting{flex:0 0 auto;border-bottom:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.card-setting--editing.sc-ds-card-setting-h .card-setting__header.sc-ds-card-setting{border-bottom-color:transparent}.card-setting__copy.sc-ds-card-setting{align-items:center}ds-text.card-setting__title.sc-ds-card-setting{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.card-setting__actions.sc-ds-card-setting{flex-shrink:0}.card-setting__body.sc-ds-card-setting{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;box-sizing:border-box;background-color:var(--color-background-primary);border-radius:0 0 var(--dimension-radius-125) var(--dimension-radius-125)}.card-setting--editing.sc-ds-card-setting-h .card-setting__body.sc-ds-card-setting{border-radius:var(--dimension-radius-125)}@media (forced-colors: active){.sc-ds-card-setting-h{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.sc-ds-card-setting-h::after{box-shadow:none}}`;const b={sm:"var(--dimension-card-width-sm)",md:"var(--dimension-card-width-md)",lg:"var(--dimension-card-width-lg)"};const p={sm:"var(--dimension-card-height-sm)",md:"var(--dimension-card-height-md)",lg:"var(--dimension-card-height-lg)"};const f="var(--color-foreground-faint-brand)";const v=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsAction=d(this,"dsAction",7);this.cardWidth="md";this.editing=false;this.editLabel="Edit";this.cancelLabel="Cancel";this.saveLabel="Save"}emitAction(s,e){this.dsAction.emit({action:s,originalEvent:e})}render(){const s=this.editing;return t(i,{key:"a688541841664f1a00c09e1da030b154be044833",class:{"card-setting":true,"card-setting--editing":s},style:{"--_card-setting-width":b[this.cardWidth],"--_card-setting-min-height":p[this.cardWidth]}},t("header",{key:"6565dc6cd085fbf0add734cf3b122c563a3a6de0",class:"card-setting__header ds-chrome-header"},t("div",{key:"f969c9d53e0a66746e9f7ab3e11286ae1f2680f6",class:"card-setting__copy ds-chrome-header__copy ds-control--md"},t("ds-text",{key:"7ecb79dd0bb82415f36c175870b1ee0e5a552113",class:"card-setting__title ds-chrome-header__heading",variant:"text-title-small",emphasis:true,color:s?f:"primary",as:"h2"},this.heading)),t("div",{key:"916ded30521bf3d20b06233464c05ef969466061",class:"card-setting__actions ds-chrome-header__trailing"},!s?t("ds-button-unfilled",{variant:"icon",type:"button",icon:"Pencil","aria-label":this.editLabel,onDsClick:s=>this.emitAction("edit",s.detail)}):[t("ds-button-unfilled",{key:"cancel",variant:"icon",type:"button",icon:"Cross",background:"bold","aria-label":this.cancelLabel,onDsClick:s=>this.emitAction("cancel",s.detail)}),t("ds-button-filled",{key:"save",variant:"icon",type:"button",icon:"Check",intent:"brand",contrast:"faint","aria-label":this.saveLabel,onDsClick:s=>this.emitAction("save",s.detail)})])),t("div",{key:"b8b86d5312a34910c7daa35d542474241dfff2d2",class:"card-setting__body"},t("slot",{key:"b40ef97b364f1fe38a8a5009da2d3b3ee10c74bd"})))}static get style(){return m()}},[262,"ds-card-setting",{heading:[1],cardWidth:[1,"card-width"],editing:[4],editLabel:[1,"edit-label"],cancelLabel:[1,"cancel-label"],saveLabel:[1,"save-label"]}]);function u(){if(typeof customElements==="undefined"){return}const s=["ds-card-setting","ds-badge","ds-button-filled","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-card-setting":if(!customElements.get(n(s))){customElements.define(n(s),v)}break;case"ds-badge":if(!customElements.get(n(s))){r()}break;case"ds-button-filled":if(!customElements.get(n(s))){o()}break;case"ds-button-unfilled":if(!customElements.get(n(s))){a()}break;case"ds-icon":if(!customElements.get(n(s))){c()}break;case"ds-loader":if(!customElements.get(n(s))){l()}break;case"ds-text":if(!customElements.get(n(s))){g()}break;case"ds-tooltip":if(!customElements.get(n(s))){h()}break}}))}u();const _=v;const x=u;export{_ as DsCardSetting,x as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-card-setting.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as o,d as s}from"./p-
|
|
1
|
+
import{C as o,d as s}from"./p-PXdvBMXB.js";const t=o;const p=s;export{t as DsCodeBlock,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-code-block.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{F as o,d as s}from"./p-
|
|
1
|
+
import{F as o,d as s}from"./p-DLaN9BPq.js";const t=o;const a=s;export{t as DsFilterMenu,a as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-filter-menu.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{I as o,d as s}from"./p-
|
|
1
|
+
import{I as o,d as s}from"./p-CEXchU5N.js";const t=o;const c=s;export{t as DsInput,c as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-input.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{M as o,d as s}from"./p-
|
|
1
|
+
import{M as o,d as s}from"./p-CglHiyY2.js";const t=o;const p=s;export{t as DsMarkdown,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-markdown.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as s,H as e,c as t,h as i,a,t as o}from"./index.js";import{C as n}from"./p-BnhGV__o.js";import{d}from"./p-DzPtYdXy.js";import{d as l}from"./p-
|
|
1
|
+
import{p as s,H as e,c as t,h as i,a,t as o}from"./index.js";import{C as n}from"./p-BnhGV__o.js";import{d}from"./p-DzPtYdXy.js";import{d as l}from"./p-kslioYhf.js";import{d as c}from"./p-Cea7rROU.js";import{d as r}from"./p-0XTyQNRG.js";import{d as p}from"./p-Cd1JnnVK.js";import{d as h}from"./p-9X_p0bHr.js";const m=()=>`.sc-ds-message-actions-h{display:inline-flex;box-sizing:border-box}.message-actions.sc-ds-message-actions{display:inline-flex;align-items:center;gap:var(--dimension-space-050)}`;const f=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsCopyResult=t(this,"dsCopyResult",7);this.dsFeedbackChange=t(this,"dsFeedbackChange",7);this.feedbackEnabled=false;this.copied=false;this.copyFeedback=new n((s=>{this.copied=s}));this.copy=async()=>{const s=await this.copyFeedback.copy(this.copyText??"");if(s===undefined)return;this.dsCopyResult.emit({status:s?"success":"error"})}}connectedCallback(){this.copyFeedback.connect()}handleCopyTextChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}changeFeedback(s,e){this.dsFeedbackChange.emit(e?s:undefined)}render(){const s=this.copied?"Copied":"Copy message";return i(a,{key:"3e8bc9b94aa84a9e5a7f6cd4f2be134896d9b2db"},i("div",{key:"b303b01863a8fe1462d3fd0603e6da629c1ce17e",class:"message-actions",role:"group","aria-label":"Message actions"},this.copyText?i("ds-tooltip",{label:s,side:"top",size:"sm"},i("ds-button-unfilled",{variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":s,hasBorder:false,onDsClick:this.copy})):null,this.feedbackEnabled?i("ds-tooltip",{label:"Good response",side:"top",size:"sm"},i("ds-button-unfilled",{variant:"icon",icon:this.feedback==="positive"?"ThumbsUpFilled":"ThumbsUp",size:"xs","aria-label":"Good response",hasBorder:false,activeFill:false,pressed:this.feedback==="positive",onDsChange:s=>this.changeFeedback("positive",s.detail)})):null,this.feedbackEnabled?i("ds-tooltip",{label:"Bad response",side:"top",size:"sm"},i("ds-button-unfilled",{variant:"icon",icon:this.feedback==="negative"?"ThumbsDownFilled":"ThumbsDown",size:"xs","aria-label":"Bad response",hasBorder:false,activeFill:false,pressed:this.feedback==="negative",onDsChange:s=>this.changeFeedback("negative",s.detail)})):null))}static get watchers(){return{copyText:[{handleCopyTextChange:0}]}}static get style(){return m()}},[2,"ds-message-actions",{copyText:[1,"copy-text"],feedbackEnabled:[4,"feedback-enabled"],feedback:[1],copied:[32]},undefined,{copyText:[{handleCopyTextChange:0}]}]);function b(){if(typeof customElements==="undefined"){return}const s=["ds-message-actions","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-message-actions":if(!customElements.get(o(s))){customElements.define(o(s),f)}break;case"ds-badge":if(!customElements.get(o(s))){d()}break;case"ds-button-unfilled":if(!customElements.get(o(s))){l()}break;case"ds-icon":if(!customElements.get(o(s))){c()}break;case"ds-loader":if(!customElements.get(o(s))){r()}break;case"ds-text":if(!customElements.get(o(s))){p()}break;case"ds-tooltip":if(!customElements.get(o(s))){h()}break}}))}b();const u=f;const g=b;export{u as DsMessageActions,g as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-message-actions.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as s,c as o,h as r,a,t}from"./index.js";import{d as c}from"./p-DzPtYdXy.js";import{d as i}from"./p-
|
|
1
|
+
import{p as e,H as s,c as o,h as r,a,t}from"./index.js";import{d as c}from"./p-DzPtYdXy.js";import{d as i}from"./p-BR1ayqMU.js";import{d}from"./p-kslioYhf.js";import{d as m}from"./p-Cea7rROU.js";import{d as n}from"./p-0XTyQNRG.js";import{d as l}from"./p-Cd1JnnVK.js";import{d as p}from"./p-9X_p0bHr.js";const g=()=>`@media (forced-colors: active){.sc-ds-message-composer:root,.sc-ds-message-composer-h,.ds-forced-colors-scope.sc-ds-message-composer{--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-message-composer-h{display:block;width:100%;box-sizing:border-box;-webkit-user-select:none;user-select:none}.message-composer.sc-ds-message-composer{display:flex;flex-direction:column;gap:var(--dimension-space-050);width:100%;margin:0}.message-composer__attachments.sc-ds-message-composer:empty,.message-composer__tools.sc-ds-message-composer:empty,.message-composer__error-actions.sc-ds-message-composer:empty{display:none}.message-composer__error-support.sc-ds-message-composer,.message-composer__error-message.sc-ds-message-composer,.message-composer__error-actions.sc-ds-message-composer{display:flex;align-items:center}.message-composer__error-support.sc-ds-message-composer{justify-content:space-between;flex-wrap:wrap;gap:var(--dimension-space-075) var(--dimension-space-100);min-width:0;padding:var(--dimension-space-075) var(--dimension-space-100);background:var(--color-background-faint-negative)}.message-composer__error-message.sc-ds-message-composer{flex:1 1 var(--dimension-panel-width-xs);gap:var(--dimension-space-050);min-width:0;color:var(--color-foreground-bold-negative)}.message-composer__error-actions.sc-ds-message-composer{flex:0 1 auto;flex-wrap:wrap;gap:var(--dimension-space-050)}.message-composer__stack.sc-ds-message-composer{min-width:0}.message-composer--error.sc-ds-message-composer .message-composer__stack.sc-ds-message-composer{overflow:hidden;border:var(--dimension-stroke-width-012) solid var(--color-border-bold-negative);border-radius:var(--dimension-radius-125);background:var(--color-background-primary);box-shadow:var(--effect-elevation-elevated-md)}.message-composer__field.sc-ds-message-composer{display:flex;flex-direction:column;gap:var(--dimension-space-050);padding:var(--dimension-space-100);border-radius:var(--dimension-radius-125);background:var(--color-background-primary);box-shadow:var(--effect-elevation-elevated-md);overflow:hidden}.message-composer.sc-ds-message-composer:not(.message-composer--error) .message-composer__field.sc-ds-message-composer:focus-within{box-shadow:var(--effect-elevation-elevated-md), inset 0 0 0 var(--dimension-stroke-width-018) var(--color-border-bold-brand)}.message-composer--error.sc-ds-message-composer .message-composer__field.sc-ds-message-composer{border-radius:0;box-shadow:none}textarea.sc-ds-message-composer{field-sizing:content;width:100%;min-height:calc(var(--typography-lineheight-md) * 2 + var(--dimension-space-150));max-height:calc(var(--typography-lineheight-md) * 6 + var(--dimension-space-150));padding:var(--dimension-space-075);border:none;outline:none;resize:none;overflow-y:auto;box-sizing:border-box;background:transparent;color:var(--color-foreground-primary);font-family:var(--typography-font-family-ui);font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half);-webkit-user-select:text;user-select:text}textarea.sc-ds-message-composer::placeholder{color:var(--color-foreground-secondary)}textarea.sc-ds-message-composer:focus::placeholder{color:var(--color-foreground-quaternary)}textarea.sc-ds-message-composer:focus,textarea.sc-ds-message-composer:focus-visible{outline:none}.message-composer__tools.sc-ds-message-composer{display:flex;align-items:center;gap:var(--dimension-space-050);min-height:var(--dimension-size-400)}.message-composer__controls.sc-ds-message-composer{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-050);width:100%;min-width:0}.message-composer__actions.sc-ds-message-composer{display:flex;align-items:center;gap:var(--dimension-space-100);flex:0 0 auto;margin-inline-start:auto}@media (forced-colors: active){.message-composer__field.sc-ds-message-composer{border:var(--dimension-stroke-width-012) solid var(--ds-forced-color-control-boundary);box-shadow:none}.message-composer--error.sc-ds-message-composer .message-composer__field.sc-ds-message-composer{border:0}.message-composer--error.sc-ds-message-composer .message-composer__stack.sc-ds-message-composer{border:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-content);box-shadow:none}.message-composer__error-support.sc-ds-message-composer{border-block-end:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);background:var(--ds-forced-color-surface)}}`;let f=0;const h=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsInput=o(this,"dsInput",7);this.dsSubmit=o(this,"dsSubmit",7);this.dsStop=o(this,"dsStop",7);this.value="";this.placeholder="Write a message";this.label="Message";this.status="ready";this.isInactive=false;this.submitIntent="brand";this.errorId=`ds-message-composer-error-${++f}`;this.handleInput=e=>{this.value=e.target.value;this.dsInput.emit(this.value)};this.handleKeyDown=e=>{if(e.key!=="Enter"||e.shiftKey||e.isComposing)return;e.preventDefault();this.submit()};this.handleAction=()=>{if(this.streaming)this.dsStop.emit();else this.submit()}}async setFocus(){this.textarea?.focus()}get streaming(){return this.status==="submitted"||this.status==="streaming"}submit(){const e=this.value.trim();if(!e||this.isInactive||this.streaming)return;this.dsSubmit.emit({text:e})}render(){const e=this.status==="error";const s=this.errorMessage||"Message could not be sent.";const o=!this.streaming&&(this.isInactive||!this.value.trim());return r(a,{key:"c8f686e7957530d5e16e688de664eed65a1a0a4c"},r("form",{key:"369c4af0c6ede17ff4ea7a2852f1101fe5af271a",class:{"message-composer":true,"message-composer--error":e},"aria-busy":this.streaming?"true":undefined,onSubmit:e=>{e.preventDefault();this.submit()}},r("div",{key:"b1645148e470ebc8ef4834dbb1fda927fb40e189",class:"message-composer__attachments"},r("slot",{key:"3a03e51afe17e91b617e1db176584e2ff10d8e03",name:"attachments"})),r("div",{key:"5cec1c578a6f4fc43c80921a586c5d983f95de55",class:"message-composer__stack"},e?r("div",{class:"message-composer__error-support"},r("div",{id:this.errorId,class:"message-composer__error-message",role:"alert"},r("ds-icon",{name:"ErrorTriangle",size:"xs",color:"inherit"}),r("ds-text",{variant:"text-body-small",color:"negative"},s)),r("div",{class:"message-composer__error-actions"},r("slot",{name:"error-actions"}))):null,r("div",{key:"b7a7b4427113d264d16bf4bcf3f60c467f807f4c",class:"message-composer__field"},r("textarea",{key:"5bde005904de9423ecf858a54b3311a9b336fa96",ref:e=>{this.textarea=e},value:this.value,placeholder:this.placeholder,"aria-label":this.label,"aria-invalid":e?"true":undefined,"aria-describedby":e?this.errorId:undefined,disabled:this.isInactive,onInput:this.handleInput,onKeyDown:this.handleKeyDown}),r("div",{key:"6b30f473dd925ab2b0348e357e4ede7848b0074f",class:"message-composer__controls"},r("div",{key:"60cbb015ce3e8529e542e533bf5037c80b8c42d4",class:"message-composer__tools"},r("slot",{key:"6412025530ad8ac9715bcbb87027453a2004a87e",name:"tools"})),r("div",{key:"5b40e8a0ef2784d96f1c1d9577af3d5bd198a3f9",class:"message-composer__actions"},r("slot",{key:"db9da3518c49e6ec87f45c16cd736efad856f192",name:"actions"}),o?r("ds-tooltip",{label:"Send message",side:"top",size:"sm"},r("ds-button-unfilled",{class:"message-composer__action",variant:"icon",icon:"ArrowUp",size:"md","aria-label":"Send message",hasBorder:true,isInactive:true,onDsClick:this.handleAction})):r("ds-tooltip",{label:this.streaming?"Stop response":"Send message",side:"top",size:"sm"},r("ds-button-filled",{class:"message-composer__action",variant:"icon",icon:this.streaming?"SquareFilled":"ArrowUp",intent:this.streaming?"brand":this.submitIntent,contrast:"bold",size:"md","aria-label":this.streaming?"Stop response":"Send message",onDsClick:this.handleAction}))))))))}get el(){return this}static get style(){return g()}},[262,"ds-message-composer",{value:[1025],placeholder:[1],label:[1],status:[1],errorMessage:[1,"error-message"],isInactive:[4,"is-inactive"],submitIntent:[1,"submit-intent"],setFocus:[64]}]);function b(){if(typeof customElements==="undefined"){return}const e=["ds-message-composer","ds-badge","ds-button-filled","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-message-composer":if(!customElements.get(t(e))){customElements.define(t(e),h)}break;case"ds-badge":if(!customElements.get(t(e))){c()}break;case"ds-button-filled":if(!customElements.get(t(e))){i()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){d()}break;case"ds-icon":if(!customElements.get(t(e))){m()}break;case"ds-loader":if(!customElements.get(t(e))){n()}break;case"ds-text":if(!customElements.get(t(e))){l()}break;case"ds-tooltip":if(!customElements.get(t(e))){p()}break}}))}b();const u=h;const v=b;export{u as DsMessageComposer,v as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-message-composer.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as s,c as t,h as r,a,t as o}from"./index.js";import{S as i}from"./p-Ck1hgD6g.js";import{r as l}from"./p-CochmPyg.js";import{d}from"./p-DzPtYdXy.js";import{d as n}from"./p-7MWaWl8w.js";import{d as c}from"./p-Cea7rROU.js";import{d as h}from"./p-0XTyQNRG.js";import{d as f}from"./p-Cd1JnnVK.js";import{d as g}from"./p-9X_p0bHr.js";const m=()=>`@property --ds-scroll-edge-fade-top{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-bottom{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-left{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-right{syntax:'<length-percentage>';inherits:false;initial-value:0px}@keyframes ds-scroll-edge-fade-reveal-top{from{--ds-scroll-edge-fade-top:0px}to{--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top)}}@keyframes ds-scroll-edge-fade-reveal-bottom{from{--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom)}to{--ds-scroll-edge-fade-bottom:0px}}@keyframes ds-scroll-edge-fade-reveal-left{from{--ds-scroll-edge-fade-left:0px}to{--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left)}}@keyframes ds-scroll-edge-fade-reveal-right{from{--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right)}to{--ds-scroll-edge-fade-right:0px}}.scroll-edge-fade.sc-ds-message-scroller{--ds-scroll-edge-fade-size:var(--dimension-size-600);--ds-scroll-edge-fade-reveal-distance:var(--dimension-size-800);--ds-scroll-edge-fade-target-top:0px;--ds-scroll-edge-fade-target-bottom:0px;--ds-scroll-edge-fade-target-left:0px;--ds-scroll-edge-fade-target-right:0px;--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top);--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom);--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left);--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right);--ds-scroll-edge-fade-block-mask:linear-gradient( to bottom, transparent 0, #000 var(--ds-scroll-edge-fade-top), #000 calc(100% - var(--ds-scroll-edge-fade-bottom)), transparent 100% );--ds-scroll-edge-fade-inline-mask:linear-gradient( to right, transparent 0, #000 var(--ds-scroll-edge-fade-left), #000 calc(100% - var(--ds-scroll-edge-fade-right)), transparent 100% );-webkit-mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--top.sc-ds-message-scroller{--ds-scroll-edge-fade-target-top:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--bottom.sc-ds-message-scroller{--ds-scroll-edge-fade-target-bottom:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--left.sc-ds-message-scroller{--ds-scroll-edge-fade-target-left:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--right.sc-ds-message-scroller{--ds-scroll-edge-fade-target-right:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--top-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-top:0px}.scroll-edge-fade--bottom-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-bottom:0px}.scroll-edge-fade--left-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-left:0px}.scroll-edge-fade--right-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-right:0px}@supports (animation-timeline: scroll()){.scroll-edge-fade--scroll-aware.sc-ds-message-scroller{animation-name:ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom, ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;animation-duration:1ms;animation-timing-function:ease-in-out;animation-fill-mode:both;animation-timeline:scroll(self y), scroll(self y), scroll(self x), scroll(self x);animation-range:0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%, 0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%}@media (prefers-reduced-motion: reduce){.scroll-edge-fade--scroll-aware.sc-ds-message-scroller{animation:none}}}.scroll-edge-fade--at-end.sc-ds-message-scroller,.scroll-edge-fade--hidden.sc-ds-message-scroller{-webkit-mask-image:none;mask-image:none}.scroll-edge-fade--block-window.sc-ds-message-scroller{--ds-scroll-edge-fade-window-start:100%;--ds-scroll-edge-fade-window-end:100%;-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}`;const v=()=>`.ds-control-elevation.sc-ds-message-scroller-h,.ds-control-elevation.sc-ds-message-scroller{position:relative;overflow:visible;box-shadow:var(--ds-control-elevation-shadow, none)}.ds-control-elevation.sc-ds-message-scroller-h::after,.ds-control-elevation.sc-ds-message-scroller::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--ds-control-elevation-highlight, none);pointer-events:none}.ds-control-elevation--sm.sc-ds-message-scroller-h,.ds-control-elevation--sm.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-sm);--ds-control-elevation-highlight:var(--effect-highlight-elevated-sm)}.ds-control-elevation--md.sc-ds-message-scroller-h,.ds-control-elevation--md.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-md);--ds-control-elevation-highlight:var(--effect-highlight-elevated-md)}.ds-control-elevation--floating.sc-ds-message-scroller-h,.ds-control-elevation--floating.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-floating);--ds-control-elevation-highlight:var(--effect-highlight-elevated-floating)}.ds-control-elevation--press-scale.sc-ds-message-scroller{--ds-control-press-active-scale:var(--dimension-scale-default);transition:scale var(--effect-motion-short-2)}.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-message-scroller{scale:var(--dimension-scale-subtle)}@media (prefers-reduced-motion: reduce){.ds-control-elevation--press-scale.sc-ds-message-scroller,.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-message-scroller{scale:none;transition:none}}.sc-ds-message-scroller-h{--ds-message-scroller-anchor-offset:var(--dimension-space-800);display:block;width:100%;height:100%;min-height:0;box-sizing:border-box}.message-scroller.sc-ds-message-scroller{position:relative;width:100%;height:100%;min-height:0}.message-scroller__viewport.sc-ds-message-scroller{width:100%;height:100%;min-height:0;overflow:auto;overflow-anchor:none;overscroll-behavior:contain;box-sizing:border-box}.message-scroller__viewport.sc-ds-message-scroller:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.message-scroller__content.sc-ds-message-scroller{display:flex;flex-direction:column;gap:var(--dimension-space-300);width:100%;max-width:var(--ds-message-scroller-content-max-width, var(--dimension-panel-width-2xl));min-height:100%;margin-inline:auto;padding-block-start:var(--dimension-space-200);padding-inline:var(--dimension-space-200);padding-block-end:max( calc(var(--dimension-space-200) + var(--ds-scroll-overlay-block-size, 0px)), var(--ds-message-scroller-turn-clearance, 0px) );box-sizing:border-box}.message-scroller__overlay.sc-ds-message-scroller{position:absolute;right:0;bottom:0;left:0;z-index:var(--dimension-z-index-floating)}.message-scroller__overlay-stack.sc-ds-message-scroller{display:grid;width:100%}.message-scroller__interaction.sc-ds-message-scroller,.message-scroller__overlay-content.sc-ds-message-scroller{min-width:0}.message-scroller__control.sc-ds-message-scroller{position:absolute;bottom:calc(var(--ds-scroll-overlay-content-block-size, 0px) + var(--dimension-space-200));left:50%;z-index:var(--dimension-z-index-floating);display:flex;align-items:center;justify-content:center;border-radius:var(--dimension-radius-half);background:var(--color-background-transparent);transform:translateX(-50%);-webkit-backdrop-filter:blur(var(--effect-blur-sm));backdrop-filter:blur(var(--effect-blur-sm))}`;const u=24;const p=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsReachStart=t(this,"dsReachStart",7);this.busy=false;this.autoFollow=true;this.defaultPosition="last-anchor";this.messagesLabel="Messages";this.showScrollToLatest=false;this.following=true;this.followReleased=false;this.releasePendingAtLiveEdge=false;this.atStart=false;this.programmatic=false;this.transcriptChildren=[];this.knownTranscriptElements=new Set;this.knownTurnAnchors=new Set;this.turnClearance=0;this.prependReconciliation=0;this.handleTranscriptChange=()=>{const e=this.getTranscriptChildren();const s=this.transcriptChildren;const t=this.knownTranscriptElements.size>0;const r=new Set(this.knownTranscriptElements);const a=[...e].reverse().find(((s,t)=>{if(!s.matches("ds-message[scroll-anchor]")||this.knownTurnAnchors.has(s)){return false}const r=e.length-t-1;return e.slice(r+1).every((e=>!this.knownTranscriptElements.has(e)))}));e.forEach((e=>{this.knownTranscriptElements.add(e);if(e.matches("ds-message[scroll-anchor]")){this.knownTurnAnchors.add(e)}}));if(!s.length){this.transcriptChildren=e;if(a&&t){requestAnimationFrame((()=>this.positionNewTurn(a)))}return}const o=e.findIndex((e=>r.has(e)));const i=e.filter((e=>!r.has(e)));const l=e.length>s.length&&s.every(((t,r)=>e[e.length-s.length+r]===t))||!a&&i.length>0&&o>0&&i.every((s=>e.indexOf(s)<o));this.transcriptChildren=e;if(l){if(this.viewport){const e=this.activeTurnAnchor?.isConnected?this.activeTurnAnchor:s[0];const t=this.activeTurnAnchor?.isConnected?this.activeTurnAnchorViewportTop:this.firstChildViewportTop;if(e&&t!==undefined){this.reconcilePrependPosition(e,t);this.schedulePrependReconciliation(e,t,i)}}this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();this.scrollOverlayController?.sync();return}if(a){requestAnimationFrame((()=>this.positionNewTurn(a)))}};this.handleTranscriptSlotChange=()=>this.handleTranscriptChange();this.handleScroll=()=>{if(!this.viewport)return;this.scrollOverlayController?.sync();this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();if(this.programmatic)return;const e=this.isAtLiveEdge();if(this.releasePendingAtLiveEdge&&e){this.following=false;this.followReleased=true;this.showScrollToLatest=false;return}this.releasePendingAtLiveEdge=false;this.following=e;this.followReleased=!this.following;this.showScrollToLatest=!this.following;const s=this.viewport.scrollTop<=u;if(s&&!this.atStart)this.dsReachStart.emit();this.atStart=s};this.releaseFollow=()=>{this.prependReconciliation+=1;this.releasePendingAtLiveEdge=this.isAtLiveEdge();this.following=false;this.followReleased=true;this.showScrollToLatest=!this.releasePendingAtLiveEdge};this.handleSelectionChange=()=>{const e=document.getSelection();if(e&&!e.isCollapsed&&e.anchorNode&&this.el.contains(e.anchorNode)){this.releaseFollow()}}}componentDidLoad(){this.transcriptChildren=this.getTranscriptChildren();this.transcriptChildren.forEach((e=>{this.knownTranscriptElements.add(e);if(e.matches("ds-message[scroll-anchor]")){this.knownTurnAnchors.add(e)}}));this.rememberFirstChildTop();this.connectObservers();requestAnimationFrame((()=>this.applyDefaultPosition()));document.addEventListener("selectionchange",this.handleSelectionChange)}disconnectedCallback(){this.prependReconciliation+=1;this.scrollOverlayController?.disconnect();this.mutationObserver?.disconnect();if(this.programmaticTimer)clearTimeout(this.programmaticTimer);document.removeEventListener("selectionchange",this.handleSelectionChange)}async scrollToMessage(e){const s=Array.from(this.el.querySelectorAll("ds-message")).find((s=>s.messageId===e||s.getAttribute("message-id")===e));if(!s)return false;this.releasePendingAtLiveEdge=false;this.following=false;this.followReleased=true;this.showScrollToLatest=true;s.scrollIntoView({block:"start",behavior:this.motionBehavior()});return true}async scrollToStart(){this.releasePendingAtLiveEdge=false;this.scrollTo(0);this.following=false;this.followReleased=true;this.showScrollToLatest=Boolean(this.viewport&&this.viewport.scrollHeight>this.viewport.clientHeight)}async scrollToEnd(){this.releasePendingAtLiveEdge=false;this.following=true;this.followReleased=false;this.showScrollToLatest=false;this.scrollTo(this.viewport?.scrollHeight??0)}motionBehavior(){return matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"}scrollTo(e){if(!this.viewport)return;this.programmatic=true;const s=this.motionBehavior();this.viewport.scrollTo({top:e,behavior:s});if(this.programmaticTimer)clearTimeout(this.programmaticTimer);this.programmaticTimer=setTimeout((()=>{this.programmatic=false;this.programmaticTimer=undefined;if(this.following){this.viewport.scrollTop=e;this.showScrollToLatest=false}}),s==="smooth"?600:0)}connectObservers(){if(!this.viewport||!this.content||!this.overlay)return;this.scrollOverlayController=new i({host:this.el,viewport:this.viewport,content:this.content,overlay:this.overlay,overlayContentSelector:".message-scroller__overlay-stack",onGeometryChange:()=>this.handleContentGrowth()});this.scrollOverlayController.connect();this.mutationObserver=new MutationObserver((()=>{this.handleTranscriptChange();this.handleContentGrowth()}));this.mutationObserver.observe(this.el,{childList:true,subtree:true,characterData:true})}handleContentGrowth(){if(!this.viewport)return;this.syncTurnClearance();const e=this.viewport.scrollHeight;if(this.autoFollow&&this.following&&!this.followReleased){this.viewport.scrollTop=e}if(this.releasePendingAtLiveEdge&&!this.isAtLiveEdge()){this.releasePendingAtLiveEdge=false}this.showScrollToLatest=!this.following&&!this.isAtLiveEdge();this.scrollOverlayController?.sync()}rememberFirstChildTop(){if(!this.viewport)return;const e=this.getTranscriptChildren()[0];this.firstChildViewportTop=e?e.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top:undefined}getTranscriptChildren(){const e=this.transcriptSlot?.assignedElements()??[];const t=e.filter((e=>e instanceof s&&(e.matches("ds-message")||e.matches("ds-agent-response"))));const r=Array.from(this.el.querySelectorAll("ds-message, ds-agent-response")).filter((e=>{if(e.closest(".message-scroller__interaction, .message-scroller__overlay-content")){return false}if(e.matches("ds-agent-response"))return true;return!e.closest("ds-agent-response")}));return r.length>t.length?r:t}reconcilePrependPosition(e,s){if(!this.viewport||!e.isConnected)return;const t=e.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top;this.viewport.scrollTop+=t-s}schedulePrependReconciliation(e,s,t){const r=++this.prependReconciliation;const a=t.flatMap((e=>[e,...Array.from(e.querySelectorAll("*"))])).map((e=>{const s=e.componentOnReady;return s?s.call(e).catch((()=>undefined)):null})).filter((e=>Boolean(e)));void Promise.all(a).then((()=>{requestAnimationFrame((()=>{if(r!==this.prependReconciliation)return;this.reconcilePrependPosition(e,s);requestAnimationFrame((()=>{if(r!==this.prependReconciliation)return;this.reconcilePrependPosition(e,s);this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();this.scrollOverlayController?.sync()}))}))}))}positionNewTurn(e){if(!this.viewport)return;this.activeTurnAnchor=e;this.syncTurnClearance();requestAnimationFrame((()=>this.finishPositionNewTurn(e)))}finishPositionNewTurn(e){if(!this.viewport||!e.isConnected)return;const s=this.viewport.getBoundingClientRect();const t=e.getBoundingClientRect().top-s.top+this.viewport.scrollTop;const r=getComputedStyle(this.el).getPropertyValue("--ds-message-scroller-anchor-offset").trim();const a=l(r,"var(--dimension-space-800)");const o=Math.max(this.viewport.scrollHeight-this.viewport.clientHeight,0);const i=Math.min(Math.max(t-a,0),o);this.following=o-i<=u;this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.programmatic=true;this.viewport.scrollTop=i;requestAnimationFrame((()=>{this.programmatic=false;this.following=this.isAtLiveEdge();this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop()}));this.scrollOverlayController?.sync()}rememberActiveTurnAnchorTop(){if(!this.viewport||!this.activeTurnAnchor?.isConnected)return;this.activeTurnAnchorViewportTop=this.activeTurnAnchor.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top}syncTurnClearance(){if(!this.viewport||!this.activeTurnAnchor?.isConnected)return;const e=this.getTranscriptChildren();const s=e[e.length-1];if(!s)return;const t=this.activeTurnAnchor.getBoundingClientRect();const r=s.getBoundingClientRect();const a=getComputedStyle(this.el).getPropertyValue("--ds-message-scroller-anchor-offset").trim();const o=l(a,"var(--dimension-space-800)");const i=Math.max(r.bottom-t.top,0);const d=Math.max(Math.ceil(this.viewport.clientHeight-o-i),0);if(d===this.turnClearance)return;this.turnClearance=d;this.el.style.setProperty("--ds-message-scroller-turn-clearance",`${d}px`)}applyDefaultPosition(){if(!this.viewport)return;this.releasePendingAtLiveEdge=false;if(this.defaultPosition==="start"){this.viewport.scrollTop=0;this.following=false;this.followReleased=true;this.showScrollToLatest=this.viewport.scrollHeight>this.viewport.clientHeight;this.scrollOverlayController?.sync();return}if(this.defaultPosition==="last-anchor"){const e=this.el.querySelectorAll("ds-message[scroll-anchor]");const s=e.item(e.length-1);if(s){s.scrollIntoView({block:"start"});this.following=this.isAtLiveEdge();this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.scrollOverlayController?.sync();return}}this.viewport.scrollTop=this.viewport.scrollHeight;this.following=true;this.followReleased=false;this.showScrollToLatest=false;this.scrollOverlayController?.sync()}isAtLiveEdge(){if(!this.viewport)return true;return this.viewport.scrollHeight-this.viewport.clientHeight-this.viewport.scrollTop<=u}render(){return r(a,{key:"71da536fc68d85c8da755dc93aa64237bdcad84a"},r("div",{key:"853aec9a2a75daeba5c5f00d46aab74a93427695",class:"message-scroller"},r("div",{key:"88d602eb2e971e759bad18859d3c5e3f451e4b65",class:"message-scroller__viewport",ref:e=>{this.viewport=e},role:"region","aria-label":this.messagesLabel,tabIndex:0,onScroll:this.handleScroll,onPointerDown:e=>{if(e.pointerType==="touch")this.releaseFollow()},onWheel:this.releaseFollow,onKeyDown:e=>{if(["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)){this.releaseFollow()}}},r("div",{key:"7bf678765cc2d4e75b73da72f0927299ba14b693",class:"message-scroller__content scroll-edge-fade--block-window",ref:e=>{this.content=e},role:"log","aria-live":"polite","aria-relevant":"additions","aria-busy":this.busy?"true":undefined},r("slot",{key:"7b03d33a12ff4756266ffc47c8ab06833ebe86c2",ref:e=>{this.transcriptSlot=e},onSlotchange:this.handleTranscriptSlotChange}))),r("div",{key:"775e76853d4e772f0503c9efbf9e3ae57da4ca72",class:"message-scroller__overlay",ref:e=>{this.overlay=e}},r("div",{key:"86aeb161772d76a8d089f12187526b46d0130fd9",class:"message-scroller__overlay-stack"},r("div",{key:"462488e753d65b8ab9002312fdb099ef5a9144ae",class:"message-scroller__interaction"},r("slot",{key:"edb3b0415198a996570d8e5a9b7ec8f34a96cf06",name:"interaction"})),r("div",{key:"d9749cbaa783d27005aa35530b6f6c3399396e0b",class:"message-scroller__overlay-content"},r("slot",{key:"305417f51585ee3c682ec7fbf5379fcbb32c51f7",name:"overlay"})))),this.showScrollToLatest?r("div",{class:"message-scroller__control ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale"},r("ds-tooltip",{label:"Scroll to latest message",side:"top",size:"sm"},r("ds-button-unfilled",{variant:"icon",icon:"ChevronDown",size:"md",rounded:true,hasBorder:false,"aria-label":"Scroll to latest message",onDsClick:()=>void this.scrollToEnd()}))):null))}get el(){return this}static get style(){return m()+v()}},[262,"ds-message-scroller",{busy:[4],autoFollow:[4,"auto-follow"],defaultPosition:[1,"default-position"],messagesLabel:[1,"messages-label"],showScrollToLatest:[32],scrollToMessage:[64],scrollToStart:[64],scrollToEnd:[64]}]);function b(){if(typeof customElements==="undefined"){return}const e=["ds-message-scroller","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-message-scroller":if(!customElements.get(o(e))){customElements.define(o(e),p)}break;case"ds-badge":if(!customElements.get(o(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(o(e))){n()}break;case"ds-icon":if(!customElements.get(o(e))){c()}break;case"ds-loader":if(!customElements.get(o(e))){h()}break;case"ds-text":if(!customElements.get(o(e))){f()}break;case"ds-tooltip":if(!customElements.get(o(e))){g()}break}}))}b();const k=p;const w=b;export{k as DsMessageScroller,w as defineCustomElement};
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a as r,t as a}from"./index.js";import{S as o}from"./p-Ck1hgD6g.js";import{r as l}from"./p-CochmPyg.js";import{d as n}from"./p-DzPtYdXy.js";import{d}from"./p-kslioYhf.js";import{d as c}from"./p-Cea7rROU.js";import{d as h}from"./p-0XTyQNRG.js";import{d as f}from"./p-Cd1JnnVK.js";import{d as g}from"./p-9X_p0bHr.js";function m(e,s){if(!e.length)return false;if(!s.length)return true;const t=new Set(e);return!s.some((e=>t.has(e)))}function u(e,s){const t=new Set(s);for(const s of e){if(!t.has(s))e.delete(s)}}const v=()=>`@property --ds-scroll-edge-fade-top{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-bottom{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-left{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-right{syntax:'<length-percentage>';inherits:false;initial-value:0px}@keyframes ds-scroll-edge-fade-reveal-top{from{--ds-scroll-edge-fade-top:0px}to{--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top)}}@keyframes ds-scroll-edge-fade-reveal-bottom{from{--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom)}to{--ds-scroll-edge-fade-bottom:0px}}@keyframes ds-scroll-edge-fade-reveal-left{from{--ds-scroll-edge-fade-left:0px}to{--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left)}}@keyframes ds-scroll-edge-fade-reveal-right{from{--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right)}to{--ds-scroll-edge-fade-right:0px}}.scroll-edge-fade.sc-ds-message-scroller{--ds-scroll-edge-fade-size:var(--dimension-size-600);--ds-scroll-edge-fade-reveal-distance:var(--dimension-size-800);--ds-scroll-edge-fade-target-top:0px;--ds-scroll-edge-fade-target-bottom:0px;--ds-scroll-edge-fade-target-left:0px;--ds-scroll-edge-fade-target-right:0px;--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top);--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom);--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left);--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right);--ds-scroll-edge-fade-block-mask:linear-gradient( to bottom, transparent 0, #000 var(--ds-scroll-edge-fade-top), #000 calc(100% - var(--ds-scroll-edge-fade-bottom)), transparent 100% );--ds-scroll-edge-fade-inline-mask:linear-gradient( to right, transparent 0, #000 var(--ds-scroll-edge-fade-left), #000 calc(100% - var(--ds-scroll-edge-fade-right)), transparent 100% );-webkit-mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--top.sc-ds-message-scroller{--ds-scroll-edge-fade-target-top:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--bottom.sc-ds-message-scroller{--ds-scroll-edge-fade-target-bottom:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--left.sc-ds-message-scroller{--ds-scroll-edge-fade-target-left:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--right.sc-ds-message-scroller{--ds-scroll-edge-fade-target-right:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--top-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-top:0px}.scroll-edge-fade--bottom-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-bottom:0px}.scroll-edge-fade--left-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-left:0px}.scroll-edge-fade--right-at-edge.sc-ds-message-scroller{--ds-scroll-edge-fade-target-right:0px}@supports (animation-timeline: scroll()){.scroll-edge-fade--scroll-aware.sc-ds-message-scroller{animation-name:ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom, ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;animation-duration:1ms;animation-timing-function:ease-in-out;animation-fill-mode:both;animation-timeline:scroll(self y), scroll(self y), scroll(self x), scroll(self x);animation-range:0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%, 0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%}@media (prefers-reduced-motion: reduce){.scroll-edge-fade--scroll-aware.sc-ds-message-scroller{animation:none}}}.scroll-edge-fade--at-end.sc-ds-message-scroller,.scroll-edge-fade--hidden.sc-ds-message-scroller{-webkit-mask-image:none;mask-image:none}.scroll-edge-fade--block-window.sc-ds-message-scroller{--ds-scroll-edge-fade-window-start:100%;--ds-scroll-edge-fade-window-end:100%;-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}`;const p=()=>`.ds-control-elevation.sc-ds-message-scroller-h,.ds-control-elevation.sc-ds-message-scroller{position:relative;overflow:visible;box-shadow:var(--ds-control-elevation-shadow, none)}.ds-control-elevation.sc-ds-message-scroller-h::after,.ds-control-elevation.sc-ds-message-scroller::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--ds-control-elevation-highlight, none);pointer-events:none}.ds-control-elevation--sm.sc-ds-message-scroller-h,.ds-control-elevation--sm.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-sm);--ds-control-elevation-highlight:var(--effect-highlight-elevated-sm)}.ds-control-elevation--md.sc-ds-message-scroller-h,.ds-control-elevation--md.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-md);--ds-control-elevation-highlight:var(--effect-highlight-elevated-md)}.ds-control-elevation--floating.sc-ds-message-scroller-h,.ds-control-elevation--floating.sc-ds-message-scroller{--ds-control-elevation-shadow:var(--effect-shadow-elevated-floating);--ds-control-elevation-highlight:var(--effect-highlight-elevated-floating)}.ds-control-elevation--press-scale.sc-ds-message-scroller{--ds-control-press-active-scale:var(--dimension-scale-default);transition:scale var(--effect-motion-short-2)}.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-message-scroller{scale:var(--dimension-scale-subtle)}@media (prefers-reduced-motion: reduce){.ds-control-elevation--press-scale.sc-ds-message-scroller,.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-message-scroller{scale:none;transition:none}}.sc-ds-message-scroller-h{--ds-message-scroller-anchor-offset:var(--dimension-space-800);display:block;width:100%;height:100%;min-height:0;box-sizing:border-box}.message-scroller.sc-ds-message-scroller{position:relative;width:100%;height:100%;min-height:0}.message-scroller__viewport.sc-ds-message-scroller{width:100%;height:100%;min-height:0;overflow:auto;overflow-anchor:none;overscroll-behavior:contain;box-sizing:border-box}.message-scroller__viewport.sc-ds-message-scroller:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.message-scroller__content.sc-ds-message-scroller{display:flex;flex-direction:column;gap:var(--dimension-space-300);width:100%;max-width:var(--ds-message-scroller-content-max-width, var(--dimension-panel-width-2xl));min-height:100%;margin-inline:auto;padding-block-start:var(--dimension-space-200);padding-inline:var(--dimension-space-200);padding-block-end:max( calc(var(--dimension-space-200) + var(--ds-scroll-overlay-block-size, 0px)), var(--ds-message-scroller-turn-clearance, 0px) );box-sizing:border-box}.message-scroller__overlay.sc-ds-message-scroller{position:absolute;right:0;bottom:0;left:0;z-index:var(--dimension-z-index-floating)}.message-scroller__overlay-stack.sc-ds-message-scroller{display:grid;width:100%}.message-scroller__interaction.sc-ds-message-scroller,.message-scroller__overlay-content.sc-ds-message-scroller{min-width:0}.message-scroller__control.sc-ds-message-scroller{position:absolute;bottom:calc(var(--ds-scroll-overlay-content-block-size, 0px) + var(--dimension-space-200));left:50%;z-index:var(--dimension-z-index-floating);display:flex;align-items:center;justify-content:center;border-radius:var(--dimension-radius-half);background:var(--color-background-transparent);transform:translateX(-50%);-webkit-backdrop-filter:blur(var(--effect-blur-sm));backdrop-filter:blur(var(--effect-blur-sm))}`;const b=24;const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsReachStart=t(this,"dsReachStart",7);this.busy=false;this.autoFollow=true;this.defaultPosition="last-anchor";this.messagesLabel="Messages";this.showScrollToLatest=false;this.following=true;this.followReleased=false;this.releasePendingAtLiveEdge=false;this.atStart=false;this.programmatic=false;this.transcriptChildren=[];this.knownTranscriptElements=new Set;this.knownTurnAnchors=new Set;this.turnClearance=0;this.prependReconciliation=0;this.turnPositionGeneration=0;this.defaultPositionGeneration=0;this.transcriptResetPending=false;this.hasLoaded=false;this.handleTranscriptChange=()=>{const e=this.getTranscriptChildren();const s=this.transcriptChildren;const t=m(s,e)||this.transcriptResetPending&&e.length>0;if(t){this.invalidateTranscriptWork();this.resetTranscriptTracking();this.resetTranscriptPositionState();this.transcriptChildren=e;this.trackTranscript(e);this.transcriptResetPending=e.length===0;this.rememberFirstChildTop();this.scrollOverlayController?.sync();if(e.length)this.scheduleDefaultPosition();return}const i=this.knownTranscriptElements.size>0;const r=new Set(this.knownTranscriptElements);const a=[...e].reverse().find(((s,t)=>{if(!s.matches("ds-message[scroll-anchor]")||this.knownTurnAnchors.has(s)){return false}const i=e.length-t-1;return e.slice(i+1).every((e=>!this.knownTranscriptElements.has(e)))}));this.trackTranscript(e);this.pruneTranscriptTracking(e);if(!s.length){this.transcriptChildren=e;if(a&&i){this.scheduleNewTurnPosition(a)}return}const o=e.findIndex((e=>r.has(e)));const l=e.filter((e=>!r.has(e)));const n=e.length>s.length&&s.every(((t,i)=>e[e.length-s.length+i]===t))||!a&&l.length>0&&o>0&&l.every((s=>e.indexOf(s)<o));this.transcriptChildren=e;if(n){if(this.viewport){const e=this.activeTurnAnchor?.isConnected?this.activeTurnAnchor:s[0];const t=this.activeTurnAnchor?.isConnected?this.activeTurnAnchorViewportTop:this.firstChildViewportTop;if(e&&t!==undefined){this.reconcilePrependPosition(e,t);this.schedulePrependReconciliation(e,t,l)}}this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();this.scrollOverlayController?.sync();return}if(a){this.scheduleNewTurnPosition(a)}};this.handleTranscriptSlotChange=()=>this.handleTranscriptChange();this.handleScroll=()=>{if(!this.viewport)return;this.scrollOverlayController?.sync();this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();if(this.programmatic)return;const e=this.isAtLiveEdge();if(this.releasePendingAtLiveEdge&&e){this.following=false;this.followReleased=true;this.showScrollToLatest=false;return}this.releasePendingAtLiveEdge=false;this.following=e;this.followReleased=!this.following;this.showScrollToLatest=!this.following;const s=this.viewport.scrollTop<=b;if(s&&!this.atStart)this.dsReachStart.emit();this.atStart=s};this.releaseFollow=()=>{this.prependReconciliation+=1;this.releasePendingAtLiveEdge=this.isAtLiveEdge();this.following=false;this.followReleased=true;this.showScrollToLatest=!this.releasePendingAtLiveEdge};this.handleSelectionChange=()=>{const e=document.getSelection();if(e&&!e.isCollapsed&&e.anchorNode&&this.el.contains(e.anchorNode)){this.releaseFollow()}}}componentDidLoad(){this.hasLoaded=true;this.seedTranscriptBaseline();this.connectObservers();this.scheduleDefaultPosition();document.removeEventListener("selectionchange",this.handleSelectionChange);document.addEventListener("selectionchange",this.handleSelectionChange)}connectedCallback(){if(!this.hasLoaded)return;this.seedTranscriptBaseline();this.connectObservers();this.scheduleDefaultPosition();document.removeEventListener("selectionchange",this.handleSelectionChange);document.addEventListener("selectionchange",this.handleSelectionChange)}disconnectedCallback(){this.invalidateTranscriptWork();this.scrollOverlayController?.disconnect();this.scrollOverlayController=undefined;this.mutationObserver?.disconnect();this.mutationObserver=undefined;this.resetTranscriptTracking();this.resetTranscriptPositionState();this.transcriptResetPending=false;document.removeEventListener("selectionchange",this.handleSelectionChange)}async scrollToMessage(e){const s=Array.from(this.el.querySelectorAll("ds-message")).find((s=>s.messageId===e||s.getAttribute("message-id")===e));if(!s)return false;this.releasePendingAtLiveEdge=false;this.following=false;this.followReleased=true;this.showScrollToLatest=true;s.scrollIntoView({block:"start",behavior:this.motionBehavior()});return true}async scrollToStart(){this.releasePendingAtLiveEdge=false;this.scrollTo(0);this.following=false;this.followReleased=true;this.showScrollToLatest=Boolean(this.viewport&&this.viewport.scrollHeight>this.viewport.clientHeight)}async scrollToEnd(){this.releasePendingAtLiveEdge=false;this.following=true;this.followReleased=false;this.showScrollToLatest=false;this.scrollTo(this.viewport?.scrollHeight??0)}motionBehavior(){return matchMedia("(prefers-reduced-motion: reduce)").matches?"auto":"smooth"}scrollTo(e){if(!this.viewport)return;this.programmatic=true;const s=this.motionBehavior();this.viewport.scrollTo({top:e,behavior:s});if(this.programmaticTimer)clearTimeout(this.programmaticTimer);this.programmaticTimer=setTimeout((()=>{this.programmatic=false;this.programmaticTimer=undefined;if(this.following){this.viewport.scrollTop=e;this.showScrollToLatest=false}}),s==="smooth"?600:0)}invalidateTranscriptWork(){this.prependReconciliation+=1;this.turnPositionGeneration+=1;this.defaultPositionGeneration+=1;if(this.programmaticTimer)clearTimeout(this.programmaticTimer);this.programmaticTimer=undefined;this.programmatic=false}clearActiveTurnAnchor(){this.activeTurnAnchor=undefined;this.activeTurnAnchorViewportTop=undefined;this.turnClearance=0;this.el.style.removeProperty("--ds-message-scroller-turn-clearance")}resetTranscriptTracking(){this.transcriptChildren=[];this.knownTranscriptElements.clear();this.knownTurnAnchors.clear();this.firstChildViewportTop=undefined;this.clearActiveTurnAnchor()}resetTranscriptPositionState(){this.following=true;this.followReleased=false;this.releasePendingAtLiveEdge=false;this.atStart=false;this.showScrollToLatest=false}trackTranscript(e){e.forEach((e=>{this.knownTranscriptElements.add(e);if(e.matches("ds-message[scroll-anchor]")){this.knownTurnAnchors.add(e)}}))}seedTranscriptBaseline(){this.resetTranscriptTracking();this.transcriptChildren=this.getTranscriptChildren();this.trackTranscript(this.transcriptChildren);this.transcriptResetPending=false;this.rememberFirstChildTop()}pruneTranscriptTracking(e){u(this.knownTranscriptElements,e);u(this.knownTurnAnchors,e);if(this.activeTurnAnchor&&!e.includes(this.activeTurnAnchor)){this.clearActiveTurnAnchor()}}scheduleDefaultPosition(){const e=++this.defaultPositionGeneration;requestAnimationFrame((()=>{if(e!==this.defaultPositionGeneration||!this.el.isConnected)return;this.applyDefaultPosition()}))}connectObservers(){if(!this.viewport||!this.content||!this.overlay)return;this.scrollOverlayController?.disconnect();this.mutationObserver?.disconnect();this.scrollOverlayController=new o({host:this.el,viewport:this.viewport,content:this.content,overlay:this.overlay,overlayContentSelector:".message-scroller__overlay-stack",onGeometryChange:()=>this.handleContentGrowth()});this.scrollOverlayController.connect();this.mutationObserver=new MutationObserver((()=>{this.handleTranscriptChange();this.handleContentGrowth()}));this.mutationObserver.observe(this.el,{childList:true,subtree:true,characterData:true})}handleContentGrowth(){if(!this.viewport)return;this.syncTurnClearance();const e=this.viewport.scrollHeight;if(this.autoFollow&&this.following&&!this.followReleased){this.viewport.scrollTop=e}if(this.releasePendingAtLiveEdge&&!this.isAtLiveEdge()){this.releasePendingAtLiveEdge=false}this.showScrollToLatest=!this.following&&!this.isAtLiveEdge();this.scrollOverlayController?.sync()}rememberFirstChildTop(){if(!this.viewport)return;const e=this.getTranscriptChildren()[0];this.firstChildViewportTop=e?e.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top:undefined}getTranscriptChildren(){const e=this.transcriptSlot?.assignedElements()??[];const t=e.filter((e=>e instanceof s&&(e.matches("ds-message")||e.matches("ds-agent-response"))));const i=Array.from(this.el.querySelectorAll("ds-message, ds-agent-response")).filter((e=>{if(e.closest(".message-scroller__interaction, .message-scroller__overlay-content")){return false}if(e.matches("ds-agent-response"))return true;return!e.closest("ds-agent-response")}));return i.length>t.length?i:t}reconcilePrependPosition(e,s){if(!this.viewport||!e.isConnected)return;const t=e.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top;this.viewport.scrollTop+=t-s}schedulePrependReconciliation(e,s,t){const i=++this.prependReconciliation;const r=t.flatMap((e=>[e,...Array.from(e.querySelectorAll("*"))])).map((e=>{const s=e.componentOnReady;return s?s.call(e).catch((()=>undefined)):null})).filter((e=>Boolean(e)));void Promise.all(r).then((()=>{requestAnimationFrame((()=>{if(i!==this.prependReconciliation)return;this.reconcilePrependPosition(e,s);requestAnimationFrame((()=>{if(i!==this.prependReconciliation)return;this.reconcilePrependPosition(e,s);this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop();this.scrollOverlayController?.sync()}))}))}))}scheduleNewTurnPosition(e){const s=++this.turnPositionGeneration;requestAnimationFrame((()=>{if(s!==this.turnPositionGeneration||!e.isConnected||!this.viewport){return}this.positionNewTurn(e,s)}))}positionNewTurn(e,s){if(s!==this.turnPositionGeneration||!this.viewport||!e.isConnected)return;this.activeTurnAnchor=e;this.syncTurnClearance();requestAnimationFrame((()=>{if(s!==this.turnPositionGeneration)return;this.finishPositionNewTurn(e,s)}))}finishPositionNewTurn(e,s){if(s!==this.turnPositionGeneration||!this.viewport||!e.isConnected){return}const t=this.viewport.getBoundingClientRect();const i=e.getBoundingClientRect().top-t.top+this.viewport.scrollTop;const r=getComputedStyle(this.el).getPropertyValue("--ds-message-scroller-anchor-offset").trim();const a=l(r,"var(--dimension-space-800)");const o=Math.max(this.viewport.scrollHeight-this.viewport.clientHeight,0);const n=Math.min(Math.max(i-a,0),o);this.following=o-n<=b;this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.programmatic=true;this.viewport.scrollTop=n;requestAnimationFrame((()=>{if(s!==this.turnPositionGeneration)return;this.programmatic=false;this.following=this.isAtLiveEdge();this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.rememberFirstChildTop();this.rememberActiveTurnAnchorTop()}));this.scrollOverlayController?.sync()}rememberActiveTurnAnchorTop(){if(!this.viewport||!this.activeTurnAnchor?.isConnected)return;this.activeTurnAnchorViewportTop=this.activeTurnAnchor.getBoundingClientRect().top-this.viewport.getBoundingClientRect().top}syncTurnClearance(){if(!this.viewport||!this.activeTurnAnchor?.isConnected)return;const e=this.getTranscriptChildren();const s=e[e.length-1];if(!s)return;const t=this.activeTurnAnchor.getBoundingClientRect();const i=s.getBoundingClientRect();const r=getComputedStyle(this.el).getPropertyValue("--ds-message-scroller-anchor-offset").trim();const a=l(r,"var(--dimension-space-800)");const o=Math.max(i.bottom-t.top,0);const n=Math.max(Math.ceil(this.viewport.clientHeight-a-o),0);if(n===this.turnClearance)return;this.turnClearance=n;this.el.style.setProperty("--ds-message-scroller-turn-clearance",`${n}px`)}applyDefaultPosition(){if(!this.viewport)return;this.releasePendingAtLiveEdge=false;if(this.defaultPosition==="start"){this.viewport.scrollTop=0;this.following=false;this.followReleased=true;this.showScrollToLatest=this.viewport.scrollHeight>this.viewport.clientHeight;this.scrollOverlayController?.sync();return}if(this.defaultPosition==="last-anchor"){const e=this.el.querySelectorAll("ds-message[scroll-anchor]");const s=e.item(e.length-1);if(s){s.scrollIntoView({block:"start"});this.following=this.isAtLiveEdge();this.followReleased=!this.following;this.showScrollToLatest=!this.following;this.scrollOverlayController?.sync();return}}this.viewport.scrollTop=this.viewport.scrollHeight;this.following=true;this.followReleased=false;this.showScrollToLatest=false;this.scrollOverlayController?.sync()}isAtLiveEdge(){if(!this.viewport)return true;return this.viewport.scrollHeight-this.viewport.clientHeight-this.viewport.scrollTop<=b}render(){return i(r,{key:"c85e8ef32cd5649953d013f4ada094c56e017b88"},i("div",{key:"a7c9e304b49eae46642d8802d13df54926dcd3c6",class:"message-scroller"},i("div",{key:"f9b1274ab6d7593b6c04bdcf6743a679b5fcd499",class:"message-scroller__viewport",ref:e=>{this.viewport=e},role:"region","aria-label":this.messagesLabel,tabIndex:0,onScroll:this.handleScroll,onPointerDown:e=>{if(e.pointerType==="touch")this.releaseFollow()},onWheel:this.releaseFollow,onKeyDown:e=>{if(["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(e.key)){this.releaseFollow()}}},i("div",{key:"99fa65ccc8ab2b6bf0a5fae9b19e64e8138d5feb",class:"message-scroller__content scroll-edge-fade--block-window",ref:e=>{this.content=e},role:"log","aria-live":"polite","aria-relevant":"additions","aria-busy":this.busy?"true":undefined},i("slot",{key:"693d55fd4e4142f02c9a649a8fbe9134be0dcc71",ref:e=>{this.transcriptSlot=e},onSlotchange:this.handleTranscriptSlotChange}))),i("div",{key:"13084f0b7ba17d1cf47803f93854bb2dd6312884",class:"message-scroller__overlay",ref:e=>{this.overlay=e}},i("div",{key:"efc85b24fe1a2b89f7ce3153be09bb828394561e",class:"message-scroller__overlay-stack"},i("div",{key:"b02192673ca21af181504f7d9bbbed06911646cb",class:"message-scroller__interaction"},i("slot",{key:"061faaf33cde926a4f423c0ca5ee3a85210d5242",name:"interaction"})),i("div",{key:"5d56cc62189655ffcef565aded881eaeff6cc28c",class:"message-scroller__overlay-content"},i("slot",{key:"17032b9cc1fff60368fc99fda8879085abb4d92b",name:"overlay"})))),this.showScrollToLatest?i("div",{class:"message-scroller__control ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale"},i("ds-tooltip",{label:"Scroll to latest message",side:"top",size:"sm"},i("ds-button-unfilled",{variant:"icon",icon:"ChevronDown",size:"md",rounded:true,hasBorder:false,"aria-label":"Scroll to latest message",onDsClick:()=>void this.scrollToEnd()}))):null))}get el(){return this}static get style(){return v()+p()}},[262,"ds-message-scroller",{busy:[4],autoFollow:[4,"auto-follow"],defaultPosition:[1,"default-position"],messagesLabel:[1,"messages-label"],showScrollToLatest:[32],scrollToMessage:[64],scrollToStart:[64],scrollToEnd:[64]}]);function w(){if(typeof customElements==="undefined"){return}const e=["ds-message-scroller","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-message-scroller":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){n()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){d()}break;case"ds-icon":if(!customElements.get(a(e))){c()}break;case"ds-loader":if(!customElements.get(a(e))){h()}break;case"ds-text":if(!customElements.get(a(e))){f()}break;case"ds-tooltip":if(!customElements.get(a(e))){g()}break}}))}w();const y=k;const x=w;export{y as DsMessageScroller,x as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-message-scroller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["scrollEdgeFadeCss","messageScrollerCss","LIVE_EDGE_THRESHOLD","MessageScroller","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","busy","autoFollow","defaultPosition","messagesLabel","showScrollToLatest","following","followReleased","releasePendingAtLiveEdge","atStart","programmatic","transcriptChildren","knownTranscriptElements","Set","knownTurnAnchors","turnClearance","prependReconciliation","handleTranscriptChange","current","getTranscriptChildren","previous","hadKnownTranscript","size","previouslyKnown","appendedAnchor","reverse","find","element","reverseIndex","matches","has","index","length","slice","every","next","forEach","add","requestAnimationFrame","positionNewTurn","firstKnownIndex","findIndex","newTranscript","filter","prepended","indexOf","viewport","preservedElement","activeTurnAnchor","isConnected","preservedTop","activeTurnAnchorViewportTop","firstChildViewportTop","undefined","reconcilePrependPosition","schedulePrependReconciliation","rememberFirstChildTop","rememberActiveTurnAnchorTop","scrollOverlayController","sync","handleTranscriptSlotChange","handleScroll","atLiveEdge","isAtLiveEdge","nextAtStart","scrollTop","dsReachStart","emit","releaseFollow","handleSelectionChange","selection","document","getSelection","isCollapsed","anchorNode","el","contains","componentDidLoad","connectObservers","applyDefaultPosition","addEventListener","disconnectedCallback","disconnect","mutationObserver","programmaticTimer","clearTimeout","removeEventListener","scrollToMessage","id","message","Array","from","querySelectorAll","item","messageId","getAttribute","scrollIntoView","block","behavior","motionBehavior","scrollToStart","scrollTo","Boolean","scrollHeight","clientHeight","scrollToEnd","matchMedia","top","setTimeout","content","overlay","ScrollOverlayController","host","overlayContentSelector","onGeometryChange","handleContentGrowth","connect","MutationObserver","observe","childList","subtree","characterData","syncTurnClearance","nextHeight","first","getBoundingClientRect","assigned","transcriptSlot","assignedElements","assignedTranscript","queriedTranscript","closest","viewportTop","nextTop","generation","pending","flatMap","map","componentOnReady","call","catch","promise","Promise","all","then","anchor","finishPositionNewTurn","viewportRect","anchorTop","customOffset","getComputedStyle","getPropertyValue","trim","offset","resolveCssLengthPx","max","Math","target","min","children","last","anchorRect","lastRect","contentAfterAnchor","bottom","clearance","ceil","style","setProperty","anchors","render","h","Host","key","class","ref","role","tabIndex","onScroll","onPointerDown","event","pointerType","onWheel","onKeyDown","includes","onSlotchange","name","label","side","variant","icon","rounded","hasBorder","onDsClick"],"sources":["src/wc/utils/scroll-edge-fade.css?tag=ds-message-scroller&encapsulation=scoped","src/wc/components/MessageScroller/MessageScroller.css?tag=ds-message-scroller&encapsulation=scoped","src/wc/components/MessageScroller/MessageScroller.tsx"],"sourcesContent":["/**\n * Scroll-edge alpha fade — the single edge-fade utility for overflow containers.\n * Masks scrolling content to transparent so flat surfaces, shell gradients, and\n * images show through.\n *\n * Static fades are the default (PanelNav intentionally keeps its bottom fade).\n * Add `.scroll-edge-fade--scroll-aware` to reveal/hide each configured edge from\n * the container's own scroll position without JavaScript. Browsers without CSS\n * scroll-driven animations retain the configured static fades.\n *\n * @see scroll-edge-fade.ts — `scrollEdgeFadeClassMap`, `isScrollAtEdge`, size helpers.\n */\n\n@property --ds-scroll-edge-fade-top {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-bottom {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-left {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-right {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@keyframes ds-scroll-edge-fade-reveal-top {\n from {\n --ds-scroll-edge-fade-top: 0px;\n }\n to {\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-bottom {\n from {\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n }\n to {\n --ds-scroll-edge-fade-bottom: 0px;\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-left {\n from {\n --ds-scroll-edge-fade-left: 0px;\n }\n to {\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-right {\n from {\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n }\n to {\n --ds-scroll-edge-fade-right: 0px;\n }\n}\n\n/* Mask gradients use #000 / transparent as alpha stops — not theme colors. */\n/* stylelint-disable color-no-hex */\n\n.scroll-edge-fade {\n --ds-scroll-edge-fade-size: var(--dimension-size-600);\n --ds-scroll-edge-fade-reveal-distance: var(--dimension-size-800);\n --ds-scroll-edge-fade-target-top: 0px;\n --ds-scroll-edge-fade-target-bottom: 0px;\n --ds-scroll-edge-fade-target-left: 0px;\n --ds-scroll-edge-fade-target-right: 0px;\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n --ds-scroll-edge-fade-block-mask: linear-gradient(\n to bottom,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-top),\n #000 calc(100% - var(--ds-scroll-edge-fade-bottom)),\n transparent 100%\n );\n --ds-scroll-edge-fade-inline-mask: linear-gradient(\n to right,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-left),\n #000 calc(100% - var(--ds-scroll-edge-fade-right)),\n transparent 100%\n );\n\n /* Intersecting the block and inline masks lets every edge compose correctly. */\n -webkit-mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n -webkit-mask-composite: source-in;\n mask-composite: intersect;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: 100% 100%;\n mask-size: 100% 100%;\n}\n\n.scroll-edge-fade--top {\n --ds-scroll-edge-fade-target-top: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--bottom {\n --ds-scroll-edge-fade-target-bottom: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--left {\n --ds-scroll-edge-fade-target-left: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--right {\n --ds-scroll-edge-fade-target-right: var(--ds-scroll-edge-fade-size);\n}\n\n/* Manual per-edge state remains available when scroll state already lives in JS. */\n.scroll-edge-fade--top-at-edge {\n --ds-scroll-edge-fade-target-top: 0px;\n}\n\n.scroll-edge-fade--bottom-at-edge {\n --ds-scroll-edge-fade-target-bottom: 0px;\n}\n\n.scroll-edge-fade--left-at-edge {\n --ds-scroll-edge-fade-target-left: 0px;\n}\n\n.scroll-edge-fade--right-at-edge {\n --ds-scroll-edge-fade-target-right: 0px;\n}\n\n@supports (animation-timeline: scroll()) {\n .scroll-edge-fade--scroll-aware {\n animation-name:\n ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom,\n ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;\n /* stylelint-disable-next-line declaration-property-value-disallowed-list -- scroll timelines require a nonzero sentinel duration; elapsed time is ignored. */\n animation-duration: 1ms;\n animation-timing-function: ease-in-out;\n animation-fill-mode: both;\n animation-timeline: scroll(self y), scroll(self y), scroll(self x), scroll(self x);\n animation-range:\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%,\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .scroll-edge-fade--scroll-aware {\n animation: none;\n }\n }\n}\n\n.scroll-edge-fade--at-end,\n.scroll-edge-fade--hidden {\n -webkit-mask-image: none;\n mask-image: none;\n}\n\n/**\n * Masks a long content element against a scrollport-relative block window.\n * The owner updates the start/end offsets as the scrollport moves. Keeping the\n * mask on the content instead of the overflow element leaves native scrollbars\n * outside the fade.\n */\n.scroll-edge-fade--block-window {\n --ds-scroll-edge-fade-window-start: 100%;\n --ds-scroll-edge-fade-window-end: 100%;\n\n -webkit-mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n}\n\n/* stylelint-enable color-no-hex */\n","@import '../../styles/control-elevation.css';\n\n:host {\n --ds-message-scroller-anchor-offset: var(--dimension-space-800);\n\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.message-scroller {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 0;\n}\n\n.message-scroller__viewport {\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: auto;\n overflow-anchor: none;\n overscroll-behavior: contain;\n box-sizing: border-box;\n}\n\n.message-scroller__viewport:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);\n outline-offset: calc(-1 * var(--dimension-stroke-width-025));\n}\n\n.message-scroller__content {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-300);\n width: 100%;\n max-width: var(--ds-message-scroller-content-max-width, var(--dimension-panel-width-2xl));\n min-height: 100%;\n margin-inline: auto;\n padding-block-start: var(--dimension-space-200);\n padding-inline: var(--dimension-space-200);\n padding-block-end: max(\n calc(var(--dimension-space-200) + var(--ds-scroll-overlay-block-size, 0px)),\n var(--ds-message-scroller-turn-clearance, 0px)\n );\n box-sizing: border-box;\n}\n\n.message-scroller__overlay {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: var(--dimension-z-index-floating);\n}\n\n.message-scroller__overlay-stack {\n display: grid;\n width: 100%;\n}\n\n.message-scroller__interaction,\n.message-scroller__overlay-content {\n min-width: 0;\n}\n\n.message-scroller__control {\n position: absolute;\n bottom: calc(var(--ds-scroll-overlay-content-block-size, 0px) + var(--dimension-space-200));\n left: 50%;\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n transform: translateX(-50%);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport type { MessageScrollerPosition } from '../conversation-types';\nimport { ScrollOverlayController } from '../../utils/scroll-overlay-controller';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\n\nconst LIVE_EDGE_THRESHOLD = 24;\n\n@Component({\n tag: 'ds-message-scroller',\n styleUrl: 'MessageScroller.css',\n styleUrls: ['../../utils/scroll-edge-fade.css'],\n scoped: true,\n})\nexport class MessageScroller {\n @Element() el!: HTMLElement;\n\n @Prop() busy: boolean = false;\n @Prop() autoFollow: boolean = true;\n @Prop() defaultPosition: MessageScrollerPosition = 'last-anchor';\n @Prop() messagesLabel: string = 'Messages';\n\n @Event() dsReachStart!: EventEmitter<void>;\n\n @State() private showScrollToLatest = false;\n\n private viewport?: HTMLElement;\n private content?: HTMLElement;\n private overlay?: HTMLElement;\n private transcriptSlot?: HTMLSlotElement;\n private scrollOverlayController?: ScrollOverlayController;\n private mutationObserver?: MutationObserver;\n private following = true;\n private followReleased = false;\n private releasePendingAtLiveEdge = false;\n private atStart = false;\n private programmatic = false;\n private programmaticTimer?: ReturnType<typeof setTimeout>;\n private transcriptChildren: HTMLElement[] = [];\n private knownTranscriptElements = new Set<HTMLElement>();\n private knownTurnAnchors = new Set<HTMLElement>();\n private firstChildViewportTop?: number;\n private activeTurnAnchor?: HTMLElement;\n private activeTurnAnchorViewportTop?: number;\n private turnClearance = 0;\n private prependReconciliation = 0;\n\n componentDidLoad() {\n this.transcriptChildren = this.getTranscriptChildren();\n this.transcriptChildren.forEach(element => {\n this.knownTranscriptElements.add(element);\n if (element.matches('ds-message[scroll-anchor]')) {\n this.knownTurnAnchors.add(element);\n }\n });\n this.rememberFirstChildTop();\n this.connectObservers();\n requestAnimationFrame(() => this.applyDefaultPosition());\n document.addEventListener('selectionchange', this.handleSelectionChange);\n }\n\n disconnectedCallback() {\n this.prependReconciliation += 1;\n this.scrollOverlayController?.disconnect();\n this.mutationObserver?.disconnect();\n if (this.programmaticTimer) clearTimeout(this.programmaticTimer);\n document.removeEventListener('selectionchange', this.handleSelectionChange);\n }\n\n @Method()\n async scrollToMessage(id: string): Promise<boolean> {\n const message = Array.from(\n this.el.querySelectorAll<HTMLElement & { messageId?: string }>('ds-message')\n ).find(item => item.messageId === id || item.getAttribute('message-id') === id);\n if (!message) return false;\n this.releasePendingAtLiveEdge = false;\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = true;\n message.scrollIntoView({ block: 'start', behavior: this.motionBehavior() });\n return true;\n }\n\n @Method()\n async scrollToStart() {\n this.releasePendingAtLiveEdge = false;\n this.scrollTo(0);\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = Boolean(\n this.viewport && this.viewport.scrollHeight > this.viewport.clientHeight\n );\n }\n\n @Method()\n async scrollToEnd() {\n this.releasePendingAtLiveEdge = false;\n this.following = true;\n this.followReleased = false;\n this.showScrollToLatest = false;\n this.scrollTo(this.viewport?.scrollHeight ?? 0);\n }\n\n private motionBehavior(): ScrollBehavior {\n return matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth';\n }\n\n private scrollTo(top: number) {\n if (!this.viewport) return;\n this.programmatic = true;\n const behavior = this.motionBehavior();\n this.viewport.scrollTo({ top, behavior });\n if (this.programmaticTimer) clearTimeout(this.programmaticTimer);\n this.programmaticTimer = setTimeout(\n () => {\n this.programmatic = false;\n this.programmaticTimer = undefined;\n if (this.following) {\n this.viewport!.scrollTop = top;\n this.showScrollToLatest = false;\n }\n },\n behavior === 'smooth' ? 600 : 0\n );\n }\n\n private connectObservers() {\n if (!this.viewport || !this.content || !this.overlay) return;\n this.scrollOverlayController = new ScrollOverlayController({\n host: this.el,\n viewport: this.viewport,\n content: this.content,\n overlay: this.overlay,\n overlayContentSelector: '.message-scroller__overlay-stack',\n onGeometryChange: () => this.handleContentGrowth(),\n });\n this.scrollOverlayController.connect();\n this.mutationObserver = new MutationObserver(() => {\n this.handleTranscriptChange();\n this.handleContentGrowth();\n });\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n private handleContentGrowth() {\n if (!this.viewport) return;\n this.syncTurnClearance();\n const nextHeight = this.viewport.scrollHeight;\n if (this.autoFollow && this.following && !this.followReleased) {\n this.viewport.scrollTop = nextHeight;\n }\n if (this.releasePendingAtLiveEdge && !this.isAtLiveEdge()) {\n this.releasePendingAtLiveEdge = false;\n }\n this.showScrollToLatest = !this.following && !this.isAtLiveEdge();\n this.scrollOverlayController?.sync();\n }\n\n private rememberFirstChildTop() {\n if (!this.viewport) return;\n const first = this.getTranscriptChildren()[0];\n this.firstChildViewportTop = first\n ? first.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top\n : undefined;\n }\n\n private getTranscriptChildren(): HTMLElement[] {\n const assigned = this.transcriptSlot?.assignedElements() ?? [];\n const assignedTranscript = assigned.filter(\n (element): element is HTMLElement =>\n element instanceof HTMLElement &&\n (element.matches('ds-message') || element.matches('ds-agent-response'))\n );\n const queriedTranscript = Array.from(\n this.el.querySelectorAll<HTMLElement>('ds-message, ds-agent-response')\n ).filter(element => {\n if (element.closest('.message-scroller__interaction, .message-scroller__overlay-content')) {\n return false;\n }\n if (element.matches('ds-agent-response')) return true;\n return !element.closest('ds-agent-response');\n });\n return queriedTranscript.length > assignedTranscript.length\n ? queriedTranscript\n : assignedTranscript;\n }\n\n private handleTranscriptChange = () => {\n const current = this.getTranscriptChildren();\n const previous = this.transcriptChildren;\n const hadKnownTranscript = this.knownTranscriptElements.size > 0;\n const previouslyKnown = new Set(this.knownTranscriptElements);\n const appendedAnchor = [...current].reverse().find((element, reverseIndex) => {\n if (!element.matches('ds-message[scroll-anchor]') || this.knownTurnAnchors.has(element)) {\n return false;\n }\n const index = current.length - reverseIndex - 1;\n return current.slice(index + 1).every(next => !this.knownTranscriptElements.has(next));\n });\n current.forEach(element => {\n this.knownTranscriptElements.add(element);\n if (element.matches('ds-message[scroll-anchor]')) {\n this.knownTurnAnchors.add(element);\n }\n });\n if (!previous.length) {\n this.transcriptChildren = current;\n if (appendedAnchor && hadKnownTranscript) {\n requestAnimationFrame(() => this.positionNewTurn(appendedAnchor));\n }\n return;\n }\n\n const firstKnownIndex = current.findIndex(element => previouslyKnown.has(element));\n const newTranscript = current.filter(element => !previouslyKnown.has(element));\n const prepended =\n (current.length > previous.length &&\n previous.every(\n (element, index) => current[current.length - previous.length + index] === element\n )) ||\n (!appendedAnchor &&\n newTranscript.length > 0 &&\n firstKnownIndex > 0 &&\n newTranscript.every(element => current.indexOf(element) < firstKnownIndex));\n\n this.transcriptChildren = current;\n if (prepended) {\n if (this.viewport) {\n const preservedElement = this.activeTurnAnchor?.isConnected\n ? this.activeTurnAnchor\n : previous[0];\n const preservedTop = this.activeTurnAnchor?.isConnected\n ? this.activeTurnAnchorViewportTop\n : this.firstChildViewportTop;\n if (preservedElement && preservedTop !== undefined) {\n this.reconcilePrependPosition(preservedElement, preservedTop);\n this.schedulePrependReconciliation(preservedElement, preservedTop, newTranscript);\n }\n }\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n this.scrollOverlayController?.sync();\n return;\n }\n if (appendedAnchor) {\n requestAnimationFrame(() => this.positionNewTurn(appendedAnchor));\n }\n };\n\n private reconcilePrependPosition(element: HTMLElement, viewportTop: number) {\n if (!this.viewport || !element.isConnected) return;\n const nextTop = element.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top;\n this.viewport.scrollTop += nextTop - viewportTop;\n }\n\n private schedulePrependReconciliation(\n element: HTMLElement,\n viewportTop: number,\n prepended: HTMLElement[]\n ) {\n const generation = ++this.prependReconciliation;\n // Prepended custom elements can gain height after their child-list mutation.\n // Reconcile against the original coordinate after their layouts settle.\n const pending = prepended\n .flatMap(item => [item, ...Array.from(item.querySelectorAll<HTMLElement>('*'))])\n .map(item => {\n const componentOnReady = (\n item as HTMLElement & { componentOnReady?: () => Promise<unknown> }\n ).componentOnReady;\n return componentOnReady ? componentOnReady.call(item).catch(() => undefined) : null;\n })\n .filter((promise): promise is Promise<unknown> => Boolean(promise));\n\n void Promise.all(pending).then(() => {\n requestAnimationFrame(() => {\n if (generation !== this.prependReconciliation) return;\n this.reconcilePrependPosition(element, viewportTop);\n requestAnimationFrame(() => {\n if (generation !== this.prependReconciliation) return;\n this.reconcilePrependPosition(element, viewportTop);\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n this.scrollOverlayController?.sync();\n });\n });\n });\n }\n\n private handleTranscriptSlotChange = () => this.handleTranscriptChange();\n\n private positionNewTurn(anchor: HTMLElement) {\n if (!this.viewport) return;\n this.activeTurnAnchor = anchor;\n this.syncTurnClearance();\n requestAnimationFrame(() => this.finishPositionNewTurn(anchor));\n }\n\n private finishPositionNewTurn(anchor: HTMLElement) {\n if (!this.viewport || !anchor.isConnected) return;\n const viewportRect = this.viewport.getBoundingClientRect();\n const anchorTop =\n anchor.getBoundingClientRect().top - viewportRect.top + this.viewport.scrollTop;\n const customOffset = getComputedStyle(this.el)\n .getPropertyValue('--ds-message-scroller-anchor-offset')\n .trim();\n const offset = resolveCssLengthPx(customOffset, 'var(--dimension-space-800)');\n const max = Math.max(this.viewport.scrollHeight - this.viewport.clientHeight, 0);\n const target = Math.min(Math.max(anchorTop - offset, 0), max);\n this.following = max - target <= LIVE_EDGE_THRESHOLD;\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.programmatic = true;\n this.viewport.scrollTop = target;\n requestAnimationFrame(() => {\n this.programmatic = false;\n this.following = this.isAtLiveEdge();\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n });\n this.scrollOverlayController?.sync();\n }\n\n private rememberActiveTurnAnchorTop() {\n if (!this.viewport || !this.activeTurnAnchor?.isConnected) return;\n this.activeTurnAnchorViewportTop =\n this.activeTurnAnchor.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top;\n }\n\n private syncTurnClearance() {\n if (!this.viewport || !this.activeTurnAnchor?.isConnected) return;\n const children = this.getTranscriptChildren();\n const last = children[children.length - 1];\n if (!last) return;\n const anchorRect = this.activeTurnAnchor.getBoundingClientRect();\n const lastRect = last.getBoundingClientRect();\n const customOffset = getComputedStyle(this.el)\n .getPropertyValue('--ds-message-scroller-anchor-offset')\n .trim();\n const offset = resolveCssLengthPx(customOffset, 'var(--dimension-space-800)');\n const contentAfterAnchor = Math.max(lastRect.bottom - anchorRect.top, 0);\n const clearance = Math.max(\n Math.ceil(this.viewport.clientHeight - offset - contentAfterAnchor),\n 0\n );\n if (clearance === this.turnClearance) return;\n this.turnClearance = clearance;\n this.el.style.setProperty('--ds-message-scroller-turn-clearance', `${clearance}px`);\n }\n\n private applyDefaultPosition() {\n if (!this.viewport) return;\n this.releasePendingAtLiveEdge = false;\n if (this.defaultPosition === 'start') {\n this.viewport.scrollTop = 0;\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = this.viewport.scrollHeight > this.viewport.clientHeight;\n this.scrollOverlayController?.sync();\n return;\n }\n if (this.defaultPosition === 'last-anchor') {\n const anchors = this.el.querySelectorAll<HTMLElement>('ds-message[scroll-anchor]');\n const last = anchors.item(anchors.length - 1);\n if (last) {\n last.scrollIntoView({ block: 'start' });\n this.following = this.isAtLiveEdge();\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.scrollOverlayController?.sync();\n return;\n }\n }\n this.viewport.scrollTop = this.viewport.scrollHeight;\n this.following = true;\n this.followReleased = false;\n this.showScrollToLatest = false;\n this.scrollOverlayController?.sync();\n }\n\n private isAtLiveEdge(): boolean {\n if (!this.viewport) return true;\n return (\n this.viewport.scrollHeight - this.viewport.clientHeight - this.viewport.scrollTop <=\n LIVE_EDGE_THRESHOLD\n );\n }\n\n private handleScroll = () => {\n if (!this.viewport) return;\n this.scrollOverlayController?.sync();\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n if (this.programmatic) return;\n const atLiveEdge = this.isAtLiveEdge();\n if (this.releasePendingAtLiveEdge && atLiveEdge) {\n // A scroll event queued by the previous auto-follow can arrive after\n // reader input. Keep that stale event from restoring follow mode.\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = false;\n return;\n }\n this.releasePendingAtLiveEdge = false;\n this.following = atLiveEdge;\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n const nextAtStart = this.viewport.scrollTop <= LIVE_EDGE_THRESHOLD;\n if (nextAtStart && !this.atStart) this.dsReachStart.emit();\n this.atStart = nextAtStart;\n };\n\n private releaseFollow = () => {\n this.prependReconciliation += 1;\n this.releasePendingAtLiveEdge = this.isAtLiveEdge();\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = !this.releasePendingAtLiveEdge;\n };\n\n private handleSelectionChange = () => {\n const selection = document.getSelection();\n if (\n selection &&\n !selection.isCollapsed &&\n selection.anchorNode &&\n this.el.contains(selection.anchorNode)\n ) {\n this.releaseFollow();\n }\n };\n\n render() {\n return (\n <Host>\n <div class=\"message-scroller\">\n <div\n class=\"message-scroller__viewport\"\n ref={element => {\n this.viewport = element;\n }}\n role=\"region\"\n aria-label={this.messagesLabel}\n tabIndex={0}\n onScroll={this.handleScroll}\n onPointerDown={(event: PointerEvent) => {\n if (event.pointerType === 'touch') this.releaseFollow();\n }}\n onWheel={this.releaseFollow}\n onKeyDown={(event: KeyboardEvent) => {\n if (\n ['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown', 'Home', 'End', ' '].includes(\n event.key\n )\n ) {\n this.releaseFollow();\n }\n }}\n >\n <div\n class=\"message-scroller__content scroll-edge-fade--block-window\"\n ref={element => {\n this.content = element;\n }}\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n aria-busy={this.busy ? 'true' : undefined}\n >\n <slot\n ref={element => {\n this.transcriptSlot = element;\n }}\n onSlotchange={this.handleTranscriptSlotChange}\n />\n </div>\n </div>\n <div\n class=\"message-scroller__overlay\"\n ref={element => {\n this.overlay = element;\n }}\n >\n <div class=\"message-scroller__overlay-stack\">\n <div class=\"message-scroller__interaction\">\n <slot name=\"interaction\" />\n </div>\n <div class=\"message-scroller__overlay-content\">\n <slot name=\"overlay\" />\n </div>\n </div>\n </div>\n {this.showScrollToLatest ? (\n <div class=\"message-scroller__control ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <ds-tooltip label=\"Scroll to latest message\" side=\"top\" size=\"sm\">\n <ds-button-unfilled\n variant=\"icon\"\n icon=\"ChevronDown\"\n size=\"md\"\n rounded\n hasBorder={false}\n aria-label=\"Scroll to latest message\"\n onDsClick={() => void this.scrollToEnd()}\n />\n </ds-tooltip>\n </div>\n ) : null}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"wVAAA,MAAMA,EAAoB,IAAM,mgJCAhC,MAAMC,EAAqB,IAAM,0hHCejC,MAAMC,EAAsB,G,MAQfC,EAAeC,EAAA,MAAAD,UAAAE,EAN5B,WAAAC,CAAAC,G,uFASUC,KAAAC,KAAgB,MAChBD,KAAAE,WAAsB,KACtBF,KAAAG,gBAA2C,cAC3CH,KAAAI,cAAwB,WAIfJ,KAAAK,mBAAqB,MAQ9BL,KAAAM,UAAY,KACZN,KAAAO,eAAiB,MACjBP,KAAAQ,yBAA2B,MAC3BR,KAAAS,QAAU,MACVT,KAAAU,aAAe,MAEfV,KAAAW,mBAAoC,GACpCX,KAAAY,wBAA0B,IAAIC,IAC9Bb,KAAAc,iBAAmB,IAAID,IAIvBb,KAAAe,cAAgB,EAChBf,KAAAgB,sBAAwB,EAkJxBhB,KAAAiB,uBAAyB,KAC/B,MAAMC,EAAUlB,KAAKmB,wBACrB,MAAMC,EAAWpB,KAAKW,mBACtB,MAAMU,EAAqBrB,KAAKY,wBAAwBU,KAAO,EAC/D,MAAMC,EAAkB,IAAIV,IAAIb,KAAKY,yBACrC,MAAMY,EAAiB,IAAIN,GAASO,UAAUC,MAAK,CAACC,EAASC,KAC3D,IAAKD,EAAQE,QAAQ,8BAAgC7B,KAAKc,iBAAiBgB,IAAIH,GAAU,CACvF,OAAO,K,CAET,MAAMI,EAAQb,EAAQc,OAASJ,EAAe,EAC9C,OAAOV,EAAQe,MAAMF,EAAQ,GAAGG,OAAMC,IAASnC,KAAKY,wBAAwBkB,IAAIK,IAAM,IAExFjB,EAAQkB,SAAQT,IACd3B,KAAKY,wBAAwByB,IAAIV,GACjC,GAAIA,EAAQE,QAAQ,6BAA8B,CAChD7B,KAAKc,iBAAiBuB,IAAIV,E,KAG9B,IAAKP,EAASY,OAAQ,CACpBhC,KAAKW,mBAAqBO,EAC1B,GAAIM,GAAkBH,EAAoB,CACxCiB,uBAAsB,IAAMtC,KAAKuC,gBAAgBf,I,CAEnD,M,CAGF,MAAMgB,EAAkBtB,EAAQuB,WAAUd,GAAWJ,EAAgBO,IAAIH,KACzE,MAAMe,EAAgBxB,EAAQyB,QAAOhB,IAAYJ,EAAgBO,IAAIH,KACrE,MAAMiB,EACH1B,EAAQc,OAASZ,EAASY,QACzBZ,EAASc,OACP,CAACP,EAASI,IAAUb,EAAQA,EAAQc,OAASZ,EAASY,OAASD,KAAWJ,MAE5EH,GACAkB,EAAcV,OAAS,GACvBQ,EAAkB,GAClBE,EAAcR,OAAMP,GAAWT,EAAQ2B,QAAQlB,GAAWa,IAE9DxC,KAAKW,mBAAqBO,EAC1B,GAAI0B,EAAW,CACb,GAAI5C,KAAK8C,SAAU,CACjB,MAAMC,EAAmB/C,KAAKgD,kBAAkBC,YAC5CjD,KAAKgD,iBACL5B,EAAS,GACb,MAAM8B,EAAelD,KAAKgD,kBAAkBC,YACxCjD,KAAKmD,4BACLnD,KAAKoD,sBACT,GAAIL,GAAoBG,IAAiBG,UAAW,CAClDrD,KAAKsD,yBAAyBP,EAAkBG,GAChDlD,KAAKuD,8BAA8BR,EAAkBG,EAAcR,E,EAGvE1C,KAAKwD,wBACLxD,KAAKyD,8BACLzD,KAAK0D,yBAAyBC,OAC9B,M,CAEF,GAAInC,EAAgB,CAClBc,uBAAsB,IAAMtC,KAAKuC,gBAAgBf,I,GA2C7CxB,KAAA4D,2BAA6B,IAAM5D,KAAKiB,yBAqGxCjB,KAAA6D,aAAe,KACrB,IAAK7D,KAAK8C,SAAU,OACpB9C,KAAK0D,yBAAyBC,OAC9B3D,KAAKwD,wBACLxD,KAAKyD,8BACL,GAAIzD,KAAKU,aAAc,OACvB,MAAMoD,EAAa9D,KAAK+D,eACxB,GAAI/D,KAAKQ,0BAA4BsD,EAAY,CAG/C9D,KAAKM,UAAY,MACjBN,KAAKO,eAAiB,KACtBP,KAAKK,mBAAqB,MAC1B,M,CAEFL,KAAKQ,yBAA2B,MAChCR,KAAKM,UAAYwD,EACjB9D,KAAKO,gBAAkBP,KAAKM,UAC5BN,KAAKK,oBAAsBL,KAAKM,UAChC,MAAM0D,EAAchE,KAAK8C,SAASmB,WAAavE,EAC/C,GAAIsE,IAAgBhE,KAAKS,QAAST,KAAKkE,aAAaC,OACpDnE,KAAKS,QAAUuD,CAAW,EAGpBhE,KAAAoE,cAAgB,KACtBpE,KAAKgB,uBAAyB,EAC9BhB,KAAKQ,yBAA2BR,KAAK+D,eACrC/D,KAAKM,UAAY,MACjBN,KAAKO,eAAiB,KACtBP,KAAKK,oBAAsBL,KAAKQ,wBAAwB,EAGlDR,KAAAqE,sBAAwB,KAC9B,MAAMC,EAAYC,SAASC,eAC3B,GACEF,IACCA,EAAUG,aACXH,EAAUI,YACV1E,KAAK2E,GAAGC,SAASN,EAAUI,YAC3B,CACA1E,KAAKoE,e,EAmFV,CArdC,gBAAAS,GACE7E,KAAKW,mBAAqBX,KAAKmB,wBAC/BnB,KAAKW,mBAAmByB,SAAQT,IAC9B3B,KAAKY,wBAAwByB,IAAIV,GACjC,GAAIA,EAAQE,QAAQ,6BAA8B,CAChD7B,KAAKc,iBAAiBuB,IAAIV,E,KAG9B3B,KAAKwD,wBACLxD,KAAK8E,mBACLxC,uBAAsB,IAAMtC,KAAK+E,yBACjCR,SAASS,iBAAiB,kBAAmBhF,KAAKqE,sB,CAGpD,oBAAAY,GACEjF,KAAKgB,uBAAyB,EAC9BhB,KAAK0D,yBAAyBwB,aAC9BlF,KAAKmF,kBAAkBD,aACvB,GAAIlF,KAAKoF,kBAAmBC,aAAarF,KAAKoF,mBAC9Cb,SAASe,oBAAoB,kBAAmBtF,KAAKqE,sB,CAIvD,qBAAMkB,CAAgBC,GACpB,MAAMC,EAAUC,MAAMC,KACpB3F,KAAK2E,GAAGiB,iBAAuD,eAC/DlE,MAAKmE,GAAQA,EAAKC,YAAcN,GAAMK,EAAKE,aAAa,gBAAkBP,IAC5E,IAAKC,EAAS,OAAO,MACrBzF,KAAKQ,yBAA2B,MAChCR,KAAKM,UAAY,MACjBN,KAAKO,eAAiB,KACtBP,KAAKK,mBAAqB,KAC1BoF,EAAQO,eAAe,CAAEC,MAAO,QAASC,SAAUlG,KAAKmG,mBACxD,OAAO,I,CAIT,mBAAMC,GACJpG,KAAKQ,yBAA2B,MAChCR,KAAKqG,SAAS,GACdrG,KAAKM,UAAY,MACjBN,KAAKO,eAAiB,KACtBP,KAAKK,mBAAqBiG,QACxBtG,KAAK8C,UAAY9C,KAAK8C,SAASyD,aAAevG,KAAK8C,SAAS0D,a,CAKhE,iBAAMC,GACJzG,KAAKQ,yBAA2B,MAChCR,KAAKM,UAAY,KACjBN,KAAKO,eAAiB,MACtBP,KAAKK,mBAAqB,MAC1BL,KAAKqG,SAASrG,KAAK8C,UAAUyD,cAAgB,E,CAGvC,cAAAJ,GACN,OAAOO,WAAW,oCAAoC7E,QAAU,OAAS,Q,CAGnE,QAAAwE,CAASM,GACf,IAAK3G,KAAK8C,SAAU,OACpB9C,KAAKU,aAAe,KACpB,MAAMwF,EAAWlG,KAAKmG,iBACtBnG,KAAK8C,SAASuD,SAAS,CAAEM,MAAKT,aAC9B,GAAIlG,KAAKoF,kBAAmBC,aAAarF,KAAKoF,mBAC9CpF,KAAKoF,kBAAoBwB,YACvB,KACE5G,KAAKU,aAAe,MACpBV,KAAKoF,kBAAoB/B,UACzB,GAAIrD,KAAKM,UAAW,CAClBN,KAAK8C,SAAUmB,UAAY0C,EAC3B3G,KAAKK,mBAAqB,K,IAG9B6F,IAAa,SAAW,IAAM,E,CAI1B,gBAAApB,GACN,IAAK9E,KAAK8C,WAAa9C,KAAK6G,UAAY7G,KAAK8G,QAAS,OACtD9G,KAAK0D,wBAA0B,IAAIqD,EAAwB,CACzDC,KAAMhH,KAAK2E,GACX7B,SAAU9C,KAAK8C,SACf+D,QAAS7G,KAAK6G,QACdC,QAAS9G,KAAK8G,QACdG,uBAAwB,mCACxBC,iBAAkB,IAAMlH,KAAKmH,wBAE/BnH,KAAK0D,wBAAwB0D,UAC7BpH,KAAKmF,iBAAmB,IAAIkC,kBAAiB,KAC3CrH,KAAKiB,yBACLjB,KAAKmH,qBAAqB,IAE5BnH,KAAKmF,iBAAiBmC,QAAQtH,KAAK2E,GAAI,CACrC4C,UAAW,KACXC,QAAS,KACTC,cAAe,M,CAIX,mBAAAN,GACN,IAAKnH,KAAK8C,SAAU,OACpB9C,KAAK0H,oBACL,MAAMC,EAAa3H,KAAK8C,SAASyD,aACjC,GAAIvG,KAAKE,YAAcF,KAAKM,YAAcN,KAAKO,eAAgB,CAC7DP,KAAK8C,SAASmB,UAAY0D,C,CAE5B,GAAI3H,KAAKQ,2BAA6BR,KAAK+D,eAAgB,CACzD/D,KAAKQ,yBAA2B,K,CAElCR,KAAKK,oBAAsBL,KAAKM,YAAcN,KAAK+D,eACnD/D,KAAK0D,yBAAyBC,M,CAGxB,qBAAAH,GACN,IAAKxD,KAAK8C,SAAU,OACpB,MAAM8E,EAAQ5H,KAAKmB,wBAAwB,GAC3CnB,KAAKoD,sBAAwBwE,EACzBA,EAAMC,wBAAwBlB,IAAM3G,KAAK8C,SAAS+E,wBAAwBlB,IAC1EtD,S,CAGE,qBAAAlC,GACN,MAAM2G,EAAW9H,KAAK+H,gBAAgBC,oBAAsB,GAC5D,MAAMC,EAAqBH,EAASnF,QACjChB,GACCA,aAAmB9B,IAClB8B,EAAQE,QAAQ,eAAiBF,EAAQE,QAAQ,wBAEtD,MAAMqG,EAAoBxC,MAAMC,KAC9B3F,KAAK2E,GAAGiB,iBAA8B,kCACtCjD,QAAOhB,IACP,GAAIA,EAAQwG,QAAQ,sEAAuE,CACzF,OAAO,K,CAET,GAAIxG,EAAQE,QAAQ,qBAAsB,OAAO,KACjD,OAAQF,EAAQwG,QAAQ,oBAAoB,IAE9C,OAAOD,EAAkBlG,OAASiG,EAAmBjG,OACjDkG,EACAD,C,CAiEE,wBAAA3E,CAAyB3B,EAAsByG,GACrD,IAAKpI,KAAK8C,WAAanB,EAAQsB,YAAa,OAC5C,MAAMoF,EAAU1G,EAAQkG,wBAAwBlB,IAAM3G,KAAK8C,SAAS+E,wBAAwBlB,IAC5F3G,KAAK8C,SAASmB,WAAaoE,EAAUD,C,CAG/B,6BAAA7E,CACN5B,EACAyG,EACAxF,GAEA,MAAM0F,IAAetI,KAAKgB,sBAG1B,MAAMuH,EAAU3F,EACb4F,SAAQ3C,GAAQ,CAACA,KAASH,MAAMC,KAAKE,EAAKD,iBAA8B,SACxE6C,KAAI5C,IACH,MAAM6C,EACJ7C,EACA6C,iBACF,OAAOA,EAAmBA,EAAiBC,KAAK9C,GAAM+C,OAAM,IAAMvF,YAAa,IAAI,IAEpFV,QAAQkG,GAAyCvC,QAAQuC,UAEvDC,QAAQC,IAAIR,GAASS,MAAK,KAC7B1G,uBAAsB,KACpB,GAAIgG,IAAetI,KAAKgB,sBAAuB,OAC/ChB,KAAKsD,yBAAyB3B,EAASyG,GACvC9F,uBAAsB,KACpB,GAAIgG,IAAetI,KAAKgB,sBAAuB,OAC/ChB,KAAKsD,yBAAyB3B,EAASyG,GACvCpI,KAAKwD,wBACLxD,KAAKyD,8BACLzD,KAAK0D,yBAAyBC,MAAM,GACpC,GACF,G,CAME,eAAApB,CAAgB0G,GACtB,IAAKjJ,KAAK8C,SAAU,OACpB9C,KAAKgD,iBAAmBiG,EACxBjJ,KAAK0H,oBACLpF,uBAAsB,IAAMtC,KAAKkJ,sBAAsBD,I,CAGjD,qBAAAC,CAAsBD,GAC5B,IAAKjJ,KAAK8C,WAAamG,EAAOhG,YAAa,OAC3C,MAAMkG,EAAenJ,KAAK8C,SAAS+E,wBACnC,MAAMuB,EACJH,EAAOpB,wBAAwBlB,IAAMwC,EAAaxC,IAAM3G,KAAK8C,SAASmB,UACxE,MAAMoF,EAAeC,iBAAiBtJ,KAAK2E,IACxC4E,iBAAiB,uCACjBC,OACH,MAAMC,EAASC,EAAmBL,EAAc,8BAChD,MAAMM,EAAMC,KAAKD,IAAI3J,KAAK8C,SAASyD,aAAevG,KAAK8C,SAAS0D,aAAc,GAC9E,MAAMqD,EAASD,KAAKE,IAAIF,KAAKD,IAAIP,EAAYK,EAAQ,GAAIE,GACzD3J,KAAKM,UAAYqJ,EAAME,GAAUnK,EACjCM,KAAKO,gBAAkBP,KAAKM,UAC5BN,KAAKK,oBAAsBL,KAAKM,UAChCN,KAAKU,aAAe,KACpBV,KAAK8C,SAASmB,UAAY4F,EAC1BvH,uBAAsB,KACpBtC,KAAKU,aAAe,MACpBV,KAAKM,UAAYN,KAAK+D,eACtB/D,KAAKO,gBAAkBP,KAAKM,UAC5BN,KAAKK,oBAAsBL,KAAKM,UAChCN,KAAKwD,wBACLxD,KAAKyD,6BAA6B,IAEpCzD,KAAK0D,yBAAyBC,M,CAGxB,2BAAAF,GACN,IAAKzD,KAAK8C,WAAa9C,KAAKgD,kBAAkBC,YAAa,OAC3DjD,KAAKmD,4BACHnD,KAAKgD,iBAAiB6E,wBAAwBlB,IAAM3G,KAAK8C,SAAS+E,wBAAwBlB,G,CAGtF,iBAAAe,GACN,IAAK1H,KAAK8C,WAAa9C,KAAKgD,kBAAkBC,YAAa,OAC3D,MAAM8G,EAAW/J,KAAKmB,wBACtB,MAAM6I,EAAOD,EAASA,EAAS/H,OAAS,GACxC,IAAKgI,EAAM,OACX,MAAMC,EAAajK,KAAKgD,iBAAiB6E,wBACzC,MAAMqC,EAAWF,EAAKnC,wBACtB,MAAMwB,EAAeC,iBAAiBtJ,KAAK2E,IACxC4E,iBAAiB,uCACjBC,OACH,MAAMC,EAASC,EAAmBL,EAAc,8BAChD,MAAMc,EAAqBP,KAAKD,IAAIO,EAASE,OAASH,EAAWtD,IAAK,GACtE,MAAM0D,EAAYT,KAAKD,IACrBC,KAAKU,KAAKtK,KAAK8C,SAAS0D,aAAeiD,EAASU,GAChD,GAEF,GAAIE,IAAcrK,KAAKe,cAAe,OACtCf,KAAKe,cAAgBsJ,EACrBrK,KAAK2E,GAAG4F,MAAMC,YAAY,uCAAwC,GAAGH,M,CAG/D,oBAAAtF,GACN,IAAK/E,KAAK8C,SAAU,OACpB9C,KAAKQ,yBAA2B,MAChC,GAAIR,KAAKG,kBAAoB,QAAS,CACpCH,KAAK8C,SAASmB,UAAY,EAC1BjE,KAAKM,UAAY,MACjBN,KAAKO,eAAiB,KACtBP,KAAKK,mBAAqBL,KAAK8C,SAASyD,aAAevG,KAAK8C,SAAS0D,aACrExG,KAAK0D,yBAAyBC,OAC9B,M,CAEF,GAAI3D,KAAKG,kBAAoB,cAAe,CAC1C,MAAMsK,EAAUzK,KAAK2E,GAAGiB,iBAA8B,6BACtD,MAAMoE,EAAOS,EAAQ5E,KAAK4E,EAAQzI,OAAS,GAC3C,GAAIgI,EAAM,CACRA,EAAKhE,eAAe,CAAEC,MAAO,UAC7BjG,KAAKM,UAAYN,KAAK+D,eACtB/D,KAAKO,gBAAkBP,KAAKM,UAC5BN,KAAKK,oBAAsBL,KAAKM,UAChCN,KAAK0D,yBAAyBC,OAC9B,M,EAGJ3D,KAAK8C,SAASmB,UAAYjE,KAAK8C,SAASyD,aACxCvG,KAAKM,UAAY,KACjBN,KAAKO,eAAiB,MACtBP,KAAKK,mBAAqB,MAC1BL,KAAK0D,yBAAyBC,M,CAGxB,YAAAI,GACN,IAAK/D,KAAK8C,SAAU,OAAO,KAC3B,OACE9C,KAAK8C,SAASyD,aAAevG,KAAK8C,SAAS0D,aAAexG,KAAK8C,SAASmB,WACxEvE,C,CAgDJ,MAAAgL,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBACTH,EAAA,OAAAE,IAAA,2CACEC,MAAM,6BACNC,IAAKpJ,IACH3B,KAAK8C,SAAWnB,CAAO,EAEzBqJ,KAAK,SAAQ,aACDhL,KAAKI,cACjB6K,SAAU,EACVC,SAAUlL,KAAK6D,aACfsH,cAAgBC,IACd,GAAIA,EAAMC,cAAgB,QAASrL,KAAKoE,eAAe,EAEzDkH,QAAStL,KAAKoE,cACdmH,UAAYH,IACV,GACE,CAAC,UAAW,YAAa,SAAU,WAAY,OAAQ,MAAO,KAAKI,SACjEJ,EAAMP,KAER,CACA7K,KAAKoE,e,IAITuG,EAAA,OAAAE,IAAA,2CACEC,MAAM,2DACNC,IAAKpJ,IACH3B,KAAK6G,QAAUlF,CAAO,EAExBqJ,KAAK,MAAK,YACA,SAAQ,gBACJ,YAAW,YACdhL,KAAKC,KAAO,OAASoD,WAEhCsH,EAAA,QAAAE,IAAA,2CACEE,IAAKpJ,IACH3B,KAAK+H,eAAiBpG,CAAO,EAE/B8J,aAAczL,KAAK4D,+BAIzB+G,EAAA,OAAAE,IAAA,2CACEC,MAAM,4BACNC,IAAKpJ,IACH3B,KAAK8G,QAAUnF,CAAO,GAGxBgJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mCACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,iCACTH,EAAA,QAAAE,IAAA,2CAAMa,KAAK,iBAEbf,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qCACTH,EAAA,QAAAE,IAAA,2CAAMa,KAAK,eAIhB1L,KAAKK,mBACJsK,EAAA,OAAKG,MAAM,6GACTH,EAAA,cAAYgB,MAAM,2BAA2BC,KAAK,MAAMtK,KAAK,MAC3DqJ,EAAA,sBACEkB,QAAQ,OACRC,KAAK,cACLxK,KAAK,KACLyK,QAAO,KACPC,UAAW,MAAK,aACL,2BACXC,UAAW,SAAWjM,KAAKyG,kBAI/B,M","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isMessageScrollerTranscriptReset","previous","current","length","previousElements","Set","some","element","has","pruneMessageScrollerTranscriptSet","known","currentElements","delete","scrollEdgeFadeCss","messageScrollerCss","LIVE_EDGE_THRESHOLD","MessageScroller","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","busy","autoFollow","defaultPosition","messagesLabel","showScrollToLatest","following","followReleased","releasePendingAtLiveEdge","atStart","programmatic","transcriptChildren","knownTranscriptElements","knownTurnAnchors","turnClearance","prependReconciliation","turnPositionGeneration","defaultPositionGeneration","transcriptResetPending","hasLoaded","handleTranscriptChange","getTranscriptChildren","transcriptReset","invalidateTranscriptWork","resetTranscriptTracking","resetTranscriptPositionState","trackTranscript","rememberFirstChildTop","scrollOverlayController","sync","scheduleDefaultPosition","hadKnownTranscript","size","previouslyKnown","appendedAnchor","reverse","find","reverseIndex","matches","index","slice","every","next","pruneTranscriptTracking","scheduleNewTurnPosition","firstKnownIndex","findIndex","newTranscript","filter","prepended","indexOf","viewport","preservedElement","activeTurnAnchor","isConnected","preservedTop","activeTurnAnchorViewportTop","firstChildViewportTop","undefined","reconcilePrependPosition","schedulePrependReconciliation","rememberActiveTurnAnchorTop","handleTranscriptSlotChange","handleScroll","atLiveEdge","isAtLiveEdge","nextAtStart","scrollTop","dsReachStart","emit","releaseFollow","handleSelectionChange","selection","document","getSelection","isCollapsed","anchorNode","el","contains","componentDidLoad","seedTranscriptBaseline","connectObservers","removeEventListener","addEventListener","connectedCallback","disconnectedCallback","disconnect","mutationObserver","scrollToMessage","id","message","Array","from","querySelectorAll","item","messageId","getAttribute","scrollIntoView","block","behavior","motionBehavior","scrollToStart","scrollTo","Boolean","scrollHeight","clientHeight","scrollToEnd","matchMedia","top","programmaticTimer","clearTimeout","setTimeout","clearActiveTurnAnchor","style","removeProperty","clear","elements","forEach","add","includes","generation","requestAnimationFrame","applyDefaultPosition","content","overlay","ScrollOverlayController","host","overlayContentSelector","onGeometryChange","handleContentGrowth","connect","MutationObserver","observe","childList","subtree","characterData","syncTurnClearance","nextHeight","first","getBoundingClientRect","assigned","transcriptSlot","assignedElements","assignedTranscript","queriedTranscript","closest","viewportTop","nextTop","pending","flatMap","map","componentOnReady","call","catch","promise","Promise","all","then","anchor","positionNewTurn","finishPositionNewTurn","viewportRect","anchorTop","customOffset","getComputedStyle","getPropertyValue","trim","offset","resolveCssLengthPx","max","Math","target","min","children","last","anchorRect","lastRect","contentAfterAnchor","bottom","clearance","ceil","setProperty","anchors","render","h","Host","key","class","ref","role","tabIndex","onScroll","onPointerDown","event","pointerType","onWheel","onKeyDown","onSlotchange","name","label","side","variant","icon","rounded","hasBorder","onDsClick"],"sources":["src/wc/components/MessageScroller/message-scroller-transcript.ts","src/wc/utils/scroll-edge-fade.css?tag=ds-message-scroller&encapsulation=scoped","src/wc/components/MessageScroller/MessageScroller.css?tag=ds-message-scroller&encapsulation=scoped","src/wc/components/MessageScroller/MessageScroller.tsx"],"sourcesContent":["/**\n * A transcript reset replaces the current baseline instead of appending or\n * prepending around surviving nodes. Emptying a populated transcript also\n * starts a reset that completes when its next baseline is supplied.\n */\nexport function isMessageScrollerTranscriptReset<T>(\n previous: readonly T[],\n current: readonly T[]\n): boolean {\n if (!previous.length) return false;\n if (!current.length) return true;\n const previousElements = new Set(previous);\n return !current.some(element => previousElements.has(element));\n}\n\n/** Keep identity tracking bounded to nodes in the current transcript. */\nexport function pruneMessageScrollerTranscriptSet<T>(known: Set<T>, current: readonly T[]): void {\n const currentElements = new Set(current);\n for (const element of known) {\n if (!currentElements.has(element)) known.delete(element);\n }\n}\n","/**\n * Scroll-edge alpha fade — the single edge-fade utility for overflow containers.\n * Masks scrolling content to transparent so flat surfaces, shell gradients, and\n * images show through.\n *\n * Static fades are the default (PanelNav intentionally keeps its bottom fade).\n * Add `.scroll-edge-fade--scroll-aware` to reveal/hide each configured edge from\n * the container's own scroll position without JavaScript. Browsers without CSS\n * scroll-driven animations retain the configured static fades.\n *\n * @see scroll-edge-fade.ts — `scrollEdgeFadeClassMap`, `isScrollAtEdge`, size helpers.\n */\n\n@property --ds-scroll-edge-fade-top {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-bottom {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-left {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-right {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@keyframes ds-scroll-edge-fade-reveal-top {\n from {\n --ds-scroll-edge-fade-top: 0px;\n }\n to {\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-bottom {\n from {\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n }\n to {\n --ds-scroll-edge-fade-bottom: 0px;\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-left {\n from {\n --ds-scroll-edge-fade-left: 0px;\n }\n to {\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-right {\n from {\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n }\n to {\n --ds-scroll-edge-fade-right: 0px;\n }\n}\n\n/* Mask gradients use #000 / transparent as alpha stops — not theme colors. */\n/* stylelint-disable color-no-hex */\n\n.scroll-edge-fade {\n --ds-scroll-edge-fade-size: var(--dimension-size-600);\n --ds-scroll-edge-fade-reveal-distance: var(--dimension-size-800);\n --ds-scroll-edge-fade-target-top: 0px;\n --ds-scroll-edge-fade-target-bottom: 0px;\n --ds-scroll-edge-fade-target-left: 0px;\n --ds-scroll-edge-fade-target-right: 0px;\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n --ds-scroll-edge-fade-block-mask: linear-gradient(\n to bottom,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-top),\n #000 calc(100% - var(--ds-scroll-edge-fade-bottom)),\n transparent 100%\n );\n --ds-scroll-edge-fade-inline-mask: linear-gradient(\n to right,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-left),\n #000 calc(100% - var(--ds-scroll-edge-fade-right)),\n transparent 100%\n );\n\n /* Intersecting the block and inline masks lets every edge compose correctly. */\n -webkit-mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n -webkit-mask-composite: source-in;\n mask-composite: intersect;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: 100% 100%;\n mask-size: 100% 100%;\n}\n\n.scroll-edge-fade--top {\n --ds-scroll-edge-fade-target-top: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--bottom {\n --ds-scroll-edge-fade-target-bottom: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--left {\n --ds-scroll-edge-fade-target-left: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--right {\n --ds-scroll-edge-fade-target-right: var(--ds-scroll-edge-fade-size);\n}\n\n/* Manual per-edge state remains available when scroll state already lives in JS. */\n.scroll-edge-fade--top-at-edge {\n --ds-scroll-edge-fade-target-top: 0px;\n}\n\n.scroll-edge-fade--bottom-at-edge {\n --ds-scroll-edge-fade-target-bottom: 0px;\n}\n\n.scroll-edge-fade--left-at-edge {\n --ds-scroll-edge-fade-target-left: 0px;\n}\n\n.scroll-edge-fade--right-at-edge {\n --ds-scroll-edge-fade-target-right: 0px;\n}\n\n@supports (animation-timeline: scroll()) {\n .scroll-edge-fade--scroll-aware {\n animation-name:\n ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom,\n ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;\n /* stylelint-disable-next-line declaration-property-value-disallowed-list -- scroll timelines require a nonzero sentinel duration; elapsed time is ignored. */\n animation-duration: 1ms;\n animation-timing-function: ease-in-out;\n animation-fill-mode: both;\n animation-timeline: scroll(self y), scroll(self y), scroll(self x), scroll(self x);\n animation-range:\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%,\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .scroll-edge-fade--scroll-aware {\n animation: none;\n }\n }\n}\n\n.scroll-edge-fade--at-end,\n.scroll-edge-fade--hidden {\n -webkit-mask-image: none;\n mask-image: none;\n}\n\n/**\n * Masks a long content element against a scrollport-relative block window.\n * The owner updates the start/end offsets as the scrollport moves. Keeping the\n * mask on the content instead of the overflow element leaves native scrollbars\n * outside the fade.\n */\n.scroll-edge-fade--block-window {\n --ds-scroll-edge-fade-window-start: 100%;\n --ds-scroll-edge-fade-window-end: 100%;\n\n -webkit-mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n}\n\n/* stylelint-enable color-no-hex */\n","@import '../../styles/control-elevation.css';\n\n:host {\n --ds-message-scroller-anchor-offset: var(--dimension-space-800);\n\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.message-scroller {\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 0;\n}\n\n.message-scroller__viewport {\n width: 100%;\n height: 100%;\n min-height: 0;\n overflow: auto;\n overflow-anchor: none;\n overscroll-behavior: contain;\n box-sizing: border-box;\n}\n\n.message-scroller__viewport:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);\n outline-offset: calc(-1 * var(--dimension-stroke-width-025));\n}\n\n.message-scroller__content {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-300);\n width: 100%;\n max-width: var(--ds-message-scroller-content-max-width, var(--dimension-panel-width-2xl));\n min-height: 100%;\n margin-inline: auto;\n padding-block-start: var(--dimension-space-200);\n padding-inline: var(--dimension-space-200);\n padding-block-end: max(\n calc(var(--dimension-space-200) + var(--ds-scroll-overlay-block-size, 0px)),\n var(--ds-message-scroller-turn-clearance, 0px)\n );\n box-sizing: border-box;\n}\n\n.message-scroller__overlay {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: var(--dimension-z-index-floating);\n}\n\n.message-scroller__overlay-stack {\n display: grid;\n width: 100%;\n}\n\n.message-scroller__interaction,\n.message-scroller__overlay-content {\n min-width: 0;\n}\n\n.message-scroller__control {\n position: absolute;\n bottom: calc(var(--ds-scroll-overlay-content-block-size, 0px) + var(--dimension-space-200));\n left: 50%;\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n transform: translateX(-50%);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport type { MessageScrollerPosition } from '../conversation-types';\nimport { ScrollOverlayController } from '../../utils/scroll-overlay-controller';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport {\n isMessageScrollerTranscriptReset,\n pruneMessageScrollerTranscriptSet,\n} from './message-scroller-transcript';\n\nconst LIVE_EDGE_THRESHOLD = 24;\n\n@Component({\n tag: 'ds-message-scroller',\n styleUrl: 'MessageScroller.css',\n styleUrls: ['../../utils/scroll-edge-fade.css'],\n scoped: true,\n})\nexport class MessageScroller {\n @Element() el!: HTMLElement;\n\n @Prop() busy: boolean = false;\n @Prop() autoFollow: boolean = true;\n @Prop() defaultPosition: MessageScrollerPosition = 'last-anchor';\n @Prop() messagesLabel: string = 'Messages';\n\n @Event() dsReachStart!: EventEmitter<void>;\n\n @State() private showScrollToLatest = false;\n\n private viewport?: HTMLElement;\n private content?: HTMLElement;\n private overlay?: HTMLElement;\n private transcriptSlot?: HTMLSlotElement;\n private scrollOverlayController?: ScrollOverlayController;\n private mutationObserver?: MutationObserver;\n private following = true;\n private followReleased = false;\n private releasePendingAtLiveEdge = false;\n private atStart = false;\n private programmatic = false;\n private programmaticTimer?: ReturnType<typeof setTimeout>;\n private transcriptChildren: HTMLElement[] = [];\n private knownTranscriptElements = new Set<HTMLElement>();\n private knownTurnAnchors = new Set<HTMLElement>();\n private firstChildViewportTop?: number;\n private activeTurnAnchor?: HTMLElement;\n private activeTurnAnchorViewportTop?: number;\n private turnClearance = 0;\n private prependReconciliation = 0;\n private turnPositionGeneration = 0;\n private defaultPositionGeneration = 0;\n private transcriptResetPending = false;\n private hasLoaded = false;\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.seedTranscriptBaseline();\n this.connectObservers();\n this.scheduleDefaultPosition();\n document.removeEventListener('selectionchange', this.handleSelectionChange);\n document.addEventListener('selectionchange', this.handleSelectionChange);\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.seedTranscriptBaseline();\n this.connectObservers();\n this.scheduleDefaultPosition();\n document.removeEventListener('selectionchange', this.handleSelectionChange);\n document.addEventListener('selectionchange', this.handleSelectionChange);\n }\n\n disconnectedCallback() {\n this.invalidateTranscriptWork();\n this.scrollOverlayController?.disconnect();\n this.scrollOverlayController = undefined;\n this.mutationObserver?.disconnect();\n this.mutationObserver = undefined;\n this.resetTranscriptTracking();\n this.resetTranscriptPositionState();\n this.transcriptResetPending = false;\n document.removeEventListener('selectionchange', this.handleSelectionChange);\n }\n\n @Method()\n async scrollToMessage(id: string): Promise<boolean> {\n const message = Array.from(\n this.el.querySelectorAll<HTMLElement & { messageId?: string }>('ds-message')\n ).find(item => item.messageId === id || item.getAttribute('message-id') === id);\n if (!message) return false;\n this.releasePendingAtLiveEdge = false;\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = true;\n message.scrollIntoView({ block: 'start', behavior: this.motionBehavior() });\n return true;\n }\n\n @Method()\n async scrollToStart() {\n this.releasePendingAtLiveEdge = false;\n this.scrollTo(0);\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = Boolean(\n this.viewport && this.viewport.scrollHeight > this.viewport.clientHeight\n );\n }\n\n @Method()\n async scrollToEnd() {\n this.releasePendingAtLiveEdge = false;\n this.following = true;\n this.followReleased = false;\n this.showScrollToLatest = false;\n this.scrollTo(this.viewport?.scrollHeight ?? 0);\n }\n\n private motionBehavior(): ScrollBehavior {\n return matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth';\n }\n\n private scrollTo(top: number) {\n if (!this.viewport) return;\n this.programmatic = true;\n const behavior = this.motionBehavior();\n this.viewport.scrollTo({ top, behavior });\n if (this.programmaticTimer) clearTimeout(this.programmaticTimer);\n this.programmaticTimer = setTimeout(\n () => {\n this.programmatic = false;\n this.programmaticTimer = undefined;\n if (this.following) {\n this.viewport!.scrollTop = top;\n this.showScrollToLatest = false;\n }\n },\n behavior === 'smooth' ? 600 : 0\n );\n }\n\n private invalidateTranscriptWork() {\n this.prependReconciliation += 1;\n this.turnPositionGeneration += 1;\n this.defaultPositionGeneration += 1;\n if (this.programmaticTimer) clearTimeout(this.programmaticTimer);\n this.programmaticTimer = undefined;\n this.programmatic = false;\n }\n\n private clearActiveTurnAnchor() {\n this.activeTurnAnchor = undefined;\n this.activeTurnAnchorViewportTop = undefined;\n this.turnClearance = 0;\n this.el.style.removeProperty('--ds-message-scroller-turn-clearance');\n }\n\n private resetTranscriptTracking() {\n this.transcriptChildren = [];\n this.knownTranscriptElements.clear();\n this.knownTurnAnchors.clear();\n this.firstChildViewportTop = undefined;\n this.clearActiveTurnAnchor();\n }\n\n private resetTranscriptPositionState() {\n this.following = true;\n this.followReleased = false;\n this.releasePendingAtLiveEdge = false;\n this.atStart = false;\n this.showScrollToLatest = false;\n }\n\n private trackTranscript(elements: readonly HTMLElement[]) {\n elements.forEach(element => {\n this.knownTranscriptElements.add(element);\n if (element.matches('ds-message[scroll-anchor]')) {\n this.knownTurnAnchors.add(element);\n }\n });\n }\n\n private seedTranscriptBaseline() {\n this.resetTranscriptTracking();\n this.transcriptChildren = this.getTranscriptChildren();\n this.trackTranscript(this.transcriptChildren);\n this.transcriptResetPending = false;\n this.rememberFirstChildTop();\n }\n\n private pruneTranscriptTracking(current: readonly HTMLElement[]) {\n pruneMessageScrollerTranscriptSet(this.knownTranscriptElements, current);\n pruneMessageScrollerTranscriptSet(this.knownTurnAnchors, current);\n if (this.activeTurnAnchor && !current.includes(this.activeTurnAnchor)) {\n this.clearActiveTurnAnchor();\n }\n }\n\n private scheduleDefaultPosition() {\n const generation = ++this.defaultPositionGeneration;\n requestAnimationFrame(() => {\n if (generation !== this.defaultPositionGeneration || !this.el.isConnected) return;\n this.applyDefaultPosition();\n });\n }\n\n private connectObservers() {\n if (!this.viewport || !this.content || !this.overlay) return;\n this.scrollOverlayController?.disconnect();\n this.mutationObserver?.disconnect();\n this.scrollOverlayController = new ScrollOverlayController({\n host: this.el,\n viewport: this.viewport,\n content: this.content,\n overlay: this.overlay,\n overlayContentSelector: '.message-scroller__overlay-stack',\n onGeometryChange: () => this.handleContentGrowth(),\n });\n this.scrollOverlayController.connect();\n this.mutationObserver = new MutationObserver(() => {\n this.handleTranscriptChange();\n this.handleContentGrowth();\n });\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n characterData: true,\n });\n }\n\n private handleContentGrowth() {\n if (!this.viewport) return;\n this.syncTurnClearance();\n const nextHeight = this.viewport.scrollHeight;\n if (this.autoFollow && this.following && !this.followReleased) {\n this.viewport.scrollTop = nextHeight;\n }\n if (this.releasePendingAtLiveEdge && !this.isAtLiveEdge()) {\n this.releasePendingAtLiveEdge = false;\n }\n this.showScrollToLatest = !this.following && !this.isAtLiveEdge();\n this.scrollOverlayController?.sync();\n }\n\n private rememberFirstChildTop() {\n if (!this.viewport) return;\n const first = this.getTranscriptChildren()[0];\n this.firstChildViewportTop = first\n ? first.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top\n : undefined;\n }\n\n private getTranscriptChildren(): HTMLElement[] {\n const assigned = this.transcriptSlot?.assignedElements() ?? [];\n const assignedTranscript = assigned.filter(\n (element): element is HTMLElement =>\n element instanceof HTMLElement &&\n (element.matches('ds-message') || element.matches('ds-agent-response'))\n );\n const queriedTranscript = Array.from(\n this.el.querySelectorAll<HTMLElement>('ds-message, ds-agent-response')\n ).filter(element => {\n if (element.closest('.message-scroller__interaction, .message-scroller__overlay-content')) {\n return false;\n }\n if (element.matches('ds-agent-response')) return true;\n return !element.closest('ds-agent-response');\n });\n return queriedTranscript.length > assignedTranscript.length\n ? queriedTranscript\n : assignedTranscript;\n }\n\n private handleTranscriptChange = () => {\n const current = this.getTranscriptChildren();\n const previous = this.transcriptChildren;\n const transcriptReset =\n isMessageScrollerTranscriptReset(previous, current) ||\n (this.transcriptResetPending && current.length > 0);\n if (transcriptReset) {\n this.invalidateTranscriptWork();\n this.resetTranscriptTracking();\n this.resetTranscriptPositionState();\n this.transcriptChildren = current;\n this.trackTranscript(current);\n this.transcriptResetPending = current.length === 0;\n this.rememberFirstChildTop();\n this.scrollOverlayController?.sync();\n if (current.length) this.scheduleDefaultPosition();\n return;\n }\n\n const hadKnownTranscript = this.knownTranscriptElements.size > 0;\n const previouslyKnown = new Set(this.knownTranscriptElements);\n const appendedAnchor = [...current].reverse().find((element, reverseIndex) => {\n if (!element.matches('ds-message[scroll-anchor]') || this.knownTurnAnchors.has(element)) {\n return false;\n }\n const index = current.length - reverseIndex - 1;\n return current.slice(index + 1).every(next => !this.knownTranscriptElements.has(next));\n });\n this.trackTranscript(current);\n this.pruneTranscriptTracking(current);\n if (!previous.length) {\n this.transcriptChildren = current;\n if (appendedAnchor && hadKnownTranscript) {\n this.scheduleNewTurnPosition(appendedAnchor);\n }\n return;\n }\n\n const firstKnownIndex = current.findIndex(element => previouslyKnown.has(element));\n const newTranscript = current.filter(element => !previouslyKnown.has(element));\n const prepended =\n (current.length > previous.length &&\n previous.every(\n (element, index) => current[current.length - previous.length + index] === element\n )) ||\n (!appendedAnchor &&\n newTranscript.length > 0 &&\n firstKnownIndex > 0 &&\n newTranscript.every(element => current.indexOf(element) < firstKnownIndex));\n\n this.transcriptChildren = current;\n if (prepended) {\n if (this.viewport) {\n const preservedElement = this.activeTurnAnchor?.isConnected\n ? this.activeTurnAnchor\n : previous[0];\n const preservedTop = this.activeTurnAnchor?.isConnected\n ? this.activeTurnAnchorViewportTop\n : this.firstChildViewportTop;\n if (preservedElement && preservedTop !== undefined) {\n this.reconcilePrependPosition(preservedElement, preservedTop);\n this.schedulePrependReconciliation(preservedElement, preservedTop, newTranscript);\n }\n }\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n this.scrollOverlayController?.sync();\n return;\n }\n if (appendedAnchor) {\n this.scheduleNewTurnPosition(appendedAnchor);\n }\n };\n\n private reconcilePrependPosition(element: HTMLElement, viewportTop: number) {\n if (!this.viewport || !element.isConnected) return;\n const nextTop = element.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top;\n this.viewport.scrollTop += nextTop - viewportTop;\n }\n\n private schedulePrependReconciliation(\n element: HTMLElement,\n viewportTop: number,\n prepended: HTMLElement[]\n ) {\n const generation = ++this.prependReconciliation;\n // Prepended custom elements can gain height after their child-list mutation.\n // Reconcile against the original coordinate after their layouts settle.\n const pending = prepended\n .flatMap(item => [item, ...Array.from(item.querySelectorAll<HTMLElement>('*'))])\n .map(item => {\n const componentOnReady = (\n item as HTMLElement & { componentOnReady?: () => Promise<unknown> }\n ).componentOnReady;\n return componentOnReady ? componentOnReady.call(item).catch(() => undefined) : null;\n })\n .filter((promise): promise is Promise<unknown> => Boolean(promise));\n\n void Promise.all(pending).then(() => {\n requestAnimationFrame(() => {\n if (generation !== this.prependReconciliation) return;\n this.reconcilePrependPosition(element, viewportTop);\n requestAnimationFrame(() => {\n if (generation !== this.prependReconciliation) return;\n this.reconcilePrependPosition(element, viewportTop);\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n this.scrollOverlayController?.sync();\n });\n });\n });\n }\n\n private handleTranscriptSlotChange = () => this.handleTranscriptChange();\n\n private scheduleNewTurnPosition(anchor: HTMLElement) {\n const generation = ++this.turnPositionGeneration;\n requestAnimationFrame(() => {\n if (generation !== this.turnPositionGeneration || !anchor.isConnected || !this.viewport) {\n return;\n }\n this.positionNewTurn(anchor, generation);\n });\n }\n\n private positionNewTurn(anchor: HTMLElement, generation: number) {\n if (generation !== this.turnPositionGeneration || !this.viewport || !anchor.isConnected) return;\n this.activeTurnAnchor = anchor;\n this.syncTurnClearance();\n requestAnimationFrame(() => {\n if (generation !== this.turnPositionGeneration) return;\n this.finishPositionNewTurn(anchor, generation);\n });\n }\n\n private finishPositionNewTurn(anchor: HTMLElement, generation: number) {\n if (generation !== this.turnPositionGeneration || !this.viewport || !anchor.isConnected) {\n return;\n }\n const viewportRect = this.viewport.getBoundingClientRect();\n const anchorTop =\n anchor.getBoundingClientRect().top - viewportRect.top + this.viewport.scrollTop;\n const customOffset = getComputedStyle(this.el)\n .getPropertyValue('--ds-message-scroller-anchor-offset')\n .trim();\n const offset = resolveCssLengthPx(customOffset, 'var(--dimension-space-800)');\n const max = Math.max(this.viewport.scrollHeight - this.viewport.clientHeight, 0);\n const target = Math.min(Math.max(anchorTop - offset, 0), max);\n this.following = max - target <= LIVE_EDGE_THRESHOLD;\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.programmatic = true;\n this.viewport.scrollTop = target;\n requestAnimationFrame(() => {\n if (generation !== this.turnPositionGeneration) return;\n this.programmatic = false;\n this.following = this.isAtLiveEdge();\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n });\n this.scrollOverlayController?.sync();\n }\n\n private rememberActiveTurnAnchorTop() {\n if (!this.viewport || !this.activeTurnAnchor?.isConnected) return;\n this.activeTurnAnchorViewportTop =\n this.activeTurnAnchor.getBoundingClientRect().top - this.viewport.getBoundingClientRect().top;\n }\n\n private syncTurnClearance() {\n if (!this.viewport || !this.activeTurnAnchor?.isConnected) return;\n const children = this.getTranscriptChildren();\n const last = children[children.length - 1];\n if (!last) return;\n const anchorRect = this.activeTurnAnchor.getBoundingClientRect();\n const lastRect = last.getBoundingClientRect();\n const customOffset = getComputedStyle(this.el)\n .getPropertyValue('--ds-message-scroller-anchor-offset')\n .trim();\n const offset = resolveCssLengthPx(customOffset, 'var(--dimension-space-800)');\n const contentAfterAnchor = Math.max(lastRect.bottom - anchorRect.top, 0);\n const clearance = Math.max(\n Math.ceil(this.viewport.clientHeight - offset - contentAfterAnchor),\n 0\n );\n if (clearance === this.turnClearance) return;\n this.turnClearance = clearance;\n this.el.style.setProperty('--ds-message-scroller-turn-clearance', `${clearance}px`);\n }\n\n private applyDefaultPosition() {\n if (!this.viewport) return;\n this.releasePendingAtLiveEdge = false;\n if (this.defaultPosition === 'start') {\n this.viewport.scrollTop = 0;\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = this.viewport.scrollHeight > this.viewport.clientHeight;\n this.scrollOverlayController?.sync();\n return;\n }\n if (this.defaultPosition === 'last-anchor') {\n const anchors = this.el.querySelectorAll<HTMLElement>('ds-message[scroll-anchor]');\n const last = anchors.item(anchors.length - 1);\n if (last) {\n last.scrollIntoView({ block: 'start' });\n this.following = this.isAtLiveEdge();\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n this.scrollOverlayController?.sync();\n return;\n }\n }\n this.viewport.scrollTop = this.viewport.scrollHeight;\n this.following = true;\n this.followReleased = false;\n this.showScrollToLatest = false;\n this.scrollOverlayController?.sync();\n }\n\n private isAtLiveEdge(): boolean {\n if (!this.viewport) return true;\n return (\n this.viewport.scrollHeight - this.viewport.clientHeight - this.viewport.scrollTop <=\n LIVE_EDGE_THRESHOLD\n );\n }\n\n private handleScroll = () => {\n if (!this.viewport) return;\n this.scrollOverlayController?.sync();\n this.rememberFirstChildTop();\n this.rememberActiveTurnAnchorTop();\n if (this.programmatic) return;\n const atLiveEdge = this.isAtLiveEdge();\n if (this.releasePendingAtLiveEdge && atLiveEdge) {\n // A scroll event queued by the previous auto-follow can arrive after\n // reader input. Keep that stale event from restoring follow mode.\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = false;\n return;\n }\n this.releasePendingAtLiveEdge = false;\n this.following = atLiveEdge;\n this.followReleased = !this.following;\n this.showScrollToLatest = !this.following;\n const nextAtStart = this.viewport.scrollTop <= LIVE_EDGE_THRESHOLD;\n if (nextAtStart && !this.atStart) this.dsReachStart.emit();\n this.atStart = nextAtStart;\n };\n\n private releaseFollow = () => {\n this.prependReconciliation += 1;\n this.releasePendingAtLiveEdge = this.isAtLiveEdge();\n this.following = false;\n this.followReleased = true;\n this.showScrollToLatest = !this.releasePendingAtLiveEdge;\n };\n\n private handleSelectionChange = () => {\n const selection = document.getSelection();\n if (\n selection &&\n !selection.isCollapsed &&\n selection.anchorNode &&\n this.el.contains(selection.anchorNode)\n ) {\n this.releaseFollow();\n }\n };\n\n render() {\n return (\n <Host>\n <div class=\"message-scroller\">\n <div\n class=\"message-scroller__viewport\"\n ref={element => {\n this.viewport = element;\n }}\n role=\"region\"\n aria-label={this.messagesLabel}\n tabIndex={0}\n onScroll={this.handleScroll}\n onPointerDown={(event: PointerEvent) => {\n if (event.pointerType === 'touch') this.releaseFollow();\n }}\n onWheel={this.releaseFollow}\n onKeyDown={(event: KeyboardEvent) => {\n if (\n ['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown', 'Home', 'End', ' '].includes(\n event.key\n )\n ) {\n this.releaseFollow();\n }\n }}\n >\n <div\n class=\"message-scroller__content scroll-edge-fade--block-window\"\n ref={element => {\n this.content = element;\n }}\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n aria-busy={this.busy ? 'true' : undefined}\n >\n <slot\n ref={element => {\n this.transcriptSlot = element;\n }}\n onSlotchange={this.handleTranscriptSlotChange}\n />\n </div>\n </div>\n <div\n class=\"message-scroller__overlay\"\n ref={element => {\n this.overlay = element;\n }}\n >\n <div class=\"message-scroller__overlay-stack\">\n <div class=\"message-scroller__interaction\">\n <slot name=\"interaction\" />\n </div>\n <div class=\"message-scroller__overlay-content\">\n <slot name=\"overlay\" />\n </div>\n </div>\n </div>\n {this.showScrollToLatest ? (\n <div class=\"message-scroller__control ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <ds-tooltip label=\"Scroll to latest message\" side=\"top\" size=\"sm\">\n <ds-button-unfilled\n variant=\"icon\"\n icon=\"ChevronDown\"\n size=\"md\"\n rounded\n hasBorder={false}\n aria-label=\"Scroll to latest message\"\n onDsClick={() => void this.scrollToEnd()}\n />\n </ds-tooltip>\n </div>\n ) : null}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{M as o,d as s}from"./p-
|
|
1
|
+
import{M as o,d as s}from"./p-BqbdABo3.js";const t=o;const p=s;export{t as DsMobileSheetNav,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-mobile-sheet-nav.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{M as o,d as s}from"./p-
|
|
1
|
+
import{M as o,d as s}from"./p-CZjjDhUl.js";const t=o;const j=s;export{t as DsModal,j as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-modal.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{P as
|
|
1
|
+
import{P as s,d as o}from"./p-CYMKmJ2s.js";const t=s;const m=o;export{t as DsPagination,m as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-pagination.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{P as o,d as s}from"./p-
|
|
1
|
+
import{P as o,d as s}from"./p-Bo6uW_8T.js";const t=o;const p=s;export{t as DsPanelNav,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-panel-nav.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{P as o,d as s}from"./p-
|
|
1
|
+
import{P as o,d as s}from"./p-BSRIF4m8.js";const t=o;const m=s;export{t as DsPanelToolHeader,m as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-panel-tool-header.js.map
|