@memberjunction/ng-skip-chat 2.36.1 → 2.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +97 -2
  2. package/dist/lib/artifacts/skip-artifact-viewer.component.d.ts +78 -0
  3. package/dist/lib/artifacts/skip-artifact-viewer.component.d.ts.map +1 -0
  4. package/dist/lib/artifacts/skip-artifact-viewer.component.js +520 -0
  5. package/dist/lib/artifacts/skip-artifact-viewer.component.js.map +1 -0
  6. package/dist/lib/artifacts/skip-artifacts-counter.component.d.ts +25 -0
  7. package/dist/lib/artifacts/skip-artifacts-counter.component.d.ts.map +1 -0
  8. package/dist/lib/artifacts/skip-artifacts-counter.component.js +253 -0
  9. package/dist/lib/artifacts/skip-artifacts-counter.component.js.map +1 -0
  10. package/dist/lib/module.d.ts +23 -20
  11. package/dist/lib/module.d.ts.map +1 -1
  12. package/dist/lib/module.js +19 -4
  13. package/dist/lib/module.js.map +1 -1
  14. package/dist/lib/skip-chat/skip-chat.component.d.ts +45 -1
  15. package/dist/lib/skip-chat/skip-chat.component.d.ts.map +1 -1
  16. package/dist/lib/skip-chat/skip-chat.component.js +239 -116
  17. package/dist/lib/skip-chat/skip-chat.component.js.map +1 -1
  18. package/dist/lib/skip-single-message/skip-single-message.component.d.ts +33 -1
  19. package/dist/lib/skip-single-message/skip-single-message.component.d.ts.map +1 -1
  20. package/dist/lib/skip-single-message/skip-single-message.component.js +160 -38
  21. package/dist/lib/skip-single-message/skip-single-message.component.js.map +1 -1
  22. package/dist/lib/split-panel/skip-split-panel.component.d.ts +41 -0
  23. package/dist/lib/split-panel/skip-split-panel.component.d.ts.map +1 -0
  24. package/dist/lib/split-panel/skip-split-panel.component.js +135 -0
  25. package/dist/lib/split-panel/skip-split-panel.component.js.map +1 -0
  26. package/dist/public-api.d.ts +3 -0
  27. package/dist/public-api.d.ts.map +1 -1
  28. package/dist/public-api.js +3 -0
  29. package/dist/public-api.js.map +1 -1
  30. package/package.json +12 -12
@@ -0,0 +1,520 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Component, Input, ViewChild, ViewContainerRef, Output, EventEmitter } from '@angular/core';
11
+ import { RunView, LogError } from '@memberjunction/core';
12
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
13
+ import { SkipDynamicReportWrapperComponent } from '../dynamic-report/skip-dynamic-report-wrapper';
14
+ import { SkipResponsePhase } from '@memberjunction/skip-types';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@memberjunction/ng-notifications";
17
+ import * as i2 from "@angular/forms";
18
+ import * as i3 from "@progress/kendo-angular-indicators";
19
+ import * as i4 from "@progress/kendo-angular-label";
20
+ import * as i5 from "@angular/common";
21
+ const _c0 = ["reportContainer"];
22
+ const _forTrack0 = ($index, $item) => $item.ID;
23
+ function SkipArtifactViewerComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementStart(0, "div", 6)(1, "p");
25
+ i0.ɵɵtext(2);
26
+ i0.ɵɵelementEnd()();
27
+ } if (rf & 2) {
28
+ const ctx_r0 = i0.ɵɵnextContext();
29
+ i0.ɵɵadvance(2);
30
+ i0.ɵɵtextInterpolate(ctx_r0.artifact.Description);
31
+ } }
32
+ function SkipArtifactViewerComponent_Conditional_8_For_5_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "option", 14);
34
+ i0.ɵɵtext(1);
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const version_r3 = ctx.$implicit;
38
+ i0.ɵɵproperty("value", version_r3.ID);
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate(version_r3.Version);
41
+ } }
42
+ function SkipArtifactViewerComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
43
+ const _r2 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "div", 7)(1, "label", 12);
45
+ i0.ɵɵtext(2, "Version:");
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelementStart(3, "select", 13);
48
+ i0.ɵɵtwoWayListener("ngModelChange", function SkipArtifactViewerComponent_Conditional_8_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.selectedVersionId, $event) || (ctx_r0.selectedVersionId = $event); return i0.ɵɵresetView($event); });
49
+ i0.ɵɵlistener("change", function SkipArtifactViewerComponent_Conditional_8_Template_select_change_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onVersionChange()); });
50
+ i0.ɵɵrepeaterCreate(4, SkipArtifactViewerComponent_Conditional_8_For_5_Template, 2, 2, "option", 14, _forTrack0);
51
+ i0.ɵɵelementEnd()();
52
+ } if (rf & 2) {
53
+ const ctx_r0 = i0.ɵɵnextContext();
54
+ i0.ɵɵadvance(3);
55
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.selectedVersionId);
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵrepeater(ctx_r0.artifactVersions);
58
+ } }
59
+ function SkipArtifactViewerComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementStart(0, "div", 9);
61
+ i0.ɵɵelement(1, "kendo-loader", 15);
62
+ i0.ɵɵelementStart(2, "div", 16);
63
+ i0.ɵɵtext(3, "Loading artifact...");
64
+ i0.ɵɵelementEnd()();
65
+ } }
66
+ function SkipArtifactViewerComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵelementStart(0, "div", 10)(1, "div", 17);
68
+ i0.ɵɵelement(2, "i", 18);
69
+ i0.ɵɵelementEnd();
70
+ i0.ɵɵelementStart(3, "div", 19);
71
+ i0.ɵɵtext(4);
72
+ i0.ɵɵelementEnd()();
73
+ } if (rf & 2) {
74
+ const ctx_r0 = i0.ɵɵnextContext();
75
+ i0.ɵɵadvance(4);
76
+ i0.ɵɵtextInterpolate(ctx_r0.error);
77
+ } }
78
+ function SkipArtifactViewerComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵelementStart(0, "div", 11)(1, "div", 20);
80
+ i0.ɵɵelement(2, "i", 21);
81
+ i0.ɵɵelementEnd();
82
+ i0.ɵɵelementStart(3, "div", 22);
83
+ i0.ɵɵtext(4, "No artifact selected");
84
+ i0.ɵɵelementEnd()();
85
+ } }
86
+ function SkipArtifactViewerComponent_Conditional_13_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelementStart(0, "div", 25)(1, "span", 26);
88
+ i0.ɵɵtext(2, "Created:");
89
+ i0.ɵɵelementEnd();
90
+ i0.ɵɵelementStart(3, "span", 27);
91
+ i0.ɵɵtext(4);
92
+ i0.ɵɵpipe(5, "date");
93
+ i0.ɵɵelementEnd()();
94
+ } if (rf & 2) {
95
+ const ctx_r0 = i0.ɵɵnextContext(3);
96
+ i0.ɵɵadvance(4);
97
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(5, 1, ctx_r0.artifactVersion.CreatedAt, "medium"));
98
+ } }
99
+ function SkipArtifactViewerComponent_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
100
+ i0.ɵɵelementStart(0, "div", 24);
101
+ i0.ɵɵtemplate(1, SkipArtifactViewerComponent_Conditional_13_Conditional_2_Conditional_1_Template, 6, 4, "div", 25);
102
+ i0.ɵɵelementEnd();
103
+ } if (rf & 2) {
104
+ const ctx_r0 = i0.ɵɵnextContext(2);
105
+ i0.ɵɵadvance();
106
+ i0.ɵɵconditional(ctx_r0.artifactVersion.CreatedAt ? 1 : -1);
107
+ } }
108
+ function SkipArtifactViewerComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵelement(0, "div", 23, 0);
110
+ i0.ɵɵtemplate(2, SkipArtifactViewerComponent_Conditional_13_Conditional_2_Template, 2, 1, "div", 24);
111
+ } if (rf & 2) {
112
+ const ctx_r0 = i0.ɵɵnextContext();
113
+ i0.ɵɵadvance(2);
114
+ i0.ɵɵconditional(ctx_r0.artifactVersion ? 2 : -1);
115
+ } }
116
+ export class SkipArtifactViewerComponent extends BaseAngularComponent {
117
+ constructor(notificationService, componentFactoryResolver, cdRef, injector) {
118
+ super();
119
+ this.notificationService = notificationService;
120
+ this.componentFactoryResolver = componentFactoryResolver;
121
+ this.cdRef = cdRef;
122
+ this.injector = injector;
123
+ this.ArtifactID = '';
124
+ this.ArtifactVersionID = '';
125
+ this.DataContext = null;
126
+ /**
127
+ * Event emitted when the user clicks on a matching report and the application needs to handle the navigation
128
+ */
129
+ this.NavigateToMatchingReport = new EventEmitter();
130
+ /**
131
+ * This event fires whenever a new report is created.
132
+ */
133
+ this.NewReportCreated = new EventEmitter();
134
+ /**
135
+ * This event fires whenever a drill down is requested within a given report.
136
+ */
137
+ this.DrillDownEvent = new EventEmitter();
138
+ this.isLoading = false;
139
+ this.artifact = null;
140
+ this.artifactVersion = null;
141
+ this.artifactType = null;
142
+ this.contentType = '';
143
+ this.displayContent = null;
144
+ this.error = null;
145
+ this.artifactVersions = [];
146
+ this.selectedVersionId = '';
147
+ this.reportComponentRef = null;
148
+ this.conversationDetailRecord = null;
149
+ }
150
+ ngOnInit() {
151
+ if (this.ArtifactID) {
152
+ this.loadArtifact();
153
+ }
154
+ }
155
+ ngOnChanges(changes) {
156
+ if ((changes['ArtifactID'] && !changes['ArtifactID'].firstChange) ||
157
+ (changes['ArtifactVersionID'] && !changes['ArtifactVersionID'].firstChange)) {
158
+ this.loadArtifact();
159
+ }
160
+ }
161
+ ngAfterViewInit() {
162
+ // If the artifact is already loaded (happens when component is created with initial inputs),
163
+ // we need to create the report component once the view is initialized
164
+ if (this.artifact && this.artifactVersion) {
165
+ // Use setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError
166
+ // and to ensure reportContainer is properly initialized
167
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
168
+ if (this.reportContainer) {
169
+ yield this.createReportComponent();
170
+ }
171
+ else {
172
+ // If the container is still not available, try once more after a longer delay
173
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
174
+ if (this.reportContainer) {
175
+ yield this.createReportComponent();
176
+ }
177
+ else {
178
+ LogError('Report container still not available after multiple attempts');
179
+ }
180
+ }), 100);
181
+ }
182
+ }), 0);
183
+ }
184
+ }
185
+ loadArtifact() {
186
+ return __awaiter(this, void 0, void 0, function* () {
187
+ if (!this.ArtifactID) {
188
+ return;
189
+ }
190
+ this.isLoading = true;
191
+ this.error = null;
192
+ try {
193
+ const provider = this.ProviderToUse;
194
+ // Load the artifact
195
+ const artifactEntity = yield provider.GetEntityObject('MJ: Conversation Artifacts', provider.CurrentUser);
196
+ if (!(yield artifactEntity.Load(this.ArtifactID))) {
197
+ throw new Error(`Failed to load artifact: ${artifactEntity.LatestResult.Message}`);
198
+ }
199
+ this.artifact = artifactEntity;
200
+ // Load the artifact type
201
+ const artifactTypeEntity = yield provider.GetEntityObject('MJ: Artifact Types', provider.CurrentUser);
202
+ if (!(yield artifactTypeEntity.Load(this.artifact.ArtifactTypeID))) {
203
+ throw new Error(`Failed to load artifact type: ${artifactTypeEntity.LatestResult.Message}`);
204
+ }
205
+ this.artifactType = artifactTypeEntity;
206
+ this.contentType = this.artifactType.ContentType;
207
+ // Load all versions of this artifact for the dropdown
208
+ yield this.loadArtifactVersions();
209
+ // Load the specific artifact version if provided, otherwise use the latest version
210
+ if (this.ArtifactVersionID) {
211
+ this.loadSpecificArtifactVersion(this.ArtifactVersionID);
212
+ }
213
+ else if (this.artifactVersions.length > 0) {
214
+ // Use the latest version (first in the list since we sort by Version DESC)
215
+ this.artifactVersion = this.artifactVersions[0];
216
+ this.selectedVersionId = this.artifactVersion.ID;
217
+ }
218
+ else {
219
+ throw new Error('No artifact versions found');
220
+ }
221
+ // Create the report component after a short delay to ensure Angular has time to initialize the view
222
+ this.isLoading = false;
223
+ this.cdRef.detectChanges(); // Trigger change detection to update the view
224
+ setTimeout(() => {
225
+ // Check again if view is initialized
226
+ if (this.reportContainer) {
227
+ this.createReportComponent();
228
+ }
229
+ else {
230
+ // If still not initialized, we'll try again in ngAfterViewInit
231
+ LogError('Report container not yet initialized, will try in ngAfterViewInit');
232
+ }
233
+ }, 0);
234
+ }
235
+ catch (err) {
236
+ LogError('Error loading artifact', err instanceof Error ? err.message : String(err));
237
+ this.error = err instanceof Error ? err.message : 'Unknown error loading artifact';
238
+ this.notificationService.CreateSimpleNotification('Error loading artifact', 'error', 3000);
239
+ }
240
+ finally {
241
+ this.isLoading = false;
242
+ }
243
+ });
244
+ }
245
+ /**
246
+ * Loads all versions of the current artifact for the dropdown
247
+ */
248
+ loadArtifactVersions() {
249
+ return __awaiter(this, void 0, void 0, function* () {
250
+ const runView = new RunView(this.RunViewToUse);
251
+ const versionResult = yield runView.RunView({
252
+ EntityName: 'MJ: Conversation Artifact Versions',
253
+ ResultType: 'entity_object',
254
+ OrderBy: 'Version DESC',
255
+ ExtraFilter: `ConversationArtifactID = '${this.ArtifactID}'`
256
+ });
257
+ if (versionResult && versionResult.Success && versionResult.Results.length > 0) {
258
+ this.artifactVersions = versionResult.Results;
259
+ }
260
+ else {
261
+ this.artifactVersions = [];
262
+ }
263
+ });
264
+ }
265
+ /**
266
+ * Loads a specific artifact version by ID
267
+ */
268
+ loadSpecificArtifactVersion(versionId) {
269
+ // grab the version from the this.artifactVersions array
270
+ const version = this.artifactVersions.find((v) => v.ID === versionId);
271
+ if (!version) {
272
+ throw new Error(`Artifact version with ID ${versionId} not found`);
273
+ }
274
+ this.artifactVersion = version;
275
+ this.selectedVersionId = this.artifactVersion.ID;
276
+ }
277
+ /**
278
+ * Called when the user selects a different version from the dropdown
279
+ */
280
+ onVersionChange() {
281
+ return __awaiter(this, void 0, void 0, function* () {
282
+ if (this.selectedVersionId) {
283
+ this.isLoading = true;
284
+ try {
285
+ // Destroy existing component if any
286
+ this.destroyReportComponent();
287
+ // Load the selected version
288
+ this.loadSpecificArtifactVersion(this.selectedVersionId);
289
+ this.isLoading = false;
290
+ this.cdRef.detectChanges(); // Trigger change detection to update the view
291
+ // Wait for the next Angular cycle and ensure reportContainer is available
292
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
293
+ if (this.reportContainer) {
294
+ yield this.createReportComponent();
295
+ }
296
+ else {
297
+ // If the container is still not available, try once more after a longer delay
298
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
299
+ if (this.reportContainer) {
300
+ yield this.createReportComponent();
301
+ }
302
+ else {
303
+ LogError('Report container not available when changing versions');
304
+ }
305
+ }), 100);
306
+ }
307
+ }), 0);
308
+ }
309
+ catch (err) {
310
+ LogError('Error changing artifact version', err instanceof Error ? err.message : String(err));
311
+ this.error = err instanceof Error ? err.message : 'Unknown error loading artifact version';
312
+ this.notificationService.CreateSimpleNotification('Error loading artifact version', 'error', 3000);
313
+ this.isLoading = false;
314
+ }
315
+ }
316
+ });
317
+ }
318
+ /**
319
+ * Creates the report component using the current artifact version Configuration
320
+ */
321
+ createReportComponent() {
322
+ return __awaiter(this, void 0, void 0, function* () {
323
+ var _a;
324
+ if (!this.reportContainer || !this.artifactVersion) {
325
+ return;
326
+ }
327
+ // Clear any existing component
328
+ this.destroyReportComponent();
329
+ this.reportContainer.clear();
330
+ try {
331
+ // Load conversation detail record to get AI message
332
+ yield this.loadConversationDetail();
333
+ // Create the report component based on Configuration
334
+ const componentFactory = this.componentFactoryResolver.resolveComponentFactory(SkipDynamicReportWrapperComponent);
335
+ this.reportComponentRef = this.reportContainer.createComponent(componentFactory);
336
+ if (this.reportComponentRef) {
337
+ const instance = this.reportComponentRef.instance;
338
+ // Initialize from AI message or Configuration
339
+ let configData = null;
340
+ if (this.conversationDetailRecord &&
341
+ this.conversationDetailRecord.Role.trim().toLowerCase() === 'ai' &&
342
+ ((_a = this.conversationDetailRecord.ID) === null || _a === void 0 ? void 0 : _a.length) > 0) {
343
+ try {
344
+ const resultObject = JSON.parse(this.conversationDetailRecord.Message);
345
+ if (resultObject.success && resultObject.responsePhase === SkipResponsePhase.analysis_complete) {
346
+ // Use the Skip API response data directly
347
+ configData = resultObject;
348
+ }
349
+ }
350
+ catch (parseErr) {
351
+ LogError('Error parsing AI message', parseErr instanceof Error ? parseErr.message : String(parseErr));
352
+ }
353
+ }
354
+ // If we couldn't get data from AI message, try using the artifact version Configuration
355
+ if (!configData) {
356
+ try {
357
+ if (typeof this.artifactVersion.Configuration === 'string') {
358
+ configData = JSON.parse(this.artifactVersion.Configuration);
359
+ }
360
+ else {
361
+ // If it's already an object, use it directly
362
+ configData = this.artifactVersion.Configuration;
363
+ }
364
+ }
365
+ catch (parseErr) {
366
+ LogError('Error parsing artifact configuration', parseErr instanceof Error ? parseErr.message : String(parseErr));
367
+ configData = null;
368
+ }
369
+ }
370
+ if (!configData) {
371
+ throw new Error('No valid configuration data found');
372
+ }
373
+ // Set properties on the report component
374
+ instance.SkipData = configData;
375
+ instance.Provider = this.ProviderToUse;
376
+ instance.RunViewProvider = this.RunViewToUse;
377
+ // Set up event handlers
378
+ instance.NavigateToMatchingReport.subscribe((reportID) => {
379
+ this.NavigateToMatchingReport.emit(reportID); // bubble up
380
+ });
381
+ instance.NewReportCreated.subscribe((reportID) => {
382
+ this.NewReportCreated.emit(reportID); // bubble up
383
+ });
384
+ instance.DrillDownEvent.subscribe((drillDownInfo) => {
385
+ this.DrillDownEvent.emit(drillDownInfo); // bubble up
386
+ });
387
+ // Set additional properties
388
+ if (this.DataContext) {
389
+ instance.DataContext = this.DataContext;
390
+ }
391
+ instance.AllowDrillDown = false; // Disable drill-down in artifact viewer for simplicity
392
+ // Set conversation info if available
393
+ if (this.conversationDetailRecord) {
394
+ instance.ConversationID = this.conversationDetailRecord.ConversationID;
395
+ instance.ConversationDetailID = this.conversationDetailRecord.ID;
396
+ }
397
+ }
398
+ }
399
+ catch (err) {
400
+ LogError('Error creating report component', err instanceof Error ? err.message : String(err));
401
+ this.error = 'Failed to create artifact viewer component: ' + (err instanceof Error ? err.message : String(err));
402
+ }
403
+ });
404
+ }
405
+ /**
406
+ * Loads the conversation detail record associated with this artifact
407
+ */
408
+ loadConversationDetail() {
409
+ return __awaiter(this, void 0, void 0, function* () {
410
+ if (!this.artifact || !this.artifact.ID) {
411
+ return;
412
+ }
413
+ try {
414
+ // Get the conversation detail record
415
+ const runView = new RunView(this.RunViewToUse);
416
+ const detailsResult = yield runView.RunView({
417
+ EntityName: 'Conversation Details',
418
+ ResultType: 'entity_object',
419
+ ExtraFilter: `ArtifactID = '${this.artifact.ID}' ${this.artifactVersion ? `AND ArtifactVersionID = '${this.artifactVersion.ID}'` : ''}`,
420
+ OrderBy: '__mj_CreatedAt DESC' // Get most recent first
421
+ });
422
+ if (detailsResult && detailsResult.Success && detailsResult.Results.length > 0) {
423
+ this.conversationDetailRecord = detailsResult.Results[0];
424
+ }
425
+ }
426
+ catch (err) {
427
+ LogError('Error loading conversation detail for artifact', err instanceof Error ? err.message : String(err));
428
+ // Don't set an error here, as this is non-critical - we can still try to use Configuration
429
+ }
430
+ });
431
+ }
432
+ /**
433
+ * Destroys the current report component if it exists
434
+ */
435
+ destroyReportComponent() {
436
+ if (this.reportComponentRef) {
437
+ this.reportComponentRef.destroy();
438
+ this.reportComponentRef = null;
439
+ }
440
+ }
441
+ get artifactTitle() {
442
+ return this.artifact ? this.artifact.Name : 'Loading...';
443
+ }
444
+ get artifactTypeName() {
445
+ return this.artifactType ? this.artifactType.Name : '';
446
+ }
447
+ get isJson() {
448
+ return this.contentType.includes('json');
449
+ }
450
+ get isMarkdown() {
451
+ return this.contentType.includes('markdown');
452
+ }
453
+ get isCode() {
454
+ return this.contentType.includes('javascript') ||
455
+ this.contentType.includes('python') ||
456
+ this.contentType.includes('java') ||
457
+ this.contentType.includes('csharp') ||
458
+ this.contentType.includes('sql') ||
459
+ this.contentType.includes('typescript');
460
+ }
461
+ get isHtml() {
462
+ return this.contentType.includes('html');
463
+ }
464
+ get isPlainText() {
465
+ return this.contentType.includes('text/plain');
466
+ }
467
+ }
468
+ SkipArtifactViewerComponent.ɵfac = function SkipArtifactViewerComponent_Factory(t) { return new (t || SkipArtifactViewerComponent)(i0.ɵɵdirectiveInject(i1.MJNotificationService), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Injector)); };
469
+ SkipArtifactViewerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SkipArtifactViewerComponent, selectors: [["skip-artifact-viewer"]], viewQuery: function SkipArtifactViewerComponent_Query(rf, ctx) { if (rf & 1) {
470
+ i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
471
+ } if (rf & 2) {
472
+ let _t;
473
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.reportContainer = _t.first);
474
+ } }, inputs: { ArtifactID: "ArtifactID", ArtifactVersionID: "ArtifactVersionID", DataContext: "DataContext" }, outputs: { NavigateToMatchingReport: "NavigateToMatchingReport", NewReportCreated: "NewReportCreated", DrillDownEvent: "DrillDownEvent" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 14, vars: 5, consts: [["reportContainer", ""], [1, "skip-artifact-viewer-container"], [1, "skip-artifact-viewer-header"], [1, "artifact-info"], [1, "artifact-title"], [1, "artifact-type"], [1, "artifact-description"], [1, "version-selector"], [1, "skip-artifact-viewer-content"], [1, "loading-container"], [1, "error-container"], [1, "empty-state"], ["for", "version-dropdown"], ["id", "version-dropdown", 3, "ngModelChange", "change", "ngModel"], [3, "value"], ["size", "large"], [1, "loading-text"], [1, "error-icon"], [1, "fa-solid", "fa-exclamation-circle"], [1, "error-message"], [1, "empty-icon"], [1, "fa-solid", "fa-file-alt"], [1, "empty-message"], [1, "report-container"], [1, "artifact-metadata"], [1, "metadata-item"], [1, "metadata-label"], [1, "metadata-value"]], template: function SkipArtifactViewerComponent_Template(rf, ctx) { if (rf & 1) {
475
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "h3", 4);
476
+ i0.ɵɵtext(4);
477
+ i0.ɵɵelementEnd();
478
+ i0.ɵɵelementStart(5, "span", 5);
479
+ i0.ɵɵtext(6);
480
+ i0.ɵɵelementEnd();
481
+ i0.ɵɵtemplate(7, SkipArtifactViewerComponent_Conditional_7_Template, 3, 1, "div", 6);
482
+ i0.ɵɵelementEnd();
483
+ i0.ɵɵtemplate(8, SkipArtifactViewerComponent_Conditional_8_Template, 6, 1, "div", 7);
484
+ i0.ɵɵelementEnd();
485
+ i0.ɵɵelementStart(9, "div", 8);
486
+ i0.ɵɵtemplate(10, SkipArtifactViewerComponent_Conditional_10_Template, 4, 0, "div", 9)(11, SkipArtifactViewerComponent_Conditional_11_Template, 5, 1, "div", 10)(12, SkipArtifactViewerComponent_Conditional_12_Template, 5, 0, "div", 11)(13, SkipArtifactViewerComponent_Conditional_13_Template, 3, 1);
487
+ i0.ɵɵelementEnd()();
488
+ } if (rf & 2) {
489
+ i0.ɵɵadvance(4);
490
+ i0.ɵɵtextInterpolate(ctx.artifactTitle);
491
+ i0.ɵɵadvance(2);
492
+ i0.ɵɵtextInterpolate(ctx.artifactTypeName);
493
+ i0.ɵɵadvance();
494
+ i0.ɵɵconditional((ctx.artifact.Description == null ? null : ctx.artifact.Description.trim().length) > 0 ? 7 : -1);
495
+ i0.ɵɵadvance();
496
+ i0.ɵɵconditional(ctx.artifactVersions && ctx.artifactVersions.length > 0 ? 8 : -1);
497
+ i0.ɵɵadvance(2);
498
+ i0.ɵɵconditional(ctx.isLoading ? 10 : ctx.error ? 11 : !ctx.artifact ? 12 : 13);
499
+ } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoaderComponent, i4.LabelDirective, i5.DatePipe], styles: [".skip-artifact-viewer-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.skip-artifact-viewer-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n border-bottom: 1px solid #eee;\n background-color: #fafafa;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.version-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.version-selector[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #555;\n}\n\n.version-selector[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid #ccc;\n background-color: white;\n font-size: 13px;\n}\n\n.report-container[_ngcontent-%COMP%] {\n margin-top: 16px;\n width: 100%;\n}\n\n.artifact-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.artifact-title[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n}\n\n.artifact-type[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #666;\n}\n\n.skip-artifact-viewer-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: auto;\n padding: 16px;\n}\n\n.content-container[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n background-color: #fff;\n border-radius: 6px;\n border: 1px solid #eee;\n overflow: auto;\n}\n\n.markdown-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.code-content[_ngcontent-%COMP%], .json-content[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.code-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%], .json-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n font-family: 'Monaco', 'Menlo', 'Consolas', monospace;\n font-size: 14px;\n line-height: 1.4;\n background-color: #f5f7f9;\n border-radius: 4px;\n overflow: auto;\n white-space: pre-wrap;\n}\n\n.text-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n padding: 16px;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n white-space: pre-wrap;\n}\n\n.html-content[_ngcontent-%COMP%] {\n padding: 16px;\n}\n\n.artifact-description[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 16px;\n background-color: #f9f9f9;\n border-radius: 6px;\n}\n\n.artifact-description[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #555;\n}\n\n.artifact-description[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: #333;\n}\n\n.artifact-metadata[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.metadata-item[_ngcontent-%COMP%] {\n display: flex;\n margin-bottom: 4px;\n}\n\n.metadata-label[_ngcontent-%COMP%] {\n width: 80px;\n font-weight: 500;\n color: #555;\n}\n\n.metadata-value[_ngcontent-%COMP%] {\n color: #333;\n}\n\n.loading-container[_ngcontent-%COMP%], .error-container[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 200px;\n text-align: center;\n}\n\n.loading-text[_ngcontent-%COMP%] {\n margin-top: 16px;\n font-size: 14px;\n color: #666;\n}\n\n.error-icon[_ngcontent-%COMP%], .empty-icon[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 16px;\n}\n\n.error-icon[_ngcontent-%COMP%] {\n color: #e33d3d;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n color: #aaa;\n}\n\n.error-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #e33d3d;\n max-width: 300px;\n}\n\n.empty-message[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #888;\n}"] });
500
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SkipArtifactViewerComponent, [{
501
+ type: Component,
502
+ args: [{ selector: 'skip-artifact-viewer', template: "<div class=\"skip-artifact-viewer-container\">\n <div class=\"skip-artifact-viewer-header\">\n <div class=\"artifact-info\">\n <h3 class=\"artifact-title\">{{ artifactTitle }}</h3>\n <span class=\"artifact-type\">{{ artifactTypeName }}</span>\n @if (artifact.Description?.trim().length > 0) {\n <div class=\"artifact-description\">\n <p>{{ artifact.Description }}</p>\n </div>\n }\n </div>\n\n @if (artifactVersions && artifactVersions.length > 0) {\n <div class=\"version-selector\">\n <label for=\"version-dropdown\">Version:</label>\n <select id=\"version-dropdown\" [(ngModel)]=\"selectedVersionId\" (change)=\"onVersionChange()\">\n @for (version of artifactVersions; track version.ID) {\n <option [value]=\"version.ID\">{{ version.Version }}</option>\n }\n </select>\n </div>\n }\n </div>\n\n <div class=\"skip-artifact-viewer-content\">\n @if (isLoading) {\n <div class=\"loading-container\">\n <kendo-loader size=\"large\"></kendo-loader>\n <div class=\"loading-text\">Loading artifact...</div>\n </div>\n } @else if (error) {\n <div class=\"error-container\">\n <div class=\"error-icon\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n </div>\n <div class=\"error-message\">{{ error }}</div>\n </div>\n } @else if (!artifact) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-file-alt\"></i>\n </div>\n <div class=\"empty-message\">No artifact selected</div>\n </div>\n } @else {\n <div class=\"report-container\" #reportContainer>\n <!-- The dynamic report component will be inserted here -->\n </div>\n\n @if (artifactVersion) {\n <div class=\"artifact-metadata\">\n @if (artifactVersion.CreatedAt) {\n <div class=\"metadata-item\">\n <span class=\"metadata-label\">Created:</span>\n <span class=\"metadata-value\">{{ artifactVersion.CreatedAt | date:'medium' }}</span>\n </div>\n }\n </div>\n }\n }\n </div>\n</div>", styles: [".skip-artifact-viewer-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n\n.skip-artifact-viewer-header {\n padding: 12px 16px;\n border-bottom: 1px solid #eee;\n background-color: #fafafa;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.version-selector {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.version-selector label {\n font-size: 13px;\n color: #555;\n}\n\n.version-selector select {\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid #ccc;\n background-color: white;\n font-size: 13px;\n}\n\n.report-container {\n margin-top: 16px;\n width: 100%;\n}\n\n.artifact-info {\n display: flex;\n flex-direction: column;\n}\n\n.artifact-title {\n margin: 0 0 4px 0;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n}\n\n.artifact-type {\n font-size: 12px;\n color: #666;\n}\n\n.skip-artifact-viewer-content {\n flex: 1;\n overflow: auto;\n padding: 16px;\n}\n\n.content-container {\n margin-bottom: 16px;\n background-color: #fff;\n border-radius: 6px;\n border: 1px solid #eee;\n overflow: auto;\n}\n\n.markdown-content {\n padding: 16px;\n}\n\n.code-content, .json-content {\n padding: 0;\n}\n\n.code-content pre, .json-content pre {\n margin: 0;\n padding: 16px;\n font-family: 'Monaco', 'Menlo', 'Consolas', monospace;\n font-size: 14px;\n line-height: 1.4;\n background-color: #f5f7f9;\n border-radius: 4px;\n overflow: auto;\n white-space: pre-wrap;\n}\n\n.text-content pre {\n margin: 0;\n padding: 16px;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n white-space: pre-wrap;\n}\n\n.html-content {\n padding: 16px;\n}\n\n.artifact-description {\n margin-top: 16px;\n padding: 16px;\n background-color: #f9f9f9;\n border-radius: 6px;\n}\n\n.artifact-description h4 {\n margin: 0 0 8px 0;\n font-size: 14px;\n font-weight: 600;\n color: #555;\n}\n\n.artifact-description p {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n color: #333;\n}\n\n.artifact-metadata {\n margin-top: 16px;\n padding: 12px 16px;\n background-color: #f5f5f5;\n border-radius: 6px;\n font-size: 13px;\n}\n\n.metadata-item {\n display: flex;\n margin-bottom: 4px;\n}\n\n.metadata-label {\n width: 80px;\n font-weight: 500;\n color: #555;\n}\n\n.metadata-value {\n color: #333;\n}\n\n.loading-container, .error-container, .empty-state {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 200px;\n text-align: center;\n}\n\n.loading-text {\n margin-top: 16px;\n font-size: 14px;\n color: #666;\n}\n\n.error-icon, .empty-icon {\n font-size: 32px;\n margin-bottom: 16px;\n}\n\n.error-icon {\n color: #e33d3d;\n}\n\n.empty-icon {\n color: #aaa;\n}\n\n.error-message {\n font-size: 14px;\n color: #e33d3d;\n max-width: 300px;\n}\n\n.empty-message {\n font-size: 14px;\n color: #888;\n}"] }]
503
+ }], () => [{ type: i1.MJNotificationService }, { type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }], { ArtifactID: [{
504
+ type: Input
505
+ }], ArtifactVersionID: [{
506
+ type: Input
507
+ }], DataContext: [{
508
+ type: Input
509
+ }], reportContainer: [{
510
+ type: ViewChild,
511
+ args: ['reportContainer', { read: ViewContainerRef, static: false }]
512
+ }], NavigateToMatchingReport: [{
513
+ type: Output
514
+ }], NewReportCreated: [{
515
+ type: Output
516
+ }], DrillDownEvent: [{
517
+ type: Output
518
+ }] }); })();
519
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SkipArtifactViewerComponent, { className: "SkipArtifactViewerComponent", filePath: "src/lib/artifacts/skip-artifact-viewer.component.ts", lineNumber: 17 }); })();
520
+ //# sourceMappingURL=skip-artifact-viewer.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-artifact-viewer.component.js","sourceRoot":"","sources":["../../../src/lib/artifacts/skip-artifact-viewer.component.ts","../../../src/lib/artifacts/skip-artifact-viewer.component.html"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAoC,SAAS,EAAE,gBAAgB,EAAmE,MAAM,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;AAE1N,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAE,iCAAiC,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,EAAoD,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;ICDvG,AADF,8BAAkC,QAC7B;IAAA,YAA0B;IAC/B,AAD+B,iBAAI,EAC7B;;;IADD,eAA0B;IAA1B,iDAA0B;;;IAU3B,kCAA6B;IAAA,YAAqB;IAAA,iBAAS;;;IAAnD,qCAAoB;IAAC,cAAqB;IAArB,wCAAqB;;;;IAHtD,AADF,8BAA8B,gBACE;IAAA,wBAAQ;IAAA,iBAAQ;IAC9C,kCAA2F;IAA7D,sUAA+B;IAAC,iMAAU,wBAAiB,KAAC;IACxF,gHAEC;IAEL,AADE,iBAAS,EACL;;;IAL0B,eAA+B;IAA/B,wDAA+B;IAC3D,cAEC;IAFD,sCAEC;;;IAQL,8BAA+B;IAC7B,mCAA0C;IAC1C,+BAA0B;IAAA,mCAAmB;IAC/C,AAD+C,iBAAM,EAC/C;;;IAGJ,AADF,+BAA6B,cACH;IACtB,wBAA8C;IAChD,iBAAM;IACN,+BAA2B;IAAA,YAAW;IACxC,AADwC,iBAAM,EACxC;;;IADuB,eAAW;IAAX,kCAAW;;;IAItC,AADF,+BAAyB,cACC;IACtB,wBAAoC;IACtC,iBAAM;IACN,+BAA2B;IAAA,oCAAoB;IACjD,AADiD,iBAAM,EACjD;;;IAUE,AADF,+BAA2B,eACI;IAAA,wBAAQ;IAAA,iBAAO;IAC5C,gCAA6B;IAAA,YAA+C;;IAC9E,AAD8E,iBAAO,EAC/E;;;IADyB,eAA+C;IAA/C,sFAA+C;;;IAJlF,+BAA+B;IAC7B,kHAAiC;IAMnC,iBAAM;;;IANJ,cAKC;IALD,2DAKC;;;IAXL,6BAEM;IAEN,oGAAuB;;;IAAvB,eASC;IATD,iDASC;;AD1CP,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IAkCnE,YACU,mBAA0C,EAC1C,wBAAkD,EAClD,KAAwB,EACxB,QAAkB;QAC1B,KAAK,EAAE,CAAC;QAJA,wBAAmB,GAAnB,mBAAmB,CAAuB;QAC1C,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,UAAK,GAAL,KAAK,CAAmB;QACxB,aAAQ,GAAR,QAAQ,CAAU;QArCZ,eAAU,GAAW,EAAE,CAAC;QACxB,sBAAiB,GAAW,EAAE,CAAC;QAC/B,gBAAW,GAAuB,IAAI,CAAC;QAIvD;;WAEG;QACO,6BAAwB,GAAG,IAAI,YAAY,EAAU,CAAC;QAEhE;;WAEG;QACO,qBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;QAExD;;WAEG;QACO,mBAAc,GAAG,IAAI,YAAY,EAAiB,CAAC;QAEtD,cAAS,GAAY,KAAK,CAAC;QAC3B,aAAQ,GAAQ,IAAI,CAAC;QACrB,oBAAe,GAAQ,IAAI,CAAC;QAC5B,iBAAY,GAAQ,IAAI,CAAC;QACzB,gBAAW,GAAW,EAAE,CAAC;QACzB,mBAAc,GAAQ,IAAI,CAAC;QAC3B,UAAK,GAAkB,IAAI,CAAC;QAC5B,qBAAgB,GAAU,EAAE,CAAC;QAC7B,sBAAiB,GAAW,EAAE,CAAC;QAC9B,uBAAkB,GAA6B,IAAI,CAAC;QACpD,6BAAwB,GAAoC,IAAI,CAAC;IAQzE,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC;YAC7D,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;YAChF,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,eAAe;QACb,6FAA6F;QAC7F,sEAAsE;QACtE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1C,sEAAsE;YACtE,wDAAwD;YACxD,UAAU,CAAC,GAAS,EAAE;gBACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,8EAA8E;oBAC9E,UAAU,CAAC,GAAS,EAAE;wBACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBACrC,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,8DAA8D,CAAC,CAAC;wBAC3E,CAAC;oBACH,CAAC,CAAA,EAAE,GAAG,CAAC,CAAC;gBACV,CAAC;YACH,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;QACR,CAAC;IACH,CAAC;IAEa,YAAY;;YACxB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;gBAEpC,oBAAoB;gBACpB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,eAAe,CAA6B,4BAA4B,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtI,IAAI,CAAC,CAAA,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrF,CAAC;gBAED,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;gBAE/B,yBAAyB;gBACzB,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAqB,oBAAoB,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC1H,IAAI,CAAC,CAAA,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAE,CAAC;oBACjE,MAAM,IAAI,KAAK,CAAC,iCAAiC,kBAAkB,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9F,CAAC;gBAED,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;gBACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBAEjD,sDAAsD;gBACtD,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAElC,mFAAmF;gBACnF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,CAAC;qBAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,2EAA2E;oBAC3E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAChD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAChD,CAAC;gBAED,oGAAoG;gBACpG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,8CAA8C;gBAC1E,UAAU,CAAC,GAAG,EAAE;oBACd,qCAAqC;oBACrC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;wBACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,+DAA+D;wBAC/D,QAAQ,CAAC,mEAAmE,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC,EAAE,CAAC,CAAC,CAAC;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,wBAAwB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC;gBACnF,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAC/C,wBAAwB,EACxB,OAAO,EACP,IAAI,CACL,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACW,oBAAoB;;YAChC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAoC;gBAC7E,UAAU,EAAE,oCAAoC;gBAChD,UAAU,EAAE,eAAe;gBAC3B,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,6BAA6B,IAAI,CAAC,UAAU,GAAG;aAC7D,CAAC,CAAC;YAEH,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/E,IAAI,CAAC,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACK,2BAA2B,CAAC,SAAiB;QACnD,wDAAwD;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,YAAY,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACU,eAAe;;YAC1B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC;oBACH,oCAAoC;oBACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAE9B,4BAA4B;oBAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAEzD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,8CAA8C;oBAE1E,0EAA0E;oBAC1E,UAAU,CAAC,GAAS,EAAE;wBACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;4BACzB,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBACrC,CAAC;6BAAM,CAAC;4BACN,8EAA8E;4BAC9E,UAAU,CAAC,GAAS,EAAE;gCACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oCACzB,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;gCACrC,CAAC;qCAAM,CAAC;oCACN,QAAQ,CAAC,uDAAuD,CAAC,CAAC;gCACpE,CAAC;4BACH,CAAC,CAAA,EAAE,GAAG,CAAC,CAAC;wBACV,CAAC;oBACH,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;gBACR,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,iCAAiC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9F,IAAI,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,CAAC;oBAC3F,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAC/C,gCAAgC,EAChC,OAAO,EACP,IAAI,CACL,CAAC;oBACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACW,qBAAqB;;;YACjC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,oDAAoD;gBACpD,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAEpC,qDAAqD;gBACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,iCAAiC,CAAC,CAAC;gBAClH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAEjF,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oBAElD,8CAA8C;oBAC9C,IAAI,UAAU,GAAG,IAAI,CAAC;oBAEtB,IAAI,IAAI,CAAC,wBAAwB;wBAC7B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI;wBAChE,CAAA,MAAA,IAAI,CAAC,wBAAwB,CAAC,EAAE,0CAAE,MAAM,IAAG,CAAC,EAAE,CAAC;wBACjD,IAAI,CAAC;4BACH,MAAM,YAAY,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;4BAExF,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,aAAa,KAAK,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;gCAC/F,0CAA0C;gCAC1C,UAAU,GAAoC,YAAY,CAAC;4BAC7D,CAAC;wBACH,CAAC;wBAAC,OAAO,QAAQ,EAAE,CAAC;4BAClB,QAAQ,CAAC,0BAA0B,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACxG,CAAC;oBACH,CAAC;oBAED,wFAAwF;oBACxF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,IAAI,CAAC;4BACH,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;gCAC3D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;4BAC9D,CAAC;iCAAM,CAAC;gCACN,6CAA6C;gCAC7C,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;4BAClD,CAAC;wBACH,CAAC;wBAAC,OAAO,QAAQ,EAAE,CAAC;4BAClB,QAAQ,CAAC,sCAAsC,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAClH,UAAU,GAAG,IAAI,CAAC;wBACpB,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBACvD,CAAC;oBAED,yCAAyC;oBACzC,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;oBAC/B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;oBACvC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;oBAE7C,wBAAwB;oBACxB,QAAQ,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,QAAgB,EAAE,EAAE;wBAC/D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;oBAC5D,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAgB,EAAE,EAAE;wBACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;oBACpD,CAAC,CAAC,CAAC;oBAEH,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,aAAkB,EAAE,EAAE;wBACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;oBACvD,CAAC,CAAC,CAAC;oBAEH,4BAA4B;oBAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC1C,CAAC;oBAED,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,uDAAuD;oBAExF,qCAAqC;oBACrC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;wBAClC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC;wBACvE,QAAQ,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBACnE,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,iCAAiC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9F,IAAI,CAAC,KAAK,GAAG,8CAA8C,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACnH,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACW,sBAAsB;;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,qCAAqC;gBACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAA2B;oBACpE,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,eAAe;oBAC3B,WAAW,EAAE,iBAAiB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvI,OAAO,EAAE,qBAAqB,CAAC,wBAAwB;iBACxD,CAAC,CAAC;gBAEH,IAAI,aAAa,IAAI,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/E,IAAI,CAAC,wBAAwB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,gDAAgD,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7G,2FAA2F;YAC7F,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAC3D,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;;sGAlYU,2BAA2B;8EAA3B,2BAA2B;+BAKA,gBAAgB;;;;;QClBlD,AADF,AADF,AADF,8BAA4C,aACD,aACZ,YACE;QAAA,YAAmB;QAAA,iBAAK;QACnD,+BAA4B;QAAA,YAAsB;QAAA,iBAAO;QACzD,oFAA+C;QAKjD,iBAAM;QAEN,oFAAuD;QAUzD,iBAAM;QAEN,8BAA0C;QAoBtC,AAPA,AAPA,AALF,sFAAiB,0EAKG,0EAOI,+DAOf;QAiBb,AADE,iBAAM,EACF;;QA1D2B,eAAmB;QAAnB,uCAAmB;QAClB,eAAsB;QAAtB,0CAAsB;QAClD,cAIC;QAJD,iHAIC;QAGH,cASC;QATD,kFASC;QAID,eAkCC;QAlCD,+EAkCC;;iFD3CQ,2BAA2B;cALvC,SAAS;2BACE,sBAAsB;oJAKhB,UAAU;kBAAzB,KAAK;YACU,iBAAiB;kBAAhC,KAAK;YACU,WAAW;kBAA1B,KAAK;YAEmE,eAAe;kBAAvF,SAAS;mBAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE;YAK7D,wBAAwB;kBAAjC,MAAM;YAKG,gBAAgB;kBAAzB,MAAM;YAKG,cAAc;kBAAvB,MAAM;;kFApBI,2BAA2B"}
@@ -0,0 +1,25 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
+ import { MJNotificationService } from '@memberjunction/ng-notifications';
4
+ import * as i0 from "@angular/core";
5
+ export declare class SkipArtifactsCounterComponent extends BaseAngularComponent implements OnChanges {
6
+ private notificationService;
7
+ ConversationID: string;
8
+ ArtifactSelected: EventEmitter<any>;
9
+ isLoading: boolean;
10
+ showDropdown: boolean;
11
+ artifacts: any[];
12
+ artifactCount: number;
13
+ error: string | null;
14
+ constructor(notificationService: MJNotificationService);
15
+ ngOnChanges(changes: SimpleChanges): void;
16
+ private loadArtifacts;
17
+ private loadArtifactTypes;
18
+ toggleDropdown(event: MouseEvent): void;
19
+ closeDropdown(): void;
20
+ selectArtifact(artifact: any, event: MouseEvent): void;
21
+ getIconClass(contentType: string): string;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<SkipArtifactsCounterComponent, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<SkipArtifactsCounterComponent, "skip-artifacts-counter", never, { "ConversationID": { "alias": "ConversationID"; "required": false; }; }, { "ArtifactSelected": "ArtifactSelected"; }, never, never, false, never>;
24
+ }
25
+ //# sourceMappingURL=skip-artifacts-counter.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip-artifacts-counter.component.d.ts","sourceRoot":"","sources":["../../../src/lib/artifacts/skip-artifacts-counter.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;;AAEzE,qBAKa,6BAA8B,SAAQ,oBAAqB,YAAW,SAAS;IAU9E,OAAO,CAAC,mBAAmB;IATvB,cAAc,EAAE,MAAM,CAAM;IAC3B,gBAAgB,oBAA2B;IAErD,SAAS,EAAE,OAAO,CAAS;IAC3B,YAAY,EAAE,OAAO,CAAS;IAC9B,SAAS,EAAE,GAAG,EAAE,CAAM;IACtB,aAAa,EAAE,MAAM,CAAK;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAEf,mBAAmB,EAAE,qBAAqB;IAI9D,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;YAM3B,aAAa;YAkDb,iBAAiB;IAkCxB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAUvC,aAAa,IAAI,IAAI;IAIrB,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAMtD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;yCA5HrC,6BAA6B;2CAA7B,6BAA6B;CA4IzC"}