@memberjunction/ng-artifacts 6.1.4 → 6.2.0-edge.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 (125) hide show
  1. package/dist/lib/components/artifact-message-card.component.d.ts +60 -8
  2. package/dist/lib/components/artifact-message-card.component.d.ts.map +1 -1
  3. package/dist/lib/components/artifact-message-card.component.js +135 -39
  4. package/dist/lib/components/artifact-message-card.component.js.map +1 -1
  5. package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts +58 -6
  6. package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact-type-plugin-viewer.component.js +113 -35
  8. package/dist/lib/components/artifact-type-plugin-viewer.component.js.map +1 -1
  9. package/dist/lib/components/artifact-version-download.d.ts +5 -3
  10. package/dist/lib/components/artifact-version-download.d.ts.map +1 -1
  11. package/dist/lib/components/artifact-version-download.js +11 -7
  12. package/dist/lib/components/artifact-version-download.js.map +1 -1
  13. package/dist/lib/components/artifact-version-history.component.d.ts +74 -8
  14. package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
  15. package/dist/lib/components/artifact-version-history.component.js +152 -34
  16. package/dist/lib/components/artifact-version-history.component.js.map +1 -1
  17. package/dist/lib/components/artifact-viewer-panel.component.d.ts +328 -35
  18. package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
  19. package/dist/lib/components/artifact-viewer-panel.component.js +701 -213
  20. package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
  21. package/dist/lib/components/file-artifact-toolbar.component.d.ts +112 -10
  22. package/dist/lib/components/file-artifact-toolbar.component.d.ts.map +1 -1
  23. package/dist/lib/components/file-artifact-toolbar.component.js +197 -23
  24. package/dist/lib/components/file-artifact-toolbar.component.js.map +1 -1
  25. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +9 -1
  26. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
  27. package/dist/lib/components/plugins/audio-artifact-viewer.component.js +20 -4
  28. package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
  29. package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts +23 -5
  30. package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts.map +1 -1
  31. package/dist/lib/components/plugins/code-artifact-viewer.component.js +69 -31
  32. package/dist/lib/components/plugins/code-artifact-viewer.component.js.map +1 -1
  33. package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts +136 -18
  34. package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts.map +1 -1
  35. package/dist/lib/components/plugins/component-artifact-viewer.component.js +285 -97
  36. package/dist/lib/components/plugins/component-artifact-viewer.component.js.map +1 -1
  37. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts +2 -2
  38. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +7 -7
  39. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
  40. package/dist/lib/components/plugins/component-permission-evaluation.d.ts +2 -0
  41. package/dist/lib/components/plugins/component-permission-evaluation.d.ts.map +1 -1
  42. package/dist/lib/components/plugins/component-permission-evaluation.js +6 -2
  43. package/dist/lib/components/plugins/component-permission-evaluation.js.map +1 -1
  44. package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts +17 -6
  45. package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts.map +1 -1
  46. package/dist/lib/components/plugins/data-artifact-viewer.component.js +32 -22
  47. package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
  48. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts +56 -4
  49. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts.map +1 -1
  50. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +142 -36
  51. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
  52. package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts +14 -2
  53. package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts.map +1 -1
  54. package/dist/lib/components/plugins/docx-artifact-viewer.component.js +32 -8
  55. package/dist/lib/components/plugins/docx-artifact-viewer.component.js.map +1 -1
  56. package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts +17 -3
  57. package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts.map +1 -1
  58. package/dist/lib/components/plugins/html-artifact-viewer.component.js +36 -8
  59. package/dist/lib/components/plugins/html-artifact-viewer.component.js.map +1 -1
  60. package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts +41 -5
  61. package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts.map +1 -1
  62. package/dist/lib/components/plugins/image-artifact-viewer.component.js +102 -30
  63. package/dist/lib/components/plugins/image-artifact-viewer.component.js.map +1 -1
  64. package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts +33 -5
  65. package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts.map +1 -1
  66. package/dist/lib/components/plugins/json-artifact-viewer.component.js +89 -33
  67. package/dist/lib/components/plugins/json-artifact-viewer.component.js.map +1 -1
  68. package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts +12 -2
  69. package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts.map +1 -1
  70. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js +28 -8
  71. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js.map +1 -1
  72. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +4 -0
  73. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -1
  74. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +14 -6
  75. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -1
  76. package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts +47 -5
  77. package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts.map +1 -1
  78. package/dist/lib/components/plugins/pdf-artifact-viewer.component.js +129 -45
  79. package/dist/lib/components/plugins/pdf-artifact-viewer.component.js.map +1 -1
  80. package/dist/lib/components/plugins/save-query-dialog.component.d.ts +5 -1
  81. package/dist/lib/components/plugins/save-query-dialog.component.d.ts.map +1 -1
  82. package/dist/lib/components/plugins/save-query-dialog.component.js +12 -4
  83. package/dist/lib/components/plugins/save-query-dialog.component.js.map +1 -1
  84. package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts +17 -3
  85. package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts.map +1 -1
  86. package/dist/lib/components/plugins/svg-artifact-viewer.component.js +36 -8
  87. package/dist/lib/components/plugins/svg-artifact-viewer.component.js.map +1 -1
  88. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +9 -1
  89. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
  90. package/dist/lib/components/plugins/video-artifact-viewer.component.js +20 -4
  91. package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
  92. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts +28 -4
  93. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts.map +1 -1
  94. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js +64 -16
  95. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js.map +1 -1
  96. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +9 -1
  97. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
  98. package/dist/lib/components/previews/audio-artifact-preview.component.js +20 -4
  99. package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
  100. package/dist/lib/components/previews/image-artifact-preview.component.d.ts +16 -2
  101. package/dist/lib/components/previews/image-artifact-preview.component.d.ts.map +1 -1
  102. package/dist/lib/components/previews/image-artifact-preview.component.js +35 -7
  103. package/dist/lib/components/previews/image-artifact-preview.component.js.map +1 -1
  104. package/dist/lib/components/previews/video-artifact-preview.component.d.ts +9 -1
  105. package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
  106. package/dist/lib/components/previews/video-artifact-preview.component.js +20 -4
  107. package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
  108. package/dist/lib/interfaces/artifact-viewer-plugin.interface.js.map +1 -1
  109. package/dist/lib/services/artifact-file.service.d.ts +8 -0
  110. package/dist/lib/services/artifact-file.service.d.ts.map +1 -1
  111. package/dist/lib/services/artifact-file.service.js +22 -6
  112. package/dist/lib/services/artifact-file.service.js.map +1 -1
  113. package/dist/lib/services/artifact-icon.service.d.ts +2 -0
  114. package/dist/lib/services/artifact-icon.service.d.ts.map +1 -1
  115. package/dist/lib/services/artifact-icon.service.js +5 -1
  116. package/dist/lib/services/artifact-icon.service.js.map +1 -1
  117. package/dist/lib/services/artifact-preview-resolver.service.d.ts +2 -0
  118. package/dist/lib/services/artifact-preview-resolver.service.d.ts.map +1 -1
  119. package/dist/lib/services/artifact-preview-resolver.service.js +5 -1
  120. package/dist/lib/services/artifact-preview-resolver.service.js.map +1 -1
  121. package/dist/lib/snapshot-helpers.d.ts +10 -0
  122. package/dist/lib/snapshot-helpers.d.ts.map +1 -1
  123. package/dist/lib/snapshot-helpers.js +25 -5
  124. package/dist/lib/snapshot-helpers.js.map +1 -1
  125. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"audio-artifact-viewer.component.js","sourceRoot":"","sources":["../../../../src/lib/components/plugins/audio-artifact-viewer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectorRef, Component, inject, OnInit, Type } from '@angular/core';\nimport { DataSnapshot } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseArtifactViewerPluginComponent } from '../base-artifact-viewer.component';\nimport { ArtifactFileService } from '../../services/artifact-file.service';\nimport { IArtifactPreviewComponent } from '../../interfaces/artifact-viewer-plugin.interface';\nimport { AudioArtifactPreviewComponent } from '../previews/audio-artifact-preview.component';\nimport { MJMediaPlayerComponent, MediaTrack } from '@memberjunction/ng-media-player';\n\n/**\n * Minimal full-size viewer plugin for audio artifacts. Renders an `<audio controls>` player.\n * Supports both storage modes (see {@link VideoArtifactViewerComponent} for the same contract).\n *\n * Deliberately minimal — the inline experience lives in {@link AudioArtifactPreviewComponent}\n * (exposed via {@link previewComponentType}); this satisfies the required `componentType`.\n */\n@Component({\n standalone: false,\n selector: 'mj-audio-artifact-viewer',\n template: `\n <div class=\"audio-viewer\" [ngClass]=\"cssClass\">\n @if (errorMessage) {\n <div class=\"audio-viewer__state audio-viewer__state--error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage }}</span>\n </div>\n } @else if (audioUrl) {\n <mj-media-player class=\"audio-viewer__player\" [Tracks]=\"MediaTracks\" (Ended)=\"onMediaEnded()\"></mj-media-player>\n } @else {\n <div class=\"audio-viewer__state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading audio…</span>\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n height: 100%;\n }\n\n .audio-viewer {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 24px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .audio-viewer__player {\n display: block;\n width: 100%;\n max-width: 640px;\n }\n\n .audio-viewer__state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .audio-viewer__state--error {\n color: var(--mj-status-error-text);\n }\n `,\n ],\n})\n@RegisterClass(BaseArtifactViewerPluginComponent, 'AudioArtifactViewerPlugin')\nexport class AudioArtifactViewerComponent extends BaseArtifactViewerPluginComponent implements OnInit {\n private readonly fileService = inject(ArtifactFileService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public audioUrl = '';\n public errorMessage = '';\n\n /**\n * Single-track input for the generic {@link MJMediaPlayerComponent}. Rebuilt whenever\n * {@link audioUrl} is (re)resolved via {@link setAudioUrl}; empty until a URL exists so the\n * player shows its own empty state.\n */\n public MediaTracks: MediaTrack[] = [];\n\n /** Set the resolved URL and recompute the single-element {@link MediaTracks} array in lockstep. */\n private setAudioUrl(url: string): void {\n this.audioUrl = url;\n this.MediaTracks = url\n ? [\n {\n Id: this.artifactVersion?.ID ?? 'audio',\n Kind: 'audio',\n Url: url,\n MimeType: this.artifactVersion?.MimeType ?? undefined,\n },\n ]\n : [];\n }\n\n /**\n * Inline-preview component for audio artifacts ({@link IArtifactViewerPluginPreviewStatics}).\n * STATIC so the resolver reads it off the constructor without instantiating this DI-using component.\n */\n public static readonly PreviewComponentType: Type<IArtifactPreviewComponent> = AudioArtifactPreviewComponent;\n\n /** Matches audio artifacts by type name or `audio/*` MIME. STATIC — drives preview resolution. */\n public static CanHandlePreview(artifactTypeName: string, contentType?: string): boolean {\n const mime = (contentType ?? '').toLowerCase();\n if (mime.startsWith('audio/')) {\n return true;\n }\n return (artifactTypeName ?? '').trim().toLowerCase() === 'audio';\n }\n\n public override get hasDisplayContent(): boolean {\n return true;\n }\n\n async ngOnInit(): Promise<void> {\n try {\n if (this.artifactVersion?.ContentMode === 'File' && this.artifactVersion.ID) {\n this.setAudioUrl(await this.fileService.getDownloadUrl(this.artifactVersion.ID));\n } else {\n const content = this.artifactVersion?.Content;\n if (content) {\n this.setAudioUrl(content);\n } else {\n this.errorMessage = 'This artifact has no audio content.';\n }\n }\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n this.errorMessage = `Could not load audio: ${detail}`;\n }\n this.cdr.markForCheck();\n }\n\n public onMediaError(): void {\n this.errorMessage = 'The audio could not be played. It may be corrupt or in an unsupported format.';\n this.setAudioUrl('');\n this.cdr.markForCheck();\n }\n\n /** Fired when the generic player reaches the end of the track. No-op affordance hook. */\n public onMediaEnded(): void {\n // Playback finished — nothing to persist for a one-shot artifact viewer.\n }\n\n public override GetCurrentStateSnapshot(): DataSnapshot | null {\n if (!this.artifactVersion) {\n return null;\n }\n const snap = new DataSnapshot();\n snap.title = this.getDisplayTitle() ?? undefined;\n snap.interpretation = `Audio (${this.artifactVersion.MimeType ?? 'audio'}).`;\n snap.custom = {\n mimeType: this.artifactVersion.MimeType ?? undefined,\n fileName: this.artifactVersion.FileName ?? undefined,\n contentMode: this.artifactVersion.ContentMode,\n };\n return snap;\n }\n}\n"]}
1
+ {"version":3,"file":"audio-artifact-viewer.component.js","sourceRoot":"","sources":["../../../../src/lib/components/plugins/audio-artifact-viewer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectorRef, Component, inject, OnInit, Type } from '@angular/core';\nimport { DataSnapshot } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseArtifactViewerPluginComponent } from '../base-artifact-viewer.component';\nimport { ArtifactFileService } from '../../services/artifact-file.service';\nimport { IArtifactPreviewComponent } from '../../interfaces/artifact-viewer-plugin.interface';\nimport { AudioArtifactPreviewComponent } from '../previews/audio-artifact-preview.component';\nimport { MJMediaPlayerComponent, MediaTrack } from '@memberjunction/ng-media-player';\n\n/**\n * Minimal full-size viewer plugin for audio artifacts. Renders an `<audio controls>` player.\n * Supports both storage modes (see {@link VideoArtifactViewerComponent} for the same contract).\n *\n * Deliberately minimal — the inline experience lives in {@link AudioArtifactPreviewComponent}\n * (exposed via {@link previewComponentType}); this satisfies the required `componentType`.\n */\n@Component({\n standalone: false,\n selector: 'mj-audio-artifact-viewer',\n template: `\n <div class=\"audio-viewer\" [ngClass]=\"cssClass\">\n @if (errorMessage) {\n <div class=\"audio-viewer__state audio-viewer__state--error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage }}</span>\n </div>\n } @else if (audioUrl) {\n <mj-media-player class=\"audio-viewer__player\" [Tracks]=\"MediaTracks\" (Ended)=\"onMediaEnded()\"></mj-media-player>\n } @else {\n <div class=\"audio-viewer__state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading audio…</span>\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n height: 100%;\n }\n\n .audio-viewer {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 24px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .audio-viewer__player {\n display: block;\n width: 100%;\n max-width: 640px;\n }\n\n .audio-viewer__state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n .audio-viewer__state--error {\n color: var(--mj-status-error-text);\n }\n `,\n ],\n})\n@RegisterClass(BaseArtifactViewerPluginComponent, 'AudioArtifactViewerPlugin')\nexport class AudioArtifactViewerComponent extends BaseArtifactViewerPluginComponent implements OnInit {\n private readonly fileService = inject(ArtifactFileService);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public AudioUrl = '';\n\n /** @deprecated Use {@link AudioUrl}. */\n public get audioUrl() {\n return this.AudioUrl;\n }\n /** @deprecated Use {@link AudioUrl}. */\n public set audioUrl(value) {\n this.AudioUrl = value;\n }\n public errorMessage = '';\n\n /**\n * Single-track input for the generic {@link MJMediaPlayerComponent}. Rebuilt whenever\n * {@link audioUrl} is (re)resolved via {@link setAudioUrl}; empty until a URL exists so the\n * player shows its own empty state.\n */\n public MediaTracks: MediaTrack[] = [];\n\n /** Set the resolved URL and recompute the single-element {@link MediaTracks} array in lockstep. */\n private setAudioUrl(url: string): void {\n this.AudioUrl = url;\n this.MediaTracks = url\n ? [\n {\n Id: this.artifactVersion?.ID ?? 'audio',\n Kind: 'audio',\n Url: url,\n MimeType: this.artifactVersion?.MimeType ?? undefined,\n },\n ]\n : [];\n }\n\n /**\n * Inline-preview component for audio artifacts ({@link IArtifactViewerPluginPreviewStatics}).\n * STATIC so the resolver reads it off the constructor without instantiating this DI-using component.\n */\n public static readonly PreviewComponentType: Type<IArtifactPreviewComponent> = AudioArtifactPreviewComponent;\n\n /** Matches audio artifacts by type name or `audio/*` MIME. STATIC — drives preview resolution. */\n public static CanHandlePreview(artifactTypeName: string, contentType?: string): boolean {\n const mime = (contentType ?? '').toLowerCase();\n if (mime.startsWith('audio/')) {\n return true;\n }\n return (artifactTypeName ?? '').trim().toLowerCase() === 'audio';\n }\n\n public override get hasDisplayContent(): boolean {\n return true;\n }\n\n async ngOnInit(): Promise<void> {\n try {\n if (this.artifactVersion?.ContentMode === 'File' && this.artifactVersion.ID) {\n this.setAudioUrl(await this.fileService.getDownloadUrl(this.artifactVersion.ID));\n } else {\n const content = this.artifactVersion?.Content;\n if (content) {\n this.setAudioUrl(content);\n } else {\n this.errorMessage = 'This artifact has no audio content.';\n }\n }\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n this.errorMessage = `Could not load audio: ${detail}`;\n }\n this.cdr.markForCheck();\n }\n\n public OnMediaError(): void {\n this.errorMessage = 'The audio could not be played. It may be corrupt or in an unsupported format.';\n this.setAudioUrl('');\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link OnMediaError}. */\n public onMediaError(): void {\n return this.OnMediaError();\n }\n\n /** Fired when the generic player reaches the end of the track. No-op affordance hook. */\n public OnMediaEnded(): void {\n // Playback finished — nothing to persist for a one-shot artifact viewer.\n }\n\n /** @deprecated Use {@link OnMediaEnded}. */\n public onMediaEnded(): void {\n return this.OnMediaEnded();\n }\n\n public override GetCurrentStateSnapshot(): DataSnapshot | null {\n if (!this.artifactVersion) {\n return null;\n }\n const snap = new DataSnapshot();\n snap.title = this.getDisplayTitle() ?? undefined;\n snap.interpretation = `Audio (${this.artifactVersion.MimeType ?? 'audio'}).`;\n snap.custom = {\n mimeType: this.artifactVersion.MimeType ?? undefined,\n fileName: this.artifactVersion.FileName ?? undefined,\n contentMode: this.artifactVersion.ContentMode,\n };\n return snap;\n }\n}\n"]}
@@ -5,10 +5,26 @@ import * as i0 from "@angular/core";
5
5
  * Viewer component for code artifacts (Python, C#, Java, TypeScript, JavaScript, SQL, CSS, XML)
6
6
  */
7
7
  export declare class CodeArtifactViewerComponent extends BaseArtifactViewerPluginComponent {
8
- codeContent: string;
9
- language: string;
10
- languageLabel: string;
11
- contentType?: string;
8
+ CodeContent: string;
9
+ /** @deprecated Use {@link CodeContent}. */
10
+ get codeContent(): string;
11
+ /** @deprecated Use {@link CodeContent}. */
12
+ set codeContent(value: string);
13
+ Language: string;
14
+ /** @deprecated Use {@link Language}. */
15
+ get language(): string;
16
+ /** @deprecated Use {@link Language}. */
17
+ set language(value: string);
18
+ LanguageLabel: string;
19
+ /** @deprecated Use {@link LanguageLabel}. */
20
+ get languageLabel(): string;
21
+ /** @deprecated Use {@link LanguageLabel}. */
22
+ set languageLabel(value: string);
23
+ ContentType?: string;
24
+ /** @deprecated Use {@link ContentType}. */
25
+ set contentType(value: string | undefined);
26
+ /** @deprecated Use {@link ContentType}. */
27
+ get contentType(): string | undefined;
12
28
  /**
13
29
  * Code artifacts always have content to display
14
30
  */
@@ -16,8 +32,10 @@ export declare class CodeArtifactViewerComponent extends BaseArtifactViewerPlugi
16
32
  ngOnInit(): void;
17
33
  private detectLanguage;
18
34
  GetCurrentStateSnapshot(): DataSnapshot | null;
35
+ OnCopy(): void;
36
+ /** @deprecated Use {@link OnCopy}. */
19
37
  onCopy(): void;
20
38
  static ɵfac: i0.ɵɵFactoryDeclaration<CodeArtifactViewerComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<CodeArtifactViewerComponent, "mj-code-artifact-viewer", never, { "contentType": { "alias": "contentType"; "required": false; }; }, {}, never, never, false, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<CodeArtifactViewerComponent, "mj-code-artifact-viewer", never, { "ContentType": { "alias": "ContentType"; "required": false; }; "contentType": { "alias": "contentType"; "required": false; }; }, {}, never, never, false, never>;
22
40
  }
23
41
  //# sourceMappingURL=code-artifact-viewer.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/code-artifact-viewer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;;AAGtF;;GAEG;AACH,qBAwEa,2BAA4B,SAAQ,iCAAiC;IACzE,WAAW,SAAM;IACjB,QAAQ,SAAe;IACvB,aAAa,SAAU;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAED,QAAQ,IAAI,IAAI;IAKhB,OAAO,CAAC,cAAc;IAkCN,uBAAuB,IAAI,YAAY,GAAG,IAAI;IAI9D,MAAM,IAAI,IAAI;yCAzDH,2BAA2B;2CAA3B,2BAA2B;CAkEvC"}
1
+ {"version":3,"file":"code-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/code-artifact-viewer.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;;AAGtF;;GAEG;AACH,qBAwEa,2BAA4B,SAAQ,iCAAiC;IACzE,WAAW,SAAM;IAExB,2CAA2C;IAC3C,IAAW,WAAW,WAErB;IACD,2CAA2C;IAC3C,IAAW,WAAW,CAAC,KAAK,QAAA,EAE3B;IACM,QAAQ,SAAe;IAE9B,wCAAwC;IACxC,IAAW,QAAQ,WAElB;IACD,wCAAwC;IACxC,IAAW,QAAQ,CAAC,KAAK,QAAA,EAExB;IACM,aAAa,SAAU;IAE9B,6CAA6C;IAC7C,IAAW,aAAa,WAEvB;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK,QAAA,EAE7B;IAEQ,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEjD;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED;;OAEG;IACH,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAED,QAAQ,IAAI,IAAI;IAKhB,OAAO,CAAC,cAAc;IAkCN,uBAAuB,IAAI,YAAY,GAAG,IAAI;IAI9D,MAAM,IAAI,IAAI;IAUd,sCAAsC;IACtC,MAAM,IAAI,IAAI;yCAxGH,2BAA2B;2CAA3B,2BAA2B;CA2GvC"}
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Component, Input } from '@angular/core';
8
8
  import { RegisterClass } from '@memberjunction/global';
9
9
  import { BaseArtifactViewerPluginComponent } from '../base-artifact-viewer.component';
10
- import { createCodeSnapshot } from '../../snapshot-helpers';
10
+ import { CreateCodeSnapshot } from '../../snapshot-helpers';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common";
13
13
  import * as i2 from "@angular/forms";
@@ -16,10 +16,42 @@ import * as i3 from "@memberjunction/ng-code-editor";
16
16
  * Viewer component for code artifacts (Python, C#, Java, TypeScript, JavaScript, SQL, CSS, XML)
17
17
  */
18
18
  let CodeArtifactViewerComponent = class CodeArtifactViewerComponent extends BaseArtifactViewerPluginComponent {
19
- codeContent = '';
20
- language = 'plaintext';
21
- languageLabel = 'Code';
22
- contentType;
19
+ CodeContent = '';
20
+ /** @deprecated Use {@link CodeContent}. */
21
+ get codeContent() {
22
+ return this.CodeContent;
23
+ }
24
+ /** @deprecated Use {@link CodeContent}. */
25
+ set codeContent(value) {
26
+ this.CodeContent = value;
27
+ }
28
+ Language = 'plaintext';
29
+ /** @deprecated Use {@link Language}. */
30
+ get language() {
31
+ return this.Language;
32
+ }
33
+ /** @deprecated Use {@link Language}. */
34
+ set language(value) {
35
+ this.Language = value;
36
+ }
37
+ LanguageLabel = 'Code';
38
+ /** @deprecated Use {@link LanguageLabel}. */
39
+ get languageLabel() {
40
+ return this.LanguageLabel;
41
+ }
42
+ /** @deprecated Use {@link LanguageLabel}. */
43
+ set languageLabel(value) {
44
+ this.LanguageLabel = value;
45
+ }
46
+ ContentType;
47
+ /** @deprecated Use {@link ContentType}. */
48
+ set contentType(value) {
49
+ this.ContentType = value;
50
+ }
51
+ /** @deprecated Use {@link ContentType}. */
52
+ get contentType() {
53
+ return this.ContentType;
54
+ }
23
55
  /**
24
56
  * Code artifacts always have content to display
25
57
  */
@@ -27,63 +59,67 @@ let CodeArtifactViewerComponent = class CodeArtifactViewerComponent extends Base
27
59
  return true;
28
60
  }
29
61
  ngOnInit() {
30
- this.codeContent = this.getContent();
62
+ this.CodeContent = this.getContent();
31
63
  this.detectLanguage();
32
64
  }
33
65
  detectLanguage() {
34
- const ct = this.contentType?.toLowerCase() || '';
66
+ const ct = this.ContentType?.toLowerCase() || '';
35
67
  // Map content types to Monaco editor language modes
36
68
  if (ct.includes('python')) {
37
- this.language = 'python';
38
- this.languageLabel = 'Python';
69
+ this.Language = 'python';
70
+ this.LanguageLabel = 'Python';
39
71
  }
40
72
  else if (ct.includes('csharp') || ct.includes('c#')) {
41
- this.language = 'csharp';
42
- this.languageLabel = 'C#';
73
+ this.Language = 'csharp';
74
+ this.LanguageLabel = 'C#';
43
75
  }
44
76
  else if (ct.includes('java')) {
45
- this.language = 'java';
46
- this.languageLabel = 'Java';
77
+ this.Language = 'java';
78
+ this.LanguageLabel = 'Java';
47
79
  }
48
80
  else if (ct.includes('typescript')) {
49
- this.language = 'typescript';
50
- this.languageLabel = 'TypeScript';
81
+ this.Language = 'typescript';
82
+ this.LanguageLabel = 'TypeScript';
51
83
  }
52
84
  else if (ct.includes('javascript')) {
53
- this.language = 'javascript';
54
- this.languageLabel = 'JavaScript';
85
+ this.Language = 'javascript';
86
+ this.LanguageLabel = 'JavaScript';
55
87
  }
56
88
  else if (ct.includes('sql')) {
57
- this.language = 'sql';
58
- this.languageLabel = 'SQL';
89
+ this.Language = 'sql';
90
+ this.LanguageLabel = 'SQL';
59
91
  }
60
92
  else if (ct.includes('css')) {
61
- this.language = 'css';
62
- this.languageLabel = 'CSS';
93
+ this.Language = 'css';
94
+ this.LanguageLabel = 'CSS';
63
95
  }
64
96
  else if (ct.includes('xml')) {
65
- this.language = 'xml';
66
- this.languageLabel = 'XML';
97
+ this.Language = 'xml';
98
+ this.LanguageLabel = 'XML';
67
99
  }
68
100
  else {
69
- this.language = 'plaintext';
70
- this.languageLabel = 'Code';
101
+ this.Language = 'plaintext';
102
+ this.LanguageLabel = 'Code';
71
103
  }
72
104
  }
73
105
  GetCurrentStateSnapshot() {
74
- return createCodeSnapshot(this.getRawContent(), this.getDisplayTitle());
106
+ return CreateCodeSnapshot(this.getRawContent(), this.getDisplayTitle());
75
107
  }
76
- onCopy() {
77
- if (this.codeContent) {
78
- navigator.clipboard.writeText(this.codeContent).then(() => {
108
+ OnCopy() {
109
+ if (this.CodeContent) {
110
+ navigator.clipboard.writeText(this.CodeContent).then(() => {
79
111
  console.log('✅ Copied code to clipboard');
80
112
  }).catch(err => {
81
113
  console.error('Failed to copy to clipboard:', err);
82
114
  });
83
115
  }
84
116
  }
117
+ /** @deprecated Use {@link OnCopy}. */
118
+ onCopy() {
119
+ return this.OnCopy();
120
+ }
85
121
  static ɵfac = /*@__PURE__*/ (() => { let ɵCodeArtifactViewerComponent_BaseFactory; return function CodeArtifactViewerComponent_Factory(__ngFactoryType__) { return (ɵCodeArtifactViewerComponent_BaseFactory || (ɵCodeArtifactViewerComponent_BaseFactory = i0.ɵɵgetInheritedFactory(CodeArtifactViewerComponent)))(__ngFactoryType__ || CodeArtifactViewerComponent); }; })();
86
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CodeArtifactViewerComponent, selectors: [["mj-code-artifact-viewer"]], inputs: { contentType: "contentType" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 5, consts: [[1, "code-artifact-viewer", 3, "ngClass"], [1, "code-toolbar"], [1, "language-badge"], ["title", "Copy Code", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [1, "code-editor-container"], [2, "width", "100%", "height", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"]], template: function CodeArtifactViewerComponent_Template(rf, ctx) { if (rf & 1) {
122
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CodeArtifactViewerComponent, selectors: [["mj-code-artifact-viewer"]], inputs: { ContentType: "ContentType", contentType: "contentType" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 9, vars: 5, consts: [[1, "code-artifact-viewer", 3, "ngClass"], [1, "code-toolbar"], [1, "language-badge"], ["title", "Copy Code", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [1, "code-editor-container"], [2, "width", "100%", "height", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"]], template: function CodeArtifactViewerComponent_Template(rf, ctx) { if (rf & 1) {
87
123
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
88
124
  i0.ɵɵtext(3);
89
125
  i0.ɵɵelementEnd();
@@ -128,7 +164,9 @@ export { CodeArtifactViewerComponent };
128
164
  </div>
129
165
  </div>
130
166
  `, styles: ["\n .code-artifact-viewer {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .code-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px;\n background: #f5f5f5;\n border-bottom: 1px solid #ddd;\n }\n\n .language-badge {\n padding: 4px 12px;\n background: #007acc;\n color: white;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .btn-icon {\n padding: 6px 12px;\n background: white;\n border: 1px solid #ccc;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .btn-icon:hover {\n background: #e9ecef;\n border-color: #999;\n }\n\n .code-editor-container {\n flex: 1;\n overflow: auto;\n }\n "] }]
131
- }], null, { contentType: [{
167
+ }], null, { ContentType: [{
168
+ type: Input
169
+ }], contentType: [{
132
170
  type: Input
133
171
  }] }); })();
134
172
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CodeArtifactViewerComponent, { className: "CodeArtifactViewerComponent", filePath: "src/lib/components/plugins/code-artifact-viewer.component.ts", lineNumber: 82 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"code-artifact-viewer.component.js","sourceRoot":"","sources":["../../../../src/lib/components/plugins/code-artifact-viewer.component.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;;;;;AAE5D;;GAEG;AAyEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,iCAAiC;IACzE,WAAW,GAAG,EAAE,CAAC;IACjB,QAAQ,GAAG,WAAW,CAAC;IACvB,aAAa,GAAG,MAAM,CAAC;IAErB,WAAW,CAAU;IAE9B;;OAEG;IACH,IAAoB,iBAAiB;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,cAAc;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAEjD,oDAAoD;QACpD,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QAChC,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC9B,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QACpC,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC9B,CAAC;IACH,CAAC;IAEe,uBAAuB;QACrC,OAAO,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;yRAjEU,2BAA2B,yBAA3B,2BAA2B;6DAA3B,2BAA2B;YAlEhC,AADF,AADF,8BAAuD,aAC3B,aACI;YAAA,YAAmB;YAAA,iBAAM;YACrD,iCAA8D;YAAnB,wGAAS,YAAQ,IAAC;YAC3D,uBAA2B;YAAC,sBAC9B;YACF,AADE,iBAAS,EACL;YAEJ,AADF,8BAAmC,wBAKI;YAHnC,oOAAyB;YAM/B,AADE,AADE,iBAAiB,EACb,EACF;;YAf4B,sCAAoB;YAEtB,eAAmB;YAAnB,uCAAmB;YAO7C,eAAyB;YAAzB,+CAAyB;YAEzB,AADA,uCAAqB,0BACA;;;AAyDlB,2BAA2B;IADvC,aAAa,CAAC,iCAAiC,EAAE,0BAA0B,CAAC;GAChE,2BAA2B,CAkEvC;;iFAlEY,2BAA2B;cAxEvC,SAAS;6BACI,KAAK,YACP,yBAAyB,YACzB;;;;;;;;;;;;;;;;;GAiBT;;kBAyDA,KAAK;;kFALK,2BAA2B","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { DataSnapshot } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseArtifactViewerPluginComponent } from '../base-artifact-viewer.component';\nimport { createCodeSnapshot } from '../../snapshot-helpers';\n\n/**\n * Viewer component for code artifacts (Python, C#, Java, TypeScript, JavaScript, SQL, CSS, XML)\n */\n@Component({\n standalone: false,\n selector: 'mj-code-artifact-viewer',\n template: `\n <div class=\"code-artifact-viewer\" [ngClass]=\"cssClass\">\n <div class=\"code-toolbar\">\n <div class=\"language-badge\">{{ languageLabel }}</div>\n <button class=\"btn-icon\" title=\"Copy Code\" (click)=\"onCopy()\">\n <i class=\"fas fa-copy\"></i> Copy\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"codeContent\"\n [language]=\"language\"\n [readonly]=\"readonly\"\n style=\"width: 100%; height: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n `,\n styles: [`\n .code-artifact-viewer {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .code-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px;\n background: #f5f5f5;\n border-bottom: 1px solid #ddd;\n }\n\n .language-badge {\n padding: 4px 12px;\n background: #007acc;\n color: white;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .btn-icon {\n padding: 6px 12px;\n background: white;\n border: 1px solid #ccc;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .btn-icon:hover {\n background: #e9ecef;\n border-color: #999;\n }\n\n .code-editor-container {\n flex: 1;\n overflow: auto;\n }\n `]\n})\n@RegisterClass(BaseArtifactViewerPluginComponent, 'CodeArtifactViewerPlugin')\nexport class CodeArtifactViewerComponent extends BaseArtifactViewerPluginComponent {\n public codeContent = '';\n public language = 'plaintext';\n public languageLabel = 'Code';\n\n @Input() contentType?: string;\n\n /**\n * Code artifacts always have content to display\n */\n public override get hasDisplayContent(): boolean {\n return true;\n }\n\n ngOnInit(): void {\n this.codeContent = this.getContent();\n this.detectLanguage();\n }\n\n private detectLanguage(): void {\n const ct = this.contentType?.toLowerCase() || '';\n\n // Map content types to Monaco editor language modes\n if (ct.includes('python')) {\n this.language = 'python';\n this.languageLabel = 'Python';\n } else if (ct.includes('csharp') || ct.includes('c#')) {\n this.language = 'csharp';\n this.languageLabel = 'C#';\n } else if (ct.includes('java')) {\n this.language = 'java';\n this.languageLabel = 'Java';\n } else if (ct.includes('typescript')) {\n this.language = 'typescript';\n this.languageLabel = 'TypeScript';\n } else if (ct.includes('javascript')) {\n this.language = 'javascript';\n this.languageLabel = 'JavaScript';\n } else if (ct.includes('sql')) {\n this.language = 'sql';\n this.languageLabel = 'SQL';\n } else if (ct.includes('css')) {\n this.language = 'css';\n this.languageLabel = 'CSS';\n } else if (ct.includes('xml')) {\n this.language = 'xml';\n this.languageLabel = 'XML';\n } else {\n this.language = 'plaintext';\n this.languageLabel = 'Code';\n }\n }\n\n public override GetCurrentStateSnapshot(): DataSnapshot | null {\n return createCodeSnapshot(this.getRawContent(), this.getDisplayTitle());\n }\n\n onCopy(): void {\n if (this.codeContent) {\n navigator.clipboard.writeText(this.codeContent).then(() => {\n console.log('✅ Copied code to clipboard');\n }).catch(err => {\n console.error('Failed to copy to clipboard:', err);\n });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"code-artifact-viewer.component.js","sourceRoot":"","sources":["../../../../src/lib/components/plugins/code-artifact-viewer.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { DataSnapshot } from '@memberjunction/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseArtifactViewerPluginComponent } from '../base-artifact-viewer.component';\nimport { CreateCodeSnapshot } from '../../snapshot-helpers';\n\n/**\n * Viewer component for code artifacts (Python, C#, Java, TypeScript, JavaScript, SQL, CSS, XML)\n */\n@Component({\n standalone: false,\n selector: 'mj-code-artifact-viewer',\n template: `\n <div class=\"code-artifact-viewer\" [ngClass]=\"cssClass\">\n <div class=\"code-toolbar\">\n <div class=\"language-badge\">{{ languageLabel }}</div>\n <button class=\"btn-icon\" title=\"Copy Code\" (click)=\"onCopy()\">\n <i class=\"fas fa-copy\"></i> Copy\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"codeContent\"\n [language]=\"language\"\n [readonly]=\"readonly\"\n style=\"width: 100%; height: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n `,\n styles: [`\n .code-artifact-viewer {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .code-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px;\n background: #f5f5f5;\n border-bottom: 1px solid #ddd;\n }\n\n .language-badge {\n padding: 4px 12px;\n background: #007acc;\n color: white;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .btn-icon {\n padding: 6px 12px;\n background: white;\n border: 1px solid #ccc;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .btn-icon:hover {\n background: #e9ecef;\n border-color: #999;\n }\n\n .code-editor-container {\n flex: 1;\n overflow: auto;\n }\n `]\n})\n@RegisterClass(BaseArtifactViewerPluginComponent, 'CodeArtifactViewerPlugin')\nexport class CodeArtifactViewerComponent extends BaseArtifactViewerPluginComponent {\n public CodeContent = '';\n\n /** @deprecated Use {@link CodeContent}. */\n public get codeContent() {\n return this.CodeContent;\n }\n /** @deprecated Use {@link CodeContent}. */\n public set codeContent(value) {\n this.CodeContent = value;\n }\n public Language = 'plaintext';\n\n /** @deprecated Use {@link Language}. */\n public get language() {\n return this.Language;\n }\n /** @deprecated Use {@link Language}. */\n public set language(value) {\n this.Language = value;\n }\n public LanguageLabel = 'Code';\n\n /** @deprecated Use {@link LanguageLabel}. */\n public get languageLabel() {\n return this.LanguageLabel;\n }\n /** @deprecated Use {@link LanguageLabel}. */\n public set languageLabel(value) {\n this.LanguageLabel = value;\n }\n\n @Input() ContentType?: string;\n\n /** @deprecated Use {@link ContentType}. */\n @Input() set contentType(value: string | undefined) {\n this.ContentType = value;\n }\n /** @deprecated Use {@link ContentType}. */\n get contentType(): string | undefined {\n return this.ContentType;\n }\n\n /**\n * Code artifacts always have content to display\n */\n public override get hasDisplayContent(): boolean {\n return true;\n }\n\n ngOnInit(): void {\n this.CodeContent = this.getContent();\n this.detectLanguage();\n }\n\n private detectLanguage(): void {\n const ct = this.ContentType?.toLowerCase() || '';\n\n // Map content types to Monaco editor language modes\n if (ct.includes('python')) {\n this.Language = 'python';\n this.LanguageLabel = 'Python';\n } else if (ct.includes('csharp') || ct.includes('c#')) {\n this.Language = 'csharp';\n this.LanguageLabel = 'C#';\n } else if (ct.includes('java')) {\n this.Language = 'java';\n this.LanguageLabel = 'Java';\n } else if (ct.includes('typescript')) {\n this.Language = 'typescript';\n this.LanguageLabel = 'TypeScript';\n } else if (ct.includes('javascript')) {\n this.Language = 'javascript';\n this.LanguageLabel = 'JavaScript';\n } else if (ct.includes('sql')) {\n this.Language = 'sql';\n this.LanguageLabel = 'SQL';\n } else if (ct.includes('css')) {\n this.Language = 'css';\n this.LanguageLabel = 'CSS';\n } else if (ct.includes('xml')) {\n this.Language = 'xml';\n this.LanguageLabel = 'XML';\n } else {\n this.Language = 'plaintext';\n this.LanguageLabel = 'Code';\n }\n }\n\n public override GetCurrentStateSnapshot(): DataSnapshot | null {\n return CreateCodeSnapshot(this.getRawContent(), this.getDisplayTitle());\n }\n\n OnCopy(): void {\n if (this.CodeContent) {\n navigator.clipboard.writeText(this.CodeContent).then(() => {\n console.log('✅ Copied code to clipboard');\n }).catch(err => {\n console.error('Failed to copy to clipboard:', err);\n });\n }\n }\n\n /** @deprecated Use {@link OnCopy}. */\n onCopy(): void {\n return this.OnCopy();\n }\n}\n"]}
@@ -17,9 +17,28 @@ import * as i0 from "@angular/core";
17
17
  export declare class ComponentArtifactViewerComponent extends BaseArtifactViewerPluginComponent implements OnInit, AfterViewInit, OnChanges {
18
18
  private adapter;
19
19
  private cdr;
20
- reactComponent?: MJReactComponent;
21
- interactiveForm?: InteractiveFormComponent;
20
+ ReactComponent?: MJReactComponent;
21
+ /** @deprecated Use {@link ReactComponent}. */
22
+ get reactComponent(): MJReactComponent | undefined;
23
+ /** @deprecated Use {@link ReactComponent}. */
24
+ set reactComponent(value: MJReactComponent | undefined);
25
+ InteractiveForm?: InteractiveFormComponent;
26
+ /** @deprecated Use {@link InteractiveForm}. */
27
+ get interactiveForm(): InteractiveFormComponent | undefined;
28
+ /** @deprecated Use {@link InteractiveForm}. */
29
+ set interactiveForm(value: InteractiveFormComponent | undefined);
22
30
  tabsChanged: EventEmitter<void>;
31
+ OpenEntityRecord: EventEmitter<{
32
+ entityName: string;
33
+ compositeKey: CompositeKey;
34
+ }>;
35
+ /**
36
+ * @deprecated Use {@link OpenEntityRecord}.
37
+ *
38
+ * The same emitter under the old binding name, so a template still binding
39
+ * (openEntityRecord) keeps working. Must stay AFTER OpenEntityRecord: class fields
40
+ * initialise in order, and the other way round this captures undefined.
41
+ */
23
42
  openEntityRecord: EventEmitter<{
24
43
  entityName: string;
25
44
  compositeKey: CompositeKey;
@@ -30,42 +49,121 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
30
49
  * the entity name. The host is responsible for confirming + invoking the
31
50
  * actual server action.
32
51
  */
52
+ ApplyFormRequested: EventEmitter<{
53
+ spec: ComponentSpec;
54
+ entityName: string;
55
+ }>;
56
+ /**
57
+ * @deprecated Use {@link ApplyFormRequested}.
58
+ *
59
+ * The same emitter under the old binding name, so a template still binding
60
+ * (applyFormRequested) keeps working. Must stay AFTER ApplyFormRequested: class fields
61
+ * initialise in order, and the other way round this captures undefined.
62
+ */
33
63
  applyFormRequested: EventEmitter<{
34
64
  spec: ComponentSpec;
35
65
  entityName: string;
36
66
  }>;
37
67
  /** True when this artifact's spec declares `componentRole: 'form'`. */
38
- isFormArtifact: boolean;
68
+ IsFormArtifact: boolean;
69
+ /** @deprecated Use {@link IsFormArtifact}. */
70
+ get isFormArtifact(): boolean;
71
+ /** @deprecated Use {@link IsFormArtifact}. */
72
+ set isFormArtifact(value: boolean);
39
73
  /** Entity the form targets — resolved from spec.entityName / dataRequirements. */
40
- formEntityInfo: EntityInfo | null;
74
+ FormEntityInfo: EntityInfo | null;
75
+ /** @deprecated Use {@link FormEntityInfo}. */
76
+ get formEntityInfo(): EntityInfo | null;
77
+ /** @deprecated Use {@link FormEntityInfo}. */
78
+ set formEntityInfo(value: EntityInfo | null);
41
79
  /** The real or fixture record currently bound to the form preview. */
42
- formRecord: BaseEntity | null;
80
+ FormRecord: BaseEntity | null;
81
+ /** @deprecated Use {@link FormRecord}. */
82
+ get formRecord(): BaseEntity | null;
83
+ /** @deprecated Use {@link FormRecord}. */
84
+ set formRecord(value: BaseEntity | null);
43
85
  /** True iff `formRecord` is a real DB row (vs a fixture NewRecord()). */
44
- formRecordIsReal: boolean;
86
+ FormRecordIsReal: boolean;
87
+ /** @deprecated Use {@link FormRecordIsReal}. */
88
+ get formRecordIsReal(): boolean;
89
+ /** @deprecated Use {@link FormRecordIsReal}. */
90
+ set formRecordIsReal(value: boolean);
45
91
  /** Label for the chip (e.g. the record's Name field). */
46
- formRecordLabel: string;
92
+ FormRecordLabel: string;
93
+ /** @deprecated Use {@link FormRecordLabel}. */
94
+ get formRecordLabel(): string;
95
+ /** @deprecated Use {@link FormRecordLabel}. */
96
+ set formRecordLabel(value: string);
47
97
  /** Picker UI state. */
48
- showRecordPicker: boolean;
49
- recordSearchTerm: string;
50
- recordSearchResults: Array<{
98
+ ShowRecordPicker: boolean;
99
+ /** @deprecated Use {@link ShowRecordPicker}. */
100
+ get showRecordPicker(): boolean;
101
+ /** @deprecated Use {@link ShowRecordPicker}. */
102
+ set showRecordPicker(value: boolean);
103
+ RecordSearchTerm: string;
104
+ /** @deprecated Use {@link RecordSearchTerm}. */
105
+ get recordSearchTerm(): string;
106
+ /** @deprecated Use {@link RecordSearchTerm}. */
107
+ set recordSearchTerm(value: string);
108
+ RecordSearchResults: Array<{
51
109
  ID: string;
52
110
  Label: string;
53
111
  }>;
54
- formInitError: string | null;
55
- component: ComponentSpec | null;
56
- componentCode: string;
57
- componentName: string;
112
+ /** @deprecated Use {@link RecordSearchResults}. */
113
+ get recordSearchResults(): Array<{
114
+ ID: string;
115
+ Label: string;
116
+ }>;
117
+ /** @deprecated Use {@link RecordSearchResults}. */
118
+ set recordSearchResults(value: Array<{
119
+ ID: string;
120
+ Label: string;
121
+ }>);
122
+ FormInitError: string | null;
123
+ /** @deprecated Use {@link FormInitError}. */
124
+ get formInitError(): string | null;
125
+ /** @deprecated Use {@link FormInitError}. */
126
+ set formInitError(value: string | null);
127
+ Component: ComponentSpec | null;
128
+ /** @deprecated Use {@link Component}. */
129
+ get component(): ComponentSpec | null;
130
+ /** @deprecated Use {@link Component}. */
131
+ set component(value: ComponentSpec | null);
132
+ ComponentCode: string;
133
+ /** @deprecated Use {@link ComponentCode}. */
134
+ get componentCode(): string;
135
+ /** @deprecated Use {@link ComponentCode}. */
136
+ set componentCode(value: string);
137
+ ComponentName: string;
138
+ /** @deprecated Use {@link ComponentName}. */
139
+ get componentName(): string;
140
+ /** @deprecated Use {@link ComponentName}. */
141
+ set componentName(value: string);
58
142
  /**
59
143
  * Cached resolved spec from the registry, preserved even after the React component
60
144
  * is destroyed (e.g., when a render error removes <mj-react-component> from the DOM).
61
145
  */
62
146
  private _cachedResolvedSpec;
147
+ get ResolvedComponentSpec(): ComponentSpec | null;
148
+ /** @deprecated Use {@link ResolvedComponentSpec}. */
63
149
  get resolvedComponentSpec(): ComponentSpec | null;
64
150
  ShowFeedbackPanel: boolean;
65
- hasError: boolean;
151
+ HasError: boolean;
152
+ /** @deprecated Use {@link HasError}. */
153
+ get hasError(): boolean;
154
+ /** @deprecated Use {@link HasError}. */
155
+ set hasError(value: boolean);
66
156
  errorMessage: string;
67
- errorDetails: string;
68
- permissionResult: PermissionEvaluationResult | null;
157
+ ErrorDetails: string;
158
+ /** @deprecated Use {@link ErrorDetails}. */
159
+ get errorDetails(): string;
160
+ /** @deprecated Use {@link ErrorDetails}. */
161
+ set errorDetails(value: string);
162
+ PermissionResult: PermissionEvaluationResult | null;
163
+ /** @deprecated Use {@link PermissionResult}. */
164
+ get permissionResult(): PermissionEvaluationResult | null;
165
+ /** @deprecated Use {@link PermissionResult}. */
166
+ set permissionResult(value: PermissionEvaluationResult | null);
69
167
  /**
70
168
  * Whether this plugin has content to display in the Display tab.
71
169
  * Returns true only if the component has code that can be rendered.
@@ -97,6 +195,8 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
97
195
  */
98
196
  private evaluatePermissions;
99
197
  /** Whether the component should be blocked from rendering due to missing permissions. */
198
+ get IsPermissionBlocked(): boolean;
199
+ /** @deprecated Use {@link IsPermissionBlocked}. */
100
200
  get isPermissionBlocked(): boolean;
101
201
  /**
102
202
  * Component initialization.
@@ -123,12 +223,21 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
123
223
  * render and <mj-react-component> is removed by the @if/else block).
124
224
  * Emits tabsChanged so the parent panel re-evaluates allTabs and renders the new tab labels.
125
225
  */
226
+ OnReactComponentInitialized(): void;
227
+ /** @deprecated Use {@link OnReactComponentInitialized}. */
126
228
  onReactComponentInitialized(): void;
229
+ OnComponentEvent(event: unknown): void;
230
+ /** @deprecated Use {@link OnComponentEvent}. */
127
231
  onComponentEvent(event: unknown): void;
128
232
  /**
129
233
  * Handle entity record open request from React component
130
234
  * Propagates the event up to parent components
131
235
  */
236
+ OnOpenEntityRecord(event: {
237
+ entityName: string;
238
+ key: CompositeKey;
239
+ }): void;
240
+ /** @deprecated Use {@link OnOpenEntityRecord}. */
132
241
  onOpenEntityRecord(event: {
133
242
  entityName: string;
134
243
  key: CompositeKey;
@@ -164,8 +273,15 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
164
273
  * Search-as-you-type for the picker. Queries by name field (or any
165
274
  * indexed string field, best-effort). Limits to 8 hits for tightness.
166
275
  */
276
+ OnPickerSearchInput(term: string): Promise<void>;
277
+ /** @deprecated Use {@link OnPickerSearchInput}. */
167
278
  onPickerSearchInput(term: string): Promise<void>;
168
279
  /** User picked a different record from the search results. Re-bind the form. */
280
+ OnPickerSelect(item: {
281
+ ID: string;
282
+ Label: string;
283
+ }): Promise<void>;
284
+ /** @deprecated Use {@link OnPickerSelect}. */
169
285
  onPickerSelect(item: {
170
286
  ID: string;
171
287
  Label: string;
@@ -181,6 +297,8 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
181
297
  * Source #2 covers the common form-artifact case where the React component lives inside
182
298
  * <mj-interactive-form> and resolvedComponentSpec falls back to the stripped local spec.
183
299
  */
300
+ OnApplyClicked(): Promise<void>;
301
+ /** @deprecated Use {@link OnApplyClicked}. */
184
302
  onApplyClicked(): Promise<void>;
185
303
  /**
186
304
  * Resolve a ComponentSpec that includes code, trying multiple sources in order.
@@ -192,6 +310,6 @@ export declare class ComponentArtifactViewerComponent extends BaseArtifactViewer
192
310
  */
193
311
  private fetchFullSpecByName;
194
312
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentArtifactViewerComponent, never>;
195
- static ɵcmp: i0.ɵɵComponentDeclaration<ComponentArtifactViewerComponent, "mj-component-artifact-viewer", never, {}, { "tabsChanged": "tabsChanged"; "openEntityRecord": "openEntityRecord"; "applyFormRequested": "applyFormRequested"; }, never, never, false, never>;
313
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComponentArtifactViewerComponent, "mj-component-artifact-viewer", never, {}, { "tabsChanged": "tabsChanged"; "OpenEntityRecord": "OpenEntityRecord"; "openEntityRecord": "openEntityRecord"; "ApplyFormRequested": "ApplyFormRequested"; "applyFormRequested": "applyFormRequested"; }, never, never, false, never>;
196
314
  }
197
315
  //# sourceMappingURL=component-artifact-viewer.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/component-artifact-viewer.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/component-artifact-viewer.component.ts"],"names":[],"mappings":"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"}