@design.estate/dees-catalog 6.5.0 → 6.7.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.
@@ -20,6 +20,38 @@ const demoGroups = [
20
20
  { id: 'active', name: 'Active work', sessionIds: ['session-0', 'session-1', 'session-2'] },
21
21
  { id: 'review', name: 'Review', sessionIds: ['session-3', 'session-4'] },
22
22
  ];
23
+ const demoResources = [
24
+ {
25
+ id: 'terminal:build',
26
+ kind: 'terminal',
27
+ title: 'Build shell',
28
+ icon: 'lucide:Terminal',
29
+ preview: 'pnpm run build',
30
+ updatedAt: Date.now() - 90_000,
31
+ state: 'ready',
32
+ },
33
+ {
34
+ id: 'file:release-notes',
35
+ kind: 'file',
36
+ title: 'Release notes',
37
+ icon: 'lucide:FileText',
38
+ preview: '6.7.0 controlled resource draft',
39
+ updatedAt: Date.now() - 180_000,
40
+ },
41
+ {
42
+ id: 'browser:preview',
43
+ kind: 'browser',
44
+ title: 'Documentation preview',
45
+ icon: 'lucide:Globe',
46
+ preview: 'localhost:3000',
47
+ updatedAt: Date.now() - 240_000,
48
+ },
49
+ ];
50
+ const demoResourceAssociations = [
51
+ { resourceId: 'terminal:build', sessionId: 'session-0' },
52
+ { resourceId: 'file:release-notes', sessionId: 'session-0' },
53
+ ];
54
+ const demoResourceEligibleSessionIds = Object.fromEntries(demoResources.map((resource) => [resource.id, ['session-0', 'session-1', 'session-2']]));
23
55
  const handleSessionSelect = (event) => {
24
56
  const list = event.currentTarget;
25
57
  list.selectedSessionId = event.detail.session.id;
@@ -42,6 +74,61 @@ const handleSessionMove = (event) => {
42
74
  list.groups = groups;
43
75
  list.ungroupedSessionIds = ungroupedSessionIds;
44
76
  };
77
+ const handleResourceAssociation = (event) => {
78
+ const list = event.currentTarget;
79
+ const next = list.resourceAssociations.filter((association) => association.resourceId !== event.detail.resource.id);
80
+ if (event.detail.toSessionId) {
81
+ next.push({
82
+ resourceId: event.detail.resource.id,
83
+ sessionId: event.detail.toSessionId,
84
+ });
85
+ }
86
+ list.resourceAssociations = next;
87
+ };
88
+ const handleResourceContext = async (event) => {
89
+ const list = event.currentTarget;
90
+ const { DeesContextmenu } = await import('../../00group-overlay/dees-contextmenu/dees-contextmenu.js');
91
+ const currentSessionId = event.detail.sessionId;
92
+ const eligibleSessionIds = ['session-0', 'session-1', 'session-2'];
93
+ const menu = await DeesContextmenu.openContextMenuWithOptions(new MouseEvent('contextmenu', {
94
+ clientX: event.detail.clientX,
95
+ clientY: event.detail.clientY,
96
+ }), [
97
+ ...eligibleSessionIds
98
+ .filter((sessionId) => sessionId !== currentSessionId)
99
+ .map((sessionId) => ({
100
+ name: `${currentSessionId ? 'Reassign' : 'Attach'} to ${demoSessions.find((session) => session.id === sessionId)?.title}`,
101
+ iconName: 'lucide:Link',
102
+ action: async () => {
103
+ event.detail.requestAssociation(sessionId);
104
+ event.detail.close();
105
+ },
106
+ })),
107
+ ...(currentSessionId
108
+ ? [{
109
+ name: 'Detach',
110
+ iconName: 'lucide:Unlink',
111
+ action: async () => {
112
+ event.detail.requestAssociation(null);
113
+ event.detail.close();
114
+ },
115
+ }]
116
+ : []),
117
+ ]);
118
+ if (!menu) {
119
+ event.detail.close();
120
+ }
121
+ else {
122
+ const observer = new MutationObserver(() => {
123
+ if (menu.isConnected)
124
+ return;
125
+ observer.disconnect();
126
+ event.detail.close();
127
+ });
128
+ observer.observe(document.body, { childList: true });
129
+ }
130
+ list.selectedResourceId = event.detail.resource.id;
131
+ };
45
132
  const openModal = async () => {
46
133
  const { DeesModal } = await import('../../00group-overlay/dees-modal/dees-modal.js');
47
134
  const content = document.createElement('dees-harness-session-list');
@@ -79,16 +166,27 @@ export const demoFunc = () => html `
79
166
  </style>
80
167
  <div class="sessionDemo">
81
168
  <dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
82
- <div class="demoHint">Drag the grip to reorder conversations or move them between groups.</div>
169
+ <div class="demoHint">
170
+ Use a conversation grip to reorder sessions. Use a resource grip to associate it with a
171
+ session, or open Actions with click, ContextMenu, or Shift+F10 for attach, reassign, and detach.
172
+ </div>
83
173
  <dees-harness-session-list
84
174
  .sessions=${demoSessions}
85
175
  .groups=${demoGroups}
86
176
  .ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
177
+ .resources=${demoResources}
178
+ .resourceAssociations=${demoResourceAssociations}
179
+ .eligibleSessionIdsByResourceId=${demoResourceEligibleSessionIds}
87
180
  .enableGrouping=${true}
88
181
  selectedSessionId="session-2"
89
182
  @harness-session-select=${handleSessionSelect}
90
183
  @harness-session-move=${handleSessionMove}
184
+ @harness-resource-select=${(event) => {
185
+ event.currentTarget.selectedResourceId = event.detail.resource.id;
186
+ }}
187
+ @harness-resource-context=${handleResourceContext}
188
+ @harness-resource-association-request=${handleResourceAssociation}
91
189
  ></dees-harness-session-list>
92
190
  </div>
93
191
  `;
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0L2RlZXMtaGFybmVzcy1zZXNzaW9uLWxpc3QuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPbkQsTUFBTSxZQUFZLEdBQTBCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLEVBQUUsRUFBRSxXQUFXLEtBQUssRUFBRTtJQUN0QixLQUFLLEVBQUU7UUFDTCx1QkFBdUI7UUFDdkIsc0NBQXNDO1FBQ3RDLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLHFDQUFxQztLQUN0QyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVM7SUFDL0MsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTO0lBQy9DLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sRUFBRSx3RUFBd0U7SUFDakYsS0FBSyxFQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDcEYsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztDQUN6QixDQUFDLENBQUMsQ0FBQztBQUVKLE1BQU0sVUFBVSxHQUEyQjtJQUN6QyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFO0lBQzFGLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRTtDQUN6RSxDQUFDO0FBUUYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQW9ELEVBQVEsRUFBRTtJQUN6RixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsYUFBaUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUE2QyxFQUFRLEVBQUU7SUFDaEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGFBQWlDLENBQUM7SUFDckQsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxHQUFHLEtBQUs7UUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7S0FDOUQsQ0FBQyxDQUFDLENBQUM7SUFDSixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUN0RixNQUFNLFNBQVMsR0FBRyxPQUFPLEtBQUssSUFBSTtRQUNoQyxDQUFDLENBQUMsbUJBQW1CO1FBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUM3RCxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU87SUFDdkIsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0FBQ2pELENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzNCLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNwRSxPQUFPLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztJQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixFQUFFLG1CQUFvQyxDQUFDLENBQUM7SUFDekYsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDekQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUcsS0FBcUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDSCxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUEsR0FBRyxPQUFPLEVBQUU7UUFDekIsV0FBVyxFQUFFLEVBQUU7S0FDaEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQXFCTixTQUFTOzs7a0JBR25CLFlBQVk7Z0JBQ2QsVUFBVTs2QkFDRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkQsSUFBSTs7Z0NBRUksbUJBQW1COzhCQUNyQixpQkFBaUI7OztDQUc5QyxDQUFDIn0=
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXNlc3Npb24tbGlzdC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3Mtc2Vzc2lvbi1saXN0L2RlZXMtaGFybmVzcy1zZXNzaW9uLWxpc3QuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFZbkQsTUFBTSxZQUFZLEdBQTBCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLEVBQUUsRUFBRSxXQUFXLEtBQUssRUFBRTtJQUN0QixLQUFLLEVBQUU7UUFDTCx1QkFBdUI7UUFDdkIsc0NBQXNDO1FBQ3RDLDJCQUEyQjtRQUMzQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLHFDQUFxQztLQUN0QyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVM7SUFDL0MsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTO0lBQy9DLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLE9BQU8sRUFBRSx3RUFBd0U7SUFDakYsS0FBSyxFQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDcEYsT0FBTyxFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQztDQUN6QixDQUFDLENBQUMs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