@design.estate/dees-catalog 6.6.0 → 6.7.1

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.
@@ -53,7 +53,9 @@ const dragThresholdPixels = 4;
53
53
  * `harness-group-context` — the host persists changes and passes fresh
54
54
  * `groups` back in. Sessions in no group render in the trailing ungrouped
55
55
  * section with pinned entries first, then explicit order, then new sessions by
56
- * recency. While a search query is active the list is flat.
56
+ * recency. While a search query is active the list is flat. Generic resources
57
+ * project as controlled child rows or into a trailing unattached Resources
58
+ * section; association interactions only emit host requests.
57
59
  */
58
60
  let DeesHarnessSessionList = (() => {
59
61
  let _classDecorators = [customElement('dees-harness-session-list')];
@@ -82,12 +84,30 @@ let DeesHarnessSessionList = (() => {
82
84
  let _ungroupedSessionIds_decorators;
83
85
  let _ungroupedSessionIds_initializers = [];
84
86
  let _ungroupedSessionIds_extraInitializers = [];
87
+ let _resources_decorators;
88
+ let _resources_initializers = [];
89
+ let _resources_extraInitializers = [];
90
+ let _resourceAssociations_decorators;
91
+ let _resourceAssociations_initializers = [];
92
+ let _resourceAssociations_extraInitializers = [];
93
+ let _selectedResourceId_decorators;
94
+ let _selectedResourceId_initializers = [];
95
+ let _selectedResourceId_extraInitializers = [];
96
+ let _eligibleSessionIdsByResourceId_decorators;
97
+ let _eligibleSessionIdsByResourceId_initializers = [];
98
+ let _eligibleSessionIdsByResourceId_extraInitializers = [];
85
99
  let _search_decorators;
86
100
  let _search_initializers = [];
87
101
  let _search_extraInitializers = [];
88
102
  let _draggingSessionId_decorators;
89
103
  let _draggingSessionId_initializers = [];
90
104
  let _draggingSessionId_extraInitializers = [];
105
+ let _draggingResourceId_decorators;
106
+ let _draggingResourceId_initializers = [];
107
+ let _draggingResourceId_extraInitializers = [];
108
+ let _resourceDropTargetSessionId_decorators;
109
+ let _resourceDropTargetSessionId_initializers = [];
110
+ let _resourceDropTargetSessionId_extraInitializers = [];
91
111
  let _dropSlot_decorators;
92
112
  let _dropSlot_initializers = [];
93
113
  let _dropSlot_extraInitializers = [];
@@ -109,6 +129,9 @@ let DeesHarnessSessionList = (() => {
109
129
  let _moveAnnouncement_decorators;
110
130
  let _moveAnnouncement_initializers = [];
111
131
  let _moveAnnouncement_extraInitializers = [];
132
+ let _resourceContextResourceId_decorators;
133
+ let _resourceContextResourceId_initializers = [];
134
+ let _resourceContextResourceId_extraInitializers = [];
112
135
  var DeesHarnessSessionList = class extends _classSuper {
113
136
  static { _classThis = this; }
114
137
  static {
@@ -120,8 +143,14 @@ let DeesHarnessSessionList = (() => {
120
143
  _groups_decorators = [property({ attribute: false })];
121
144
  _enableGrouping_decorators = [property({ type: Boolean })];
122
145
  _ungroupedSessionIds_decorators = [property({ attribute: false })];
146
+ _resources_decorators = [property({ attribute: false })];
147
+ _resourceAssociations_decorators = [property({ attribute: false })];
148
+ _selectedResourceId_decorators = [property()];
149
+ _eligibleSessionIdsByResourceId_decorators = [property({ attribute: false })];
123
150
  _search_decorators = [state()];
124
151
  _draggingSessionId_decorators = [state()];
152
+ _draggingResourceId_decorators = [state()];
153
+ _resourceDropTargetSessionId_decorators = [state()];
125
154
  _dropSlot_decorators = [state()];
126
155
  _draggedItemHeight_decorators = [state()];
127
156
  _expandedSessionIds_decorators = [state()];
@@ -129,6 +158,7 @@ let DeesHarnessSessionList = (() => {
129
158
  _topScrollShadowVisible_decorators = [state()];
130
159
  _bottomScrollShadowVisible_decorators = [state()];
131
160
  _moveAnnouncement_decorators = [state()];
161
+ _resourceContextResourceId_decorators = [state()];
132
162
  __esDecorate(this, null, _sessions_decorators, { kind: "accessor", name: "sessions", static: false, private: false, access: { has: obj => "sessions" in obj, get: obj => obj.sessions, set: (obj, value) => { obj.sessions = value; } }, metadata: _metadata }, _sessions_initializers, _sessions_extraInitializers);
133
163
  __esDecorate(this, null, _selectedSessionId_decorators, { kind: "accessor", name: "selectedSessionId", static: false, private: false, access: { has: obj => "selectedSessionId" in obj, get: obj => obj.selectedSessionId, set: (obj, value) => { obj.selectedSessionId = value; } }, metadata: _metadata }, _selectedSessionId_initializers, _selectedSessionId_extraInitializers);
134
164
  __esDecorate(this, null, _loading_decorators, { kind: "accessor", name: "loading", static: false, private: false, access: { has: obj => "loading" in obj, get: obj => obj.loading, set: (obj, value) => { obj.loading = value; } }, metadata: _metadata }, _loading_initializers, _loading_extraInitializers);
@@ -136,8 +166,14 @@ let DeesHarnessSessionList = (() => {
136
166
  __esDecorate(this, null, _groups_decorators, { kind: "accessor", name: "groups", static: false, private: false, access: { has: obj => "groups" in obj, get: obj => obj.groups, set: (obj, value) => { obj.groups = value; } }, metadata: _metadata }, _groups_initializers, _groups_extraInitializers);
137
167
  __esDecorate(this, null, _enableGrouping_decorators, { kind: "accessor", name: "enableGrouping", static: false, private: false, access: { has: obj => "enableGrouping" in obj, get: obj => obj.enableGrouping, set: (obj, value) => { obj.enableGrouping = value; } }, metadata: _metadata }, _enableGrouping_initializers, _enableGrouping_extraInitializers);
138
168
  __esDecorate(this, null, _ungroupedSessionIds_decorators, { kind: "accessor", name: "ungroupedSessionIds", static: false, private: false, access: { has: obj => "ungroupedSessionIds" in obj, get: obj => obj.ungroupedSessionIds, set: (obj, value) => { obj.ungroupedSessionIds = value; } }, metadata: _metadata }, _ungroupedSessionIds_initializers, _ungroupedSessionIds_extraInitializers);
169
+ __esDecorate(this, null, _resources_decorators, { kind: "accessor", name: "resources", static: false, private: false, access: { has: obj => "resources" in obj, get: obj => obj.resources, set: (obj, value) => { obj.resources = value; } }, metadata: _metadata }, _resources_initializers, _resources_extraInitializers);
170
+ __esDecorate(this, null, _resourceAssociations_decorators, { kind: "accessor", name: "resourceAssociations", static: false, private: false, access: { has: obj => "resourceAssociations" in obj, get: obj => obj.resourceAssociations, set: (obj, value) => { obj.resourceAssociations = value; } }, metadata: _metadata }, _resourceAssociations_initializers, _resourceAssociations_extraInitializers);
171
+ __esDecorate(this, null, _selectedResourceId_decorators, { kind: "accessor", name: "selectedResourceId", static: false, private: false, access: { has: obj => "selectedResourceId" in obj, get: obj => obj.selectedResourceId, set: (obj, value) => { obj.selectedResourceId = value; } }, metadata: _metadata }, _selectedResourceId_initializers, _selectedResourceId_extraInitializers);
172
+ __esDecorate(this, null, _eligibleSessionIdsByResourceId_decorators, { kind: "accessor", name: "eligibleSessionIdsByResourceId", static: false, private: false, access: { has: obj => "eligibleSessionIdsByResourceId" in obj, get: obj => obj.eligibleSessionIdsByResourceId, set: (obj, value) => { obj.eligibleSessionIdsByResourceId = value; } }, metadata: _metadata }, _eligibleSessionIdsByResourceId_initializers, _eligibleSessionIdsByResourceId_extraInitializers);
139
173
  __esDecorate(this, null, _search_decorators, { kind: "accessor", name: "search", static: false, private: false, access: { has: obj => "search" in obj, get: obj => obj.search, set: (obj, value) => { obj.search = value; } }, metadata: _metadata }, _search_initializers, _search_extraInitializers);
140
174
  __esDecorate(this, null, _draggingSessionId_decorators, { kind: "accessor", name: "draggingSessionId", static: false, private: false, access: { has: obj => "draggingSessionId" in obj, get: obj => obj.draggingSessionId, set: (obj, value) => { obj.draggingSessionId = value; } }, metadata: _metadata }, _draggingSessionId_initializers, _draggingSessionId_extraInitializers);
175
+ __esDecorate(this, null, _draggingResourceId_decorators, { kind: "accessor", name: "draggingResourceId", static: false, private: false, access: { has: obj => "draggingResourceId" in obj, get: obj => obj.draggingResourceId, set: (obj, value) => { obj.draggingResourceId = value; } }, metadata: _metadata }, _draggingResourceId_initializers, _draggingResourceId_extraInitializers);
176
+ __esDecorate(this, null, _resourceDropTargetSessionId_decorators, { kind: "accessor", name: "resourceDropTargetSessionId", static: false, private: false, access: { has: obj => "resourceDropTargetSessionId" in obj, get: obj => obj.resourceDropTargetSessionId, set: (obj, value) => { obj.resourceDropTargetSessionId = value; } }, metadata: _metadata }, _resourceDropTargetSessionId_initializers, _resourceDropTargetSessionId_extraInitializers);
141
177
  __esDecorate(this, null, _dropSlot_decorators, { kind: "accessor", name: "dropSlot", static: false, private: false, access: { has: obj => "dropSlot" in obj, get: obj => obj.dropSlot, set: (obj, value) => { obj.dropSlot = value; } }, metadata: _metadata }, _dropSlot_initializers, _dropSlot_extraInitializers);
142
178
  __esDecorate(this, null, _draggedItemHeight_decorators, { kind: "accessor", name: "draggedItemHeight", static: false, private: false, access: { has: obj => "draggedItemHeight" in obj, get: obj => obj.draggedItemHeight, set: (obj, value) => { obj.draggedItemHeight = value; } }, metadata: _metadata }, _draggedItemHeight_initializers, _draggedItemHeight_extraInitializers);
143
179
  __esDecorate(this, null, _expandedSessionIds_decorators, { kind: "accessor", name: "expandedSessionIds", static: false, private: false, access: { has: obj => "expandedSessionIds" in obj, get: obj => obj.expandedSessionIds, set: (obj, value) => { obj.expandedSessionIds = value; } }, metadata: _metadata }, _expandedSessionIds_initializers, _expandedSessionIds_extraInitializers);
@@ -145,6 +181,7 @@ let DeesHarnessSessionList = (() => {
145
181
  __esDecorate(this, null, _topScrollShadowVisible_decorators, { kind: "accessor", name: "topScrollShadowVisible", static: false, private: false, access: { has: obj => "topScrollShadowVisible" in obj, get: obj => obj.topScrollShadowVisible, set: (obj, value) => { obj.topScrollShadowVisible = value; } }, metadata: _metadata }, _topScrollShadowVisible_initializers, _topScrollShadowVisible_extraInitializers);
146
182
  __esDecorate(this, null, _bottomScrollShadowVisible_decorators, { kind: "accessor", name: "bottomScrollShadowVisible", static: false, private: false, access: { has: obj => "bottomScrollShadowVisible" in obj, get: obj => obj.bottomScrollShadowVisible, set: (obj, value) => { obj.bottomScrollShadowVisible = value; } }, metadata: _metadata }, _bottomScrollShadowVisible_initializers, _bottomScrollShadowVisible_extraInitializers);
147
183
  __esDecorate(this, null, _moveAnnouncement_decorators, { kind: "accessor", name: "moveAnnouncement", static: false, private: false, access: { has: obj => "moveAnnouncement" in obj, get: obj => obj.moveAnnouncement, set: (obj, value) => { obj.moveAnnouncement = value; } }, metadata: _metadata }, _moveAnnouncement_initializers, _moveAnnouncement_extraInitializers);
184
+ __esDecorate(this, null, _resourceContextResourceId_decorators, { kind: "accessor", name: "resourceContextResourceId", static: false, private: false, access: { has: obj => "resourceContextResourceId" in obj, get: obj => obj.resourceContextResourceId, set: (obj, value) => { obj.resourceContextResourceId = value; } }, metadata: _metadata }, _resourceContextResourceId_initializers, _resourceContextResourceId_extraInitializers);
148
185
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
149
186
  DeesHarnessSessionList = _classThis = _classDescriptor.value;
150
187
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
@@ -173,13 +210,32 @@ let DeesHarnessSessionList = (() => {
173
210
  /** Explicit order for sortable sessions outside user-defined groups. */
174
211
  get ungroupedSessionIds() { return this.#ungroupedSessionIds_accessor_storage; }
175
212
  set ungroupedSessionIds(value) { this.#ungroupedSessionIds_accessor_storage = value; }
176
- #search_accessor_storage = (__runInitializers(this, _ungroupedSessionIds_extraInitializers), __runInitializers(this, _search_initializers, ''));
213
+ #resources_accessor_storage = (__runInitializers(this, _ungroupedSessionIds_extraInitializers), __runInitializers(this, _resources_initializers, []));
214
+ get resources() { return this.#resources_accessor_storage; }
215
+ set resources(value) { this.#resources_accessor_storage = value; }
216
+ #resourceAssociations_accessor_storage = (__runInitializers(this, _resources_extraInitializers), __runInitializers(this, _resourceAssociations_initializers, []));
217
+ get resourceAssociations() { return this.#resourceAssociations_accessor_storage; }
218
+ set resourceAssociations(value) { this.#resourceAssociations_accessor_storage = value; }
219
+ #selectedResourceId_accessor_storage = (__runInitializers(this, _resourceAssociations_extraInitializers), __runInitializers(this, _selectedResourceId_initializers, ''));
220
+ get selectedResourceId() { return this.#selectedResourceId_accessor_storage; }
221
+ set selectedResourceId(value) { this.#selectedResourceId_accessor_storage = value; }
222
+ #eligibleSessionIdsByResourceId_accessor_storage = (__runInitializers(this, _selectedResourceId_extraInitializers), __runInitializers(this, _eligibleSessionIdsByResourceId_initializers, {}));
223
+ /** Serializable attach/reassign targets. A missing resource entry means no eligible targets. */
224
+ get eligibleSessionIdsByResourceId() { return this.#eligibleSessionIdsByResourceId_accessor_storage; }
225
+ set eligibleSessionIdsByResourceId(value) { this.#eligibleSessionIdsByResourceId_accessor_storage = value; }
226
+ #search_accessor_storage = (__runInitializers(this, _eligibleSessionIdsByResourceId_extraInitializers), __runInitializers(this, _search_initializers, ''));
177
227
  get search() { return this.#search_accessor_storage; }
178
228
  set search(value) { this.#search_accessor_storage = value; }
179
229
  #draggingSessionId_accessor_storage = (__runInitializers(this, _search_extraInitializers), __runInitializers(this, _draggingSessionId_initializers, ''));
180
230
  get draggingSessionId() { return this.#draggingSessionId_accessor_storage; }
181
231
  set draggingSessionId(value) { this.#draggingSessionId_accessor_storage = value; }
182
- #dropSlot_accessor_storage = (__runInitializers(this, _draggingSessionId_extraInitializers), __runInitializers(this, _dropSlot_initializers, undefined));
232
+ #draggingResourceId_accessor_storage = (__runInitializers(this, _draggingSessionId_extraInitializers), __runInitializers(this, _draggingResourceId_initializers, ''));
233
+ get draggingResourceId() { return this.#draggingResourceId_accessor_storage; }
234
+ set draggingResourceId(value) { this.#draggingResourceId_accessor_storage = value; }
235
+ #resourceDropTargetSessionId_accessor_storage = (__runInitializers(this, _draggingResourceId_extraInitializers), __runInitializers(this, _resourceDropTargetSessionId_initializers, ''));
236
+ get resourceDropTargetSessionId() { return this.#resourceDropTargetSessionId_accessor_storage; }
237
+ set resourceDropTargetSessionId(value) { this.#resourceDropTargetSessionId_accessor_storage = value; }
238
+ #dropSlot_accessor_storage = (__runInitializers(this, _resourceDropTargetSessionId_extraInitializers), __runInitializers(this, _dropSlot_initializers, undefined));
183
239
  get dropSlot() { return this.#dropSlot_accessor_storage; }
184
240
  set dropSlot(value) { this.#dropSlot_accessor_storage = value; }
185
241
  #draggedItemHeight_accessor_storage = (__runInitializers(this, _dropSlot_extraInitializers), __runInitializers(this, _draggedItemHeight_initializers, 0));
@@ -200,9 +256,16 @@ let DeesHarnessSessionList = (() => {
200
256
  #moveAnnouncement_accessor_storage = (__runInitializers(this, _bottomScrollShadowVisible_extraInitializers), __runInitializers(this, _moveAnnouncement_initializers, ''));
201
257
  get moveAnnouncement() { return this.#moveAnnouncement_accessor_storage; }
202
258
  set moveAnnouncement(value) { this.#moveAnnouncement_accessor_storage = value; }
203
- reflowGeneration = (__runInitializers(this, _moveAnnouncement_extraInitializers), 0);
259
+ #resourceContextResourceId_accessor_storage = (__runInitializers(this, _moveAnnouncement_extraInitializers), __runInitializers(this, _resourceContextResourceId_initializers, ''));
260
+ get resourceContextResourceId() { return this.#resourceContextResourceId_accessor_storage; }
261
+ set resourceContextResourceId(value) { this.#resourceContextResourceId_accessor_storage = value; }
262
+ reflowGeneration = (__runInitializers(this, _resourceContextResourceId_extraInitializers), 0);
204
263
  reflowAnimations = new Set();
205
264
  pointerDragGesture;
265
+ pendingResourceAssociationRequest;
266
+ resourceContextFocusTarget;
267
+ resourceContextFocusClass = '';
268
+ resourceContextGeneration = 0;
206
269
  keyboardMoveFocus;
207
270
  scrollResizeObserver;
208
271
  observedScrollContainer;
@@ -378,6 +441,8 @@ let DeesHarnessSessionList = (() => {
378
441
  }
379
442
 
380
443
  .itemInner {
444
+ position: relative;
445
+ isolation: isolate;
381
446
  min-width: 0;
382
447
  overflow: hidden;
383
448
  border: 1px solid var(--card-inner-border);
@@ -410,24 +475,34 @@ let DeesHarnessSessionList = (() => {
410
475
 
411
476
  @keyframes workingBackgroundScan {
412
477
  from {
413
- background-position: 100% 0;
478
+ transform: translate3d(-60%, 0, 0);
414
479
  }
415
480
  to {
416
- background-position: 0 0;
481
+ transform: translate3d(0, 0, 0);
417
482
  }
418
483
  }
419
484
 
420
485
  .item.state-working .itemInner {
421
- background:
422
- linear-gradient(
423
- 105deg,
424
- transparent 40%,
425
- color-mix(in srgb, var(--session-working) 6%, transparent) 45%,
426
- color-mix(in srgb, var(--session-working) 20%, transparent) 50%,
427
- color-mix(in srgb, var(--session-working) 6%, transparent) 55%,
428
- transparent 60%
429
- ) 100% 0 / 250% 100% no-repeat,
430
- var(--dees-color-bg-primary);
486
+ background: var(--dees-color-bg-primary);
487
+ }
488
+
489
+ .item.state-working .itemInner::before {
490
+ content: '';
491
+ position: absolute;
492
+ z-index: -1;
493
+ inset: 0 auto 0 0;
494
+ width: 250%;
495
+ pointer-events: none;
496
+ background: linear-gradient(
497
+ 105deg,
498
+ transparent 40%,
499
+ color-mix(in srgb, var(--session-working) 6%, transparent) 45%,
500
+ color-mix(in srgb, var(--session-working) 20%, transparent) 50%,
501
+ color-mix(in srgb, var(--session-working) 6%, transparent) 55%,
502
+ transparent 60%
503
+ );
504
+ transform: translate3d(-60%, 0, 0);
505
+ will-change: transform;
431
506
  animation: workingBackgroundScan 2s linear infinite;
432
507
  }
433
508
 
@@ -458,6 +533,12 @@ let DeesHarnessSessionList = (() => {
458
533
  --card-accent: var(--session-error);
459
534
  }
460
535
 
536
+ .item.resourceDropTarget {
537
+ outline: 2px solid var(--dees-color-accent-primary);
538
+ outline-offset: 2px;
539
+ box-shadow: 0 0 0 5px var(--dees-color-focus-ring), var(--dees-shadow-lg);
540
+ }
541
+
461
542
  @keyframes attentionPulse {
462
543
  0%, 100% {
463
544
  background: color-mix(in srgb, var(--dees-color-bg-primary) 94%, var(--session-attention) 6%);
@@ -632,6 +713,183 @@ let DeesHarnessSessionList = (() => {
632
713
  font-size: var(--dees-font-caption2-size, 10px);
633
714
  }
634
715
 
716
+ .resourceDropLabel {
717
+ margin: 0 10px 10px;
718
+ padding: 6px 9px;
719
+ border-radius: var(--dees-radius-md);
720
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 14%, transparent);
721
+ color: var(--dees-color-accent-primary);
722
+ font-size: var(--dees-font-caption1-size, 11px);
723
+ font-weight: 680;
724
+ text-align: center;
725
+ }
726
+
727
+ .resourceChildren {
728
+ display: grid;
729
+ gap: 4px;
730
+ margin: 0 8px 8px 24px;
731
+ padding: 0;
732
+ list-style: none;
733
+ }
734
+
735
+ .resourceSection {
736
+ margin-top: var(--dees-spacing-md);
737
+ }
738
+
739
+ .resourceSectionTitle {
740
+ margin: 0 0 7px;
741
+ padding: var(--dees-spacing-xs) 6px;
742
+ color: var(--dees-color-text-secondary);
743
+ font-size: var(--dees-font-caption1-size, 11px);
744
+ font-weight: 650;
745
+ letter-spacing: 0.05em;
746
+ text-transform: uppercase;
747
+ }
748
+
749
+ .resourceList {
750
+ display: grid;
751
+ gap: var(--dees-spacing-sm);
752
+ margin: 0;
753
+ padding: 0;
754
+ list-style: none;
755
+ }
756
+
757
+ .resourceRow {
758
+ display: grid;
759
+ grid-template-columns: 26px minmax(0, 1fr) 38px;
760
+ min-width: 0;
761
+ overflow: hidden;
762
+ border: 1px solid var(--dees-color-border-subtle);
763
+ border-radius: var(--dees-radius-lg);
764
+ background: color-mix(in srgb, var(--dees-color-bg-secondary) 76%, transparent);
765
+ color: var(--dees-color-text-primary);
766
+ box-shadow: var(--dees-shadow-xs);
767
+ box-sizing: border-box;
768
+ }
769
+
770
+ .resourceRow.selected {
771
+ border-color: var(--dees-color-accent-primary);
772
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 10%, var(--dees-color-bg-secondary));
773
+ }
774
+
775
+ .resourceRow.resourceDragging {
776
+ position: fixed;
777
+ inset: 0 auto auto 0;
778
+ width: var(--resource-drag-preview-width);
779
+ max-width: none;
780
+ margin: 0;
781
+ opacity: 0.96;
782
+ pointer-events: none;
783
+ transform: translate3d(var(--resource-drag-preview-x), var(--resource-drag-preview-y), 0);
784
+ box-shadow: var(--dees-shadow-xl);
785
+ }
786
+
787
+ .resourceDragHandle,
788
+ .resourcePrimary,
789
+ .resourceActions {
790
+ appearance: none;
791
+ border: 0;
792
+ background: transparent;
793
+ color: inherit;
794
+ font-family: inherit;
795
+ }
796
+
797
+ .resourceDragHandle {
798
+ display: grid;
799
+ place-items: center;
800
+ min-width: 26px;
801
+ padding: 0;
802
+ color: var(--dees-color-text-muted);
803
+ cursor: grab;
804
+ touch-action: none;
805
+ }
806
+
807
+ .resourceDragHandle:disabled {
808
+ opacity: 0.35;
809
+ cursor: default;
810
+ }
811
+
812
+ .resourceDragHandle:not(:disabled):active {
813
+ cursor: grabbing;
814
+ }
815
+
816
+ .resourcePrimary {
817
+ display: flex;
818
+ min-width: 0;
819
+ min-height: 38px;
820
+ align-items: center;
821
+ gap: 7px;
822
+ padding: 5px 4px 5px 7px;
823
+ text-align: left;
824
+ cursor: pointer;
825
+ }
826
+
827
+ .resourceIcon {
828
+ flex: 0 0 auto;
829
+ color: var(--dees-color-text-secondary);
830
+ }
831
+
832
+ .resourceCopy {
833
+ min-width: 0;
834
+ flex: 1;
835
+ }
836
+
837
+ .resourceTitle {
838
+ display: block;
839
+ overflow: hidden;
840
+ color: var(--dees-color-text-primary);
841
+ font-size: var(--dees-font-caption1-size, 11px);
842
+ font-weight: 620;
843
+ text-overflow: ellipsis;
844
+ white-space: nowrap;
845
+ }
846
+
847
+ .resourcePreview {
848
+ display: block;
849
+ overflow: hidden;
850
+ margin-top: 1px;
851
+ color: var(--dees-color-text-secondary);
852
+ font-size: var(--dees-font-caption2-size, 10px);
853
+ text-overflow: ellipsis;
854
+ white-space: nowrap;
855
+ }
856
+
857
+ .resourceMeta {
858
+ display: block;
859
+ overflow: hidden;
860
+ margin-top: 1px;
861
+ color: var(--dees-color-text-muted);
862
+ font-size: var(--dees-font-caption2-size, 10px);
863
+ text-overflow: ellipsis;
864
+ white-space: nowrap;
865
+ }
866
+
867
+ .resourceActions {
868
+ display: grid;
869
+ place-items: center;
870
+ min-width: 34px;
871
+ min-height: 34px;
872
+ margin: 2px;
873
+ padding: 0;
874
+ border-radius: var(--dees-radius-md);
875
+ color: var(--dees-color-text-muted);
876
+ cursor: pointer;
877
+ }
878
+
879
+ .resourceActions:hover {
880
+ background: var(--dees-color-hover);
881
+ color: var(--dees-color-text-primary);
882
+ }
883
+
884
+ .resourceDragHandle:focus-visible,
885
+ .resourcePrimary:focus-visible,
886
+ .resourceActions:focus-visible {
887
+ z-index: 1;
888
+ outline: 2px solid var(--dees-color-accent-primary);
889
+ outline-offset: -3px;
890
+ border-radius: var(--dees-radius-md);
891
+ }
892
+
635
893
  .visuallyHidden {
636
894
  position: absolute;
637
895
  width: 1px;
@@ -751,18 +1009,105 @@ let DeesHarnessSessionList = (() => {
751
1009
  .item,
752
1010
  .itemInner,
753
1011
  .item.state-attention .itemInner,
1012
+ .item.state-working .itemInner::before,
754
1013
  .item.state-working .itemHeader .stateDot,
755
1014
  .scrollShadow,
756
1015
  .expandToggle dees-icon {
757
1016
  animation: none;
758
1017
  transition: none;
759
1018
  }
1019
+
1020
+ .item.state-working .itemInner::before {
1021
+ transform: translate3d(-60%, 0, 0);
1022
+ will-change: auto;
1023
+ }
1024
+ }
1025
+
1026
+ @media (pointer: coarse) {
1027
+ .resourceRow {
1028
+ grid-template-columns: 44px minmax(0, 1fr) 44px;
1029
+ }
1030
+
1031
+ .resourceDragHandle,
1032
+ .resourceActions {
1033
+ min-width: 44px;
1034
+ min-height: 44px;
1035
+ margin: 0;
1036
+ }
1037
+
1038
+ .resourcePrimary {
1039
+ min-height: 44px;
1040
+ }
1041
+ }
1042
+
1043
+ @media (max-width: 280px) {
1044
+ .resourceChildren {
1045
+ margin-left: 8px;
1046
+ }
1047
+
1048
+ .resourcePreview {
1049
+ display: none;
1050
+ }
760
1051
  }
761
1052
  `,
762
1053
  ];
763
1054
  get sessionsById() {
764
1055
  return new Map(this.sessions.map((session) => [session.id, session]));
765
1056
  }
1057
+ get resourcesById() {
1058
+ const result = new Map();
1059
+ for (const resource of this.resources) {
1060
+ if (!resource.id || !resource.kind || !resource.title || result.has(resource.id))
1061
+ continue;
1062
+ result.set(resource.id, resource);
1063
+ }
1064
+ return result;
1065
+ }
1066
+ /** First valid record wins; unknown and duplicate records remain untouched but are not projected. */
1067
+ get acceptedResourceAssociations() {
1068
+ const resourcesById = this.resourcesById;
1069
+ const sessionsById = this.sessionsById;
1070
+ const result = new Map();
1071
+ for (const association of this.resourceAssociations) {
1072
+ if (!resourcesById.has(association.resourceId)
1073
+ || !sessionsById.has(association.sessionId)
1074
+ || result.has(association.resourceId))
1075
+ continue;
1076
+ result.set(association.resourceId, association.sessionId);
1077
+ }
1078
+ return result;
1079
+ }
1080
+ get acceptedResources() {
1081
+ return [...this.resourcesById.values()];
1082
+ }
1083
+ resourceMatchesSearch(resourceArg, queryArg) {
1084
+ return [resourceArg.id, resourceArg.kind, resourceArg.title, resourceArg.preview]
1085
+ .filter(Boolean)
1086
+ .join(' ')
1087
+ .toLowerCase()
1088
+ .includes(queryArg);
1089
+ }
1090
+ sessionMatchesSearch(sessionArg, queryArg) {
1091
+ return [sessionArg.title, sessionArg.preview, sessionArg.id]
1092
+ .filter(Boolean)
1093
+ .join(' ')
1094
+ .toLowerCase()
1095
+ .includes(queryArg);
1096
+ }
1097
+ resourcesForSession(sessionArg) {
1098
+ const associations = this.acceptedResourceAssociations;
1099
+ const associated = this.acceptedResources.filter((resource) => associations.get(resource.id) === sessionArg.id);
1100
+ const query = this.search.trim().toLowerCase();
1101
+ if (!query || this.sessionMatchesSearch(sessionArg, query))
1102
+ return associated;
1103
+ return associated.filter((resource) => this.resourceMatchesSearch(resource, query));
1104
+ }
1105
+ get unattachedResources() {
1106
+ const associations = this.acceptedResourceAssociations;
1107
+ const query = this.search.trim().toLowerCase();
1108
+ return this.acceptedResources.filter((resource) => (!associations.has(resource.id)
1109
+ && (!query || this.resourceMatchesSearch(resource, query))));
1110
+ }
766
1111
  get groupedSessionIds() {
767
1112
  const ids = new Set();
768
1113
  for (const group of this.groups) {
@@ -790,14 +1135,69 @@ let DeesHarnessSessionList = (() => {
790
1135
  }
791
1136
  get filteredSessions() {
792
1137
  const query = this.search.trim().toLowerCase();
1138
+ const associations = this.acceptedResourceAssociations;
1139
+ const matchingAttachedSessionIds = new Set(this.acceptedResources
1140
+ .filter((resource) => query && this.resourceMatchesSearch(resource, query))
1141
+ .map((resource) => associations.get(resource.id))
1142
+ .filter((sessionId) => sessionId !== undefined));
793
1143
  const sorted = [...this.sessions].sort((left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0));
794
1144
  if (!query)
795
1145
  return sorted;
796
- return sorted.filter((session) => [session.title, session.preview, session.id].filter(Boolean).join(' ').toLowerCase().includes(query));
1146
+ return sorted.filter((session) => this.sessionMatchesSearch(session, query) || matchingAttachedSessionIds.has(session.id));
797
1147
  }
798
1148
  focusSearch() {
799
1149
  this.shadowRoot?.querySelector('.searchRow input')?.focus();
800
1150
  }
1151
+ requestResourceAssociation(resourceIdArg, toSessionIdArg, sourceArg = 'action') {
1152
+ const resource = this.resourcesById.get(resourceIdArg);
1153
+ if (!resource)
1154
+ return false;
1155
+ const fromSessionId = this.acceptedResourceAssociations.get(resourceIdArg) ?? null;
1156
+ if (fromSessionId === toSessionIdArg)
1157
+ return false;
1158
+ if (toSessionIdArg !== null
1159
+ && (!this.sessionsById.has(toSessionIdArg) || !this.isResourceTargetEligible(resourceIdArg, toSessionIdArg)))
1160
+ return false;
1161
+ if (toSessionIdArg === null && fromSessionId === null)
1162
+ return false;
1163
+ const detail = fromSessionId === null
1164
+ ? {
1165
+ intent: 'attach',
1166
+ resource,
1167
+ fromSessionId: null,
1168
+ toSessionId: toSessionIdArg,
1169
+ source: sourceArg,
1170
+ }
1171
+ : toSessionIdArg === null
1172
+ ? {
1173
+ intent: 'detach',
1174
+ resource,
1175
+ fromSessionId,
1176
+ toSessionId: null,
1177
+ source: sourceArg,
1178
+ }
1179
+ : {
1180
+ intent: 'reassign',
1181
+ resource,
1182
+ fromSessionId,
1183
+ toSessionId: toSessionIdArg,
1184
+ source: sourceArg,
1185
+ };
1186
+ this.pendingResourceAssociationRequest = {
1187
+ resourceId: resource.id,
1188
+ resourceTitle: resource.title || resource.id,
1189
+ fromSessionId,
1190
+ toSessionId: toSessionIdArg,
1191
+ intent: detail.intent,
1192
+ };
1193
+ this.moveAnnouncement = this.resourceAssociationAnnouncement(detail, false);
1194
+ this.dispatchEvent(new CustomEvent('harness-resource-association-request', {
1195
+ detail,
1196
+ bubbles: true,
1197
+ composed: true,
1198
+ }));
1199
+ return true;
1200
+ }
801
1201
  updated(changedProperties) {
802
1202
  super.updated(changedProperties);
803
1203
  this.observeScrollGeometry();
@@ -807,16 +1207,35 @@ let DeesHarnessSessionList = (() => {
807
1207
  && (!this.pointerDragGesture.source.isConnected || !this.pointerDragGesture.handle.isConnected)) {
808
1208
  this.finishPointerDrag(false);
809
1209
  }
810
- if (!changedProperties.has('sessions'))
811
- return;
812
- const knownIds = new Set(this.sessions.map((session) => session.id));
813
- if (this.pointerDragGesture && !knownIds.has(this.pointerDragGesture.sessionId)) {
814
- this.finishPointerDrag(false);
1210
+ if (changedProperties.has('sessions')) {
1211
+ const knownIds = new Set(this.sessions.map((session) => session.id));
1212
+ if (this.pointerDragGesture?.type === 'session'
1213
+ && !knownIds.has(this.pointerDragGesture.sessionId)) {
1214
+ this.finishPointerDrag(false);
1215
+ }
1216
+ const nextExpanded = new Set([...this.expandedSessionIds].filter((sessionId) => knownIds.has(sessionId)));
1217
+ if (nextExpanded.size !== this.expandedSessionIds.size
1218
+ || [...nextExpanded].some((sessionId) => !this.expandedSessionIds.has(sessionId))) {
1219
+ this.expandedSessionIds = nextExpanded;
1220
+ }
815
1221
  }
816
- const nextExpanded = new Set([...this.expandedSessionIds].filter((sessionId) => knownIds.has(sessionId)));
817
- if (nextExpanded.size !== this.expandedSessionIds.size
818
- || [...nextExpanded].some((sessionId) => !this.expandedSessionIds.has(sessionId))) {
819
- this.expandedSessionIds = nextExpanded;
1222
+ if (changedProperties.has('resources') || changedProperties.has('resourceAssociations')) {
1223
+ const gesture = this.pointerDragGesture;
1224
+ if (gesture?.type === 'resource') {
1225
+ const currentSessionId = this.acceptedResourceAssociations.get(gesture.resourceId) ?? null;
1226
+ if (!this.resourcesById.has(gesture.resourceId) || currentSessionId !== gesture.fromSessionId) {
1227
+ this.finishPointerDrag(false);
1228
+ }
1229
+ }
1230
+ if (this.resourceContextResourceId
1231
+ && !this.resourcesById.has(this.resourceContextResourceId))
1232
+ this.closeResourceContext(this.resourceContextGeneration);
1233
+ this.reconcilePendingResourceAssociation();
1234
+ }
1235
+ if (changedProperties.has('eligibleSessionIdsByResourceId')) {
1236
+ const gesture = this.pointerDragGesture;
1237
+ if (gesture?.type === 'resource')
1238
+ this.finishPointerDrag(false);
820
1239
  }
821
1240
  }
822
1241
  async connectedCallback() {
@@ -829,6 +1248,7 @@ let DeesHarnessSessionList = (() => {
829
1248
  }
830
1249
  async disconnectedCallback() {
831
1250
  this.finishPointerDrag(false);
1251
+ this.clearResourceContextState();
832
1252
  this.scrollResizeObserver?.disconnect();
833
1253
  this.scrollResizeObserver = undefined;
834
1254
  this.observedScrollContainer = undefined;
@@ -841,7 +1261,12 @@ let DeesHarnessSessionList = (() => {
841
1261
  <div class="searchRow">
842
1262
  <dees-icon class="searchIcon" icon="lucide:Search" iconSize="13"></dees-icon>
843
1263
  <input
844
- placeholder="Search conversations"
1264
+ placeholder=${this.acceptedResources.length
1265
+ ? 'Search conversations and resources'
1266
+ : 'Search conversations'}
1267
+ aria-label=${this.acceptedResources.length
1268
+ ? 'Search conversations and resources'
1269
+ : 'Search conversations'}
845
1270
  .value=${this.search}
846
1271
  @input=${(event) => {
847
1272
  this.search = event.currentTarget.value;
@@ -888,21 +1313,30 @@ let DeesHarnessSessionList = (() => {
888
1313
  }
889
1314
  renderFlatList() {
890
1315
  const sessions = this.filteredSessions;
891
- if (!sessions.length) {
1316
+ const unattachedResources = this.unattachedResources;
1317
+ if (!sessions.length && !unattachedResources.length) {
892
1318
  return html `<div class="emptyNote">
893
- ${this.sessions.length ? 'No conversations match this search.' : this.emptyText}
1319
+ ${this.acceptedResources.length
1320
+ ? this.sessions.length
1321
+ ? 'No conversations or resources match this search.'
1322
+ : 'No resources match this search.'
1323
+ : this.sessions.length
1324
+ ? 'No conversations match this search.'
1325
+ : this.emptyText}
894
1326
  </div>`;
895
1327
  }
896
1328
  return html `
897
1329
  <div class="section">
898
1330
  ${repeat(sessions, (session) => session.id, (session) => this.renderItem(session, null, -1))}
899
1331
  </div>
1332
+ ${this.renderUnattachedResources(unattachedResources)}
900
1333
  `;
901
1334
  }
902
1335
  renderGroupedList() {
903
1336
  const byId = this.sessionsById;
904
1337
  const ungrouped = this.ungroupedSessions;
905
- if (!this.sessions.length && !this.groups.length) {
1338
+ const unattachedResources = this.unattachedResources;
1339
+ if (!this.sessions.length && !this.groups.length && !unattachedResources.length) {
906
1340
  return html `<div class="emptyNote">${this.emptyText}</div>`;
907
1341
  }
908
1342
  return html `
@@ -958,6 +1392,7 @@ let DeesHarnessSessionList = (() => {
958
1392
  `
959
1393
  : ''}
960
1394
  ${this.renderSection(ungrouped, null)}
1395
+ ${this.renderUnattachedResources(unattachedResources)}
961
1396
  `;
962
1397
  }
963
1398
  renderSection(sessions, groupId) {
@@ -1024,9 +1459,11 @@ let DeesHarnessSessionList = (() => {
1024
1459
  const state = session.state ?? 'normal';
1025
1460
  const detailsId = `session-details-${session.id}`;
1026
1461
  const dropIndex = index < 0 ? 0 : index;
1462
+ const resources = this.resourcesForSession(session);
1463
+ const isResourceDropTarget = this.resourceDropTargetSessionId === session.id;
1027
1464
  return html `
1028
1465
  <article
1029
- class="item state-${state} ${expanded ? 'expanded' : ''} ${session.id === this.selectedSessionId ? 'selected' : ''} ${this.draggingSessionId === session.id ? 'dragging' : ''}"
1466
+ class="item state-${state} ${expanded ? 'expanded' : ''} ${session.id === this.selectedSessionId ? 'selected' : ''} ${this.draggingSessionId === session.id ? 'dragging' : ''} ${isResourceDropTarget ? 'resourceDropTarget' : ''}"
1030
1467
  data-session-id=${session.id}
1031
1468
  data-drop-group-id=${groupId ?? ''}
1032
1469
  data-drop-index=${dropIndex}
@@ -1112,6 +1549,16 @@ let DeesHarnessSessionList = (() => {
1112
1549
  <dees-icon icon="lucide:ChevronDown" iconSize="15"></dees-icon>
1113
1550
  </button>
1114
1551
  </div>
1552
+ ${isResourceDropTarget
1553
+ ? html `<div class="resourceDropLabel">Associate resource with ${session.title || session.id}</div>`
1554
+ : ''}
1555
+ ${resources.length
1556
+ ? html `
1557
+ <ul class="resourceChildren" aria-label=${`Resources for ${session.title || session.id}`}>
1558
+ ${repeat(resources, (resource) => resource.id, (resource) => this.renderResource(resource, session.id))}
1559
+ </ul>
1560
+ `
1561
+ : ''}
1115
1562
  ${expanded
1116
1563
  ? html `
1117
1564
  <div class="itemDetails" id=${detailsId}>
@@ -1128,6 +1575,116 @@ let DeesHarnessSessionList = (() => {
1128
1575
  : ''}
1129
1576
  </div>
1130
1577
  </article>
1578
+ `;
1579
+ }
1580
+ renderUnattachedResources(resourcesArg) {
1581
+ if (!resourcesArg.length)
1582
+ return html ``;
1583
+ return html `
1584
+ <section class="resourceSection" aria-labelledby="unattached-resources-heading">
1585
+ <h2 class="resourceSectionTitle" id="unattached-resources-heading">Resources</h2>
1586
+ <ul class="resourceList" aria-label="Unattached resources">
1587
+ ${repeat(resourcesArg, (resource) => resource.id, (resource) => this.renderResource(resource, null))}
1588
+ </ul>
1589
+ </section>
1590
+ `;
1591
+ }
1592
+ renderResource(resourceArg, sessionIdArg) {
1593
+ const selected = resourceArg.id === this.selectedResourceId;
1594
+ const dragging = resourceArg.id === this.draggingResourceId;
1595
+ const eligibleTargetCount = this.eligibleSessionIds(resourceArg.id).filter((sessionId) => sessionId !== sessionIdArg).length;
1596
+ const contextOpen = resourceArg.id === this.resourceContextResourceId;
1597
+ return html `
1598
+ <li
1599
+ class="resourceRow ${selected ? 'selected' : ''} ${dragging ? 'resourceDragging' : ''}"
1600
+ data-resource-id=${resourceArg.id}
1601
+ data-resource-session-id=${sessionIdArg ?? ''}
1602
+ @dblclick=${(event) => {
1603
+ event.stopPropagation();
1604
+ if (this.eventTargetsResourceControl(event))
1605
+ return;
1606
+ this.emitResource('harness-resource-open', resourceArg, sessionIdArg);
1607
+ }}
1608
+ @contextmenu=${(event) => {
1609
+ event.preventDefault();
1610
+ event.stopPropagation();
1611
+ const focusTarget = event.composedPath().find((target) => (target instanceof HTMLElement
1612
+ && target.matches('button:not(:disabled)')))
1613
+ ?? event.currentTarget.querySelector('.resourcePrimary')
1614
+ ?? event.currentTarget;
1615
+ this.emitResourceContext(event, resourceArg, sessionIdArg, 'pointer', focusTarget);
1616
+ }}
1617
+ >
1618
+ <button
1619
+ class="resourceDragHandle"
1620
+ type="button"
1621
+ title=${eligibleTargetCount
1622
+ ? 'Drag to associate with an eligible conversation'
1623
+ : 'No eligible conversations'}
1624
+ aria-label=${`Associate ${resourceArg.title || resourceArg.id} by dragging`}
1625
+ aria-keyshortcuts="ContextMenu Shift+F10"
1626
+ ?disabled=${eligibleTargetCount === 0}
1627
+ @pointerdown=${(event) => {
1628
+ this.handleResourcePointerDown(event, resourceArg, sessionIdArg);
1629
+ }}
1630
+ @pointermove=${this.handlePointerMove}
1631
+ @pointerup=${this.handlePointerUp}
1632
+ @pointercancel=${this.handlePointerCancel}
1633
+ @lostpointercapture=${this.handleLostPointerCapture}
1634
+ @keydown=${(event) => {
1635
+ this.handleResourceContextKey(event, resourceArg, sessionIdArg);
1636
+ }}
1637
+ >
1638
+ <dees-icon icon="lucide:GripVertical" iconSize="13"></dees-icon>
1639
+ </button>
1640
+ <button
1641
+ class="resourcePrimary"
1642
+ type="button"
1643
+ aria-current=${selected ? 'true' : 'false'}
1644
+ @click=${() => this.emitResource('harness-resource-select', resourceArg, sessionIdArg)}
1645
+ @keydown=${(event) => {
1646
+ if (event.key === 'Enter') {
1647
+ event.preventDefault();
1648
+ this.emitResource('harness-resource-open', resourceArg, sessionIdArg);
1649
+ return;
1650
+ }
1651
+ this.handleResourceContextKey(event, resourceArg, sessionIdArg);
1652
+ }}
1653
+ >
1654
+ <dees-icon
1655
+ class="resourceIcon"
1656
+ icon=${resourceArg.icon || 'lucide:Box'}
1657
+ iconSize="14"
1658
+ ></dees-icon>
1659
+ <span class="resourceCopy">
1660
+ <span class="resourceTitle">${resourceArg.title || resourceArg.id}</span>
1661
+ ${resourceArg.preview ? html `<span class="resourcePreview">${resourceArg.preview}</span>` : ''}
1662
+ <span class="resourceMeta">
1663
+ ${resourceArg.kind}${resourceArg.state ? ` · ${resourceArg.state}` : ''}${resourceArg.updatedAt || resourceArg.createdAt
1664
+ ? ` · ${harnessFormatRelativeTime(resourceArg.updatedAt ?? resourceArg.createdAt)}`
1665
+ : ''}
1666
+ </span>
1667
+ </span>
1668
+ </button>
1669
+ <button
1670
+ class="resourceActions"
1671
+ type="button"
1672
+ title="Resource actions"
1673
+ aria-label=${`Actions for ${resourceArg.title || resourceArg.id}`}
1674
+ aria-haspopup="menu"
1675
+ aria-expanded=${contextOpen ? 'true' : 'false'}
1676
+ aria-keyshortcuts="ContextMenu Shift+F10"
1677
+ @click=${(event) => {
1678
+ event.stopPropagation();
1679
+ this.emitResourceContext(event, resourceArg, sessionIdArg, 'action', event.currentTarget);
1680
+ }}
1681
+ @keydown=${(event) => {
1682
+ this.handleResourceContextKey(event, resourceArg, sessionIdArg);
1683
+ }}
1684
+ >
1685
+ <dees-icon icon="lucide:Ellipsis" iconSize="15"></dees-icon>
1686
+ </button>
1687
+ </li>
1131
1688
  `;
1132
1689
  }
1133
1690
  eventTargetsExpandToggle(event) {
@@ -1136,6 +1693,10 @@ let DeesHarnessSessionList = (() => {
1136
1693
  eventTargetsDragHandle(event) {
1137
1694
  return event.composedPath().some((target) => target instanceof HTMLElement && target.classList.contains('dragHandle'));
1138
1695
  }
1696
+ eventTargetsResourceControl(event) {
1697
+ return event.composedPath().some((target) => target instanceof HTMLElement && (target.classList.contains('resourceDragHandle')
1698
+ || target.classList.contains('resourceActions')));
1699
+ }
1139
1700
  sessionStateLabel(state) {
1140
1701
  switch (state) {
1141
1702
  case 'working': return 'Working';
@@ -1190,6 +1751,7 @@ let DeesHarnessSessionList = (() => {
1190
1751
  return;
1191
1752
  const sourceRect = source.getBoundingClientRect();
1192
1753
  this.pointerDragGesture = {
1754
+ type: 'session',
1193
1755
  pointerId: eventArg.pointerId,
1194
1756
  handle,
1195
1757
  source,
@@ -1211,6 +1773,39 @@ let DeesHarnessSessionList = (() => {
1211
1773
  this.finishPointerDrag(false);
1212
1774
  }
1213
1775
  }
1776
+ handleResourcePointerDown(eventArg, resourceArg, fromSessionIdArg) {
1777
+ if (this.pointerDragGesture
1778
+ || eventArg.button !== 0
1779
+ || !eventArg.isPrimary
1780
+ || this.eligibleSessionIds(resourceArg.id).every((sessionId) => sessionId === fromSessionIdArg))
1781
+ return;
1782
+ const handle = eventArg.currentTarget;
1783
+ const source = handle.closest('.resourceRow');
1784
+ if (!source)
1785
+ return;
1786
+ const sourceRect = source.getBoundingClientRect();
1787
+ this.pointerDragGesture = {
1788
+ type: 'resource',
1789
+ pointerId: eventArg.pointerId,
1790
+ handle,
1791
+ source,
1792
+ resourceId: resourceArg.id,
1793
+ fromSessionId: fromSessionIdArg,
1794
+ startClientX: eventArg.clientX,
1795
+ startClientY: eventArg.clientY,
1796
+ grabOffsetX: eventArg.clientX - sourceRect.left,
1797
+ grabOffsetY: eventArg.clientY - sourceRect.top,
1798
+ phase: 'pending',
1799
+ };
1800
+ window.addEventListener('keydown', this.handleDragKeyDown, true);
1801
+ window.addEventListener('blur', this.handleDragWindowBlur);
1802
+ try {
1803
+ handle.setPointerCapture(eventArg.pointerId);
1804
+ }
1805
+ catch {
1806
+ this.finishPointerDrag(false);
1807
+ }
1808
+ }
1214
1809
  handlePointerMove = (eventArg) => {
1215
1810
  const gesture = this.pointerDragGesture;
1216
1811
  if (!gesture || eventArg.pointerId !== gesture.pointerId)
@@ -1222,9 +1817,20 @@ let DeesHarnessSessionList = (() => {
1222
1817
  if (gesture.phase === 'pending'
1223
1818
  && Math.hypot(eventArg.clientX - gesture.startClientX, eventArg.clientY - gesture.startClientY) < dragThresholdPixels)
1224
1819
  return;
1225
- if (gesture.phase === 'pending' && !this.startPointerDrag(eventArg, gesture))
1820
+ if (gesture.phase === 'pending'
1821
+ && !(gesture.type === 'session'
1822
+ ? this.startPointerDrag(eventArg, gesture)
1823
+ : this.startResourcePointerDrag(eventArg, gesture)))
1226
1824
  return;
1227
1825
  eventArg.preventDefault();
1826
+ if (gesture.type === 'resource') {
1827
+ this.moveResourceDragPreview(eventArg.clientX, eventArg.clientY, gesture);
1828
+ this.dragAutoScrollClientX = eventArg.clientX;
1829
+ this.dragAutoScrollClientY = eventArg.clientY;
1830
+ this.updateDragAutoScrollVelocity();
1831
+ this.updateResourceDropTargetFromPointer(eventArg.clientX, eventArg.clientY);
1832
+ return;
1833
+ }
1228
1834
  this.moveDragPreview(eventArg.clientX, eventArg.clientY, gesture);
1229
1835
  this.dragAutoScrollClientX = eventArg.clientX;
1230
1836
  this.dragAutoScrollClientY = eventArg.clientY;
@@ -1236,6 +1842,14 @@ let DeesHarnessSessionList = (() => {
1236
1842
  if (!gesture || eventArg.pointerId !== gesture.pointerId)
1237
1843
  return;
1238
1844
  if (gesture.phase === 'active') {
1845
+ if (gesture.type === 'resource') {
1846
+ this.dragAutoScrollClientX = eventArg.clientX;
1847
+ this.dragAutoScrollClientY = eventArg.clientY;
1848
+ this.moveResourceDragPreview(eventArg.clientX, eventArg.clientY, gesture);
1849
+ this.updateResourceDropTargetFromPointer(eventArg.clientX, eventArg.clientY);
1850
+ this.finishPointerDrag(true);
1851
+ return;
1852
+ }
1239
1853
  this.dragAutoScrollClientX = eventArg.clientX;
1240
1854
  this.dragAutoScrollClientY = eventArg.clientY;
1241
1855
  this.moveDragPreview(eventArg.clientX, eventArg.clientY, gesture);
@@ -1289,10 +1903,43 @@ let DeesHarnessSessionList = (() => {
1289
1903
  };
1290
1904
  return true;
1291
1905
  }
1906
+ startResourcePointerDrag(eventArg, gestureArg) {
1907
+ const sourceRect = gestureArg.source.getBoundingClientRect();
1908
+ gestureArg.source.classList.add('resourceDragging');
1909
+ gestureArg.source.style.setProperty('--resource-drag-preview-width', `${sourceRect.width}px`);
1910
+ this.moveResourceDragPreview(eventArg.clientX, eventArg.clientY, gestureArg);
1911
+ gestureArg.source.setAttribute('popover', 'manual');
1912
+ try {
1913
+ gestureArg.source.showPopover();
1914
+ }
1915
+ catch {
1916
+ this.finishPointerDrag(false);
1917
+ return false;
1918
+ }
1919
+ gestureArg.phase = 'active';
1920
+ this.draggingResourceId = gestureArg.resourceId;
1921
+ this.resourceDropTargetSessionId = '';
1922
+ return true;
1923
+ }
1292
1924
  moveDragPreview(clientXArg, clientYArg, gestureArg) {
1293
1925
  gestureArg.source.style.setProperty('--drag-preview-x', `${clientXArg - gestureArg.grabOffsetX}px`);
1294
1926
  gestureArg.source.style.setProperty('--drag-preview-y', `${clientYArg - gestureArg.grabOffsetY}px`);
1295
1927
  }
1928
+ moveResourceDragPreview(clientXArg, clientYArg, gestureArg) {
1929
+ gestureArg.source.style.setProperty('--resource-drag-preview-x', `${clientXArg - gestureArg.grabOffsetX}px`);
1930
+ gestureArg.source.style.setProperty('--resource-drag-preview-y', `${clientYArg - gestureArg.grabOffsetY}px`);
1931
+ }
1932
+ updateResourceDropTargetFromPointer(clientXArg, clientYArg) {
1933
+ const gesture = this.pointerDragGesture;
1934
+ if (gesture?.type !== 'resource' || gesture.phase !== 'active')
1935
+ return;
1936
+ const hit = this.shadowRoot?.elementFromPoint(clientXArg, clientYArg);
1937
+ const target = hit?.closest('.item[data-session-id]');
1938
+ const sessionId = target?.dataset.sessionId ?? '';
1939
+ this.resourceDropTargetSessionId = (sessionId
1940
+ && sessionId !== gesture.fromSessionId
1941
+ && this.isResourceTargetEligible(gesture.resourceId, sessionId)) ? sessionId : '';
1942
+ }
1296
1943
  setDropSlot(groupIdArg, indexArg) {
1297
1944
  const current = this.dropSlot;
1298
1945
  if (current && current.groupId === groupIdArg && current.index === indexArg)
@@ -1312,7 +1959,8 @@ let DeesHarnessSessionList = (() => {
1312
1959
  }
1313
1960
  updateDragAutoScrollVelocity() {
1314
1961
  const container = this.scrollContainer;
1315
- if (!container || !this.draggingSessionId)
1962
+ const gesture = this.pointerDragGesture;
1963
+ if (!container || gesture?.phase !== 'active')
1316
1964
  return;
1317
1965
  const rect = container.getBoundingClientRect();
1318
1966
  if (this.dragAutoScrollClientX < rect.left || this.dragAutoScrollClientX > rect.right) {
@@ -1339,7 +1987,8 @@ let DeesHarnessSessionList = (() => {
1339
1987
  runDragAutoScroll = (timestampArg) => {
1340
1988
  this.dragAutoScrollFrame = undefined;
1341
1989
  const container = this.scrollContainer;
1342
- if (!container || !this.draggingSessionId || this.dragAutoScrollVelocity === 0)
1990
+ const gesture = this.pointerDragGesture;
1991
+ if (!container || gesture?.phase !== 'active' || this.dragAutoScrollVelocity === 0)
1343
1992
  return;
1344
1993
  const elapsedMs = Math.min(34, Math.max(0, timestampArg - this.dragAutoScrollLastFrame));
1345
1994
  this.dragAutoScrollLastFrame = timestampArg;
@@ -1353,7 +2002,12 @@ let DeesHarnessSessionList = (() => {
1353
2002
  this.stopDragAutoScroll();
1354
2003
  return;
1355
2004
  }
1356
- this.updateDropSlotFromPointer();
2005
+ if (gesture.type === 'resource') {
2006
+ this.updateResourceDropTargetFromPointer(this.dragAutoScrollClientX, this.dragAutoScrollClientY);
2007
+ }
2008
+ else {
2009
+ this.updateDropSlotFromPointer();
2010
+ }
1357
2011
  this.dragAutoScrollFrame = requestAnimationFrame(this.runDragAutoScroll);
1358
2012
  };
1359
2013
  updateDropSlotFromPointer() {
@@ -1541,6 +2195,134 @@ let DeesHarnessSessionList = (() => {
1541
2195
  this.keyboardMoveFocus = undefined;
1542
2196
  }
1543
2197
  }
2198
+ eligibleSessionIds(resourceIdArg) {
2199
+ const knownSessionIds = new Set(this.sessions.map((session) => session.id));
2200
+ const result = [];
2201
+ const seen = new Set();
2202
+ for (const sessionId of this.eligibleSessionIdsByResourceId[resourceIdArg] ?? []) {
2203
+ if (!knownSessionIds.has(sessionId) || seen.has(sessionId))
2204
+ continue;
2205
+ seen.add(sessionId);
2206
+ result.push(sessionId);
2207
+ }
2208
+ return result;
2209
+ }
2210
+ isResourceTargetEligible(resourceIdArg, sessionIdArg) {
2211
+ return this.eligibleSessionIds(resourceIdArg).includes(sessionIdArg);
2212
+ }
2213
+ emitResource(nameArg, resourceArg, sessionIdArg) {
2214
+ const detail = {
2215
+ resource: resourceArg,
2216
+ sessionId: sessionIdArg,
2217
+ };
2218
+ this.dispatchEvent(new CustomEvent(nameArg, { detail, bubbles: true, composed: true }));
2219
+ }
2220
+ handleResourceContextKey(eventArg, resourceArg, sessionIdArg) {
2221
+ if (!(eventArg.key === 'ContextMenu' || (eventArg.key === 'F10' && eventArg.shiftKey)))
2222
+ return;
2223
+ eventArg.preventDefault();
2224
+ eventArg.stopPropagation();
2225
+ this.emitResourceContext(eventArg, resourceArg, sessionIdArg, 'keyboard', eventArg.currentTarget);
2226
+ }
2227
+ emitResourceContext(eventArg, resourceArg, sessionIdArg, sourceArg, focusTargetArg) {
2228
+ const rect = focusTargetArg.getBoundingClientRect();
2229
+ const contextGeneration = ++this.resourceContextGeneration;
2230
+ this.resourceContextResourceId = resourceArg.id;
2231
+ this.resourceContextFocusTarget = focusTargetArg;
2232
+ this.resourceContextFocusClass = [
2233
+ 'resourceActions',
2234
+ 'resourcePrimary',
2235
+ 'resourceDragHandle',
2236
+ ].find((className) => focusTargetArg.classList.contains(className)) ?? 'resourcePrimary';
2237
+ const detail = {
2238
+ resource: resourceArg,
2239
+ sessionId: sessionIdArg,
2240
+ clientX: sourceArg === 'pointer' && eventArg instanceof MouseEvent
2241
+ ? eventArg.clientX
2242
+ : rect.left + rect.width / 2,
2243
+ clientY: sourceArg === 'pointer' && eventArg instanceof MouseEvent
2244
+ ? eventArg.clientY
2245
+ : rect.bottom,
2246
+ source: sourceArg,
2247
+ originalEvent: eventArg,
2248
+ requestAssociation: (toSessionIdArg) => this.requestResourceAssociation(resourceArg.id, toSessionIdArg, sourceArg === 'keyboard' ? 'keyboard' : 'action'),
2249
+ close: () => this.closeResourceContext(contextGeneration),
2250
+ };
2251
+ this.dispatchEvent(new CustomEvent('harness-resource-context', { detail, bubbles: true, composed: true }));
2252
+ }
2253
+ closeResourceContext(contextGenerationArg) {
2254
+ if (!this.isConnected
2255
+ || contextGenerationArg !== this.resourceContextGeneration)
2256
+ return;
2257
+ const focusTarget = this.resourceContextFocusTarget;
2258
+ const resourceId = this.resourceContextResourceId;
2259
+ const focusClass = this.resourceContextFocusClass;
2260
+ this.clearResourceContextState();
2261
+ const closeGeneration = this.resourceContextGeneration;
2262
+ void this.updateComplete.then(() => {
2263
+ if (!this.isConnected || closeGeneration !== this.resourceContextGeneration)
2264
+ return;
2265
+ if (focusTarget?.isConnected) {
2266
+ focusTarget.focus();
2267
+ return;
2268
+ }
2269
+ const row = Array.from(this.shadowRoot?.querySelectorAll('.resourceRow[data-resource-id]') ?? []).find((candidate) => candidate.dataset.resourceId === resourceId);
2270
+ row?.querySelector(`.${focusClass || 'resourcePrimary'}`)?.focus();
2271
+ });
2272
+ }
2273
+ clearResourceContextState() {
2274
+ this.resourceContextGeneration += 1;
2275
+ this.resourceContextResourceId = '';
2276
+ this.resourceContextFocusTarget = undefined;
2277
+ this.resourceContextFocusClass = '';
2278
+ }
2279
+ reconcilePendingResourceAssociation() {
2280
+ const pending = this.pendingResourceAssociationRequest;
2281
+ if (!pending)
2282
+ return;
2283
+ if (!this.resourcesById.has(pending.resourceId)) {
2284
+ this.pendingResourceAssociationRequest = undefined;
2285
+ return;
2286
+ }
2287
+ const currentSessionId = this.acceptedResourceAssociations.get(pending.resourceId) ?? null;
2288
+ if (currentSessionId !== pending.toSessionId) {
2289
+ if (currentSessionId !== pending.fromSessionId) {
2290
+ const controlledSession = currentSessionId
2291
+ ? this.sessionsById.get(currentSessionId)?.title ?? currentSessionId
2292
+ : 'unattached';
2293
+ this.moveAnnouncement = `Association request for ${pending.resourceTitle} was not applied; controlled association is ${controlledSession}.`;
2294
+ this.pendingResourceAssociationRequest = undefined;
2295
+ }
2296
+ return;
2297
+ }
2298
+ const fromSession = pending.fromSessionId
2299
+ ? this.sessionsById.get(pending.fromSessionId)?.title ?? pending.fromSessionId
2300
+ : '';
2301
+ const toSession = pending.toSessionId
2302
+ ? this.sessionsById.get(pending.toSessionId)?.title ?? pending.toSessionId
2303
+ : '';
2304
+ this.moveAnnouncement = pending.intent === 'attach'
2305
+ ? `${pending.resourceTitle} is now attached to ${toSession}.`
2306
+ : pending.intent === 'detach'
2307
+ ? `${pending.resourceTitle} is now detached from ${fromSession}.`
2308
+ : `${pending.resourceTitle} is now reassigned from ${fromSession} to ${toSession}.`;
2309
+ this.pendingResourceAssociationRequest = undefined;
2310
+ }
2311
+ resourceAssociationAnnouncement(detailArg, completedArg) {
2312
+ const resourceTitle = detailArg.resource.title || detailArg.resource.id;
2313
+ const fromTitle = detailArg.fromSessionId
2314
+ ? this.sessionsById.get(detailArg.fromSessionId)?.title ?? detailArg.fromSessionId
2315
+ : '';
2316
+ const toTitle = detailArg.toSessionId
2317
+ ? this.sessionsById.get(detailArg.toSessionId)?.title ?? detailArg.toSessionId
2318
+ : '';
2319
+ const verb = completedArg ? 'completed' : 'requested';
2320
+ return detailArg.intent === 'attach'
2321
+ ? `Attach ${verb} for ${resourceTitle} to ${toTitle}.`
2322
+ : detailArg.intent === 'detach'
2323
+ ? `Detach ${verb} for ${resourceTitle} from ${fromTitle}.`
2324
+ : `Reassign ${verb} for ${resourceTitle} from ${fromTitle} to ${toTitle}.`;
2325
+ }
1544
2326
  async animateCardReflow(previousRectsArg, generationArg) {
1545
2327
  await this.updateComplete;
1546
2328
  if (generationArg !== this.reflowGeneration
@@ -1578,9 +2360,21 @@ let DeesHarnessSessionList = (() => {
1578
2360
  const gesture = this.pointerDragGesture;
1579
2361
  if (!gesture)
1580
2362
  return;
1581
- const detail = commitArg && gesture.phase === 'active' && this.dropSlot
2363
+ const sessionMoveDetail = (gesture.type === 'session'
2364
+ && commitArg
2365
+ && gesture.phase === 'active'
2366
+ && this.dropSlot)
1582
2367
  ? this.createMoveDetail(gesture.sessionId, this.dropSlot.groupId, this.dropSlot.index)
1583
2368
  : undefined;
2369
+ const resourceRequest = (gesture.type === 'resource'
2370
+ && commitArg
2371
+ && gesture.phase === 'active'
2372
+ && this.resourceDropTargetSessionId)
2373
+ ? {
2374
+ resourceId: gesture.resourceId,
2375
+ toSessionId: this.resourceDropTargetSessionId,
2376
+ }
2377
+ : undefined;
1584
2378
  this.pointerDragGesture = undefined;
1585
2379
  window.removeEventListener('keydown', this.handleDragKeyDown, true);
1586
2380
  window.removeEventListener('blur', this.handleDragWindowBlur);
@@ -1590,15 +2384,20 @@ let DeesHarnessSessionList = (() => {
1590
2384
  if (gesture.source.matches(':popover-open'))
1591
2385
  gesture.source.hidePopover();
1592
2386
  gesture.source.removeAttribute('popover');
1593
- gesture.source.classList.remove('dragging');
2387
+ gesture.source.classList.remove('dragging', 'resourceDragging');
1594
2388
  for (const property of [
1595
2389
  '--drag-preview-width',
1596
2390
  '--drag-preview-height',
1597
2391
  '--drag-preview-x',
1598
2392
  '--drag-preview-y',
2393
+ '--resource-drag-preview-width',
2394
+ '--resource-drag-preview-x',
2395
+ '--resource-drag-preview-y',
1599
2396
  ])
1600
2397
  gesture.source.style.removeProperty(property);
1601
2398
  this.draggingSessionId = '';
2399
+ this.draggingResourceId = '';
2400
+ this.resourceDropTargetSessionId = '';
1602
2401
  this.draggedItemHeight = 0;
1603
2402
  this.dropSlot = undefined;
1604
2403
  try {
@@ -1609,8 +2408,15 @@ let DeesHarnessSessionList = (() => {
1609
2408
  catch {
1610
2409
  // Capture may already be released or the handle may have disconnected.
1611
2410
  }
1612
- if (detail) {
1613
- this.dispatchEvent(new CustomEvent('harness-session-move', { detail, bubbles: true, composed: true }));
2411
+ if (sessionMoveDetail) {
2412
+ this.dispatchEvent(new CustomEvent('harness-session-move', {
2413
+ detail: sessionMoveDetail,
2414
+ bubbles: true,
2415
+ composed: true,
2416
+ }));
2417
+ }
2418
+ if (resourceRequest) {
2419
+ this.requestResourceAssociation(resourceRequest.resourceId, resourceRequest.toSessionId, 'drop');
1614
2420
  }
1615
2421
  }
1616
2422
  emit(name, session) {
@@ -1623,4 +2429,4 @@ let DeesHarnessSessionList = (() => {
1623
2429
  return DeesHarnessSessionList = _classThis;
1624
2430
  })();
1625
2431
  export { DeesHarnessSessionList };
1626
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVF0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLDhDQUE4QyxDQUFDO0FBRXRELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDOUIsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLENBQUM7QUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFvQzlCOzs7Ozs7Ozs7Ozs7OztHQWNHO0lBRVUsc0JBQXNCOzRCQURsQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7Ozs7c0JBQ0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlwRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7NkNBRzlCLFFBQVEsRUFBRTttQ0FHVixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7cUNBRzNCLFFBQVEsRUFBRTtrQ0FHVixRQUFRLENB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
2432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQWV0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLDhDQUE4QyxDQUFDO0FBRXRELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7QUFDOUIsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFHLENBQUM7QUFDN0MsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUE2RDlCOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0lBRVUsc0JBQXNCOzRCQURsQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7Ozs7c0JBQ0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlwRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7NkNBRzlCLFFBQVEsRUFBRTttQ0FHVixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7cUNBRzNC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YTtZQUN4QixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW13QkY7U0FDRixDQUFDO1FBRUYsSUFBWSxZQUFZO1lBQ3RCLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFD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