@design.estate/dees-catalog 6.0.0 → 6.2.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 +3105 -1500
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +484 -8
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +10 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +3 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +24 -4
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +26 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +398 -94
- package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.d.ts +32 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.demo.js +31 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-overflow-text.js +297 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +1 -9
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.d.ts +10 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.js +181 -2
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +17 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +480 -36
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +28 -24
- package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +5 -1
- package/dist_ts_web/elements/00group-harness/harness.helpers.js +66 -1
- package/dist_ts_web/elements/00group-harness/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/index.js +2 -1
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +33 -2
- package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +4 -0
- package/dist_ts_web/elements/00group-harness/toolregistry.js +8 -1
- package/package.json +2 -2
- package/readme.hints.md +16 -1
- package/readme.md +41 -9
- package/readme.playbook.md +8 -4
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +490 -7
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +9 -0
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +24 -3
- package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +397 -84
- package/ts_web/elements/00group-harness/dees-harness-overflow-text.demo.ts +31 -0
- package/ts_web/elements/00group-harness/dees-harness-overflow-text.ts +236 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +0 -8
- package/ts_web/elements/00group-harness/dees-harness-session-sidebar/dees-harness-session-sidebar.ts +193 -1
- package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +484 -34
- package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +29 -25
- package/ts_web/elements/00group-harness/harness.helpers.ts +68 -1
- package/ts_web/elements/00group-harness/index.ts +1 -0
- package/ts_web/elements/00group-harness/interfaces.ts +38 -2
- package/ts_web/elements/00group-harness/toolregistry.ts +12 -0
package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js
CHANGED
|
@@ -37,6 +37,7 @@ import { DeesElement, html, css, customElement, property, state, cssManager, dir
|
|
|
37
37
|
import { themeDefaultStyles } from '../../00theme.js';
|
|
38
38
|
import { DeesHarnessMessage } from '../dees-harness-message/dees-harness-message.js';
|
|
39
39
|
import { DeesHarnessToolRegistry } from '../toolregistry.js';
|
|
40
|
+
import { harnessApplyMessageDelta } from '../harness.helpers.js';
|
|
40
41
|
import '../dees-harness-status/dees-harness-status.js';
|
|
41
42
|
import '../dees-harness-permission-card/dees-harness-permission-card.js';
|
|
42
43
|
import '../dees-harness-question-card/dees-harness-question-card.js';
|
|
@@ -74,9 +75,18 @@ let DeesHarnessMessageList = (() => {
|
|
|
74
75
|
let _autoFollow_decorators;
|
|
75
76
|
let _autoFollow_initializers = [];
|
|
76
77
|
let _autoFollow_extraInitializers = [];
|
|
78
|
+
let _hideScrollbar_decorators;
|
|
79
|
+
let _hideScrollbar_initializers = [];
|
|
80
|
+
let _hideScrollbar_extraInitializers = [];
|
|
81
|
+
let _fadeScrollEdges_decorators;
|
|
82
|
+
let _fadeScrollEdges_initializers = [];
|
|
83
|
+
let _fadeScrollEdges_extraInitializers = [];
|
|
77
84
|
let _toolRegistry_decorators;
|
|
78
85
|
let _toolRegistry_initializers = [];
|
|
79
86
|
let _toolRegistry_extraInitializers = [];
|
|
87
|
+
let _allowSubtaskStreams_decorators;
|
|
88
|
+
let _allowSubtaskStreams_initializers = [];
|
|
89
|
+
let _allowSubtaskStreams_extraInitializers = [];
|
|
80
90
|
let _showRoles_decorators;
|
|
81
91
|
let _showRoles_initializers = [];
|
|
82
92
|
let _showRoles_extraInitializers = [];
|
|
@@ -95,6 +105,12 @@ let DeesHarnessMessageList = (() => {
|
|
|
95
105
|
let _entryAnimationsEnabled_decorators;
|
|
96
106
|
let _entryAnimationsEnabled_initializers = [];
|
|
97
107
|
let _entryAnimationsEnabled_extraInitializers = [];
|
|
108
|
+
let _scrollFadeTop_decorators;
|
|
109
|
+
let _scrollFadeTop_initializers = [];
|
|
110
|
+
let _scrollFadeTop_extraInitializers = [];
|
|
111
|
+
let _scrollFadeBottom_decorators;
|
|
112
|
+
let _scrollFadeBottom_initializers = [];
|
|
113
|
+
let _scrollFadeBottom_extraInitializers = [];
|
|
98
114
|
var DeesHarnessMessageList = class extends _classSuper {
|
|
99
115
|
static { _classThis = this; }
|
|
100
116
|
static {
|
|
@@ -105,26 +121,36 @@ let DeesHarnessMessageList = (() => {
|
|
|
105
121
|
_permissionsBusy_decorators = [property({ type: Boolean })];
|
|
106
122
|
_questions_decorators = [property({ attribute: false })];
|
|
107
123
|
_autoFollow_decorators = [property({ type: Boolean })];
|
|
124
|
+
_hideScrollbar_decorators = [property({ type: Boolean })];
|
|
125
|
+
_fadeScrollEdges_decorators = [property({ type: Boolean })];
|
|
108
126
|
_toolRegistry_decorators = [property({ attribute: false })];
|
|
127
|
+
_allowSubtaskStreams_decorators = [property({ type: Boolean })];
|
|
109
128
|
_showRoles_decorators = [property({ type: Boolean })];
|
|
110
129
|
_showTimestamps_decorators = [property({ type: Boolean })];
|
|
111
130
|
_emptyTitle_decorators = [property()];
|
|
112
131
|
_emptyText_decorators = [property()];
|
|
113
132
|
_showJumpChip_decorators = [state()];
|
|
114
133
|
_entryAnimationsEnabled_decorators = [state()];
|
|
134
|
+
_scrollFadeTop_decorators = [state()];
|
|
135
|
+
_scrollFadeBottom_decorators = [state()];
|
|
115
136
|
__esDecorate(this, null, _messages_decorators, { kind: "accessor", name: "messages", static: false, private: false, access: { has: obj => "messages" in obj, get: obj => obj.messages, set: (obj, value) => { obj.messages = value; } }, metadata: _metadata }, _messages_initializers, _messages_extraInitializers);
|
|
116
137
|
__esDecorate(this, null, _status_decorators, { kind: "accessor", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status, set: (obj, value) => { obj.status = value; } }, metadata: _metadata }, _status_initializers, _status_extraInitializers);
|
|
117
138
|
__esDecorate(this, null, _permissions_decorators, { kind: "accessor", name: "permissions", static: false, private: false, access: { has: obj => "permissions" in obj, get: obj => obj.permissions, set: (obj, value) => { obj.permissions = value; } }, metadata: _metadata }, _permissions_initializers, _permissions_extraInitializers);
|
|
118
139
|
__esDecorate(this, null, _permissionsBusy_decorators, { kind: "accessor", name: "permissionsBusy", static: false, private: false, access: { has: obj => "permissionsBusy" in obj, get: obj => obj.permissionsBusy, set: (obj, value) => { obj.permissionsBusy = value; } }, metadata: _metadata }, _permissionsBusy_initializers, _permissionsBusy_extraInitializers);
|
|
119
140
|
__esDecorate(this, null, _questions_decorators, { kind: "accessor", name: "questions", static: false, private: false, access: { has: obj => "questions" in obj, get: obj => obj.questions, set: (obj, value) => { obj.questions = value; } }, metadata: _metadata }, _questions_initializers, _questions_extraInitializers);
|
|
120
141
|
__esDecorate(this, null, _autoFollow_decorators, { kind: "accessor", name: "autoFollow", static: false, private: false, access: { has: obj => "autoFollow" in obj, get: obj => obj.autoFollow, set: (obj, value) => { obj.autoFollow = value; } }, metadata: _metadata }, _autoFollow_initializers, _autoFollow_extraInitializers);
|
|
142
|
+
__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
|
+
__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);
|
|
121
144
|
__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);
|
|
145
|
+
__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);
|
|
122
146
|
__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);
|
|
123
147
|
__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);
|
|
124
148
|
__esDecorate(this, null, _emptyTitle_decorators, { kind: "accessor", name: "emptyTitle", static: false, private: false, access: { has: obj => "emptyTitle" in obj, get: obj => obj.emptyTitle, set: (obj, value) => { obj.emptyTitle = value; } }, metadata: _metadata }, _emptyTitle_initializers, _emptyTitle_extraInitializers);
|
|
125
149
|
__esDecorate(this, null, _emptyText_decorators, { kind: "accessor", name: "emptyText", static: false, private: false, access: { has: obj => "emptyText" in obj, get: obj => obj.emptyText, set: (obj, value) => { obj.emptyText = value; } }, metadata: _metadata }, _emptyText_initializers, _emptyText_extraInitializers);
|
|
126
150
|
__esDecorate(this, null, _showJumpChip_decorators, { kind: "accessor", name: "showJumpChip", static: false, private: false, access: { has: obj => "showJumpChip" in obj, get: obj => obj.showJumpChip, set: (obj, value) => { obj.showJumpChip = value; } }, metadata: _metadata }, _showJumpChip_initializers, _showJumpChip_extraInitializers);
|
|
127
151
|
__esDecorate(this, null, _entryAnimationsEnabled_decorators, { kind: "accessor", name: "entryAnimationsEnabled", static: false, private: false, access: { has: obj => "entryAnimationsEnabled" in obj, get: obj => obj.entryAnimationsEnabled, set: (obj, value) => { obj.entryAnimationsEnabled = value; } }, metadata: _metadata }, _entryAnimationsEnabled_initializers, _entryAnimationsEnabled_extraInitializers);
|
|
152
|
+
__esDecorate(this, null, _scrollFadeTop_decorators, { kind: "accessor", name: "scrollFadeTop", static: false, private: false, access: { has: obj => "scrollFadeTop" in obj, get: obj => obj.scrollFadeTop, set: (obj, value) => { obj.scrollFadeTop = value; } }, metadata: _metadata }, _scrollFadeTop_initializers, _scrollFadeTop_extraInitializers);
|
|
153
|
+
__esDecorate(this, null, _scrollFadeBottom_decorators, { kind: "accessor", name: "scrollFadeBottom", static: false, private: false, access: { has: obj => "scrollFadeBottom" in obj, get: obj => obj.scrollFadeBottom, set: (obj, value) => { obj.scrollFadeBottom = value; } }, metadata: _metadata }, _scrollFadeBottom_initializers, _scrollFadeBottom_extraInitializers);
|
|
128
154
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
129
155
|
DeesHarnessMessageList = _classThis = _classDescriptor.value;
|
|
130
156
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -152,10 +178,20 @@ let DeesHarnessMessageList = (() => {
|
|
|
152
178
|
#autoFollow_accessor_storage = (__runInitializers(this, _questions_extraInitializers), __runInitializers(this, _autoFollow_initializers, true));
|
|
153
179
|
get autoFollow() { return this.#autoFollow_accessor_storage; }
|
|
154
180
|
set autoFollow(value) { this.#autoFollow_accessor_storage = value; }
|
|
155
|
-
#
|
|
181
|
+
#hideScrollbar_accessor_storage = (__runInitializers(this, _autoFollow_extraInitializers), __runInitializers(this, _hideScrollbar_initializers, false));
|
|
182
|
+
get hideScrollbar() { return this.#hideScrollbar_accessor_storage; }
|
|
183
|
+
set hideScrollbar(value) { this.#hideScrollbar_accessor_storage = value; }
|
|
184
|
+
#fadeScrollEdges_accessor_storage = (__runInitializers(this, _hideScrollbar_extraInitializers), __runInitializers(this, _fadeScrollEdges_initializers, false));
|
|
185
|
+
get fadeScrollEdges() { return this.#fadeScrollEdges_accessor_storage; }
|
|
186
|
+
set fadeScrollEdges(value) { this.#fadeScrollEdges_accessor_storage = value; }
|
|
187
|
+
#toolRegistry_accessor_storage = (__runInitializers(this, _fadeScrollEdges_extraInitializers), __runInitializers(this, _toolRegistry_initializers, DeesHarnessToolRegistry.default));
|
|
156
188
|
get toolRegistry() { return this.#toolRegistry_accessor_storage; }
|
|
157
189
|
set toolRegistry(value) { this.#toolRegistry_accessor_storage = value; }
|
|
158
|
-
#
|
|
190
|
+
#allowSubtaskStreams_accessor_storage = (__runInitializers(this, _toolRegistry_extraInitializers), __runInitializers(this, _allowSubtaskStreams_initializers, true));
|
|
191
|
+
/** Nested transcripts set this false to prevent recursive inline streams. */
|
|
192
|
+
get allowSubtaskStreams() { return this.#allowSubtaskStreams_accessor_storage; }
|
|
193
|
+
set allowSubtaskStreams(value) { this.#allowSubtaskStreams_accessor_storage = value; }
|
|
194
|
+
#showRoles_accessor_storage = (__runInitializers(this, _allowSubtaskStreams_extraInitializers), __runInitializers(this, _showRoles_initializers, true));
|
|
159
195
|
get showRoles() { return this.#showRoles_accessor_storage; }
|
|
160
196
|
set showRoles(value) { this.#showRoles_accessor_storage = value; }
|
|
161
197
|
#showTimestamps_accessor_storage = (__runInitializers(this, _showRoles_extraInitializers), __runInitializers(this, _showTimestamps_initializers, false));
|
|
@@ -173,6 +209,15 @@ let DeesHarnessMessageList = (() => {
|
|
|
173
209
|
#entryAnimationsEnabled_accessor_storage = (__runInitializers(this, _showJumpChip_extraInitializers), __runInitializers(this, _entryAnimationsEnabled_initializers, false));
|
|
174
210
|
get entryAnimationsEnabled() { return this.#entryAnimationsEnabled_accessor_storage; }
|
|
175
211
|
set entryAnimationsEnabled(value) { this.#entryAnimationsEnabled_accessor_storage = value; }
|
|
212
|
+
#scrollFadeTop_accessor_storage = (__runInitializers(this, _entryAnimationsEnabled_extraInitializers), __runInitializers(this, _scrollFadeTop_initializers, false));
|
|
213
|
+
get scrollFadeTop() { return this.#scrollFadeTop_accessor_storage; }
|
|
214
|
+
set scrollFadeTop(value) { this.#scrollFadeTop_accessor_storage = value; }
|
|
215
|
+
#scrollFadeBottom_accessor_storage = (__runInitializers(this, _scrollFadeTop_extraInitializers), __runInitializers(this, _scrollFadeBottom_initializers, false));
|
|
216
|
+
get scrollFadeBottom() { return this.#scrollFadeBottom_accessor_storage; }
|
|
217
|
+
set scrollFadeBottom(value) { this.#scrollFadeBottom_accessor_storage = value; }
|
|
218
|
+
toolGroupIdByMessageId = (__runInitializers(this, _scrollFadeBottom_extraInitializers), new Map());
|
|
219
|
+
nextToolGroupId = 1;
|
|
220
|
+
timelineRenderItems = [];
|
|
176
221
|
static styles = [
|
|
177
222
|
themeDefaultStyles,
|
|
178
223
|
cssManager.defaultStyles,
|
|
@@ -189,10 +234,47 @@ let DeesHarnessMessageList = (() => {
|
|
|
189
234
|
.scroll {
|
|
190
235
|
height: 100%;
|
|
191
236
|
overflow-y: auto;
|
|
237
|
+
overscroll-behavior: contain;
|
|
192
238
|
scrollbar-width: thin;
|
|
193
239
|
scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
|
|
194
240
|
padding: var(--dees-spacing-md);
|
|
195
241
|
box-sizing: border-box;
|
|
242
|
+
container: harness-transcript / inline-size;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
.scroll.hideScrollbar {
|
|
246
|
+
scrollbar-width: none;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.scroll.hideScrollbar::-webkit-scrollbar {
|
|
250
|
+
display: none;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.scroll.fadeTop {
|
|
254
|
+
-webkit-mask-image: linear-gradient(to bottom, transparent 0, black 40px, black 100%);
|
|
255
|
+
mask-image: linear-gradient(to bottom, transparent 0, black 40px, black 100%);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.scroll.fadeBottom {
|
|
259
|
+
-webkit-mask-image: linear-gradient(to bottom, black 0, black calc(100% - 40px), transparent 100%);
|
|
260
|
+
mask-image: linear-gradient(to bottom, black 0, black calc(100% - 40px), transparent 100%);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.scroll.fadeTop.fadeBottom {
|
|
264
|
+
-webkit-mask-image: linear-gradient(
|
|
265
|
+
to bottom,
|
|
266
|
+
transparent 0,
|
|
267
|
+
black 40px,
|
|
268
|
+
black calc(100% - 40px),
|
|
269
|
+
transparent 100%
|
|
270
|
+
);
|
|
271
|
+
mask-image: linear-gradient(
|
|
272
|
+
to bottom,
|
|
273
|
+
transparent 0,
|
|
274
|
+
black 40px,
|
|
275
|
+
black calc(100% - 40px),
|
|
276
|
+
transparent 100%
|
|
277
|
+
);
|
|
196
278
|
}
|
|
197
279
|
|
|
198
280
|
/* observed by the follow ResizeObserver; fills the viewport so the
|
|
@@ -203,14 +285,62 @@ let DeesHarnessMessageList = (() => {
|
|
|
203
285
|
flex-direction: column;
|
|
204
286
|
}
|
|
205
287
|
|
|
206
|
-
|
|
288
|
+
::slotted([slot='leading']) {
|
|
207
289
|
display: block;
|
|
290
|
+
min-width: 0;
|
|
291
|
+
margin-bottom: var(--dees-spacing-sm);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.stack {
|
|
295
|
+
display: grid;
|
|
296
|
+
grid-template-columns: minmax(0, 1fr);
|
|
297
|
+
gap: var(--dees-spacing-sm);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.stack > * {
|
|
301
|
+
min-width: 0;
|
|
302
|
+
grid-column: 1 / -1;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.toolGroup {
|
|
306
|
+
min-width: 0;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.toolGrid {
|
|
310
|
+
display: grid;
|
|
311
|
+
grid-template-columns: minmax(0, 1fr);
|
|
312
|
+
gap: var(--dees-spacing-sm);
|
|
313
|
+
min-width: 0;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.toolGrid > dees-harness-message {
|
|
317
|
+
min-width: 0;
|
|
318
|
+
align-self: start;
|
|
208
319
|
}
|
|
209
320
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
321
|
+
.toolGrid > dees-harness-message[data-tool-layout='full-row'] {
|
|
322
|
+
grid-column: 1 / -1;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
@container harness-transcript (min-width: 760px) {
|
|
326
|
+
.toolGrid.toolCount2,
|
|
327
|
+
.toolGrid.toolCount3,
|
|
328
|
+
.toolGrid.toolCount4 {
|
|
329
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
@container harness-transcript (min-width: 1120px) {
|
|
334
|
+
.toolGrid.toolCount3,
|
|
335
|
+
.toolGrid.toolCount4 {
|
|
336
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@container harness-transcript (min-width: 1480px) {
|
|
341
|
+
.toolGrid.toolCount4 {
|
|
342
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
343
|
+
}
|
|
214
344
|
}
|
|
215
345
|
|
|
216
346
|
.statusRow {
|
|
@@ -260,34 +390,18 @@ let DeesHarnessMessageList = (() => {
|
|
|
260
390
|
.jumpChip:hover {
|
|
261
391
|
background: var(--dees-material-thick-bg);
|
|
262
392
|
}
|
|
393
|
+
|
|
263
394
|
`,
|
|
264
395
|
];
|
|
265
396
|
/** messages and permissions merged chronologically (stable ids as keys) */
|
|
266
397
|
get timelineItems() {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
const runningSubagentBase = Number.MAX_SAFE_INTEGER / 2;
|
|
275
|
-
const sessionActive = this.status?.type === 'busy';
|
|
276
|
-
const items = this.messages.map((message, index) => {
|
|
277
|
-
const call = message.toolCall;
|
|
278
|
-
const runningSubagent = Boolean(call)
|
|
279
|
-
&& (call.name === 'task' || call.name === 'subagent' || call.kind === 'subtask')
|
|
280
|
-
&& (call.status === 'pending' || call.status === 'running');
|
|
281
|
-
const stale = !sessionActive || this.messages.length - 1 - index >= 20;
|
|
282
|
-
return {
|
|
283
|
-
kind: 'message',
|
|
284
|
-
time: runningSubagent && !stale
|
|
285
|
-
? runningSubagentBase + (message.createdAt || 0)
|
|
286
|
-
: message.createdAt || 0,
|
|
287
|
-
key: message.id,
|
|
288
|
-
message,
|
|
289
|
-
};
|
|
290
|
-
});
|
|
398
|
+
const items = this.messages.map((message) => ({
|
|
399
|
+
kind: 'message',
|
|
400
|
+
time: message.createdAt || 0,
|
|
401
|
+
key: `message:${message.id}`,
|
|
402
|
+
message,
|
|
403
|
+
toolLayout: message.toolCall ? this.toolRegistry.resolveLayout(message.toolCall) : null,
|
|
404
|
+
}));
|
|
291
405
|
for (const request of this.permissions) {
|
|
292
406
|
items.push({
|
|
293
407
|
kind: 'permission',
|
|
@@ -296,7 +410,7 @@ let DeesHarnessMessageList = (() => {
|
|
|
296
410
|
time: request.response
|
|
297
411
|
? (request.respondedAt ?? request.createdAt ?? 0)
|
|
298
412
|
: Number.MAX_SAFE_INTEGER,
|
|
299
|
-
key: `
|
|
413
|
+
key: `permission:${request.id}`,
|
|
300
414
|
request,
|
|
301
415
|
});
|
|
302
416
|
}
|
|
@@ -312,38 +426,86 @@ let DeesHarnessMessageList = (() => {
|
|
|
312
426
|
}
|
|
313
427
|
return items.sort((left, right) => left.time - right.time);
|
|
314
428
|
}
|
|
315
|
-
|
|
429
|
+
buildTimelineRenderItems() {
|
|
316
430
|
const items = this.timelineItems;
|
|
431
|
+
const retainedToolIds = new Set(items
|
|
432
|
+
.filter((item) => item.kind === 'message' && item.toolLayout !== null)
|
|
433
|
+
.map((item) => item.message.id));
|
|
434
|
+
for (const messageId of this.toolGroupIdByMessageId.keys()) {
|
|
435
|
+
if (!retainedToolIds.has(messageId))
|
|
436
|
+
this.toolGroupIdByMessageId.delete(messageId);
|
|
437
|
+
}
|
|
438
|
+
const result = [];
|
|
439
|
+
const usedGroupIds = new Set();
|
|
440
|
+
for (let index = 0; index < items.length;) {
|
|
441
|
+
const item = items[index];
|
|
442
|
+
if (item.kind !== 'message' || item.toolLayout === null) {
|
|
443
|
+
result.push(item);
|
|
444
|
+
index += 1;
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
const layout = item.toolLayout;
|
|
448
|
+
const run = [];
|
|
449
|
+
while (index < items.length) {
|
|
450
|
+
const candidate = items[index];
|
|
451
|
+
if (candidate.kind !== 'message'
|
|
452
|
+
|| candidate.toolLayout !== layout)
|
|
453
|
+
break;
|
|
454
|
+
run.push(candidate);
|
|
455
|
+
index += 1;
|
|
456
|
+
}
|
|
457
|
+
this.appendToolRun(result, run, layout, usedGroupIds);
|
|
458
|
+
}
|
|
459
|
+
return result;
|
|
460
|
+
}
|
|
461
|
+
willUpdate(changedProperties) {
|
|
462
|
+
super.willUpdate(changedProperties);
|
|
463
|
+
this.timelineRenderItems = this.buildTimelineRenderItems();
|
|
464
|
+
}
|
|
465
|
+
appendToolRun(targetArg, runArg, layoutArg, usedGroupIdsArg) {
|
|
466
|
+
const groupId = runArg
|
|
467
|
+
.map((item) => this.toolGroupIdByMessageId.get(item.message.id))
|
|
468
|
+
.find((candidate) => candidate !== undefined && !usedGroupIdsArg.has(candidate))
|
|
469
|
+
?? `tool-group-${this.nextToolGroupId++}`;
|
|
470
|
+
usedGroupIdsArg.add(groupId);
|
|
471
|
+
for (const item of runArg) {
|
|
472
|
+
this.toolGroupIdByMessageId.set(item.message.id, groupId);
|
|
473
|
+
}
|
|
474
|
+
targetArg.push({
|
|
475
|
+
kind: 'tool-group',
|
|
476
|
+
key: groupId,
|
|
477
|
+
layout: layoutArg,
|
|
478
|
+
messages: runArg,
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
render() {
|
|
482
|
+
const items = this.timelineRenderItems;
|
|
317
483
|
return html `
|
|
318
484
|
<div
|
|
319
|
-
class
|
|
485
|
+
class=${`scroll ${this.hideScrollbar ? 'hideScrollbar' : ''} ${this.scrollFadeTop ? 'fadeTop' : ''} ${this.scrollFadeBottom ? 'fadeBottom' : ''}`}
|
|
320
486
|
@scroll=${this.handleScroll}
|
|
321
487
|
@wheel=${this.handleUserScrollIntent}
|
|
322
488
|
@touchmove=${this.handleUserScrollIntent}
|
|
489
|
+
@pointerdown=${this.handleUserScrollIntent}
|
|
490
|
+
@keydown=${this.handleUserScrollIntent}
|
|
323
491
|
>
|
|
324
492
|
<div class="scrollContent">
|
|
493
|
+
<slot name="leading"></slot>
|
|
325
494
|
${items.length
|
|
326
495
|
? html `
|
|
327
496
|
<div class="stack">
|
|
328
|
-
${repeat(items, (item) => item.key, (item) => item.kind === '
|
|
329
|
-
?
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
.showTimestamp=${this.showTimestamps}
|
|
335
|
-
.toolRegistry=${this.toolRegistry}
|
|
336
|
-
.suppressEntry=${!this.entryAnimationsEnabled}
|
|
337
|
-
></dees-harness-message>
|
|
338
|
-
`
|
|
339
|
-
: item.kind === 'permission'
|
|
340
|
-
? html `
|
|
497
|
+
${repeat(items, (item) => item.key, (item) => item.kind === 'tool-group'
|
|
498
|
+
? this.renderToolGroup(item)
|
|
499
|
+
: item.kind === 'message'
|
|
500
|
+
? this.renderMessage(item)
|
|
501
|
+
: item.kind === 'permission'
|
|
502
|
+
? html `
|
|
341
503
|
<dees-harness-permission-card
|
|
342
504
|
.request=${item.request}
|
|
343
505
|
.busy=${this.permissionsBusy}
|
|
344
506
|
></dees-harness-permission-card>
|
|
345
507
|
`
|
|
346
|
-
|
|
508
|
+
: html `
|
|
347
509
|
<dees-harness-question-card
|
|
348
510
|
.request=${item.question}
|
|
349
511
|
.busy=${this.permissionsBusy}
|
|
@@ -372,6 +534,35 @@ let DeesHarnessMessageList = (() => {
|
|
|
372
534
|
</button>
|
|
373
535
|
`
|
|
374
536
|
: ''}
|
|
537
|
+
`;
|
|
538
|
+
}
|
|
539
|
+
renderMessage(itemArg) {
|
|
540
|
+
return html `
|
|
541
|
+
<dees-harness-message
|
|
542
|
+
data-message-id=${itemArg.message.id}
|
|
543
|
+
data-tool-layout=${itemArg.toolLayout ?? 'message'}
|
|
544
|
+
.message=${itemArg.message}
|
|
545
|
+
.showRole=${this.showRoles}
|
|
546
|
+
.showTimestamp=${this.showTimestamps}
|
|
547
|
+
.toolRegistry=${this.toolRegistry}
|
|
548
|
+
.allowSubtaskStreams=${this.allowSubtaskStreams}
|
|
549
|
+
.suppressEntry=${!this.entryAnimationsEnabled}
|
|
550
|
+
></dees-harness-message>
|
|
551
|
+
`;
|
|
552
|
+
}
|
|
553
|
+
renderToolGroup(groupArg) {
|
|
554
|
+
const count = groupArg.messages.length;
|
|
555
|
+
const countClass = count >= 4 ? 'toolCount4' : `toolCount${count}`;
|
|
556
|
+
return html `
|
|
557
|
+
<section
|
|
558
|
+
class="toolGroup"
|
|
559
|
+
data-tool-group-id=${groupArg.key}
|
|
560
|
+
data-tool-layout=${groupArg.layout}
|
|
561
|
+
>
|
|
562
|
+
<div class=${`toolGrid ${countClass}`}>
|
|
563
|
+
${repeat(groupArg.messages, (item) => item.key, (item) => this.renderMessage(item))}
|
|
564
|
+
</div>
|
|
565
|
+
</section>
|
|
375
566
|
`;
|
|
376
567
|
}
|
|
377
568
|
// ------------------------------------------------------------------ deltas
|
|
@@ -381,6 +572,24 @@ let DeesHarnessMessageList = (() => {
|
|
|
381
572
|
* idempotent; only the target element re-renders.
|
|
382
573
|
*/
|
|
383
574
|
applyDelta(delta) {
|
|
575
|
+
if (delta.parentMessageId) {
|
|
576
|
+
if (!this.allowSubtaskStreams)
|
|
577
|
+
return;
|
|
578
|
+
const parentMessage = this.messages.find((candidate) => candidate.id === delta.parentMessageId);
|
|
579
|
+
if (!parentMessage)
|
|
580
|
+
return;
|
|
581
|
+
const parentElement = this.messageElement(delta.parentMessageId);
|
|
582
|
+
const { parentMessageId: _parentMessageId, ...childDelta } = delta;
|
|
583
|
+
const localDelta = childDelta;
|
|
584
|
+
const appliedByElement = parentElement?.applySubtaskDelta(localDelta) ?? false;
|
|
585
|
+
if (!appliedByElement && parentMessage.toolCall?.subtask?.previewState === 'ready') {
|
|
586
|
+
if (harnessApplyMessageDelta(parentMessage.toolCall.subtask.messages, localDelta)) {
|
|
587
|
+
parentElement?.requestUpdate();
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
this.followAfterContentChange();
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
384
593
|
const message = this.messages.find((candidate) => candidate.id === delta.messageId);
|
|
385
594
|
if (!message)
|
|
386
595
|
return;
|
|
@@ -389,54 +598,37 @@ let DeesHarnessMessageList = (() => {
|
|
|
389
598
|
case 'text':
|
|
390
599
|
if (element)
|
|
391
600
|
element.appendTextDelta(delta.delta);
|
|
392
|
-
else
|
|
393
|
-
|
|
394
|
-
message.streaming = true;
|
|
395
|
-
}
|
|
601
|
+
else
|
|
602
|
+
harnessApplyMessageDelta(this.messages, delta);
|
|
396
603
|
break;
|
|
397
604
|
case 'reasoning-start':
|
|
398
605
|
if (element)
|
|
399
606
|
element.appendReasoningDelta(delta.partId, '', delta.startedAt);
|
|
400
|
-
else
|
|
401
|
-
|
|
402
|
-
message.reasoning.push({ id: delta.partId, text: '', startedAt: delta.startedAt ?? Date.now() });
|
|
403
|
-
}
|
|
607
|
+
else
|
|
608
|
+
harnessApplyMessageDelta(this.messages, delta);
|
|
404
609
|
break;
|
|
405
610
|
case 'reasoning':
|
|
406
611
|
if (element)
|
|
407
612
|
element.appendReasoningDelta(delta.partId, delta.delta);
|
|
408
|
-
else
|
|
409
|
-
|
|
410
|
-
const part = message.reasoning.find((candidate) => candidate.id === delta.partId);
|
|
411
|
-
if (part)
|
|
412
|
-
part.text += delta.delta;
|
|
413
|
-
else
|
|
414
|
-
message.reasoning.push({ id: delta.partId, text: delta.delta, startedAt: Date.now() });
|
|
415
|
-
}
|
|
613
|
+
else
|
|
614
|
+
harnessApplyMessageDelta(this.messages, delta);
|
|
416
615
|
break;
|
|
417
616
|
case 'reasoning-end':
|
|
418
617
|
if (element)
|
|
419
618
|
element.endReasoning(delta.partId, delta.endedAt);
|
|
420
|
-
else
|
|
421
|
-
|
|
422
|
-
if (part)
|
|
423
|
-
part.endedAt = delta.endedAt ?? Date.now();
|
|
424
|
-
}
|
|
619
|
+
else
|
|
620
|
+
harnessApplyMessageDelta(this.messages, delta);
|
|
425
621
|
break;
|
|
426
622
|
case 'tool-update':
|
|
427
623
|
message.toolCall = { ...(message.toolCall ?? { id: delta.tool.id, name: '', status: 'pending' }), ...delta.tool };
|
|
428
624
|
element?.requestUpdate();
|
|
625
|
+
this.requestUpdate();
|
|
429
626
|
break;
|
|
430
627
|
case 'message-end':
|
|
431
628
|
if (element)
|
|
432
629
|
element.endStream(delta.usage, delta.error);
|
|
433
|
-
else
|
|
434
|
-
|
|
435
|
-
if (delta.usage)
|
|
436
|
-
message.usage = delta.usage;
|
|
437
|
-
if (delta.error)
|
|
438
|
-
message.error = delta.error;
|
|
439
|
-
}
|
|
630
|
+
else
|
|
631
|
+
harnessApplyMessageDelta(this.messages, delta);
|
|
440
632
|
break;
|
|
441
633
|
}
|
|
442
634
|
this.followAfterContentChange();
|
|
@@ -455,9 +647,15 @@ let DeesHarnessMessageList = (() => {
|
|
|
455
647
|
return true;
|
|
456
648
|
return container.scrollHeight - container.scrollTop - container.clientHeight < pinThresholdPx;
|
|
457
649
|
}
|
|
458
|
-
contentResizeObserver =
|
|
650
|
+
contentResizeObserver = null;
|
|
651
|
+
observedScrollContent = null;
|
|
652
|
+
observedContentBlockSize = null;
|
|
653
|
+
followFrame = null;
|
|
654
|
+
followSecondFrame = null;
|
|
655
|
+
entryFrame = null;
|
|
656
|
+
entrySecondFrame = null;
|
|
459
657
|
// Intent-based following: the list stays pinned until the user explicitly
|
|
460
|
-
// moves away from the bottom (wheel/touch
|
|
658
|
+
// moves away from the bottom (wheel/touch/keyboard or a scrollbar drag), and
|
|
461
659
|
// re-pins the moment they return. Late layout growth — async markdown
|
|
462
660
|
// parses, images, entry animations — re-pins through the content
|
|
463
661
|
// ResizeObserver for as long as the user has not left the bottom, so
|
|
@@ -480,13 +678,33 @@ let DeesHarnessMessageList = (() => {
|
|
|
480
678
|
this.showJumpChip = true;
|
|
481
679
|
return;
|
|
482
680
|
}
|
|
483
|
-
this.
|
|
484
|
-
//
|
|
485
|
-
|
|
681
|
+
this.repinAfterContentGrowth();
|
|
682
|
+
// Catch post-render growth; later asynchronous growth uses the observer.
|
|
683
|
+
if (this.followFrame !== null || this.followSecondFrame !== null)
|
|
684
|
+
return;
|
|
685
|
+
this.followFrame = requestAnimationFrame(() => {
|
|
686
|
+
this.followFrame = null;
|
|
687
|
+
if (!this.isConnected)
|
|
688
|
+
return;
|
|
689
|
+
this.repinAfterContentGrowth();
|
|
690
|
+
this.followSecondFrame = requestAnimationFrame(() => {
|
|
691
|
+
this.followSecondFrame = null;
|
|
692
|
+
if (!this.isConnected)
|
|
693
|
+
return;
|
|
694
|
+
this.repinAfterContentGrowth();
|
|
695
|
+
});
|
|
696
|
+
});
|
|
486
697
|
}
|
|
487
698
|
handleUserScrollIntent = (event) => {
|
|
699
|
+
if (event.composedPath().some((candidate) => candidate instanceof DeesHarnessMessageList && candidate !== this))
|
|
700
|
+
return;
|
|
488
701
|
if (event.type === 'wheel' && event.deltaY >= 0)
|
|
489
702
|
return;
|
|
703
|
+
if (event.type === 'keydown'
|
|
704
|
+
&& !['ArrowUp', 'PageUp', 'Home'].includes(event.key))
|
|
705
|
+
return;
|
|
706
|
+
if (event.type === 'pointerdown' && event.target !== this.scrollContainer)
|
|
707
|
+
return;
|
|
490
708
|
this.userUnpinned = true;
|
|
491
709
|
};
|
|
492
710
|
scrollToBottom(force = false) {
|
|
@@ -501,12 +719,14 @@ let DeesHarnessMessageList = (() => {
|
|
|
501
719
|
this.lastObservedScrollTop = container.scrollTop;
|
|
502
720
|
this.showJumpChip = false;
|
|
503
721
|
}
|
|
722
|
+
this.syncScrollEdgeFades();
|
|
504
723
|
}
|
|
505
724
|
handleScroll = () => {
|
|
506
725
|
const container = this.scrollContainer;
|
|
507
726
|
if (!container)
|
|
508
727
|
return;
|
|
509
728
|
const top = container.scrollTop;
|
|
729
|
+
this.syncScrollEdgeFades();
|
|
510
730
|
if (this.isPinnedToBottom) {
|
|
511
731
|
// reaching the bottom — by any means — resumes following
|
|
512
732
|
this.userUnpinned = false;
|
|
@@ -514,10 +734,6 @@ let DeesHarnessMessageList = (() => {
|
|
|
514
734
|
this.showJumpChip = false;
|
|
515
735
|
}
|
|
516
736
|
}
|
|
517
|
-
else if (top < this.lastObservedScrollTop - 1) {
|
|
518
|
-
// moved up without our doing (scrollbar drag, keyboard): stop following
|
|
519
|
-
this.userUnpinned = true;
|
|
520
|
-
}
|
|
521
737
|
this.lastObservedScrollTop = top;
|
|
522
738
|
};
|
|
523
739
|
updated(changedProperties) {
|
|
@@ -525,24 +741,112 @@ let DeesHarnessMessageList = (() => {
|
|
|
525
741
|
if (changedProperties.has('messages') || changedProperties.has('status') || changedProperties.has('permissions') || changedProperties.has('questions')) {
|
|
526
742
|
this.followAfterContentChange();
|
|
527
743
|
}
|
|
744
|
+
if (changedProperties.has('autoFollow')) {
|
|
745
|
+
if (this.autoFollow) {
|
|
746
|
+
this.connectContentResizeObserver();
|
|
747
|
+
this.scrollToBottom(true);
|
|
748
|
+
}
|
|
749
|
+
else
|
|
750
|
+
this.disconnectContentResizeObserver();
|
|
751
|
+
}
|
|
752
|
+
if (changedProperties.has('fadeScrollEdges')
|
|
753
|
+
|| changedProperties.has('messages')
|
|
754
|
+
|| changedProperties.has('permissions')
|
|
755
|
+
|| changedProperties.has('questions'))
|
|
756
|
+
this.syncScrollEdgeFades();
|
|
528
757
|
}
|
|
529
758
|
firstUpdated(changedProperties) {
|
|
530
759
|
super.firstUpdated(changedProperties);
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
760
|
+
if (!this.isConnected)
|
|
761
|
+
return;
|
|
762
|
+
this.connectContentResizeObserver();
|
|
763
|
+
this.repinToBottom();
|
|
764
|
+
this.syncScrollEdgeFades();
|
|
536
765
|
// let the initial batch paint without entry animations, then enable them
|
|
537
|
-
requestAnimationFrame(() => {
|
|
538
|
-
|
|
766
|
+
this.entryFrame = requestAnimationFrame(() => {
|
|
767
|
+
this.entryFrame = null;
|
|
768
|
+
if (!this.isConnected)
|
|
769
|
+
return;
|
|
770
|
+
this.entrySecondFrame = requestAnimationFrame(() => {
|
|
771
|
+
this.entrySecondFrame = null;
|
|
772
|
+
if (!this.isConnected)
|
|
773
|
+
return;
|
|
539
774
|
this.entryAnimationsEnabled = true;
|
|
540
775
|
});
|
|
541
776
|
});
|
|
542
777
|
}
|
|
543
|
-
async
|
|
778
|
+
async connectedCallback() {
|
|
779
|
+
const connected = super.connectedCallback();
|
|
780
|
+
if (this.hasUpdated)
|
|
781
|
+
this.connectContentResizeObserver();
|
|
782
|
+
await connected;
|
|
783
|
+
}
|
|
784
|
+
connectContentResizeObserver() {
|
|
785
|
+
if (!this.isConnected || !this.autoFollow)
|
|
786
|
+
return;
|
|
787
|
+
const content = this.shadowRoot?.querySelector('.scrollContent');
|
|
788
|
+
if (!content || (this.contentResizeObserver && content === this.observedScrollContent))
|
|
789
|
+
return;
|
|
790
|
+
this.contentResizeObserver?.disconnect();
|
|
791
|
+
this.observedContentBlockSize = content.getBoundingClientRect().height;
|
|
792
|
+
this.contentResizeObserver = new ResizeObserver((entries) => {
|
|
793
|
+
const entry = entries.find((candidate) => candidate.target === this.observedScrollContent);
|
|
794
|
+
if (!entry)
|
|
795
|
+
return;
|
|
796
|
+
const blockSize = entry.borderBoxSize[0]?.blockSize ?? entry.contentRect.height;
|
|
797
|
+
this.handleContentBlockSize(blockSize);
|
|
798
|
+
});
|
|
799
|
+
this.contentResizeObserver.observe(content);
|
|
800
|
+
this.observedScrollContent = content;
|
|
801
|
+
}
|
|
802
|
+
repinAfterContentGrowth() {
|
|
803
|
+
const content = this.observedScrollContent;
|
|
804
|
+
if (!content)
|
|
805
|
+
return;
|
|
806
|
+
this.handleContentBlockSize(content.getBoundingClientRect().height);
|
|
807
|
+
}
|
|
808
|
+
handleContentBlockSize(blockSizeArg) {
|
|
809
|
+
const previousBlockSize = this.observedContentBlockSize;
|
|
810
|
+
this.observedContentBlockSize = blockSizeArg;
|
|
811
|
+
// Disclosure collapse and window eviction are not new streamed content.
|
|
812
|
+
// Let the browser handle shrink instead of fighting it with repins.
|
|
813
|
+
if (previousBlockSize !== null && blockSizeArg > previousBlockSize + 0.5) {
|
|
814
|
+
this.repinToBottom();
|
|
815
|
+
}
|
|
816
|
+
this.syncScrollEdgeFades();
|
|
817
|
+
}
|
|
818
|
+
syncScrollEdgeFades() {
|
|
819
|
+
const container = this.scrollContainer;
|
|
820
|
+
const fadeTop = Boolean(this.fadeScrollEdges && container && container.scrollTop > 1);
|
|
821
|
+
const fadeBottom = Boolean(this.fadeScrollEdges
|
|
822
|
+
&& container
|
|
823
|
+
&& container.scrollHeight - container.scrollTop - container.clientHeight > 1);
|
|
824
|
+
if (this.scrollFadeTop !== fadeTop)
|
|
825
|
+
this.scrollFadeTop = fadeTop;
|
|
826
|
+
if (this.scrollFadeBottom !== fadeBottom)
|
|
827
|
+
this.scrollFadeBottom = fadeBottom;
|
|
828
|
+
}
|
|
829
|
+
disconnectContentResizeObserver() {
|
|
544
830
|
this.contentResizeObserver?.disconnect();
|
|
545
831
|
this.contentResizeObserver = null;
|
|
832
|
+
this.observedScrollContent = null;
|
|
833
|
+
this.observedContentBlockSize = null;
|
|
834
|
+
}
|
|
835
|
+
async disconnectedCallback() {
|
|
836
|
+
if (this.followFrame !== null)
|
|
837
|
+
cancelAnimationFrame(this.followFrame);
|
|
838
|
+
if (this.followSecondFrame !== null)
|
|
839
|
+
cancelAnimationFrame(this.followSecondFrame);
|
|
840
|
+
if (this.entryFrame !== null)
|
|
841
|
+
cancelAnimationFrame(this.entryFrame);
|
|
842
|
+
if (this.entrySecondFrame !== null)
|
|
843
|
+
cancelAnimationFrame(this.entrySecondFrame);
|
|
844
|
+
this.followFrame = null;
|
|
845
|
+
this.followSecondFrame = null;
|
|
846
|
+
this.entryFrame = null;
|
|
847
|
+
this.entrySecondFrame = null;
|
|
848
|
+
this.entryAnimationsEnabled = true;
|
|
849
|
+
this.disconnectContentResizeObserver();
|
|
546
850
|
await super.disconnectedCallback();
|
|
547
851
|
}
|
|
548
852
|
static {
|
|
@@ -552,4 +856,4 @@ let DeesHarnessMessageList = (() => {
|
|
|
552
856
|
return DeesHarnessMessageList = _classThis;
|
|
553
857
|
})();
|
|
554
858
|
export { DeesHarnessMessageList };
|
|
555
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLCtDQUErQyxDQUFDO0FBQ3ZELE9BQU8saUVBQWlFLENBQUM7QUFDekUsT0FBTyw2REFBNkQsQ0FBQztBQUNyRSxPQUFPLDhDQUE4QyxDQUFDO0FBRXRELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFROUIsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO0FBTzFCOzs7Ozs7R0FNRztJQUVVLHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztvQ0FJcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2tDQUc5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUs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
|
|
859
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVN0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQTJCLE1BQU0sb0JBQW9CLENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTywrQ0FBK0MsQ0FBQztBQUN2RCxPQUFPLGlFQUFpRSxDQUFDO0FBQ3pFLE9BQU8sNkRBQTZELENBQUM7QUFDckUsT0FBTyw4Q0FBOEMsQ0FBQztBQUV0RCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO0FBUTlCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztBQXdCMUI7Ozs7OztHQU1HO0lBRVUsc0JBQXNCOzRCQURsQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7Ozs7c0JBQ0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlwRCxRQUFRLENBQUMs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
|