@miguimono/json-schema 2.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.
- package/LICENSE +21 -0
- package/README.md +255 -0
- package/dist/schema/README.md +421 -0
- package/dist/schema/fesm2022/json-schema.mjs +1654 -0
- package/dist/schema/fesm2022/json-schema.mjs.map +1 -0
- package/dist/schema/index.d.ts +5 -0
- package/dist/schema/lib/components/schema-card.component.d.ts +128 -0
- package/dist/schema/lib/components/schema-links.component.d.ts +61 -0
- package/dist/schema/lib/components/schema.component.d.ts +115 -0
- package/dist/schema/lib/models.d.ts +1 -0
- package/dist/schema/lib/services/json-adapter.service.d.ts +1 -0
- package/dist/schema/lib/services/schema-layout.service.d.ts +1 -0
- package/dist/schema/lib/shared/models.d.ts +319 -0
- package/dist/schema/lib/shared/services/json-adapter.service.d.ts +12 -0
- package/dist/schema/lib/shared/services/schema-layout.service.d.ts +21 -0
- package/dist/schema/ng16/fesm2022/json-schema-ng16.mjs +1656 -0
- package/dist/schema/ng16/fesm2022/json-schema-ng16.mjs.map +1 -0
- package/dist/schema/ng16/index.d.ts +5 -0
- package/dist/schema/ng16/lib/components/schema-card.component.d.ts +64 -0
- package/dist/schema/ng16/lib/components/schema-links.component.d.ts +28 -0
- package/dist/schema/ng16/lib/components/schema.component.d.ts +132 -0
- package/dist/schema/ng16/lib/models.d.ts +1 -0
- package/dist/schema/ng16/lib/services/json-adapter.service.d.ts +1 -0
- package/dist/schema/ng16/lib/services/schema-layout.service.d.ts +1 -0
- package/dist/schema/ng16/lib/shared/models.d.ts +319 -0
- package/dist/schema/ng16/lib/shared/services/json-adapter.service.d.ts +12 -0
- package/dist/schema/ng16/lib/shared/services/schema-layout.service.d.ts +21 -0
- package/dist/schema/ng16/public-api.d.ts +6 -0
- package/dist/schema/public-api.d.ts +5 -0
- package/package.json +61 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges, TemplateRef } from "@angular/core";
|
|
2
|
+
import { JsonAdapterService } from "../services/json-adapter.service";
|
|
3
|
+
import { SchemaLayoutService } from "../services/schema-layout.service";
|
|
4
|
+
import { SchemaEdge, SchemaNode, SchemaSettings, LinkStyle, LayoutAlign, LayoutDirection } from "../models";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class SchemaComponent implements AfterViewInit, OnChanges, OnDestroy {
|
|
7
|
+
private adapter;
|
|
8
|
+
private layoutService;
|
|
9
|
+
data: import("@angular/core").InputSignal<any>;
|
|
10
|
+
settings: import("@angular/core").InputSignal<SchemaSettings | null>;
|
|
11
|
+
cardTemplate: import("@angular/core").InputSignal<TemplateRef<any> | null>;
|
|
12
|
+
isLoading: import("@angular/core").InputSignal<boolean>;
|
|
13
|
+
isError: import("@angular/core").InputSignal<boolean>;
|
|
14
|
+
emptyMessage: import("@angular/core").InputSignal<string>;
|
|
15
|
+
loadingMessage: import("@angular/core").InputSignal<string>;
|
|
16
|
+
errorMessage: import("@angular/core").InputSignal<string>;
|
|
17
|
+
viewportHeight: import("@angular/core").WritableSignal<number>;
|
|
18
|
+
minViewportHeight: import("@angular/core").WritableSignal<number>;
|
|
19
|
+
showToolbar: import("@angular/core").WritableSignal<boolean>;
|
|
20
|
+
nodeClick: EventEmitter<SchemaNode>;
|
|
21
|
+
linkClick: EventEmitter<SchemaEdge>;
|
|
22
|
+
private fullGraph;
|
|
23
|
+
private graph;
|
|
24
|
+
nodes: import("@angular/core").Signal<SchemaNode[]>;
|
|
25
|
+
edges: import("@angular/core").Signal<SchemaEdge[]>;
|
|
26
|
+
rootRef: ElementRef<HTMLElement>;
|
|
27
|
+
private scale;
|
|
28
|
+
private minScale;
|
|
29
|
+
private maxScale;
|
|
30
|
+
private tx;
|
|
31
|
+
private ty;
|
|
32
|
+
private dragging;
|
|
33
|
+
private lastX;
|
|
34
|
+
private lastY;
|
|
35
|
+
private lastViewport;
|
|
36
|
+
/** Último punto de interacción sobre la stage (coordenadas de pantalla relativas al root). */
|
|
37
|
+
private lastPointerScreen;
|
|
38
|
+
private wheelRaf;
|
|
39
|
+
private pendingWheel;
|
|
40
|
+
transform: import("@angular/core").Signal<string>;
|
|
41
|
+
virtualWidth: number;
|
|
42
|
+
virtualHeight: number;
|
|
43
|
+
opt_linkStyle: import("@angular/core").WritableSignal<LinkStyle>;
|
|
44
|
+
opt_layoutAlign: import("@angular/core").WritableSignal<LayoutAlign>;
|
|
45
|
+
opt_layoutDirection: import("@angular/core").WritableSignal<LayoutDirection>;
|
|
46
|
+
isLoadingView: import("@angular/core").Signal<boolean>;
|
|
47
|
+
isErrorView: import("@angular/core").Signal<boolean>;
|
|
48
|
+
emptyMessageView: import("@angular/core").Signal<string>;
|
|
49
|
+
loadingMessageView: import("@angular/core").Signal<string>;
|
|
50
|
+
errorMessageView: import("@angular/core").Signal<string>;
|
|
51
|
+
private childrenById;
|
|
52
|
+
private parentsById;
|
|
53
|
+
private collapsed;
|
|
54
|
+
private measureIdsToCheck;
|
|
55
|
+
private lastDataRef;
|
|
56
|
+
private lastSettingsRef;
|
|
57
|
+
private hasComputedOnce;
|
|
58
|
+
enableCollapse: import("@angular/core").Signal<boolean>;
|
|
59
|
+
toolbarShowLinkStyle: import("@angular/core").Signal<boolean>;
|
|
60
|
+
toolbarShowLayoutAlign: import("@angular/core").Signal<boolean>;
|
|
61
|
+
toolbarShowLayoutDirection: import("@angular/core").Signal<boolean>;
|
|
62
|
+
constructor(adapter: JsonAdapterService, layoutService: SchemaLayoutService);
|
|
63
|
+
baseSettings: import("@angular/core").Signal<SchemaSettings>;
|
|
64
|
+
effectiveSettings: import("@angular/core").Signal<SchemaSettings>;
|
|
65
|
+
private recomputeFromSettings;
|
|
66
|
+
private resizeObs?;
|
|
67
|
+
ngAfterViewInit(): void;
|
|
68
|
+
ngOnChanges(_: SimpleChanges): void;
|
|
69
|
+
ngOnDestroy(): void;
|
|
70
|
+
private compute;
|
|
71
|
+
private relayoutVisible;
|
|
72
|
+
onCardToggle(n: SchemaNode): Promise<void>;
|
|
73
|
+
/** Devuelve si el nodo tiene hijos (para pintar botón de colapso). */
|
|
74
|
+
hasChildren: (id: string) => boolean;
|
|
75
|
+
/** Devuelve si el nodo está colapsado (estado visual en la card). */
|
|
76
|
+
isNodeCollapsed: (id: string) => boolean;
|
|
77
|
+
private animateToGraph;
|
|
78
|
+
onWheel(e: WheelEvent): void;
|
|
79
|
+
onPointerDown(e: PointerEvent): void;
|
|
80
|
+
onPointerMove(e: PointerEvent): void;
|
|
81
|
+
onPointerUp(): void;
|
|
82
|
+
onPointerLeave(): void;
|
|
83
|
+
onDblClick(): void;
|
|
84
|
+
zoomIn(): void;
|
|
85
|
+
zoomOut(): void;
|
|
86
|
+
resetView(): void;
|
|
87
|
+
setLinkStyle(v: string): void;
|
|
88
|
+
setLayoutAlign(v: string): void;
|
|
89
|
+
setLayoutDirection(v: string): void;
|
|
90
|
+
private cloneGraph;
|
|
91
|
+
private nextFrame;
|
|
92
|
+
private ensurePinMeta;
|
|
93
|
+
private updateVirtualSizeFromGraph;
|
|
94
|
+
private buildIndices;
|
|
95
|
+
private isVisibleNodeByCollapsedAncestors;
|
|
96
|
+
private buildVisibleGraphFromCollapsed;
|
|
97
|
+
private measureAndApply;
|
|
98
|
+
private getViewportSize;
|
|
99
|
+
private getGraphBounds;
|
|
100
|
+
private computeScaleToFit;
|
|
101
|
+
private fitToViewByBounds;
|
|
102
|
+
/** Zoom anclado al último punto de interacción sobre la stage; si no hay, usa el centro del viewport. */
|
|
103
|
+
private applyZoom;
|
|
104
|
+
private preserveCenterOnResize;
|
|
105
|
+
private getNodeById;
|
|
106
|
+
private getNodeScreenCenter;
|
|
107
|
+
private applyAnchorAfterLayout;
|
|
108
|
+
private getFirstVisibleNode;
|
|
109
|
+
private centerOnNode;
|
|
110
|
+
/** Centra un nodo de forma que su centro quede en una posición de pantalla dada (x,y). */
|
|
111
|
+
private centerOnNodeAtScreen;
|
|
112
|
+
private centerOnFirstNodeOrFit;
|
|
113
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SchemaComponent, never>;
|
|
114
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SchemaComponent, "schema", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": false; "isSignal": true; }; "cardTemplate": { "alias": "cardTemplate"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "isError": { "alias": "isError"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "linkClick": "linkClick"; }, never, never, true, never>;
|
|
115
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./shared/models";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { JsonAdapterService } from "../shared/services/json-adapter.service";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SchemaLayoutService } from "../shared/services/schema-layout.service";
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos y modelos base de la librería Schema.
|
|
3
|
+
* ---------------------------------------------------------------------------
|
|
4
|
+
* Este archivo define:
|
|
5
|
+
* - Tipos de configuración (dirección del layout, estilos, depuración, etc.)
|
|
6
|
+
* - Estructuras del grafo normalizado (nodos y aristas)
|
|
7
|
+
* - Estructura de configuración SchemaSettings (por secciones)
|
|
8
|
+
* - Valores por defecto (DEFAULT_SETTINGS)
|
|
9
|
+
*
|
|
10
|
+
* CONVENCIONES:
|
|
11
|
+
* - No se realizan operaciones lógicas aquí; solo contratos y defaults.
|
|
12
|
+
* - No modifiques nombres de propiedades existentes: otros módulos dependen
|
|
13
|
+
* de ellas. Cualquier cambio es breaking.
|
|
14
|
+
* - Todos los ejemplos son ilustrativos y no afectan el comportamiento.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Dirección del layout del grafo.
|
|
18
|
+
* - "RIGHT": flujo de izquierda → derecha (X crece).
|
|
19
|
+
* - "DOWN" : flujo de arriba → abajo (Y crece).
|
|
20
|
+
*
|
|
21
|
+
* Ejemplo de uso:
|
|
22
|
+
* layoutDirection: "RIGHT"
|
|
23
|
+
*/
|
|
24
|
+
export type LayoutDirection = "RIGHT" | "DOWN";
|
|
25
|
+
/**
|
|
26
|
+
* Alineación del padre respecto a sus hijos.
|
|
27
|
+
* - "firstChild": el centro del padre se alinea con el primer hijo (respeta orden JSON).
|
|
28
|
+
* - "center" : el centro del padre se alinea con el promedio de los hijos.
|
|
29
|
+
*
|
|
30
|
+
* Ejemplo de uso:
|
|
31
|
+
* layoutAlign: "center"
|
|
32
|
+
*/
|
|
33
|
+
export type LayoutAlign = "firstChild" | "center";
|
|
34
|
+
/**
|
|
35
|
+
* Estilo visual de las aristas.
|
|
36
|
+
* - "orthogonal": segmentos tipo “L”.
|
|
37
|
+
* - "curve" : curva cúbica suave.
|
|
38
|
+
* - "line" : recta simple.
|
|
39
|
+
*
|
|
40
|
+
* Ejemplo de uso:
|
|
41
|
+
* linkStyle: "orthogonal"
|
|
42
|
+
*/
|
|
43
|
+
export type LinkStyle = "curve" | "orthogonal" | "line";
|
|
44
|
+
/**
|
|
45
|
+
* Estrategia de ajuste de imagen en su contenedor.
|
|
46
|
+
* - "contain" : mantiene proporción, siempre completa dentro del cuadro.
|
|
47
|
+
* - "cover" : mantiene proporción, puede recortar para cubrir el cuadro.
|
|
48
|
+
* - "scale-down" : como "contain", pero solo escala hacia abajo si es necesario.
|
|
49
|
+
*
|
|
50
|
+
* Nota: estos valores se mapean a CSS `object-fit`.
|
|
51
|
+
*/
|
|
52
|
+
export type ImageFit = "contain" | "cover" | "scale-down";
|
|
53
|
+
/**
|
|
54
|
+
* Nodo del grafo normalizado.
|
|
55
|
+
* - `id` y `jsonPath` deben ser únicos por nodo.
|
|
56
|
+
* - `label` es opcionalmente derivado de claves preferidas (titleKeyPriority).
|
|
57
|
+
* - `data` conserva el objeto original asociado al nodo.
|
|
58
|
+
* - `width/height` pueden ajustarse dinámicamente tras medición del DOM.
|
|
59
|
+
*/
|
|
60
|
+
export interface SchemaNode {
|
|
61
|
+
/** Identificador único (por defecto, `jsonPath`). */
|
|
62
|
+
id: string;
|
|
63
|
+
/** Etiqueta visible opcional (título corto del nodo). */
|
|
64
|
+
label: string;
|
|
65
|
+
/** Ruta JSON (ej: "$.meta.children[0].name"). Debe ser estable y única. */
|
|
66
|
+
jsonPath: string;
|
|
67
|
+
/** Objeto original (o sub-objeto) del cual se derivó el nodo. */
|
|
68
|
+
data: Record<string, any>;
|
|
69
|
+
/** Metadatos derivados del proceso de normalización. */
|
|
70
|
+
jsonMeta?: {
|
|
71
|
+
/** Título calculado a partir de `titleKeyPriority` (si existe). */
|
|
72
|
+
title?: string;
|
|
73
|
+
/** Clave usada para el título (si fue encontrada). */
|
|
74
|
+
titleKeyUsed?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Subconjunto de pares clave-valor “visibles” como vista previa.
|
|
77
|
+
* Incluye escalares y, opcionalmente, arrays escalares (join(", ")).
|
|
78
|
+
*/
|
|
79
|
+
attributes?: Record<string, any>;
|
|
80
|
+
/** Número de hijos directos (no incluye descendencia). */
|
|
81
|
+
childrenCount?: number;
|
|
82
|
+
/** Cantidades de arrays no escalares por clave (para badges). */
|
|
83
|
+
arrayCounts?: Record<string, number>;
|
|
84
|
+
/**
|
|
85
|
+
* Orden relativo del hijo dentro de su padre (0, 1, 2, ...),
|
|
86
|
+
* preserva el orden del JSON para un layout estable.
|
|
87
|
+
*/
|
|
88
|
+
childOrder?: number;
|
|
89
|
+
};
|
|
90
|
+
/** Posición X (en px) dentro del “stage”; definida por el layout. */
|
|
91
|
+
x?: number;
|
|
92
|
+
/** Posición Y (en px) dentro del “stage”; definida por el layout. */
|
|
93
|
+
y?: number;
|
|
94
|
+
/** Ancho del nodo en px (puede ajustarse tras medición). */
|
|
95
|
+
width?: number;
|
|
96
|
+
/** Alto del nodo en px (puede ajustarse tras medición). */
|
|
97
|
+
height?: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Arista entre dos nodos del grafo.
|
|
101
|
+
* - `source` y `target` son `id` de nodos existentes.
|
|
102
|
+
* - `points` (opcional) contiene los puntos calculados por el layout; si no
|
|
103
|
+
* existen, el renderizador puede trazar una línea simple entre centros.
|
|
104
|
+
*/
|
|
105
|
+
export interface SchemaEdge {
|
|
106
|
+
/** Identificador único de la arista (sugerido: `${source}__${target}`). */
|
|
107
|
+
id: string;
|
|
108
|
+
/** Id del nodo origen. */
|
|
109
|
+
source: string;
|
|
110
|
+
/** Id del nodo destino. */
|
|
111
|
+
target: string;
|
|
112
|
+
/** Etiqueta opcional. No se usa en el render por defecto. */
|
|
113
|
+
label?: string;
|
|
114
|
+
/** Secuencia de puntos en px (para line/curve/orthogonal). */
|
|
115
|
+
points?: Array<{
|
|
116
|
+
x: number;
|
|
117
|
+
y: number;
|
|
118
|
+
}>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Contenedor inmutable de nodos, aristas y metadatos auxiliares.
|
|
122
|
+
* - `meta` permite transportar información del layout o anclajes (pinX/pinY).
|
|
123
|
+
*/
|
|
124
|
+
export interface NormalizedGraph {
|
|
125
|
+
nodes: SchemaNode[];
|
|
126
|
+
edges: SchemaEdge[];
|
|
127
|
+
meta?: Record<string, any>;
|
|
128
|
+
}
|
|
129
|
+
/** Forma de la miniatura de imagen en la card. */
|
|
130
|
+
export type ImageShape = "square" | "rounded" | "circle";
|
|
131
|
+
/**
|
|
132
|
+
* Configuración general de Schema, por secciones.
|
|
133
|
+
* Todas las propiedades son opcionales y se fusionan con DEFAULT_SETTINGS.
|
|
134
|
+
*
|
|
135
|
+
* Recomendación:
|
|
136
|
+
* - Define solo lo que necesites modificar.
|
|
137
|
+
* - Mantén las secciones separadas para claridad (colors/layout/dataView/...).
|
|
138
|
+
*/
|
|
139
|
+
export interface SchemaSettings {
|
|
140
|
+
messages?: {
|
|
141
|
+
/** Forzar overlay de “cargando”. */
|
|
142
|
+
isLoading?: boolean;
|
|
143
|
+
/** Forzar overlay de “error”. */
|
|
144
|
+
isError?: boolean;
|
|
145
|
+
/** Texto del overlay de carga. */
|
|
146
|
+
loadingMessage?: string;
|
|
147
|
+
/** Texto del overlay de error. */
|
|
148
|
+
errorMessage?: string;
|
|
149
|
+
/** Texto del overlay “vacío”. */
|
|
150
|
+
emptyMessage?: string;
|
|
151
|
+
};
|
|
152
|
+
colors?: {
|
|
153
|
+
/** Color del trazo de aristas (CSS color). Ej: "#019df4" */
|
|
154
|
+
linkStroke?: string;
|
|
155
|
+
/** Grosor del trazo de aristas (px). Ej: 2 */
|
|
156
|
+
linkStrokeWidth?: number;
|
|
157
|
+
/**
|
|
158
|
+
* Clave booleana en `node.data` para acentuar cards.
|
|
159
|
+
* Si esta clave está presente en un nodo, se pintará su contorno (y/o fondo)
|
|
160
|
+
* según su valor true/false/null. La clave será omitida de la vista
|
|
161
|
+
* previa de atributos (se implementa en JsonAdapterService).
|
|
162
|
+
* * Ej: "in_damage" | "certified" | null
|
|
163
|
+
*/
|
|
164
|
+
accentByKey?: string | null;
|
|
165
|
+
/** Invierte la semántica de los acentos (true ↔ false). */
|
|
166
|
+
accentInverse?: boolean;
|
|
167
|
+
/** Si `true`, aplica un relleno de fondo adicional según el valor. */
|
|
168
|
+
accentFill?: boolean;
|
|
169
|
+
/** Habilita clase de color para valor `true`. */
|
|
170
|
+
showColorTrue?: boolean;
|
|
171
|
+
/** Habilita clase de color para valor `false`. */
|
|
172
|
+
showColorFalse?: boolean;
|
|
173
|
+
/** Habilita clase de color para valor `null`. */
|
|
174
|
+
showColorNull?: boolean;
|
|
175
|
+
};
|
|
176
|
+
layout?: {
|
|
177
|
+
/** Dirección del layout ("RIGHT" | "DOWN"). */
|
|
178
|
+
layoutDirection?: LayoutDirection;
|
|
179
|
+
/** Alineación del padre respecto a hijos ("firstChild" | "center"). */
|
|
180
|
+
layoutAlign?: LayoutAlign;
|
|
181
|
+
/** Estilo de aristas ("orthogonal" | "curve" | "line"). */
|
|
182
|
+
linkStyle?: LinkStyle;
|
|
183
|
+
/**
|
|
184
|
+
* Tensión para curvas (px). Rango sugerido: 20–200.
|
|
185
|
+
* Valores altos generan curvas más “amplias”.
|
|
186
|
+
*/
|
|
187
|
+
curveTension?: number;
|
|
188
|
+
/**
|
|
189
|
+
* Umbral (px) por debajo del cual una curva se renderiza como línea recta
|
|
190
|
+
* (evita “curvas demasiado cortas”). Sugerido: 40–120.
|
|
191
|
+
*/
|
|
192
|
+
straightThresholdDx?: number;
|
|
193
|
+
/** Separación horizontal entre columnas (px). */
|
|
194
|
+
columnGapPx?: number;
|
|
195
|
+
/** Separación vertical entre filas (px). */
|
|
196
|
+
rowGapPx?: number;
|
|
197
|
+
};
|
|
198
|
+
dataView?: {
|
|
199
|
+
/**
|
|
200
|
+
* Prioridad de claves para título del nodo.
|
|
201
|
+
* Ej: ["name", "title", "id"]
|
|
202
|
+
*/
|
|
203
|
+
titleKeyPriority?: string[];
|
|
204
|
+
/**
|
|
205
|
+
* Claves globales a ocultar en los atributos de vista previa.
|
|
206
|
+
* Ej: ["_internal", "password"]
|
|
207
|
+
*/
|
|
208
|
+
hiddenKeysGlobal?: string[];
|
|
209
|
+
/**
|
|
210
|
+
* Si `true`, arrays escalares se muestran en la vista previa (join(", ")).
|
|
211
|
+
* Ejemplo:
|
|
212
|
+
* ["red","green"] → "red, green"
|
|
213
|
+
*/
|
|
214
|
+
treatScalarArraysAsAttribute?: boolean;
|
|
215
|
+
/**
|
|
216
|
+
* Profundidad máxima de exploración. Si `null`, sin límite.
|
|
217
|
+
* - 0: solo raíz
|
|
218
|
+
* - 1: raíz + 1 nivel
|
|
219
|
+
* - n: niveles anidados hasta n
|
|
220
|
+
*/
|
|
221
|
+
maxDepth?: number | null;
|
|
222
|
+
/**
|
|
223
|
+
* Mapa de claves → etiqueta legible para UI.
|
|
224
|
+
* Ej: { first_name: "Nombre", last_name: "Apellido" }
|
|
225
|
+
*/
|
|
226
|
+
labelData?: Record<string, string>;
|
|
227
|
+
/**
|
|
228
|
+
* Máximo de pares (k,v) en la vista previa. Evita cards demasiado largas.
|
|
229
|
+
* Sugerido: 20–2000 (por defecto alto para depuración).
|
|
230
|
+
*/
|
|
231
|
+
previewMaxKeys?: number;
|
|
232
|
+
/**
|
|
233
|
+
* Trunca valores largos en la vista previa si exceden este número de caracteres.
|
|
234
|
+
* Si `null`, no se trunca.
|
|
235
|
+
*/
|
|
236
|
+
valueMaxChars?: number | null;
|
|
237
|
+
/**
|
|
238
|
+
* Si `true`, muestra `title` con el valor completo al pasar el mouse por
|
|
239
|
+
* el valor truncado.
|
|
240
|
+
*/
|
|
241
|
+
valueShowTooltip?: boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Claves que NO deben romper línea en su valor (aplica `white-space: nowrap`).
|
|
244
|
+
* Útil para IDs, hashes, etc.
|
|
245
|
+
* Ej: ["id","hash","uuid"]
|
|
246
|
+
*/
|
|
247
|
+
noWrapKeys?: string[];
|
|
248
|
+
/** Máximo ancho de la card (px). Si `null`, sin límite. */
|
|
249
|
+
maxCardWidth?: number | null;
|
|
250
|
+
/** Máximo alto de la card (px). Si `null`, sin límite. */
|
|
251
|
+
maxCardHeight?: number | null;
|
|
252
|
+
/**
|
|
253
|
+
* Tamaño por defecto de cada nodo (px).
|
|
254
|
+
* Se ajusta tras medir contenido cuando `autoResizeCards` es `true`.
|
|
255
|
+
*/
|
|
256
|
+
defaultNodeSize?: {
|
|
257
|
+
width: number;
|
|
258
|
+
height: number;
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* Clave en `node.data` que contiene la URL de imagen.
|
|
262
|
+
* Ej: "avatarUrl" | "logo" | null (si no hay imagen).
|
|
263
|
+
*/
|
|
264
|
+
showImage?: string | null;
|
|
265
|
+
/**
|
|
266
|
+
* Tamaño de la miniatura en px (ancho/alto idénticos).
|
|
267
|
+
* Rango sugerido: 16–96.
|
|
268
|
+
*/
|
|
269
|
+
imageSizePx?: number;
|
|
270
|
+
/** Forma de la miniatura: "square" | "rounded" | "circle". */
|
|
271
|
+
imageShape?: ImageShape;
|
|
272
|
+
/** Si `true`, dibuja un borde sutil alrededor de la miniatura. */
|
|
273
|
+
imageBorder?: boolean;
|
|
274
|
+
/** Color o valor CSS para el fondo de la miniatura. Ej: "transparent". */
|
|
275
|
+
imageBg?: string | null;
|
|
276
|
+
/** Estrategia de ajuste de la imagen dentro del cuadro (CSS `object-fit`). */
|
|
277
|
+
imageFit?: ImageFit;
|
|
278
|
+
/**
|
|
279
|
+
* URL/local path de imagen de fallback si falla la carga de `showImage`.
|
|
280
|
+
* Ej: "assets/comingSoon.png" | null para omitir fallback.
|
|
281
|
+
* Nota: el componente puede optar por no utilizarlo si no se implementa.
|
|
282
|
+
*/
|
|
283
|
+
imageFallback?: string | null;
|
|
284
|
+
/**
|
|
285
|
+
* Habilita/Deshabilita la capacidad de colapsar nodos.
|
|
286
|
+
* Cuando está activo, los descendientes de un nodo colapsado no se muestran.
|
|
287
|
+
*/
|
|
288
|
+
enableCollapse?: boolean;
|
|
289
|
+
/** Recalcula tamaño de cards tras render para ajustar al contenido. */
|
|
290
|
+
autoResizeCards?: boolean;
|
|
291
|
+
/** Ancho extra (px) añadido tras la medición (márgenes internos). */
|
|
292
|
+
paddingWidthPx?: number;
|
|
293
|
+
/** Alto extra (px) añadido tras la medición (márgenes internos). */
|
|
294
|
+
paddingHeightPx?: number;
|
|
295
|
+
};
|
|
296
|
+
viewport?: {
|
|
297
|
+
/** Alto del viewport en px (contenedor con scroll oculto). */
|
|
298
|
+
height?: number;
|
|
299
|
+
/** Alto mínimo del viewport en px. */
|
|
300
|
+
minHeight?: number;
|
|
301
|
+
/** Muestra/oculta la toolbar. */
|
|
302
|
+
showToolbar?: boolean;
|
|
303
|
+
/** Controla la visibilidad de selectores en la toolbar. */
|
|
304
|
+
toolbarControls?: {
|
|
305
|
+
/** Selector de estilo de enlaces. */
|
|
306
|
+
showLinkStyle?: boolean;
|
|
307
|
+
/** Selector de alineación. */
|
|
308
|
+
showLayoutAlign?: boolean;
|
|
309
|
+
/** Selector de dirección. */
|
|
310
|
+
showLayoutDirection?: boolean;
|
|
311
|
+
};
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Valores por defecto (seguros) de configuración.
|
|
316
|
+
* - Estos valores son fusionados con `SchemaSettings` provistos por el usuario.
|
|
317
|
+
* - No contienen lógica condicional; son constantes.
|
|
318
|
+
*/
|
|
319
|
+
export declare const DEFAULT_SETTINGS: Required<SchemaSettings>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NormalizedGraph, SchemaSettings } from "../models";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class JsonAdapterService {
|
|
4
|
+
/**
|
|
5
|
+
* Normaliza un JSON a grafo de nodos y aristas.
|
|
6
|
+
* @param input Objeto JSON arbitrario.
|
|
7
|
+
* @param opts Configuración parcial (`SchemaSettings`).
|
|
8
|
+
*/
|
|
9
|
+
normalize(input: any, opts?: Partial<SchemaSettings>): NormalizedGraph;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<JsonAdapterService, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<JsonAdapterService>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { NormalizedGraph, SchemaSettings } from "../models";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Servicio de layout tipo “tidy tree” para RIGHT/DOWN.
|
|
5
|
+
* No gestiona pan/zoom ni overlays; solo posiciones y trayectorias.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SchemaLayoutService {
|
|
8
|
+
/**
|
|
9
|
+
* Aplica layout al grafo.
|
|
10
|
+
* @param g Grafo normalizado (nodos/aristas).
|
|
11
|
+
* @param settings Configuración parcial. Se fusiona con DEFAULT_SETTINGS.
|
|
12
|
+
* @returns Grafo con nodos posicionados y aristas con `points`.
|
|
13
|
+
*/
|
|
14
|
+
layout(g: NormalizedGraph, settings?: SchemaSettings): Promise<NormalizedGraph>;
|
|
15
|
+
/**
|
|
16
|
+
* Fusiona settings parciales con DEFAULT_SETTINGS, sección por sección.
|
|
17
|
+
*/
|
|
18
|
+
private mergeSettings;
|
|
19
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SchemaLayoutService, never>;
|
|
20
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SchemaLayoutService>;
|
|
21
|
+
}
|