@memberjunction/ng-deep-diff 2.63.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/deep-diff-dialog.component.d.ts +28 -0
- package/dist/lib/deep-diff-dialog.component.d.ts.map +1 -0
- package/dist/lib/deep-diff-dialog.component.js +108 -0
- package/dist/lib/deep-diff-dialog.component.js.map +1 -0
- package/dist/lib/deep-diff.component.d.ts +43 -0
- package/dist/lib/deep-diff.component.d.ts.map +1 -0
- package/dist/lib/deep-diff.component.js +497 -0
- package/dist/lib/deep-diff.component.js.map +1 -0
- package/dist/lib/module.d.ts +11 -0
- package/dist/lib/module.d.ts.map +1 -0
- package/dist/lib/module.js +34 -0
- package/dist/lib/module.js.map +1 -0
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Dialog wrapper component for the deep diff viewer
|
|
5
|
+
*/
|
|
6
|
+
export declare class DeepDiffDialogComponent {
|
|
7
|
+
oldValue: any;
|
|
8
|
+
newValue: any;
|
|
9
|
+
title: string;
|
|
10
|
+
showSummary: boolean;
|
|
11
|
+
showUnchanged: boolean;
|
|
12
|
+
expandAll: boolean;
|
|
13
|
+
maxDepth: number;
|
|
14
|
+
maxStringLength: number;
|
|
15
|
+
visible: boolean;
|
|
16
|
+
width: string;
|
|
17
|
+
height: string;
|
|
18
|
+
visibleChange: EventEmitter<boolean>;
|
|
19
|
+
close: EventEmitter<void>;
|
|
20
|
+
isMaximized: boolean;
|
|
21
|
+
get dialogWidth(): string;
|
|
22
|
+
get dialogHeight(): string;
|
|
23
|
+
closeDialog(): void;
|
|
24
|
+
toggleMaximize(): void;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DeepDiffDialogComponent, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DeepDiffDialogComponent, "mj-deep-diff-dialog", never, { "oldValue": { "alias": "oldValue"; "required": false; }; "newValue": { "alias": "newValue"; "required": false; }; "title": { "alias": "title"; "required": false; }; "showSummary": { "alias": "showSummary"; "required": false; }; "showUnchanged": { "alias": "showUnchanged"; "required": false; }; "expandAll": { "alias": "expandAll"; "required": false; }; "maxDepth": { "alias": "maxDepth"; "required": false; }; "maxStringLength": { "alias": "maxStringLength"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, { "visibleChange": "visibleChange"; "close": "close"; }, never, never, false, never>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=deep-diff-dialog.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff-dialog.component.d.ts","sourceRoot":"","sources":["../../src/lib/deep-diff-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;;AAEvE;;GAEG;AACH,qBAKa,uBAAuB;IACzB,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,MAAM,CAAwB;IACrC,WAAW,EAAE,OAAO,CAAQ;IAC5B,aAAa,EAAE,OAAO,CAAS;IAC/B,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,MAAM,CAAM;IACtB,eAAe,EAAE,MAAM,CAAO;IAC9B,OAAO,EAAE,OAAO,CAAS;IACzB,KAAK,EAAE,MAAM,CAAS;IACtB,MAAM,EAAE,MAAM,CAAU;IAEvB,aAAa,wBAA+B;IAC5C,KAAK,qBAA4B;IAEpC,WAAW,EAAE,OAAO,CAAS;IAEpC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,WAAW,IAAI,IAAI;IAMnB,cAAc,IAAI,IAAI;yCAhCX,uBAAuB;2CAAvB,uBAAuB;CAmCnC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "./deep-diff.component";
|
|
4
|
+
function DeepDiffDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
6
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
7
|
+
i0.ɵɵlistener("click", function DeepDiffDialogComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
8
|
+
i0.ɵɵelementStart(1, "div", 2);
|
|
9
|
+
i0.ɵɵlistener("click", function DeepDiffDialogComponent_Conditional_0_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
10
|
+
i0.ɵɵelementStart(2, "div", 3)(3, "h2", 4);
|
|
11
|
+
i0.ɵɵelement(4, "i", 5);
|
|
12
|
+
i0.ɵɵtext(5);
|
|
13
|
+
i0.ɵɵelementEnd();
|
|
14
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "button", 7);
|
|
15
|
+
i0.ɵɵlistener("click", function DeepDiffDialogComponent_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMaximize()); });
|
|
16
|
+
i0.ɵɵelement(8, "i", 8);
|
|
17
|
+
i0.ɵɵelementEnd();
|
|
18
|
+
i0.ɵɵelementStart(9, "button", 9);
|
|
19
|
+
i0.ɵɵlistener("click", function DeepDiffDialogComponent_Conditional_0_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
20
|
+
i0.ɵɵelement(10, "i", 10);
|
|
21
|
+
i0.ɵɵelementEnd()()();
|
|
22
|
+
i0.ɵɵelementStart(11, "div", 11);
|
|
23
|
+
i0.ɵɵelement(12, "mj-deep-diff", 12);
|
|
24
|
+
i0.ɵɵelementEnd()()();
|
|
25
|
+
} if (rf & 2) {
|
|
26
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
27
|
+
i0.ɵɵadvance();
|
|
28
|
+
i0.ɵɵstyleProp("width", ctx_r1.dialogWidth)("height", ctx_r1.dialogHeight);
|
|
29
|
+
i0.ɵɵadvance(4);
|
|
30
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.title, " ");
|
|
31
|
+
i0.ɵɵadvance(2);
|
|
32
|
+
i0.ɵɵproperty("title", ctx_r1.isMaximized ? "Restore" : "Maximize");
|
|
33
|
+
i0.ɵɵadvance();
|
|
34
|
+
i0.ɵɵclassProp("fa-window-maximize", !ctx_r1.isMaximized)("fa-window-restore", ctx_r1.isMaximized);
|
|
35
|
+
i0.ɵɵadvance(4);
|
|
36
|
+
i0.ɵɵproperty("oldValue", ctx_r1.oldValue)("newValue", ctx_r1.newValue)("title", "")("showSummary", ctx_r1.showSummary)("showUnchanged", ctx_r1.showUnchanged)("expandAll", ctx_r1.expandAll)("maxDepth", ctx_r1.maxDepth)("maxStringLength", ctx_r1.maxStringLength);
|
|
37
|
+
} }
|
|
38
|
+
/**
|
|
39
|
+
* Dialog wrapper component for the deep diff viewer
|
|
40
|
+
*/
|
|
41
|
+
export class DeepDiffDialogComponent {
|
|
42
|
+
oldValue;
|
|
43
|
+
newValue;
|
|
44
|
+
title = 'Deep Diff Analysis';
|
|
45
|
+
showSummary = true;
|
|
46
|
+
showUnchanged = false;
|
|
47
|
+
expandAll = false;
|
|
48
|
+
maxDepth = 10;
|
|
49
|
+
maxStringLength = 100;
|
|
50
|
+
visible = false;
|
|
51
|
+
width = '80%';
|
|
52
|
+
height = '80vh';
|
|
53
|
+
visibleChange = new EventEmitter();
|
|
54
|
+
close = new EventEmitter();
|
|
55
|
+
isMaximized = false;
|
|
56
|
+
get dialogWidth() {
|
|
57
|
+
return this.isMaximized ? '95vw' : this.width;
|
|
58
|
+
}
|
|
59
|
+
get dialogHeight() {
|
|
60
|
+
return this.isMaximized ? '95vh' : this.height;
|
|
61
|
+
}
|
|
62
|
+
closeDialog() {
|
|
63
|
+
this.visible = false;
|
|
64
|
+
this.visibleChange.emit(false);
|
|
65
|
+
this.close.emit();
|
|
66
|
+
}
|
|
67
|
+
toggleMaximize() {
|
|
68
|
+
this.isMaximized = !this.isMaximized;
|
|
69
|
+
}
|
|
70
|
+
static ɵfac = function DeepDiffDialogComponent_Factory(t) { return new (t || DeepDiffDialogComponent)(); };
|
|
71
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DeepDiffDialogComponent, selectors: [["mj-deep-diff-dialog"]], inputs: { oldValue: "oldValue", newValue: "newValue", title: "title", showSummary: "showSummary", showUnchanged: "showUnchanged", expandAll: "expandAll", maxDepth: "maxDepth", maxStringLength: "maxStringLength", visible: "visible", width: "width", height: "height" }, outputs: { visibleChange: "visibleChange", close: "close" }, decls: 1, vars: 1, consts: [[1, "dialog-overlay"], [1, "dialog-overlay", 3, "click"], [1, "dialog-container", 3, "click"], [1, "dialog-header"], [1, "dialog-title"], [1, "fa-solid", "fa-code-branch"], [1, "dialog-actions"], [1, "dialog-btn", 3, "click", "title"], [1, "fa-solid"], ["title", "Close", 1, "dialog-btn", "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "dialog-content"], [3, "oldValue", "newValue", "title", "showSummary", "showUnchanged", "expandAll", "maxDepth", "maxStringLength"]], template: function DeepDiffDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
i0.ɵɵtemplate(0, DeepDiffDialogComponent_Conditional_0_Template, 13, 18, "div", 0);
|
|
73
|
+
} if (rf & 2) {
|
|
74
|
+
i0.ɵɵconditional(ctx.visible ? 0 : -1);
|
|
75
|
+
} }, dependencies: [i1.DeepDiffComponent], styles: ["\n\n.dialog-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n\n\n.dialog-container[_ngcontent-%COMP%] {\n background: white;\n border-radius: 16px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n max-width: 95vw;\n max-height: 95vh;\n overflow: hidden;\n animation: _ngcontent-%COMP%_slideIn 0.3s ease-out;\n transition: all 0.3s ease;\n}\n\n@keyframes _ngcontent-%COMP%_slideIn {\n from {\n transform: translateY(-20px) scale(0.95);\n opacity: 0;\n }\n to {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n}\n\n\n\n.dialog-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n flex-shrink: 0;\n}\n\n.dialog-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3498db;\n}\n\n.dialog-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.dialog-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 14px;\n}\n\n.dialog-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.dialog-btn.close-btn[_ngcontent-%COMP%]:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n background: #f8f9fa;\n}\n\n.dialog-content[_ngcontent-%COMP%] mj-deep-diff[_ngcontent-%COMP%] {\n height: 100%;\n display: block;\n}\n\n\n\n@media (max-width: 768px) {\n .dialog-container[_ngcontent-%COMP%] {\n width: 95vw !important;\n height: 95vh !important;\n margin: 2.5vh 2.5vw;\n }\n \n .dialog-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n \n .dialog-title[_ngcontent-%COMP%] {\n font-size: 18px;\n }\n \n .dialog-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n}"] });
|
|
76
|
+
}
|
|
77
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DeepDiffDialogComponent, [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{ selector: 'mj-deep-diff-dialog', template: "@if (visible) {\n <div class=\"dialog-overlay\" (click)=\"closeDialog()\">\n <div \n class=\"dialog-container\" \n [style.width]=\"dialogWidth\" \n [style.height]=\"dialogHeight\"\n (click)=\"$event.stopPropagation()\">\n \n <!-- Dialog Header -->\n <div class=\"dialog-header\">\n <h2 class=\"dialog-title\">\n <i class=\"fa-solid fa-code-branch\"></i>\n {{ title }}\n </h2>\n <div class=\"dialog-actions\">\n <button class=\"dialog-btn\" (click)=\"toggleMaximize()\" [title]=\"isMaximized ? 'Restore' : 'Maximize'\">\n <i class=\"fa-solid\" [class.fa-window-maximize]=\"!isMaximized\" [class.fa-window-restore]=\"isMaximized\"></i>\n </button>\n <button class=\"dialog-btn close-btn\" (click)=\"closeDialog()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n \n <!-- Dialog Content -->\n <div class=\"dialog-content\">\n <mj-deep-diff\n [oldValue]=\"oldValue\"\n [newValue]=\"newValue\"\n [title]=\"''\"\n [showSummary]=\"showSummary\"\n [showUnchanged]=\"showUnchanged\"\n [expandAll]=\"expandAll\"\n [maxDepth]=\"maxDepth\"\n [maxStringLength]=\"maxStringLength\">\n </mj-deep-diff>\n </div>\n </div>\n </div>\n}", styles: ["/* Dialog Overlay */\n.dialog-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10000;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n/* Dialog Container */\n.dialog-container {\n background: white;\n border-radius: 16px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n max-width: 95vw;\n max-height: 95vh;\n overflow: hidden;\n animation: slideIn 0.3s ease-out;\n transition: all 0.3s ease;\n}\n\n@keyframes slideIn {\n from {\n transform: translateY(-20px) scale(0.95);\n opacity: 0;\n }\n to {\n transform: translateY(0) scale(1);\n opacity: 1;\n }\n}\n\n/* Dialog Header */\n.dialog-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n flex-shrink: 0;\n}\n\n.dialog-title {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.dialog-title i {\n color: #3498db;\n}\n\n.dialog-actions {\n display: flex;\n gap: 8px;\n}\n\n.dialog-btn {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 14px;\n}\n\n.dialog-btn:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.dialog-btn.close-btn:hover {\n background: #dc3545;\n border-color: #dc3545;\n color: white;\n}\n\n/* Dialog Content */\n.dialog-content {\n flex: 1;\n overflow: hidden;\n background: #f8f9fa;\n}\n\n.dialog-content mj-deep-diff {\n height: 100%;\n display: block;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .dialog-container {\n width: 95vw !important;\n height: 95vh !important;\n margin: 2.5vh 2.5vw;\n }\n \n .dialog-header {\n padding: 16px;\n }\n \n .dialog-title {\n font-size: 18px;\n }\n \n .dialog-btn {\n width: 32px;\n height: 32px;\n font-size: 12px;\n }\n}"] }]
|
|
80
|
+
}], null, { oldValue: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], newValue: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], title: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], showSummary: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], showUnchanged: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], expandAll: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], maxDepth: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], maxStringLength: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], visible: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], width: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], height: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], visibleChange: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], close: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}] }); })();
|
|
107
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DeepDiffDialogComponent, { className: "DeepDiffDialogComponent", filePath: "src/lib/deep-diff-dialog.component.ts", lineNumber: 11 }); })();
|
|
108
|
+
//# sourceMappingURL=deep-diff-dialog.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff-dialog.component.js","sourceRoot":"","sources":["../../src/lib/deep-diff-dialog.component.ts","../../src/lib/deep-diff-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;;;;ICCrE,8BAAoD;IAAxB,wLAAS,oBAAa,KAAC;IACjD,8BAIqC;IAAnC,2JAAS,wBAAwB,KAAC;IAIhC,AADF,8BAA2B,YACA;IACvB,uBAAuC;IACvC,YACF;IAAA,iBAAK;IAEH,AADF,8BAA4B,gBAC2E;IAA1E,2LAAS,uBAAgB,KAAC;IACnD,uBAA0G;IAC5G,iBAAS;IACT,iCAA2E;IAAtC,2LAAS,oBAAa,KAAC;IAC1D,yBAAiC;IAGvC,AADE,AADE,iBAAS,EACL,EACF;IAGN,gCAA4B;IAC1B,oCASe;IAGrB,AADE,AADE,iBAAM,EACF,EACF;;;IAlCF,cAA2B;IAC3B,AADA,2CAA2B,+BACE;IAOzB,eACF;IADE,6CACF;IAEwD,eAA8C;IAA9C,mEAA8C;IAC9E,cAAyC;IAAC,AAA1C,yDAAyC,yCAAwC;IAWvG,eAAqB;IAOrB,AADA,AADA,AADA,AADA,AADA,AADA,AADA,0CAAqB,6BACA,aACT,mCACe,uCACI,+BACR,6BACF,2CACc;;ADhC7C;;GAEG;AAMH,MAAM,OAAO,uBAAuB;IACzB,QAAQ,CAAM;IACd,QAAQ,CAAM;IACd,KAAK,GAAW,oBAAoB,CAAC;IACrC,WAAW,GAAY,IAAI,CAAC;IAC5B,aAAa,GAAY,KAAK,CAAC;IAC/B,SAAS,GAAY,KAAK,CAAC;IAC3B,QAAQ,GAAW,EAAE,CAAC;IACtB,eAAe,GAAW,GAAG,CAAC;IAC9B,OAAO,GAAY,KAAK,CAAC;IACzB,KAAK,GAAW,KAAK,CAAC;IACtB,MAAM,GAAW,MAAM,CAAC;IAEvB,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;IAC5C,KAAK,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEpC,WAAW,GAAY,KAAK,CAAC;IAEpC,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAChD,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACjD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;IACvC,CAAC;iFAlCU,uBAAuB;6DAAvB,uBAAuB;YCVpC,kFAAe;;YAAf,sCAuCC;;;iFD7BY,uBAAuB;cALnC,SAAS;2BACE,qBAAqB;gBAKtB,QAAQ;kBAAhB,KAAK;YACG,QAAQ;kBAAhB,KAAK;YACG,KAAK;kBAAb,KAAK;YACG,WAAW;kBAAnB,KAAK;YACG,aAAa;kBAArB,KAAK;YACG,SAAS;kBAAjB,KAAK;YACG,QAAQ;kBAAhB,KAAK;YACG,eAAe;kBAAvB,KAAK;YACG,OAAO;kBAAf,KAAK;YACG,KAAK;kBAAb,KAAK;YACG,MAAM;kBAAd,KAAK;YAEI,aAAa;kBAAtB,MAAM;YACG,KAAK;kBAAd,MAAM;;kFAdI,uBAAuB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { DeepDiffResult, DiffChangeType, DiffChange } from '@memberjunction/global';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export interface DeepDiffItem extends DiffChange {
|
|
5
|
+
level: number;
|
|
6
|
+
isExpanded: boolean;
|
|
7
|
+
children: DeepDiffItem[];
|
|
8
|
+
parentPath: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class DeepDiffComponent implements OnInit, OnChanges {
|
|
11
|
+
private cdr;
|
|
12
|
+
oldValue: any;
|
|
13
|
+
newValue: any;
|
|
14
|
+
title: string;
|
|
15
|
+
showSummary: boolean;
|
|
16
|
+
showUnchanged: boolean;
|
|
17
|
+
expandAll: boolean;
|
|
18
|
+
maxDepth: number;
|
|
19
|
+
maxStringLength: number;
|
|
20
|
+
diffResult: DeepDiffResult | null;
|
|
21
|
+
diffItems: DeepDiffItem[];
|
|
22
|
+
filter: string;
|
|
23
|
+
filterType: 'all' | 'added' | 'removed' | 'modified' | 'unchanged';
|
|
24
|
+
private differ;
|
|
25
|
+
constructor(cdr: ChangeDetectorRef);
|
|
26
|
+
ngOnInit(): void;
|
|
27
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
28
|
+
private updateDifferConfig;
|
|
29
|
+
private generateDiff;
|
|
30
|
+
private buildHierarchicalItems;
|
|
31
|
+
toggleItem(item: DeepDiffItem): void;
|
|
32
|
+
expandAllItems(): void;
|
|
33
|
+
collapseAllItems(): void;
|
|
34
|
+
get filteredItems(): DeepDiffItem[];
|
|
35
|
+
getIcon(type: DiffChangeType): string;
|
|
36
|
+
getTypeClass(type: DiffChangeType): string;
|
|
37
|
+
formatValue(value: any): string;
|
|
38
|
+
copyToClipboard(text: string): void;
|
|
39
|
+
exportDiff(): void;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DeepDiffComponent, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DeepDiffComponent, "mj-deep-diff", never, { "oldValue": { "alias": "oldValue"; "required": false; }; "newValue": { "alias": "newValue"; "required": false; }; "title": { "alias": "title"; "required": false; }; "showSummary": { "alias": "showSummary"; "required": false; }; "showUnchanged": { "alias": "showUnchanged"; "required": false; }; "expandAll": { "alias": "expandAll"; "required": false; }; "maxDepth": { "alias": "maxDepth"; "required": false; }; "maxStringLength": { "alias": "maxStringLength"; "required": false; }; }, {}, never, never, false, never>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=deep-diff.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff.component.d.ts","sourceRoot":"","sources":["../../src/lib/deep-diff.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAc,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;;AAEhG,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAKa,iBAAkB,YAAW,MAAM,EAAE,SAAS;IAiB7C,OAAO,CAAC,GAAG;IAhBd,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,MAAM,CAAwB;IACrC,WAAW,EAAE,OAAO,CAAQ;IAC5B,aAAa,EAAE,OAAO,CAAS;IAC/B,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,MAAM,CAAM;IACtB,eAAe,EAAE,MAAM,CAAO;IAEvC,UAAU,EAAE,cAAc,GAAG,IAAI,CAAQ;IACzC,SAAS,EAAE,YAAY,EAAE,CAAM;IAC/B,MAAM,EAAE,MAAM,CAAM;IACpB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAS;IAE3E,OAAO,CAAC,MAAM,CAAa;gBAEP,GAAG,EAAE,iBAAiB;IAQ1C,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQzC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,sBAAsB;IAqC9B,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKpC,cAAc,IAAI,IAAI;IAatB,gBAAgB,IAAI,IAAI;IAaxB,IAAI,aAAa,IAAI,YAAY,EAAE,CAiClC;IAED,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAUrC,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAU1C,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAmB/B,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMnC,UAAU,IAAI,IAAI;yCAhNP,iBAAiB;2CAAjB,iBAAiB;CA4N7B"}
|
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { DeepDiffer, DiffChangeType } from '@memberjunction/global';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
const _forTrack0 = ($index, $item) => $item.path;
|
|
7
|
+
const _c0 = a0 => ({ item: a0, level: 0 });
|
|
8
|
+
const _c1 = (a0, a1) => ({ item: a0, level: a1 });
|
|
9
|
+
function DeepDiffComponent_Conditional_13_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
11
|
+
i0.ɵɵelement(1, "i", 35);
|
|
12
|
+
i0.ɵɵelementStart(2, "span", 30);
|
|
13
|
+
i0.ɵɵtext(3);
|
|
14
|
+
i0.ɵɵelementEnd();
|
|
15
|
+
i0.ɵɵelementStart(4, "span", 31);
|
|
16
|
+
i0.ɵɵtext(5, "Unchanged");
|
|
17
|
+
i0.ɵɵelementEnd()();
|
|
18
|
+
} if (rf & 2) {
|
|
19
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
20
|
+
i0.ɵɵadvance(3);
|
|
21
|
+
i0.ɵɵtextInterpolate(ctx_r1.diffResult.summary.unchanged);
|
|
22
|
+
} }
|
|
23
|
+
function DeepDiffComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 29);
|
|
25
|
+
i0.ɵɵelement(2, "i", 21);
|
|
26
|
+
i0.ɵɵelementStart(3, "span", 30);
|
|
27
|
+
i0.ɵɵtext(4);
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
i0.ɵɵelementStart(5, "span", 31);
|
|
30
|
+
i0.ɵɵtext(6, "Added");
|
|
31
|
+
i0.ɵɵelementEnd()();
|
|
32
|
+
i0.ɵɵelementStart(7, "div", 32);
|
|
33
|
+
i0.ɵɵelement(8, "i", 23);
|
|
34
|
+
i0.ɵɵelementStart(9, "span", 30);
|
|
35
|
+
i0.ɵɵtext(10);
|
|
36
|
+
i0.ɵɵelementEnd();
|
|
37
|
+
i0.ɵɵelementStart(11, "span", 31);
|
|
38
|
+
i0.ɵɵtext(12, "Removed");
|
|
39
|
+
i0.ɵɵelementEnd()();
|
|
40
|
+
i0.ɵɵelementStart(13, "div", 33);
|
|
41
|
+
i0.ɵɵelement(14, "i", 25);
|
|
42
|
+
i0.ɵɵelementStart(15, "span", 30);
|
|
43
|
+
i0.ɵɵtext(16);
|
|
44
|
+
i0.ɵɵelementEnd();
|
|
45
|
+
i0.ɵɵelementStart(17, "span", 31);
|
|
46
|
+
i0.ɵɵtext(18, "Modified");
|
|
47
|
+
i0.ɵɵelementEnd()();
|
|
48
|
+
i0.ɵɵtemplate(19, DeepDiffComponent_Conditional_13_Conditional_19_Template, 6, 1, "div", 34);
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
52
|
+
i0.ɵɵadvance(4);
|
|
53
|
+
i0.ɵɵtextInterpolate(ctx_r1.diffResult.summary.added);
|
|
54
|
+
i0.ɵɵadvance(6);
|
|
55
|
+
i0.ɵɵtextInterpolate(ctx_r1.diffResult.summary.removed);
|
|
56
|
+
i0.ɵɵadvance(6);
|
|
57
|
+
i0.ɵɵtextInterpolate(ctx_r1.diffResult.summary.modified);
|
|
58
|
+
i0.ɵɵadvance(3);
|
|
59
|
+
i0.ɵɵconditional(ctx_r1.showUnchanged ? 19 : -1);
|
|
60
|
+
} }
|
|
61
|
+
function DeepDiffComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
63
|
+
i0.ɵɵelement(1, "i", 36);
|
|
64
|
+
i0.ɵɵelementStart(2, "p");
|
|
65
|
+
i0.ɵɵtext(3, "No data to compare");
|
|
66
|
+
i0.ɵɵelementEnd()();
|
|
67
|
+
} }
|
|
68
|
+
function DeepDiffComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
70
|
+
i0.ɵɵelement(1, "i", 37);
|
|
71
|
+
i0.ɵɵelementStart(2, "p");
|
|
72
|
+
i0.ɵɵtext(3, "No changes match your filter criteria");
|
|
73
|
+
i0.ɵɵelementEnd()();
|
|
74
|
+
} }
|
|
75
|
+
function DeepDiffComponent_Conditional_33_For_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
76
|
+
i0.ɵɵelementContainer(0);
|
|
77
|
+
} }
|
|
78
|
+
function DeepDiffComponent_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
79
|
+
i0.ɵɵtemplate(0, DeepDiffComponent_Conditional_33_For_2_ng_container_0_Template, 1, 0, "ng-container", 38);
|
|
80
|
+
} if (rf & 2) {
|
|
81
|
+
const item_r3 = ctx.$implicit;
|
|
82
|
+
i0.ɵɵnextContext(2);
|
|
83
|
+
const diffItem_r4 = i0.ɵɵreference(35);
|
|
84
|
+
i0.ɵɵproperty("ngTemplateOutlet", diffItem_r4)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, item_r3));
|
|
85
|
+
} }
|
|
86
|
+
function DeepDiffComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
i0.ɵɵelementStart(0, "div", 28);
|
|
88
|
+
i0.ɵɵrepeaterCreate(1, DeepDiffComponent_Conditional_33_For_2_Template, 1, 4, "ng-container", null, _forTrack0);
|
|
89
|
+
i0.ɵɵelementEnd();
|
|
90
|
+
} if (rf & 2) {
|
|
91
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵrepeater(ctx_r1.filteredItems);
|
|
94
|
+
} }
|
|
95
|
+
function DeepDiffComponent_ng_template_34_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵelement(0, "i", 50);
|
|
97
|
+
} if (rf & 2) {
|
|
98
|
+
const item_r6 = i0.ɵɵnextContext().item;
|
|
99
|
+
i0.ɵɵclassProp("expanded", item_r6.isExpanded);
|
|
100
|
+
} }
|
|
101
|
+
function DeepDiffComponent_ng_template_34_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
+
i0.ɵɵelement(0, "span", 42);
|
|
103
|
+
} }
|
|
104
|
+
function DeepDiffComponent_ng_template_34_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 51)(2, "span", 52);
|
|
106
|
+
i0.ɵɵtext(3, "Old:");
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
i0.ɵɵelementStart(4, "code", 53);
|
|
109
|
+
i0.ɵɵtext(5);
|
|
110
|
+
i0.ɵɵelementEnd()();
|
|
111
|
+
i0.ɵɵelementStart(6, "div", 54)(7, "span", 52);
|
|
112
|
+
i0.ɵɵtext(8, "New:");
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
i0.ɵɵelementStart(9, "code", 53);
|
|
115
|
+
i0.ɵɵtext(10);
|
|
116
|
+
i0.ɵɵelementEnd()()();
|
|
117
|
+
} if (rf & 2) {
|
|
118
|
+
const item_r6 = i0.ɵɵnextContext().item;
|
|
119
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
120
|
+
i0.ɵɵadvance(5);
|
|
121
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatValue(item_r6.oldValue));
|
|
122
|
+
i0.ɵɵadvance(5);
|
|
123
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatValue(item_r6.newValue));
|
|
124
|
+
} }
|
|
125
|
+
function DeepDiffComponent_ng_template_34_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 54)(2, "span", 52);
|
|
127
|
+
i0.ɵɵtext(3, "Value:");
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
i0.ɵɵelementStart(4, "code", 53);
|
|
130
|
+
i0.ɵɵtext(5);
|
|
131
|
+
i0.ɵɵelementEnd()()();
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
const item_r6 = i0.ɵɵnextContext().item;
|
|
134
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
135
|
+
i0.ɵɵadvance(5);
|
|
136
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatValue(item_r6.newValue));
|
|
137
|
+
} }
|
|
138
|
+
function DeepDiffComponent_ng_template_34_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 51)(2, "span", 52);
|
|
140
|
+
i0.ɵɵtext(3, "Value:");
|
|
141
|
+
i0.ɵɵelementEnd();
|
|
142
|
+
i0.ɵɵelementStart(4, "code", 53);
|
|
143
|
+
i0.ɵɵtext(5);
|
|
144
|
+
i0.ɵɵelementEnd()()();
|
|
145
|
+
} if (rf & 2) {
|
|
146
|
+
const item_r6 = i0.ɵɵnextContext().item;
|
|
147
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
148
|
+
i0.ɵɵadvance(5);
|
|
149
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatValue(item_r6.oldValue));
|
|
150
|
+
} }
|
|
151
|
+
function DeepDiffComponent_ng_template_34_Conditional_14_For_2_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
+
i0.ɵɵelementContainer(0);
|
|
153
|
+
} }
|
|
154
|
+
function DeepDiffComponent_ng_template_34_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
155
|
+
i0.ɵɵtemplate(0, DeepDiffComponent_ng_template_34_Conditional_14_For_2_ng_container_0_Template, 1, 0, "ng-container", 38);
|
|
156
|
+
} if (rf & 2) {
|
|
157
|
+
const child_r7 = ctx.$implicit;
|
|
158
|
+
const level_r8 = i0.ɵɵnextContext(2).level;
|
|
159
|
+
i0.ɵɵnextContext();
|
|
160
|
+
const diffItem_r4 = i0.ɵɵreference(35);
|
|
161
|
+
i0.ɵɵproperty("ngTemplateOutlet", diffItem_r4)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c1, child_r7, level_r8 + 1));
|
|
162
|
+
} }
|
|
163
|
+
function DeepDiffComponent_ng_template_34_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 49);
|
|
165
|
+
i0.ɵɵrepeaterCreate(1, DeepDiffComponent_ng_template_34_Conditional_14_For_2_Template, 1, 5, "ng-container", null, _forTrack0);
|
|
166
|
+
i0.ɵɵelementEnd();
|
|
167
|
+
} if (rf & 2) {
|
|
168
|
+
const item_r6 = i0.ɵɵnextContext().item;
|
|
169
|
+
i0.ɵɵadvance();
|
|
170
|
+
i0.ɵɵrepeater(item_r6.children);
|
|
171
|
+
} }
|
|
172
|
+
function DeepDiffComponent_ng_template_34_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
174
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "div", 40);
|
|
175
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_ng_template_34_Template_div_click_1_listener() { const item_r6 = i0.ɵɵrestoreView(_r5).item; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleItem(item_r6)); });
|
|
176
|
+
i0.ɵɵtemplate(2, DeepDiffComponent_ng_template_34_Conditional_2_Template, 1, 2, "i", 41)(3, DeepDiffComponent_ng_template_34_Conditional_3_Template, 1, 0, "span", 42);
|
|
177
|
+
i0.ɵɵelement(4, "i", 43);
|
|
178
|
+
i0.ɵɵelementStart(5, "span", 44);
|
|
179
|
+
i0.ɵɵtext(6);
|
|
180
|
+
i0.ɵɵelementEnd();
|
|
181
|
+
i0.ɵɵelementStart(7, "span", 45);
|
|
182
|
+
i0.ɵɵtext(8);
|
|
183
|
+
i0.ɵɵelementEnd();
|
|
184
|
+
i0.ɵɵelementStart(9, "button", 46);
|
|
185
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_ng_template_34_Template_button_click_9_listener($event) { const item_r6 = i0.ɵɵrestoreView(_r5).item; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.copyToClipboard(item_r6.path); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
186
|
+
i0.ɵɵelement(10, "i", 47);
|
|
187
|
+
i0.ɵɵelementEnd()();
|
|
188
|
+
i0.ɵɵtemplate(11, DeepDiffComponent_ng_template_34_Conditional_11_Template, 11, 2, "div", 48)(12, DeepDiffComponent_ng_template_34_Conditional_12_Template, 6, 1, "div", 48)(13, DeepDiffComponent_ng_template_34_Conditional_13_Template, 6, 1, "div", 48)(14, DeepDiffComponent_ng_template_34_Conditional_14_Template, 3, 0, "div", 49);
|
|
189
|
+
i0.ɵɵelementEnd();
|
|
190
|
+
} if (rf & 2) {
|
|
191
|
+
const item_r6 = ctx.item;
|
|
192
|
+
const level_r8 = ctx.level;
|
|
193
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
194
|
+
i0.ɵɵclassMap(ctx_r1.getTypeClass(item_r6.type));
|
|
195
|
+
i0.ɵɵstyleProp("padding-left", level_r8 * 24, "px");
|
|
196
|
+
i0.ɵɵadvance(2);
|
|
197
|
+
i0.ɵɵconditional(item_r6.children.length > 0 ? 2 : 3);
|
|
198
|
+
i0.ɵɵadvance(2);
|
|
199
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getIcon(item_r6.type));
|
|
200
|
+
i0.ɵɵadvance(2);
|
|
201
|
+
i0.ɵɵtextInterpolate(item_r6.path);
|
|
202
|
+
i0.ɵɵadvance(2);
|
|
203
|
+
i0.ɵɵtextInterpolate(item_r6.description);
|
|
204
|
+
i0.ɵɵadvance(3);
|
|
205
|
+
i0.ɵɵconditional(item_r6.type === "modified" ? 11 : item_r6.type === "added" ? 12 : item_r6.type === "removed" ? 13 : -1);
|
|
206
|
+
i0.ɵɵadvance(3);
|
|
207
|
+
i0.ɵɵconditional(item_r6.isExpanded && item_r6.children.length > 0 ? 14 : -1);
|
|
208
|
+
} }
|
|
209
|
+
export class DeepDiffComponent {
|
|
210
|
+
cdr;
|
|
211
|
+
oldValue;
|
|
212
|
+
newValue;
|
|
213
|
+
title = 'Deep Diff Analysis';
|
|
214
|
+
showSummary = true;
|
|
215
|
+
showUnchanged = false;
|
|
216
|
+
expandAll = false;
|
|
217
|
+
maxDepth = 10;
|
|
218
|
+
maxStringLength = 100;
|
|
219
|
+
diffResult = null;
|
|
220
|
+
diffItems = [];
|
|
221
|
+
filter = '';
|
|
222
|
+
filterType = 'all';
|
|
223
|
+
differ;
|
|
224
|
+
constructor(cdr) {
|
|
225
|
+
this.cdr = cdr;
|
|
226
|
+
this.differ = new DeepDiffer({
|
|
227
|
+
includeUnchanged: false,
|
|
228
|
+
maxDepth: this.maxDepth,
|
|
229
|
+
maxStringLength: this.maxStringLength
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
ngOnInit() {
|
|
233
|
+
this.generateDiff();
|
|
234
|
+
}
|
|
235
|
+
ngOnChanges(changes) {
|
|
236
|
+
if (changes['oldValue'] || changes['newValue'] || changes['showUnchanged'] ||
|
|
237
|
+
changes['maxDepth'] || changes['maxStringLength']) {
|
|
238
|
+
this.updateDifferConfig();
|
|
239
|
+
this.generateDiff();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
updateDifferConfig() {
|
|
243
|
+
this.differ.updateConfig({
|
|
244
|
+
includeUnchanged: this.showUnchanged,
|
|
245
|
+
maxDepth: this.maxDepth,
|
|
246
|
+
maxStringLength: this.maxStringLength
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
generateDiff() {
|
|
250
|
+
if (this.oldValue === undefined && this.newValue === undefined) {
|
|
251
|
+
this.diffResult = null;
|
|
252
|
+
this.diffItems = [];
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.diffResult = this.differ.diff(this.oldValue, this.newValue);
|
|
256
|
+
this.diffItems = this.buildHierarchicalItems(this.diffResult.changes);
|
|
257
|
+
if (this.expandAll) {
|
|
258
|
+
this.expandAllItems();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
buildHierarchicalItems(changes) {
|
|
262
|
+
const rootItems = [];
|
|
263
|
+
const itemMap = new Map();
|
|
264
|
+
// Sort by path to ensure parents come before children
|
|
265
|
+
const sortedChanges = [...changes].sort((a, b) => {
|
|
266
|
+
const aDepth = a.path.split('.').length;
|
|
267
|
+
const bDepth = b.path.split('.').length;
|
|
268
|
+
if (aDepth !== bDepth)
|
|
269
|
+
return aDepth - bDepth;
|
|
270
|
+
return a.path.localeCompare(b.path);
|
|
271
|
+
});
|
|
272
|
+
for (const change of sortedChanges) {
|
|
273
|
+
const pathParts = change.path === 'root' ? [] : change.path.split('.');
|
|
274
|
+
const level = pathParts.length;
|
|
275
|
+
const parentPath = pathParts.slice(0, -1).join('.');
|
|
276
|
+
const item = {
|
|
277
|
+
...change,
|
|
278
|
+
level,
|
|
279
|
+
isExpanded: level === 0, // Expand only root level items by default
|
|
280
|
+
children: [],
|
|
281
|
+
parentPath
|
|
282
|
+
};
|
|
283
|
+
itemMap.set(change.path, item);
|
|
284
|
+
if (parentPath && itemMap.has(parentPath)) {
|
|
285
|
+
itemMap.get(parentPath).children.push(item);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
rootItems.push(item);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return rootItems;
|
|
292
|
+
}
|
|
293
|
+
toggleItem(item) {
|
|
294
|
+
item.isExpanded = !item.isExpanded;
|
|
295
|
+
this.cdr.markForCheck();
|
|
296
|
+
}
|
|
297
|
+
expandAllItems() {
|
|
298
|
+
const expand = (items) => {
|
|
299
|
+
for (const item of items) {
|
|
300
|
+
item.isExpanded = true;
|
|
301
|
+
if (item.children.length > 0) {
|
|
302
|
+
expand(item.children);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
expand(this.diffItems);
|
|
307
|
+
this.cdr.markForCheck();
|
|
308
|
+
}
|
|
309
|
+
collapseAllItems() {
|
|
310
|
+
const collapse = (items) => {
|
|
311
|
+
for (const item of items) {
|
|
312
|
+
item.isExpanded = false;
|
|
313
|
+
if (item.children.length > 0) {
|
|
314
|
+
collapse(item.children);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
collapse(this.diffItems);
|
|
319
|
+
this.cdr.markForCheck();
|
|
320
|
+
}
|
|
321
|
+
get filteredItems() {
|
|
322
|
+
if (!this.filter && this.filterType === 'all') {
|
|
323
|
+
return this.diffItems;
|
|
324
|
+
}
|
|
325
|
+
const filterFn = (item) => {
|
|
326
|
+
const matchesType = this.filterType === 'all' ||
|
|
327
|
+
(this.filterType === 'added' && item.type === DiffChangeType.Added) ||
|
|
328
|
+
(this.filterType === 'removed' && item.type === DiffChangeType.Removed) ||
|
|
329
|
+
(this.filterType === 'modified' && item.type === DiffChangeType.Modified) ||
|
|
330
|
+
(this.filterType === 'unchanged' && item.type === DiffChangeType.Unchanged);
|
|
331
|
+
const matchesText = !this.filter ||
|
|
332
|
+
item.path.toLowerCase().includes(this.filter.toLowerCase()) ||
|
|
333
|
+
item.description.toLowerCase().includes(this.filter.toLowerCase());
|
|
334
|
+
return matchesType && matchesText;
|
|
335
|
+
};
|
|
336
|
+
const filterRecursive = (items) => {
|
|
337
|
+
return items.reduce((acc, item) => {
|
|
338
|
+
const childMatches = filterRecursive(item.children);
|
|
339
|
+
if (filterFn(item) || childMatches.length > 0) {
|
|
340
|
+
acc.push({
|
|
341
|
+
...item,
|
|
342
|
+
children: childMatches,
|
|
343
|
+
isExpanded: item.isExpanded // Preserve the original expanded state
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
return acc;
|
|
347
|
+
}, []);
|
|
348
|
+
};
|
|
349
|
+
return filterRecursive(this.diffItems);
|
|
350
|
+
}
|
|
351
|
+
getIcon(type) {
|
|
352
|
+
switch (type) {
|
|
353
|
+
case DiffChangeType.Added: return 'fa-plus-circle';
|
|
354
|
+
case DiffChangeType.Removed: return 'fa-minus-circle';
|
|
355
|
+
case DiffChangeType.Modified: return 'fa-edit';
|
|
356
|
+
case DiffChangeType.Unchanged: return 'fa-check-circle';
|
|
357
|
+
default: return 'fa-question-circle';
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
getTypeClass(type) {
|
|
361
|
+
switch (type) {
|
|
362
|
+
case DiffChangeType.Added: return 'added';
|
|
363
|
+
case DiffChangeType.Removed: return 'removed';
|
|
364
|
+
case DiffChangeType.Modified: return 'modified';
|
|
365
|
+
case DiffChangeType.Unchanged: return 'unchanged';
|
|
366
|
+
default: return '';
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
formatValue(value) {
|
|
370
|
+
if (value === undefined)
|
|
371
|
+
return 'undefined';
|
|
372
|
+
if (value === null)
|
|
373
|
+
return 'null';
|
|
374
|
+
if (typeof value === 'string') {
|
|
375
|
+
return value.length > this.maxStringLength ?
|
|
376
|
+
`"${value.substring(0, this.maxStringLength)}..."` :
|
|
377
|
+
`"${value}"`;
|
|
378
|
+
}
|
|
379
|
+
if (typeof value === 'object') {
|
|
380
|
+
try {
|
|
381
|
+
const json = JSON.stringify(value, null, 2);
|
|
382
|
+
return json.length > 200 ? json.substring(0, 200) + '...' : json;
|
|
383
|
+
}
|
|
384
|
+
catch {
|
|
385
|
+
return String(value);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return String(value);
|
|
389
|
+
}
|
|
390
|
+
copyToClipboard(text) {
|
|
391
|
+
navigator.clipboard.writeText(text).then(() => {
|
|
392
|
+
// Could add a toast notification here
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
exportDiff() {
|
|
396
|
+
if (!this.diffResult)
|
|
397
|
+
return;
|
|
398
|
+
const blob = new Blob([JSON.stringify(this.diffResult, null, 2)], { type: 'application/json' });
|
|
399
|
+
const url = URL.createObjectURL(blob);
|
|
400
|
+
const a = document.createElement('a');
|
|
401
|
+
a.href = url;
|
|
402
|
+
a.download = `diff-${new Date().toISOString()}.json`;
|
|
403
|
+
a.click();
|
|
404
|
+
URL.revokeObjectURL(url);
|
|
405
|
+
}
|
|
406
|
+
static ɵfac = function DeepDiffComponent_Factory(t) { return new (t || DeepDiffComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
407
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DeepDiffComponent, selectors: [["mj-deep-diff"]], inputs: { oldValue: "oldValue", newValue: "newValue", title: "title", showSummary: "showSummary", showUnchanged: "showUnchanged", expandAll: "expandAll", maxDepth: "maxDepth", maxStringLength: "maxStringLength" }, features: [i0.ɵɵNgOnChangesFeature], decls: 36, vars: 13, consts: [["diffItem", ""], [1, "deep-diff-container"], [1, "diff-header"], [1, "header-content"], [1, "diff-title"], [1, "fa-solid", "fa-code-branch"], [1, "header-actions"], ["title", "Expand All", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-expand"], ["title", "Collapse All", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-compress"], ["title", "Export Diff", 1, "btn-icon", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], [1, "diff-summary"], [1, "diff-filters"], [1, "filter-search"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Filter by path or description...", 1, "filter-input", 3, "ngModelChange", "ngModel"], [1, "filter-types"], [1, "filter-btn", 3, "click"], [1, "filter-btn", "added", 3, "click"], [1, "fa-solid", "fa-plus-circle"], [1, "filter-btn", "removed", 3, "click"], [1, "fa-solid", "fa-minus-circle"], [1, "filter-btn", "modified", 3, "click"], [1, "fa-solid", "fa-edit"], [1, "diff-content"], [1, "empty-state"], [1, "diff-tree"], [1, "summary-item", "added"], [1, "count"], [1, "label"], [1, "summary-item", "removed"], [1, "summary-item", "modified"], [1, "summary-item", "unchanged"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-code-compare", "fa-3x"], [1, "fa-solid", "fa-filter", "fa-3x"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "diff-item"], [1, "item-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "expand-icon", 3, "expanded"], [1, "expand-spacer"], [1, "fa-solid", "type-icon", 3, "ngClass"], [1, "item-path"], [1, "item-description"], ["title", "Copy path", 1, "btn-copy", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "value-details"], [1, "item-children"], [1, "fa-solid", "fa-chevron-right", "expand-icon"], [1, "value-row", "old"], [1, "value-label"], [1, "value-content"], [1, "value-row", "new"]], template: function DeepDiffComponent_Template(rf, ctx) { if (rf & 1) {
|
|
408
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
409
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "h2", 4);
|
|
410
|
+
i0.ɵɵelement(4, "i", 5);
|
|
411
|
+
i0.ɵɵtext(5);
|
|
412
|
+
i0.ɵɵelementEnd();
|
|
413
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "button", 7);
|
|
414
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.expandAllItems()); });
|
|
415
|
+
i0.ɵɵelement(8, "i", 8);
|
|
416
|
+
i0.ɵɵelementEnd();
|
|
417
|
+
i0.ɵɵelementStart(9, "button", 9);
|
|
418
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.collapseAllItems()); });
|
|
419
|
+
i0.ɵɵelement(10, "i", 10);
|
|
420
|
+
i0.ɵɵelementEnd();
|
|
421
|
+
i0.ɵɵelementStart(11, "button", 11);
|
|
422
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.exportDiff()); });
|
|
423
|
+
i0.ɵɵelement(12, "i", 12);
|
|
424
|
+
i0.ɵɵelementEnd()()();
|
|
425
|
+
i0.ɵɵtemplate(13, DeepDiffComponent_Conditional_13_Template, 20, 4, "div", 13);
|
|
426
|
+
i0.ɵɵelementEnd();
|
|
427
|
+
i0.ɵɵelementStart(14, "div", 14)(15, "div", 15);
|
|
428
|
+
i0.ɵɵelement(16, "i", 16);
|
|
429
|
+
i0.ɵɵelementStart(17, "input", 17);
|
|
430
|
+
i0.ɵɵtwoWayListener("ngModelChange", function DeepDiffComponent_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.filter, $event) || (ctx.filter = $event); return i0.ɵɵresetView($event); });
|
|
431
|
+
i0.ɵɵelementEnd()();
|
|
432
|
+
i0.ɵɵelementStart(18, "div", 18)(19, "button", 19);
|
|
433
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.filterType = "all"); });
|
|
434
|
+
i0.ɵɵtext(20, " All Changes ");
|
|
435
|
+
i0.ɵɵelementEnd();
|
|
436
|
+
i0.ɵɵelementStart(21, "button", 20);
|
|
437
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.filterType = "added"); });
|
|
438
|
+
i0.ɵɵelement(22, "i", 21);
|
|
439
|
+
i0.ɵɵtext(23, " Added ");
|
|
440
|
+
i0.ɵɵelementEnd();
|
|
441
|
+
i0.ɵɵelementStart(24, "button", 22);
|
|
442
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.filterType = "removed"); });
|
|
443
|
+
i0.ɵɵelement(25, "i", 23);
|
|
444
|
+
i0.ɵɵtext(26, " Removed ");
|
|
445
|
+
i0.ɵɵelementEnd();
|
|
446
|
+
i0.ɵɵelementStart(27, "button", 24);
|
|
447
|
+
i0.ɵɵlistener("click", function DeepDiffComponent_Template_button_click_27_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.filterType = "modified"); });
|
|
448
|
+
i0.ɵɵelement(28, "i", 25);
|
|
449
|
+
i0.ɵɵtext(29, " Modified ");
|
|
450
|
+
i0.ɵɵelementEnd()()();
|
|
451
|
+
i0.ɵɵelementStart(30, "div", 26);
|
|
452
|
+
i0.ɵɵtemplate(31, DeepDiffComponent_Conditional_31_Template, 4, 0, "div", 27)(32, DeepDiffComponent_Conditional_32_Template, 4, 0, "div", 27)(33, DeepDiffComponent_Conditional_33_Template, 3, 0, "div", 28);
|
|
453
|
+
i0.ɵɵelementEnd()();
|
|
454
|
+
i0.ɵɵtemplate(34, DeepDiffComponent_ng_template_34_Template, 15, 10, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
455
|
+
} if (rf & 2) {
|
|
456
|
+
i0.ɵɵadvance(5);
|
|
457
|
+
i0.ɵɵtextInterpolate1(" ", ctx.title, " ");
|
|
458
|
+
i0.ɵɵadvance(6);
|
|
459
|
+
i0.ɵɵproperty("disabled", !ctx.diffResult);
|
|
460
|
+
i0.ɵɵadvance(2);
|
|
461
|
+
i0.ɵɵconditional(ctx.showSummary && ctx.diffResult ? 13 : -1);
|
|
462
|
+
i0.ɵɵadvance(4);
|
|
463
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.filter);
|
|
464
|
+
i0.ɵɵadvance(2);
|
|
465
|
+
i0.ɵɵclassProp("active", ctx.filterType === "all");
|
|
466
|
+
i0.ɵɵadvance(2);
|
|
467
|
+
i0.ɵɵclassProp("active", ctx.filterType === "added");
|
|
468
|
+
i0.ɵɵadvance(3);
|
|
469
|
+
i0.ɵɵclassProp("active", ctx.filterType === "removed");
|
|
470
|
+
i0.ɵɵadvance(3);
|
|
471
|
+
i0.ɵɵclassProp("active", ctx.filterType === "modified");
|
|
472
|
+
i0.ɵɵadvance(4);
|
|
473
|
+
i0.ɵɵconditional(!ctx.diffResult ? 31 : ctx.filteredItems.length === 0 ? 32 : 33);
|
|
474
|
+
} }, dependencies: [i1.NgClass, i1.NgTemplateOutlet, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel], styles: ["\n\n.deep-diff-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n\n\n.diff-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n padding: 20px;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.diff-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.diff-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3498db;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 14px;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.btn-icon[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.diff-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.summary-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: white;\n border-radius: 20px;\n font-size: 14px;\n border: 1px solid #e9ecef;\n transition: all 0.2s ease;\n}\n\n.summary-item[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.summary-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.summary-item[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 16px;\n}\n\n.summary-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 13px;\n}\n\n.summary-item.added[_ngcontent-%COMP%] {\n border-color: #d4edda;\n background: #f4fdf6;\n}\n\n.summary-item.added[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.summary-item.added[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.summary-item.removed[_ngcontent-%COMP%] {\n border-color: #f8d7da;\n background: #fef5f6;\n}\n\n.summary-item.removed[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.summary-item.removed[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.summary-item.modified[_ngcontent-%COMP%] {\n border-color: #cce5ff;\n background: #f0f7ff;\n}\n\n.summary-item.modified[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.summary-item.modified[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #007bff;\n}\n\n.summary-item.unchanged[_ngcontent-%COMP%] {\n border-color: #e2e3e5;\n background: #f8f9fa;\n}\n\n.summary-item.unchanged[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.summary-item.unchanged[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n color: #6c757d;\n}\n\n\n\n.diff-filters[_ngcontent-%COMP%] {\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 16px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.filter-search[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 250px;\n position: relative;\n}\n\n.filter-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #6c757d;\n font-size: 14px;\n}\n\n.filter-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid #dee2e6;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.filter-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.filter-types[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.filter-btn[_ngcontent-%COMP%] {\n padding: 6px 14px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #495057;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n}\n\n.filter-btn.active[_ngcontent-%COMP%] {\n background: #3498db;\n color: white;\n border-color: #3498db;\n}\n\n.filter-btn.added.active[_ngcontent-%COMP%] {\n background: #28a745;\n border-color: #28a745;\n}\n\n.filter-btn.removed.active[_ngcontent-%COMP%] {\n background: #dc3545;\n border-color: #dc3545;\n}\n\n.filter-btn.modified.active[_ngcontent-%COMP%] {\n background: #007bff;\n border-color: #007bff;\n}\n\n\n\n.diff-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n background: white;\n padding: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 300px;\n color: #6c757d;\n gap: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n opacity: 0.2;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n}\n\n\n\n.diff-tree[_ngcontent-%COMP%] {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n}\n\n.diff-item[_ngcontent-%COMP%] {\n margin-bottom: 2px;\n transition: all 0.2s ease;\n}\n\n.item-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.item-header[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #6c757d;\n transition: transform 0.2s ease;\n width: 12px;\n flex-shrink: 0;\n}\n\n.expand-icon.expanded[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.expand-spacer[_ngcontent-%COMP%] {\n width: 12px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] {\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.item-path[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #2c3e50;\n margin-right: 8px;\n word-break: break-word;\n}\n\n.item-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 12px;\n flex: 1;\n}\n\n.btn-copy[_ngcontent-%COMP%] {\n opacity: 0;\n background: none;\n border: none;\n color: #6c757d;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.item-header[_ngcontent-%COMP%]:hover .btn-copy[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.btn-copy[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n color: #495057;\n}\n\n\n\n.diff-item.added[_ngcontent-%COMP%] .type-icon[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.diff-item.removed[_ngcontent-%COMP%] .type-icon[_ngcontent-%COMP%] {\n color: #dc3545;\n}\n\n.diff-item.modified[_ngcontent-%COMP%] .type-icon[_ngcontent-%COMP%] {\n color: #007bff;\n}\n\n.diff-item.unchanged[_ngcontent-%COMP%] .type-icon[_ngcontent-%COMP%] {\n color: #6c757d;\n}\n\n\n\n.value-details[_ngcontent-%COMP%] {\n margin: 8px 0 0 44px;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.value-row[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n margin-bottom: 8px;\n align-items: flex-start;\n}\n\n.value-row[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.value-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n min-width: 40px;\n font-size: 12px;\n padding-top: 2px;\n}\n\n.value-content[_ngcontent-%COMP%] {\n flex: 1;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 12px;\n line-height: 1.5;\n color: #2c3e50;\n background: white;\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid #dee2e6;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.value-row.old[_ngcontent-%COMP%] .value-content[_ngcontent-%COMP%] {\n background: #fef5f6;\n border-color: #f8d7da;\n color: #721c24;\n}\n\n.value-row.new[_ngcontent-%COMP%] .value-content[_ngcontent-%COMP%] {\n background: #f4fdf6;\n border-color: #d4edda;\n color: #155724;\n}\n\n\n\n.item-children[_ngcontent-%COMP%] {\n margin-top: 2px;\n position: relative;\n}\n\n.item-children[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 6px;\n top: 0;\n bottom: 0;\n width: 1px;\n background: #e9ecef;\n}\n\n\n\n@media (max-width: 768px) {\n .diff-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .header-content[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n align-items: flex-start;\n }\n\n .diff-filters[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-search[_ngcontent-%COMP%] {\n min-width: 100%;\n }\n\n .filter-types[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .value-details[_ngcontent-%COMP%] {\n margin-left: 20px;\n }\n}"] });
|
|
475
|
+
}
|
|
476
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DeepDiffComponent, [{
|
|
477
|
+
type: Component,
|
|
478
|
+
args: [{ selector: 'mj-deep-diff', template: "<div class=\"deep-diff-container\">\n <!-- Header -->\n <div class=\"diff-header\">\n <div class=\"header-content\">\n <h2 class=\"diff-title\">\n <i class=\"fa-solid fa-code-branch\"></i>\n {{ title }}\n </h2>\n <div class=\"header-actions\">\n <button class=\"btn-icon\" (click)=\"expandAllItems()\" title=\"Expand All\">\n <i class=\"fa-solid fa-expand\"></i>\n </button>\n <button class=\"btn-icon\" (click)=\"collapseAllItems()\" title=\"Collapse All\">\n <i class=\"fa-solid fa-compress\"></i>\n </button>\n <button class=\"btn-icon\" (click)=\"exportDiff()\" title=\"Export Diff\" [disabled]=\"!diffResult\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n\n <!-- Summary -->\n @if (showSummary && diffResult) {\n <div class=\"diff-summary\">\n <div class=\"summary-item added\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span class=\"count\">{{ diffResult.summary.added }}</span>\n <span class=\"label\">Added</span>\n </div>\n <div class=\"summary-item removed\">\n <i class=\"fa-solid fa-minus-circle\"></i>\n <span class=\"count\">{{ diffResult.summary.removed }}</span>\n <span class=\"label\">Removed</span>\n </div>\n <div class=\"summary-item modified\">\n <i class=\"fa-solid fa-edit\"></i>\n <span class=\"count\">{{ diffResult.summary.modified }}</span>\n <span class=\"label\">Modified</span>\n </div>\n @if (showUnchanged) {\n <div class=\"summary-item unchanged\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span class=\"count\">{{ diffResult.summary.unchanged }}</span>\n <span class=\"label\">Unchanged</span>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Filters -->\n <div class=\"diff-filters\">\n <div class=\"filter-search\">\n <i class=\"fa-solid fa-search\"></i>\n <input \n type=\"text\" \n [(ngModel)]=\"filter\" \n placeholder=\"Filter by path or description...\"\n class=\"filter-input\">\n </div>\n <div class=\"filter-types\">\n <button \n class=\"filter-btn\"\n [class.active]=\"filterType === 'all'\"\n (click)=\"filterType = 'all'\">\n All Changes\n </button>\n <button \n class=\"filter-btn added\"\n [class.active]=\"filterType === 'added'\"\n (click)=\"filterType = 'added'\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n Added\n </button>\n <button \n class=\"filter-btn removed\"\n [class.active]=\"filterType === 'removed'\"\n (click)=\"filterType = 'removed'\">\n <i class=\"fa-solid fa-minus-circle\"></i>\n Removed\n </button>\n <button \n class=\"filter-btn modified\"\n [class.active]=\"filterType === 'modified'\"\n (click)=\"filterType = 'modified'\">\n <i class=\"fa-solid fa-edit\"></i>\n Modified\n </button>\n </div>\n </div>\n\n <!-- Diff Content -->\n <div class=\"diff-content\">\n @if (!diffResult) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-code-compare fa-3x\"></i>\n <p>No data to compare</p>\n </div>\n } @else if (filteredItems.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-filter fa-3x\"></i>\n <p>No changes match your filter criteria</p>\n </div>\n } @else {\n <div class=\"diff-tree\">\n @for (item of filteredItems; track item.path) {\n <ng-container *ngTemplateOutlet=\"diffItem; context: { item: item, level: 0 }\"></ng-container>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Recursive Template for Diff Items -->\n<ng-template #diffItem let-item=\"item\" let-level=\"level\">\n <div class=\"diff-item\" [class]=\"getTypeClass(item.type)\" [style.padding-left.px]=\"level * 24\">\n <div class=\"item-header\" (click)=\"toggleItem(item)\">\n @if (item.children.length > 0) {\n <i class=\"fa-solid fa-chevron-right expand-icon\" [class.expanded]=\"item.isExpanded\"></i>\n } @else {\n <span class=\"expand-spacer\"></span>\n }\n \n <i class=\"fa-solid type-icon\" [ngClass]=\"getIcon(item.type)\"></i>\n \n <span class=\"item-path\">{{ item.path }}</span>\n \n <span class=\"item-description\">{{ item.description }}</span>\n \n <button class=\"btn-copy\" (click)=\"copyToClipboard(item.path); $event.stopPropagation()\" title=\"Copy path\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n\n <!-- Value Details -->\n @if (item.type === 'modified') {\n <div class=\"value-details\">\n <div class=\"value-row old\">\n <span class=\"value-label\">Old:</span>\n <code class=\"value-content\">{{ formatValue(item.oldValue) }}</code>\n </div>\n <div class=\"value-row new\">\n <span class=\"value-label\">New:</span>\n <code class=\"value-content\">{{ formatValue(item.newValue) }}</code>\n </div>\n </div>\n } @else if (item.type === 'added') {\n <div class=\"value-details\">\n <div class=\"value-row new\">\n <span class=\"value-label\">Value:</span>\n <code class=\"value-content\">{{ formatValue(item.newValue) }}</code>\n </div>\n </div>\n } @else if (item.type === 'removed') {\n <div class=\"value-details\">\n <div class=\"value-row old\">\n <span class=\"value-label\">Value:</span>\n <code class=\"value-content\">{{ formatValue(item.oldValue) }}</code>\n </div>\n </div>\n }\n\n <!-- Children -->\n @if (item.isExpanded && item.children.length > 0) {\n <div class=\"item-children\">\n @for (child of item.children; track child.path) {\n <ng-container *ngTemplateOutlet=\"diffItem; context: { item: child, level: level + 1 }\"></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>", styles: ["/* Deep Diff Component Styles */\n.deep-diff-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f8f9fa;\n border-radius: 12px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);\n}\n\n/* Header */\n.diff-header {\n background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);\n padding: 20px;\n border-bottom: 1px solid #e0e6ed;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);\n}\n\n.header-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.diff-title {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #2c3e50;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.diff-title i {\n color: #3498db;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: #6c757d;\n font-size: 14px;\n}\n\n.btn-icon:hover:not(:disabled) {\n background: #f8f9fa;\n border-color: #adb5bd;\n color: #495057;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.btn-icon:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Summary */\n.diff-summary {\n display: flex;\n gap: 20px;\n flex-wrap: wrap;\n}\n\n.summary-item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: white;\n border-radius: 20px;\n font-size: 14px;\n border: 1px solid #e9ecef;\n transition: all 0.2s ease;\n}\n\n.summary-item:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.summary-item i {\n font-size: 16px;\n}\n\n.summary-item .count {\n font-weight: 600;\n font-size: 16px;\n}\n\n.summary-item .label {\n color: #6c757d;\n font-size: 13px;\n}\n\n.summary-item.added {\n border-color: #d4edda;\n background: #f4fdf6;\n}\n\n.summary-item.added i,\n.summary-item.added .count {\n color: #28a745;\n}\n\n.summary-item.removed {\n border-color: #f8d7da;\n background: #fef5f6;\n}\n\n.summary-item.removed i,\n.summary-item.removed .count {\n color: #dc3545;\n}\n\n.summary-item.modified {\n border-color: #cce5ff;\n background: #f0f7ff;\n}\n\n.summary-item.modified i,\n.summary-item.modified .count {\n color: #007bff;\n}\n\n.summary-item.unchanged {\n border-color: #e2e3e5;\n background: #f8f9fa;\n}\n\n.summary-item.unchanged i,\n.summary-item.unchanged .count {\n color: #6c757d;\n}\n\n/* Filters */\n.diff-filters {\n padding: 16px 20px;\n background: white;\n border-bottom: 1px solid #e9ecef;\n display: flex;\n gap: 16px;\n align-items: center;\n flex-wrap: wrap;\n}\n\n.filter-search {\n flex: 1;\n min-width: 250px;\n position: relative;\n}\n\n.filter-search i {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: #6c757d;\n font-size: 14px;\n}\n\n.filter-input {\n width: 100%;\n padding: 8px 12px 8px 36px;\n border: 1px solid #dee2e6;\n border-radius: 8px;\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.filter-input:focus {\n outline: none;\n border-color: #3498db;\n box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);\n}\n\n.filter-types {\n display: flex;\n gap: 8px;\n}\n\n.filter-btn {\n padding: 6px 14px;\n border: 1px solid #dee2e6;\n background: white;\n border-radius: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #495057;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.filter-btn:hover {\n background: #f8f9fa;\n border-color: #adb5bd;\n}\n\n.filter-btn.active {\n background: #3498db;\n color: white;\n border-color: #3498db;\n}\n\n.filter-btn.added.active {\n background: #28a745;\n border-color: #28a745;\n}\n\n.filter-btn.removed.active {\n background: #dc3545;\n border-color: #dc3545;\n}\n\n.filter-btn.modified.active {\n background: #007bff;\n border-color: #007bff;\n}\n\n/* Content Area */\n.diff-content {\n flex: 1;\n overflow-y: auto;\n background: white;\n padding: 16px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 300px;\n color: #6c757d;\n gap: 16px;\n}\n\n.empty-state i {\n opacity: 0.2;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 16px;\n}\n\n/* Diff Tree */\n.diff-tree {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 13px;\n}\n\n.diff-item {\n margin-bottom: 2px;\n transition: all 0.2s ease;\n}\n\n.item-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s ease;\n position: relative;\n}\n\n.item-header:hover {\n background: #f8f9fa;\n}\n\n.expand-icon {\n font-size: 10px;\n color: #6c757d;\n transition: transform 0.2s ease;\n width: 12px;\n flex-shrink: 0;\n}\n\n.expand-icon.expanded {\n transform: rotate(90deg);\n}\n\n.expand-spacer {\n width: 12px;\n flex-shrink: 0;\n}\n\n.type-icon {\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.item-path {\n font-weight: 600;\n color: #2c3e50;\n margin-right: 8px;\n word-break: break-word;\n}\n\n.item-description {\n color: #6c757d;\n font-size: 12px;\n flex: 1;\n}\n\n.btn-copy {\n opacity: 0;\n background: none;\n border: none;\n color: #6c757d;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.item-header:hover .btn-copy {\n opacity: 1;\n}\n\n.btn-copy:hover {\n background: #e9ecef;\n color: #495057;\n}\n\n/* Type-specific styling */\n.diff-item.added .type-icon {\n color: #28a745;\n}\n\n.diff-item.removed .type-icon {\n color: #dc3545;\n}\n\n.diff-item.modified .type-icon {\n color: #007bff;\n}\n\n.diff-item.unchanged .type-icon {\n color: #6c757d;\n}\n\n/* Value Details */\n.value-details {\n margin: 8px 0 0 44px;\n padding: 12px;\n background: #f8f9fa;\n border-radius: 6px;\n border: 1px solid #e9ecef;\n}\n\n.value-row {\n display: flex;\n gap: 12px;\n margin-bottom: 8px;\n align-items: flex-start;\n}\n\n.value-row:last-child {\n margin-bottom: 0;\n}\n\n.value-label {\n font-weight: 600;\n color: #495057;\n min-width: 40px;\n font-size: 12px;\n padding-top: 2px;\n}\n\n.value-content {\n flex: 1;\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: 12px;\n line-height: 1.5;\n color: #2c3e50;\n background: white;\n padding: 4px 8px;\n border-radius: 4px;\n border: 1px solid #dee2e6;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.value-row.old .value-content {\n background: #fef5f6;\n border-color: #f8d7da;\n color: #721c24;\n}\n\n.value-row.new .value-content {\n background: #f4fdf6;\n border-color: #d4edda;\n color: #155724;\n}\n\n/* Children */\n.item-children {\n margin-top: 2px;\n position: relative;\n}\n\n.item-children::before {\n content: '';\n position: absolute;\n left: 6px;\n top: 0;\n bottom: 0;\n width: 1px;\n background: #e9ecef;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n .diff-header {\n padding: 16px;\n }\n\n .header-content {\n flex-direction: column;\n gap: 12px;\n align-items: flex-start;\n }\n\n .diff-filters {\n flex-direction: column;\n align-items: stretch;\n }\n\n .filter-search {\n min-width: 100%;\n }\n\n .filter-types {\n flex-wrap: wrap;\n }\n\n .value-details {\n margin-left: 20px;\n }\n}"] }]
|
|
479
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { oldValue: [{
|
|
480
|
+
type: Input
|
|
481
|
+
}], newValue: [{
|
|
482
|
+
type: Input
|
|
483
|
+
}], title: [{
|
|
484
|
+
type: Input
|
|
485
|
+
}], showSummary: [{
|
|
486
|
+
type: Input
|
|
487
|
+
}], showUnchanged: [{
|
|
488
|
+
type: Input
|
|
489
|
+
}], expandAll: [{
|
|
490
|
+
type: Input
|
|
491
|
+
}], maxDepth: [{
|
|
492
|
+
type: Input
|
|
493
|
+
}], maxStringLength: [{
|
|
494
|
+
type: Input
|
|
495
|
+
}] }); })();
|
|
496
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DeepDiffComponent, { className: "DeepDiffComponent", filePath: "src/lib/deep-diff.component.ts", lineNumber: 16 }); })();
|
|
497
|
+
//# sourceMappingURL=deep-diff.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-diff.component.js","sourceRoot":"","sources":["../../src/lib/deep-diff.component.ts","../../src/lib/deep-diff.component.html"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./deep-diff.component";
|
|
3
|
+
import * as i2 from "./deep-diff-dialog.component";
|
|
4
|
+
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "@angular/forms";
|
|
6
|
+
export declare class DeepDiffModule {
|
|
7
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DeepDiffModule, never>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DeepDiffModule, [typeof i1.DeepDiffComponent, typeof i2.DeepDiffDialogComponent], [typeof i3.CommonModule, typeof i4.FormsModule], [typeof i1.DeepDiffComponent, typeof i2.DeepDiffDialogComponent]>;
|
|
9
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DeepDiffModule>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":";;;;;AAOA,qBAca,cAAc;yCAAd,cAAc;0CAAd,cAAc;0CAAd,cAAc;CAAI"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { DeepDiffDialogComponent } from './deep-diff-dialog.component';
|
|
5
|
+
import { DeepDiffComponent } from './deep-diff.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class DeepDiffModule {
|
|
8
|
+
static ɵfac = function DeepDiffModule_Factory(t) { return new (t || DeepDiffModule)(); };
|
|
9
|
+
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DeepDiffModule });
|
|
10
|
+
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
11
|
+
FormsModule] });
|
|
12
|
+
}
|
|
13
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DeepDiffModule, [{
|
|
14
|
+
type: NgModule,
|
|
15
|
+
args: [{
|
|
16
|
+
declarations: [
|
|
17
|
+
DeepDiffComponent,
|
|
18
|
+
DeepDiffDialogComponent
|
|
19
|
+
],
|
|
20
|
+
imports: [
|
|
21
|
+
CommonModule,
|
|
22
|
+
FormsModule
|
|
23
|
+
],
|
|
24
|
+
exports: [
|
|
25
|
+
DeepDiffComponent,
|
|
26
|
+
DeepDiffDialogComponent
|
|
27
|
+
]
|
|
28
|
+
}]
|
|
29
|
+
}], null, null); })();
|
|
30
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DeepDiffModule, { declarations: [DeepDiffComponent,
|
|
31
|
+
DeepDiffDialogComponent], imports: [CommonModule,
|
|
32
|
+
FormsModule], exports: [DeepDiffComponent,
|
|
33
|
+
DeepDiffDialogComponent] }); })();
|
|
34
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;;AAgB1D,MAAM,OAAO,cAAc;wEAAd,cAAc;4DAAd,cAAc;gEARvB,YAAY;YACZ,WAAW;;iFAOF,cAAc;cAd1B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,iBAAiB;oBACjB,uBAAuB;iBACxB;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;iBACZ;gBACD,OAAO,EAAE;oBACP,iBAAiB;oBACjB,uBAAuB;iBACxB;aACF;;wFACY,cAAc,mBAZvB,iBAAiB;QACjB,uBAAuB,aAGvB,YAAY;QACZ,WAAW,aAGX,iBAAiB;QACjB,uBAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memberjunction/ng-deep-diff",
|
|
3
|
+
"version": "2.63.0",
|
|
4
|
+
"description": "MemberJunction: Generic Angular component to display the differences between two objects, using the non-visual functionality from the @memberjunction/global package",
|
|
5
|
+
"main": "./dist/public-api.js",
|
|
6
|
+
"typings": "./dist/public-api.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"/dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
12
|
+
"build": "ngc"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [],
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@angular/compiler": "18.0.2",
|
|
19
|
+
"@angular/compiler-cli": "18.0.2"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"@angular/common": "18.0.2",
|
|
23
|
+
"@angular/core": "18.0.2"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@memberjunction/core": "2.63.0",
|
|
27
|
+
"@memberjunction/global": "2.63.0",
|
|
28
|
+
"tslib": "^2.3.0"
|
|
29
|
+
},
|
|
30
|
+
"sideEffects": false
|
|
31
|
+
}
|