@design.estate/dees-catalog 6.8.1 → 6.9.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.
@@ -33,7 +33,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
33
33
  return useValue ? value : void 0;
34
34
  };
35
35
  import { demoFunc } from './dees-harness-composer.demo.js';
36
- import { DeesElement, html, css, customElement, property, cssManager, } from '@design.estate/dees-element';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, } from '@design.estate/dees-element';
37
37
  import { themeDefaultStyles } from '../../00theme.js';
38
38
  import { harnessFileToBase64, harnessFormatBytes, harnessAttachmentKindFor, harnessMaxAttachmentBytes, harnessMaxTotalAttachmentBytes, harnessMediaTypeForFile, } from '../harness.helpers.js';
39
39
  import '../../00group-button/dees-button/dees-button.js';
@@ -41,6 +41,7 @@ import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
41
41
  import '../../00group-utility/dees-icon/dees-icon.js';
42
42
  const toDropdownOptions = (values) => values.map((value) => ({ option: value, key: value }));
43
43
  const toLabeledDropdownOptions = (values) => values.map((value) => ({ option: value.label, key: value.value }));
44
+ let nextSuggestionListId = 0;
44
45
  /**
45
46
  * Prompt composer: autogrow textarea, attachments (picker / paste /
46
47
  * drag-drop with per-file and total size limits), optional account, model,
@@ -48,7 +49,7 @@ const toLabeledDropdownOptions = (values) => values.map((value) => ({ option: va
48
49
  * additional button and Send stays available for queueing; an empty prompt
49
50
  * with queued messages offers "Steer now".
50
51
  *
51
- * Controlled component: `value` and `attachments` are owned by the host;
52
+ * Controlled component: `value`, `attachments`, and `suggestions` are owned by the host;
52
53
  * the composer emits `harness-input`, `harness-attachments-change`,
53
54
  * `harness-attachment-error`, `harness-account-change`, `harness-model-change`, `harness-send`,
54
55
  * `harness-steer`, and `harness-abort` (all bubbling + composed).
@@ -80,6 +81,18 @@ let DeesHarnessComposer = (() => {
80
81
  let _attachments_decorators;
81
82
  let _attachments_initializers = [];
82
83
  let _attachments_extraInitializers = [];
84
+ let _suggestions_decorators;
85
+ let _suggestions_initializers = [];
86
+ let _suggestions_extraInitializers = [];
87
+ let _activeSuggestionIndex_decorators;
88
+ let _activeSuggestionIndex_initializers = [];
89
+ let _activeSuggestionIndex_extraInitializers = [];
90
+ let _suggestionsDismissed_decorators;
91
+ let _suggestionsDismissed_initializers = [];
92
+ let _suggestionsDismissed_extraInitializers = [];
93
+ let _promptFocused_decorators;
94
+ let _promptFocused_initializers = [];
95
+ let _promptFocused_extraInitializers = [];
83
96
  let _maxAttachmentBytes_decorators;
84
97
  let _maxAttachmentBytes_initializers = [];
85
98
  let _maxAttachmentBytes_extraInitializers = [];
@@ -127,6 +140,10 @@ let DeesHarnessComposer = (() => {
127
140
  _busy_decorators = [property({ type: Boolean })];
128
141
  _queuedCount_decorators = [property({ type: Number })];
129
142
  _attachments_decorators = [property({ attribute: false })];
143
+ _suggestions_decorators = [property({ attribute: false })];
144
+ _activeSuggestionIndex_decorators = [state()];
145
+ _suggestionsDismissed_decorators = [state()];
146
+ _promptFocused_decorators = [state()];
130
147
  _maxAttachmentBytes_decorators = [property({ type: Number })];
131
148
  _maxTotalAttachmentBytes_decorators = [property({ type: Number })];
132
149
  _maxAttachmentCount_decorators = [property({ type: Number })];
@@ -146,6 +163,10 @@ let DeesHarnessComposer = (() => {
146
163
  __esDecorate(this, null, _busy_decorators, { kind: "accessor", name: "busy", static: false, private: false, access: { has: obj => "busy" in obj, get: obj => obj.busy, set: (obj, value) => { obj.busy = value; } }, metadata: _metadata }, _busy_initializers, _busy_extraInitializers);
147
164
  __esDecorate(this, null, _queuedCount_decorators, { kind: "accessor", name: "queuedCount", static: false, private: false, access: { has: obj => "queuedCount" in obj, get: obj => obj.queuedCount, set: (obj, value) => { obj.queuedCount = value; } }, metadata: _metadata }, _queuedCount_initializers, _queuedCount_extraInitializers);
148
165
  __esDecorate(this, null, _attachments_decorators, { kind: "accessor", name: "attachments", static: false, private: false, access: { has: obj => "attachments" in obj, get: obj => obj.attachments, set: (obj, value) => { obj.attachments = value; } }, metadata: _metadata }, _attachments_initializers, _attachments_extraInitializers);
166
+ __esDecorate(this, null, _suggestions_decorators, { kind: "accessor", name: "suggestions", static: false, private: false, access: { has: obj => "suggestions" in obj, get: obj => obj.suggestions, set: (obj, value) => { obj.suggestions = value; } }, metadata: _metadata }, _suggestions_initializers, _suggestions_extraInitializers);
167
+ __esDecorate(this, null, _activeSuggestionIndex_decorators, { kind: "accessor", name: "activeSuggestionIndex", static: false, private: false, access: { has: obj => "activeSuggestionIndex" in obj, get: obj => obj.activeSuggestionIndex, set: (obj, value) => { obj.activeSuggestionIndex = value; } }, metadata: _metadata }, _activeSuggestionIndex_initializers, _activeSuggestionIndex_extraInitializers);
168
+ __esDecorate(this, null, _suggestionsDismissed_decorators, { kind: "accessor", name: "suggestionsDismissed", static: false, private: false, access: { has: obj => "suggestionsDismissed" in obj, get: obj => obj.suggestionsDismissed, set: (obj, value) => { obj.suggestionsDismissed = value; } }, metadata: _metadata }, _suggestionsDismissed_initializers, _suggestionsDismissed_extraInitializers);
169
+ __esDecorate(this, null, _promptFocused_decorators, { kind: "accessor", name: "promptFocused", static: false, private: false, access: { has: obj => "promptFocused" in obj, get: obj => obj.promptFocused, set: (obj, value) => { obj.promptFocused = value; } }, metadata: _metadata }, _promptFocused_initializers, _promptFocused_extraInitializers);
149
170
  __esDecorate(this, null, _maxAttachmentBytes_decorators, { kind: "accessor", name: "maxAttachmentBytes", static: false, private: false, access: { has: obj => "maxAttachmentBytes" in obj, get: obj => obj.maxAttachmentBytes, set: (obj, value) => { obj.maxAttachmentBytes = value; } }, metadata: _metadata }, _maxAttachmentBytes_initializers, _maxAttachmentBytes_extraInitializers);
150
171
  __esDecorate(this, null, _maxTotalAttachmentBytes_decorators, { kind: "accessor", name: "maxTotalAttachmentBytes", static: false, private: false, access: { has: obj => "maxTotalAttachmentBytes" in obj, get: obj => obj.maxTotalAttachmentBytes, set: (obj, value) => { obj.maxTotalAttachmentBytes = value; } }, metadata: _metadata }, _maxTotalAttachmentBytes_initializers, _maxTotalAttachmentBytes_extraInitializers);
151
172
  __esDecorate(this, null, _maxAttachmentCount_decorators, { kind: "accessor", name: "maxAttachmentCount", static: false, private: false, access: { has: obj => "maxAttachmentCount" in obj, get: obj => obj.maxAttachmentCount, set: (obj, value) => { obj.maxAttachmentCount = value; } }, metadata: _metadata }, _maxAttachmentCount_initializers, _maxAttachmentCount_extraInitializers);
@@ -198,7 +219,21 @@ let DeesHarnessComposer = (() => {
198
219
  #attachments_accessor_storage = (__runInitializers(this, _queuedCount_extraInitializers), __runInitializers(this, _attachments_initializers, []));
199
220
  get attachments() { return this.#attachments_accessor_storage; }
200
221
  set attachments(value) { this.#attachments_accessor_storage = value; }
201
- #maxAttachmentBytes_accessor_storage = (__runInitializers(this, _attachments_extraInitializers), __runInitializers(this, _maxAttachmentBytes_initializers, harnessMaxAttachmentBytes));
222
+ #suggestions_accessor_storage = (__runInitializers(this, _attachments_extraInitializers), __runInitializers(this, _suggestions_initializers, []));
223
+ get suggestions() { return this.#suggestions_accessor_storage; }
224
+ set suggestions(value) { this.#suggestions_accessor_storage = value; }
225
+ #activeSuggestionIndex_accessor_storage = (__runInitializers(this, _suggestions_extraInitializers), __runInitializers(this, _activeSuggestionIndex_initializers, -1));
226
+ get activeSuggestionIndex() { return this.#activeSuggestionIndex_accessor_storage; }
227
+ set activeSuggestionIndex(value) { this.#activeSuggestionIndex_accessor_storage = value; }
228
+ #suggestionsDismissed_accessor_storage = (__runInitializers(this, _activeSuggestionIndex_extraInitializers), __runInitializers(this, _suggestionsDismissed_initializers, false));
229
+ get suggestionsDismissed() { return this.#suggestionsDismissed_accessor_storage; }
230
+ set suggestionsDismissed(value) { this.#suggestionsDismissed_accessor_storage = value; }
231
+ #promptFocused_accessor_storage = (__runInitializers(this, _suggestionsDismissed_extraInitializers), __runInitializers(this, _promptFocused_initializers, false));
232
+ get promptFocused() { return this.#promptFocused_accessor_storage; }
233
+ set promptFocused(value) { this.#promptFocused_accessor_storage = value; }
234
+ composing = (__runInitializers(this, _promptFocused_extraInitializers), false);
235
+ suggestionListId = `dees-harness-composer-suggestions-${++nextSuggestionListId}`;
236
+ #maxAttachmentBytes_accessor_storage = __runInitializers(this, _maxAttachmentBytes_initializers, harnessMaxAttachmentBytes);
202
237
  get maxAttachmentBytes() { return this.#maxAttachmentBytes_accessor_storage; }
203
238
  set maxAttachmentBytes(value) { this.#maxAttachmentBytes_accessor_storage = value; }
204
239
  #maxTotalAttachmentBytes_accessor_storage = (__runInitializers(this, _maxAttachmentBytes_extraInitializers), __runInitializers(this, _maxTotalAttachmentBytes_initializers, harnessMaxTotalAttachmentBytes));
@@ -248,6 +283,69 @@ let DeesHarnessComposer = (() => {
248
283
  container-type: inline-size;
249
284
  }
250
285
 
286
+ .composerShell {
287
+ position: relative;
288
+ min-width: 0;
289
+ }
290
+
291
+ .suggestionList {
292
+ position: absolute;
293
+ z-index: 2;
294
+ inset-inline: 0;
295
+ bottom: calc(100% + var(--dees-spacing-xs));
296
+ box-sizing: border-box;
297
+ max-height: min(240px, 35dvh);
298
+ margin: 0;
299
+ padding: var(--dees-spacing-xs);
300
+ overflow-x: hidden;
301
+ overflow-y: auto;
302
+ overscroll-behavior: contain;
303
+ list-style: none;
304
+ border: 1px solid var(--dees-color-border-subtle);
305
+ border-radius: var(--dees-radius-xl);
306
+ corner-shape: var(--dees-corner-shape);
307
+ background: var(--dees-color-bg-primary);
308
+ box-shadow: var(--dees-shadow-up-sm);
309
+ }
310
+
311
+ .suggestionOption {
312
+ display: grid;
313
+ align-content: center;
314
+ box-sizing: border-box;
315
+ min-width: 0;
316
+ min-height: 44px;
317
+ padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
318
+ border-radius: var(--dees-radius-lg);
319
+ corner-shape: var(--dees-corner-shape);
320
+ color: var(--dees-color-text-primary);
321
+ cursor: pointer;
322
+ touch-action: manipulation;
323
+ }
324
+
325
+ .suggestionOption:hover,
326
+ .suggestionOption.active {
327
+ background: var(--dees-color-fill-secondary);
328
+ }
329
+
330
+ .suggestionLabel {
331
+ min-width: 0;
332
+ overflow: hidden;
333
+ font-size: var(--dees-font-control-size, 13px);
334
+ font-weight: 600;
335
+ line-height: 1.35;
336
+ text-overflow: ellipsis;
337
+ white-space: nowrap;
338
+ }
339
+
340
+ .suggestionDescription {
341
+ min-width: 0;
342
+ margin-top: 2px;
343
+ color: var(--dees-color-text-secondary);
344
+ font-size: var(--dees-font-caption1-size, 11px);
345
+ line-height: 1.35;
346
+ overflow-wrap: anywhere;
347
+ }
348
+
251
349
  .composer {
252
350
  display: grid;
253
351
  gap: var(--dees-spacing-sm);
@@ -470,17 +568,29 @@ let DeesHarnessComposer = (() => {
470
568
  }
471
569
  clear() {
472
570
  this.value = '';
571
+ this.resetSuggestionInteraction();
473
572
  this.emitInput('');
474
573
  this.autogrow();
475
574
  }
575
+ willUpdate(changedProperties) {
576
+ super.willUpdate(changedProperties);
577
+ if (changedProperties.has('suggestions'))
578
+ this.resetSuggestionInteraction();
579
+ }
580
+ updated(changedProperties) {
581
+ super.updated(changedProperties);
582
+ this.syncTextareaSuggestionAria();
583
+ }
476
584
  render() {
477
585
  return html `
478
- <div
479
- class="composer"
480
- @dragover=${this.handleDragOver}
481
- @dragleave=${this.handleDragLeave}
482
- @drop=${this.handleDrop}
483
- >
586
+ <div class="composerShell">
587
+ ${this.suggestionsVisible ? this.renderSuggestions() : ''}
588
+ <div
589
+ class="composer"
590
+ @dragover=${this.handleDragOver}
591
+ @dragleave=${this.handleDragLeave}
592
+ @drop=${this.handleDrop}
593
+ >
484
594
  <input
485
595
  class="fileInput"
486
596
  type="file"
@@ -496,11 +606,16 @@ let DeesHarnessComposer = (() => {
496
606
  : ''}
497
607
  <textarea
498
608
  .value=${this.value}
609
+ aria-label="Message"
499
610
  placeholder=${this.placeholder}
500
611
  ?disabled=${this.disabled}
501
612
  rows="1"
502
613
  @input=${this.handleTextInput}
503
614
  @keydown=${this.handleKeydown}
615
+ @focus=${this.handlePromptFocus}
616
+ @blur=${this.handlePromptBlur}
617
+ @compositionstart=${this.handleCompositionStart}
618
+ @compositionend=${this.handleCompositionEnd}
504
619
  @paste=${this.handlePaste}
505
620
  ></textarea>
506
621
  <div class="controlsRow">
@@ -610,8 +725,38 @@ let DeesHarnessComposer = (() => {
610
725
  Send
611
726
  </dees-button>
612
727
  `}
728
+ </div>
613
729
  </div>
614
730
  </div>
731
+ `;
732
+ }
733
+ renderSuggestions() {
734
+ return html `
735
+ <ul
736
+ id=${this.suggestionListId}
737
+ class="suggestionList"
738
+ role="listbox"
739
+ aria-label="Suggestions"
740
+ @pointerdown=${this.handleSuggestionPointerDown}
741
+ >
742
+ ${this.suggestions.map((suggestion, index) => html `
743
+ <li
744
+ id=${this.suggestionOptionId(index)}
745
+ class=${`suggestionOption ${index === this.activeSuggestionIndex ? 'active' : ''}`}
746
+ role="option"
747
+ aria-selected=${String(index === this.activeSuggestionIndex)}
748
+ @pointerenter=${() => {
749
+ this.activeSuggestionIndex = index;
750
+ }}
751
+ @click=${() => void this.selectSuggestion(index)}
752
+ >
753
+ <span class="suggestionLabel">${suggestion.label}</span>
754
+ ${suggestion.description
755
+ ? html `<span class="suggestionDescription">${suggestion.description}</span>`
756
+ : ''}
757
+ </li>
758
+ `)}
759
+ </ul>
615
760
  `;
616
761
  }
617
762
  renderChip(attachment) {
@@ -641,15 +786,42 @@ let DeesHarnessComposer = (() => {
641
786
  // ------------------------------------------------------------------ input
642
787
  handleTextInput = (__runInitializers(this, _showModelControls_extraInitializers), (event) => {
643
788
  this.value = event.currentTarget.value;
789
+ this.resetSuggestionInteraction();
644
790
  this.emitInput(this.value);
645
791
  this.autogrow();
646
792
  });
647
793
  handleKeydown = (event) => {
794
+ if (event.isComposing || this.composing)
795
+ return;
648
796
  if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
649
797
  event.preventDefault();
650
798
  this.send();
651
799
  return;
652
800
  }
801
+ if (this.suggestionsVisible) {
802
+ if (event.key === 'Escape') {
803
+ event.preventDefault();
804
+ this.suggestionsDismissed = true;
805
+ return;
806
+ }
807
+ if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
808
+ if (event.key === 'ArrowDown') {
809
+ event.preventDefault();
810
+ this.moveActiveSuggestion(1);
811
+ return;
812
+ }
813
+ if (event.key === 'ArrowUp') {
814
+ event.preventDefault();
815
+ this.moveActiveSuggestion(-1);
816
+ return;
817
+ }
818
+ if (event.key === 'Enter') {
819
+ event.preventDefault();
820
+ void this.selectSuggestion(this.activeSuggestionIndex);
821
+ return;
822
+ }
823
+ }
824
+ }
653
825
  // Shift+Tab cycles the agent mode without leaving the prompt
654
826
  if (event.key === 'Tab' && event.shiftKey && this.modeOptions.length) {
655
827
  event.preventDefault();
@@ -659,6 +831,102 @@ let DeesHarnessComposer = (() => {
659
831
  this.emit('harness-mode-change', { mode: nextMode });
660
832
  }
661
833
  };
834
+ handleCompositionStart = () => {
835
+ this.composing = true;
836
+ };
837
+ handleCompositionEnd = () => {
838
+ this.composing = false;
839
+ };
840
+ handlePromptFocus = () => {
841
+ this.promptFocused = true;
842
+ };
843
+ handlePromptBlur = () => {
844
+ this.promptFocused = false;
845
+ };
846
+ handleSuggestionPointerDown = (event) => {
847
+ event.preventDefault();
848
+ };
849
+ resetSuggestionInteraction() {
850
+ this.activeSuggestionIndex = this.suggestions.length ? 0 : -1;
851
+ this.suggestionsDismissed = false;
852
+ }
853
+ get suggestionsVisible() {
854
+ return this.promptFocused
855
+ && !this.disabled
856
+ && !this.suggestionsDismissed
857
+ && this.suggestions.length > 0;
858
+ }
859
+ suggestionOptionId(indexArg) {
860
+ return `${this.suggestionListId}-option-${indexArg}`;
861
+ }
862
+ syncTextareaSuggestionAria() {
863
+ const textarea = this.shadowRoot?.querySelector('textarea');
864
+ if (!textarea)
865
+ return;
866
+ const suggestionsAvailable = !this.disabled && this.suggestions.length > 0;
867
+ if (suggestionsAvailable) {
868
+ textarea.setAttribute('aria-autocomplete', 'list');
869
+ textarea.setAttribute('aria-haspopup', 'listbox');
870
+ }
871
+ else {
872
+ textarea.removeAttribute('aria-autocomplete');
873
+ textarea.removeAttribute('aria-haspopup');
874
+ }
875
+ if (this.suggestionsVisible) {
876
+ textarea.setAttribute('aria-controls', this.suggestionListId);
877
+ }
878
+ else {
879
+ textarea.removeAttribute('aria-controls');
880
+ }
881
+ if (this.suggestionsVisible
882
+ && this.activeSuggestionIndex >= 0
883
+ && this.activeSuggestionIndex < this.suggestions.length) {
884
+ textarea.setAttribute('aria-activedescendant', this.suggestionOptionId(this.activeSuggestionIndex));
885
+ }
886
+ else {
887
+ textarea.removeAttribute('aria-activedescendant');
888
+ }
889
+ }
890
+ moveActiveSuggestion(offsetArg) {
891
+ if (!this.suggestions.length)
892
+ return;
893
+ this.activeSuggestionIndex = this.activeSuggestionIndex < 0
894
+ ? (offsetArg === 1 ? 0 : this.suggestions.length - 1)
895
+ : (this.activeSuggestionIndex + offsetArg + this.suggestions.length) % this.suggestions.length;
896
+ void this.scrollActiveSuggestionIntoView();
897
+ }
898
+ async scrollActiveSuggestionIntoView() {
899
+ await this.updateComplete;
900
+ const list = this.shadowRoot?.getElementById(this.suggestionListId);
901
+ const option = this.shadowRoot?.getElementById(this.suggestionOptionId(this.activeSuggestionIndex));
902
+ if (!list || !option)
903
+ return;
904
+ const optionTop = option.offsetTop;
905
+ const optionBottom = optionTop + option.offsetHeight;
906
+ if (optionTop < list.scrollTop) {
907
+ list.scrollTop = optionTop;
908
+ }
909
+ else if (optionBottom > list.scrollTop + list.clientHeight) {
910
+ list.scrollTop = optionBottom - list.clientHeight;
911
+ }
912
+ }
913
+ async selectSuggestion(indexArg) {
914
+ if (this.disabled)
915
+ return;
916
+ const suggestion = this.suggestions[indexArg];
917
+ if (!suggestion)
918
+ return;
919
+ this.value = suggestion.value;
920
+ this.suggestionsDismissed = true;
921
+ this.emitInput(this.value);
922
+ await this.updateComplete;
923
+ const textarea = this.shadowRoot?.querySelector('textarea');
924
+ if (!textarea)
925
+ return;
926
+ textarea.focus();
927
+ textarea.setSelectionRange(this.value.length, this.value.length);
928
+ this.autogrow();
929
+ }
662
930
  autogrow() {
663
931
  const textarea = this.shadowRoot?.querySelector('textarea');
664
932
  if (!textarea)
@@ -784,4 +1052,4 @@ let DeesHarnessComposer = (() => {
784
1052
  return DeesHarnessComposer = _classThis;
785
1053
  })();
786
1054
  export { DeesHarnessComposer };
787
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtY29tcG9zZXIvZGVlcy1oYXJuZXNzLWNvbXBvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNdEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEdBQ3hCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxpREFBaUQsQ0FBQztBQUN6RCxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sOENBQThDLENBQUM7QUFVdEQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQWdCLEVBQXFCLEVBQUUsQ0FDaEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFNLHdCQUF3QixHQUFHLENBQUMsTUFBZ0MsRUFBcUIsRUFBRSxDQUN2RixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FB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
1055
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNvbXBvc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtY29tcG9zZXIvZGVlcy1oYXJuZXNzLWNvbXBvc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBT3RELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLHVCQUF1QixHQUN4QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8saURBQWlELENBQUM7QUFDekQsT0FBTyxnRUFBZ0UsQ0FBQztBQUN4RSxPQUFPLDhDQUE4QyxDQUFDO0FBVXRELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFnQixFQUFxQixFQUFFLENBQ2hFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFekQsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQWdDLEVBQXFCLEVBQUUsQ0FDdkYsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFB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
@@ -69,6 +69,10 @@ export declare class DeesHarnessMessageList extends DeesElement {
69
69
  private lastVirtualViewportWidth;
70
70
  private pendingVirtualAnchor;
71
71
  private pendingFullAnchor;
72
+ private activeFullAnchor;
73
+ private fullAnchorRestoreGeneration;
74
+ private fullAnchorRestoreFrame;
75
+ private fullAnchorRestoreSecondFrame;
72
76
  private measurementAnchor;
73
77
  private pendingVirtualRepin;
74
78
  private virtualizationEnabled;
@@ -83,6 +87,8 @@ export declare class DeesHarnessMessageList extends DeesElement {
83
87
  willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
84
88
  private appendToolRun;
85
89
  private rebuildTimeline;
90
+ private contentKeysForTimelineItem;
91
+ private lastContentKeyForTimelineItem;
86
92
  private pruneViewState;
87
93
  private clearTranscriptViewState;
88
94
  private syncSubtaskViewState;
@@ -147,6 +153,8 @@ export declare class DeesHarnessMessageList extends DeesElement {
147
153
  private captureVirtualOffsetAnchorAt;
148
154
  private restoreVirtualAnchor;
149
155
  private restoreFullAnchor;
156
+ private scheduleFullAnchorRestore;
157
+ private cancelFullAnchorRestore;
150
158
  private virtualLocalScrollTop;
151
159
  private virtualIndexAtOffset;
152
160
  private scheduleVirtualRangeUpdate;