@memberjunction/ng-artifacts 6.2.0-edge.0 → 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.
- package/dist/lib/components/artifact-message-card.component.d.ts +60 -8
- package/dist/lib/components/artifact-message-card.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-message-card.component.js +135 -39
- package/dist/lib/components/artifact-message-card.component.js.map +1 -1
- package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts +58 -6
- package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-type-plugin-viewer.component.js +107 -29
- package/dist/lib/components/artifact-type-plugin-viewer.component.js.map +1 -1
- package/dist/lib/components/artifact-version-download.d.ts +5 -3
- package/dist/lib/components/artifact-version-download.d.ts.map +1 -1
- package/dist/lib/components/artifact-version-download.js +11 -7
- package/dist/lib/components/artifact-version-download.js.map +1 -1
- package/dist/lib/components/artifact-version-history.component.d.ts +74 -8
- package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-version-history.component.js +152 -34
- package/dist/lib/components/artifact-version-history.component.js.map +1 -1
- package/dist/lib/components/artifact-viewer-panel.component.d.ts +328 -35
- package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
- package/dist/lib/components/artifact-viewer-panel.component.js +701 -213
- package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
- package/dist/lib/components/file-artifact-toolbar.component.d.ts +112 -10
- package/dist/lib/components/file-artifact-toolbar.component.d.ts.map +1 -1
- package/dist/lib/components/file-artifact-toolbar.component.js +197 -23
- package/dist/lib/components/file-artifact-toolbar.component.js.map +1 -1
- package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +9 -1
- package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/audio-artifact-viewer.component.js +20 -4
- package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts +23 -5
- package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/code-artifact-viewer.component.js +69 -31
- package/dist/lib/components/plugins/code-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts +136 -18
- package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/component-artifact-viewer.component.js +285 -97
- package/dist/lib/components/plugins/component-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts +2 -2
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +7 -7
- package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
- package/dist/lib/components/plugins/component-permission-evaluation.d.ts +2 -0
- package/dist/lib/components/plugins/component-permission-evaluation.d.ts.map +1 -1
- package/dist/lib/components/plugins/component-permission-evaluation.js +6 -2
- package/dist/lib/components/plugins/component-permission-evaluation.js.map +1 -1
- package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts +17 -6
- package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/data-artifact-viewer.component.js +32 -22
- package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts +56 -4
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +142 -36
- package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts +14 -2
- package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/docx-artifact-viewer.component.js +32 -8
- package/dist/lib/components/plugins/docx-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts +17 -3
- package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/html-artifact-viewer.component.js +36 -8
- package/dist/lib/components/plugins/html-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts +41 -5
- package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/image-artifact-viewer.component.js +102 -30
- package/dist/lib/components/plugins/image-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts +33 -5
- package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/json-artifact-viewer.component.js +89 -33
- package/dist/lib/components/plugins/json-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts +12 -2
- package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/markdown-artifact-viewer.component.js +28 -8
- package/dist/lib/components/plugins/markdown-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +4 -0
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +14 -6
- package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts +47 -5
- package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/pdf-artifact-viewer.component.js +129 -45
- package/dist/lib/components/plugins/pdf-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/save-query-dialog.component.d.ts +5 -1
- package/dist/lib/components/plugins/save-query-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/save-query-dialog.component.js +12 -4
- package/dist/lib/components/plugins/save-query-dialog.component.js.map +1 -1
- package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts +17 -3
- package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/svg-artifact-viewer.component.js +36 -8
- package/dist/lib/components/plugins/svg-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +9 -1
- package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/video-artifact-viewer.component.js +20 -4
- package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts +28 -4
- package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js +64 -16
- package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js.map +1 -1
- package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +9 -1
- package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
- package/dist/lib/components/previews/audio-artifact-preview.component.js +20 -4
- package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
- package/dist/lib/components/previews/image-artifact-preview.component.d.ts +16 -2
- package/dist/lib/components/previews/image-artifact-preview.component.d.ts.map +1 -1
- package/dist/lib/components/previews/image-artifact-preview.component.js +35 -7
- package/dist/lib/components/previews/image-artifact-preview.component.js.map +1 -1
- package/dist/lib/components/previews/video-artifact-preview.component.d.ts +9 -1
- package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
- package/dist/lib/components/previews/video-artifact-preview.component.js +20 -4
- package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
- package/dist/lib/interfaces/artifact-viewer-plugin.interface.js.map +1 -1
- package/dist/lib/services/artifact-file.service.d.ts +8 -0
- package/dist/lib/services/artifact-file.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-file.service.js +22 -6
- package/dist/lib/services/artifact-file.service.js.map +1 -1
- package/dist/lib/services/artifact-icon.service.d.ts +2 -0
- package/dist/lib/services/artifact-icon.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-icon.service.js +5 -1
- package/dist/lib/services/artifact-icon.service.js.map +1 -1
- package/dist/lib/services/artifact-preview-resolver.service.d.ts +2 -0
- package/dist/lib/services/artifact-preview-resolver.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-preview-resolver.service.js +5 -1
- package/dist/lib/services/artifact-preview-resolver.service.js.map +1 -1
- package/dist/lib/snapshot-helpers.d.ts +10 -0
- package/dist/lib/snapshot-helpers.d.ts.map +1 -1
- package/dist/lib/snapshot-helpers.js +25 -5
- package/dist/lib/snapshot-helpers.js.map +1 -1
- 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":";;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAgB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;;;;;IAgB7E,8BAA4D;IACxD,uBAAgD;IAChD,4BAAM;IAAA,YAAkB;IAC5B,AAD4B,iBAAO,EAC7B;;;IADI,eAAkB;IAAlB,yCAAkB;;;;IAG5B,0CAA8F;IAAzB,yMAAS,qBAAc,KAAC;IAAC,iBAAkB;;;IAAlE,2CAAsB;;;IAEpE,8BAAiC;IAC7B,uBAA2C;IAC3C,4BAAM;IAAA,mCAAc;IACxB,AADwB,iBAAO,EACzB;;AAvBtB;;;;;;GAMG;AA2DI,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,iCAAiC;IAC9D,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC1C,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE1C,QAAQ,GAAG,EAAE,CAAC;IAErB,wCAAwC;IACxC,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IACD,wCAAwC;IACxC,IAAW,QAAQ,CAAC,KAAK;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IACM,YAAY,GAAG,EAAE,CAAC;IAEzB;;;;OAIG;IACI,WAAW,GAAiB,EAAE,CAAC;IAEtC,mGAAmG;IAC3F,WAAW,CAAC,GAAW;QAC3B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG;YAClB,CAAC,CAAC;gBACI;oBACI,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,OAAO;oBACvC,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,IAAI,SAAS;iBACxD;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,MAAM,CAAU,oBAAoB,GAAoC,6BAA6B,CAAC;IAE7G,kGAAkG;IAC3F,MAAM,CAAC,gBAAgB,CAAC,gBAAwB,EAAE,WAAoB;QACzE,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;IACrE,CAAC;IAED,IAAoB,iBAAiB;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,eAAe,EAAE,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACJ,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;gBAC9C,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,YAAY,GAAG,qCAAqC,CAAC;gBAC9D,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,GAAG,yBAAyB,MAAM,EAAE,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,YAAY;QACf,IAAI,CAAC,YAAY,GAAG,+EAA+E,CAAC;QACpG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,4CAA4C;IACrC,YAAY;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAED,yFAAyF;IAClF,YAAY;QACf,yEAAyE;IAC7E,CAAC;IAED,4CAA4C;IACrC,YAAY;QACf,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAEe,uBAAuB;QACnC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC;QAC7E,IAAI,CAAC,MAAM,GAAG;YACV,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,SAAS;YACpD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,IAAI,SAAS;YACpD,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;SAChD,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;6RA9GQ,4BAA4B,yBAA5B,4BAA4B;6DAA5B,4BAA4B;YAtDjC,8BAA+C;YAQzC,AAFA,AALF,8FAAoB,oFAKG,wEAEd;YAMb,iBAAM;;YAdoB,sCAAoB;YAC1C,cAYC;YAZD,6DAYC;;;AAyCA,4BAA4B;IADxC,aAAa,CAAC,iCAAiC,EAAE,2BAA2B,CAAC;GACjE,4BAA4B,CA+GxC;;iFA/GY,4BAA4B;cA1DxC,SAAS;6BACM,KAAK,YACP,0BAA0B,YAC1B;;;;;;;;;;;;;;;;KAgBT;;kFAuCQ,4BAA4B","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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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.
|
|
62
|
+
this.CodeContent = this.getContent();
|
|
31
63
|
this.detectLanguage();
|
|
32
64
|
}
|
|
33
65
|
detectLanguage() {
|
|
34
|
-
const ct = this.
|
|
66
|
+
const ct = this.ContentType?.toLowerCase() || '';
|
|
35
67
|
// Map content types to Monaco editor language modes
|
|
36
68
|
if (ct.includes('python')) {
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
69
|
+
this.Language = 'python';
|
|
70
|
+
this.LanguageLabel = 'Python';
|
|
39
71
|
}
|
|
40
72
|
else if (ct.includes('csharp') || ct.includes('c#')) {
|
|
41
|
-
this.
|
|
42
|
-
this.
|
|
73
|
+
this.Language = 'csharp';
|
|
74
|
+
this.LanguageLabel = 'C#';
|
|
43
75
|
}
|
|
44
76
|
else if (ct.includes('java')) {
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
77
|
+
this.Language = 'java';
|
|
78
|
+
this.LanguageLabel = 'Java';
|
|
47
79
|
}
|
|
48
80
|
else if (ct.includes('typescript')) {
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
81
|
+
this.Language = 'typescript';
|
|
82
|
+
this.LanguageLabel = 'TypeScript';
|
|
51
83
|
}
|
|
52
84
|
else if (ct.includes('javascript')) {
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
85
|
+
this.Language = 'javascript';
|
|
86
|
+
this.LanguageLabel = 'JavaScript';
|
|
55
87
|
}
|
|
56
88
|
else if (ct.includes('sql')) {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
89
|
+
this.Language = 'sql';
|
|
90
|
+
this.LanguageLabel = 'SQL';
|
|
59
91
|
}
|
|
60
92
|
else if (ct.includes('css')) {
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
93
|
+
this.Language = 'css';
|
|
94
|
+
this.LanguageLabel = 'CSS';
|
|
63
95
|
}
|
|
64
96
|
else if (ct.includes('xml')) {
|
|
65
|
-
this.
|
|
66
|
-
this.
|
|
97
|
+
this.Language = 'xml';
|
|
98
|
+
this.LanguageLabel = 'XML';
|
|
67
99
|
}
|
|
68
100
|
else {
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
101
|
+
this.Language = 'plaintext';
|
|
102
|
+
this.LanguageLabel = 'Code';
|
|
71
103
|
}
|
|
72
104
|
}
|
|
73
105
|
GetCurrentStateSnapshot() {
|
|
74
|
-
return
|
|
106
|
+
return CreateCodeSnapshot(this.getRawContent(), this.getDisplayTitle());
|
|
75
107
|
}
|
|
76
|
-
|
|
77
|
-
if (this.
|
|
78
|
-
navigator.clipboard.writeText(this.
|
|
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, {
|
|
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;
|
|
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
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
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
|
-
|
|
68
|
-
|
|
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":"AAAA,OAAO,EAAwB,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAU,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE/I,OAAO,EAAE,iCAAiC,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAA8B,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAExG,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,OAAO,EAAgC,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;;AAE7G;;;;;;;GAOG;AACH,qBAOa,gCAAiC,SAAQ,iCAAkC,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS;
|
|
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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"}
|