nxt-json-view 21.0.0 → 22.0.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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, input, model, signal, effect, computed, inject, ViewEncapsulation, Component, linkedSignal
|
|
2
|
+
import { Injectable, input, model, signal, effect, computed, inject, ViewEncapsulation, Component, linkedSignal } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class ExpanderService {
|
|
5
5
|
constructor() {
|
|
@@ -25,10 +25,10 @@ class ExpanderService {
|
|
|
25
25
|
i.toggle();
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
29
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ExpanderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
29
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ExpanderService, providedIn: 'root' }); }
|
|
30
30
|
}
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ExpanderService, decorators: [{
|
|
32
32
|
type: Injectable,
|
|
33
33
|
args: [{
|
|
34
34
|
providedIn: 'root'
|
|
@@ -63,29 +63,38 @@ function isBoolean(value) {
|
|
|
63
63
|
/** @internal */
|
|
64
64
|
class JsonViewItemComponent {
|
|
65
65
|
constructor() {
|
|
66
|
-
this.data = input(
|
|
67
|
-
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
this.
|
|
71
|
-
|
|
66
|
+
this.data = input(/* @ts-ignore */
|
|
67
|
+
...(ngDevMode ? [undefined, { debugName: "data" }] : /* istanbul ignore next */ []));
|
|
68
|
+
this.key = input(/* @ts-ignore */
|
|
69
|
+
...(ngDevMode ? [undefined, { debugName: "key" }] : /* istanbul ignore next */ []));
|
|
70
|
+
this.level = input(0, /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []));
|
|
72
|
+
this.levelOpen = model(/* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [undefined, { debugName: "levelOpen" }] : /* istanbul ignore next */ []));
|
|
74
|
+
this.levelLabels = input(/* @ts-ignore */
|
|
75
|
+
...(ngDevMode ? [undefined, { debugName: "levelLabels" }] : /* istanbul ignore next */ []));
|
|
76
|
+
this.isOpen = signal(false, /* @ts-ignore */
|
|
77
|
+
...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
72
78
|
this.effectRef = effect(() => {
|
|
73
79
|
const levelOpen = this.levelOpen();
|
|
74
80
|
this.isOpen.set(!isUndefined(levelOpen) && (this.level() <= levelOpen));
|
|
75
81
|
this.effectRef.destroy();
|
|
76
|
-
}, { ...(ngDevMode ? { debugName: "effectRef" } : {}), manualCleanup: true });
|
|
82
|
+
}, { ...(ngDevMode ? { debugName: "effectRef" } : /* istanbul ignore next */ {}), manualCleanup: true });
|
|
77
83
|
this.childrenKeys = computed(() => {
|
|
78
84
|
const data = this.data();
|
|
79
85
|
if (isObject(data)) {
|
|
80
86
|
return Object.keys(data);
|
|
81
87
|
}
|
|
82
88
|
return [];
|
|
83
|
-
},
|
|
84
|
-
|
|
89
|
+
}, /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "childrenKeys" }] : /* istanbul ignore next */ []));
|
|
91
|
+
this.hasChildren = computed(() => !!(this.childrenKeys().length), /* @ts-ignore */
|
|
92
|
+
...(ngDevMode ? [{ debugName: "hasChildren" }] : /* istanbul ignore next */ []));
|
|
85
93
|
this._levelLabels = computed(() => {
|
|
86
94
|
const levelLabels = this.levelLabels();
|
|
87
95
|
return levelLabels?.[this.level()] || {};
|
|
88
|
-
},
|
|
96
|
+
}, /* @ts-ignore */
|
|
97
|
+
...(ngDevMode ? [{ debugName: "_levelLabels" }] : /* istanbul ignore next */ []));
|
|
89
98
|
this.dataType = computed(() => {
|
|
90
99
|
let dataType;
|
|
91
100
|
const data = this.data();
|
|
@@ -100,7 +109,8 @@ class JsonViewItemComponent {
|
|
|
100
109
|
}
|
|
101
110
|
}
|
|
102
111
|
return dataType;
|
|
103
|
-
},
|
|
112
|
+
}, /* @ts-ignore */
|
|
113
|
+
...(ngDevMode ? [{ debugName: "dataType" }] : /* istanbul ignore next */ []));
|
|
104
114
|
this.value = computed(() => {
|
|
105
115
|
let value;
|
|
106
116
|
const data = this.data();
|
|
@@ -111,7 +121,8 @@ class JsonViewItemComponent {
|
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
123
|
return value;
|
|
114
|
-
},
|
|
124
|
+
}, /* @ts-ignore */
|
|
125
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
115
126
|
this.valueType = computed(() => {
|
|
116
127
|
const data = this.data();
|
|
117
128
|
if (!isObject(data)) {
|
|
@@ -129,9 +140,12 @@ class JsonViewItemComponent {
|
|
|
129
140
|
}
|
|
130
141
|
}
|
|
131
142
|
return;
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
this.
|
|
143
|
+
}, /* @ts-ignore */
|
|
144
|
+
...(ngDevMode ? [{ debugName: "valueType" }] : /* istanbul ignore next */ []));
|
|
145
|
+
this.isObject = computed(() => isObject(this.data()), /* @ts-ignore */
|
|
146
|
+
...(ngDevMode ? [{ debugName: "isObject" }] : /* istanbul ignore next */ []));
|
|
147
|
+
this.isArray = computed(() => isObject(this.data()) && isArray(this.data()), /* @ts-ignore */
|
|
148
|
+
...(ngDevMode ? [{ debugName: "isArray" }] : /* istanbul ignore next */ []));
|
|
135
149
|
this.expanderService = inject(ExpanderService);
|
|
136
150
|
}
|
|
137
151
|
ngOnInit() {
|
|
@@ -146,10 +160,10 @@ class JsonViewItemComponent {
|
|
|
146
160
|
}
|
|
147
161
|
this.isOpen.set(!this.isOpen());
|
|
148
162
|
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
150
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: JsonViewItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: JsonViewItemComponent, isStandalone: true, selector: "nxt-json-view-item", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, levelOpen: { classPropertyName: "levelOpen", publicName: "levelOpen", isSignal: true, isRequired: false, transformFunction: null }, levelLabels: { classPropertyName: "levelLabels", publicName: "levelLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { levelOpen: "levelOpenChange" }, ngImport: i0, template: "<div class=\"json-view\">\r\n <a (click)=\"toggle()\"\r\n tabindex=\"0\"\r\n (keydown.space)=\"toggle()\">\r\n <span class=\"toggler\"\r\n [class]=\"{'collapse': isOpen(), 'expand': !isOpen()}\"\r\n [style.visibility]=\"hasChildren()?'visible':'hidden'\"></span>\r\n @if (key()) {\r\n <span class=\"key\">\r\n <span>{{key()}}</span>\r\n <span>: </span>\r\n </span>\r\n }\r\n <span class=\"value\">\r\n @if (isObject()) {\r\n <span>\r\n {{ dataType() }}\r\n @if (isArray()) {\r\n <span>[ {{ $any(data())?.length }} ]</span>\r\n }\r\n </span>\r\n }\r\n @if (!isObject() && valueType()) {\r\n <span [class]=\"valueType()\">{{ value() }}</span>\r\n }\r\n </span>\r\n </a>\r\n @if (hasChildren() && isOpen()) {\r\n <div class=\"children\">\r\n @for (_key of childrenKeys(); track _key) {\r\n <nxt-json-view-item [data]=\"data()[_key]\"\r\n [key]=\"_key\"\r\n [level]=\"level()+1\"\r\n [levelOpen]=\"levelOpen()\"\r\n [levelLabels]=\"levelLabels()\" />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".json-view a{cursor:pointer;text-decoration:none}.json-view .toggler{width:1em;padding:0;display:block;text-align:center;float:left}.json-view .collapse:before{content:\"-\"}.json-view .expand:before{content:\"+\"}.json-view .key{color:var(--nxt-json-view-color-key, #92278f)}.json-view .value{color:var(--nxt-json-view-color-value, #000000)}.json-view .value .string{color:var(--nxt-json-view-color-string, #3ab54a)}.json-view .value .number{color:var(--nxt-json-view-color-number, #25aae2)}.json-view .value .boolean{color:var(--nxt-json-view-color-boolean, #aa0d91)}.json-view .value .null{color:var(--nxt-json-view-color-null, #f1592a)}.json-view .children{margin-left:1em}\n"], dependencies: [{ kind: "component", type: JsonViewItemComponent, selector: "nxt-json-view-item", inputs: ["data", "key", "level", "levelOpen", "levelLabels"], outputs: ["levelOpenChange"] }] }); }
|
|
151
165
|
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: JsonViewItemComponent, decorators: [{
|
|
153
167
|
type: Component,
|
|
154
168
|
args: [{ selector: 'nxt-json-view-item', encapsulation: ViewEncapsulation.Emulated, template: "<div class=\"json-view\">\r\n <a (click)=\"toggle()\"\r\n tabindex=\"0\"\r\n (keydown.space)=\"toggle()\">\r\n <span class=\"toggler\"\r\n [class]=\"{'collapse': isOpen(), 'expand': !isOpen()}\"\r\n [style.visibility]=\"hasChildren()?'visible':'hidden'\"></span>\r\n @if (key()) {\r\n <span class=\"key\">\r\n <span>{{key()}}</span>\r\n <span>: </span>\r\n </span>\r\n }\r\n <span class=\"value\">\r\n @if (isObject()) {\r\n <span>\r\n {{ dataType() }}\r\n @if (isArray()) {\r\n <span>[ {{ $any(data())?.length }} ]</span>\r\n }\r\n </span>\r\n }\r\n @if (!isObject() && valueType()) {\r\n <span [class]=\"valueType()\">{{ value() }}</span>\r\n }\r\n </span>\r\n </a>\r\n @if (hasChildren() && isOpen()) {\r\n <div class=\"children\">\r\n @for (_key of childrenKeys(); track _key) {\r\n <nxt-json-view-item [data]=\"data()[_key]\"\r\n [key]=\"_key\"\r\n [level]=\"level()+1\"\r\n [levelOpen]=\"levelOpen()\"\r\n [levelLabels]=\"levelLabels()\" />\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".json-view a{cursor:pointer;text-decoration:none}.json-view .toggler{width:1em;padding:0;display:block;text-align:center;float:left}.json-view .collapse:before{content:\"-\"}.json-view .expand:before{content:\"+\"}.json-view .key{color:var(--nxt-json-view-color-key, #92278f)}.json-view .value{color:var(--nxt-json-view-color-value, #000000)}.json-view .value .string{color:var(--nxt-json-view-color-string, #3ab54a)}.json-view .value .number{color:var(--nxt-json-view-color-number, #25aae2)}.json-view .value .boolean{color:var(--nxt-json-view-color-boolean, #aa0d91)}.json-view .value .null{color:var(--nxt-json-view-color-null, #f1592a)}.json-view .children{margin-left:1em}\n"] }]
|
|
155
169
|
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], levelOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "levelOpen", required: false }] }, { type: i0.Output, args: ["levelOpenChange"] }], levelLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "levelLabels", required: false }] }] } });
|
|
@@ -157,13 +171,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
157
171
|
class JsonViewComponent {
|
|
158
172
|
constructor() {
|
|
159
173
|
/** JSON data, any valid JSON object */
|
|
160
|
-
this.data = input(
|
|
174
|
+
this.data = input(/* @ts-ignore */
|
|
175
|
+
...(ngDevMode ? [undefined, { debugName: "data" }] : /* istanbul ignore next */ []));
|
|
161
176
|
/** Initial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo` */
|
|
162
|
-
this.levelOpen = input(
|
|
177
|
+
this.levelOpen = input(/* @ts-ignore */
|
|
178
|
+
...(ngDevMode ? [undefined, { debugName: "levelOpen" }] : /* istanbul ignore next */ []));
|
|
163
179
|
/** Custom labels for elements within the hierarcy */
|
|
164
|
-
this.levelLabels = input(
|
|
180
|
+
this.levelLabels = input(/* @ts-ignore */
|
|
181
|
+
...(ngDevMode ? [undefined, { debugName: "levelLabels" }] : /* istanbul ignore next */ []));
|
|
165
182
|
/** @internal */
|
|
166
|
-
this._levelOpen = linkedSignal({ ...(ngDevMode ? { debugName: "_levelOpen" } : {}), source: () => this.levelOpen(),
|
|
183
|
+
this._levelOpen = linkedSignal({ ...(ngDevMode ? { debugName: "_levelOpen" } : /* istanbul ignore next */ {}), source: () => this.levelOpen(),
|
|
167
184
|
computation: level => level });
|
|
168
185
|
this.expanderService = inject(ExpanderService);
|
|
169
186
|
}
|
|
@@ -182,15 +199,15 @@ class JsonViewComponent {
|
|
|
182
199
|
collapseTo(level) {
|
|
183
200
|
this.expanderService.collapseTo(level);
|
|
184
201
|
}
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: JsonViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
203
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: JsonViewComponent, isStandalone: true, selector: "nxt-json-view", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, levelOpen: { classPropertyName: "levelOpen", publicName: "levelOpen", isSignal: true, isRequired: false, transformFunction: null }, levelLabels: { classPropertyName: "levelLabels", publicName: "levelLabels", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
187
204
|
{
|
|
188
205
|
provide: ExpanderService,
|
|
189
206
|
useClass: ExpanderService
|
|
190
207
|
}
|
|
191
208
|
], ngImport: i0, template: "<div class=\"nxt-json-view\">\r\n <nxt-json-view-item [data]=\"data()\"\r\n [level]=\"0\"\r\n [levelOpen]=\"_levelOpen()\"\r\n [levelLabels]=\"levelLabels()\"\r\n class=\"json-view\" />\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "component", type: JsonViewItemComponent, selector: "nxt-json-view-item", inputs: ["data", "key", "level", "levelOpen", "levelLabels"], outputs: ["levelOpenChange"] }] }); }
|
|
192
209
|
}
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: JsonViewComponent, decorators: [{
|
|
194
211
|
type: Component,
|
|
195
212
|
args: [{ selector: 'nxt-json-view', encapsulation: ViewEncapsulation.Emulated, providers: [
|
|
196
213
|
{
|
|
@@ -202,27 +219,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
|
|
|
202
219
|
], template: "<div class=\"nxt-json-view\">\r\n <nxt-json-view-item [data]=\"data()\"\r\n [level]=\"0\"\r\n [levelOpen]=\"_levelOpen()\"\r\n [levelLabels]=\"levelLabels()\"\r\n class=\"json-view\" />\r\n</div>\r\n" }]
|
|
203
220
|
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], levelOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "levelOpen", required: false }] }], levelLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "levelLabels", required: false }] }] } });
|
|
204
221
|
|
|
205
|
-
/** @deprecated use standalone imports */
|
|
206
|
-
class JsonViewModule {
|
|
207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: JsonViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
208
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.0", ngImport: i0, type: JsonViewModule, imports: [JsonViewComponent], exports: [JsonViewComponent] }); }
|
|
209
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: JsonViewModule }); }
|
|
210
|
-
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: JsonViewModule, decorators: [{
|
|
212
|
-
type: NgModule,
|
|
213
|
-
args: [{
|
|
214
|
-
imports: [
|
|
215
|
-
JsonViewComponent
|
|
216
|
-
],
|
|
217
|
-
exports: [
|
|
218
|
-
JsonViewComponent
|
|
219
|
-
]
|
|
220
|
-
}]
|
|
221
|
-
}] });
|
|
222
|
-
|
|
223
222
|
/**
|
|
224
223
|
* Generated bundle index. Do not edit.
|
|
225
224
|
*/
|
|
226
225
|
|
|
227
|
-
export { JsonViewComponent
|
|
226
|
+
export { JsonViewComponent };
|
|
228
227
|
//# sourceMappingURL=nxt-json-view.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nxt-json-view.mjs","sources":["../../../packages/json-view/src/lib/expander/expander.service.ts","../../../packages/json-view/src/lib/utils/utils.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.html","../../../packages/json-view/src/lib/json-view/json-view.component.ts","../../../packages/json-view/src/lib/json-view/json-view.component.html","../../../packages/json-view/src/lib/json-view.module.ts","../../../packages/json-view/src/nxt-json-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core'\r\nimport { type JsonViewItemComponent } from '../json-view-item/json-view-item.component'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpanderService {\r\n private readonly items = new Set<JsonViewItemComponent>()\r\n\r\n addItem(item: JsonViewItemComponent) {\r\n this.items.add(item)\r\n }\r\n\r\n removeItem(item: JsonViewItemComponent) {\r\n this.items.delete(item)\r\n }\r\n\r\n expandTo(level: number) {\r\n this.items.forEach(i => {\r\n if (i.level() <= level && !i.isOpen()) {\r\n i.levelOpen.set(level)\r\n i.toggle()\r\n }\r\n })\r\n }\r\n\r\n collapseTo(level: number) {\r\n this.items.forEach(i => {\r\n if (i.level() > level && i.isOpen())\r\n i.toggle()\r\n })\r\n }\r\n}\r\n","/** @internal */\r\nexport function isObject(value: any): value is object {\r\n return value !== null && typeof value === 'object'\r\n}\r\n\r\n/** @internal */\r\nexport function isArray(value: any): value is unknown[] {\r\n return Array.isArray(value)\r\n}\r\n\r\n/** @internal */\r\nexport function isUndefined<T>(value: T | undefined): value is undefined {\r\n return typeof value === 'undefined'\r\n}\r\n\r\n/** @internal */\r\nexport function isString(value: any): value is string {\r\n return typeof value === 'string'\r\n}\r\n\r\n/** @internal */\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number'\r\n}\r\n\r\n/** @internal */\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === 'boolean'\r\n}\r\n","import { Component, computed, effect, inject, input, model, OnDestroy, OnInit, signal, ViewEncapsulation } from '@angular/core'\r\nimport { ExpanderService } from '../expander/expander.service'\r\nimport { LevelLabels } from '../utils/interfaces'\r\nimport { isArray, isBoolean, isNumber, isObject, isString, isUndefined } from '../utils/utils'\r\n\r\n/** @internal */\r\n@Component({\r\n selector: 'nxt-json-view-item',\r\n templateUrl: './json-view-item.component.html',\r\n styleUrls: ['./json-view-item.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated\r\n\r\n})\r\nexport class JsonViewItemComponent implements OnInit, OnDestroy {\r\n\r\n readonly data = input<any>()\r\n\r\n readonly key = input<string>()\r\n readonly level = input<number>(0)\r\n readonly levelOpen = model<number>()\r\n readonly levelLabels = input<LevelLabels>()\r\n\r\n readonly isOpen = signal(false)\r\n private readonly effectRef = effect(() => {\r\n const levelOpen = this.levelOpen()\r\n this.isOpen.set(!isUndefined(levelOpen) && (this.level() <= levelOpen))\r\n this.effectRef.destroy()\r\n }, { manualCleanup: true })\r\n readonly childrenKeys = computed(() => {\r\n const data = this.data()\r\n if (isObject(data)) {\r\n return Object.keys(data)\r\n }\r\n return []\r\n })\r\n\r\n readonly hasChildren = computed(() => !!(this.childrenKeys().length))\r\n\r\n readonly _levelLabels = computed(() => {\r\n const levelLabels = this.levelLabels()\r\n return levelLabels?.[this.level()] || {}\r\n })\r\n\r\n readonly dataType = computed(() => {\r\n let dataType\r\n const data = this.data()\r\n if (isObject(data)) {\r\n dataType = 'Object'\r\n if (isArray(data)) {\r\n dataType = 'Array'\r\n }\r\n const key = this.key()\r\n if (key && this._levelLabels()[key]) {\r\n dataType = this._levelLabels()[key]\r\n }\r\n }\r\n return dataType\r\n })\r\n readonly value = computed(() => {\r\n let value\r\n const data = this.data()\r\n if (!isObject(data)) {\r\n value = data\r\n if (null === data) {\r\n value = 'null'\r\n }\r\n }\r\n return value\r\n })\r\n readonly valueType = computed(() => {\r\n const data = this.data()\r\n if (!isObject(data)) {\r\n if (isString(data)) {\r\n return 'string'\r\n } else if (isNumber(data)) {\r\n return 'number'\r\n } else if (isBoolean(data)) {\r\n return 'boolean'\r\n } else if (null === data) {\r\n return 'null'\r\n }\r\n }\r\n return\r\n })\r\n readonly isObject = computed(() => isObject(this.data()))\r\n readonly isArray = computed(() => isObject(this.data()) && isArray(this.data()))\r\n\r\n private readonly expanderService = inject(ExpanderService)\r\n\r\n ngOnInit() {\r\n this.expanderService.addItem(this)\r\n }\r\n\r\n ngOnDestroy() {\r\n this.expanderService.removeItem(this)\r\n }\r\n\r\n toggle() {\r\n if (!(this.childrenKeys().length)) {\r\n return\r\n }\r\n this.isOpen.set(!this.isOpen())\r\n }\r\n\r\n}\r\n","<div class=\"json-view\">\r\n <a (click)=\"toggle()\"\r\n tabindex=\"0\"\r\n (keydown.space)=\"toggle()\">\r\n <span class=\"toggler\"\r\n [class]=\"{'collapse': isOpen(), 'expand': !isOpen()}\"\r\n [style.visibility]=\"hasChildren()?'visible':'hidden'\"></span>\r\n @if (key()) {\r\n <span class=\"key\">\r\n <span>{{key()}}</span>\r\n <span>: </span>\r\n </span>\r\n }\r\n <span class=\"value\">\r\n @if (isObject()) {\r\n <span>\r\n {{ dataType() }}\r\n @if (isArray()) {\r\n <span>[ {{ $any(data())?.length }} ]</span>\r\n }\r\n </span>\r\n }\r\n @if (!isObject() && valueType()) {\r\n <span [class]=\"valueType()\">{{ value() }}</span>\r\n }\r\n </span>\r\n </a>\r\n @if (hasChildren() && isOpen()) {\r\n <div class=\"children\">\r\n @for (_key of childrenKeys(); track _key) {\r\n <nxt-json-view-item [data]=\"data()[_key]\"\r\n [key]=\"_key\"\r\n [level]=\"level()+1\"\r\n [levelOpen]=\"levelOpen()\"\r\n [levelLabels]=\"levelLabels()\" />\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewChecked, Component, inject, ViewEncapsulation, input, linkedSignal } from '@angular/core'\r\nimport { LevelLabels } from '../utils/interfaces'\r\nimport { ExpanderService } from '../expander/expander.service'\r\nimport { JsonViewItemComponent } from '../json-view-item/json-view-item.component'\r\n\r\n@Component({\r\n selector: 'nxt-json-view',\r\n templateUrl: './json-view.component.html',\r\n styleUrls: ['./json-view.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated,\r\n providers: [\r\n {\r\n provide: ExpanderService,\r\n useClass: ExpanderService\r\n }\r\n ],\r\n imports: [\r\n JsonViewItemComponent\r\n ]\r\n})\r\nexport class JsonViewComponent implements AfterViewChecked {\r\n /** JSON data, any valid JSON object */\r\n readonly data = input<any>()\r\n /** Initial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo` */\r\n readonly levelOpen = input<number>()\r\n /** Custom labels for elements within the hierarcy */\r\n readonly levelLabels = input<LevelLabels>()\r\n\r\n /** @internal */\r\n readonly _levelOpen = linkedSignal({\r\n source: () => this.levelOpen(),\r\n computation: level => level\r\n })\r\n\r\n private readonly expanderService = inject(ExpanderService)\r\n\r\n ngAfterViewChecked(): void {\r\n if (this._levelOpen() != undefined) {\r\n // Reset levelOpen to keep nested items collapsed when toggling\r\n this._levelOpen.set(undefined)\r\n }\r\n }\r\n\r\n /** Expand all items up to the given level */\r\n expandTo(level: number) {\r\n this._levelOpen.set(level)\r\n this.expanderService.expandTo(level)\r\n }\r\n\r\n /** Collapse any open items above the given level */\r\n collapseTo(level: number) {\r\n this.expanderService.collapseTo(level)\r\n }\r\n}\r\n","<div class=\"nxt-json-view\">\r\n <nxt-json-view-item [data]=\"data()\"\r\n [level]=\"0\"\r\n [levelOpen]=\"_levelOpen()\"\r\n [levelLabels]=\"levelLabels()\"\r\n class=\"json-view\" />\r\n</div>\r\n","import { NgModule } from '@angular/core'\r\nimport { JsonViewComponent } from './json-view/json-view.component'\r\n\r\n/** @deprecated use standalone imports */\r\n@NgModule({\r\n imports: [\r\n JsonViewComponent\r\n ],\r\n exports: [\r\n JsonViewComponent\r\n ]\r\n})\r\nexport class JsonViewModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nxt-json-view.mjs","sources":["../../../packages/json-view/src/lib/expander/expander.service.ts","../../../packages/json-view/src/lib/utils/utils.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.ts","../../../packages/json-view/src/lib/json-view-item/json-view-item.component.html","../../../packages/json-view/src/lib/json-view/json-view.component.ts","../../../packages/json-view/src/lib/json-view/json-view.component.html","../../../packages/json-view/src/nxt-json-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core'\r\nimport { type JsonViewItemComponent } from '../json-view-item/json-view-item.component'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExpanderService {\r\n private readonly items = new Set<JsonViewItemComponent>()\r\n\r\n addItem(item: JsonViewItemComponent) {\r\n this.items.add(item)\r\n }\r\n\r\n removeItem(item: JsonViewItemComponent) {\r\n this.items.delete(item)\r\n }\r\n\r\n expandTo(level: number) {\r\n this.items.forEach(i => {\r\n if (i.level() <= level && !i.isOpen()) {\r\n i.levelOpen.set(level)\r\n i.toggle()\r\n }\r\n })\r\n }\r\n\r\n collapseTo(level: number) {\r\n this.items.forEach(i => {\r\n if (i.level() > level && i.isOpen())\r\n i.toggle()\r\n })\r\n }\r\n}\r\n","/** @internal */\r\nexport function isObject(value: any): value is object {\r\n return value !== null && typeof value === 'object'\r\n}\r\n\r\n/** @internal */\r\nexport function isArray(value: any): value is unknown[] {\r\n return Array.isArray(value)\r\n}\r\n\r\n/** @internal */\r\nexport function isUndefined<T>(value: T | undefined): value is undefined {\r\n return typeof value === 'undefined'\r\n}\r\n\r\n/** @internal */\r\nexport function isString(value: any): value is string {\r\n return typeof value === 'string'\r\n}\r\n\r\n/** @internal */\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number'\r\n}\r\n\r\n/** @internal */\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === 'boolean'\r\n}\r\n","import { Component, computed, effect, inject, input, model, OnDestroy, OnInit, signal, ViewEncapsulation } from '@angular/core'\nimport { ExpanderService } from '../expander/expander.service'\nimport { LevelLabels } from '../utils/interfaces'\nimport { isArray, isBoolean, isNumber, isObject, isString, isUndefined } from '../utils/utils'\n\n/** @internal */\n@Component({\n selector: 'nxt-json-view-item',\n templateUrl: './json-view-item.component.html',\n styleUrls: ['./json-view-item.component.scss'],\n encapsulation: ViewEncapsulation.Emulated\n\n})\nexport class JsonViewItemComponent implements OnInit, OnDestroy {\n\n readonly data = input<any>()\n\n readonly key = input<string>()\n readonly level = input<number>(0)\n readonly levelOpen = model<number>()\n readonly levelLabels = input<LevelLabels>()\n\n readonly isOpen = signal(false)\n private readonly effectRef = effect(() => {\n const levelOpen = this.levelOpen()\n this.isOpen.set(!isUndefined(levelOpen) && (this.level() <= levelOpen))\n this.effectRef.destroy()\n }, { manualCleanup: true })\n readonly childrenKeys = computed(() => {\n const data = this.data()\n if (isObject(data)) {\n return Object.keys(data)\n }\n return []\n })\n\n readonly hasChildren = computed(() => !!(this.childrenKeys().length))\n\n readonly _levelLabels = computed(() => {\n const levelLabels = this.levelLabels()\n return levelLabels?.[this.level()] || {}\n })\n\n readonly dataType = computed(() => {\n let dataType\n const data = this.data()\n if (isObject(data)) {\n dataType = 'Object'\n if (isArray(data)) {\n dataType = 'Array'\n }\n const key = this.key()\n if (key && this._levelLabels()[key]) {\n dataType = this._levelLabels()[key]\n }\n }\n return dataType\n })\n readonly value = computed(() => {\n let value\n const data = this.data()\n if (!isObject(data)) {\n value = data\n if (null === data) {\n value = 'null'\n }\n }\n return value\n })\n readonly valueType = computed(() => {\n const data = this.data()\n if (!isObject(data)) {\n if (isString(data)) {\n return 'string'\n } else if (isNumber(data)) {\n return 'number'\n } else if (isBoolean(data)) {\n return 'boolean'\n } else if (null === data) {\n return 'null'\n }\n }\n return\n })\n readonly isObject = computed(() => isObject(this.data()))\n readonly isArray = computed(() => isObject(this.data()) && isArray(this.data()))\n\n private readonly expanderService = inject(ExpanderService)\n\n ngOnInit() {\n this.expanderService.addItem(this)\n }\n\n ngOnDestroy() {\n this.expanderService.removeItem(this)\n }\n\n toggle() {\n if (!(this.childrenKeys().length)) {\n return\n }\n this.isOpen.set(!this.isOpen())\n }\n\n}\n","<div class=\"json-view\">\r\n <a (click)=\"toggle()\"\r\n tabindex=\"0\"\r\n (keydown.space)=\"toggle()\">\r\n <span class=\"toggler\"\r\n [class]=\"{'collapse': isOpen(), 'expand': !isOpen()}\"\r\n [style.visibility]=\"hasChildren()?'visible':'hidden'\"></span>\r\n @if (key()) {\r\n <span class=\"key\">\r\n <span>{{key()}}</span>\r\n <span>: </span>\r\n </span>\r\n }\r\n <span class=\"value\">\r\n @if (isObject()) {\r\n <span>\r\n {{ dataType() }}\r\n @if (isArray()) {\r\n <span>[ {{ $any(data())?.length }} ]</span>\r\n }\r\n </span>\r\n }\r\n @if (!isObject() && valueType()) {\r\n <span [class]=\"valueType()\">{{ value() }}</span>\r\n }\r\n </span>\r\n </a>\r\n @if (hasChildren() && isOpen()) {\r\n <div class=\"children\">\r\n @for (_key of childrenKeys(); track _key) {\r\n <nxt-json-view-item [data]=\"data()[_key]\"\r\n [key]=\"_key\"\r\n [level]=\"level()+1\"\r\n [levelOpen]=\"levelOpen()\"\r\n [levelLabels]=\"levelLabels()\" />\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewChecked, Component, inject, ViewEncapsulation, input, linkedSignal } from '@angular/core'\nimport { LevelLabels } from '../utils/interfaces'\nimport { ExpanderService } from '../expander/expander.service'\nimport { JsonViewItemComponent } from '../json-view-item/json-view-item.component'\n\n@Component({\n selector: 'nxt-json-view',\n templateUrl: './json-view.component.html',\n styleUrls: ['./json-view.component.scss'],\n encapsulation: ViewEncapsulation.Emulated,\n providers: [\n {\n provide: ExpanderService,\n useClass: ExpanderService\n }\n ],\n imports: [\n JsonViewItemComponent\n ]\n})\nexport class JsonViewComponent implements AfterViewChecked {\n /** JSON data, any valid JSON object */\n readonly data = input<any>()\n /** Initial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo` */\n readonly levelOpen = input<number>()\n /** Custom labels for elements within the hierarcy */\n readonly levelLabels = input<LevelLabels>()\n\n /** @internal */\n readonly _levelOpen = linkedSignal({\n source: () => this.levelOpen(),\n computation: level => level\n })\n\n private readonly expanderService = inject(ExpanderService)\n\n ngAfterViewChecked(): void {\n if (this._levelOpen() != undefined) {\n // Reset levelOpen to keep nested items collapsed when toggling\n this._levelOpen.set(undefined)\n }\n }\n\n /** Expand all items up to the given level */\n expandTo(level: number) {\n this._levelOpen.set(level)\n this.expanderService.expandTo(level)\n }\n\n /** Collapse any open items above the given level */\n collapseTo(level: number) {\n this.expanderService.collapseTo(level)\n }\n}\n","<div class=\"nxt-json-view\">\r\n <nxt-json-view-item [data]=\"data()\"\r\n [level]=\"0\"\r\n [levelOpen]=\"_levelOpen()\"\r\n [levelLabels]=\"levelLabels()\"\r\n class=\"json-view\" />\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "nxt-json-view",
|
|
3
3
|
"description": "Angular component for interactive json view.",
|
|
4
4
|
"bugs": "https://github.com/Liquid-JS/nxt-components/issues",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "22.0.0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"repository": {
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"tree"
|
|
24
24
|
],
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@angular/common": "^
|
|
27
|
-
"@angular/core": "^
|
|
26
|
+
"@angular/common": "^22.0.0",
|
|
27
|
+
"@angular/core": "^22.0.0"
|
|
28
28
|
},
|
|
29
29
|
"module": "fesm2022/nxt-json-view.mjs",
|
|
30
30
|
"typings": "types/nxt-json-view.d.ts",
|
package/types/nxt-json-view.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { AfterViewChecked } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
interface LevelLabels {
|
|
@@ -9,29 +9,22 @@ interface LevelLabels {
|
|
|
9
9
|
|
|
10
10
|
declare class JsonViewComponent implements AfterViewChecked {
|
|
11
11
|
/** JSON data, any valid JSON object */
|
|
12
|
-
readonly data:
|
|
12
|
+
readonly data: _angular_core.InputSignal<any>;
|
|
13
13
|
/** Initial number of levels to be expanded; to expand / collapse the view after initial render, use `expandTo` / `collapseTo` */
|
|
14
|
-
readonly levelOpen:
|
|
14
|
+
readonly levelOpen: _angular_core.InputSignal<number | undefined>;
|
|
15
15
|
/** Custom labels for elements within the hierarcy */
|
|
16
|
-
readonly levelLabels:
|
|
16
|
+
readonly levelLabels: _angular_core.InputSignal<LevelLabels | undefined>;
|
|
17
17
|
/** @internal */
|
|
18
|
-
readonly _levelOpen:
|
|
18
|
+
readonly _levelOpen: _angular_core.WritableSignal<number | undefined>;
|
|
19
19
|
private readonly expanderService;
|
|
20
20
|
ngAfterViewChecked(): void;
|
|
21
21
|
/** Expand all items up to the given level */
|
|
22
22
|
expandTo(level: number): void;
|
|
23
23
|
/** Collapse any open items above the given level */
|
|
24
24
|
collapseTo(level: number): void;
|
|
25
|
-
static ɵfac:
|
|
26
|
-
static ɵcmp:
|
|
25
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<JsonViewComponent, never>;
|
|
26
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<JsonViewComponent, "nxt-json-view", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "levelOpen": { "alias": "levelOpen"; "required": false; "isSignal": true; }; "levelLabels": { "alias": "levelLabels"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
declare class JsonViewModule {
|
|
31
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<JsonViewModule, never>;
|
|
32
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<JsonViewModule, never, [typeof JsonViewComponent], [typeof JsonViewComponent]>;
|
|
33
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<JsonViewModule>;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export { JsonViewComponent, JsonViewModule };
|
|
29
|
+
export { JsonViewComponent };
|
|
37
30
|
export type { LevelLabels };
|