@liquidcars/atlas 0.1.31 → 0.1.33
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/README.md +34 -6
- package/dist/liquidcars-atlas.js +407 -297
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +3 -2
- package/src/liquidcars-atlas.js +272 -41
package/README.md
CHANGED
|
@@ -37,7 +37,12 @@ Después abre <http://localhost:4173/> (o <http://localhost:4173/demo/>). La dem
|
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
"relations": [
|
|
40
|
-
{
|
|
40
|
+
{
|
|
41
|
+
"from": "dealer",
|
|
42
|
+
"to": "base-offer",
|
|
43
|
+
"label": "mantiene",
|
|
44
|
+
"text": "Mantiene sincronizada la oferta base del concesionario."
|
|
45
|
+
}
|
|
41
46
|
]
|
|
42
47
|
}
|
|
43
48
|
</script>
|
|
@@ -53,6 +58,7 @@ atlas.select('distribution-agreement');
|
|
|
53
58
|
atlas.selectRelation(0); // también acepta el id de una relación
|
|
54
59
|
atlas.setRelationMode('all'); // 'all' | 'selected' | 'none'
|
|
55
60
|
atlas.setToolbarVisible(true); // también se puede usar toolbar="on" | "off"
|
|
61
|
+
atlas.setPanelVisible(true); // también se puede usar panel="on" | "off"
|
|
56
62
|
atlas.zoomIn();
|
|
57
63
|
atlas.zoomOut();
|
|
58
64
|
atlas.panBy(-1.5, 0); // desplazamiento horizontal/vertical en el plano de cámara
|
|
@@ -76,7 +82,7 @@ atlas.setSelectionMode('event'); // el clic emite lc-select sin navegar internam
|
|
|
76
82
|
// El componente se puede modificar sin volver a crearlo.
|
|
77
83
|
atlas.addEntity({ id: 'service', name: 'Service', geometry: 'cone', p: [4, 0, 0], s: [2, 2, 2] });
|
|
78
84
|
atlas.updateEntity('service', { text: 'Servicio actualizado', c: '#ed8f98' });
|
|
79
|
-
atlas.addRelation({ from: 'service', to: 'offers', label: 'publica', mode: 'bidirectional' });
|
|
85
|
+
atlas.addRelation({ from: 'service', to: 'offers', label: 'publica', text: 'Publica ofertas validadas.', mode: 'bidirectional' });
|
|
80
86
|
atlas.updateRelation(0, { mode: 'broken' });
|
|
81
87
|
atlas.removeRelation(0);
|
|
82
88
|
atlas.removeEntity('service');
|
|
@@ -100,7 +106,8 @@ por lo que una aplicación puede adaptar la apariencia sin modificar el bundle.
|
|
|
100
106
|
Las propiedades `atlas.theme` y `atlas.styles` son alias prácticos de esta configuración.
|
|
101
107
|
|
|
102
108
|
Eventos disponibles: `lc-ready`, `lc-error`, `lc-warning`, `lc-select`, `lc-model-change`,
|
|
103
|
-
`lc-relation-mode`, `lc-focus-change
|
|
109
|
+
`lc-relation-mode`, `lc-focus-change`, `lc-print-ready`, `lc-print-error`,
|
|
110
|
+
`lc-print-restored` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
|
|
104
111
|
las entidades incluyen `{ kind: 'entity', id, entity, source }` y las relaciones
|
|
105
112
|
`{ kind: 'relation', id, index, relation, source }`. Los campos históricos `id`
|
|
106
113
|
y `entity` se conservan para las selecciones de entidad. Al volver a la vista
|
|
@@ -114,16 +121,37 @@ emite `lc-select` con `source: "pointer"`, pero deja la decisión a la página
|
|
|
114
121
|
anfitriona. La API equivalente es `setSelectionMode()` (también disponible
|
|
115
122
|
como `setClickBehavior()`).
|
|
116
123
|
|
|
124
|
+
## Impresión
|
|
125
|
+
|
|
126
|
+
Atlas prepara automáticamente una representación WYSIWYG al entrar en el modo
|
|
127
|
+
de impresión del navegador. La captura conserva el ángulo, el zoom, el foco y
|
|
128
|
+
los objetos visibles, pero omite la toolbar, el panel de información y las
|
|
129
|
+
indicaciones de interacción. Al terminar se restaura el canvas WebGL.
|
|
130
|
+
|
|
131
|
+
La misma funcionalidad puede controlarse explícitamente:
|
|
132
|
+
|
|
133
|
+
```js
|
|
134
|
+
const atlas = document.querySelector("liquidcars-atlas");
|
|
135
|
+
const frame = atlas.captureFrame(); // canvas 2D con el framebuffer actual
|
|
136
|
+
atlas.prepareForPrint();
|
|
137
|
+
atlas.restoreAfterPrint();
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
`captureFrame()` usa `WebGLRenderingContext.readPixels()` para funcionar también
|
|
141
|
+
en navegadores que no permiten copiar directamente un canvas WebGL sin
|
|
142
|
+
`preserveDrawingBuffer`. Para evitar que un bloque se divida entre páginas, el
|
|
143
|
+
componente aplica `break-inside: avoid` durante la impresión.
|
|
144
|
+
|
|
117
145
|
## Contrato de datos
|
|
118
146
|
|
|
119
147
|
- `palette`: mapa de nombres de color a valores CSS/hex.
|
|
120
148
|
- `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
|
|
121
149
|
- `render.camera` (opcional): vista inicial con `position`, `target` y `zoom`. Las coordenadas pertenecen al espacio del modelo; `zoom` conserva el encuadre relativo entre tamaños de visor.
|
|
122
150
|
- `render.focus` (opcional): filtrado visual por selección. `mode` acepta `all` o `connected`, `effect` acepta `dim` o `hide`, y `layout` distingue posiciones estables (`preserve`) de una proyección recompilada (`reflow`).
|
|
123
|
-
- `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`.
|
|
151
|
+
- `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text`, `url` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`. Las URL HTTP(S) se abren en una pestaña nueva desde el panel de información.
|
|
124
152
|
- `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
|
|
125
153
|
- `s` son dimensiones absolutas locales `[x, y, z]`.
|
|
126
|
-
- `relations` acepta objetos `{from, to, label}` o la forma corta `[from, to, label]`.
|
|
154
|
+
- `relations` acepta objetos `{from, to, label, text, url}` o la forma corta `[from, to, label]`. `label` es el título corto de la conexión, `text` su descripción y `url` su documentación externa en el panel de información.
|
|
127
155
|
El campo visual opcional `mode` admite `directed` (por defecto),
|
|
128
156
|
`bidirectional` y `broken`. En modo bidireccional los indicadores animados
|
|
129
157
|
circulan en ambos sentidos por el mismo tubo; en modo broken los dos tramos
|
|
@@ -201,7 +229,7 @@ una caja roja de fallback y emite `lc-warning` con el código
|
|
|
201
229
|
|
|
202
230
|
La paleta puede cambiarse después de cargar el modelo mediante `atlas.setPalette({ nombre: color })` o asignando `atlas.palette = { ... }`. El cambio actualiza las piezas, aristas y relaciones sin reconstruir el modelo.
|
|
203
231
|
|
|
204
|
-
Las acciones de navegación y exploración también están disponibles para la página anfitriona: `zoomIn()`, `zoomOut()`, `panBy()`, `panTo()`, `fit()`, `frontView()`, `getCameraView()`, `setCameraView()`, `restoreInitialCamera()`, `setShellLabels()`, `toggleShellLabels()`, `setFocusFilter()`, `clearFocusFilter()`, `getFocusedIds()`, `openAllContainers()` y `closeAllContainers()`. El usuario puede desplazar la vista con el botón derecho, con `Shift` + arrastre o mediante dos dedos en una pantalla táctil. Así se puede construir una barra de controles propia sin depender de la toolbar interna.
|
|
232
|
+
Las acciones de navegación y exploración también están disponibles para la página anfitriona: `zoomIn()`, `zoomOut()`, `panBy()`, `panTo()`, `fit()`, `frontView()`, `getCameraView()`, `setCameraView()`, `restoreInitialCamera()`, `setShellLabels()`, `toggleShellLabels()`, `setPanelVisible()`, `setFocusFilter()`, `clearFocusFilter()`, `getFocusedIds()`, `openAllContainers()` y `closeAllContainers()`. El usuario puede desplazar la vista con el botón derecho, con `Shift` + arrastre o mediante dos dedos en una pantalla táctil. Así se puede construir una barra de controles propia sin depender de la toolbar interna.
|
|
205
233
|
|
|
206
234
|
Una vista inicial portable puede declararse dentro del modelo:
|
|
207
235
|
|