@design.estate/dees-catalog 6.7.0 → 6.8.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_bundle/bundle.js +1153 -193
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +2 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +57 -17
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +92 -6
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +921 -49
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +5 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +42 -7
- package/dist_ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.d.ts +6 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.js +53 -14
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +2 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +13 -3
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +31 -13
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +9 -3
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +6 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +135 -13
- package/dist_ts_web/elements/00group-harness/harness.styles.js +16 -13
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +30 -0
- package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +2 -0
- package/dist_ts_web/elements/00group-harness/toolregistry.js +7 -1
- package/package.json +2 -2
- package/readme.md +4 -2
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +53 -15
- package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +943 -51
- package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +37 -8
- package/ts_web/elements/00group-harness/dees-harness-question-card/dees-harness-question-card.ts +40 -12
- package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +6 -2
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +30 -12
- package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +8 -2
- package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +119 -11
- package/ts_web/elements/00group-harness/harness.styles.ts +15 -12
- package/ts_web/elements/00group-harness/interfaces.ts +34 -0
- package/ts_web/elements/00group-harness/toolregistry.ts +7 -0
package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js
CHANGED
|
@@ -44,12 +44,15 @@ import '../dees-harness-question-card/dees-harness-question-card.js';
|
|
|
44
44
|
import '../../00group-utility/dees-icon/dees-icon.js';
|
|
45
45
|
const { repeat } = directives;
|
|
46
46
|
const pinThresholdPx = 48;
|
|
47
|
+
const virtualizationThreshold = 40;
|
|
48
|
+
const virtualOverscanPx = 800;
|
|
49
|
+
const virtualGapPx = 8;
|
|
50
|
+
const maximumToolMessagesPerGroup = 4;
|
|
47
51
|
/**
|
|
48
|
-
* Scrollable, streaming-safe message log.
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* "jump to latest" chip instead of yanking the scroll position.
|
|
52
|
+
* Scrollable, streaming-safe message log. Short transcripts keep stable keyed
|
|
53
|
+
* DOM; long transcripts mount a bounded, measured window and retain row state
|
|
54
|
+
* by id. `applyDelta()` targets a mounted row or updates its offscreen model.
|
|
55
|
+
* Auto-follow stays at the bottom until the user intentionally scrolls away.
|
|
53
56
|
*/
|
|
54
57
|
let DeesHarnessMessageList = (() => {
|
|
55
58
|
let _classDecorators = [customElement('dees-harness-message-list')];
|
|
@@ -84,6 +87,9 @@ let DeesHarnessMessageList = (() => {
|
|
|
84
87
|
let _toolRegistry_decorators;
|
|
85
88
|
let _toolRegistry_initializers = [];
|
|
86
89
|
let _toolRegistry_extraInitializers = [];
|
|
90
|
+
let _viewState_decorators;
|
|
91
|
+
let _viewState_initializers = [];
|
|
92
|
+
let _viewState_extraInitializers = [];
|
|
87
93
|
let _allowSubtaskStreams_decorators;
|
|
88
94
|
let _allowSubtaskStreams_initializers = [];
|
|
89
95
|
let _allowSubtaskStreams_extraInitializers = [];
|
|
@@ -124,6 +130,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
124
130
|
_hideScrollbar_decorators = [property({ type: Boolean })];
|
|
125
131
|
_fadeScrollEdges_decorators = [property({ type: Boolean })];
|
|
126
132
|
_toolRegistry_decorators = [property({ attribute: false })];
|
|
133
|
+
_viewState_decorators = [property({ attribute: false })];
|
|
127
134
|
_allowSubtaskStreams_decorators = [property({ type: Boolean })];
|
|
128
135
|
_showRoles_decorators = [property({ type: Boolean })];
|
|
129
136
|
_showTimestamps_decorators = [property({ type: Boolean })];
|
|
@@ -142,6 +149,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
142
149
|
__esDecorate(this, null, _hideScrollbar_decorators, { kind: "accessor", name: "hideScrollbar", static: false, private: false, access: { has: obj => "hideScrollbar" in obj, get: obj => obj.hideScrollbar, set: (obj, value) => { obj.hideScrollbar = value; } }, metadata: _metadata }, _hideScrollbar_initializers, _hideScrollbar_extraInitializers);
|
|
143
150
|
__esDecorate(this, null, _fadeScrollEdges_decorators, { kind: "accessor", name: "fadeScrollEdges", static: false, private: false, access: { has: obj => "fadeScrollEdges" in obj, get: obj => obj.fadeScrollEdges, set: (obj, value) => { obj.fadeScrollEdges = value; } }, metadata: _metadata }, _fadeScrollEdges_initializers, _fadeScrollEdges_extraInitializers);
|
|
144
151
|
__esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
|
|
152
|
+
__esDecorate(this, null, _viewState_decorators, { kind: "accessor", name: "viewState", static: false, private: false, access: { has: obj => "viewState" in obj, get: obj => obj.viewState, set: (obj, value) => { obj.viewState = value; } }, metadata: _metadata }, _viewState_initializers, _viewState_extraInitializers);
|
|
145
153
|
__esDecorate(this, null, _allowSubtaskStreams_decorators, { kind: "accessor", name: "allowSubtaskStreams", static: false, private: false, access: { has: obj => "allowSubtaskStreams" in obj, get: obj => obj.allowSubtaskStreams, set: (obj, value) => { obj.allowSubtaskStreams = value; } }, metadata: _metadata }, _allowSubtaskStreams_initializers, _allowSubtaskStreams_extraInitializers);
|
|
146
154
|
__esDecorate(this, null, _showRoles_decorators, { kind: "accessor", name: "showRoles", static: false, private: false, access: { has: obj => "showRoles" in obj, get: obj => obj.showRoles, set: (obj, value) => { obj.showRoles = value; } }, metadata: _metadata }, _showRoles_initializers, _showRoles_extraInitializers);
|
|
147
155
|
__esDecorate(this, null, _showTimestamps_decorators, { kind: "accessor", name: "showTimestamps", static: false, private: false, access: { has: obj => "showTimestamps" in obj, get: obj => obj.showTimestamps, set: (obj, value) => { obj.showTimestamps = value; } }, metadata: _metadata }, _showTimestamps_initializers, _showTimestamps_extraInitializers);
|
|
@@ -187,7 +195,10 @@ let DeesHarnessMessageList = (() => {
|
|
|
187
195
|
#toolRegistry_accessor_storage = (__runInitializers(this, _fadeScrollEdges_extraInitializers), __runInitializers(this, _toolRegistry_initializers, DeesHarnessToolRegistry.default));
|
|
188
196
|
get toolRegistry() { return this.#toolRegistry_accessor_storage; }
|
|
189
197
|
set toolRegistry(value) { this.#toolRegistry_accessor_storage = value; }
|
|
190
|
-
#
|
|
198
|
+
#viewState_accessor_storage = (__runInitializers(this, _toolRegistry_extraInitializers), __runInitializers(this, _viewState_initializers, undefined));
|
|
199
|
+
get viewState() { return this.#viewState_accessor_storage; }
|
|
200
|
+
set viewState(value) { this.#viewState_accessor_storage = value; }
|
|
201
|
+
#allowSubtaskStreams_accessor_storage = (__runInitializers(this, _viewState_extraInitializers), __runInitializers(this, _allowSubtaskStreams_initializers, true));
|
|
191
202
|
/** Nested transcripts set this false to prevent recursive inline streams. */
|
|
192
203
|
get allowSubtaskStreams() { return this.#allowSubtaskStreams_accessor_storage; }
|
|
193
204
|
set allowSubtaskStreams(value) { this.#allowSubtaskStreams_accessor_storage = value; }
|
|
@@ -218,6 +229,41 @@ let DeesHarnessMessageList = (() => {
|
|
|
218
229
|
toolGroupIdByMessageId = (__runInitializers(this, _scrollFadeBottom_extraInitializers), new Map());
|
|
219
230
|
nextToolGroupId = 1;
|
|
220
231
|
timelineRenderItems = [];
|
|
232
|
+
timelineRegistryRevision = -1;
|
|
233
|
+
knownContentKeys = new Set();
|
|
234
|
+
currentNewContentKeys = new Set();
|
|
235
|
+
localViewState = {
|
|
236
|
+
messages: {},
|
|
237
|
+
permissions: {},
|
|
238
|
+
questions: {},
|
|
239
|
+
};
|
|
240
|
+
measuredVirtualHeights = new Map();
|
|
241
|
+
timelineIndexByKey = new Map();
|
|
242
|
+
virtualOffsets = [];
|
|
243
|
+
virtualTotalHeight = 0;
|
|
244
|
+
virtualStartIndex = 0;
|
|
245
|
+
virtualEndIndex = 0;
|
|
246
|
+
retainedVirtualKeys = new Set();
|
|
247
|
+
selectionGestureKeys = new Set();
|
|
248
|
+
selectionGestureActive = false;
|
|
249
|
+
selectionGestureStartOwner;
|
|
250
|
+
selectionGestureCrossesOwners = false;
|
|
251
|
+
selectionGestureSnapshot;
|
|
252
|
+
explicitRetainedVirtualKey;
|
|
253
|
+
virtualRowResizeObserver = null;
|
|
254
|
+
virtualViewportResizeObserver = null;
|
|
255
|
+
virtualMeasureFrame = null;
|
|
256
|
+
virtualRangeFrame = null;
|
|
257
|
+
lastVirtualViewportWidth = 0;
|
|
258
|
+
pendingVirtualAnchor;
|
|
259
|
+
pendingFullAnchor;
|
|
260
|
+
measurementAnchor;
|
|
261
|
+
pendingVirtualRepin = false;
|
|
262
|
+
virtualizationEnabled = false;
|
|
263
|
+
virtualizationEnablePending = false;
|
|
264
|
+
virtualizationDisablePending = false;
|
|
265
|
+
virtualizationActivationFrame = null;
|
|
266
|
+
selectionChangeListening = false;
|
|
221
267
|
static styles = [
|
|
222
268
|
themeDefaultStyles,
|
|
223
269
|
cssManager.defaultStyles,
|
|
@@ -234,6 +280,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
234
280
|
.scroll {
|
|
235
281
|
height: 100%;
|
|
236
282
|
overflow-y: auto;
|
|
283
|
+
overflow-anchor: none;
|
|
237
284
|
overscroll-behavior: contain;
|
|
238
285
|
scrollbar-width: thin;
|
|
239
286
|
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
|
|
@@ -302,6 +349,19 @@ let DeesHarnessMessageList = (() => {
|
|
|
302
349
|
grid-column: 1 / -1;
|
|
303
350
|
}
|
|
304
351
|
|
|
352
|
+
.virtualStack {
|
|
353
|
+
position: relative;
|
|
354
|
+
flex: 0 0 auto;
|
|
355
|
+
min-width: 0;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.virtualItem {
|
|
359
|
+
position: absolute;
|
|
360
|
+
inset: 0 0 auto;
|
|
361
|
+
min-width: 0;
|
|
362
|
+
transform: translate3d(0, var(--harness-virtual-offset), 0);
|
|
363
|
+
}
|
|
364
|
+
|
|
305
365
|
.toolGroup {
|
|
306
366
|
min-width: 0;
|
|
307
367
|
}
|
|
@@ -484,23 +544,250 @@ let DeesHarnessMessageList = (() => {
|
|
|
484
544
|
}
|
|
485
545
|
willUpdate(changedProperties) {
|
|
486
546
|
super.willUpdate(changedProperties);
|
|
487
|
-
|
|
547
|
+
if (changedProperties.has('viewState') && this.viewState) {
|
|
548
|
+
this.clearTranscriptViewState(this.localViewState);
|
|
549
|
+
}
|
|
550
|
+
const registryChanged = this.timelineRegistryRevision !== this.toolRegistry.revision;
|
|
551
|
+
if (this.timelineRegistryRevision < 0
|
|
552
|
+
|| changedProperties.has('messages')
|
|
553
|
+
|| changedProperties.has('permissions')
|
|
554
|
+
|| changedProperties.has('questions')
|
|
555
|
+
|| changedProperties.has('toolRegistry')
|
|
556
|
+
|| changedProperties.has('viewState')
|
|
557
|
+
|| registryChanged) {
|
|
558
|
+
this.rebuildTimeline();
|
|
559
|
+
}
|
|
488
560
|
}
|
|
489
561
|
appendToolRun(targetArg, runArg, layoutArg, usedGroupIdsArg) {
|
|
490
|
-
|
|
491
|
-
.
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
562
|
+
for (let offset = 0; offset < runArg.length; offset += maximumToolMessagesPerGroup) {
|
|
563
|
+
const messages = runArg.slice(offset, offset + maximumToolMessagesPerGroup);
|
|
564
|
+
const groupId = messages
|
|
565
|
+
.map((item) => this.toolGroupIdByMessageId.get(item.message.id))
|
|
566
|
+
.find((candidate) => candidate !== undefined && !usedGroupIdsArg.has(candidate))
|
|
567
|
+
?? `tool-group-${this.nextToolGroupId++}`;
|
|
568
|
+
usedGroupIdsArg.add(groupId);
|
|
569
|
+
for (const item of messages) {
|
|
570
|
+
this.toolGroupIdByMessageId.set(item.message.id, groupId);
|
|
571
|
+
}
|
|
572
|
+
targetArg.push({
|
|
573
|
+
kind: 'tool-group',
|
|
574
|
+
key: groupId,
|
|
575
|
+
layout: layoutArg,
|
|
576
|
+
messages,
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
rebuildTimeline() {
|
|
581
|
+
const container = this.scrollContainer;
|
|
582
|
+
const preserveAnchor = this.userUnpinned || !this.autoFollow;
|
|
583
|
+
const anchor = container && preserveAnchor
|
|
584
|
+
? this.captureCurrentAnchor(container)
|
|
585
|
+
: undefined;
|
|
586
|
+
const nextItems = this.buildTimelineRenderItems();
|
|
587
|
+
const retainedKeys = new Set(nextItems.map((item) => item.key));
|
|
588
|
+
const contentKeys = [
|
|
589
|
+
...this.messages.map((message) => `message:${message.id}`),
|
|
590
|
+
...this.permissions.map((request) => `permission:${request.id}`),
|
|
591
|
+
...this.questions.map((request) => `question:${request.id}`),
|
|
592
|
+
];
|
|
593
|
+
this.currentNewContentKeys = new Set(contentKeys.filter((key) => !this.knownContentKeys.has(key)));
|
|
594
|
+
this.knownContentKeys.clear();
|
|
595
|
+
for (const key of contentKeys)
|
|
596
|
+
this.knownContentKeys.add(key);
|
|
597
|
+
for (const key of this.measuredVirtualHeights.keys()) {
|
|
598
|
+
if (!retainedKeys.has(key))
|
|
599
|
+
this.measuredVirtualHeights.delete(key);
|
|
600
|
+
}
|
|
601
|
+
if (this.explicitRetainedVirtualKey && !retainedKeys.has(this.explicitRetainedVirtualKey)) {
|
|
602
|
+
this.explicitRetainedVirtualKey = undefined;
|
|
603
|
+
}
|
|
604
|
+
for (const key of this.retainedVirtualKeys) {
|
|
605
|
+
if (!retainedKeys.has(key))
|
|
606
|
+
this.retainedVirtualKeys.delete(key);
|
|
607
|
+
}
|
|
608
|
+
const messageIds = new Set(this.messages.map((message) => message.id));
|
|
609
|
+
const permissionIds = new Set(this.permissions.map((request) => request.id));
|
|
610
|
+
const questionIds = new Set(this.questions.map((request) => request.id));
|
|
611
|
+
const effectiveViewState = this.effectiveViewState;
|
|
612
|
+
for (const key of Object.keys(effectiveViewState.messages)) {
|
|
613
|
+
if (!messageIds.has(key))
|
|
614
|
+
delete effectiveViewState.messages[key];
|
|
615
|
+
}
|
|
616
|
+
for (const key of Object.keys(effectiveViewState.permissions)) {
|
|
617
|
+
if (!permissionIds.has(key))
|
|
618
|
+
delete effectiveViewState.permissions[key];
|
|
619
|
+
}
|
|
620
|
+
for (const key of Object.keys(effectiveViewState.questions)) {
|
|
621
|
+
if (!questionIds.has(key))
|
|
622
|
+
delete effectiveViewState.questions[key];
|
|
623
|
+
}
|
|
624
|
+
for (const message of this.messages)
|
|
625
|
+
effectiveViewState.messages[message.id] ??= {};
|
|
626
|
+
for (const request of this.permissions)
|
|
627
|
+
effectiveViewState.permissions[request.id] ??= {};
|
|
628
|
+
for (const request of this.questions)
|
|
629
|
+
effectiveViewState.questions[request.id] ??= {};
|
|
630
|
+
for (const message of this.messages)
|
|
631
|
+
this.syncSubtaskViewState(message);
|
|
632
|
+
this.timelineRenderItems = nextItems;
|
|
633
|
+
this.timelineIndexByKey = new Map(nextItems.map((item, index) => [item.key, index]));
|
|
634
|
+
this.timelineRegistryRevision = this.toolRegistry.revision;
|
|
635
|
+
const shouldVirtualize = contentKeys.length > virtualizationThreshold;
|
|
636
|
+
if (!this.virtualizationEnabled && shouldVirtualize) {
|
|
637
|
+
this.virtualizationDisablePending = false;
|
|
638
|
+
if (this.activeTimelineKey()) {
|
|
639
|
+
this.virtualizationEnablePending = true;
|
|
640
|
+
this.connectSelectionChangeListener();
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
this.captureFullTimelineMeasurements();
|
|
644
|
+
this.virtualizationEnabled = true;
|
|
645
|
+
this.virtualizationEnablePending = false;
|
|
646
|
+
this.disconnectSelectionChangeListener();
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
else if (this.virtualizationEnabled && !shouldVirtualize) {
|
|
650
|
+
this.virtualizationEnablePending = false;
|
|
651
|
+
if (this.activeTimelineKey()) {
|
|
652
|
+
this.virtualizationDisablePending = true;
|
|
653
|
+
this.connectSelectionChangeListener();
|
|
654
|
+
}
|
|
655
|
+
else {
|
|
656
|
+
this.virtualizationEnabled = false;
|
|
657
|
+
this.virtualizationDisablePending = false;
|
|
658
|
+
this.retainedVirtualKeys.clear();
|
|
659
|
+
this.disconnectSelectionChangeListener();
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
else {
|
|
663
|
+
this.virtualizationEnablePending = false;
|
|
664
|
+
this.virtualizationDisablePending = false;
|
|
665
|
+
if (this.activeSelectionKeys().length === 0)
|
|
666
|
+
this.disconnectSelectionChangeListener();
|
|
667
|
+
}
|
|
668
|
+
this.recomputeVirtualOffsets();
|
|
669
|
+
if (anchor && container) {
|
|
670
|
+
if (this.virtualizationActive) {
|
|
671
|
+
this.pendingVirtualAnchor = anchor;
|
|
672
|
+
this.measurementAnchor = anchor;
|
|
673
|
+
this.setVirtualRangeAround(anchor.key);
|
|
674
|
+
}
|
|
675
|
+
else {
|
|
676
|
+
this.pendingVirtualAnchor = undefined;
|
|
677
|
+
this.pendingFullAnchor = anchor;
|
|
678
|
+
this.setInitialVirtualRange();
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
else {
|
|
682
|
+
this.measurementAnchor = undefined;
|
|
683
|
+
this.setInitialVirtualRange();
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
pruneViewState(stateArg, messageIdsArg, permissionIdsArg, questionIdsArg) {
|
|
687
|
+
const messageIds = new Set(messageIdsArg);
|
|
688
|
+
const permissionIds = new Set(permissionIdsArg);
|
|
689
|
+
const questionIds = new Set(questionIdsArg);
|
|
690
|
+
for (const key of Object.keys(stateArg.messages))
|
|
691
|
+
if (!messageIds.has(key))
|
|
692
|
+
delete stateArg.messages[key];
|
|
693
|
+
for (const key of Object.keys(stateArg.permissions))
|
|
694
|
+
if (!permissionIds.has(key))
|
|
695
|
+
delete stateArg.permissions[key];
|
|
696
|
+
for (const key of Object.keys(stateArg.questions))
|
|
697
|
+
if (!questionIds.has(key))
|
|
698
|
+
delete stateArg.questions[key];
|
|
699
|
+
}
|
|
700
|
+
clearTranscriptViewState(stateArg) {
|
|
701
|
+
for (const key of Object.keys(stateArg.messages))
|
|
702
|
+
delete stateArg.messages[key];
|
|
703
|
+
for (const key of Object.keys(stateArg.permissions))
|
|
704
|
+
delete stateArg.permissions[key];
|
|
705
|
+
for (const key of Object.keys(stateArg.questions))
|
|
706
|
+
delete stateArg.questions[key];
|
|
707
|
+
}
|
|
708
|
+
syncSubtaskViewState(messageArg) {
|
|
709
|
+
const messageState = this.effectiveViewState.messages[messageArg.id];
|
|
710
|
+
if (!messageState)
|
|
711
|
+
return;
|
|
712
|
+
const subtask = messageArg.toolCall?.subtask;
|
|
713
|
+
if (!this.allowSubtaskStreams
|
|
714
|
+
|| !subtask
|
|
715
|
+
|| subtask.previewState !== 'ready'
|
|
716
|
+
|| subtask.status.type !== 'busy') {
|
|
717
|
+
delete messageState.subtaskTranscript;
|
|
718
|
+
delete messageState.subtaskTranscriptSessionId;
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
if (messageState.subtaskTranscriptSessionId !== subtask.sessionId
|
|
722
|
+
|| !messageState.subtaskTranscript) {
|
|
723
|
+
messageState.subtaskTranscriptSessionId = subtask.sessionId;
|
|
724
|
+
messageState.subtaskTranscript = { messages: {}, permissions: {}, questions: {} };
|
|
725
|
+
}
|
|
726
|
+
this.pruneViewState(messageState.subtaskTranscript, subtask.messages.map((entry) => entry.id), (subtask.permissions ?? []).map((entry) => entry.id), (subtask.questions ?? []).map((entry) => entry.id));
|
|
727
|
+
}
|
|
728
|
+
get virtualizationActive() {
|
|
729
|
+
return this.virtualizationEnabled;
|
|
730
|
+
}
|
|
731
|
+
estimatedVirtualHeight(itemArg) {
|
|
732
|
+
if (itemArg.kind === 'permission')
|
|
733
|
+
return 150;
|
|
734
|
+
if (itemArg.kind === 'question')
|
|
735
|
+
return 180;
|
|
736
|
+
if (itemArg.kind === 'tool-group') {
|
|
737
|
+
if (itemArg.layout === 'subtask')
|
|
738
|
+
return 320;
|
|
739
|
+
return itemArg.layout === 'full-row' ? 120 * itemArg.messages.length : 110;
|
|
740
|
+
}
|
|
741
|
+
if (itemArg.message.reasoning?.some((part) => !part.endedAt))
|
|
742
|
+
return 220;
|
|
743
|
+
return itemArg.message.text.length > 1_000 ? 180 : 96;
|
|
744
|
+
}
|
|
745
|
+
recomputeVirtualOffsets() {
|
|
746
|
+
const offsets = [];
|
|
747
|
+
let offset = 0;
|
|
748
|
+
for (const item of this.timelineRenderItems) {
|
|
749
|
+
offsets.push(offset);
|
|
750
|
+
offset += this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item);
|
|
751
|
+
offset += virtualGapPx;
|
|
752
|
+
}
|
|
753
|
+
this.virtualOffsets = offsets;
|
|
754
|
+
this.virtualTotalHeight = Math.max(0, offset - virtualGapPx);
|
|
755
|
+
}
|
|
756
|
+
setInitialVirtualRange() {
|
|
757
|
+
if (!this.virtualizationActive) {
|
|
758
|
+
this.virtualStartIndex = 0;
|
|
759
|
+
this.virtualEndIndex = this.timelineRenderItems.length;
|
|
760
|
+
return;
|
|
761
|
+
}
|
|
762
|
+
const initialCount = Math.min(this.timelineRenderItems.length, 24);
|
|
763
|
+
this.virtualEndIndex = this.autoFollow ? this.timelineRenderItems.length : initialCount;
|
|
764
|
+
this.virtualStartIndex = this.autoFollow ? this.virtualEndIndex - initialCount : 0;
|
|
765
|
+
}
|
|
766
|
+
setVirtualRangeAround(keyArg) {
|
|
767
|
+
const anchorIndex = this.timelineIndexByKey.get(keyArg);
|
|
768
|
+
if (anchorIndex === undefined) {
|
|
769
|
+
this.setInitialVirtualRange();
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
this.virtualStartIndex = Math.max(0, anchorIndex - 12);
|
|
773
|
+
this.virtualEndIndex = Math.min(this.timelineRenderItems.length, anchorIndex + 13);
|
|
774
|
+
}
|
|
775
|
+
captureFullTimelineMeasurements() {
|
|
776
|
+
for (const element of this.shadowRoot?.querySelectorAll('.stack > [data-timeline-key]') ?? []) {
|
|
777
|
+
const key = element.dataset.timelineKey;
|
|
778
|
+
const height = element?.getBoundingClientRect().height ?? 0;
|
|
779
|
+
if (key && height > 0)
|
|
780
|
+
this.measuredVirtualHeights.set(key, height);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
captureCurrentAnchor(containerArg) {
|
|
784
|
+
if (this.virtualizationActive)
|
|
785
|
+
return this.captureVirtualAnchor(containerArg);
|
|
786
|
+
const containerTop = containerArg.getBoundingClientRect().top;
|
|
787
|
+
const itemElements = Array.from(this.shadowRoot?.querySelectorAll('.stack > [data-timeline-key]') ?? []);
|
|
788
|
+
const element = itemElements.find((candidate) => candidate.getBoundingClientRect().bottom > containerTop);
|
|
789
|
+
const key = element?.dataset.timelineKey;
|
|
790
|
+
return key ? { key, offset: containerTop - element.getBoundingClientRect().top } : undefined;
|
|
504
791
|
}
|
|
505
792
|
render() {
|
|
506
793
|
const items = this.timelineRenderItems;
|
|
@@ -510,33 +797,18 @@ let DeesHarnessMessageList = (() => {
|
|
|
510
797
|
@scroll=${this.handleScroll}
|
|
511
798
|
@wheel=${this.handleUserScrollIntent}
|
|
512
799
|
@touchmove=${this.handleUserScrollIntent}
|
|
513
|
-
@pointerdown=${this.
|
|
800
|
+
@pointerdown=${this.handlePointerDown}
|
|
801
|
+
@pointerup=${this.handlePointerUp}
|
|
802
|
+
@pointercancel=${this.handlePointerCancel}
|
|
514
803
|
@keydown=${this.handleUserScrollIntent}
|
|
804
|
+
@keyup=${this.handleProtectedStateChange}
|
|
805
|
+
@focusout=${this.handleProtectedStateChange}
|
|
806
|
+
@harness-card-retention=${this.handleCardRetention}
|
|
515
807
|
>
|
|
516
808
|
<div class="scrollContent">
|
|
517
809
|
<slot name="leading"></slot>
|
|
518
810
|
${items.length
|
|
519
|
-
?
|
|
520
|
-
<div class="stack">
|
|
521
|
-
${repeat(items, (item) => item.key, (item) => item.kind === 'tool-group'
|
|
522
|
-
? this.renderToolGroup(item)
|
|
523
|
-
: item.kind === 'message'
|
|
524
|
-
? this.renderMessage(item)
|
|
525
|
-
: item.kind === 'permission'
|
|
526
|
-
? html `
|
|
527
|
-
<dees-harness-permission-card
|
|
528
|
-
.request=${item.request}
|
|
529
|
-
.busy=${this.permissionsBusy}
|
|
530
|
-
></dees-harness-permission-card>
|
|
531
|
-
`
|
|
532
|
-
: html `
|
|
533
|
-
<dees-harness-question-card
|
|
534
|
-
.request=${item.question}
|
|
535
|
-
.busy=${this.permissionsBusy}
|
|
536
|
-
></dees-harness-question-card>
|
|
537
|
-
`)}
|
|
538
|
-
</div>
|
|
539
|
-
`
|
|
811
|
+
? this.virtualizationActive ? this.renderVirtualTimeline() : this.renderFullTimeline(items)
|
|
540
812
|
: html `
|
|
541
813
|
<div class="empty">
|
|
542
814
|
<slot name="empty">
|
|
@@ -560,9 +832,85 @@ let DeesHarnessMessageList = (() => {
|
|
|
560
832
|
: ''}
|
|
561
833
|
`;
|
|
562
834
|
}
|
|
563
|
-
|
|
835
|
+
renderFullTimeline(itemsArg) {
|
|
836
|
+
return html `
|
|
837
|
+
<div class="stack" role="log" aria-label="Conversation transcript">
|
|
838
|
+
${repeat(itemsArg, (item) => item.key, (item, index) => this.renderTimelineItem(item, index))}
|
|
839
|
+
</div>
|
|
840
|
+
`;
|
|
841
|
+
}
|
|
842
|
+
renderVirtualTimeline() {
|
|
843
|
+
const indexedItems = this.virtualRenderedIndexes().map((index) => ({
|
|
844
|
+
index,
|
|
845
|
+
item: this.timelineRenderItems[index],
|
|
846
|
+
}));
|
|
847
|
+
return html `
|
|
848
|
+
<div
|
|
849
|
+
class="virtualStack"
|
|
850
|
+
role="log"
|
|
851
|
+
aria-label="Conversation transcript"
|
|
852
|
+
style=${`height: ${this.virtualTotalHeight}px;`}
|
|
853
|
+
>
|
|
854
|
+
${repeat(indexedItems, (entry) => entry.item.key, (entry) => html `
|
|
855
|
+
<article
|
|
856
|
+
class="virtualItem"
|
|
857
|
+
data-virtual-key=${entry.item.key}
|
|
858
|
+
aria-posinset=${entry.index + 1}
|
|
859
|
+
aria-setsize=${this.timelineRenderItems.length}
|
|
860
|
+
style=${`--harness-virtual-offset: ${this.virtualOffsets[entry.index] ?? 0}px;`}
|
|
861
|
+
>
|
|
862
|
+
${this.renderTimelineItem(entry.item, entry.index)}
|
|
863
|
+
</article>
|
|
864
|
+
`)}
|
|
865
|
+
</div>
|
|
866
|
+
`;
|
|
867
|
+
}
|
|
868
|
+
virtualRenderedIndexes() {
|
|
869
|
+
const indexes = [];
|
|
870
|
+
for (let index = this.virtualStartIndex; index < this.virtualEndIndex; index += 1) {
|
|
871
|
+
indexes.push(index);
|
|
872
|
+
}
|
|
873
|
+
for (const retainedKey of this.retainedVirtualKeys) {
|
|
874
|
+
const retainedIndex = this.timelineIndexByKey.get(retainedKey);
|
|
875
|
+
if (retainedIndex !== undefined && !indexes.includes(retainedIndex))
|
|
876
|
+
indexes.push(retainedIndex);
|
|
877
|
+
}
|
|
878
|
+
return indexes.sort((left, right) => left - right);
|
|
879
|
+
}
|
|
880
|
+
renderTimelineItem(itemArg, logicalIndexArg) {
|
|
881
|
+
if (itemArg.kind === 'tool-group')
|
|
882
|
+
return this.renderToolGroup(itemArg);
|
|
883
|
+
if (itemArg.kind === 'message')
|
|
884
|
+
return this.renderMessage(itemArg, itemArg.key);
|
|
885
|
+
if (itemArg.kind === 'permission') {
|
|
886
|
+
return html `
|
|
887
|
+
<dees-harness-permission-card
|
|
888
|
+
data-timeline-key=${itemArg.key}
|
|
889
|
+
aria-posinset=${logicalIndexArg + 1}
|
|
890
|
+
aria-setsize=${this.timelineRenderItems.length}
|
|
891
|
+
.request=${itemArg.request}
|
|
892
|
+
.busy=${this.permissionsBusy}
|
|
893
|
+
.viewState=${this.permissionViewState(itemArg.request.id)}
|
|
894
|
+
.suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
|
|
895
|
+
></dees-harness-permission-card>
|
|
896
|
+
`;
|
|
897
|
+
}
|
|
898
|
+
return html `
|
|
899
|
+
<dees-harness-question-card
|
|
900
|
+
data-timeline-key=${itemArg.key}
|
|
901
|
+
aria-posinset=${logicalIndexArg + 1}
|
|
902
|
+
aria-setsize=${this.timelineRenderItems.length}
|
|
903
|
+
.request=${itemArg.question}
|
|
904
|
+
.busy=${this.permissionsBusy}
|
|
905
|
+
.viewState=${this.questionViewState(itemArg.question.id)}
|
|
906
|
+
.suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
|
|
907
|
+
></dees-harness-question-card>
|
|
908
|
+
`;
|
|
909
|
+
}
|
|
910
|
+
renderMessage(itemArg, timelineKeyArg) {
|
|
564
911
|
return html `
|
|
565
912
|
<dees-harness-message
|
|
913
|
+
data-timeline-key=${timelineKeyArg}
|
|
566
914
|
data-message-id=${itemArg.message.id}
|
|
567
915
|
data-tool-layout=${itemArg.toolLayout ?? 'message'}
|
|
568
916
|
.message=${itemArg.message}
|
|
@@ -570,21 +918,35 @@ let DeesHarnessMessageList = (() => {
|
|
|
570
918
|
.showTimestamp=${this.showTimestamps}
|
|
571
919
|
.toolRegistry=${this.toolRegistry}
|
|
572
920
|
.allowSubtaskStreams=${this.allowSubtaskStreams}
|
|
573
|
-
.
|
|
921
|
+
.viewState=${this.messageViewState(itemArg.message.id)}
|
|
922
|
+
.suppressEntry=${!this.entryAnimationsEnabled || !this.currentNewContentKeys.has(itemArg.key)}
|
|
574
923
|
></dees-harness-message>
|
|
575
924
|
`;
|
|
576
925
|
}
|
|
926
|
+
messageViewState(messageIdArg) {
|
|
927
|
+
return this.effectiveViewState.messages[messageIdArg];
|
|
928
|
+
}
|
|
929
|
+
permissionViewState(requestIdArg) {
|
|
930
|
+
return this.effectiveViewState.permissions[requestIdArg];
|
|
931
|
+
}
|
|
932
|
+
questionViewState(requestIdArg) {
|
|
933
|
+
return this.effectiveViewState.questions[requestIdArg];
|
|
934
|
+
}
|
|
935
|
+
get effectiveViewState() {
|
|
936
|
+
return this.viewState ?? this.localViewState;
|
|
937
|
+
}
|
|
577
938
|
renderToolGroup(groupArg) {
|
|
578
939
|
const count = groupArg.messages.length;
|
|
579
940
|
const countClass = count >= 4 ? 'toolCount4' : `toolCount${count}`;
|
|
580
941
|
return html `
|
|
581
942
|
<section
|
|
582
943
|
class="toolGroup"
|
|
944
|
+
data-timeline-key=${groupArg.key}
|
|
583
945
|
data-tool-group-id=${groupArg.key}
|
|
584
946
|
data-tool-layout=${groupArg.layout}
|
|
585
947
|
>
|
|
586
948
|
<div class=${`toolGrid ${countClass}`}>
|
|
587
|
-
${repeat(groupArg.messages, (item) => item.key, (item) => this.renderMessage(item))}
|
|
949
|
+
${repeat(groupArg.messages, (item) => item.key, (item) => this.renderMessage(item, groupArg.key))}
|
|
588
950
|
</div>
|
|
589
951
|
</section>
|
|
590
952
|
`;
|
|
@@ -644,9 +1006,15 @@ let DeesHarnessMessageList = (() => {
|
|
|
644
1006
|
harnessApplyMessageDelta(this.messages, delta);
|
|
645
1007
|
break;
|
|
646
1008
|
case 'tool-update':
|
|
1009
|
+
const previousLayout = message.toolCall ? this.toolRegistry.resolveLayout(message.toolCall) : null;
|
|
647
1010
|
message.toolCall = { ...(message.toolCall ?? { id: delta.tool.id, name: '', status: 'pending' }), ...delta.tool };
|
|
1011
|
+
const nextLayout = this.toolRegistry.resolveLayout(message.toolCall);
|
|
1012
|
+
this.syncSubtaskViewState(message);
|
|
648
1013
|
element?.requestUpdate();
|
|
649
|
-
|
|
1014
|
+
if (previousLayout !== nextLayout) {
|
|
1015
|
+
this.rebuildTimeline();
|
|
1016
|
+
this.requestUpdate();
|
|
1017
|
+
}
|
|
650
1018
|
break;
|
|
651
1019
|
case 'message-end':
|
|
652
1020
|
if (element)
|
|
@@ -730,6 +1098,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
730
1098
|
if (event.type === 'pointerdown' && event.target !== this.scrollContainer)
|
|
731
1099
|
return;
|
|
732
1100
|
this.userUnpinned = true;
|
|
1101
|
+
this.measurementAnchor = undefined;
|
|
733
1102
|
};
|
|
734
1103
|
scrollToBottom(force = false) {
|
|
735
1104
|
const container = this.scrollContainer;
|
|
@@ -737,6 +1106,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
737
1106
|
return;
|
|
738
1107
|
if (force) {
|
|
739
1108
|
this.userUnpinned = false;
|
|
1109
|
+
this.measurementAnchor = undefined;
|
|
740
1110
|
}
|
|
741
1111
|
if (force || this.isPinnedToBottom) {
|
|
742
1112
|
container.scrollTop = container.scrollHeight;
|
|
@@ -759,7 +1129,106 @@ let DeesHarnessMessageList = (() => {
|
|
|
759
1129
|
}
|
|
760
1130
|
}
|
|
761
1131
|
this.lastObservedScrollTop = top;
|
|
1132
|
+
this.scheduleVirtualRangeUpdate();
|
|
1133
|
+
this.schedulePendingVirtualizationActivation();
|
|
762
1134
|
};
|
|
1135
|
+
schedulePendingVirtualizationActivation() {
|
|
1136
|
+
if ((!this.virtualizationEnablePending && !this.virtualizationDisablePending)
|
|
1137
|
+
|| this.virtualizationActivationFrame !== null)
|
|
1138
|
+
return;
|
|
1139
|
+
this.virtualizationActivationFrame = requestAnimationFrame(() => {
|
|
1140
|
+
this.virtualizationActivationFrame = null;
|
|
1141
|
+
if (!this.isConnected || this.activeTimelineKey())
|
|
1142
|
+
return;
|
|
1143
|
+
const container = this.scrollContainer;
|
|
1144
|
+
const anchor = container ? this.captureCurrentAnchor(container) : undefined;
|
|
1145
|
+
if (this.virtualizationEnablePending) {
|
|
1146
|
+
this.captureFullTimelineMeasurements();
|
|
1147
|
+
this.virtualizationEnabled = true;
|
|
1148
|
+
this.virtualizationEnablePending = false;
|
|
1149
|
+
this.recomputeVirtualOffsets();
|
|
1150
|
+
if (anchor) {
|
|
1151
|
+
this.pendingVirtualAnchor = anchor;
|
|
1152
|
+
this.setVirtualRangeAround(anchor.key);
|
|
1153
|
+
}
|
|
1154
|
+
else {
|
|
1155
|
+
this.setInitialVirtualRange();
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
else if (this.virtualizationDisablePending) {
|
|
1159
|
+
this.virtualizationEnabled = false;
|
|
1160
|
+
this.virtualizationDisablePending = false;
|
|
1161
|
+
this.retainedVirtualKeys.clear();
|
|
1162
|
+
if (anchor)
|
|
1163
|
+
this.pendingFullAnchor = anchor;
|
|
1164
|
+
this.setInitialVirtualRange();
|
|
1165
|
+
}
|
|
1166
|
+
this.disconnectSelectionChangeListener();
|
|
1167
|
+
this.requestUpdate();
|
|
1168
|
+
});
|
|
1169
|
+
}
|
|
1170
|
+
handleSelectionChange = () => {
|
|
1171
|
+
const selection = document.getSelection();
|
|
1172
|
+
if (!selection
|
|
1173
|
+
|| selection.rangeCount === 0
|
|
1174
|
+
|| (!this.selectionGestureActive
|
|
1175
|
+
&& this.selectionGestureSnapshot
|
|
1176
|
+
&& !this.selectionMatchesGestureSnapshot(selection))
|
|
1177
|
+
|| (!this.selectionGestureActive
|
|
1178
|
+
&& selection.isCollapsed
|
|
1179
|
+
&& !this.hasCrossShadowSelectionFallback))
|
|
1180
|
+
this.clearSelectionGesture();
|
|
1181
|
+
this.scheduleVirtualRangeUpdate();
|
|
1182
|
+
this.schedulePendingVirtualizationActivation();
|
|
1183
|
+
};
|
|
1184
|
+
handlePointerDown = (eventArg) => {
|
|
1185
|
+
this.handleUserScrollIntent(eventArg);
|
|
1186
|
+
if (eventArg.button !== 0)
|
|
1187
|
+
return;
|
|
1188
|
+
this.clearSelectionGesture();
|
|
1189
|
+
this.selectionGestureActive = true;
|
|
1190
|
+
this.selectionGestureStartOwner = this.selectionOwnerForEvent(eventArg);
|
|
1191
|
+
const key = this.timelineKeyForEvent(eventArg);
|
|
1192
|
+
if (key)
|
|
1193
|
+
this.selectionGestureKeys.add(key);
|
|
1194
|
+
};
|
|
1195
|
+
handlePointerUp = (eventArg) => {
|
|
1196
|
+
if (eventArg.button !== 0)
|
|
1197
|
+
return;
|
|
1198
|
+
const key = this.timelineKeyForEvent(eventArg);
|
|
1199
|
+
if (key)
|
|
1200
|
+
this.selectionGestureKeys.add(key);
|
|
1201
|
+
const endOwner = this.selectionOwnerForEvent(eventArg);
|
|
1202
|
+
this.selectionGestureCrossesOwners = Boolean(this.selectionGestureStartOwner
|
|
1203
|
+
&& endOwner
|
|
1204
|
+
&& this.selectionGestureStartOwner !== endOwner);
|
|
1205
|
+
this.selectionGestureActive = false;
|
|
1206
|
+
this.selectionGestureSnapshot = this.captureSelectionSnapshot(document.getSelection());
|
|
1207
|
+
if (!this.hasCrossShadowSelectionFallback && document.getSelection()?.isCollapsed !== false) {
|
|
1208
|
+
this.clearSelectionGesture();
|
|
1209
|
+
}
|
|
1210
|
+
this.handleProtectedStateChange();
|
|
1211
|
+
};
|
|
1212
|
+
handlePointerCancel = () => {
|
|
1213
|
+
this.clearSelectionGesture();
|
|
1214
|
+
this.handleProtectedStateChange();
|
|
1215
|
+
};
|
|
1216
|
+
handleProtectedStateChange = () => {
|
|
1217
|
+
this.scheduleVirtualRangeUpdate();
|
|
1218
|
+
this.schedulePendingVirtualizationActivation();
|
|
1219
|
+
};
|
|
1220
|
+
connectSelectionChangeListener() {
|
|
1221
|
+
if (this.selectionChangeListening)
|
|
1222
|
+
return;
|
|
1223
|
+
document.addEventListener('selectionchange', this.handleSelectionChange);
|
|
1224
|
+
this.selectionChangeListening = true;
|
|
1225
|
+
}
|
|
1226
|
+
disconnectSelectionChangeListener() {
|
|
1227
|
+
if (!this.selectionChangeListening)
|
|
1228
|
+
return;
|
|
1229
|
+
document.removeEventListener('selectionchange', this.handleSelectionChange);
|
|
1230
|
+
this.selectionChangeListening = false;
|
|
1231
|
+
}
|
|
763
1232
|
updated(changedProperties) {
|
|
764
1233
|
super.updated(changedProperties);
|
|
765
1234
|
if (changedProperties.has('messages') || changedProperties.has('status') || changedProperties.has('permissions') || changedProperties.has('questions')) {
|
|
@@ -778,6 +1247,25 @@ let DeesHarnessMessageList = (() => {
|
|
|
778
1247
|
|| changedProperties.has('permissions')
|
|
779
1248
|
|| changedProperties.has('questions'))
|
|
780
1249
|
this.syncScrollEdgeFades();
|
|
1250
|
+
if (this.virtualizationActive) {
|
|
1251
|
+
this.connectVirtualObservers();
|
|
1252
|
+
if (this.pendingVirtualAnchor) {
|
|
1253
|
+
this.restoreVirtualAnchor(this.scrollContainer, this.pendingVirtualAnchor);
|
|
1254
|
+
this.pendingVirtualAnchor = undefined;
|
|
1255
|
+
}
|
|
1256
|
+
else if (this.pendingVirtualRepin) {
|
|
1257
|
+
this.repinToBottom();
|
|
1258
|
+
this.pendingVirtualRepin = false;
|
|
1259
|
+
}
|
|
1260
|
+
this.scheduleVirtualRangeUpdate();
|
|
1261
|
+
}
|
|
1262
|
+
else {
|
|
1263
|
+
this.disconnectVirtualObservers();
|
|
1264
|
+
if (this.pendingFullAnchor) {
|
|
1265
|
+
this.restoreFullAnchor(this.scrollContainer, this.pendingFullAnchor);
|
|
1266
|
+
this.pendingFullAnchor = undefined;
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
781
1269
|
}
|
|
782
1270
|
firstUpdated(changedProperties) {
|
|
783
1271
|
super.firstUpdated(changedProperties);
|
|
@@ -786,6 +1274,8 @@ let DeesHarnessMessageList = (() => {
|
|
|
786
1274
|
this.connectContentResizeObserver();
|
|
787
1275
|
this.repinToBottom();
|
|
788
1276
|
this.syncScrollEdgeFades();
|
|
1277
|
+
if (this.virtualizationActive)
|
|
1278
|
+
this.connectVirtualObservers();
|
|
789
1279
|
// let the initial batch paint without entry animations, then enable them
|
|
790
1280
|
this.entryFrame = requestAnimationFrame(() => {
|
|
791
1281
|
this.entryFrame = null;
|
|
@@ -801,8 +1291,15 @@ let DeesHarnessMessageList = (() => {
|
|
|
801
1291
|
}
|
|
802
1292
|
async connectedCallback() {
|
|
803
1293
|
const connected = super.connectedCallback();
|
|
804
|
-
if (this.
|
|
1294
|
+
if (this.virtualizationEnablePending || this.virtualizationDisablePending) {
|
|
1295
|
+
this.connectSelectionChangeListener();
|
|
1296
|
+
}
|
|
1297
|
+
if (this.hasUpdated) {
|
|
805
1298
|
this.connectContentResizeObserver();
|
|
1299
|
+
if (this.virtualizationActive)
|
|
1300
|
+
this.connectVirtualObservers();
|
|
1301
|
+
this.schedulePendingVirtualizationActivation();
|
|
1302
|
+
}
|
|
806
1303
|
await connected;
|
|
807
1304
|
}
|
|
808
1305
|
connectContentResizeObserver() {
|
|
@@ -823,6 +1320,361 @@ let DeesHarnessMessageList = (() => {
|
|
|
823
1320
|
this.contentResizeObserver.observe(content);
|
|
824
1321
|
this.observedScrollContent = content;
|
|
825
1322
|
}
|
|
1323
|
+
connectVirtualObservers() {
|
|
1324
|
+
const container = this.scrollContainer;
|
|
1325
|
+
if (!container)
|
|
1326
|
+
return;
|
|
1327
|
+
this.virtualViewportResizeObserver ??= new ResizeObserver((entries) => {
|
|
1328
|
+
const width = entries[0]?.contentRect.width ?? 0;
|
|
1329
|
+
if (width > 0 && Math.abs(width - this.lastVirtualViewportWidth) > 0.5) {
|
|
1330
|
+
const preserveAnchor = this.userUnpinned || !this.autoFollow;
|
|
1331
|
+
const anchor = preserveAnchor ? this.captureVirtualMetricAnchor(container) : undefined;
|
|
1332
|
+
this.lastVirtualViewportWidth = width;
|
|
1333
|
+
this.measuredVirtualHeights.clear();
|
|
1334
|
+
this.recomputeVirtualOffsets();
|
|
1335
|
+
if (anchor)
|
|
1336
|
+
this.pendingVirtualAnchor = anchor;
|
|
1337
|
+
else
|
|
1338
|
+
this.pendingVirtualRepin = true;
|
|
1339
|
+
this.requestUpdate();
|
|
1340
|
+
this.scheduleVirtualRangeUpdate(true);
|
|
1341
|
+
}
|
|
1342
|
+
});
|
|
1343
|
+
this.virtualViewportResizeObserver.disconnect();
|
|
1344
|
+
this.virtualViewportResizeObserver.observe(container);
|
|
1345
|
+
this.lastVirtualViewportWidth ||= container.getBoundingClientRect().width;
|
|
1346
|
+
this.virtualRowResizeObserver ??= new ResizeObserver(() => this.scheduleVirtualMeasurements());
|
|
1347
|
+
this.virtualRowResizeObserver.disconnect();
|
|
1348
|
+
for (const row of this.shadowRoot?.querySelectorAll('.virtualItem') ?? []) {
|
|
1349
|
+
this.virtualRowResizeObserver.observe(row);
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
scheduleVirtualMeasurements() {
|
|
1353
|
+
if (this.virtualMeasureFrame !== null)
|
|
1354
|
+
return;
|
|
1355
|
+
this.virtualMeasureFrame = requestAnimationFrame(() => {
|
|
1356
|
+
this.virtualMeasureFrame = null;
|
|
1357
|
+
this.measureVirtualRows();
|
|
1358
|
+
});
|
|
1359
|
+
}
|
|
1360
|
+
measureVirtualRows() {
|
|
1361
|
+
const container = this.scrollContainer;
|
|
1362
|
+
if (!container || !this.virtualizationActive)
|
|
1363
|
+
return;
|
|
1364
|
+
const preserveAnchor = this.userUnpinned || !this.autoFollow;
|
|
1365
|
+
const anchor = preserveAnchor
|
|
1366
|
+
? (this.measurementAnchor ?? this.captureVirtualMetricAnchor(container))
|
|
1367
|
+
: undefined;
|
|
1368
|
+
let changed = false;
|
|
1369
|
+
for (const row of this.shadowRoot?.querySelectorAll('.virtualItem') ?? []) {
|
|
1370
|
+
const key = row.dataset.virtualKey;
|
|
1371
|
+
if (!key)
|
|
1372
|
+
continue;
|
|
1373
|
+
const height = row.getBoundingClientRect().height;
|
|
1374
|
+
if (height <= 0 || Math.abs((this.measuredVirtualHeights.get(key) ?? 0) - height) <= 0.5)
|
|
1375
|
+
continue;
|
|
1376
|
+
this.measuredVirtualHeights.set(key, height);
|
|
1377
|
+
changed = true;
|
|
1378
|
+
}
|
|
1379
|
+
if (!changed) {
|
|
1380
|
+
this.measurementAnchor = undefined;
|
|
1381
|
+
return;
|
|
1382
|
+
}
|
|
1383
|
+
this.recomputeVirtualOffsets();
|
|
1384
|
+
if (anchor)
|
|
1385
|
+
this.pendingVirtualAnchor = anchor;
|
|
1386
|
+
else
|
|
1387
|
+
this.pendingVirtualRepin = true;
|
|
1388
|
+
this.requestUpdate();
|
|
1389
|
+
if (this.measurementAnchor)
|
|
1390
|
+
this.scheduleVirtualMeasurements();
|
|
1391
|
+
}
|
|
1392
|
+
captureVirtualAnchor(containerArg) {
|
|
1393
|
+
const containerTop = containerArg.getBoundingClientRect().top;
|
|
1394
|
+
const row = Array.from(this.shadowRoot?.querySelectorAll('.virtualItem') ?? [])
|
|
1395
|
+
.find((candidate) => candidate.getBoundingClientRect().bottom > containerTop);
|
|
1396
|
+
const key = row?.dataset.virtualKey;
|
|
1397
|
+
if (row && key)
|
|
1398
|
+
return { key, offset: containerTop - row.getBoundingClientRect().top };
|
|
1399
|
+
const localTop = this.virtualLocalScrollTop(containerArg);
|
|
1400
|
+
return this.captureVirtualOffsetAnchorAt(localTop);
|
|
1401
|
+
}
|
|
1402
|
+
captureVirtualMetricAnchor(containerArg) {
|
|
1403
|
+
const localTop = this.virtualLocalScrollTop(containerArg);
|
|
1404
|
+
for (const row of this.shadowRoot?.querySelectorAll('.virtualItem') ?? []) {
|
|
1405
|
+
const key = row.dataset.virtualKey;
|
|
1406
|
+
const index = key ? this.timelineIndexByKey.get(key) : undefined;
|
|
1407
|
+
if (index === undefined)
|
|
1408
|
+
continue;
|
|
1409
|
+
const item = this.timelineRenderItems[index];
|
|
1410
|
+
const offset = this.virtualOffsets[index] ?? 0;
|
|
1411
|
+
const height = this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item);
|
|
1412
|
+
if (offset + height > localTop)
|
|
1413
|
+
return { key: item.key, offset: localTop - offset };
|
|
1414
|
+
}
|
|
1415
|
+
return this.captureVirtualOffsetAnchorAt(localTop);
|
|
1416
|
+
}
|
|
1417
|
+
captureVirtualOffsetAnchorAt(localTopArg) {
|
|
1418
|
+
let index = this.virtualIndexAtOffset(localTopArg);
|
|
1419
|
+
const item = this.timelineRenderItems[index];
|
|
1420
|
+
const itemHeight = item
|
|
1421
|
+
? (this.measuredVirtualHeights.get(item.key) ?? this.estimatedVirtualHeight(item))
|
|
1422
|
+
: 0;
|
|
1423
|
+
if (item
|
|
1424
|
+
&& localTopArg > (this.virtualOffsets[index] ?? 0) + itemHeight
|
|
1425
|
+
&& index + 1 < this.timelineRenderItems.length)
|
|
1426
|
+
index += 1;
|
|
1427
|
+
const anchorItem = this.timelineRenderItems[index];
|
|
1428
|
+
return anchorItem
|
|
1429
|
+
? { key: anchorItem.key, offset: localTopArg - (this.virtualOffsets[index] ?? 0) }
|
|
1430
|
+
: undefined;
|
|
1431
|
+
}
|
|
1432
|
+
restoreVirtualAnchor(containerArg, anchorArg) {
|
|
1433
|
+
const index = this.timelineIndexByKey.get(anchorArg.key);
|
|
1434
|
+
if (index === undefined)
|
|
1435
|
+
return;
|
|
1436
|
+
const stack = this.shadowRoot?.querySelector('.virtualStack');
|
|
1437
|
+
containerArg.scrollTop = (stack?.offsetTop ?? 0) + (this.virtualOffsets[index] ?? 0) + anchorArg.offset;
|
|
1438
|
+
}
|
|
1439
|
+
restoreFullAnchor(containerArg, anchorArg) {
|
|
1440
|
+
const element = this.shadowRoot?.querySelector(`.stack > [data-timeline-key="${CSS.escape(anchorArg.key)}"]`);
|
|
1441
|
+
if (!element)
|
|
1442
|
+
return;
|
|
1443
|
+
containerArg.scrollTop += element.getBoundingClientRect().top
|
|
1444
|
+
- containerArg.getBoundingClientRect().top
|
|
1445
|
+
+ anchorArg.offset;
|
|
1446
|
+
}
|
|
1447
|
+
virtualLocalScrollTop(containerArg) {
|
|
1448
|
+
const stack = this.shadowRoot?.querySelector('.virtualStack');
|
|
1449
|
+
return Math.max(0, containerArg.scrollTop - (stack?.offsetTop ?? 0));
|
|
1450
|
+
}
|
|
1451
|
+
virtualIndexAtOffset(offsetArg, offsetsArg = this.virtualOffsets) {
|
|
1452
|
+
if (offsetsArg.length === 0)
|
|
1453
|
+
return 0;
|
|
1454
|
+
let low = 0;
|
|
1455
|
+
let high = offsetsArg.length - 1;
|
|
1456
|
+
while (low < high) {
|
|
1457
|
+
const middle = Math.floor((low + high + 1) / 2);
|
|
1458
|
+
if ((offsetsArg[middle] ?? 0) <= offsetArg)
|
|
1459
|
+
low = middle;
|
|
1460
|
+
else
|
|
1461
|
+
high = middle - 1;
|
|
1462
|
+
}
|
|
1463
|
+
return low;
|
|
1464
|
+
}
|
|
1465
|
+
scheduleVirtualRangeUpdate(force = false) {
|
|
1466
|
+
if (!this.virtualizationActive)
|
|
1467
|
+
return;
|
|
1468
|
+
if (force && this.virtualRangeFrame !== null) {
|
|
1469
|
+
cancelAnimationFrame(this.virtualRangeFrame);
|
|
1470
|
+
this.virtualRangeFrame = null;
|
|
1471
|
+
}
|
|
1472
|
+
if (this.virtualRangeFrame !== null)
|
|
1473
|
+
return;
|
|
1474
|
+
this.virtualRangeFrame = requestAnimationFrame(() => {
|
|
1475
|
+
this.virtualRangeFrame = null;
|
|
1476
|
+
this.updateVirtualRange();
|
|
1477
|
+
});
|
|
1478
|
+
}
|
|
1479
|
+
updateVirtualRange() {
|
|
1480
|
+
const container = this.scrollContainer;
|
|
1481
|
+
if (!container || !this.virtualizationActive)
|
|
1482
|
+
return;
|
|
1483
|
+
const localTop = this.virtualLocalScrollTop(container);
|
|
1484
|
+
const startTarget = Math.max(0, localTop - virtualOverscanPx);
|
|
1485
|
+
const endTarget = localTop + container.clientHeight + virtualOverscanPx;
|
|
1486
|
+
const start = Math.max(0, this.virtualIndexAtOffset(startTarget) - 1);
|
|
1487
|
+
const end = Math.min(this.timelineRenderItems.length, this.virtualIndexAtOffset(endTarget) + 2);
|
|
1488
|
+
const retainedKeys = new Set(this.activeVirtualKeys());
|
|
1489
|
+
if (start === this.virtualStartIndex
|
|
1490
|
+
&& end === this.virtualEndIndex
|
|
1491
|
+
&& retainedKeys.size === this.retainedVirtualKeys.size
|
|
1492
|
+
&& [...retainedKeys].every((key) => this.retainedVirtualKeys.has(key)))
|
|
1493
|
+
return;
|
|
1494
|
+
this.virtualStartIndex = start;
|
|
1495
|
+
this.virtualEndIndex = end;
|
|
1496
|
+
this.retainedVirtualKeys = retainedKeys;
|
|
1497
|
+
if (this.activeSelectionKeys().length > 0)
|
|
1498
|
+
this.connectSelectionChangeListener();
|
|
1499
|
+
else if (!this.virtualizationEnablePending && !this.virtualizationDisablePending) {
|
|
1500
|
+
this.disconnectSelectionChangeListener();
|
|
1501
|
+
}
|
|
1502
|
+
this.requestUpdate();
|
|
1503
|
+
}
|
|
1504
|
+
activeVirtualKeys() {
|
|
1505
|
+
const focusKey = this.activeFocusKey();
|
|
1506
|
+
return [
|
|
1507
|
+
...(this.explicitRetainedVirtualKey ? [this.explicitRetainedVirtualKey] : []),
|
|
1508
|
+
...(focusKey ? [focusKey] : []),
|
|
1509
|
+
...this.activeSelectionKeys(),
|
|
1510
|
+
].filter((key, index, keys) => keys.indexOf(key) === index);
|
|
1511
|
+
}
|
|
1512
|
+
activeTimelineKey() {
|
|
1513
|
+
if (this.explicitRetainedVirtualKey)
|
|
1514
|
+
return this.explicitRetainedVirtualKey;
|
|
1515
|
+
return this.activeFocusKey() ?? this.activeSelectionKeys()[0];
|
|
1516
|
+
}
|
|
1517
|
+
activeFocusKey() {
|
|
1518
|
+
const activeElement = this.shadowRoot?.activeElement;
|
|
1519
|
+
if (activeElement instanceof Element) {
|
|
1520
|
+
const focusedKey = this.ownedTimelineElement(activeElement)?.dataset.timelineKey
|
|
1521
|
+
?? this.ownedVirtualRow(activeElement)?.dataset.virtualKey;
|
|
1522
|
+
if (focusedKey)
|
|
1523
|
+
return focusedKey;
|
|
1524
|
+
}
|
|
1525
|
+
return undefined;
|
|
1526
|
+
}
|
|
1527
|
+
activeSelectionKeys() {
|
|
1528
|
+
if (this.selectionGestureActive)
|
|
1529
|
+
return [...this.selectionGestureKeys];
|
|
1530
|
+
const selection = document.getSelection();
|
|
1531
|
+
if (!selection || selection.rangeCount === 0)
|
|
1532
|
+
return [];
|
|
1533
|
+
if (selection.isCollapsed) {
|
|
1534
|
+
return this.hasCrossShadowSelectionFallback ? [...this.selectionGestureKeys] : [];
|
|
1535
|
+
}
|
|
1536
|
+
const range = selection.getRangeAt(0);
|
|
1537
|
+
const nodes = [
|
|
1538
|
+
selection.anchorNode,
|
|
1539
|
+
selection.focusNode,
|
|
1540
|
+
range.startContainer,
|
|
1541
|
+
range.endContainer,
|
|
1542
|
+
];
|
|
1543
|
+
if ('getComposedRanges' in selection && typeof selection.getComposedRanges === 'function') {
|
|
1544
|
+
const composedRanges = selection.getComposedRanges({
|
|
1545
|
+
shadowRoots: this.mountedShadowRoots(),
|
|
1546
|
+
});
|
|
1547
|
+
const composedRange = composedRanges[0];
|
|
1548
|
+
if (composedRange)
|
|
1549
|
+
nodes.push(composedRange.startContainer, composedRange.endContainer);
|
|
1550
|
+
}
|
|
1551
|
+
return [
|
|
1552
|
+
...nodes
|
|
1553
|
+
.filter((node) => node !== null)
|
|
1554
|
+
.map((node) => this.timelineKeyForNode(node))
|
|
1555
|
+
.filter((key) => key !== undefined),
|
|
1556
|
+
...this.selectionGestureKeys,
|
|
1557
|
+
]
|
|
1558
|
+
.filter((key, index, keys) => keys.indexOf(key) === index);
|
|
1559
|
+
}
|
|
1560
|
+
mountedShadowRoots() {
|
|
1561
|
+
const roots = [];
|
|
1562
|
+
const collect = (rootArg) => {
|
|
1563
|
+
for (const element of rootArg.querySelectorAll('*')) {
|
|
1564
|
+
if (!element.shadowRoot)
|
|
1565
|
+
continue;
|
|
1566
|
+
roots.push(element.shadowRoot);
|
|
1567
|
+
collect(element.shadowRoot);
|
|
1568
|
+
}
|
|
1569
|
+
};
|
|
1570
|
+
if (this.shadowRoot)
|
|
1571
|
+
collect(this.shadowRoot);
|
|
1572
|
+
return roots;
|
|
1573
|
+
}
|
|
1574
|
+
timelineKeyForNode(nodeArg) {
|
|
1575
|
+
let node = nodeArg;
|
|
1576
|
+
while (node) {
|
|
1577
|
+
if (node instanceof HTMLElement && node.classList.contains('virtualItem')) {
|
|
1578
|
+
const ownedRow = this.ownedVirtualRow(node);
|
|
1579
|
+
if (ownedRow)
|
|
1580
|
+
return ownedRow.dataset.virtualKey;
|
|
1581
|
+
}
|
|
1582
|
+
if (node instanceof HTMLElement) {
|
|
1583
|
+
const timelineElement = this.ownedTimelineElement(node);
|
|
1584
|
+
if (timelineElement)
|
|
1585
|
+
return timelineElement.dataset.timelineKey;
|
|
1586
|
+
}
|
|
1587
|
+
const root = node.getRootNode();
|
|
1588
|
+
node = node.parentNode ?? (root instanceof ShadowRoot ? root.host : null);
|
|
1589
|
+
}
|
|
1590
|
+
return undefined;
|
|
1591
|
+
}
|
|
1592
|
+
timelineKeyForEvent(eventArg) {
|
|
1593
|
+
for (const candidate of eventArg.composedPath()) {
|
|
1594
|
+
if (!(candidate instanceof Element))
|
|
1595
|
+
continue;
|
|
1596
|
+
const rowKey = this.ownedVirtualRow(candidate)?.dataset.virtualKey;
|
|
1597
|
+
if (rowKey)
|
|
1598
|
+
return rowKey;
|
|
1599
|
+
const timelineKey = this.ownedTimelineElement(candidate)?.dataset.timelineKey;
|
|
1600
|
+
if (timelineKey)
|
|
1601
|
+
return timelineKey;
|
|
1602
|
+
}
|
|
1603
|
+
return undefined;
|
|
1604
|
+
}
|
|
1605
|
+
selectionOwnerForEvent(eventArg) {
|
|
1606
|
+
for (const candidate of eventArg.composedPath()) {
|
|
1607
|
+
if (!(candidate instanceof HTMLElement))
|
|
1608
|
+
continue;
|
|
1609
|
+
if ((candidate.tagName === 'DEES-HARNESS-MESSAGE'
|
|
1610
|
+
|| candidate.tagName === 'DEES-HARNESS-PERMISSION-CARD'
|
|
1611
|
+
|| candidate.tagName === 'DEES-HARNESS-QUESTION-CARD')
|
|
1612
|
+
&& this.timelineKeyForNode(candidate))
|
|
1613
|
+
return candidate;
|
|
1614
|
+
}
|
|
1615
|
+
return eventArg.composedPath()
|
|
1616
|
+
.filter((candidate) => candidate instanceof Element)
|
|
1617
|
+
.map((candidate) => this.ownedTimelineElement(candidate) ?? this.ownedVirtualRow(candidate))
|
|
1618
|
+
.find((candidate) => candidate !== undefined);
|
|
1619
|
+
}
|
|
1620
|
+
get hasCrossShadowSelectionFallback() {
|
|
1621
|
+
return this.selectionGestureKeys.size > 1 || this.selectionGestureCrossesOwners;
|
|
1622
|
+
}
|
|
1623
|
+
captureSelectionSnapshot(selectionArg) {
|
|
1624
|
+
if (!selectionArg)
|
|
1625
|
+
return undefined;
|
|
1626
|
+
return {
|
|
1627
|
+
anchorNode: selectionArg.anchorNode,
|
|
1628
|
+
anchorOffset: selectionArg.anchorOffset,
|
|
1629
|
+
focusNode: selectionArg.focusNode,
|
|
1630
|
+
focusOffset: selectionArg.focusOffset,
|
|
1631
|
+
rangeCount: selectionArg.rangeCount,
|
|
1632
|
+
};
|
|
1633
|
+
}
|
|
1634
|
+
selectionMatchesGestureSnapshot(selectionArg) {
|
|
1635
|
+
const snapshot = this.selectionGestureSnapshot;
|
|
1636
|
+
return Boolean(snapshot
|
|
1637
|
+
&& snapshot.anchorNode === selectionArg.anchorNode
|
|
1638
|
+
&& snapshot.anchorOffset === selectionArg.anchorOffset
|
|
1639
|
+
&& snapshot.focusNode === selectionArg.focusNode
|
|
1640
|
+
&& snapshot.focusOffset === selectionArg.focusOffset
|
|
1641
|
+
&& snapshot.rangeCount === selectionArg.rangeCount);
|
|
1642
|
+
}
|
|
1643
|
+
clearSelectionGesture() {
|
|
1644
|
+
this.selectionGestureKeys.clear();
|
|
1645
|
+
this.selectionGestureActive = false;
|
|
1646
|
+
this.selectionGestureStartOwner = undefined;
|
|
1647
|
+
this.selectionGestureCrossesOwners = false;
|
|
1648
|
+
this.selectionGestureSnapshot = undefined;
|
|
1649
|
+
}
|
|
1650
|
+
handleCardRetention = (eventArg) => {
|
|
1651
|
+
const pathElements = eventArg.composedPath()
|
|
1652
|
+
.filter((candidate) => candidate instanceof HTMLElement);
|
|
1653
|
+
const row = pathElements.map((candidate) => this.ownedVirtualRow(candidate))
|
|
1654
|
+
.find((candidate) => candidate !== undefined);
|
|
1655
|
+
const timelineElement = pathElements.map((candidate) => this.ownedTimelineElement(candidate))
|
|
1656
|
+
.find((candidate) => candidate !== undefined);
|
|
1657
|
+
const key = row?.dataset.virtualKey ?? timelineElement?.dataset.timelineKey;
|
|
1658
|
+
if (eventArg.detail?.active === true && key)
|
|
1659
|
+
this.explicitRetainedVirtualKey = key;
|
|
1660
|
+
else if (!key || this.explicitRetainedVirtualKey === key)
|
|
1661
|
+
this.explicitRetainedVirtualKey = undefined;
|
|
1662
|
+
this.retainedVirtualKeys = new Set(this.activeVirtualKeys());
|
|
1663
|
+
this.scheduleVirtualRangeUpdate();
|
|
1664
|
+
this.schedulePendingVirtualizationActivation();
|
|
1665
|
+
};
|
|
1666
|
+
ownedVirtualRow(elementArg) {
|
|
1667
|
+
const row = elementArg.closest('.virtualItem');
|
|
1668
|
+
return row?.getRootNode() === this.shadowRoot ? row : undefined;
|
|
1669
|
+
}
|
|
1670
|
+
ownedTimelineElement(elementArg) {
|
|
1671
|
+
const timelineElement = elementArg.closest('[data-timeline-key]');
|
|
1672
|
+
return timelineElement?.getRootNode() === this.shadowRoot ? timelineElement : undefined;
|
|
1673
|
+
}
|
|
1674
|
+
disconnectVirtualObservers() {
|
|
1675
|
+
this.virtualRowResizeObserver?.disconnect();
|
|
1676
|
+
this.virtualViewportResizeObserver?.disconnect();
|
|
1677
|
+
}
|
|
826
1678
|
repinAfterContentGrowth() {
|
|
827
1679
|
const content = this.observedScrollContent;
|
|
828
1680
|
if (!content)
|
|
@@ -857,6 +1709,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
857
1709
|
this.observedContentBlockSize = null;
|
|
858
1710
|
}
|
|
859
1711
|
async disconnectedCallback() {
|
|
1712
|
+
this.disconnectSelectionChangeListener();
|
|
860
1713
|
if (this.followFrame !== null)
|
|
861
1714
|
cancelAnimationFrame(this.followFrame);
|
|
862
1715
|
if (this.followSecondFrame !== null)
|
|
@@ -865,12 +1718,31 @@ let DeesHarnessMessageList = (() => {
|
|
|
865
1718
|
cancelAnimationFrame(this.entryFrame);
|
|
866
1719
|
if (this.entrySecondFrame !== null)
|
|
867
1720
|
cancelAnimationFrame(this.entrySecondFrame);
|
|
1721
|
+
if (this.virtualMeasureFrame !== null)
|
|
1722
|
+
cancelAnimationFrame(this.virtualMeasureFrame);
|
|
1723
|
+
if (this.virtualRangeFrame !== null)
|
|
1724
|
+
cancelAnimationFrame(this.virtualRangeFrame);
|
|
1725
|
+
if (this.virtualizationActivationFrame !== null)
|
|
1726
|
+
cancelAnimationFrame(this.virtualizationActivationFrame);
|
|
868
1727
|
this.followFrame = null;
|
|
869
1728
|
this.followSecondFrame = null;
|
|
870
1729
|
this.entryFrame = null;
|
|
871
1730
|
this.entrySecondFrame = null;
|
|
1731
|
+
this.virtualMeasureFrame = null;
|
|
1732
|
+
this.virtualRangeFrame = null;
|
|
1733
|
+
this.virtualizationActivationFrame = null;
|
|
1734
|
+
this.pendingVirtualAnchor = undefined;
|
|
1735
|
+
this.pendingFullAnchor = undefined;
|
|
1736
|
+
this.measurementAnchor = undefined;
|
|
1737
|
+
this.pendingVirtualRepin = false;
|
|
1738
|
+
this.explicitRetainedVirtualKey = undefined;
|
|
1739
|
+
this.retainedVirtualKeys.clear();
|
|
1740
|
+
this.clearSelectionGesture();
|
|
872
1741
|
this.entryAnimationsEnabled = true;
|
|
873
1742
|
this.disconnectContentResizeObserver();
|
|
1743
|
+
this.disconnectVirtualObservers();
|
|
1744
|
+
this.virtualRowResizeObserver = null;
|
|
1745
|
+
this.virtualViewportResizeObserver = null;
|
|
874
1746
|
await super.disconnectedCallback();
|
|
875
1747
|
}
|
|
876
1748
|
static {
|
|
@@ -880,4 +1752,4 @@ let DeesHarnessMessageList = (() => {
|
|
|
880
1752
|
return DeesHarnessMessageList = _classThis;
|
|
881
1753
|
})();
|
|
882
1754
|
export { DeesHarnessMessageList };
|
|
883
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQTJCLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTywrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLGlFQUFpRSxDQUFDO0FBQ3pFLE9BQU8sNkRBQTZELENBQUM7QUFDckUsT0FBTyw4Q0FBOEMsQ0FBQztBQUV0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBUTlCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQXFDMUI7Ozs7OztHQU1HO0lBRVUsc0JBQXNCOzRCQURsQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7Ozs7c0JBQ0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlwRCxRQUFRLENBQUMs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
|
|
1755
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWF0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQTJCLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTywrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLGlFQUFpRSxDQUFDO0FBQ3pFLE9BQU8sNkRBQTZELENBQUM7QUFDckUsT0FBTyw4Q0FBOEMsQ0FBQztBQUV0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBUTlCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUNuQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLENBQUM7QUFxQ3RDOzs7OztHQUtHO0lBRVUsc0JBQXNCOzRCQURs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
|