@memberjunction/ng-conversations 5.0.0 → 5.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.
Files changed (78) hide show
  1. package/dist/__tests__/mention-parser.test.js +2 -2
  2. package/dist/__tests__/mention-parser.test.js.map +1 -1
  3. package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
  4. package/dist/lib/components/artifact/artifact-share-modal.component.js +1 -0
  5. package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
  6. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +3 -2
  7. package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
  8. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +16 -7
  9. package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
  10. package/dist/lib/components/collection/artifact-create-modal.component.d.ts +3 -2
  11. package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
  12. package/dist/lib/components/collection/artifact-create-modal.component.js +6 -3
  13. package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
  14. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +3 -2
  15. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
  16. package/dist/lib/components/collection/collection-artifact-card.component.js +8 -3
  17. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
  18. package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
  19. package/dist/lib/components/collection/collection-share-modal.component.js +2 -0
  20. package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
  21. package/dist/lib/components/collection/collections-full-view.component.d.ts +19 -3
  22. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  23. package/dist/lib/components/collection/collections-full-view.component.js +580 -233
  24. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  25. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +21 -9
  26. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  27. package/dist/lib/components/conversation/conversation-chat-area.component.js +84 -15
  28. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  29. package/dist/lib/components/conversation/conversation-list.component.d.ts +3 -1
  30. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  31. package/dist/lib/components/conversation/conversation-list.component.js +14 -2
  32. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  33. package/dist/lib/components/message/message-input.component.d.ts +3 -3
  34. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  35. package/dist/lib/components/message/message-input.component.js +2 -2
  36. package/dist/lib/components/message/message-input.component.js.map +1 -1
  37. package/dist/lib/components/message/message-item.component.d.ts +2 -2
  38. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  39. package/dist/lib/components/message/message-item.component.js.map +1 -1
  40. package/dist/lib/components/message/message-list.component.d.ts +2 -2
  41. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  42. package/dist/lib/components/message/message-list.component.js.map +1 -1
  43. package/dist/lib/components/share/share-modal.component.d.ts +3 -2
  44. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
  45. package/dist/lib/components/share/share-modal.component.js +9 -3
  46. package/dist/lib/components/share/share-modal.component.js.map +1 -1
  47. package/dist/lib/components/shared/user-picker.component.d.ts +3 -1
  48. package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
  49. package/dist/lib/components/shared/user-picker.component.js +7 -2
  50. package/dist/lib/components/shared/user-picker.component.js.map +1 -1
  51. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +4 -1
  52. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  53. package/dist/lib/components/workspace/conversation-workspace.component.js +10 -4
  54. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  55. package/dist/lib/models/conversation-state.model.d.ts +3 -3
  56. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  57. package/dist/lib/services/conversation-agent.service.d.ts +3 -3
  58. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  59. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  60. package/dist/lib/services/mention-autocomplete.service.d.ts +2 -2
  61. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  62. package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
  63. package/dist/lib/services/mention-parser.service.d.ts +4 -4
  64. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  65. package/dist/lib/services/mention-parser.service.js.map +1 -1
  66. package/package.json +17 -17
  67. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -48
  68. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
  69. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -457
  70. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
  71. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts +0 -52
  72. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.d.ts.map +0 -1
  73. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js +0 -276
  74. package/dist/lib/components/delete-confirm/delete-confirm-modal.component.js.map +0 -1
  75. package/dist/lib/services/conversation-state.service.d.ts +0 -160
  76. package/dist/lib/services/conversation-state.service.d.ts.map +0 -1
  77. package/dist/lib/services/conversation-state.service.js +0 -334
  78. package/dist/lib/services/conversation-state.service.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';
2
2
  import { RunView, Metadata } from '@memberjunction/core';
3
3
  import { Subject, takeUntil } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
@@ -9,10 +9,11 @@ import * as i4 from "../../services/collection-permission.service";
9
9
  import * as i5 from "@memberjunction/ng-artifacts";
10
10
  import * as i6 from "@angular/common";
11
11
  import * as i7 from "@angular/forms";
12
- import * as i8 from "@memberjunction/ng-shared-generic";
13
- import * as i9 from "./collection-share-modal.component";
14
- import * as i10 from "./collection-form-modal.component";
15
- import * as i11 from "./artifact-create-modal.component";
12
+ import * as i8 from "@progress/kendo-angular-dialog";
13
+ import * as i9 from "@memberjunction/ng-shared-generic";
14
+ import * as i10 from "./collection-share-modal.component";
15
+ import * as i11 from "./collection-form-modal.component";
16
+ import * as i12 from "./artifact-create-modal.component";
16
17
  function CollectionsFullViewComponent_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
17
18
  const _r1 = i0.ɵɵgetCurrentView();
18
19
  i0.ɵɵelement(0, "i", 27);
@@ -87,17 +88,63 @@ function CollectionsFullViewComponent_Conditional_17_Template(rf, ctx) { if (rf
87
88
  i0.ɵɵelement(1, "i", 36);
88
89
  i0.ɵɵelementEnd();
89
90
  } }
90
- function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template(rf, ctx) { if (rf & 1) {
91
+ function CollectionsFullViewComponent_Conditional_18_Conditional_2_Template(rf, ctx) { if (rf & 1) {
92
+ const _r9 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵelementStart(0, "button", 8);
94
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.shareCurrentCollection()); });
95
+ i0.ɵɵelement(1, "i", 41);
96
+ i0.ɵɵelementEnd();
97
+ } if (rf & 2) {
98
+ const ctx_r2 = i0.ɵɵnextContext(2);
99
+ i0.ɵɵproperty("title", "Share: " + ctx_r2.currentCollection.Name);
100
+ } }
101
+ function CollectionsFullViewComponent_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
91
102
  const _r10 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "div", 40)(1, "button", 31);
93
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
94
- i0.ɵɵelement(2, "i", 41);
103
+ i0.ɵɵelementStart(0, "button", 8);
104
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.editCurrentCollection()); });
105
+ i0.ɵɵelement(1, "i", 42);
106
+ i0.ɵɵelementEnd();
107
+ } if (rf & 2) {
108
+ const ctx_r2 = i0.ɵɵnextContext(2);
109
+ i0.ɵɵproperty("title", "Edit: " + ctx_r2.currentCollection.Name);
110
+ } }
111
+ function CollectionsFullViewComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
112
+ const _r11 = i0.ɵɵgetCurrentView();
113
+ i0.ɵɵelementStart(0, "button", 43);
114
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.deleteCurrentCollection()); });
115
+ i0.ɵɵelement(1, "i", 44);
116
+ i0.ɵɵelementEnd();
117
+ } if (rf & 2) {
118
+ const ctx_r2 = i0.ɵɵnextContext(2);
119
+ i0.ɵɵproperty("title", "Delete: " + ctx_r2.currentCollection.Name);
120
+ } }
121
+ function CollectionsFullViewComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵelement(0, "div", 37);
123
+ i0.ɵɵelementStart(1, "div", 38);
124
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_18_Conditional_2_Template, 2, 1, "button", 39);
125
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_18_Conditional_3_Template, 2, 1, "button", 39);
126
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_18_Conditional_4_Template, 2, 1, "button", 40);
127
+ i0.ɵɵelementEnd();
128
+ } if (rf & 2) {
129
+ const ctx_r2 = i0.ɵɵnextContext();
130
+ i0.ɵɵadvance(2);
131
+ i0.ɵɵconditional(ctx_r2.canShareCurrent() ? 2 : -1);
132
+ i0.ɵɵadvance();
133
+ i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 3 : -1);
134
+ i0.ɵɵadvance();
135
+ i0.ɵɵconditional(ctx_r2.canDeleteCurrent() ? 4 : -1);
136
+ } }
137
+ function CollectionsFullViewComponent_Conditional_19_Conditional_6_Template(rf, ctx) { if (rf & 1) {
138
+ const _r13 = i0.ɵɵgetCurrentView();
139
+ i0.ɵɵelementStart(0, "div", 48)(1, "button", 31);
140
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_19_Conditional_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createCollection()); });
141
+ i0.ɵɵelement(2, "i", 49);
95
142
  i0.ɵɵelementStart(3, "span");
96
143
  i0.ɵɵtext(4, "New Collection");
97
144
  i0.ɵɵelementEnd()();
98
- i0.ɵɵelementStart(5, "button", 42);
99
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
100
- i0.ɵɵelement(6, "i", 43);
145
+ i0.ɵɵelementStart(5, "button", 50);
146
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_19_Conditional_6_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addArtifact()); });
147
+ i0.ɵɵelement(6, "i", 51);
101
148
  i0.ɵɵelementStart(7, "span");
102
149
  i0.ɵɵtext(8, "New Artifact");
103
150
  i0.ɵɵelementEnd()()();
@@ -106,36 +153,36 @@ function CollectionsFullViewComponent_Conditional_18_Conditional_6_Template(rf,
106
153
  i0.ɵɵadvance(5);
107
154
  i0.ɵɵproperty("disabled", !ctx_r2.currentCollectionId);
108
155
  } }
109
- function CollectionsFullViewComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
110
- const _r9 = i0.ɵɵgetCurrentView();
111
- i0.ɵɵelementStart(0, "div", 11)(1, "button", 37);
112
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_18_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
113
- i0.ɵɵelement(2, "i", 38);
156
+ function CollectionsFullViewComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
157
+ const _r12 = i0.ɵɵgetCurrentView();
158
+ i0.ɵɵelementStart(0, "div", 11)(1, "button", 45);
159
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_19_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showNewDropdown = !ctx_r2.showNewDropdown); });
160
+ i0.ɵɵelement(2, "i", 46);
114
161
  i0.ɵɵelementStart(3, "span");
115
162
  i0.ɵɵtext(4, "New");
116
163
  i0.ɵɵelementEnd();
117
- i0.ɵɵelement(5, "i", 39);
164
+ i0.ɵɵelement(5, "i", 47);
118
165
  i0.ɵɵelementEnd();
119
- i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_18_Conditional_6_Template, 9, 1, "div", 40);
166
+ i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_19_Conditional_6_Template, 9, 1, "div", 48);
120
167
  i0.ɵɵelementEnd();
121
168
  } if (rf & 2) {
122
169
  const ctx_r2 = i0.ɵɵnextContext();
123
170
  i0.ɵɵadvance(6);
124
171
  i0.ɵɵconditional(ctx_r2.showNewDropdown ? 6 : -1);
125
172
  } }
126
- function CollectionsFullViewComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
127
- const _r11 = i0.ɵɵgetCurrentView();
128
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 44)(2, "span", 45);
173
+ function CollectionsFullViewComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
174
+ const _r14 = i0.ɵɵgetCurrentView();
175
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 52)(2, "span", 53);
129
176
  i0.ɵɵtext(3);
130
177
  i0.ɵɵelementEnd()();
131
- i0.ɵɵelementStart(4, "div", 46)(5, "button", 47);
132
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
178
+ i0.ɵɵelementStart(4, "div", 54)(5, "button", 55);
179
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_22_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearSelection()); });
133
180
  i0.ɵɵelement(6, "i", 36);
134
181
  i0.ɵɵtext(7, " Clear Selection ");
135
182
  i0.ɵɵelementEnd();
136
- i0.ɵɵelementStart(8, "button", 48);
137
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_21_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
138
- i0.ɵɵelement(9, "i", 49);
183
+ i0.ɵɵelementStart(8, "button", 56);
184
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_22_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r14); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteSelected()); });
185
+ i0.ɵɵelement(9, "i", 44);
139
186
  i0.ɵɵtext(10, " Delete Selected ");
140
187
  i0.ɵɵelementEnd()()();
141
188
  } if (rf & 2) {
@@ -143,12 +190,12 @@ function CollectionsFullViewComponent_Conditional_21_Template(rf, ctx) { if (rf
143
190
  i0.ɵɵadvance(3);
144
191
  i0.ɵɵtextInterpolate1("", ctx_r2.selectedItems.size, " selected");
145
192
  } }
146
- function CollectionsFullViewComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
193
+ function CollectionsFullViewComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
147
194
  i0.ɵɵelementStart(0, "div", 20);
148
- i0.ɵɵelement(1, "mj-loading", 50);
195
+ i0.ɵɵelement(1, "mj-loading", 57);
149
196
  i0.ɵɵelementEnd();
150
197
  } }
151
- function CollectionsFullViewComponent_Conditional_24_Conditional_2_Template(rf, ctx) { if (rf & 1) {
198
+ function CollectionsFullViewComponent_Conditional_25_Conditional_2_Template(rf, ctx) { if (rf & 1) {
152
199
  i0.ɵɵelementStart(0, "h3");
153
200
  i0.ɵɵtext(1, "No items found");
154
201
  i0.ɵɵelementEnd();
@@ -156,28 +203,28 @@ function CollectionsFullViewComponent_Conditional_24_Conditional_2_Template(rf,
156
203
  i0.ɵɵtext(3, "Try adjusting your search");
157
204
  i0.ɵɵelementEnd();
158
205
  } }
159
- function CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
160
- const _r12 = i0.ɵɵgetCurrentView();
161
- i0.ɵɵelementStart(0, "button", 53);
162
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCollection()); });
163
- i0.ɵɵelement(1, "i", 38);
206
+ function CollectionsFullViewComponent_Conditional_25_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
207
+ const _r15 = i0.ɵɵgetCurrentView();
208
+ i0.ɵɵelementStart(0, "button", 60);
209
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_25_Conditional_3_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCollection()); });
210
+ i0.ɵɵelement(1, "i", 46);
164
211
  i0.ɵɵtext(2, " Create Collection ");
165
212
  i0.ɵɵelementEnd();
166
213
  } }
167
- function CollectionsFullViewComponent_Conditional_24_Conditional_3_Template(rf, ctx) { if (rf & 1) {
214
+ function CollectionsFullViewComponent_Conditional_25_Conditional_3_Template(rf, ctx) { if (rf & 1) {
168
215
  i0.ɵɵelementStart(0, "h3");
169
216
  i0.ɵɵtext(1, "No collections yet");
170
217
  i0.ɵɵelementEnd();
171
218
  i0.ɵɵelementStart(2, "p");
172
219
  i0.ɵɵtext(3, "Create your first collection to get started");
173
220
  i0.ɵɵelementEnd();
174
- i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_24_Conditional_3_Conditional_4_Template, 3, 0, "button", 52);
221
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_25_Conditional_3_Conditional_4_Template, 3, 0, "button", 59);
175
222
  } if (rf & 2) {
176
223
  const ctx_r2 = i0.ɵɵnextContext(2);
177
224
  i0.ɵɵadvance(4);
178
225
  i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 4 : -1);
179
226
  } }
180
- function CollectionsFullViewComponent_Conditional_24_Conditional_4_Template(rf, ctx) { if (rf & 1) {
227
+ function CollectionsFullViewComponent_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
181
228
  i0.ɵɵelementStart(0, "h3");
182
229
  i0.ɵɵtext(1, "This collection is empty");
183
230
  i0.ɵɵelementEnd();
@@ -189,12 +236,12 @@ function CollectionsFullViewComponent_Conditional_24_Conditional_4_Template(rf,
189
236
  i0.ɵɵtext(6, " button above to add collections or artifacts");
190
237
  i0.ɵɵelementEnd();
191
238
  } }
192
- function CollectionsFullViewComponent_Conditional_24_Template(rf, ctx) { if (rf & 1) {
239
+ function CollectionsFullViewComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
193
240
  i0.ɵɵelementStart(0, "div", 21);
194
- i0.ɵɵelement(1, "i", 51);
195
- i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_24_Conditional_2_Template, 4, 0);
196
- i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_24_Conditional_3_Template, 5, 1);
197
- i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_24_Conditional_4_Template, 7, 0);
241
+ i0.ɵɵelement(1, "i", 58);
242
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_25_Conditional_2_Template, 4, 0);
243
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_25_Conditional_3_Template, 5, 1);
244
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_25_Conditional_4_Template, 7, 0);
198
245
  i0.ɵɵelementEnd();
199
246
  } if (rf & 2) {
200
247
  const ctx_r2 = i0.ɵɵnextContext();
@@ -205,152 +252,152 @@ function CollectionsFullViewComponent_Conditional_24_Template(rf, ctx) { if (rf
205
252
  i0.ɵɵadvance();
206
253
  i0.ɵɵconditional(!ctx_r2.searchQuery && ctx_r2.currentCollectionId ? 4 : -1);
207
254
  } }
208
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
209
- const _r15 = i0.ɵɵgetCurrentView();
210
- i0.ɵɵelementStart(0, "div", 59);
211
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r15); const item_r14 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r14, $event)); });
255
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
256
+ const _r18 = i0.ɵɵgetCurrentView();
257
+ i0.ɵɵelementStart(0, "div", 66);
258
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_1_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r17, $event)); });
212
259
  i0.ɵɵelement(1, "i", 9);
213
260
  i0.ɵɵelementEnd();
214
261
  } if (rf & 2) {
215
- const item_r14 = i0.ɵɵnextContext().$implicit;
262
+ const item_r17 = i0.ɵɵnextContext().$implicit;
216
263
  i0.ɵɵadvance();
217
- i0.ɵɵproperty("ngClass", item_r14.selected ? "fa-check-circle" : "fa-circle");
264
+ i0.ɵɵproperty("ngClass", item_r17.selected ? "fa-check-circle" : "fa-circle");
218
265
  } }
219
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
220
- i0.ɵɵelementStart(0, "div", 62);
221
- i0.ɵɵelement(1, "i", 68);
266
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵelementStart(0, "div", 69);
268
+ i0.ɵɵelement(1, "i", 75);
222
269
  i0.ɵɵelementEnd();
223
270
  } }
224
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
225
- i0.ɵɵelementStart(0, "div", 65);
271
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
272
+ i0.ɵɵelementStart(0, "div", 72);
226
273
  i0.ɵɵtext(1);
227
274
  i0.ɵɵelementEnd();
228
275
  } if (rf & 2) {
229
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
276
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
230
277
  i0.ɵɵadvance();
231
- i0.ɵɵtextInterpolate1(" ", item_r14.description, " ");
278
+ i0.ɵɵtextInterpolate1(" ", item_r17.description, " ");
232
279
  } }
233
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementStart(0, "div", 66);
280
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
281
+ i0.ɵɵelementStart(0, "div", 73);
235
282
  i0.ɵɵtext(1);
236
283
  i0.ɵɵelementEnd();
237
284
  } if (rf & 2) {
238
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
285
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
239
286
  const ctx_r2 = i0.ɵɵnextContext(2);
240
287
  i0.ɵɵadvance();
241
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r14.itemCount), " ");
288
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemCountText(item_r17.itemCount), " ");
242
289
  } }
243
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
244
- i0.ɵɵelementStart(0, "div", 67);
245
- i0.ɵɵelement(1, "i", 69);
290
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "div", 74);
292
+ i0.ɵɵelement(1, "i", 76);
246
293
  i0.ɵɵtext(2);
247
294
  i0.ɵɵelementEnd();
248
295
  } if (rf & 2) {
249
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
296
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
250
297
  i0.ɵɵadvance(2);
251
- i0.ɵɵtextInterpolate1(" ", item_r14.owner, " ");
298
+ i0.ɵɵtextInterpolate1(" ", item_r17.owner, " ");
252
299
  } }
253
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
254
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 60);
255
- i0.ɵɵelement(2, "i", 61);
256
- i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_3_Template, 2, 0, "div", 62);
300
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
301
+ i0.ɵɵelementStart(0, "div", 65)(1, "div", 67);
302
+ i0.ɵɵelement(2, "i", 68);
303
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_3_Template, 2, 0, "div", 69);
257
304
  i0.ɵɵelementEnd();
258
- i0.ɵɵelementStart(4, "div", 63)(5, "div", 64);
305
+ i0.ɵɵelementStart(4, "div", 70)(5, "div", 71);
259
306
  i0.ɵɵtext(6);
260
307
  i0.ɵɵelementEnd();
261
- i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_7_Template, 2, 1, "div", 65);
262
- i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_8_Template, 2, 1, "div", 66);
263
- i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Conditional_9_Template, 3, 1, "div", 67);
308
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_7_Template, 2, 1, "div", 72);
309
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_8_Template, 2, 1, "div", 73);
310
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Conditional_9_Template, 3, 1, "div", 74);
264
311
  i0.ɵɵelementEnd()();
265
312
  } if (rf & 2) {
266
- const item_r14 = i0.ɵɵnextContext().$implicit;
267
- i0.ɵɵproperty("title", item_r14.description || item_r14.name);
313
+ const item_r17 = i0.ɵɵnextContext().$implicit;
314
+ i0.ɵɵproperty("title", item_r17.description || item_r17.name);
268
315
  i0.ɵɵadvance(3);
269
- i0.ɵɵconditional(item_r14.isShared ? 3 : -1);
316
+ i0.ɵɵconditional(item_r17.isShared ? 3 : -1);
270
317
  i0.ɵɵadvance(3);
271
- i0.ɵɵtextInterpolate(item_r14.name);
318
+ i0.ɵɵtextInterpolate(item_r17.name);
272
319
  i0.ɵɵadvance();
273
- i0.ɵɵconditional(item_r14.description ? 7 : -1);
320
+ i0.ɵɵconditional(item_r17.description ? 7 : -1);
274
321
  i0.ɵɵadvance();
275
- i0.ɵɵconditional(item_r14.itemCount !== undefined ? 8 : -1);
322
+ i0.ɵɵconditional(item_r17.itemCount !== undefined ? 8 : -1);
276
323
  i0.ɵɵadvance();
277
- i0.ɵɵconditional(item_r14.isShared && item_r14.owner ? 9 : -1);
324
+ i0.ɵɵconditional(item_r17.isShared && item_r17.owner ? 9 : -1);
278
325
  } }
279
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelementStart(0, "div", 65);
326
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
327
+ i0.ɵɵelementStart(0, "div", 72);
281
328
  i0.ɵɵtext(1);
282
329
  i0.ɵɵelementEnd();
283
330
  } if (rf & 2) {
284
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
331
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
285
332
  i0.ɵɵadvance();
286
- i0.ɵɵtextInterpolate1(" ", item_r14.description, " ");
333
+ i0.ɵɵtextInterpolate1(" ", item_r17.description, " ");
287
334
  } }
288
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
289
- i0.ɵɵelementStart(0, "span", 71);
335
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
336
+ i0.ɵɵelementStart(0, "span", 78);
290
337
  i0.ɵɵtext(1);
291
338
  i0.ɵɵelementEnd();
292
339
  } if (rf & 2) {
293
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
340
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
294
341
  i0.ɵɵadvance();
295
- i0.ɵɵtextInterpolate1(" v", item_r14.versionNumber, " ");
342
+ i0.ɵɵtextInterpolate1(" v", item_r17.versionNumber, " ");
296
343
  } }
297
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
298
- i0.ɵɵelementStart(0, "span", 72);
344
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵelementStart(0, "span", 79);
299
346
  i0.ɵɵtext(1);
300
347
  i0.ɵɵelementEnd();
301
348
  } if (rf & 2) {
302
- const item_r14 = i0.ɵɵnextContext(2).$implicit;
349
+ const item_r17 = i0.ɵɵnextContext(2).$implicit;
303
350
  i0.ɵɵadvance();
304
- i0.ɵɵtextInterpolate1(" ", item_r14.artifactType, " ");
351
+ i0.ɵɵtextInterpolate1(" ", item_r17.artifactType, " ");
305
352
  } }
306
- function CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
307
- i0.ɵɵelementStart(0, "div", 58)(1, "div", 70);
353
+ function CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
354
+ i0.ɵɵelementStart(0, "div", 65)(1, "div", 77);
308
355
  i0.ɵɵelement(2, "i", 9);
309
356
  i0.ɵɵelementEnd();
310
- i0.ɵɵelementStart(3, "div", 63)(4, "div", 64);
357
+ i0.ɵɵelementStart(3, "div", 70)(4, "div", 71);
311
358
  i0.ɵɵtext(5);
312
359
  i0.ɵɵelementEnd();
313
- i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_6_Template, 2, 1, "div", 65);
314
- i0.ɵɵelementStart(7, "div", 66);
315
- i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_8_Template, 2, 1, "span", 71);
316
- i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Conditional_9_Template, 2, 1, "span", 72);
360
+ i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_6_Template, 2, 1, "div", 72);
361
+ i0.ɵɵelementStart(7, "div", 73);
362
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_8_Template, 2, 1, "span", 78);
363
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Conditional_9_Template, 2, 1, "span", 79);
317
364
  i0.ɵɵelementEnd()()();
318
365
  } if (rf & 2) {
319
- const item_r14 = i0.ɵɵnextContext().$implicit;
320
- i0.ɵɵproperty("title", item_r14.description || item_r14.name);
366
+ const item_r17 = i0.ɵɵnextContext().$implicit;
367
+ i0.ɵɵproperty("title", item_r17.description || item_r17.name);
321
368
  i0.ɵɵadvance(2);
322
- i0.ɵɵproperty("ngClass", item_r14.icon);
369
+ i0.ɵɵproperty("ngClass", item_r17.icon);
323
370
  i0.ɵɵadvance(3);
324
- i0.ɵɵtextInterpolate(item_r14.name);
371
+ i0.ɵɵtextInterpolate(item_r17.name);
325
372
  i0.ɵɵadvance();
326
- i0.ɵɵconditional(item_r14.description ? 6 : -1);
373
+ i0.ɵɵconditional(item_r17.description ? 6 : -1);
327
374
  i0.ɵɵadvance(2);
328
- i0.ɵɵconditional(item_r14.versionNumber ? 8 : -1);
375
+ i0.ɵɵconditional(item_r17.versionNumber ? 8 : -1);
329
376
  i0.ɵɵadvance();
330
- i0.ɵɵconditional(item_r14.artifactType ? 9 : -1);
377
+ i0.ɵɵconditional(item_r17.artifactType ? 9 : -1);
331
378
  } }
332
- function CollectionsFullViewComponent_Conditional_25_For_2_Template(rf, ctx) { if (rf & 1) {
333
- const _r13 = i0.ɵɵgetCurrentView();
334
- i0.ɵɵelementStart(0, "div", 56);
335
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_click_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r14, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_dblclick_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r14, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_25_For_2_Template_div_contextmenu_0_listener($event) { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r14, $event)); });
336
- i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_1_Template, 2, 1, "div", 57);
337
- i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_2_Template, 10, 6, "div", 58);
338
- i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_25_For_2_Conditional_3_Template, 10, 6, "div", 58);
379
+ function CollectionsFullViewComponent_Conditional_26_For_2_Template(rf, ctx) { if (rf & 1) {
380
+ const _r16 = i0.ɵɵgetCurrentView();
381
+ i0.ɵɵelementStart(0, "div", 63);
382
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_2_Template_div_click_0_listener($event) { const item_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r17, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_26_For_2_Template_div_dblclick_0_listener($event) { const item_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r17, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_26_For_2_Template_div_contextmenu_0_listener($event) { const item_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r17, $event)); });
383
+ i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_1_Template, 2, 1, "div", 64);
384
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_2_Template, 10, 6, "div", 65);
385
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_26_For_2_Conditional_3_Template, 10, 6, "div", 65);
339
386
  i0.ɵɵelementEnd();
340
387
  } if (rf & 2) {
341
- const item_r14 = ctx.$implicit;
388
+ const item_r17 = ctx.$implicit;
342
389
  const ctx_r2 = i0.ɵɵnextContext(2);
343
- i0.ɵɵclassProp("selected", item_r14.selected)("active", item_r14.type === "artifact" && (item_r14.artifact == null ? null : item_r14.artifact.ID) === ctx_r2.activeArtifactId);
390
+ i0.ɵɵclassProp("selected", item_r17.selected)("active", item_r17.type === "artifact" && (item_r17.artifact == null ? null : item_r17.artifact.ID) === ctx_r2.activeArtifactId);
344
391
  i0.ɵɵadvance();
345
392
  i0.ɵɵconditional(ctx_r2.isSelectMode ? 1 : -1);
346
393
  i0.ɵɵadvance();
347
- i0.ɵɵconditional(item_r14.type === "folder" ? 2 : -1);
394
+ i0.ɵɵconditional(item_r17.type === "folder" ? 2 : -1);
348
395
  i0.ɵɵadvance();
349
- i0.ɵɵconditional(item_r14.type === "artifact" ? 3 : -1);
396
+ i0.ɵɵconditional(item_r17.type === "artifact" ? 3 : -1);
350
397
  } }
351
- function CollectionsFullViewComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
352
- i0.ɵɵelementStart(0, "div", 54);
353
- i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_25_For_2_Template, 4, 7, "div", 55, i0.ɵɵrepeaterTrackByIdentity);
398
+ function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
399
+ i0.ɵɵelementStart(0, "div", 61);
400
+ i0.ɵɵrepeaterCreate(1, CollectionsFullViewComponent_Conditional_26_For_2_Template, 4, 7, "div", 62, i0.ɵɵrepeaterTrackByIdentity);
354
401
  i0.ɵɵelementEnd();
355
402
  } if (rf & 2) {
356
403
  const ctx_r2 = i0.ɵɵnextContext();
@@ -358,165 +405,165 @@ function CollectionsFullViewComponent_Conditional_25_Template(rf, ctx) { if (rf
358
405
  i0.ɵɵadvance();
359
406
  i0.ɵɵrepeater(ctx_r2.unifiedItems);
360
407
  } }
361
- function CollectionsFullViewComponent_Conditional_26_Conditional_4_Template(rf, ctx) { if (rf & 1) {
362
- const _r17 = i0.ɵɵgetCurrentView();
363
- i0.ɵɵelementStart(0, "th", 75)(1, "i", 81);
364
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Conditional_4_Template_i_click_1_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
408
+ function CollectionsFullViewComponent_Conditional_27_Conditional_4_Template(rf, ctx) { if (rf & 1) {
409
+ const _r20 = i0.ɵɵgetCurrentView();
410
+ i0.ɵɵelementStart(0, "th", 82)(1, "i", 88);
411
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_Conditional_4_Template_i_click_1_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? ctx_r2.clearSelection() : ctx_r2.selectAll()); });
365
412
  i0.ɵɵelementEnd()();
366
413
  } if (rf & 2) {
367
414
  const ctx_r2 = i0.ɵɵnextContext(2);
368
415
  i0.ɵɵadvance();
369
416
  i0.ɵɵproperty("ngClass", ctx_r2.selectedItems.size === ctx_r2.unifiedItems.length ? "fa-check-square" : "fa-square");
370
417
  } }
371
- function CollectionsFullViewComponent_Conditional_26_Conditional_8_Template(rf, ctx) { if (rf & 1) {
418
+ function CollectionsFullViewComponent_Conditional_27_Conditional_8_Template(rf, ctx) { if (rf & 1) {
372
419
  i0.ɵɵelement(0, "i", 29);
373
420
  } }
374
- function CollectionsFullViewComponent_Conditional_26_Conditional_9_Template(rf, ctx) { if (rf & 1) {
421
+ function CollectionsFullViewComponent_Conditional_27_Conditional_9_Template(rf, ctx) { if (rf & 1) {
375
422
  i0.ɵɵelement(0, "i", 9);
376
423
  } if (rf & 2) {
377
424
  const ctx_r2 = i0.ɵɵnextContext(2);
378
425
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
379
426
  } }
380
- function CollectionsFullViewComponent_Conditional_26_Conditional_13_Template(rf, ctx) { if (rf & 1) {
427
+ function CollectionsFullViewComponent_Conditional_27_Conditional_13_Template(rf, ctx) { if (rf & 1) {
381
428
  i0.ɵɵelement(0, "i", 29);
382
429
  } }
383
- function CollectionsFullViewComponent_Conditional_26_Conditional_14_Template(rf, ctx) { if (rf & 1) {
430
+ function CollectionsFullViewComponent_Conditional_27_Conditional_14_Template(rf, ctx) { if (rf & 1) {
384
431
  i0.ɵɵelement(0, "i", 9);
385
432
  } if (rf & 2) {
386
433
  const ctx_r2 = i0.ɵɵnextContext(2);
387
434
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
388
435
  } }
389
- function CollectionsFullViewComponent_Conditional_26_Conditional_18_Template(rf, ctx) { if (rf & 1) {
436
+ function CollectionsFullViewComponent_Conditional_27_Conditional_18_Template(rf, ctx) { if (rf & 1) {
390
437
  i0.ɵɵelement(0, "i", 29);
391
438
  } }
392
- function CollectionsFullViewComponent_Conditional_26_Conditional_19_Template(rf, ctx) { if (rf & 1) {
439
+ function CollectionsFullViewComponent_Conditional_27_Conditional_19_Template(rf, ctx) { if (rf & 1) {
393
440
  i0.ɵɵelement(0, "i", 9);
394
441
  } if (rf & 2) {
395
442
  const ctx_r2 = i0.ɵɵnextContext(2);
396
443
  i0.ɵɵproperty("ngClass", ctx_r2.sortOrder === "asc" ? "fa-sort-up" : "fa-sort-down");
397
444
  } }
398
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
399
- const _r20 = i0.ɵɵgetCurrentView();
400
- i0.ɵɵelementStart(0, "td", 75)(1, "i", 81);
401
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template_i_click_1_listener($event) { i0.ɵɵrestoreView(_r20); const item_r19 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r19, $event)); });
445
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
446
+ const _r23 = i0.ɵɵgetCurrentView();
447
+ i0.ɵɵelementStart(0, "td", 82)(1, "i", 88);
448
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_1_Template_i_click_1_listener($event) { i0.ɵɵrestoreView(_r23); const item_r22 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleItemSelection(item_r22, $event)); });
402
449
  i0.ɵɵelementEnd()();
403
450
  } if (rf & 2) {
404
- const item_r19 = i0.ɵɵnextContext().$implicit;
451
+ const item_r22 = i0.ɵɵnextContext().$implicit;
405
452
  i0.ɵɵadvance();
406
- i0.ɵɵproperty("ngClass", item_r19.selected ? "fa-check-circle" : "fa-circle");
453
+ i0.ɵɵproperty("ngClass", item_r22.selected ? "fa-check-circle" : "fa-circle");
407
454
  } }
408
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
409
- i0.ɵɵelement(0, "i", 85);
455
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_7_Template(rf, ctx) { if (rf & 1) {
456
+ i0.ɵɵelement(0, "i", 92);
410
457
  } }
411
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
458
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
412
459
  i0.ɵɵelementStart(0, "span");
413
460
  i0.ɵɵtext(1, "Folder");
414
461
  i0.ɵɵelementEnd();
415
462
  } }
416
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_10_Template(rf, ctx) { if (rf & 1) {
417
- i0.ɵɵelementStart(0, "span", 72);
463
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_10_Template(rf, ctx) { if (rf & 1) {
464
+ i0.ɵɵelementStart(0, "span", 79);
418
465
  i0.ɵɵtext(1);
419
466
  i0.ɵɵelementEnd();
420
467
  } if (rf & 2) {
421
- const item_r19 = i0.ɵɵnextContext().$implicit;
468
+ const item_r22 = i0.ɵɵnextContext().$implicit;
422
469
  i0.ɵɵadvance();
423
- i0.ɵɵtextInterpolate1(" ", item_r19.artifactType, " ");
470
+ i0.ɵɵtextInterpolate1(" ", item_r22.artifactType, " ");
424
471
  } }
425
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
472
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_12_Template(rf, ctx) { if (rf & 1) {
426
473
  i0.ɵɵelementStart(0, "span");
427
474
  i0.ɵɵtext(1);
428
475
  i0.ɵɵpipe(2, "date");
429
476
  i0.ɵɵelementEnd();
430
477
  } if (rf & 2) {
431
- const item_r19 = i0.ɵɵnextContext().$implicit;
478
+ const item_r22 = i0.ɵɵnextContext().$implicit;
432
479
  i0.ɵɵadvance();
433
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r19.lastModified, "short"), " ");
480
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r22.lastModified, "short"), " ");
434
481
  } }
435
- function CollectionsFullViewComponent_Conditional_26_For_24_Conditional_14_Template(rf, ctx) { if (rf & 1) {
482
+ function CollectionsFullViewComponent_Conditional_27_For_24_Conditional_14_Template(rf, ctx) { if (rf & 1) {
436
483
  i0.ɵɵelementStart(0, "span");
437
484
  i0.ɵɵtext(1);
438
485
  i0.ɵɵelementEnd();
439
486
  } if (rf & 2) {
440
- const item_r19 = i0.ɵɵnextContext().$implicit;
487
+ const item_r22 = i0.ɵɵnextContext().$implicit;
441
488
  i0.ɵɵadvance();
442
- i0.ɵɵtextInterpolate(item_r19.owner);
489
+ i0.ɵɵtextInterpolate(item_r22.owner);
443
490
  } }
444
- function CollectionsFullViewComponent_Conditional_26_For_24_Template(rf, ctx) { if (rf & 1) {
445
- const _r18 = i0.ɵɵgetCurrentView();
446
- i0.ɵɵelementStart(0, "tr", 82);
447
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_click_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r19, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_dblclick_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r19, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_26_For_24_Template_tr_contextmenu_0_listener($event) { const item_r19 = i0.ɵɵrestoreView(_r18).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r19, $event)); });
448
- i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_1_Template, 2, 1, "td", 75);
449
- i0.ɵɵelementStart(2, "td", 83)(3, "div", 84);
491
+ function CollectionsFullViewComponent_Conditional_27_For_24_Template(rf, ctx) { if (rf & 1) {
492
+ const _r21 = i0.ɵɵgetCurrentView();
493
+ i0.ɵɵelementStart(0, "tr", 89);
494
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_For_24_Template_tr_click_0_listener($event) { const item_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemClick(item_r22, $event)); })("dblclick", function CollectionsFullViewComponent_Conditional_27_For_24_Template_tr_dblclick_0_listener($event) { const item_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemDoubleClick(item_r22, $event)); })("contextmenu", function CollectionsFullViewComponent_Conditional_27_For_24_Template_tr_contextmenu_0_listener($event) { const item_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onItemContextMenu(item_r22, $event)); });
495
+ i0.ɵɵconditionalCreate(1, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_1_Template, 2, 1, "td", 82);
496
+ i0.ɵɵelementStart(2, "td", 90)(3, "div", 91);
450
497
  i0.ɵɵelement(4, "i", 9);
451
498
  i0.ɵɵelementStart(5, "span");
452
499
  i0.ɵɵtext(6);
453
500
  i0.ɵɵelementEnd();
454
- i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_7_Template, 1, 0, "i", 85);
501
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_7_Template, 1, 0, "i", 92);
455
502
  i0.ɵɵelementEnd()();
456
- i0.ɵɵelementStart(8, "td", 86);
457
- i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_9_Template, 2, 0, "span");
458
- i0.ɵɵconditionalCreate(10, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_10_Template, 2, 1, "span", 72);
503
+ i0.ɵɵelementStart(8, "td", 93);
504
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_9_Template, 2, 0, "span");
505
+ i0.ɵɵconditionalCreate(10, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_10_Template, 2, 1, "span", 79);
459
506
  i0.ɵɵelementEnd();
460
- i0.ɵɵelementStart(11, "td", 87);
461
- i0.ɵɵconditionalCreate(12, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_12_Template, 3, 4, "span");
507
+ i0.ɵɵelementStart(11, "td", 94);
508
+ i0.ɵɵconditionalCreate(12, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_12_Template, 3, 4, "span");
462
509
  i0.ɵɵelementEnd();
463
- i0.ɵɵelementStart(13, "td", 79);
464
- i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_26_For_24_Conditional_14_Template, 2, 1, "span");
510
+ i0.ɵɵelementStart(13, "td", 86);
511
+ i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_27_For_24_Conditional_14_Template, 2, 1, "span");
465
512
  i0.ɵɵelementEnd()();
466
513
  } if (rf & 2) {
467
- const item_r19 = ctx.$implicit;
514
+ const item_r22 = ctx.$implicit;
468
515
  const ctx_r2 = i0.ɵɵnextContext(2);
469
- i0.ɵɵclassProp("selected", item_r19.selected)("active", item_r19.type === "artifact" && (item_r19.artifact == null ? null : item_r19.artifact.ID) === ctx_r2.activeArtifactId);
516
+ i0.ɵɵclassProp("selected", item_r22.selected)("active", item_r22.type === "artifact" && (item_r22.artifact == null ? null : item_r22.artifact.ID) === ctx_r2.activeArtifactId);
470
517
  i0.ɵɵadvance();
471
518
  i0.ɵɵconditional(ctx_r2.isSelectMode ? 1 : -1);
472
519
  i0.ɵɵadvance(3);
473
- i0.ɵɵproperty("ngClass", item_r19.type === "folder" ? "fa-folder" : item_r19.icon);
520
+ i0.ɵɵproperty("ngClass", item_r22.type === "folder" ? "fa-folder" : item_r22.icon);
474
521
  i0.ɵɵadvance(2);
475
- i0.ɵɵtextInterpolate(item_r19.name);
522
+ i0.ɵɵtextInterpolate(item_r22.name);
476
523
  i0.ɵɵadvance();
477
- i0.ɵɵconditional(item_r19.isShared ? 7 : -1);
524
+ i0.ɵɵconditional(item_r22.isShared ? 7 : -1);
478
525
  i0.ɵɵadvance(2);
479
- i0.ɵɵconditional(item_r19.type === "folder" ? 9 : -1);
526
+ i0.ɵɵconditional(item_r22.type === "folder" ? 9 : -1);
480
527
  i0.ɵɵadvance();
481
- i0.ɵɵconditional(item_r19.type === "artifact" ? 10 : -1);
528
+ i0.ɵɵconditional(item_r22.type === "artifact" ? 10 : -1);
482
529
  i0.ɵɵadvance(2);
483
- i0.ɵɵconditional(item_r19.lastModified ? 12 : -1);
530
+ i0.ɵɵconditional(item_r22.lastModified ? 12 : -1);
484
531
  i0.ɵɵadvance(2);
485
- i0.ɵɵconditional(item_r19.owner ? 14 : -1);
532
+ i0.ɵɵconditional(item_r22.owner ? 14 : -1);
486
533
  } }
487
- function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
488
- const _r16 = i0.ɵɵgetCurrentView();
489
- i0.ɵɵelementStart(0, "div", 73)(1, "table", 74)(2, "thead")(3, "tr");
490
- i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_26_Conditional_4_Template, 2, 1, "th", 75);
491
- i0.ɵɵelementStart(5, "th", 76);
492
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
534
+ function CollectionsFullViewComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
535
+ const _r19 = i0.ɵɵgetCurrentView();
536
+ i0.ɵɵelementStart(0, "div", 80)(1, "table", 81)(2, "thead")(3, "tr");
537
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_27_Conditional_4_Template, 2, 1, "th", 82);
538
+ i0.ɵɵelementStart(5, "th", 83);
539
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_Template_th_click_5_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("name")); });
493
540
  i0.ɵɵelementStart(6, "span");
494
541
  i0.ɵɵtext(7, "Name");
495
542
  i0.ɵɵelementEnd();
496
- i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_26_Conditional_8_Template, 1, 0, "i", 29);
497
- i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_26_Conditional_9_Template, 1, 1, "i", 9);
543
+ i0.ɵɵconditionalCreate(8, CollectionsFullViewComponent_Conditional_27_Conditional_8_Template, 1, 0, "i", 29);
544
+ i0.ɵɵconditionalCreate(9, CollectionsFullViewComponent_Conditional_27_Conditional_9_Template, 1, 1, "i", 9);
498
545
  i0.ɵɵelementEnd();
499
- i0.ɵɵelementStart(10, "th", 77);
500
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
546
+ i0.ɵɵelementStart(10, "th", 84);
547
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_Template_th_click_10_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("type")); });
501
548
  i0.ɵɵelementStart(11, "span");
502
549
  i0.ɵɵtext(12, "Type");
503
550
  i0.ɵɵelementEnd();
504
- i0.ɵɵconditionalCreate(13, CollectionsFullViewComponent_Conditional_26_Conditional_13_Template, 1, 0, "i", 29);
505
- i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_26_Conditional_14_Template, 1, 1, "i", 9);
551
+ i0.ɵɵconditionalCreate(13, CollectionsFullViewComponent_Conditional_27_Conditional_13_Template, 1, 0, "i", 29);
552
+ i0.ɵɵconditionalCreate(14, CollectionsFullViewComponent_Conditional_27_Conditional_14_Template, 1, 1, "i", 9);
506
553
  i0.ɵɵelementEnd();
507
- i0.ɵɵelementStart(15, "th", 78);
508
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_26_Template_th_click_15_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
554
+ i0.ɵɵelementStart(15, "th", 85);
555
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_27_Template_th_click_15_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.setSortBy("date")); });
509
556
  i0.ɵɵelementStart(16, "span");
510
557
  i0.ɵɵtext(17, "Modified");
511
558
  i0.ɵɵelementEnd();
512
- i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_26_Conditional_18_Template, 1, 0, "i", 29);
513
- i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_26_Conditional_19_Template, 1, 1, "i", 9);
559
+ i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_27_Conditional_18_Template, 1, 0, "i", 29);
560
+ i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_27_Conditional_19_Template, 1, 1, "i", 9);
514
561
  i0.ɵɵelementEnd();
515
- i0.ɵɵelementStart(20, "th", 79);
562
+ i0.ɵɵelementStart(20, "th", 86);
516
563
  i0.ɵɵtext(21, "Owner");
517
564
  i0.ɵɵelementEnd()()();
518
565
  i0.ɵɵelementStart(22, "tbody");
519
- i0.ɵɵrepeaterCreate(23, CollectionsFullViewComponent_Conditional_26_For_24_Template, 15, 12, "tr", 80, i0.ɵɵrepeaterTrackByIdentity);
566
+ i0.ɵɵrepeaterCreate(23, CollectionsFullViewComponent_Conditional_27_For_24_Template, 15, 12, "tr", 87, i0.ɵɵrepeaterTrackByIdentity);
520
567
  i0.ɵɵelementEnd()()();
521
568
  } if (rf & 2) {
522
569
  const ctx_r2 = i0.ɵɵnextContext();
@@ -538,6 +585,97 @@ function CollectionsFullViewComponent_Conditional_26_Template(rf, ctx) { if (rf
538
585
  i0.ɵɵadvance(4);
539
586
  i0.ɵɵrepeater(ctx_r2.unifiedItems);
540
587
  } }
588
+ function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
589
+ const _r26 = i0.ɵɵgetCurrentView();
590
+ i0.ɵɵelementStart(0, "button", 97);
591
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("share")); });
592
+ i0.ɵɵelement(1, "i", 41);
593
+ i0.ɵɵelementStart(2, "span");
594
+ i0.ɵɵtext(3, "Share");
595
+ i0.ɵɵelementEnd()();
596
+ } }
597
+ function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
598
+ const _r27 = i0.ɵɵgetCurrentView();
599
+ i0.ɵɵelementStart(0, "button", 97);
600
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("edit")); });
601
+ i0.ɵɵelement(1, "i", 42);
602
+ i0.ɵɵelementStart(2, "span");
603
+ i0.ɵɵtext(3, "Edit");
604
+ i0.ɵɵelementEnd()();
605
+ } }
606
+ function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
607
+ const _r28 = i0.ɵɵgetCurrentView();
608
+ i0.ɵɵelement(0, "div", 98);
609
+ i0.ɵɵelementStart(1, "button", 100);
610
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r28); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("delete")); });
611
+ i0.ɵɵelement(2, "i", 44);
612
+ i0.ɵɵelementStart(3, "span");
613
+ i0.ɵɵtext(4, "Delete");
614
+ i0.ɵɵelementEnd()();
615
+ } }
616
+ function CollectionsFullViewComponent_Conditional_28_Conditional_2_Template(rf, ctx) { if (rf & 1) {
617
+ const _r25 = i0.ɵɵgetCurrentView();
618
+ i0.ɵɵelementStart(0, "button", 97);
619
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("open")); });
620
+ i0.ɵɵelement(1, "i", 58);
621
+ i0.ɵɵelementStart(2, "span");
622
+ i0.ɵɵtext(3, "Open");
623
+ i0.ɵɵelementEnd()();
624
+ i0.ɵɵelement(4, "div", 98);
625
+ i0.ɵɵconditionalCreate(5, CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_5_Template, 4, 0, "button", 99);
626
+ i0.ɵɵconditionalCreate(6, CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_6_Template, 4, 0, "button", 99);
627
+ i0.ɵɵconditionalCreate(7, CollectionsFullViewComponent_Conditional_28_Conditional_2_Conditional_7_Template, 5, 0);
628
+ } if (rf & 2) {
629
+ const ctx_r2 = i0.ɵɵnextContext(2);
630
+ i0.ɵɵadvance(5);
631
+ i0.ɵɵconditional(ctx_r2.canShare(ctx_r2.contextMenuItem.collection) ? 5 : -1);
632
+ i0.ɵɵadvance();
633
+ i0.ɵɵconditional(ctx_r2.canEdit(ctx_r2.contextMenuItem.collection) ? 6 : -1);
634
+ i0.ɵɵadvance();
635
+ i0.ɵɵconditional(ctx_r2.canDelete(ctx_r2.contextMenuItem.collection) ? 7 : -1);
636
+ } }
637
+ function CollectionsFullViewComponent_Conditional_28_Conditional_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
638
+ const _r30 = i0.ɵɵgetCurrentView();
639
+ i0.ɵɵelement(0, "div", 98);
640
+ i0.ɵɵelementStart(1, "button", 100);
641
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_3_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r30); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("remove")); });
642
+ i0.ɵɵelement(2, "i", 102);
643
+ i0.ɵɵelementStart(3, "span");
644
+ i0.ɵɵtext(4, "Remove from Collection");
645
+ i0.ɵɵelementEnd()();
646
+ } }
647
+ function CollectionsFullViewComponent_Conditional_28_Conditional_3_Template(rf, ctx) { if (rf & 1) {
648
+ const _r29 = i0.ɵɵgetCurrentView();
649
+ i0.ɵɵelementStart(0, "button", 97);
650
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r29); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onContextMenuAction("view")); });
651
+ i0.ɵɵelement(1, "i", 101);
652
+ i0.ɵɵelementStart(2, "span");
653
+ i0.ɵɵtext(3, "View");
654
+ i0.ɵɵelementEnd()();
655
+ i0.ɵɵconditionalCreate(4, CollectionsFullViewComponent_Conditional_28_Conditional_3_Conditional_4_Template, 5, 0);
656
+ } if (rf & 2) {
657
+ const ctx_r2 = i0.ɵɵnextContext(2);
658
+ i0.ɵɵadvance(4);
659
+ i0.ɵɵconditional(ctx_r2.canEditCurrent() ? 4 : -1);
660
+ } }
661
+ function CollectionsFullViewComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
662
+ const _r24 = i0.ɵɵgetCurrentView();
663
+ i0.ɵɵelementStart(0, "div", 95);
664
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Conditional_28_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
665
+ i0.ɵɵelementEnd();
666
+ i0.ɵɵelementStart(1, "div", 96);
667
+ i0.ɵɵconditionalCreate(2, CollectionsFullViewComponent_Conditional_28_Conditional_2_Template, 8, 3);
668
+ i0.ɵɵconditionalCreate(3, CollectionsFullViewComponent_Conditional_28_Conditional_3_Template, 5, 1);
669
+ i0.ɵɵelementEnd();
670
+ } if (rf & 2) {
671
+ const ctx_r2 = i0.ɵɵnextContext();
672
+ i0.ɵɵadvance();
673
+ i0.ɵɵstyleProp("left", ctx_r2.contextMenuPosition.x, "px")("top", ctx_r2.contextMenuPosition.y, "px");
674
+ i0.ɵɵadvance();
675
+ i0.ɵɵconditional(ctx_r2.contextMenuItem.type === "folder" && ctx_r2.contextMenuItem.collection ? 2 : -1);
676
+ i0.ɵɵadvance();
677
+ i0.ɵɵconditional(ctx_r2.contextMenuItem.type === "artifact" ? 3 : -1);
678
+ } }
541
679
  /**
542
680
  * Full-panel Collections view component
543
681
  * Comprehensive collection management with artifacts display
@@ -577,6 +715,10 @@ export class CollectionsFullViewComponent {
577
715
  showSortDropdown = false;
578
716
  activeArtifactId = null; // Track which artifact is currently being viewed
579
717
  isSelectMode = false; // Toggle for selection mode
718
+ // Context menu state
719
+ showContextMenu = false;
720
+ contextMenuPosition = { x: 0, y: 0 };
721
+ contextMenuItem = null;
580
722
  destroy$ = new Subject();
581
723
  isNavigatingProgrammatically = false;
582
724
  constructor(dialogService, artifactState, collectionState, permissionService, artifactIconService, cdr) {
@@ -961,6 +1103,7 @@ export class CollectionsFullViewComponent {
961
1103
  await this.loadCurrentCollectionPermission();
962
1104
  // Rebuild unified list to show new collection
963
1105
  this.buildUnifiedItemList();
1106
+ this.cdr.detectChanges();
964
1107
  }
965
1108
  onFormCancelled() {
966
1109
  this.isFormModalOpen = false;
@@ -979,6 +1122,7 @@ export class CollectionsFullViewComponent {
979
1122
  async onArtifactSaved(artifact) {
980
1123
  this.isArtifactModalOpen = false;
981
1124
  await this.loadArtifacts();
1125
+ this.cdr.detectChanges();
982
1126
  }
983
1127
  onArtifactModalCancelled() {
984
1128
  this.isArtifactModalOpen = false;
@@ -1088,6 +1232,13 @@ export class CollectionsFullViewComponent {
1088
1232
  }
1089
1233
  return this.canDelete(this.currentCollection);
1090
1234
  }
1235
+ canShareCurrent() {
1236
+ // At root level, no share needed
1237
+ if (!this.currentCollectionId || !this.currentCollection) {
1238
+ return false;
1239
+ }
1240
+ return this.canShare(this.currentCollection);
1241
+ }
1091
1242
  isShared(collection) {
1092
1243
  // Collection is shared if user is not the owner and OwnerID is set
1093
1244
  return collection.OwnerID != null && collection.OwnerID !== this.currentUser.ID;
@@ -1104,11 +1255,28 @@ export class CollectionsFullViewComponent {
1104
1255
  async onPermissionsChanged() {
1105
1256
  // Reload collections and permissions after sharing changes
1106
1257
  await this.loadCollections();
1258
+ this.cdr.detectChanges();
1107
1259
  }
1108
1260
  onShareModalCancelled() {
1109
1261
  this.isShareModalOpen = false;
1110
1262
  this.sharingCollection = null;
1111
1263
  }
1264
+ // Header toolbar action methods
1265
+ shareCurrentCollection() {
1266
+ if (this.currentCollection) {
1267
+ this.shareCollection(this.currentCollection);
1268
+ }
1269
+ }
1270
+ editCurrentCollection() {
1271
+ if (this.currentCollection) {
1272
+ this.editCollection(this.currentCollection);
1273
+ }
1274
+ }
1275
+ deleteCurrentCollection() {
1276
+ if (this.currentCollection) {
1277
+ this.deleteCollection(this.currentCollection);
1278
+ }
1279
+ }
1112
1280
  /**
1113
1281
  * Get the icon for an artifact using the centralized icon service.
1114
1282
  * Fallback priority: Plugin icon > Metadata icon > Hardcoded mapping > Generic icon
@@ -1155,6 +1323,7 @@ export class CollectionsFullViewComponent {
1155
1323
  }
1156
1324
  // Apply sorting
1157
1325
  this.unifiedItems = this.sortItems(items);
1326
+ this.cdr.detectChanges();
1158
1327
  }
1159
1328
  /**
1160
1329
  * Sort items by selected criteria (Phase 2)
@@ -1207,9 +1376,12 @@ export class CollectionsFullViewComponent {
1207
1376
  toggleSelectMode() {
1208
1377
  this.isSelectMode = !this.isSelectMode;
1209
1378
  if (!this.isSelectMode) {
1210
- // Clear selection when exiting select mode
1379
+ // Clear selection when exiting select mode (clearSelection calls buildUnifiedItemList which calls cdr)
1211
1380
  this.clearSelection();
1212
1381
  }
1382
+ else {
1383
+ this.cdr.detectChanges();
1384
+ }
1213
1385
  }
1214
1386
  /**
1215
1387
  * Exit selection mode (called when navigating to a new folder)
@@ -1297,7 +1469,7 @@ export class CollectionsFullViewComponent {
1297
1469
  this.buildUnifiedItemList();
1298
1470
  }
1299
1471
  /**
1300
- * Multi-select: Delete selected items (Phase 3)
1472
+ * Multi-select: Delete selected items
1301
1473
  */
1302
1474
  async deleteSelected() {
1303
1475
  if (this.selectedItems.size === 0)
@@ -1309,8 +1481,39 @@ export class CollectionsFullViewComponent {
1309
1481
  });
1310
1482
  if (!confirmed)
1311
1483
  return;
1312
- // TODO: Implement batch delete
1313
- this.clearSelection();
1484
+ const selectedViewItems = this.unifiedItems.filter(item => this.selectedItems.has(item.id));
1485
+ const folderItems = selectedViewItems.filter(item => item.type === 'folder' && item.collection);
1486
+ const artifactItems = selectedViewItems.filter(item => item.type === 'artifact' && item.version);
1487
+ try {
1488
+ for (const item of folderItems) {
1489
+ await this.deleteCollectionRecursive(item.collection.ID);
1490
+ }
1491
+ if (artifactItems.length > 0 && this.currentCollectionId) {
1492
+ const rv = new RunView();
1493
+ for (const item of artifactItems) {
1494
+ const result = await rv.RunView({
1495
+ EntityName: 'MJ: Collection Artifacts',
1496
+ ExtraFilter: `CollectionID='${this.currentCollectionId}' AND ArtifactVersionID='${item.version.ID}'`,
1497
+ ResultType: 'entity_object'
1498
+ }, this.currentUser);
1499
+ if (result.Success && result.Results) {
1500
+ for (const joinRecord of result.Results) {
1501
+ await joinRecord.Delete();
1502
+ }
1503
+ }
1504
+ }
1505
+ }
1506
+ this.clearSelection();
1507
+ await this.loadCollections();
1508
+ if (artifactItems.length > 0) {
1509
+ await this.loadArtifacts();
1510
+ }
1511
+ this.buildUnifiedItemList();
1512
+ }
1513
+ catch (error) {
1514
+ console.error('Error deleting selected items:', error);
1515
+ await this.dialogService.alert('Error', `An error occurred while deleting: ${error}`);
1516
+ }
1314
1517
  }
1315
1518
  /**
1316
1519
  * Get count of items in folder (Phase 1)
@@ -1429,21 +1632,80 @@ export class CollectionsFullViewComponent {
1429
1632
  }
1430
1633
  }
1431
1634
  /**
1432
- * Handle right-click context menu
1433
- * Opens browser context menu for now - can be extended with custom menu
1635
+ * Handle right-click context menu - shows custom context menu with permission-gated actions
1434
1636
  */
1435
1637
  onItemContextMenu(item, event) {
1436
- // Select the item if not already selected
1437
- if (!item.selected) {
1438
- this.clearSelection();
1439
- this.toggleItemSelection(item, event);
1638
+ event.preventDefault();
1639
+ event.stopPropagation();
1640
+ // Close any open dropdowns
1641
+ this.showNewDropdown = false;
1642
+ this.showSortDropdown = false;
1643
+ this.contextMenuItem = item;
1644
+ this.contextMenuPosition = this.clampContextMenuPosition(event.clientX, event.clientY);
1645
+ this.showContextMenu = true;
1646
+ this.cdr.detectChanges();
1647
+ }
1648
+ /** Clamp menu position to keep it within the viewport */
1649
+ clampContextMenuPosition(x, y) {
1650
+ const menuWidth = 200;
1651
+ const menuHeight = 200;
1652
+ const viewportWidth = window.innerWidth;
1653
+ const viewportHeight = window.innerHeight;
1654
+ return {
1655
+ x: Math.min(x, viewportWidth - menuWidth),
1656
+ y: Math.min(y, viewportHeight - menuHeight)
1657
+ };
1658
+ }
1659
+ closeContextMenu() {
1660
+ this.showContextMenu = false;
1661
+ this.contextMenuItem = null;
1662
+ this.cdr.detectChanges();
1663
+ }
1664
+ /** Handle context menu action dispatch */
1665
+ onContextMenuAction(action) {
1666
+ const item = this.contextMenuItem;
1667
+ this.closeContextMenu();
1668
+ if (!item)
1669
+ return;
1670
+ switch (action) {
1671
+ case 'open':
1672
+ this.openItem(item);
1673
+ break;
1674
+ case 'view':
1675
+ this.openItem(item);
1676
+ break;
1677
+ case 'share':
1678
+ if (item.collection) {
1679
+ this.shareCollection(item.collection);
1680
+ }
1681
+ break;
1682
+ case 'edit':
1683
+ if (item.collection) {
1684
+ this.editCollection(item.collection);
1685
+ }
1686
+ break;
1687
+ case 'delete':
1688
+ if (item.collection) {
1689
+ this.deleteCollection(item.collection);
1690
+ }
1691
+ break;
1692
+ case 'remove':
1693
+ if (item.artifact && item.version) {
1694
+ this.removeArtifact({ artifact: item.artifact, version: item.version });
1695
+ }
1696
+ break;
1697
+ }
1698
+ }
1699
+ /** Close context menu on Escape key */
1700
+ onEscapeKey() {
1701
+ if (this.showContextMenu) {
1702
+ this.closeContextMenu();
1440
1703
  }
1441
- // Allow browser's default context menu for now
1442
- // Future enhancement: implement custom context menu with actions
1443
- // event.preventDefault();
1444
1704
  }
1445
1705
  static ɵfac = function CollectionsFullViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionsFullViewComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.ArtifactStateService), i0.ɵɵdirectiveInject(i3.CollectionStateService), i0.ɵɵdirectiveInject(i4.CollectionPermissionService), i0.ɵɵdirectiveInject(i5.ArtifactIconService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1446
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, standalone: false, decls: 30, vars: 28, consts: [[1, "collections-view", 3, "keydown"], [1, "collections-header"], [1, "collections-breadcrumb"], [1, "breadcrumb-item"], [1, "fas", "fa-home"], [1, "breadcrumb-link", 3, "click"], [1, "breadcrumb-path"], [1, "collections-actions"], [1, "btn-icon", 3, "click", "title"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-check-square"], [1, "dropdown-container"], [1, "search-container"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Search...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "Clear search", 1, "search-clear"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync"], [1, "selection-toolbar"], [1, "collections-content"], [1, "loading-state"], [1, "empty-state"], [1, "unified-grid", 3, "select-mode"], [1, "unified-list", 3, "select-mode"], [3, "saved", "cancelled", "isOpen", "collection", "parentCollection", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collectionId", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collection", "currentUser", "currentUserPermissions"], [1, "fas", "fa-chevron-right", "breadcrumb-separator"], ["title", "Sort options", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sort"], [1, "dropdown-menu"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-sort-alpha-down"], [1, "fas", "fa-calendar"], [1, "fas", "fa-tag"], ["title", "Clear search", 1, "search-clear", 3, "click"], [1, "fas", "fa-times"], [1, "btn-primary", 3, "click"], [1, "fas", "fa-plus"], [1, "fas", "fa-chevron-down"], [1, "dropdown-menu", "dropdown-menu-right"], [1, "fas", "fa-folder-plus"], [1, "dropdown-item", 3, "click", "disabled"], [1, "fas", "fa-file-plus"], [1, "selection-info"], [1, "selection-count"], [1, "selection-actions"], [1, "btn-toolbar", 3, "click"], [1, "btn-toolbar", "btn-danger", 3, "click"], [1, "fas", "fa-trash"], ["text", "Loading collections...", "size", "large"], [1, "fas", "fa-folder-open"], [1, "btn-primary", "empty-state-cta"], [1, "btn-primary", "empty-state-cta", 3, "click"], [1, "unified-grid"], [1, "grid-item", 3, "selected", "active"], [1, "grid-item", 3, "click", "dblclick", "contextmenu"], [1, "item-checkbox"], [1, "grid-item-content", 3, "title"], [1, "item-checkbox", 3, "click"], [1, "grid-icon", "folder-icon"], [1, "fas", "fa-folder"], ["title", "Shared", 1, "shared-badge"], [1, "grid-info"], [1, "grid-name"], [1, "grid-description"], [1, "grid-meta"], [1, "grid-owner"], [1, "fas", "fa-users"], [1, "fas", "fa-user"], [1, "grid-icon", "artifact-icon"], [1, "version-badge"], [1, "artifact-type-badge"], [1, "unified-list"], [1, "list-table"], [1, "col-checkbox"], [1, "col-name", "sortable", 3, "click"], [1, "col-type", "sortable", 3, "click"], [1, "col-modified", "sortable", 3, "click"], [1, "col-owner"], [1, "list-item", 3, "selected", "active"], [1, "fas", 3, "click", "ngClass"], [1, "list-item", 3, "click", "dblclick", "contextmenu"], [1, "col-name"], [1, "list-name-cell"], ["title", "Shared", 1, "fas", "fa-users", "shared-indicator"], [1, "col-type"], [1, "col-modified"]], template: function CollectionsFullViewComponent_Template(rf, ctx) { if (rf & 1) {
1706
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionsFullViewComponent, selectors: [["mj-collections-full-view"]], hostBindings: function CollectionsFullViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
1707
+ i0.ɵɵlistener("keydown.escape", function CollectionsFullViewComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
1708
+ } }, inputs: { environmentId: "environmentId", currentUser: "currentUser" }, outputs: { collectionNavigated: "collectionNavigated" }, standalone: false, decls: 32, vars: 30, consts: [["kendoDialogContainer", "", 1, "collections-view", 3, "keydown"], [1, "collections-header"], [1, "collections-breadcrumb"], [1, "breadcrumb-item"], [1, "fas", "fa-home"], [1, "breadcrumb-link", 3, "click"], [1, "breadcrumb-path"], [1, "collections-actions"], [1, "btn-icon", 3, "click", "title"], [1, "fas", 3, "ngClass"], [1, "fas", "fa-check-square"], [1, "dropdown-container"], [1, "search-container"], [1, "fas", "fa-search"], ["type", "text", "placeholder", "Search...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "Clear search", 1, "search-clear"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sync"], [1, "selection-toolbar"], [1, "collections-content"], [1, "loading-state"], [1, "empty-state"], [1, "unified-grid", 3, "select-mode"], [1, "unified-list", 3, "select-mode"], [3, "saved", "cancelled", "isOpen", "collection", "parentCollection", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collectionId", "environmentId", "currentUser"], [3, "saved", "cancelled", "isOpen", "collection", "currentUser", "currentUserPermissions"], [1, "fas", "fa-chevron-right", "breadcrumb-separator"], ["title", "Sort options", 1, "btn-icon", 3, "click"], [1, "fas", "fa-sort"], [1, "dropdown-menu"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-sort-alpha-down"], [1, "fas", "fa-calendar"], [1, "fas", "fa-tag"], ["title", "Clear search", 1, "search-clear", 3, "click"], [1, "fas", "fa-times"], [1, "toolbar-separator"], [1, "toolbar-actions-group"], [1, "btn-icon", 3, "title"], [1, "btn-icon", "btn-icon-danger", 3, "title"], [1, "fas", "fa-share-nodes"], [1, "fas", "fa-pen-to-square"], [1, "btn-icon", "btn-icon-danger", 3, "click", "title"], [1, "fas", "fa-trash"], [1, "btn-primary", 3, "click"], [1, "fas", "fa-plus"], [1, "fas", "fa-chevron-down"], [1, "dropdown-menu", "dropdown-menu-right"], [1, "fas", "fa-folder-plus"], [1, "dropdown-item", 3, "click", "disabled"], [1, "fas", "fa-file-plus"], [1, "selection-info"], [1, "selection-count"], [1, "selection-actions"], [1, "btn-toolbar", 3, "click"], [1, "btn-toolbar", "btn-danger", 3, "click"], ["text", "Loading collections...", "size", "large"], [1, "fas", "fa-folder-open"], [1, "btn-primary", "empty-state-cta"], [1, "btn-primary", "empty-state-cta", 3, "click"], [1, "unified-grid"], [1, "grid-item", 3, "selected", "active"], [1, "grid-item", 3, "click", "dblclick", "contextmenu"], [1, "item-checkbox"], [1, "grid-item-content", 3, "title"], [1, "item-checkbox", 3, "click"], [1, "grid-icon", "folder-icon"], [1, "fas", "fa-folder"], ["title", "Shared", 1, "shared-badge"], [1, "grid-info"], [1, "grid-name"], [1, "grid-description"], [1, "grid-meta"], [1, "grid-owner"], [1, "fas", "fa-users"], [1, "fas", "fa-user"], [1, "grid-icon", "artifact-icon"], [1, "version-badge"], [1, "artifact-type-badge"], [1, "unified-list"], [1, "list-table"], [1, "col-checkbox"], [1, "col-name", "sortable", 3, "click"], [1, "col-type", "sortable", 3, "click"], [1, "col-modified", "sortable", 3, "click"], [1, "col-owner"], [1, "list-item", 3, "selected", "active"], [1, "fas", 3, "click", "ngClass"], [1, "list-item", 3, "click", "dblclick", "contextmenu"], [1, "col-name"], [1, "list-name-cell"], ["title", "Shared", 1, "fas", "fa-users", "shared-indicator"], [1, "col-type"], [1, "col-modified"], [1, "context-menu-backdrop", 3, "click"], [1, "context-menu"], [1, "context-menu-item", 3, "click"], [1, "context-menu-divider"], [1, "context-menu-item"], [1, "context-menu-item", "context-menu-danger", 3, "click"], [1, "fas", "fa-eye"], [1, "fas", "fa-times-circle"]], template: function CollectionsFullViewComponent_Template(rf, ctx) { if (rf & 1) {
1447
1709
  i0.ɵɵelementStart(0, "div", 0);
1448
1710
  i0.ɵɵlistener("keydown", function CollectionsFullViewComponent_Template_div_keydown_0_listener($event) { return ctx.handleKeyboardShortcut($event); });
1449
1711
  i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
@@ -1471,26 +1733,28 @@ export class CollectionsFullViewComponent {
1471
1733
  i0.ɵɵelementEnd();
1472
1734
  i0.ɵɵconditionalCreate(17, CollectionsFullViewComponent_Conditional_17_Template, 2, 0, "button", 15);
1473
1735
  i0.ɵɵelementEnd();
1474
- i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_18_Template, 7, 1, "div", 11);
1475
- i0.ɵɵelementStart(19, "button", 16);
1476
- i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_19_listener() { return ctx.refresh(); });
1477
- i0.ɵɵelement(20, "i", 17);
1736
+ i0.ɵɵconditionalCreate(18, CollectionsFullViewComponent_Conditional_18_Template, 5, 3);
1737
+ i0.ɵɵconditionalCreate(19, CollectionsFullViewComponent_Conditional_19_Template, 7, 1, "div", 11);
1738
+ i0.ɵɵelementStart(20, "button", 16);
1739
+ i0.ɵɵlistener("click", function CollectionsFullViewComponent_Template_button_click_20_listener() { return ctx.refresh(); });
1740
+ i0.ɵɵelement(21, "i", 17);
1478
1741
  i0.ɵɵelementEnd()()();
1479
- i0.ɵɵconditionalCreate(21, CollectionsFullViewComponent_Conditional_21_Template, 11, 1, "div", 18);
1480
- i0.ɵɵelementStart(22, "div", 19);
1481
- i0.ɵɵconditionalCreate(23, CollectionsFullViewComponent_Conditional_23_Template, 2, 0, "div", 20);
1482
- i0.ɵɵconditionalCreate(24, CollectionsFullViewComponent_Conditional_24_Template, 5, 3, "div", 21);
1483
- i0.ɵɵconditionalCreate(25, CollectionsFullViewComponent_Conditional_25_Template, 3, 2, "div", 22);
1484
- i0.ɵɵconditionalCreate(26, CollectionsFullViewComponent_Conditional_26_Template, 25, 9, "div", 23);
1742
+ i0.ɵɵconditionalCreate(22, CollectionsFullViewComponent_Conditional_22_Template, 11, 1, "div", 18);
1743
+ i0.ɵɵelementStart(23, "div", 19);
1744
+ i0.ɵɵconditionalCreate(24, CollectionsFullViewComponent_Conditional_24_Template, 2, 0, "div", 20);
1745
+ i0.ɵɵconditionalCreate(25, CollectionsFullViewComponent_Conditional_25_Template, 5, 3, "div", 21);
1746
+ i0.ɵɵconditionalCreate(26, CollectionsFullViewComponent_Conditional_26_Template, 3, 2, "div", 22);
1747
+ i0.ɵɵconditionalCreate(27, CollectionsFullViewComponent_Conditional_27_Template, 25, 9, "div", 23);
1485
1748
  i0.ɵɵelementEnd()();
1486
- i0.ɵɵelementStart(27, "mj-collection-form-modal", 24);
1487
- i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_form_modal_saved_27_listener($event) { return ctx.onCollectionSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_form_modal_cancelled_27_listener() { return ctx.onFormCancelled(); });
1749
+ i0.ɵɵconditionalCreate(28, CollectionsFullViewComponent_Conditional_28_Template, 4, 6);
1750
+ i0.ɵɵelementStart(29, "mj-collection-form-modal", 24);
1751
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_form_modal_saved_29_listener($event) { return ctx.onCollectionSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_form_modal_cancelled_29_listener() { return ctx.onFormCancelled(); });
1488
1752
  i0.ɵɵelementEnd();
1489
- i0.ɵɵelementStart(28, "mj-artifact-create-modal", 25);
1490
- i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_saved_28_listener($event) { return ctx.onArtifactSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_cancelled_28_listener() { return ctx.onArtifactModalCancelled(); });
1753
+ i0.ɵɵelementStart(30, "mj-artifact-create-modal", 25);
1754
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_saved_30_listener($event) { return ctx.onArtifactSaved($event); })("cancelled", function CollectionsFullViewComponent_Template_mj_artifact_create_modal_cancelled_30_listener() { return ctx.onArtifactModalCancelled(); });
1491
1755
  i0.ɵɵelementEnd();
1492
- i0.ɵɵelementStart(29, "mj-collection-share-modal", 26);
1493
- i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_share_modal_saved_29_listener() { return ctx.onPermissionsChanged(); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_share_modal_cancelled_29_listener() { return ctx.onShareModalCancelled(); });
1756
+ i0.ɵɵelementStart(31, "mj-collection-share-modal", 26);
1757
+ i0.ɵɵlistener("saved", function CollectionsFullViewComponent_Template_mj_collection_share_modal_saved_31_listener() { return ctx.onPermissionsChanged(); })("cancelled", function CollectionsFullViewComponent_Template_mj_collection_share_modal_cancelled_31_listener() { return ctx.onShareModalCancelled(); });
1494
1758
  i0.ɵɵelementEnd();
1495
1759
  } if (rf & 2) {
1496
1760
  i0.ɵɵadvance(7);
@@ -1509,29 +1773,33 @@ export class CollectionsFullViewComponent {
1509
1773
  i0.ɵɵadvance();
1510
1774
  i0.ɵɵconditional(ctx.searchQuery ? 17 : -1);
1511
1775
  i0.ɵɵadvance();
1512
- i0.ɵɵconditional(ctx.canEditCurrent() ? 18 : -1);
1776
+ i0.ɵɵconditional(ctx.currentCollectionId && ctx.currentCollection ? 18 : -1);
1777
+ i0.ɵɵadvance();
1778
+ i0.ɵɵconditional(ctx.canEditCurrent() ? 19 : -1);
1513
1779
  i0.ɵɵadvance(3);
1514
- i0.ɵɵconditional(ctx.selectedItems.size > 0 ? 21 : -1);
1780
+ i0.ɵɵconditional(ctx.selectedItems.size > 0 ? 22 : -1);
1515
1781
  i0.ɵɵadvance(2);
1516
- i0.ɵɵconditional(ctx.isLoading ? 23 : -1);
1782
+ i0.ɵɵconditional(ctx.isLoading ? 24 : -1);
1517
1783
  i0.ɵɵadvance();
1518
- i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length === 0 ? 24 : -1);
1784
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length === 0 ? 25 : -1);
1519
1785
  i0.ɵɵadvance();
1520
- i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid" ? 25 : -1);
1786
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "grid" ? 26 : -1);
1521
1787
  i0.ɵɵadvance();
1522
- i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list" ? 26 : -1);
1788
+ i0.ɵɵconditional(!ctx.isLoading && ctx.unifiedItems.length > 0 && ctx.viewMode === "list" ? 27 : -1);
1789
+ i0.ɵɵadvance();
1790
+ i0.ɵɵconditional(ctx.showContextMenu && ctx.contextMenuItem ? 28 : -1);
1523
1791
  i0.ɵɵadvance();
1524
1792
  i0.ɵɵproperty("isOpen", ctx.isFormModalOpen)("collection", ctx.editingCollection)("parentCollection", ctx.currentCollection || undefined)("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
1525
1793
  i0.ɵɵadvance();
1526
1794
  i0.ɵɵproperty("isOpen", ctx.isArtifactModalOpen)("collectionId", ctx.currentCollectionId || "")("environmentId", ctx.environmentId)("currentUser", ctx.currentUser);
1527
1795
  i0.ɵɵadvance();
1528
1796
  i0.ɵɵproperty("isOpen", ctx.isShareModalOpen)("collection", ctx.sharingCollection)("currentUser", ctx.currentUser)("currentUserPermissions", ctx.sharingCollection ? ctx.userPermissions.get(ctx.sharingCollection.ID) || null : null);
1529
- } }, dependencies: [i6.NgClass, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.LoadingComponent, i9.CollectionShareModalComponent, i10.CollectionFormModalComponent, i11.ArtifactCreateModalComponent, i6.DatePipe], styles: ["\n\n .collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n \n\n .collections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%]:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator[_ngcontent-%COMP%] {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: #0051D5;\n }\n\n .btn-primary[_ngcontent-%COMP%] i.fa-chevron-down[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon[_ngcontent-%COMP%] {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n .btn-icon.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active[_ngcontent-%COMP%]:hover {\n background: #DBEAFE;\n }\n\n \n\n .dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n }\n\n .dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n \n\n .search-container[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input[_ngcontent-%COMP%]:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n \n\n .selection-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%] {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n \n\n .collections-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n \n\n .loading-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 0;\n color: #9CA3AF;\n text-align: center;\n padding: 24px;\n }\n\n .empty-state[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state[_ngcontent-%COMP%] .empty-state-cta[_ngcontent-%COMP%] {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\n }\n\n .empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n \n\n .unified-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n user-select: none;\n }\n\n .grid-item[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n \n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%]:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\n }\n\n .item-checkbox[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .item-checkbox[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .grid-item-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: white;\n }\n\n .grid-info[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .grid-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n \n\n .unified-list[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: #007AFF;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n cursor: pointer;\n user-select: none;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n .list-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:hover, \n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .col-name[_ngcontent-%COMP%] {\n min-width: 300px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell[_ngcontent-%COMP%] .fa-folder[_ngcontent-%COMP%] {\n color: #3B82F6;\n }\n\n .shared-indicator[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type[_ngcontent-%COMP%] {\n width: 150px;\n }\n\n .col-modified[_ngcontent-%COMP%] {\n width: 180px;\n }\n\n .col-owner[_ngcontent-%COMP%] {\n width: 150px;\n }"] });
1797
+ } }, dependencies: [i6.NgClass, i7.DefaultValueAccessor, i7.NgControlStatus, i7.NgModel, i8.DialogContainerDirective, i9.LoadingComponent, i10.CollectionShareModalComponent, i11.CollectionFormModalComponent, i12.ArtifactCreateModalComponent, i6.DatePipe], styles: ["\n\n .collections-view[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n \n\n .collections-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%] {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link[_ngcontent-%COMP%]:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active[_ngcontent-%COMP%] {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator[_ngcontent-%COMP%] {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary[_ngcontent-%COMP%]:hover {\n background: #0051D5;\n }\n\n .btn-primary[_ngcontent-%COMP%] i.fa-chevron-down[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon[_ngcontent-%COMP%] {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n .btn-icon.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active[_ngcontent-%COMP%]:hover {\n background: #DBEAFE;\n }\n\n \n\n .dropdown-container[_ngcontent-%COMP%] {\n position: relative;\n }\n\n .dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right[_ngcontent-%COMP%] {\n left: auto;\n right: 0;\n }\n\n .dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n \n\n .search-container[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input[_ngcontent-%COMP%]:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n \n\n .selection-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%] {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n \n\n .collections-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n \n\n .loading-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 0;\n color: #9CA3AF;\n text-align: center;\n padding: 24px;\n }\n\n .empty-state[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state[_ngcontent-%COMP%] .empty-state-cta[_ngcontent-%COMP%] {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\n }\n\n .empty-state-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n \n\n .unified-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n user-select: none;\n }\n\n .grid-item[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n \n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%] {\n cursor: pointer;\n }\n\n .unified-grid.select-mode[_ngcontent-%COMP%] .grid-item[_ngcontent-%COMP%]:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\n }\n\n .item-checkbox[_ngcontent-%COMP%] {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected[_ngcontent-%COMP%] .item-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n .item-checkbox[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .grid-item-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon[_ngcontent-%COMP%] {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n color: white;\n }\n\n .grid-info[_ngcontent-%COMP%] {\n width: 100%;\n text-align: center;\n }\n\n .grid-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n \n\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n \n\n .unified-list[_ngcontent-%COMP%] {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover {\n color: #007AFF;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table[_ngcontent-%COMP%] th.sortable[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n opacity: 1;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n cursor: pointer;\n user-select: none;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: #F9FAFB;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: #EFF6FF;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%] {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.active[_ngcontent-%COMP%]:hover {\n background: #FDE68A;\n }\n\n .list-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:hover, \n .list-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] .col-checkbox[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #007AFF;\n }\n\n .col-name[_ngcontent-%COMP%] {\n min-width: 300px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell[_ngcontent-%COMP%] .fa-folder[_ngcontent-%COMP%] {\n color: #3B82F6;\n }\n\n .shared-indicator[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type[_ngcontent-%COMP%] {\n width: 150px;\n }\n\n .col-modified[_ngcontent-%COMP%] {\n width: 180px;\n }\n\n .col-owner[_ngcontent-%COMP%] {\n width: 150px;\n }\n\n \n\n .toolbar-separator[_ngcontent-%COMP%] {\n width: 1px;\n height: 24px;\n background: #D1D5DB;\n margin: 0 4px;\n }\n\n .toolbar-actions-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger[_ngcontent-%COMP%] {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-icon-danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n color: #DC2626;\n border-color: #DC2626;\n }\n\n \n\n .context-menu-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu[_ngcontent-%COMP%] {\n position: fixed;\n min-width: 180px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n }\n\n .context-menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .context-menu-danger[_ngcontent-%COMP%] {\n color: #DC2626;\n }\n\n .context-menu-danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #DC2626;\n }\n\n .context-menu-danger[_ngcontent-%COMP%]:hover {\n background: #FEE2E2;\n }\n\n .context-menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }"] });
1530
1798
  }
1531
1799
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionsFullViewComponent, [{
1532
1800
  type: Component,
1533
1801
  args: [{ standalone: false, selector: 'mj-collections-full-view', template: `
1534
- <div class="collections-view" (keydown)="handleKeyboardShortcut($event)">
1802
+ <div class="collections-view" (keydown)="handleKeyboardShortcut($event)" kendoDialogContainer>
1535
1803
  <!-- Mac Finder-style Header -->
1536
1804
  <div class="collections-header">
1537
1805
  <!-- Breadcrumb navigation -->
@@ -1620,7 +1888,35 @@ export class CollectionsFullViewComponent {
1620
1888
  </button>
1621
1889
  }
1622
1890
  </div>
1623
-
1891
+
1892
+ <!-- Current collection actions (visible when inside a collection) -->
1893
+ @if (currentCollectionId && currentCollection) {
1894
+ <div class="toolbar-separator"></div>
1895
+ <div class="toolbar-actions-group">
1896
+ @if (canShareCurrent()) {
1897
+ <button class="btn-icon"
1898
+ (click)="shareCurrentCollection()"
1899
+ [title]="'Share: ' + currentCollection.Name">
1900
+ <i class="fas fa-share-nodes"></i>
1901
+ </button>
1902
+ }
1903
+ @if (canEditCurrent()) {
1904
+ <button class="btn-icon"
1905
+ (click)="editCurrentCollection()"
1906
+ [title]="'Edit: ' + currentCollection.Name">
1907
+ <i class="fas fa-pen-to-square"></i>
1908
+ </button>
1909
+ }
1910
+ @if (canDeleteCurrent()) {
1911
+ <button class="btn-icon btn-icon-danger"
1912
+ (click)="deleteCurrentCollection()"
1913
+ [title]="'Delete: ' + currentCollection.Name">
1914
+ <i class="fas fa-trash"></i>
1915
+ </button>
1916
+ }
1917
+ </div>
1918
+ }
1919
+
1624
1920
  <!-- New dropdown -->
1625
1921
  @if (canEditCurrent()) {
1626
1922
  <div class="dropdown-container">
@@ -1907,8 +2203,56 @@ export class CollectionsFullViewComponent {
1907
2203
  }
1908
2204
  </div>
1909
2205
  </div>
1910
-
1911
- <!-- Modals (unchanged) -->
2206
+
2207
+ <!-- Context Menu -->
2208
+ @if (showContextMenu && contextMenuItem) {
2209
+ <div class="context-menu-backdrop" (click)="closeContextMenu()"></div>
2210
+ <div class="context-menu"
2211
+ [style.left.px]="contextMenuPosition.x"
2212
+ [style.top.px]="contextMenuPosition.y">
2213
+ @if (contextMenuItem.type === 'folder' && contextMenuItem.collection) {
2214
+ <button class="context-menu-item" (click)="onContextMenuAction('open')">
2215
+ <i class="fas fa-folder-open"></i>
2216
+ <span>Open</span>
2217
+ </button>
2218
+ <div class="context-menu-divider"></div>
2219
+ @if (canShare(contextMenuItem.collection)) {
2220
+ <button class="context-menu-item" (click)="onContextMenuAction('share')">
2221
+ <i class="fas fa-share-nodes"></i>
2222
+ <span>Share</span>
2223
+ </button>
2224
+ }
2225
+ @if (canEdit(contextMenuItem.collection)) {
2226
+ <button class="context-menu-item" (click)="onContextMenuAction('edit')">
2227
+ <i class="fas fa-pen-to-square"></i>
2228
+ <span>Edit</span>
2229
+ </button>
2230
+ }
2231
+ @if (canDelete(contextMenuItem.collection)) {
2232
+ <div class="context-menu-divider"></div>
2233
+ <button class="context-menu-item context-menu-danger" (click)="onContextMenuAction('delete')">
2234
+ <i class="fas fa-trash"></i>
2235
+ <span>Delete</span>
2236
+ </button>
2237
+ }
2238
+ }
2239
+ @if (contextMenuItem.type === 'artifact') {
2240
+ <button class="context-menu-item" (click)="onContextMenuAction('view')">
2241
+ <i class="fas fa-eye"></i>
2242
+ <span>View</span>
2243
+ </button>
2244
+ @if (canEditCurrent()) {
2245
+ <div class="context-menu-divider"></div>
2246
+ <button class="context-menu-item context-menu-danger" (click)="onContextMenuAction('remove')">
2247
+ <i class="fas fa-times-circle"></i>
2248
+ <span>Remove from Collection</span>
2249
+ </button>
2250
+ }
2251
+ }
2252
+ </div>
2253
+ }
2254
+
2255
+ <!-- Modals -->
1912
2256
  <mj-collection-form-modal
1913
2257
  [isOpen]="isFormModalOpen"
1914
2258
  [collection]="editingCollection"
@@ -1936,13 +2280,16 @@ export class CollectionsFullViewComponent {
1936
2280
  (saved)="onPermissionsChanged()"
1937
2281
  (cancelled)="onShareModalCancelled()">
1938
2282
  </mj-collection-share-modal>
1939
- `, styles: ["\n /* Main container */\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n /* Header */\n .collections-header {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item i {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Button styles */\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: #0051D5;\n }\n\n .btn-primary i.fa-chevron-down {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n .btn-icon.active {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active:hover {\n background: #DBEAFE;\n }\n\n /* Dropdown menus */\n .dropdown-container {\n position: relative;\n }\n\n .dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active i {\n color: #007AFF;\n }\n\n .dropdown-divider {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n /* Search */\n .search-container {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container i.fa-search {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n /* Selection toolbar */\n .selection-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n /* Content area */\n .collections-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n /* Loading and empty states */\n .loading-state, .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 0;\n color: #9CA3AF;\n text-align: center;\n padding: 24px;\n }\n\n .empty-state > i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state .empty-state-cta {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\n }\n\n .empty-state-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n /* Grid view */\n .unified-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n user-select: none;\n }\n\n .grid-item:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active:hover {\n background: #FDE68A;\n }\n\n /* Select mode styling for grid */\n .unified-grid.select-mode .grid-item {\n cursor: pointer;\n }\n\n .unified-grid.select-mode .grid-item:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\n }\n\n .item-checkbox {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected .item-checkbox i,\n .item-checkbox:hover i {\n color: #007AFF;\n }\n\n .grid-item-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon i {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon i {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge i {\n font-size: 10px;\n color: white;\n }\n\n .grid-info {\n width: 100%;\n text-align: center;\n }\n\n .grid-name {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner i {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n /* List view */\n .unified-list {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table thead {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table th {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table th.sortable {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table th.sortable:hover {\n color: #007AFF;\n }\n\n .list-table th.sortable span {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table th.sortable i {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table th.sortable:hover i {\n opacity: 1;\n }\n\n .list-table tbody tr {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n cursor: pointer;\n user-select: none;\n }\n\n .list-table tbody tr:last-child {\n border-bottom: none;\n }\n\n .list-table tbody tr:hover {\n background: #F9FAFB;\n }\n\n .list-table tbody tr.selected {\n background: #EFF6FF;\n }\n\n .list-table tbody tr.active {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table tbody tr.active:hover {\n background: #FDE68A;\n }\n\n .list-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox i:hover,\n .list-table tbody tr.selected .col-checkbox i {\n color: #007AFF;\n }\n\n .col-name {\n min-width: 300px;\n }\n\n .list-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell i {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell .fa-folder {\n color: #3B82F6;\n }\n\n .shared-indicator {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type {\n width: 150px;\n }\n\n .col-modified {\n width: 180px;\n }\n\n .col-owner {\n width: 150px;\n }\n "] }]
2283
+ `, styles: ["\n /* Main container */\n .collections-view {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #FAFAFA;\n position: relative;\n }\n\n /* Header */\n .collections-header {\n display: flex;\n align-items: center;\n padding: 12px 20px;\n border-bottom: 1px solid #E5E7EB;\n gap: 16px;\n background: white;\n }\n\n .collections-breadcrumb {\n display: flex;\n align-items: center;\n gap: 6px;\n flex: 1;\n min-width: 0;\n }\n\n .breadcrumb-item {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .breadcrumb-item i {\n color: #6B7280;\n font-size: 14px;\n }\n\n .breadcrumb-link {\n color: #111827;\n font-weight: 500;\n cursor: pointer;\n text-decoration: none;\n white-space: nowrap;\n transition: color 150ms ease;\n font-size: 14px;\n }\n\n .breadcrumb-link:hover {\n color: #0076D6;\n }\n\n .breadcrumb-link.active {\n color: #6B7280;\n cursor: default;\n }\n\n .breadcrumb-path {\n display: flex;\n align-items: center;\n gap: 6px;\n overflow-x: auto;\n }\n\n .breadcrumb-separator {\n color: #D1D5DB;\n font-size: 10px;\n }\n\n .collections-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Button styles */\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: #007AFF;\n border: none;\n border-radius: 6px;\n color: white;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 150ms ease;\n }\n\n .btn-primary:hover {\n background: #0051D5;\n }\n\n .btn-primary i.fa-chevron-down {\n font-size: 10px;\n margin-left: 2px;\n }\n\n .btn-icon {\n padding: 6px 10px;\n background: transparent;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n cursor: pointer;\n color: #6B7280;\n transition: all 150ms ease;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .btn-icon:hover {\n background: #F9FAFB;\n color: #111827;\n border-color: #9CA3AF;\n }\n\n .btn-icon.active {\n background: #EFF6FF;\n color: #007AFF;\n border-color: #007AFF;\n }\n\n .btn-icon.active:hover {\n background: #DBEAFE;\n }\n\n /* Dropdown menus */\n .dropdown-container {\n position: relative;\n }\n\n .dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 200px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n padding: 4px;\n z-index: 1000;\n }\n\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .dropdown-item:hover:not(:disabled) {\n background: #F3F4F6;\n }\n\n .dropdown-item:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .dropdown-item.active {\n background: #EFF6FF;\n color: #007AFF;\n }\n\n .dropdown-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .dropdown-item.active i {\n color: #007AFF;\n }\n\n .dropdown-divider {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n\n /* Search */\n .search-container {\n position: relative;\n display: flex;\n align-items: center;\n min-width: 200px;\n }\n\n .search-container i.fa-search {\n position: absolute;\n left: 10px;\n color: #9CA3AF;\n font-size: 13px;\n pointer-events: none;\n }\n\n .search-input {\n width: 100%;\n padding: 6px 32px 6px 32px;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n font-size: 13px;\n outline: none;\n transition: all 150ms ease;\n }\n\n .search-input:focus {\n border-color: #007AFF;\n box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);\n }\n\n .search-clear {\n position: absolute;\n right: 6px;\n padding: 4px;\n background: transparent;\n border: none;\n color: #9CA3AF;\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .search-clear:hover {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n /* Selection toolbar */\n .selection-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 20px;\n background: #EFF6FF;\n border-bottom: 1px solid #BFDBFE;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .selection-count {\n font-size: 13px;\n font-weight: 600;\n color: #1E40AF;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n }\n\n .btn-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 6px;\n color: #374151;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: all 150ms ease;\n }\n\n .btn-toolbar:hover {\n background: #F9FAFB;\n border-color: #9CA3AF;\n }\n\n .btn-toolbar.btn-danger {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-toolbar.btn-danger:hover {\n background: #FEE2E2;\n border-color: #DC2626;\n }\n\n /* Content area */\n .collections-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n }\n\n /* Loading and empty states */\n .loading-state, .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n min-height: 0;\n color: #9CA3AF;\n text-align: center;\n padding: 24px;\n }\n\n .empty-state > i {\n font-size: 64px;\n margin-bottom: 24px;\n opacity: 0.3;\n color: #D1D5DB;\n }\n\n .empty-state h3 {\n margin: 0 0 8px 0;\n color: #374151;\n font-size: 18px;\n font-weight: 600;\n }\n\n .empty-state p {\n margin: 0 0 24px 0;\n font-size: 14px;\n color: #6B7280;\n }\n\n .empty-state .empty-state-cta {\n padding: 10px 20px;\n font-size: 14px;\n border-radius: 8px;\n }\n\n .empty-state-actions {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n justify-content: center;\n }\n\n /* Grid view */\n .unified-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n gap: 16px;\n padding: 4px;\n }\n\n .grid-item {\n display: flex;\n flex-direction: column;\n padding: 12px;\n background: white;\n border: 2px solid transparent;\n border-radius: 8px;\n cursor: pointer;\n transition: all 150ms ease;\n position: relative;\n user-select: none;\n }\n\n .grid-item:hover {\n background: #F9FAFB;\n border-color: #D1D5DB;\n }\n\n .grid-item.selected {\n background: #EFF6FF;\n border-color: #007AFF;\n }\n\n .grid-item.active {\n background: #FEF3C7;\n border-color: #F59E0B;\n box-shadow: 0 0 0 1px #F59E0B;\n }\n\n .grid-item.active:hover {\n background: #FDE68A;\n }\n\n /* Select mode styling for grid */\n .unified-grid.select-mode .grid-item {\n cursor: pointer;\n }\n\n .unified-grid.select-mode .grid-item:hover {\n background: #EFF6FF;\n border-color: #93C5FD;\n }\n\n .item-checkbox {\n position: absolute;\n top: 8px;\n right: 8px;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 10;\n }\n\n .item-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n transition: color 150ms ease;\n }\n\n .grid-item.selected .item-checkbox i,\n .item-checkbox:hover i {\n color: #007AFF;\n }\n\n .grid-item-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n }\n\n .grid-icon {\n width: 64px;\n height: 64px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n position: relative;\n }\n\n .grid-icon.folder-icon {\n background: linear-gradient(135deg, #60A5FA 0%, #3B82F6 100%);\n }\n\n .grid-icon.folder-icon i {\n font-size: 36px;\n color: white;\n }\n\n .grid-icon.artifact-icon {\n background: #F3F4F6;\n }\n\n .grid-icon.artifact-icon i {\n font-size: 32px;\n color: #6B7280;\n }\n\n .shared-badge {\n position: absolute;\n top: -4px;\n right: -4px;\n width: 20px;\n height: 20px;\n background: #10B981;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 2px solid white;\n }\n\n .shared-badge i {\n font-size: 10px;\n color: white;\n }\n\n .grid-info {\n width: 100%;\n text-align: center;\n }\n\n .grid-name {\n font-size: 13px;\n font-weight: 500;\n color: #111827;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-description {\n font-size: 11px;\n color: #6B7280;\n line-height: 1.3;\n margin-bottom: 4px;\n /* Allow wrapping to 2 lines max */\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n }\n\n .grid-meta {\n font-size: 11px;\n color: #6B7280;\n margin-top: 4px;\n }\n\n .grid-owner {\n font-size: 11px;\n color: #6B7280;\n margin-top: 2px;\n }\n\n .grid-owner i {\n font-size: 10px;\n margin-right: 3px;\n }\n\n .version-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #FEF3C7;\n color: #92400E;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n font-family: monospace;\n margin-right: 4px;\n }\n\n .artifact-type-badge {\n display: inline-block;\n padding: 2px 6px;\n background: #DBEAFE;\n color: #1E40AF;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n /* List view */\n .unified-list {\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .list-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .list-table thead {\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n }\n\n .list-table th {\n padding: 10px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .list-table th.sortable {\n cursor: pointer;\n user-select: none;\n transition: color 150ms ease;\n }\n\n .list-table th.sortable:hover {\n color: #007AFF;\n }\n\n .list-table th.sortable span {\n display: inline-block;\n margin-right: 6px;\n }\n\n .list-table th.sortable i {\n font-size: 10px;\n opacity: 0.5;\n }\n\n .list-table th.sortable:hover i {\n opacity: 1;\n }\n\n .list-table tbody tr {\n border-bottom: 1px solid #F3F4F6;\n transition: background 150ms ease;\n cursor: pointer;\n user-select: none;\n }\n\n .list-table tbody tr:last-child {\n border-bottom: none;\n }\n\n .list-table tbody tr:hover {\n background: #F9FAFB;\n }\n\n .list-table tbody tr.selected {\n background: #EFF6FF;\n }\n\n .list-table tbody tr.active {\n background: #FEF3C7;\n border-left: 3px solid #F59E0B;\n }\n\n .list-table tbody tr.active:hover {\n background: #FDE68A;\n }\n\n .list-table td {\n padding: 12px 16px;\n font-size: 13px;\n color: #374151;\n }\n\n .col-checkbox {\n width: 40px;\n text-align: center;\n }\n\n .col-checkbox i {\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .col-checkbox i:hover,\n .list-table tbody tr.selected .col-checkbox i {\n color: #007AFF;\n }\n\n .col-name {\n min-width: 300px;\n }\n\n .list-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .list-name-cell i {\n font-size: 16px;\n color: #6B7280;\n width: 20px;\n text-align: center;\n }\n\n .list-name-cell .fa-folder {\n color: #3B82F6;\n }\n\n .shared-indicator {\n font-size: 12px;\n color: #10B981;\n margin-left: auto;\n }\n\n .col-type {\n width: 150px;\n }\n\n .col-modified {\n width: 180px;\n }\n\n .col-owner {\n width: 150px;\n }\n\n /* Toolbar separator and action group */\n .toolbar-separator {\n width: 1px;\n height: 24px;\n background: #D1D5DB;\n margin: 0 4px;\n }\n\n .toolbar-actions-group {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .btn-icon-danger {\n color: #DC2626;\n border-color: #FCA5A5;\n }\n\n .btn-icon-danger:hover {\n background: #FEE2E2;\n color: #DC2626;\n border-color: #DC2626;\n }\n\n /* Context menu */\n .context-menu-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1999;\n }\n\n .context-menu {\n position: fixed;\n min-width: 180px;\n background: white;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);\n padding: 4px;\n z-index: 2000;\n }\n\n .context-menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 8px 12px;\n background: transparent;\n border: none;\n border-radius: 4px;\n color: #111827;\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n transition: background 100ms ease;\n }\n\n .context-menu-item:hover {\n background: #F3F4F6;\n }\n\n .context-menu-item i {\n font-size: 14px;\n width: 16px;\n text-align: center;\n color: #6B7280;\n }\n\n .context-menu-danger {\n color: #DC2626;\n }\n\n .context-menu-danger i {\n color: #DC2626;\n }\n\n .context-menu-danger:hover {\n background: #FEE2E2;\n }\n\n .context-menu-divider {\n height: 1px;\n background: #E5E7EB;\n margin: 4px 0;\n }\n "] }]
1940
2284
  }], () => [{ type: i1.DialogService }, { type: i2.ArtifactStateService }, { type: i3.CollectionStateService }, { type: i4.CollectionPermissionService }, { type: i5.ArtifactIconService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
1941
2285
  type: Input
1942
2286
  }], currentUser: [{
1943
2287
  type: Input
1944
2288
  }], collectionNavigated: [{
1945
2289
  type: Output
2290
+ }], onEscapeKey: [{
2291
+ type: HostListener,
2292
+ args: ['document:keydown.escape']
1946
2293
  }] }); })();
1947
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1132 }); })();
2294
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionsFullViewComponent, { className: "CollectionsFullViewComponent", filePath: "src/lib/components/collection/collections-full-view.component.ts", lineNumber: 1299 }); })();
1948
2295
  //# sourceMappingURL=collections-full-view.component.js.map