@memberjunction/ng-conversations 2.104.0 → 2.105.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/components/collection/collection-view.component.d.ts +5 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +53 -11
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +53 -13
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +455 -289
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +9 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +258 -71
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +6 -0
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +35 -13
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +49 -12
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +579 -221
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +16 -5
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +136 -64
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +11 -5
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +48 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +24 -9
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +47 -0
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -0
- package/dist/lib/components/task/tasks-full-view.component.js +368 -0
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts +29 -0
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -0
- package/dist/lib/components/tasks/task-widget.component.js +385 -0
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +22 -8
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +195 -99
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +3 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +14 -14
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +43 -4
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +288 -46
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +40 -46
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +28 -42
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +29 -1
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +6 -5
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +18 -19
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +96 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -0
- package/dist/lib/services/data-cache.service.js +203 -0
- package/dist/lib/services/data-cache.service.js.map +1 -0
- package/dist/public-api.d.ts +3 -6
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -6
- package/dist/public-api.js.map +1 -1
- package/package.json +12 -10
- package/dist/lib/components/artifact/artifact-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-panel.component.js +0 -237
- package/dist/lib/components/artifact/artifact-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +0 -39
- package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-upload-modal.component.js +0 -384
- package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts +0 -28
- package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-version-history.component.js +0 -280
- package/dist/lib/components/artifact/artifact-version-history.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +0 -22
- package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js +0 -182
- package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts +0 -27
- package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/artifact-viewer.component.js +0 -266
- package/dist/lib/components/artifact/artifact-viewer.component.js.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.d.ts +0 -46
- package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +0 -1
- package/dist/lib/components/artifact/inline-artifact.component.js +0 -447
- package/dist/lib/components/artifact/inline-artifact.component.js.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.d.ts +0 -42
- package/dist/lib/components/task/task-form-modal.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-form-modal.component.js +0 -329
- package/dist/lib/components/task/task-form-modal.component.js.map +0 -1
- package/dist/lib/components/task/task-item.component.d.ts +0 -22
- package/dist/lib/components/task/task-item.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-item.component.js +0 -234
- package/dist/lib/components/task/task-item.component.js.map +0 -1
- package/dist/lib/components/task/task-list.component.d.ts +0 -32
- package/dist/lib/components/task/task-list.component.d.ts.map +0 -1
- package/dist/lib/components/task/task-list.component.js +0 -290
- package/dist/lib/components/task/task-list.component.js.map +0 -1
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { RunView } from '@memberjunction/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
function ArtifactVersionHistoryComponent_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
6
|
-
i0.ɵɵelementStart(0, "div", 8);
|
|
7
|
-
i0.ɵɵelement(1, "i", 9);
|
|
8
|
-
i0.ɵɵelementStart(2, "p");
|
|
9
|
-
i0.ɵɵtext(3, "No version history available");
|
|
10
|
-
i0.ɵɵelementEnd()();
|
|
11
|
-
} }
|
|
12
|
-
function ArtifactVersionHistoryComponent_div_8_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
14
|
-
i0.ɵɵelementStart(0, "div", 18)(1, "button", 19);
|
|
15
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_div_8_div_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const version_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.onRestoreVersion(version_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
16
|
-
i0.ɵɵelement(2, "i", 20);
|
|
17
|
-
i0.ɵɵtext(3, " Restore ");
|
|
18
|
-
i0.ɵɵelementEnd();
|
|
19
|
-
i0.ɵɵelementStart(4, "button", 19);
|
|
20
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_div_8_div_11_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r4); const version_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.onCompareVersion(version_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
21
|
-
i0.ɵɵelement(5, "i", 21);
|
|
22
|
-
i0.ɵɵtext(6, " Compare ");
|
|
23
|
-
i0.ɵɵelementEnd();
|
|
24
|
-
i0.ɵɵelementStart(7, "button", 19);
|
|
25
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_div_8_div_11_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r4); const version_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); ctx_r2.onDownloadVersion(version_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
26
|
-
i0.ɵɵelement(8, "i", 22);
|
|
27
|
-
i0.ɵɵtext(9, " Download ");
|
|
28
|
-
i0.ɵɵelementEnd()();
|
|
29
|
-
} }
|
|
30
|
-
function ArtifactVersionHistoryComponent_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
32
|
-
i0.ɵɵelementStart(0, "div", 10);
|
|
33
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_div_8_Template_div_click_0_listener() { const version_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSelectVersion(version_r2)); });
|
|
34
|
-
i0.ɵɵelementStart(1, "div", 11)(2, "div", 12)(3, "span", 13);
|
|
35
|
-
i0.ɵɵtext(4);
|
|
36
|
-
i0.ɵɵelementEnd();
|
|
37
|
-
i0.ɵɵelementStart(5, "span", 14);
|
|
38
|
-
i0.ɵɵtext(6);
|
|
39
|
-
i0.ɵɵpipe(7, "date");
|
|
40
|
-
i0.ɵɵelementEnd()();
|
|
41
|
-
i0.ɵɵelementStart(8, "div", 15)(9, "span", 16);
|
|
42
|
-
i0.ɵɵtext(10);
|
|
43
|
-
i0.ɵɵelementEnd()()();
|
|
44
|
-
i0.ɵɵtemplate(11, ArtifactVersionHistoryComponent_div_8_div_11_Template, 10, 0, "div", 17);
|
|
45
|
-
i0.ɵɵelementEnd();
|
|
46
|
-
} if (rf & 2) {
|
|
47
|
-
const version_r2 = ctx.$implicit;
|
|
48
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
49
|
-
i0.ɵɵclassProp("selected", version_r2.VersionNumber === ctx_r2.selectedVersion);
|
|
50
|
-
i0.ɵɵadvance(4);
|
|
51
|
-
i0.ɵɵtextInterpolate1("v", version_r2.VersionNumber, "");
|
|
52
|
-
i0.ɵɵadvance(2);
|
|
53
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(7, 6, version_r2.__mj_CreatedAt, "short"));
|
|
54
|
-
i0.ɵɵadvance(4);
|
|
55
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r2.getContentSize(version_r2.Content), " ");
|
|
56
|
-
i0.ɵɵadvance();
|
|
57
|
-
i0.ɵɵproperty("ngIf", version_r2.VersionNumber === ctx_r2.selectedVersion);
|
|
58
|
-
} }
|
|
59
|
-
function ArtifactVersionHistoryComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
-
const _r5 = i0.ɵɵgetCurrentView();
|
|
61
|
-
i0.ɵɵelementStart(0, "div", 23)(1, "div", 24)(2, "h4");
|
|
62
|
-
i0.ɵɵtext(3);
|
|
63
|
-
i0.ɵɵelementEnd();
|
|
64
|
-
i0.ɵɵelementStart(4, "button", 25);
|
|
65
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_div_9_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showDiff = false); });
|
|
66
|
-
i0.ɵɵelement(5, "i", 3);
|
|
67
|
-
i0.ɵɵelementEnd()();
|
|
68
|
-
i0.ɵɵelementStart(6, "div", 26)(7, "pre");
|
|
69
|
-
i0.ɵɵtext(8);
|
|
70
|
-
i0.ɵɵelementEnd()()();
|
|
71
|
-
} if (rf & 2) {
|
|
72
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
|
73
|
-
i0.ɵɵadvance(3);
|
|
74
|
-
i0.ɵɵtextInterpolate2("Changes from v", (ctx_r2.selectedVersion || 1) - 1, " to v", ctx_r2.selectedVersion, "");
|
|
75
|
-
i0.ɵɵadvance(5);
|
|
76
|
-
i0.ɵɵtextInterpolate(ctx_r2.getDiffSummary());
|
|
77
|
-
} }
|
|
78
|
-
export class ArtifactVersionHistoryComponent {
|
|
79
|
-
artifact;
|
|
80
|
-
currentUser;
|
|
81
|
-
closed = new EventEmitter();
|
|
82
|
-
versionRestored = new EventEmitter();
|
|
83
|
-
versionSelected = new EventEmitter();
|
|
84
|
-
versions = [];
|
|
85
|
-
selectedVersion = null;
|
|
86
|
-
showDiff = false;
|
|
87
|
-
currentVersionContent = '';
|
|
88
|
-
previousVersionContent = '';
|
|
89
|
-
ngOnInit() {
|
|
90
|
-
this.loadVersions();
|
|
91
|
-
}
|
|
92
|
-
async loadVersions() {
|
|
93
|
-
try {
|
|
94
|
-
const rv = new RunView();
|
|
95
|
-
const result = await rv.RunView({
|
|
96
|
-
EntityName: 'MJ: Artifact Versions',
|
|
97
|
-
ExtraFilter: `ArtifactID='${this.artifact.ID}'`,
|
|
98
|
-
OrderBy: 'VersionNumber DESC',
|
|
99
|
-
ResultType: 'entity_object'
|
|
100
|
-
}, this.currentUser);
|
|
101
|
-
if (result.Success) {
|
|
102
|
-
this.versions = result.Results || [];
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
console.error('Failed to load version history:', error);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
onSelectVersion(version) {
|
|
110
|
-
this.selectedVersion = version.VersionNumber;
|
|
111
|
-
this.versionSelected.emit(version.VersionNumber);
|
|
112
|
-
}
|
|
113
|
-
async onRestoreVersion(version) {
|
|
114
|
-
if (!confirm(`Restore to version ${version.VersionNumber}? This will create a new version.`))
|
|
115
|
-
return;
|
|
116
|
-
try {
|
|
117
|
-
// Restoring creates a new version with the old content
|
|
118
|
-
this.versionRestored.emit(version.VersionNumber);
|
|
119
|
-
alert(`Version ${version.VersionNumber} has been restored as the latest version`);
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
console.error('Failed to restore version:', error);
|
|
123
|
-
alert('Failed to restore version');
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
async onCompareVersion(version) {
|
|
127
|
-
if (version.VersionNumber === 1) {
|
|
128
|
-
alert('Cannot compare: this is the first version');
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
try {
|
|
132
|
-
this.currentVersionContent = version.Content || '';
|
|
133
|
-
// Load previous version
|
|
134
|
-
const previousVersion = this.versions.find(v => v.VersionNumber === version.VersionNumber - 1);
|
|
135
|
-
if (previousVersion) {
|
|
136
|
-
this.previousVersionContent = previousVersion.Content || '';
|
|
137
|
-
this.showDiff = true;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
catch (error) {
|
|
141
|
-
console.error('Failed to load version for comparison:', error);
|
|
142
|
-
alert('Failed to compare versions');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
onDownloadVersion(version) {
|
|
146
|
-
try {
|
|
147
|
-
const content = version.Content || '';
|
|
148
|
-
const blob = new Blob([content], { type: 'text/plain' });
|
|
149
|
-
const url = window.URL.createObjectURL(blob);
|
|
150
|
-
const link = document.createElement('a');
|
|
151
|
-
link.href = url;
|
|
152
|
-
link.download = `${this.artifact.Name}_v${version.VersionNumber}.txt`;
|
|
153
|
-
link.click();
|
|
154
|
-
window.URL.revokeObjectURL(url);
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
console.error('Failed to download version:', error);
|
|
158
|
-
alert('Failed to download version');
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
getContentSize(content) {
|
|
162
|
-
if (!content)
|
|
163
|
-
return '0 B';
|
|
164
|
-
const bytes = new Blob([content]).size;
|
|
165
|
-
if (bytes < 1024)
|
|
166
|
-
return `${bytes} B`;
|
|
167
|
-
if (bytes < 1024 * 1024)
|
|
168
|
-
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
169
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
170
|
-
}
|
|
171
|
-
getDiffSummary() {
|
|
172
|
-
// Simple line-based diff summary
|
|
173
|
-
const currentLines = this.currentVersionContent.split('\n');
|
|
174
|
-
const previousLines = this.previousVersionContent.split('\n');
|
|
175
|
-
const added = currentLines.length - previousLines.length;
|
|
176
|
-
const summary = `Lines: ${previousLines.length} → ${currentLines.length} (${added > 0 ? '+' : ''}${added})\n\n`;
|
|
177
|
-
// Show a simple comparison
|
|
178
|
-
return summary + '(Full diff view would require a diff library)';
|
|
179
|
-
}
|
|
180
|
-
onClose() {
|
|
181
|
-
this.closed.emit();
|
|
182
|
-
}
|
|
183
|
-
static ɵfac = function ArtifactVersionHistoryComponent_Factory(t) { return new (t || ArtifactVersionHistoryComponent)(); };
|
|
184
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactVersionHistoryComponent, selectors: [["mj-artifact-version-history"]], inputs: { artifact: "artifact", currentUser: "currentUser" }, outputs: { closed: "closed", versionRestored: "versionRestored", versionSelected: "versionSelected" }, decls: 10, vars: 3, consts: [[1, "version-history"], [1, "history-header"], ["title", "Close", 1, "btn-close", 3, "click"], [1, "fas", "fa-times"], [1, "version-list"], ["class", "empty-state", 4, "ngIf"], ["class", "version-item", 3, "selected", "click", 4, "ngFor", "ngForOf"], ["class", "diff-panel", 4, "ngIf"], [1, "empty-state"], [1, "fas", "fa-history"], [1, "version-item", 3, "click"], [1, "version-header"], [1, "version-info"], [1, "version-number"], [1, "version-date"], [1, "version-meta"], [1, "version-size"], ["class", "version-actions", 4, "ngIf"], [1, "version-actions"], [1, "btn-action", 3, "click"], [1, "fas", "fa-undo"], [1, "fas", "fa-code-compare"], [1, "fas", "fa-download"], [1, "diff-panel"], [1, "diff-header"], [1, "btn-close-diff", 3, "click"], [1, "diff-content"]], template: function ArtifactVersionHistoryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
185
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
|
|
186
|
-
i0.ɵɵtext(3, "Version History");
|
|
187
|
-
i0.ɵɵelementEnd();
|
|
188
|
-
i0.ɵɵelementStart(4, "button", 2);
|
|
189
|
-
i0.ɵɵlistener("click", function ArtifactVersionHistoryComponent_Template_button_click_4_listener() { return ctx.onClose(); });
|
|
190
|
-
i0.ɵɵelement(5, "i", 3);
|
|
191
|
-
i0.ɵɵelementEnd()();
|
|
192
|
-
i0.ɵɵelementStart(6, "div", 4);
|
|
193
|
-
i0.ɵɵtemplate(7, ArtifactVersionHistoryComponent_div_7_Template, 4, 0, "div", 5)(8, ArtifactVersionHistoryComponent_div_8_Template, 12, 9, "div", 6);
|
|
194
|
-
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵtemplate(9, ArtifactVersionHistoryComponent_div_9_Template, 9, 3, "div", 7);
|
|
196
|
-
i0.ɵɵelementEnd();
|
|
197
|
-
} if (rf & 2) {
|
|
198
|
-
i0.ɵɵadvance(7);
|
|
199
|
-
i0.ɵɵproperty("ngIf", ctx.versions.length === 0);
|
|
200
|
-
i0.ɵɵadvance();
|
|
201
|
-
i0.ɵɵproperty("ngForOf", ctx.versions);
|
|
202
|
-
i0.ɵɵadvance();
|
|
203
|
-
i0.ɵɵproperty("ngIf", ctx.showDiff && ctx.currentVersionContent && ctx.previousVersionContent && ctx.selectedVersion);
|
|
204
|
-
} }, dependencies: [i1.NgForOf, i1.NgIf, i1.DatePipe], styles: [".version-history[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: white; }\n .history-header[_ngcontent-%COMP%] { padding: 16px; border-bottom: 1px solid #D9D9D9; display: flex; justify-content: space-between; align-items: center; }\n .history-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] { margin: 0; font-size: 16px; }\n .btn-close[_ngcontent-%COMP%] { padding: 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .btn-close[_ngcontent-%COMP%]:hover { background: rgba(0,0,0,0.1); }\n\n .version-list[_ngcontent-%COMP%] { flex: 1; overflow-y: auto; }\n .version-item[_ngcontent-%COMP%] { padding: 16px; border-bottom: 1px solid #E8E8E8; cursor: pointer; transition: background 150ms ease; }\n .version-item[_ngcontent-%COMP%]:hover { background: #F9F9F9; }\n .version-item.selected[_ngcontent-%COMP%] { background: #E3F2FD; border-left: 3px solid #1976D2; }\n\n .version-header[_ngcontent-%COMP%] { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; }\n .version-info[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; }\n .version-number[_ngcontent-%COMP%] { font-size: 14px; font-weight: 600; }\n .version-date[_ngcontent-%COMP%] { font-size: 12px; color: #666; }\n .version-meta[_ngcontent-%COMP%] { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; font-size: 12px; color: #666; }\n .version-author[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; }\n .version-size[_ngcontent-%COMP%] { color: #999; }\n\n .version-notes[_ngcontent-%COMP%] { font-size: 13px; color: #333; margin-bottom: 8px; }\n\n .version-actions[_ngcontent-%COMP%] { display: flex; gap: 8px; margin-top: 12px; }\n .btn-action[_ngcontent-%COMP%] { padding: 6px 12px; background: #0076B6; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 12px; display: flex; align-items: center; gap: 6px; }\n .btn-action[_ngcontent-%COMP%]:hover { background: #005A8C; }\n\n .empty-state[_ngcontent-%COMP%] { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; color: #999; }\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 48px; margin-bottom: 16px; }\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { margin: 0; font-size: 14px; }\n\n .diff-panel[_ngcontent-%COMP%] { border-top: 2px solid #D9D9D9; max-height: 50%; overflow: hidden; display: flex; flex-direction: column; }\n .diff-header[_ngcontent-%COMP%] { padding: 12px 16px; background: #F8F8F8; border-bottom: 1px solid #D9D9D9; display: flex; justify-content: space-between; align-items: center; }\n .diff-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] { margin: 0; font-size: 13px; font-weight: 600; }\n .btn-close-diff[_ngcontent-%COMP%] { padding: 4px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .btn-close-diff[_ngcontent-%COMP%]:hover { background: rgba(0,0,0,0.1); }\n .diff-content[_ngcontent-%COMP%] { flex: 1; overflow-y: auto; padding: 16px; }\n .diff-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] { margin: 0; font-family: 'Courier New', monospace; font-size: 12px; white-space: pre-wrap; }"] });
|
|
205
|
-
}
|
|
206
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArtifactVersionHistoryComponent, [{
|
|
207
|
-
type: Component,
|
|
208
|
-
args: [{ selector: 'mj-artifact-version-history', template: `
|
|
209
|
-
<div class="version-history">
|
|
210
|
-
<div class="history-header">
|
|
211
|
-
<h3>Version History</h3>
|
|
212
|
-
<button class="btn-close" (click)="onClose()" title="Close">
|
|
213
|
-
<i class="fas fa-times"></i>
|
|
214
|
-
</button>
|
|
215
|
-
</div>
|
|
216
|
-
|
|
217
|
-
<div class="version-list">
|
|
218
|
-
<div *ngIf="versions.length === 0" class="empty-state">
|
|
219
|
-
<i class="fas fa-history"></i>
|
|
220
|
-
<p>No version history available</p>
|
|
221
|
-
</div>
|
|
222
|
-
|
|
223
|
-
<div
|
|
224
|
-
*ngFor="let version of versions"
|
|
225
|
-
class="version-item"
|
|
226
|
-
[class.selected]="version.VersionNumber === selectedVersion"
|
|
227
|
-
(click)="onSelectVersion(version)">
|
|
228
|
-
|
|
229
|
-
<div class="version-header">
|
|
230
|
-
<div class="version-info">
|
|
231
|
-
<span class="version-number">v{{ version.VersionNumber }}</span>
|
|
232
|
-
<span class="version-date">{{ version.__mj_CreatedAt | date:'short' }}</span>
|
|
233
|
-
</div>
|
|
234
|
-
<div class="version-meta">
|
|
235
|
-
<span class="version-size">
|
|
236
|
-
{{ getContentSize(version.Content) }}
|
|
237
|
-
</span>
|
|
238
|
-
</div>
|
|
239
|
-
</div>
|
|
240
|
-
|
|
241
|
-
<div class="version-actions" *ngIf="version.VersionNumber === selectedVersion">
|
|
242
|
-
<button class="btn-action" (click)="onRestoreVersion(version); $event.stopPropagation()">
|
|
243
|
-
<i class="fas fa-undo"></i> Restore
|
|
244
|
-
</button>
|
|
245
|
-
<button class="btn-action" (click)="onCompareVersion(version); $event.stopPropagation()">
|
|
246
|
-
<i class="fas fa-code-compare"></i> Compare
|
|
247
|
-
</button>
|
|
248
|
-
<button class="btn-action" (click)="onDownloadVersion(version); $event.stopPropagation()">
|
|
249
|
-
<i class="fas fa-download"></i> Download
|
|
250
|
-
</button>
|
|
251
|
-
</div>
|
|
252
|
-
</div>
|
|
253
|
-
</div>
|
|
254
|
-
|
|
255
|
-
<div class="diff-panel" *ngIf="showDiff && currentVersionContent && previousVersionContent && selectedVersion">
|
|
256
|
-
<div class="diff-header">
|
|
257
|
-
<h4>Changes from v{{ (selectedVersion || 1) - 1 }} to v{{ selectedVersion }}</h4>
|
|
258
|
-
<button class="btn-close-diff" (click)="showDiff = false">
|
|
259
|
-
<i class="fas fa-times"></i>
|
|
260
|
-
</button>
|
|
261
|
-
</div>
|
|
262
|
-
<div class="diff-content">
|
|
263
|
-
<pre>{{ getDiffSummary() }}</pre>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
</div>
|
|
267
|
-
`, styles: ["\n .version-history { display: flex; flex-direction: column; height: 100%; background: white; }\n .history-header { padding: 16px; border-bottom: 1px solid #D9D9D9; display: flex; justify-content: space-between; align-items: center; }\n .history-header h3 { margin: 0; font-size: 16px; }\n .btn-close { padding: 6px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .btn-close:hover { background: rgba(0,0,0,0.1); }\n\n .version-list { flex: 1; overflow-y: auto; }\n .version-item { padding: 16px; border-bottom: 1px solid #E8E8E8; cursor: pointer; transition: background 150ms ease; }\n .version-item:hover { background: #F9F9F9; }\n .version-item.selected { background: #E3F2FD; border-left: 3px solid #1976D2; }\n\n .version-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; }\n .version-info { display: flex; flex-direction: column; gap: 4px; }\n .version-number { font-size: 14px; font-weight: 600; }\n .version-date { font-size: 12px; color: #666; }\n .version-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; font-size: 12px; color: #666; }\n .version-author { display: flex; align-items: center; gap: 4px; }\n .version-size { color: #999; }\n\n .version-notes { font-size: 13px; color: #333; margin-bottom: 8px; }\n\n .version-actions { display: flex; gap: 8px; margin-top: 12px; }\n .btn-action { padding: 6px 12px; background: #0076B6; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 12px; display: flex; align-items: center; gap: 6px; }\n .btn-action:hover { background: #005A8C; }\n\n .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; color: #999; }\n .empty-state i { font-size: 48px; margin-bottom: 16px; }\n .empty-state p { margin: 0; font-size: 14px; }\n\n .diff-panel { border-top: 2px solid #D9D9D9; max-height: 50%; overflow: hidden; display: flex; flex-direction: column; }\n .diff-header { padding: 12px 16px; background: #F8F8F8; border-bottom: 1px solid #D9D9D9; display: flex; justify-content: space-between; align-items: center; }\n .diff-header h4 { margin: 0; font-size: 13px; font-weight: 600; }\n .btn-close-diff { padding: 4px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #666; }\n .btn-close-diff:hover { background: rgba(0,0,0,0.1); }\n .diff-content { flex: 1; overflow-y: auto; padding: 16px; }\n .diff-content pre { margin: 0; font-family: 'Courier New', monospace; font-size: 12px; white-space: pre-wrap; }\n "] }]
|
|
268
|
-
}], null, { artifact: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], currentUser: [{
|
|
271
|
-
type: Input
|
|
272
|
-
}], closed: [{
|
|
273
|
-
type: Output
|
|
274
|
-
}], versionRestored: [{
|
|
275
|
-
type: Output
|
|
276
|
-
}], versionSelected: [{
|
|
277
|
-
type: Output
|
|
278
|
-
}] }); })();
|
|
279
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactVersionHistoryComponent, { className: "ArtifactVersionHistoryComponent", filePath: "src/lib/components/artifact/artifact-version-history.component.ts", lineNumber: 106 }); })();
|
|
280
|
-
//# sourceMappingURL=artifact-version-history.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-version-history.component.js","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-version-history.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAU,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAY,OAAO,EAAE,MAAM,sBAAsB,CAAC;;;;IAcjD,8BAAuD;IACrD,uBAA8B;IAC9B,yBAAG;IAAA,4CAA4B;IACjC,AADiC,iBAAI,EAC/B;;;;IAqBF,AADF,+BAA+E,iBACY;IAA9D,mOAAS,mCAAyB,wBAAE,wBAAwB,KAAC;IACtF,wBAA2B;IAAC,yBAC9B;IAAA,iBAAS;IACT,kCAAyF;IAA9D,mOAAS,mCAAyB,wBAAE,wBAAwB,KAAC;IACtF,wBAAmC;IAAC,yBACtC;IAAA,iBAAS;IACT,kCAA0F;IAA/D,mOAAS,oCAA0B,wBAAE,wBAAwB,KAAC;IACvF,wBAA+B;IAAC,0BAClC;IACF,AADE,iBAAS,EACL;;;;IA5BR,+BAIqC;IAAnC,qNAAS,kCAAwB,KAAC;IAI9B,AADF,AADF,+BAA4B,cACA,eACK;IAAA,YAA4B;IAAA,iBAAO;IAChE,gCAA2B;IAAA,YAA2C;;IACxE,AADwE,iBAAO,EACzE;IAEJ,AADF,+BAA0B,eACG;IACzB,aACF;IAEJ,AADE,AADE,iBAAO,EACH,EACF;IAEN,0FAA+E;IAWjF,iBAAM;;;;IA1BJ,+EAA4D;IAK3B,eAA4B;IAA5B,wDAA4B;IAC9B,eAA2C;IAA3C,8EAA2C;IAIpE,eACF;IADE,0EACF;IAI0B,cAA+C;IAA/C,0EAA+C;;;;IAgB7E,AADF,AADF,+BAA+G,cACpF,SACnB;IAAA,YAAwE;IAAA,iBAAK;IACjF,kCAA0D;IAA3B,6MAAoB,KAAK,KAAC;IACvD,uBAA4B;IAEhC,AADE,iBAAS,EACL;IAEJ,AADF,+BAA0B,UACnB;IAAA,YAAsB;IAE/B,AADE,AAD6B,iBAAM,EAC7B,EACF;;;IARE,eAAwE;IAAxE,+GAAwE;IAMvE,eAAsB;IAAtB,6CAAsB;;AA4CrC,MAAM,OAAO,+BAA+B;IACjC,QAAQ,CAAkB;IAC1B,WAAW,CAAY;IAEtB,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;IAClC,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;IAEhD,QAAQ,GAA4B,EAAE,CAAC;IACvC,eAAe,GAAkB,IAAI,CAAC;IACtC,QAAQ,GAAY,KAAK,CAAC;IAC1B,qBAAqB,GAAW,EAAE,CAAC;IACnC,sBAAsB,GAAW,EAAE,CAAC;IAE3C,QAAQ;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAwB;gBACrD,UAAU,EAAE,uBAAuB;gBACnC,WAAW,EAAE,eAAe,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;gBAC/C,OAAO,EAAE,oBAAoB;gBAC7B,UAAU,EAAE,eAAe;aAC5B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAErB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,eAAe,CAAC,OAA8B;QAC5C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA8B;QACnD,IAAI,CAAC,OAAO,CAAC,sBAAsB,OAAO,CAAC,aAAa,mCAAmC,CAAC;YAAE,OAAO;QAErG,IAAI,CAAC;YACH,uDAAuD;YACvD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACjD,KAAK,CAAC,WAAW,OAAO,CAAC,aAAa,0CAA0C,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA8B;QACnD,IAAI,OAAO,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAEnD,wBAAwB;YACxB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YAC/F,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,sBAAsB,GAAG,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,OAA8B;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,aAAa,MAAM,CAAC;YACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,cAAc,CAAC,OAAsB;QACnC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,GAAG,KAAK,IAAI,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,cAAc;QACZ,iCAAiC;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9D,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACzD,MAAM,OAAO,GAAG,UAAU,aAAa,CAAC,MAAM,MAAM,YAAY,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;QAEhH,2BAA2B;QAC3B,OAAO,OAAO,GAAG,+CAA+C,CAAC;IACnE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;yFAjHU,+BAA+B;6DAA/B,+BAA+B;YAhGpC,AADF,AADF,8BAA6B,aACC,SACtB;YAAA,+BAAe;YAAA,iBAAK;YACxB,iCAA4D;YAAlC,4GAAS,aAAS,IAAC;YAC3C,uBAA4B;YAEhC,AADE,iBAAS,EACL;YAEN,8BAA0B;YAMxB,AALA,gFAAuD,oEASlB;YA0BvC,iBAAM;YAEN,gFAA+G;YAWjH,iBAAM;;YAhDI,eAA2B;YAA3B,gDAA2B;YAMX,cAAW;YAAX,sCAAW;YA+BV,cAAoF;YAApF,qHAAoF;;;iFAoDtG,+BAA+B;cArG3C,SAAS;2BACE,6BAA6B,YAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DT;gBAyCQ,QAAQ;kBAAhB,KAAK;YACG,WAAW;kBAAnB,KAAK;YAEI,MAAM;kBAAf,MAAM;YACG,eAAe;kBAAxB,MAAM;YACG,eAAe;kBAAxB,MAAM;;kFANI,+BAA+B"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { UserInfo } from '@memberjunction/core';
|
|
3
|
-
import { ArtifactEntity, ArtifactVersionEntity } from '@memberjunction/core-entities';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class ArtifactViewerPanelComponent implements OnInit, OnChanges {
|
|
6
|
-
artifactId: string;
|
|
7
|
-
currentUser: UserInfo;
|
|
8
|
-
closed: EventEmitter<void>;
|
|
9
|
-
artifact: ArtifactEntity | null;
|
|
10
|
-
artifactVersion: ArtifactVersionEntity | null;
|
|
11
|
-
isLoading: boolean;
|
|
12
|
-
error: string | null;
|
|
13
|
-
jsonContent: string;
|
|
14
|
-
ngOnInit(): Promise<void>;
|
|
15
|
-
ngOnChanges(changes: SimpleChanges): Promise<void>;
|
|
16
|
-
private loadArtifact;
|
|
17
|
-
onCopyToClipboard(): void;
|
|
18
|
-
onClose(): void;
|
|
19
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactViewerPanelComponent, never>;
|
|
20
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactViewerPanelComponent, "mj-artifact-viewer-panel", never, { "artifactId": { "alias": "artifactId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "closed": "closed"; }, never, never, false, never>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=artifact-viewer-panel.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-viewer-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-viewer-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;;AAEtF,qBAKa,4BAA6B,YAAW,MAAM,EAAE,SAAS;IAC3D,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,QAAQ,CAAC;IACtB,MAAM,qBAA4B;IAErC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAQ;IACvC,eAAe,EAAE,qBAAqB,GAAG,IAAI,CAAQ;IACrD,SAAS,UAAQ;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5B,WAAW,SAAM;IAElB,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;YAO1B,YAAY;IAuC1B,iBAAiB,IAAI,IAAI;IAMzB,OAAO,IAAI,IAAI;yCAnEJ,4BAA4B;2CAA5B,4BAA4B;CAsExC"}
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { Metadata, RunView } from '@memberjunction/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "@memberjunction/ng-code-editor";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
function ArtifactViewerPanelComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
8
|
-
i0.ɵɵelementStart(0, "div", 11);
|
|
9
|
-
i0.ɵɵelement(1, "i", 14);
|
|
10
|
-
i0.ɵɵelementStart(2, "span");
|
|
11
|
-
i0.ɵɵtext(3, "Loading artifact...");
|
|
12
|
-
i0.ɵɵelementEnd()();
|
|
13
|
-
} }
|
|
14
|
-
function ArtifactViewerPanelComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
-
i0.ɵɵelementStart(0, "div", 12);
|
|
16
|
-
i0.ɵɵelement(1, "i", 15);
|
|
17
|
-
i0.ɵɵelementStart(2, "span");
|
|
18
|
-
i0.ɵɵtext(3);
|
|
19
|
-
i0.ɵɵelementEnd()();
|
|
20
|
-
} if (rf & 2) {
|
|
21
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
22
|
-
i0.ɵɵadvance(3);
|
|
23
|
-
i0.ɵɵtextInterpolate(ctx_r0.error);
|
|
24
|
-
} }
|
|
25
|
-
function ArtifactViewerPanelComponent_Conditional_16_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
-
i0.ɵɵelementStart(0, "div", 18);
|
|
27
|
-
i0.ɵɵtext(1);
|
|
28
|
-
i0.ɵɵelementEnd();
|
|
29
|
-
} if (rf & 2) {
|
|
30
|
-
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
31
|
-
i0.ɵɵadvance();
|
|
32
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r0.artifact.Description, " ");
|
|
33
|
-
} }
|
|
34
|
-
function ArtifactViewerPanelComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
|
36
|
-
i0.ɵɵelementStart(0, "div", 13)(1, "div", 16)(2, "div", 17)(3, "label");
|
|
37
|
-
i0.ɵɵtext(4, "Type");
|
|
38
|
-
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵelementStart(5, "span");
|
|
40
|
-
i0.ɵɵtext(6);
|
|
41
|
-
i0.ɵɵelementEnd()();
|
|
42
|
-
i0.ɵɵelementStart(7, "div", 17)(8, "label");
|
|
43
|
-
i0.ɵɵtext(9, "Version");
|
|
44
|
-
i0.ɵɵelementEnd();
|
|
45
|
-
i0.ɵɵelementStart(10, "span");
|
|
46
|
-
i0.ɵɵtext(11);
|
|
47
|
-
i0.ɵɵelementEnd()();
|
|
48
|
-
i0.ɵɵelementStart(12, "div", 17)(13, "label");
|
|
49
|
-
i0.ɵɵtext(14, "Created");
|
|
50
|
-
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelementStart(15, "span");
|
|
52
|
-
i0.ɵɵtext(16);
|
|
53
|
-
i0.ɵɵpipe(17, "date");
|
|
54
|
-
i0.ɵɵelementEnd()()();
|
|
55
|
-
i0.ɵɵtemplate(18, ArtifactViewerPanelComponent_Conditional_16_Conditional_18_Template, 2, 1, "div", 18);
|
|
56
|
-
i0.ɵɵelementStart(19, "div", 19)(20, "div", 20)(21, "button", 21);
|
|
57
|
-
i0.ɵɵlistener("click", function ArtifactViewerPanelComponent_Conditional_16_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onCopyToClipboard()); });
|
|
58
|
-
i0.ɵɵelement(22, "i", 22);
|
|
59
|
-
i0.ɵɵtext(23, " Copy ");
|
|
60
|
-
i0.ɵɵelementEnd()();
|
|
61
|
-
i0.ɵɵelementStart(24, "div", 23)(25, "mj-code-editor", 24);
|
|
62
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ArtifactViewerPanelComponent_Conditional_16_Template_mj_code_editor_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.jsonContent, $event) || (ctx_r0.jsonContent = $event); return i0.ɵɵresetView($event); });
|
|
63
|
-
i0.ɵɵelementEnd()()()();
|
|
64
|
-
} if (rf & 2) {
|
|
65
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
66
|
-
i0.ɵɵadvance(6);
|
|
67
|
-
i0.ɵɵtextInterpolate(ctx_r0.artifact.Type);
|
|
68
|
-
i0.ɵɵadvance(5);
|
|
69
|
-
i0.ɵɵtextInterpolate((ctx_r0.artifactVersion == null ? null : ctx_r0.artifactVersion.VersionNumber) || 1);
|
|
70
|
-
i0.ɵɵadvance(5);
|
|
71
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(17, 7, ctx_r0.artifact.__mj_CreatedAt, "short"));
|
|
72
|
-
i0.ɵɵadvance(2);
|
|
73
|
-
i0.ɵɵconditional(ctx_r0.artifact.Description ? 18 : -1);
|
|
74
|
-
i0.ɵɵadvance(7);
|
|
75
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.jsonContent);
|
|
76
|
-
i0.ɵɵproperty("language", "json")("readonly", true);
|
|
77
|
-
} }
|
|
78
|
-
export class ArtifactViewerPanelComponent {
|
|
79
|
-
artifactId;
|
|
80
|
-
currentUser;
|
|
81
|
-
closed = new EventEmitter();
|
|
82
|
-
artifact = null;
|
|
83
|
-
artifactVersion = null;
|
|
84
|
-
isLoading = true;
|
|
85
|
-
error = null;
|
|
86
|
-
jsonContent = '';
|
|
87
|
-
async ngOnInit() {
|
|
88
|
-
await this.loadArtifact();
|
|
89
|
-
}
|
|
90
|
-
async ngOnChanges(changes) {
|
|
91
|
-
// Reload artifact when artifactId changes
|
|
92
|
-
if (changes['artifactId'] && !changes['artifactId'].firstChange) {
|
|
93
|
-
await this.loadArtifact();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async loadArtifact() {
|
|
97
|
-
try {
|
|
98
|
-
this.isLoading = true;
|
|
99
|
-
this.error = null;
|
|
100
|
-
const md = new Metadata();
|
|
101
|
-
// Load artifact
|
|
102
|
-
this.artifact = await md.GetEntityObject('MJ: Artifacts', this.currentUser);
|
|
103
|
-
const loaded = await this.artifact.Load(this.artifactId);
|
|
104
|
-
if (!loaded) {
|
|
105
|
-
this.error = 'Failed to load artifact';
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
// Load latest version
|
|
109
|
-
const rv = new RunView();
|
|
110
|
-
const result = await rv.RunView({
|
|
111
|
-
EntityName: 'MJ: Artifact Versions',
|
|
112
|
-
ExtraFilter: `ArtifactID='${this.artifactId}'`,
|
|
113
|
-
OrderBy: 'VersionNumber DESC',
|
|
114
|
-
ResultType: 'entity_object'
|
|
115
|
-
}, this.currentUser);
|
|
116
|
-
if (result.Success && result.Results && result.Results.length > 0) {
|
|
117
|
-
this.artifactVersion = result.Results[0];
|
|
118
|
-
this.jsonContent = this.artifactVersion.Content || '{}';
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.error = 'No artifact version found';
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
catch (err) {
|
|
125
|
-
console.error('Error loading artifact:', err);
|
|
126
|
-
this.error = 'Error loading artifact: ' + err.message;
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
129
|
-
this.isLoading = false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
onCopyToClipboard() {
|
|
133
|
-
if (this.jsonContent) {
|
|
134
|
-
navigator.clipboard.writeText(this.jsonContent);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
onClose() {
|
|
138
|
-
this.closed.emit();
|
|
139
|
-
}
|
|
140
|
-
static ɵfac = function ArtifactViewerPanelComponent_Factory(t) { return new (t || ArtifactViewerPanelComponent)(); };
|
|
141
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactViewerPanelComponent, selectors: [["mj-artifact-viewer-panel"]], inputs: { artifactId: "artifactId", currentUser: "currentUser" }, outputs: { closed: "closed" }, features: [i0.ɵɵNgOnChangesFeature], decls: 17, vars: 5, consts: [[1, "artifact-viewer-panel"], [1, "panel-header"], [1, "panel-header-left"], [1, "fas", "fa-cube"], [1, "panel-header-right"], [1, "version-selector"], [1, "fas", "fa-history"], [1, "version-label"], ["title", "Close", 1, "close-btn", 3, "click"], [1, "fas", "fa-times"], [1, "panel-content"], [1, "loading-state"], [1, "error-state"], [1, "artifact-content-wrapper"], [1, "fas", "fa-spinner", "fa-spin"], [1, "fas", "fa-exclamation-triangle"], [1, "artifact-meta"], [1, "meta-item"], [1, "artifact-description"], [1, "json-viewer"], [1, "json-toolbar"], ["title", "Copy JSON", 1, "btn-icon", 3, "click"], [1, "fas", "fa-copy"], [1, "json-editor-container"], [2, "width", "100%", "height", "100%", 3, "ngModelChange", "ngModel", "language", "readonly"]], template: function ArtifactViewerPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
142
|
-
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3");
|
|
143
|
-
i0.ɵɵelement(4, "i", 3);
|
|
144
|
-
i0.ɵɵtext(5);
|
|
145
|
-
i0.ɵɵelementEnd()();
|
|
146
|
-
i0.ɵɵelementStart(6, "div", 4)(7, "div", 5);
|
|
147
|
-
i0.ɵɵelement(8, "i", 6);
|
|
148
|
-
i0.ɵɵelementStart(9, "span", 7);
|
|
149
|
-
i0.ɵɵtext(10);
|
|
150
|
-
i0.ɵɵelementEnd()();
|
|
151
|
-
i0.ɵɵelementStart(11, "button", 8);
|
|
152
|
-
i0.ɵɵlistener("click", function ArtifactViewerPanelComponent_Template_button_click_11_listener() { return ctx.onClose(); });
|
|
153
|
-
i0.ɵɵelement(12, "i", 9);
|
|
154
|
-
i0.ɵɵelementEnd()()();
|
|
155
|
-
i0.ɵɵelementStart(13, "div", 10);
|
|
156
|
-
i0.ɵɵtemplate(14, ArtifactViewerPanelComponent_Conditional_14_Template, 4, 0, "div", 11)(15, ArtifactViewerPanelComponent_Conditional_15_Template, 4, 1, "div", 12)(16, ArtifactViewerPanelComponent_Conditional_16_Template, 26, 10, "div", 13);
|
|
157
|
-
i0.ɵɵelementEnd()();
|
|
158
|
-
} if (rf & 2) {
|
|
159
|
-
i0.ɵɵadvance(5);
|
|
160
|
-
i0.ɵɵtextInterpolate1(" ", (ctx.artifact == null ? null : ctx.artifact.Name) || "Artifact", " ");
|
|
161
|
-
i0.ɵɵadvance(5);
|
|
162
|
-
i0.ɵɵtextInterpolate1("v", (ctx.artifactVersion == null ? null : ctx.artifactVersion.VersionNumber) || 1, "");
|
|
163
|
-
i0.ɵɵadvance(4);
|
|
164
|
-
i0.ɵɵconditional(ctx.isLoading ? 14 : -1);
|
|
165
|
-
i0.ɵɵadvance();
|
|
166
|
-
i0.ɵɵconditional(ctx.error ? 15 : -1);
|
|
167
|
-
i0.ɵɵadvance();
|
|
168
|
-
i0.ɵɵconditional(!ctx.isLoading && !ctx.error && ctx.artifact ? 16 : -1);
|
|
169
|
-
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.CodeEditorComponent, i3.DatePipe], styles: [".artifact-viewer-panel[_ngcontent-%COMP%] {\n height: 100%;\n background: white;\n border-left: 1px solid #E5E7EB;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n background: white;\n flex-shrink: 0;\n}\n\n.panel-header-left[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #6366F1;\n flex-shrink: 0;\n}\n\n.panel-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.version-selector[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: #F3F4F6;\n border-radius: 12px;\n font-size: 12px;\n color: #6B7280;\n font-weight: 500;\n}\n\n.version-selector[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.version-label[_ngcontent-%COMP%] {\n font-family: monospace;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n cursor: pointer;\n color: #6B7280;\n padding: 6px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.close-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.artifact-content-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 20px;\n overflow: hidden;\n min-height: 0;\n}\n\n.loading-state[_ngcontent-%COMP%], \n.error-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 40px 20px;\n color: #6B7280;\n}\n\n.error-state[_ngcontent-%COMP%] {\n color: #DC2626;\n}\n\n.loading-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n}\n\n.artifact-meta[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 16px;\n padding: 16px;\n background: #F9FAFB;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.meta-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 500;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #111827;\n}\n\n.artifact-description[_ngcontent-%COMP%] {\n padding: 12px;\n margin-bottom: 16px;\n background: #EFF6FF;\n border-left: 3px solid #3B82F6;\n border-radius: 4px;\n color: #1E40AF;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.json-viewer[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n min-height: 0;\n}\n\n.json-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n}\n\n.json-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 4px;\n padding: 6px 12px;\n cursor: pointer;\n color: #374151;\n font-size: 14px;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: #F3F4F6;\n border-color: #9CA3AF;\n}\n\n.btn-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}"] });
|
|
170
|
-
}
|
|
171
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArtifactViewerPanelComponent, [{
|
|
172
|
-
type: Component,
|
|
173
|
-
args: [{ selector: 'mj-artifact-viewer-panel', template: "<div class=\"artifact-viewer-panel\">\n <div class=\"panel-header\">\n <div class=\"panel-header-left\">\n <h3>\n <i class=\"fas fa-cube\"></i>\n {{ artifact?.Name || 'Artifact' }}\n </h3>\n </div>\n <div class=\"panel-header-right\">\n <div class=\"version-selector\">\n <i class=\"fas fa-history\"></i>\n <span class=\"version-label\">v{{ artifactVersion?.VersionNumber || 1 }}</span>\n </div>\n <button class=\"close-btn\" (click)=\"onClose()\" title=\"Close\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </div>\n\n <div class=\"panel-content\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n <span>Loading artifact...</span>\n </div>\n }\n\n @if (error) {\n <div class=\"error-state\">\n <i class=\"fas fa-exclamation-triangle\"></i>\n <span>{{ error }}</span>\n </div>\n }\n\n @if (!isLoading && !error && artifact) {\n <div class=\"artifact-content-wrapper\">\n <div class=\"artifact-meta\">\n <div class=\"meta-item\">\n <label>Type</label>\n <span>{{ artifact.Type }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Version</label>\n <span>{{ artifactVersion?.VersionNumber || 1 }}</span>\n </div>\n <div class=\"meta-item\">\n <label>Created</label>\n <span>{{ artifact.__mj_CreatedAt | date:'short' }}</span>\n </div>\n </div>\n\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n\n <div class=\"json-viewer\">\n <div class=\"json-toolbar\">\n <button class=\"btn-icon\" title=\"Copy JSON\" (click)=\"onCopyToClipboard()\">\n <i class=\"fas fa-copy\"></i> Copy\n </button>\n </div>\n <div class=\"json-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"jsonContent\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n style=\"width: 100%; height: 100%;\">\n </mj-code-editor>\n </div>\n </div>\n </div>\n }\n </div>\n</div>\n", styles: [".artifact-viewer-panel {\n height: 100%;\n background: white;\n border-left: 1px solid #E5E7EB;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-bottom: 1px solid #E5E7EB;\n background: white;\n flex-shrink: 0;\n}\n\n.panel-header-left {\n flex: 1;\n min-width: 0;\n}\n\n.panel-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.panel-header h3 i {\n color: #6366F1;\n flex-shrink: 0;\n}\n\n.panel-header-right {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.version-selector {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n background: #F3F4F6;\n border-radius: 12px;\n font-size: 12px;\n color: #6B7280;\n font-weight: 500;\n}\n\n.version-selector i {\n font-size: 11px;\n}\n\n.version-label {\n font-family: monospace;\n}\n\n.close-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: #6B7280;\n padding: 6px;\n border-radius: 4px;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n}\n\n.close-btn:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.close-btn i {\n font-size: 14px;\n}\n\n.panel-content {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.artifact-content-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: 20px;\n overflow: hidden;\n min-height: 0;\n}\n\n.loading-state,\n.error-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 40px 20px;\n color: #6B7280;\n}\n\n.error-state {\n color: #DC2626;\n}\n\n.loading-state i {\n font-size: 24px;\n}\n\n.artifact-meta {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 16px;\n margin-bottom: 16px;\n padding: 16px;\n background: #F9FAFB;\n border-radius: 8px;\n flex-shrink: 0;\n}\n\n.meta-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.meta-item label {\n font-size: 12px;\n font-weight: 500;\n color: #6B7280;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.meta-item span {\n font-size: 14px;\n color: #111827;\n}\n\n.artifact-description {\n padding: 12px;\n margin-bottom: 16px;\n background: #EFF6FF;\n border-left: 3px solid #3B82F6;\n border-radius: 4px;\n color: #1E40AF;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.json-viewer {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid #E5E7EB;\n border-radius: 8px;\n overflow: hidden;\n min-height: 0;\n}\n\n.json-editor-container {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n}\n\n.json-toolbar {\n display: flex;\n justify-content: flex-end;\n padding: 8px 12px;\n background: #F9FAFB;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.btn-icon {\n display: flex;\n align-items: center;\n gap: 6px;\n background: white;\n border: 1px solid #D1D5DB;\n border-radius: 4px;\n padding: 6px 12px;\n cursor: pointer;\n color: #374151;\n font-size: 14px;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: #F3F4F6;\n border-color: #9CA3AF;\n}\n\n.btn-icon i {\n font-size: 14px;\n}\n"] }]
|
|
174
|
-
}], null, { artifactId: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], currentUser: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], closed: [{
|
|
179
|
-
type: Output
|
|
180
|
-
}] }); })();
|
|
181
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactViewerPanelComponent, { className: "ArtifactViewerPanelComponent", filePath: "src/lib/components/artifact/artifact-viewer-panel.component.ts", lineNumber: 10 }); })();
|
|
182
|
-
//# sourceMappingURL=artifact-viewer-panel.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-viewer-panel.component.js","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-viewer-panel.component.ts","../../../../src/lib/components/artifact/artifact-viewer-panel.component.html"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { ArtifactEntity } from '@memberjunction/core-entities';
|
|
3
|
-
import { UserInfo } from '@memberjunction/core';
|
|
4
|
-
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class ArtifactViewerComponent implements OnInit, OnChanges {
|
|
7
|
-
private sanitizer;
|
|
8
|
-
artifact: ArtifactEntity;
|
|
9
|
-
versionNumber?: number;
|
|
10
|
-
currentUser: UserInfo;
|
|
11
|
-
content: string;
|
|
12
|
-
artifactType: string;
|
|
13
|
-
codeLanguage: string;
|
|
14
|
-
sanitizedContent: SafeHtml;
|
|
15
|
-
formattedJson: string;
|
|
16
|
-
constructor(sanitizer: DomSanitizer);
|
|
17
|
-
ngOnInit(): void;
|
|
18
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
19
|
-
private loadContent;
|
|
20
|
-
private determineType;
|
|
21
|
-
private processContent;
|
|
22
|
-
copyToClipboard(): void;
|
|
23
|
-
downloadArtifact(): void;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactViewerComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactViewerComponent, "mj-artifact-viewer", never, { "artifact": { "alias": "artifact"; "required": false; }; "versionNumber": { "alias": "versionNumber"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, {}, never, never, false, never>;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=artifact-viewer.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-viewer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,cAAc,EAAyB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,QAAQ,EAAW,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;;AAEnE,qBAoHa,uBAAwB,YAAW,MAAM,EAAE,SAAS;IAWnD,OAAO,CAAC,SAAS;IAVpB,QAAQ,EAAG,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IAEzB,OAAO,EAAE,MAAM,CAAM;IACrB,YAAY,EAAE,MAAM,CAAU;IAC9B,YAAY,EAAE,MAAM,CAAgB;IACpC,gBAAgB,EAAE,QAAQ,CAAM;IAChC,aAAa,EAAE,MAAM,CAAM;gBAEd,SAAS,EAAE,YAAY;IAE3C,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;YAMpB,WAAW;IA8BzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,cAAc;IAkBtB,eAAe,IAAI,IAAI;IAQvB,gBAAgB,IAAI,IAAI;yCAlHb,uBAAuB;2CAAvB,uBAAuB;CA6HnC"}
|