@memberjunction/ng-conversations 5.28.0 → 5.30.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 (35) hide show
  1. package/dist/__tests__/attachment-badge.test.d.ts +2 -0
  2. package/dist/__tests__/attachment-badge.test.d.ts.map +1 -0
  3. package/dist/__tests__/attachment-badge.test.js +66 -0
  4. package/dist/__tests__/attachment-badge.test.js.map +1 -0
  5. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
  6. package/dist/lib/components/collection/collection-view.component.js +9 -1
  7. package/dist/lib/components/collection/collection-view.component.js.map +1 -1
  8. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +56 -39
  9. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  10. package/dist/lib/components/conversation/conversation-chat-area.component.js +348 -346
  11. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  12. package/dist/lib/components/conversation/conversation-list.component.d.ts +4 -0
  13. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  14. package/dist/lib/components/conversation/conversation-list.component.js +108 -65
  15. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  16. package/dist/lib/components/message/message-input-box.component.d.ts +7 -1
  17. package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
  18. package/dist/lib/components/message/message-input-box.component.js +10 -4
  19. package/dist/lib/components/message/message-input-box.component.js.map +1 -1
  20. package/dist/lib/components/message/message-item.component.d.ts +20 -4
  21. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  22. package/dist/lib/components/message/message-item.component.js +154 -131
  23. package/dist/lib/components/message/message-item.component.js.map +1 -1
  24. package/dist/lib/conversations.module.d.ts +7 -6
  25. package/dist/lib/conversations.module.d.ts.map +1 -1
  26. package/dist/lib/conversations.module.js +5 -0
  27. package/dist/lib/conversations.module.js.map +1 -1
  28. package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
  29. package/dist/lib/services/conversation-attachment.service.js +29 -2
  30. package/dist/lib/services/conversation-attachment.service.js.map +1 -1
  31. package/dist/lib/util/attachment-badge.d.ts +19 -0
  32. package/dist/lib/util/attachment-badge.d.ts.map +1 -0
  33. package/dist/lib/util/attachment-badge.js +41 -0
  34. package/dist/lib/util/attachment-badge.js.map +1 -0
  35. package/package.json +22 -21
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=attachment-badge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-badge.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/attachment-badge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ShortBadgeText, BadgeTextForAttachment } from '../lib/util/attachment-badge';
3
+ function makeAttachment(overrides) {
4
+ return {
5
+ id: 'a1',
6
+ type: 'Document',
7
+ mimeType: 'text/plain',
8
+ fileName: null,
9
+ sizeBytes: 0,
10
+ ...overrides
11
+ };
12
+ }
13
+ describe('ShortBadgeText', () => {
14
+ it('returns "FILE" for empty or whitespace-only input', () => {
15
+ expect(ShortBadgeText('')).toBe('FILE');
16
+ expect(ShortBadgeText(' ')).toBe('FILE');
17
+ expect(ShortBadgeText(null)).toBe('FILE');
18
+ expect(ShortBadgeText(undefined)).toBe('FILE');
19
+ });
20
+ it('uppercases names that already fit within 10 characters', () => {
21
+ expect(ShortBadgeText('Report')).toBe('REPORT');
22
+ expect(ShortBadgeText('Snapshot')).toBe('SNAPSHOT');
23
+ expect(ShortBadgeText('json')).toBe('JSON');
24
+ });
25
+ it('takes the last word when the full name is too long', () => {
26
+ expect(ShortBadgeText('Data Snapshot')).toBe('SNAPSHOT');
27
+ expect(ShortBadgeText('Business Intelligence Dashboard')).toBe('DASHBOARD');
28
+ expect(ShortBadgeText('Skip Report')).toBe('REPORT');
29
+ });
30
+ it('truncates with ellipsis when the last word is still too long', () => {
31
+ expect(ShortBadgeText('Monstrouslylongword')).toBe('MONSTROUS…');
32
+ });
33
+ it('trims surrounding whitespace before measuring length', () => {
34
+ expect(ShortBadgeText(' Report ')).toBe('REPORT');
35
+ });
36
+ });
37
+ describe('BadgeTextForAttachment', () => {
38
+ it('prefers the artifact type name over the file extension', () => {
39
+ const a = makeAttachment({
40
+ artifactTypeName: 'Data Snapshot',
41
+ fileName: 'snapshot.json'
42
+ });
43
+ expect(BadgeTextForAttachment(a)).toBe('SNAPSHOT');
44
+ });
45
+ it('uses the file extension when no artifact type is present', () => {
46
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: 'Q1_deck.pdf' }))).toBe('PDF');
47
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: 'data.csv' }))).toBe('CSV');
48
+ });
49
+ it('uppercases the extension and caps at 10 characters', () => {
50
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: 'weird.abcdefghijklmnop' }))).toBe('ABCDEFGHIJ');
51
+ });
52
+ it('falls back to the mime subtype when the filename has no extension', () => {
53
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: 'noext', mimeType: 'application/pdf' }))).toBe('PDF');
54
+ });
55
+ it('strips mime parameters (e.g. charset) before using as a fallback', () => {
56
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: null, mimeType: 'text/plain; charset=utf-8' }))).toBe('PLAIN');
57
+ });
58
+ it('returns "FILE" when neither extension nor usable mime is available', () => {
59
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: null, mimeType: '' }))).toBe('FILE');
60
+ });
61
+ it('ignores a leading dot filename (e.g. ".gitignore") and falls back to mime', () => {
62
+ // lastIndexOf('.') === 0 → dot is not > 0, so we fall through to mime
63
+ expect(BadgeTextForAttachment(makeAttachment({ fileName: '.gitignore', mimeType: 'text/plain' }))).toBe('PLAIN');
64
+ });
65
+ });
66
+ //# sourceMappingURL=attachment-badge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-badge.test.js","sourceRoot":"","sources":["../../src/__tests__/attachment-badge.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from 'vitest';\nimport { ShortBadgeText, BadgeTextForAttachment } from '../lib/util/attachment-badge';\nimport type { MessageAttachment } from '../lib/components/message/message-item.component';\n\nfunction makeAttachment(overrides: Partial<MessageAttachment>): MessageAttachment {\n return {\n id: 'a1',\n type: 'Document',\n mimeType: 'text/plain',\n fileName: null,\n sizeBytes: 0,\n ...overrides\n } as MessageAttachment;\n}\n\ndescribe('ShortBadgeText', () => {\n it('returns \"FILE\" for empty or whitespace-only input', () => {\n expect(ShortBadgeText('')).toBe('FILE');\n expect(ShortBadgeText(' ')).toBe('FILE');\n expect(ShortBadgeText(null)).toBe('FILE');\n expect(ShortBadgeText(undefined)).toBe('FILE');\n });\n\n it('uppercases names that already fit within 10 characters', () => {\n expect(ShortBadgeText('Report')).toBe('REPORT');\n expect(ShortBadgeText('Snapshot')).toBe('SNAPSHOT');\n expect(ShortBadgeText('json')).toBe('JSON');\n });\n\n it('takes the last word when the full name is too long', () => {\n expect(ShortBadgeText('Data Snapshot')).toBe('SNAPSHOT');\n expect(ShortBadgeText('Business Intelligence Dashboard')).toBe('DASHBOARD');\n expect(ShortBadgeText('Skip Report')).toBe('REPORT');\n });\n\n it('truncates with ellipsis when the last word is still too long', () => {\n expect(ShortBadgeText('Monstrouslylongword')).toBe('MONSTROUS…');\n });\n\n it('trims surrounding whitespace before measuring length', () => {\n expect(ShortBadgeText(' Report ')).toBe('REPORT');\n });\n});\n\ndescribe('BadgeTextForAttachment', () => {\n it('prefers the artifact type name over the file extension', () => {\n const a = makeAttachment({\n artifactTypeName: 'Data Snapshot',\n fileName: 'snapshot.json'\n });\n expect(BadgeTextForAttachment(a)).toBe('SNAPSHOT');\n });\n\n it('uses the file extension when no artifact type is present', () => {\n expect(BadgeTextForAttachment(makeAttachment({ fileName: 'Q1_deck.pdf' }))).toBe('PDF');\n expect(BadgeTextForAttachment(makeAttachment({ fileName: 'data.csv' }))).toBe('CSV');\n });\n\n it('uppercases the extension and caps at 10 characters', () => {\n expect(BadgeTextForAttachment(makeAttachment({ fileName: 'weird.abcdefghijklmnop' }))).toBe('ABCDEFGHIJ');\n });\n\n it('falls back to the mime subtype when the filename has no extension', () => {\n expect(BadgeTextForAttachment(makeAttachment({ fileName: 'noext', mimeType: 'application/pdf' }))).toBe('PDF');\n });\n\n it('strips mime parameters (e.g. charset) before using as a fallback', () => {\n expect(BadgeTextForAttachment(makeAttachment({ fileName: null, mimeType: 'text/plain; charset=utf-8' }))).toBe('PLAIN');\n });\n\n it('returns \"FILE\" when neither extension nor usable mime is available', () => {\n expect(BadgeTextForAttachment(makeAttachment({ fileName: null, mimeType: '' }))).toBe('FILE');\n });\n\n it('ignores a leading dot filename (e.g. \".gitignore\") and falls back to mime', () => {\n // lastIndexOf('.') === 0 → dot is not > 0, so we fall through to mime\n expect(BadgeTextForAttachment(makeAttachment({ fileName: '.gitignore', mimeType: 'text/plain' }))).toBe('PLAIN');\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAA8B,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;AAGnE,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,qBAqHa,uBAAwB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAuB9D,OAAO,CAAC,GAAG;IAtBd,UAAU,EAAG,kBAAkB,CAAC;IAChC,WAAW,EAAG,QAAQ,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAQ;IAG1B,gBAAgB,EAAE,KAAK,CAAC;QAC7B,OAAO,EAAE,uBAAuB,CAAC;QACjC,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC,CAAM;IACD,QAAQ,EAAE,QAAQ,CAAU;IAC5B,MAAM,EAAE,MAAM,CAAU;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAa;IACtD,kBAAkB,UAAS;IAE3B,WAAW;;;QAIhB;gBAEkB,GAAG,EAAE,iBAAiB;IAE1C,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,WAAW;YAOG,aAAa;IAsD3B,OAAO,CAAC,iBAAiB;IAazB,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAIhG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAQ5F,qBAAqB,IAAI,IAAI;IAM7B,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAItF,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;yCA1KzB,uBAAuB;2CAAvB,uBAAuB;CAuNnC"}
1
+ {"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAA8B,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;AAGnE,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,qBAqHa,uBAAwB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAuB9D,OAAO,CAAC,GAAG;IAtBd,UAAU,EAAG,kBAAkB,CAAC;IAChC,WAAW,EAAG,QAAQ,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAQ;IAG1B,gBAAgB,EAAE,KAAK,CAAC;QAC7B,OAAO,EAAE,uBAAuB,CAAC;QACjC,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC,CAAM;IACD,QAAQ,EAAE,QAAQ,CAAU;IAC5B,MAAM,EAAE,MAAM,CAAU;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAa;IACtD,kBAAkB,UAAS;IAE3B,WAAW;;;QAIhB;gBAEkB,GAAG,EAAE,iBAAiB;IAE1C,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,WAAW;YAOG,aAAa;IAsD3B,OAAO,CAAC,iBAAiB;IAazB,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAIhG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAQ5F,qBAAqB,IAAI,IAAI;IAM7B,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAItF,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CvG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;yCArLzB,uBAAuB;2CAAvB,uBAAuB;CAkOnC"}
@@ -200,10 +200,18 @@ export class CollectionViewComponent {
200
200
  ResultType: 'entity_object'
201
201
  }, this.currentUser);
202
202
  if (result.Success && result.Results && result.Results.length > 0) {
203
- // Delete this version association
203
+ // Delete all version associations atomically
204
+ const md = new Metadata();
205
+ const tg = await md.CreateTransactionGroup();
204
206
  for (const joinRecord of result.Results) {
207
+ joinRecord.TransactionGroup = tg;
205
208
  await joinRecord.Delete();
206
209
  }
210
+ const success = await tg.Submit();
211
+ if (!success) {
212
+ MJNotificationService.Instance.CreateSimpleNotification(`Failed to remove ${versionLabel} from collection`, 'error');
213
+ return;
214
+ }
207
215
  await this.loadArtifacts();
208
216
  this.cdr.detectChanges();
209
217
  MJNotificationService.Instance.CreateSimpleNotification(`Removed ${versionLabel} from collection`, 'success', 3000);
@@ -1 +1 @@
1
- {"version":3,"file":"collection-view.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { MJCollectionEntity, MJArtifactEntity, MJArtifactVersionEntity, MJCollectionArtifactEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\ntype ViewMode = 'grid' | 'list';\ntype SortBy = 'name' | 'date' | 'type';\n\n@Component({\n standalone: false,\n selector: 'mj-collection-view',\n template: `\n <div class=\"collection-view\">\n <div class=\"view-header\">\n <h2>{{ collection.Name || 'Collection' }}</h2>\n <div class=\"header-actions\">\n <div class=\"view-mode-toggle\">\n <button\n class=\"mode-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"viewMode = 'grid'\"\n title=\"Grid View\">\n <i class=\"fas fa-grid\"></i>\n </button>\n <button\n class=\"mode-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"viewMode = 'list'\"\n title=\"List View\">\n <i class=\"fas fa-list\"></i>\n </button>\n </div>\n \n <select\n [(ngModel)]=\"sortBy\"\n (ngModelChange)=\"onSortChange()\"\n class=\"mj-select\"\n style=\"width: 150px;\">\n @for (option of sortOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n \n @if (canEdit) {\n <button class=\"btn-add\" (click)=\"onAddArtifact()\" title=\"Add Artifact\">\n <i class=\"fas fa-plus\"></i> Add\n </button>\n }\n </div>\n </div>\n \n <div class=\"view-content\" [class.grid-mode]=\"viewMode === 'grid'\" [class.list-mode]=\"viewMode === 'list'\">\n @if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fas fa-folder-open\"></i>\n <p>This collection is empty</p>\n @if (canEdit) {\n <button class=\"btn-add-primary\" (click)=\"onAddArtifact()\">\n <i class=\"fas fa-plus\"></i> Add Artifact\n </button>\n }\n </div>\n }\n \n @for (item of artifactVersions; track item.version.ID) {\n <mj-collection-artifact-card\n [artifact]=\"item.artifact\"\n [version]=\"item.version\"\n (selected)=\"onArtifactSelected(item)\"\n (viewed)=\"onViewArtifact(item)\"\n (edited)=\"onEditArtifact(item)\"\n (removed)=\"onRemoveArtifact(item)\">\n </mj-collection-artifact-card>\n }\n </div>\n </div>\n \n <!-- Artifact Viewer Panel -->\n @if (showArtifactViewer && selectedArtifactId) {\n <div class=\"artifact-viewer-overlay\" (click)=\"onCloseArtifactViewer()\">\n <div class=\"artifact-viewer-container\" (click)=\"$event.stopPropagation()\">\n <mj-artifact-viewer-panel\n [artifactId]=\"selectedArtifactId\"\n [versionNumber]=\"selectedVersionNumber\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [viewContext]=\"'collection'\"\n [contextCollectionId]=\"collection.ID\"\n (closed)=\"onCloseArtifactViewer()\">\n </mj-artifact-viewer-panel>\n </div>\n </div>\n }\n `,\n styles: [`\n .collection-view { display: flex; flex-direction: column; height: 100%; background: var(--mj-bg-surface); }\n\n .view-header { padding: 20px 24px; border-bottom: 1px solid var(--mj-border-default); display: flex; justify-content: space-between; align-items: center; }\n .view-header h2 { margin: 0; font-size: 20px; flex: 1; }\n\n .header-actions { display: flex; align-items: center; gap: 12px; }\n\n .view-mode-toggle { display: flex; border: 1px solid var(--mj-border-default); border-radius: 4px; overflow: hidden; }\n .mode-btn { padding: 8px 12px; background: var(--mj-bg-surface); border: none; border-right: 1px solid var(--mj-border-default); cursor: pointer; color: var(--mj-text-muted); transition: all 150ms ease; }\n .mode-btn:last-child { border-right: none; }\n .mode-btn:hover { background: var(--mj-bg-surface-sunken); }\n .mode-btn.active { background: var(--mj-brand-primary); color: var(--mj-text-inverse); }\n\n .btn-add { padding: 8px 16px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 6px; }\n .btn-add:hover { background: var(--mj-brand-primary-hover); }\n\n .view-content { flex: 1; overflow-y: auto; padding: 24px; }\n .view-content.grid-mode { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .view-content.list-mode { display: flex; flex-direction: column; gap: 12px; }\n\n .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 64px 24px; color: var(--mj-text-disabled); }\n .empty-state i { font-size: 64px; margin-bottom: 24px; }\n .empty-state p { margin: 0 0 24px 0; font-size: 16px; }\n .btn-add-primary { padding: 12px 24px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; font-size: 14px; display: flex; align-items: center; gap: 8px; }\n .btn-add-primary:hover { background: var(--mj-brand-primary-hover); }\n\n .artifact-viewer-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: var(--mj-bg-overlay); display: flex; align-items: center; justify-content: center; z-index: 10000; }\n .artifact-viewer-container { width: 90%; max-width: 1200px; height: 90vh; background: var(--mj-bg-surface); border-radius: 12px; overflow: hidden; box-shadow: var(--mj-shadow-lg); }\n `]\n})\nexport class CollectionViewComponent implements OnInit, OnChanges, OnDestroy {\n @Input() collection!: MJCollectionEntity;\n @Input() currentUser!: UserInfo;\n @Input() environmentId!: string;\n @Input() canEdit: boolean = true;\n\n // Store versions with parent artifact info for display\n public artifactVersions: Array<{\n version: MJArtifactVersionEntity;\n artifact: MJArtifactEntity;\n }> = [];\n public viewMode: ViewMode = 'grid';\n public sortBy: SortBy = 'date';\n public selectedArtifactId: string | null = null;\n public selectedVersionNumber: number | undefined = undefined;\n public showArtifactViewer = false;\n\n public sortOptions = [\n { label: 'Name', value: 'name' },\n { label: 'Date Modified', value: 'date' },\n { label: 'Type', value: 'type' }\n ];\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.loadArtifacts();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['collection'] && !changes['collection'].firstChange) {\n this.loadArtifacts();\n }\n }\n\n ngOnDestroy() {\n // Close artifact viewer when navigating away from collection\n if (this.showArtifactViewer) {\n this.onCloseArtifactViewer();\n }\n }\n\n private async loadArtifacts(): Promise<void> {\n if (!this.collection) return;\n\n try {\n const rv = new RunView();\n const md = new Metadata();\n\n // Load ALL VERSIONS in this collection (no DISTINCT - each version is separate)\n const versionResult = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ID IN (\n SELECT ca.ArtifactVersionID\n FROM [__mj].[vwCollectionArtifacts] ca\n WHERE ca.CollectionID='${this.collection.ID}'\n )`,\n OrderBy: this.getVersionOrderBy(),\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (versionResult.Success && versionResult.Results) {\n // Get unique artifact IDs\n const artifactIds = [...new Set(versionResult.Results.map(v => v.ArtifactID))];\n\n // Load parent artifact info (just for display metadata - no visibility filtering)\n const artifactMap = new Map<string, MJArtifactEntity>();\n if (artifactIds.length > 0) {\n const artifactFilter = artifactIds.map(id => `ID='${id}'`).join(' OR ');\n const artifactResult = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: artifactFilter,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (artifactResult.Success && artifactResult.Results) {\n artifactResult.Results.forEach(a => artifactMap.set(a.ID, a));\n }\n }\n\n // Combine version + artifact info\n this.artifactVersions = versionResult.Results\n .map(version => ({\n version,\n artifact: artifactMap.get(version.ArtifactID)!\n }))\n .filter(item => item.artifact != null); // Filter out any without parent artifact\n } else {\n this.artifactVersions = [];\n }\n } catch (error) {\n console.error('Failed to load collection artifacts:', error);\n this.artifactVersions = [];\n }\n }\n\n private getVersionOrderBy(): string {\n switch (this.sortBy) {\n case 'name':\n return 'Name ASC, VersionNumber DESC';\n case 'type':\n // Will sort by parent artifact type (handled in template)\n return 'ArtifactID ASC, VersionNumber DESC';\n case 'date':\n default:\n return '__mj_UpdatedAt DESC';\n }\n }\n\n onSortChange(): void {\n this.loadArtifacts();\n }\n\n onArtifactSelected(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n // TODO: Emit event or navigate to artifact detail view\n }\n\n onViewArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n this.selectedArtifactId = item.artifact.ID;\n this.selectedVersionNumber = item.version.VersionNumber;\n // Force change detection to ensure Input bindings propagate before component creation\n this.cdr.detectChanges();\n this.showArtifactViewer = true;\n }\n\n onCloseArtifactViewer(): void {\n this.showArtifactViewer = false;\n this.selectedArtifactId = null;\n this.selectedVersionNumber = undefined;\n }\n\n onEditArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n // TODO: Open artifact editor\n }\n\n async onRemoveArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): Promise<void> {\n const versionLabel = `\"${item.artifact.Name}\" v${item.version.VersionNumber}`;\n if (!confirm(`Remove ${versionLabel} from this collection?`)) return;\n\n try {\n // Delete THIS SPECIFIC VERSION from the collection\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: 'MJ: Collection Artifacts',\n ExtraFilter: `CollectionID='${this.collection.ID}' AND ArtifactVersionID='${item.version.ID}'`,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (result.Success && result.Results && result.Results.length > 0) {\n // Delete this version association\n for (const joinRecord of result.Results) {\n await joinRecord.Delete();\n }\n await this.loadArtifacts();\n this.cdr.detectChanges();\n MJNotificationService.Instance.CreateSimpleNotification(\n `Removed ${versionLabel} from collection`,\n 'success',\n 3000\n );\n }\n } catch (error) {\n console.error('Failed to remove artifact version from collection:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to remove artifact version from collection',\n 'error'\n );\n }\n }\n\n async onAddArtifact(): Promise<void> {\n // TODO: Open artifact picker dialog\n // For now, just show a simple prompt\n const name = prompt('Enter artifact name:');\n if (!name) return;\n\n try {\n // Create new artifact\n const md = new Metadata();\n const artifact = await md.GetEntityObject<MJArtifactEntity>('MJ: Artifacts', this.currentUser);\n\n artifact.Name = name;\n // Type is read-only, set via TypeID instead\n // For now, skip setting type - it has a default\n\n const saved = await artifact.Save();\n if (saved) {\n // Get the latest version of this artifact to add to collection\n const rv = new RunView();\n const versionResult = await rv.RunView({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID='${artifact.ID}'`,\n OrderBy: 'VersionNumber DESC',\n MaxRows: 1,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (!versionResult.Success || !versionResult.Results || versionResult.Results.length === 0) {\n alert('Failed to get artifact version');\n return;\n }\n\n // Add to collection via join table using version ID\n const joinRecord = await md.GetEntityObject<MJCollectionArtifactEntity>('MJ: Collection Artifacts', this.currentUser);\n joinRecord.CollectionID = this.collection.ID;\n joinRecord.ArtifactVersionID = versionResult.Results[0].ID;\n\n await joinRecord.Save();\n await this.loadArtifacts();\n }\n } catch (error) {\n console.error('Failed to add artifact:', error);\n alert('Failed to add artifact');\n }\n }\n}"]}
1
+ {"version":3,"file":"collection-view.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { MJCollectionEntity, MJArtifactEntity, MJArtifactVersionEntity, MJCollectionArtifactEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\ntype ViewMode = 'grid' | 'list';\ntype SortBy = 'name' | 'date' | 'type';\n\n@Component({\n standalone: false,\n selector: 'mj-collection-view',\n template: `\n <div class=\"collection-view\">\n <div class=\"view-header\">\n <h2>{{ collection.Name || 'Collection' }}</h2>\n <div class=\"header-actions\">\n <div class=\"view-mode-toggle\">\n <button\n class=\"mode-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"viewMode = 'grid'\"\n title=\"Grid View\">\n <i class=\"fas fa-grid\"></i>\n </button>\n <button\n class=\"mode-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"viewMode = 'list'\"\n title=\"List View\">\n <i class=\"fas fa-list\"></i>\n </button>\n </div>\n \n <select\n [(ngModel)]=\"sortBy\"\n (ngModelChange)=\"onSortChange()\"\n class=\"mj-select\"\n style=\"width: 150px;\">\n @for (option of sortOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n \n @if (canEdit) {\n <button class=\"btn-add\" (click)=\"onAddArtifact()\" title=\"Add Artifact\">\n <i class=\"fas fa-plus\"></i> Add\n </button>\n }\n </div>\n </div>\n \n <div class=\"view-content\" [class.grid-mode]=\"viewMode === 'grid'\" [class.list-mode]=\"viewMode === 'list'\">\n @if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fas fa-folder-open\"></i>\n <p>This collection is empty</p>\n @if (canEdit) {\n <button class=\"btn-add-primary\" (click)=\"onAddArtifact()\">\n <i class=\"fas fa-plus\"></i> Add Artifact\n </button>\n }\n </div>\n }\n \n @for (item of artifactVersions; track item.version.ID) {\n <mj-collection-artifact-card\n [artifact]=\"item.artifact\"\n [version]=\"item.version\"\n (selected)=\"onArtifactSelected(item)\"\n (viewed)=\"onViewArtifact(item)\"\n (edited)=\"onEditArtifact(item)\"\n (removed)=\"onRemoveArtifact(item)\">\n </mj-collection-artifact-card>\n }\n </div>\n </div>\n \n <!-- Artifact Viewer Panel -->\n @if (showArtifactViewer && selectedArtifactId) {\n <div class=\"artifact-viewer-overlay\" (click)=\"onCloseArtifactViewer()\">\n <div class=\"artifact-viewer-container\" (click)=\"$event.stopPropagation()\">\n <mj-artifact-viewer-panel\n [artifactId]=\"selectedArtifactId\"\n [versionNumber]=\"selectedVersionNumber\"\n [currentUser]=\"currentUser\"\n [environmentId]=\"environmentId\"\n [viewContext]=\"'collection'\"\n [contextCollectionId]=\"collection.ID\"\n (closed)=\"onCloseArtifactViewer()\">\n </mj-artifact-viewer-panel>\n </div>\n </div>\n }\n `,\n styles: [`\n .collection-view { display: flex; flex-direction: column; height: 100%; background: var(--mj-bg-surface); }\n\n .view-header { padding: 20px 24px; border-bottom: 1px solid var(--mj-border-default); display: flex; justify-content: space-between; align-items: center; }\n .view-header h2 { margin: 0; font-size: 20px; flex: 1; }\n\n .header-actions { display: flex; align-items: center; gap: 12px; }\n\n .view-mode-toggle { display: flex; border: 1px solid var(--mj-border-default); border-radius: 4px; overflow: hidden; }\n .mode-btn { padding: 8px 12px; background: var(--mj-bg-surface); border: none; border-right: 1px solid var(--mj-border-default); cursor: pointer; color: var(--mj-text-muted); transition: all 150ms ease; }\n .mode-btn:last-child { border-right: none; }\n .mode-btn:hover { background: var(--mj-bg-surface-sunken); }\n .mode-btn.active { background: var(--mj-brand-primary); color: var(--mj-text-inverse); }\n\n .btn-add { padding: 8px 16px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; display: flex; align-items: center; gap: 6px; }\n .btn-add:hover { background: var(--mj-brand-primary-hover); }\n\n .view-content { flex: 1; overflow-y: auto; padding: 24px; }\n .view-content.grid-mode { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }\n .view-content.list-mode { display: flex; flex-direction: column; gap: 12px; }\n\n .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 64px 24px; color: var(--mj-text-disabled); }\n .empty-state i { font-size: 64px; margin-bottom: 24px; }\n .empty-state p { margin: 0 0 24px 0; font-size: 16px; }\n .btn-add-primary { padding: 12px 24px; background: var(--mj-brand-primary); color: var(--mj-text-inverse); border: none; border-radius: 4px; cursor: pointer; font-size: 14px; display: flex; align-items: center; gap: 8px; }\n .btn-add-primary:hover { background: var(--mj-brand-primary-hover); }\n\n .artifact-viewer-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: var(--mj-bg-overlay); display: flex; align-items: center; justify-content: center; z-index: 10000; }\n .artifact-viewer-container { width: 90%; max-width: 1200px; height: 90vh; background: var(--mj-bg-surface); border-radius: 12px; overflow: hidden; box-shadow: var(--mj-shadow-lg); }\n `]\n})\nexport class CollectionViewComponent implements OnInit, OnChanges, OnDestroy {\n @Input() collection!: MJCollectionEntity;\n @Input() currentUser!: UserInfo;\n @Input() environmentId!: string;\n @Input() canEdit: boolean = true;\n\n // Store versions with parent artifact info for display\n public artifactVersions: Array<{\n version: MJArtifactVersionEntity;\n artifact: MJArtifactEntity;\n }> = [];\n public viewMode: ViewMode = 'grid';\n public sortBy: SortBy = 'date';\n public selectedArtifactId: string | null = null;\n public selectedVersionNumber: number | undefined = undefined;\n public showArtifactViewer = false;\n\n public sortOptions = [\n { label: 'Name', value: 'name' },\n { label: 'Date Modified', value: 'date' },\n { label: 'Type', value: 'type' }\n ];\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.loadArtifacts();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['collection'] && !changes['collection'].firstChange) {\n this.loadArtifacts();\n }\n }\n\n ngOnDestroy() {\n // Close artifact viewer when navigating away from collection\n if (this.showArtifactViewer) {\n this.onCloseArtifactViewer();\n }\n }\n\n private async loadArtifacts(): Promise<void> {\n if (!this.collection) return;\n\n try {\n const rv = new RunView();\n const md = new Metadata();\n\n // Load ALL VERSIONS in this collection (no DISTINCT - each version is separate)\n const versionResult = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ID IN (\n SELECT ca.ArtifactVersionID\n FROM [__mj].[vwCollectionArtifacts] ca\n WHERE ca.CollectionID='${this.collection.ID}'\n )`,\n OrderBy: this.getVersionOrderBy(),\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (versionResult.Success && versionResult.Results) {\n // Get unique artifact IDs\n const artifactIds = [...new Set(versionResult.Results.map(v => v.ArtifactID))];\n\n // Load parent artifact info (just for display metadata - no visibility filtering)\n const artifactMap = new Map<string, MJArtifactEntity>();\n if (artifactIds.length > 0) {\n const artifactFilter = artifactIds.map(id => `ID='${id}'`).join(' OR ');\n const artifactResult = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: artifactFilter,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (artifactResult.Success && artifactResult.Results) {\n artifactResult.Results.forEach(a => artifactMap.set(a.ID, a));\n }\n }\n\n // Combine version + artifact info\n this.artifactVersions = versionResult.Results\n .map(version => ({\n version,\n artifact: artifactMap.get(version.ArtifactID)!\n }))\n .filter(item => item.artifact != null); // Filter out any without parent artifact\n } else {\n this.artifactVersions = [];\n }\n } catch (error) {\n console.error('Failed to load collection artifacts:', error);\n this.artifactVersions = [];\n }\n }\n\n private getVersionOrderBy(): string {\n switch (this.sortBy) {\n case 'name':\n return 'Name ASC, VersionNumber DESC';\n case 'type':\n // Will sort by parent artifact type (handled in template)\n return 'ArtifactID ASC, VersionNumber DESC';\n case 'date':\n default:\n return '__mj_UpdatedAt DESC';\n }\n }\n\n onSortChange(): void {\n this.loadArtifacts();\n }\n\n onArtifactSelected(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n // TODO: Emit event or navigate to artifact detail view\n }\n\n onViewArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n this.selectedArtifactId = item.artifact.ID;\n this.selectedVersionNumber = item.version.VersionNumber;\n // Force change detection to ensure Input bindings propagate before component creation\n this.cdr.detectChanges();\n this.showArtifactViewer = true;\n }\n\n onCloseArtifactViewer(): void {\n this.showArtifactViewer = false;\n this.selectedArtifactId = null;\n this.selectedVersionNumber = undefined;\n }\n\n onEditArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): void {\n // TODO: Open artifact editor\n }\n\n async onRemoveArtifact(item: { version: MJArtifactVersionEntity; artifact: MJArtifactEntity }): Promise<void> {\n const versionLabel = `\"${item.artifact.Name}\" v${item.version.VersionNumber}`;\n if (!confirm(`Remove ${versionLabel} from this collection?`)) return;\n\n try {\n // Delete THIS SPECIFIC VERSION from the collection\n const rv = new RunView();\n const result = await rv.RunView({\n EntityName: 'MJ: Collection Artifacts',\n ExtraFilter: `CollectionID='${this.collection.ID}' AND ArtifactVersionID='${item.version.ID}'`,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (result.Success && result.Results && result.Results.length > 0) {\n // Delete all version associations atomically\n const md = new Metadata();\n const tg = await md.CreateTransactionGroup();\n for (const joinRecord of result.Results) {\n joinRecord.TransactionGroup = tg;\n await joinRecord.Delete();\n }\n const success = await tg.Submit();\n if (!success) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to remove ${versionLabel} from collection`,\n 'error'\n );\n return;\n }\n await this.loadArtifacts();\n this.cdr.detectChanges();\n MJNotificationService.Instance.CreateSimpleNotification(\n `Removed ${versionLabel} from collection`,\n 'success',\n 3000\n );\n }\n } catch (error) {\n console.error('Failed to remove artifact version from collection:', error);\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Failed to remove artifact version from collection',\n 'error'\n );\n }\n }\n\n async onAddArtifact(): Promise<void> {\n // TODO: Open artifact picker dialog\n // For now, just show a simple prompt\n const name = prompt('Enter artifact name:');\n if (!name) return;\n\n try {\n // Create new artifact\n const md = new Metadata();\n const artifact = await md.GetEntityObject<MJArtifactEntity>('MJ: Artifacts', this.currentUser);\n\n artifact.Name = name;\n // Type is read-only, set via TypeID instead\n // For now, skip setting type - it has a default\n\n const saved = await artifact.Save();\n if (saved) {\n // Get the latest version of this artifact to add to collection\n const rv = new RunView();\n const versionResult = await rv.RunView({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID='${artifact.ID}'`,\n OrderBy: 'VersionNumber DESC',\n MaxRows: 1,\n ResultType: 'entity_object'\n }, this.currentUser);\n\n if (!versionResult.Success || !versionResult.Results || versionResult.Results.length === 0) {\n alert('Failed to get artifact version');\n return;\n }\n\n // Add to collection via join table using version ID\n const joinRecord = await md.GetEntityObject<MJCollectionArtifactEntity>('MJ: Collection Artifacts', this.currentUser);\n joinRecord.CollectionID = this.collection.ID;\n joinRecord.ArtifactVersionID = versionResult.Results[0].ID;\n\n await joinRecord.Save();\n await this.loadArtifacts();\n }\n } catch (error) {\n console.error('Failed to add artifact:', error);\n alert('Failed to add artifact');\n }\n }\n}"]}
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, AfterViewChecked } from '@angular/core';
2
- import { UserInfo, CompositeKey } from '@memberjunction/core';
2
+ import { UserInfo, CompositeKey, DataSnapshot } from '@memberjunction/core';
3
3
  import { MJConversationEntity, MJConversationDetailEntity, MJAIAgentRunEntity, MJArtifactEntity, MJTaskEntity, RatingJSON } from '@memberjunction/core-entities';
4
4
  import { MJAIAgentRunEntityExtended } from "@memberjunction/ai-core-plus";
5
5
  import { AgentStateService } from '../../services/agent-state.service';
@@ -8,10 +8,11 @@ import { ActiveTasksService } from '../../services/active-tasks.service';
8
8
  import { MentionAutocompleteService } from '../../services/mention-autocomplete.service';
9
9
  import { ArtifactPermissionService } from '../../services/artifact-permission.service';
10
10
  import { ConversationAttachmentService } from '../../services/conversation-attachment.service';
11
+ import { MJResourcePermissionShareAdapter, ResourceShareContext } from '@memberjunction/ng-resource-permissions';
11
12
  import { MessageAttachment } from '../message/message-item.component';
12
13
  import { LazyArtifactInfo } from '../../models/lazy-artifact-info';
13
14
  import { PendingAttachment } from '../mention/mention-editor.component';
14
- import { NavigationRequest } from '@memberjunction/ng-artifacts';
15
+ import { NavigationRequest, AnalyzeArtifactService } from '@memberjunction/ng-artifacts';
15
16
  import { TestFeedbackDialogData, TestFeedbackDialogResult } from '@memberjunction/ng-testing';
16
17
  import { DialogService as ConversationsDialogService } from '../../services/dialog.service';
17
18
  import { Subject } from 'rxjs';
@@ -29,6 +30,7 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
29
30
  private streamingService;
30
31
  private confirmDialog;
31
32
  private bridge;
33
+ private analyzeArtifactService;
32
34
  environmentId: string;
33
35
  currentUser: UserInfo;
34
36
  private _conversationId;
@@ -110,6 +112,9 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
110
112
  artifactCountDisplay: number;
111
113
  isShared: boolean;
112
114
  showExportModal: boolean;
115
+ showShareModal: boolean;
116
+ shareContext: ResourceShareContext | null;
117
+ shareAdapter: MJResourcePermissionShareAdapter;
113
118
  showAgentPanel: boolean;
114
119
  showMembersModal: boolean;
115
120
  showProjectSelector: boolean;
@@ -173,28 +178,13 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
173
178
  selectedImageFileName: string;
174
179
  isUploadingAttachments: boolean;
175
180
  uploadingMessage: string;
176
- showArtifactPickerPanel: boolean;
177
- artifactPickerItems: Array<{
178
- artifactId: string;
179
- artifactVersionId: string;
180
- name: string;
181
- description: string;
182
- contentMode: string;
183
- fileID: string | null;
184
- mimeType: string | null;
185
- fileName: string | null;
186
- sizeBytes: number;
187
- typeName: string;
188
- updatedAt: string;
189
- }>;
190
- isLoadingArtifactPicker: boolean;
191
181
  enableAttachments: boolean;
192
182
  maxAttachments: number;
193
183
  maxAttachmentSizeBytes: number;
194
184
  acceptedFileTypes: string;
195
185
  private conversationManagerAgent;
196
186
  private engine;
197
- constructor(agentStateService: AgentStateService, conversationAgentService: ConversationAgentService, activeTasks: ActiveTasksService, cdr: ChangeDetectorRef, mentionAutocompleteService: MentionAutocompleteService, artifactPermissionService: ArtifactPermissionService, attachmentService: ConversationAttachmentService, streamingService: ConversationStreamingService, confirmDialog: ConversationsDialogService, bridge: ConversationBridgeService);
187
+ constructor(agentStateService: AgentStateService, conversationAgentService: ConversationAgentService, activeTasks: ActiveTasksService, cdr: ChangeDetectorRef, mentionAutocompleteService: MentionAutocompleteService, artifactPermissionService: ArtifactPermissionService, attachmentService: ConversationAttachmentService, streamingService: ConversationStreamingService, confirmDialog: ConversationsDialogService, bridge: ConversationBridgeService, analyzeArtifactService: AnalyzeArtifactService);
198
188
  ngOnInit(): Promise<void>;
199
189
  /**
200
190
  * Initializes attachment support by checking if the conversation manager agent (Sage)
@@ -396,6 +386,32 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
396
386
  onExportModalComplete(): void;
397
387
  onProjectSelected(project: any): Promise<void>;
398
388
  shareConversation(): void;
389
+ onShareDialogResult(_result: {
390
+ Action: 'save' | 'cancel';
391
+ }): void;
392
+ /**
393
+ * Display info for the header "Shared by {email}" badge. Returns `null`
394
+ * when the current user owns the conversation or when the share has no
395
+ * recorded grantor (legacy share pre-dating `SharedByUserID`).
396
+ */
397
+ get sharedByBadge(): {
398
+ display: string;
399
+ fullTooltip: string;
400
+ } | null;
401
+ /**
402
+ * `true` when the current user only has `View` access to this conversation
403
+ * (i.e., it was shared with them read-only). Gates the message input and
404
+ * any other write-capable UI.
405
+ */
406
+ get isReadOnlyView(): boolean;
407
+ /**
408
+ * `true` when the current user is allowed to create new shares on this
409
+ * conversation. Only the conversation's owner — or a user with an existing
410
+ * Owner-level grant — may do so. Matches the server-side gate in
411
+ * {@link MJResourcePermissionEntityExtended.callerMayGrantShare}, so the UI
412
+ * doesn't offer an action the save would refuse.
413
+ */
414
+ get canShareConversation(): boolean;
399
415
  onReplyInThread(message: MJConversationDetailEntity): void;
400
416
  onViewThread(message: MJConversationDetailEntity): void;
401
417
  onLocalThreadClosed(): void;
@@ -538,32 +554,33 @@ export declare class ConversationChatAreaComponent implements OnInit, OnDestroy,
538
554
  */
539
555
  private loadArtifactPermissions;
540
556
  /**
541
- * Handle artifact picker request from message input
542
- */
543
- onArtifactPickerRequested(): Promise<void>;
544
- /**
545
- * Handle artifact selection from the picker panel.
546
- * Adds the artifact as a pending attachment so it appears in the message input.
547
- * The ConversationDetailArtifact with Direction='Input' is created when the message is sent.
557
+ * Handle share request from artifact viewer
548
558
  */
549
- OnArtifactSelected(item: {
550
- artifactId: string;
551
- artifactVersionId: string;
552
- name: string;
553
- contentMode: string;
554
- fileID: string | null;
555
- mimeType: string | null;
556
- fileName: string | null;
557
- sizeBytes: number;
558
- }): void;
559
+ onArtifactShareRequested(artifactId: string): Promise<void>;
559
560
  /**
560
- * Close artifact picker panel
561
+ * Handle Analyze button click from the artifact viewer panel.
562
+ * Creates a user message with the artifact attached as an input,
563
+ * then routes through the normal agent flow so the agent can
564
+ * explore the artifact via artifact tools.
561
565
  */
562
- CloseArtifactPicker(): void;
563
566
  /**
564
- * Handle share request from artifact viewer
567
+ * Handle Analyze button click from the artifact viewer panel.
568
+ *
569
+ * Persists the captured snapshot as a new Data Snapshot artifact and attaches
570
+ * it to the user's in-progress message as a pending attachment chip (same UX
571
+ * as image/file uploads). On send, the existing attachment pipeline creates
572
+ * a `ConversationDetailArtifact` with Direction='Input'; AgentRunner then
573
+ * picks it up via `gatherConversationArtifacts` and resolves the
574
+ * DataSnapshotToolLibrary for tool calls.
575
+ *
576
+ * Falls back to plain message prefill if snapshot persistence fails — the
577
+ * user can still ask questions about the artifact that's already attached
578
+ * to the prior conversation turn.
565
579
  */
566
- onArtifactShareRequested(artifactId: string): Promise<void>;
580
+ OnAnalyzeArtifact(event: {
581
+ artifactId: string;
582
+ snapshot: DataSnapshot;
583
+ }): Promise<void>;
567
584
  /**
568
585
  * Handle close of artifact share modal
569
586
  */
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-chat-area.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-chat-area.component.ts"],"names":[],"mappings":"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"}