@liquidcars/atlas 0.1.32 → 0.1.34
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 +40 -3
- package/dist/liquidcars-atlas.js +512 -363
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +3 -2
- package/src/liquidcars-atlas.js +251 -32
package/README.md
CHANGED
|
@@ -69,6 +69,11 @@ const initialView = atlas.getCameraView();
|
|
|
69
69
|
atlas.setCameraView(initialView, { animate: false });
|
|
70
70
|
atlas.restoreInitialCamera({ animate: false });
|
|
71
71
|
atlas.setShellLabels(true);
|
|
72
|
+
atlas.setContainerOpen('distribution-agreements', true);
|
|
73
|
+
atlas.toggleContainer('distribution-agreements');
|
|
74
|
+
console.log(atlas.isContainerOpen('distribution-agreements'));
|
|
75
|
+
console.log(atlas.getOpenContainerIds());
|
|
76
|
+
atlas.restoreInitialContainerState();
|
|
72
77
|
atlas.openAllContainers();
|
|
73
78
|
atlas.closeAllContainers();
|
|
74
79
|
atlas.setTheme({
|
|
@@ -106,7 +111,8 @@ por lo que una aplicación puede adaptar la apariencia sin modificar el bundle.
|
|
|
106
111
|
Las propiedades `atlas.theme` y `atlas.styles` son alias prácticos de esta configuración.
|
|
107
112
|
|
|
108
113
|
Eventos disponibles: `lc-ready`, `lc-error`, `lc-warning`, `lc-select`, `lc-model-change`,
|
|
109
|
-
`lc-relation-mode`, `lc-focus-change
|
|
114
|
+
`lc-relation-mode`, `lc-focus-change`, `lc-print-ready`, `lc-print-error`,
|
|
115
|
+
`lc-print-restored` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
|
|
110
116
|
las entidades incluyen `{ kind: 'entity', id, entity, source }` y las relaciones
|
|
111
117
|
`{ kind: 'relation', id, index, relation, source }`. Los campos históricos `id`
|
|
112
118
|
y `entity` se conservan para las selecciones de entidad. Al volver a la vista
|
|
@@ -120,13 +126,34 @@ emite `lc-select` con `source: "pointer"`, pero deja la decisión a la página
|
|
|
120
126
|
anfitriona. La API equivalente es `setSelectionMode()` (también disponible
|
|
121
127
|
como `setClickBehavior()`).
|
|
122
128
|
|
|
129
|
+
## Impresión
|
|
130
|
+
|
|
131
|
+
Atlas prepara automáticamente una representación WYSIWYG al entrar en el modo
|
|
132
|
+
de impresión del navegador. La captura conserva el ángulo, el zoom, el foco y
|
|
133
|
+
los objetos visibles, pero omite la toolbar, el panel de información y las
|
|
134
|
+
indicaciones de interacción. Al terminar se restaura el canvas WebGL.
|
|
135
|
+
|
|
136
|
+
La misma funcionalidad puede controlarse explícitamente:
|
|
137
|
+
|
|
138
|
+
```js
|
|
139
|
+
const atlas = document.querySelector("liquidcars-atlas");
|
|
140
|
+
const frame = atlas.captureFrame(); // canvas 2D con el framebuffer actual
|
|
141
|
+
atlas.prepareForPrint();
|
|
142
|
+
atlas.restoreAfterPrint();
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
`captureFrame()` usa `WebGLRenderingContext.readPixels()` para funcionar también
|
|
146
|
+
en navegadores que no permiten copiar directamente un canvas WebGL sin
|
|
147
|
+
`preserveDrawingBuffer`. Para evitar que un bloque se divida entre páginas, el
|
|
148
|
+
componente aplica `break-inside: avoid` durante la impresión.
|
|
149
|
+
|
|
123
150
|
## Contrato de datos
|
|
124
151
|
|
|
125
152
|
- `palette`: mapa de nombres de color a valores CSS/hex.
|
|
126
153
|
- `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
|
|
127
154
|
- `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.
|
|
128
155
|
- `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`).
|
|
129
|
-
- `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.
|
|
156
|
+
- `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text`, `url` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`. Un contenedor puede declarar `open: true` para comenzar abierto; el valor predeterminado es cerrado y se omite al serializar. Las URL HTTP(S) se abren en una pestaña nueva desde el panel de información.
|
|
130
157
|
- `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
|
|
131
158
|
- `s` son dimensiones absolutas locales `[x, y, z]`.
|
|
132
159
|
- `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.
|
|
@@ -207,11 +234,21 @@ una caja roja de fallback y emite `lc-warning` con el código
|
|
|
207
234
|
|
|
208
235
|
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.
|
|
209
236
|
|
|
210
|
-
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.
|
|
237
|
+
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()`, `isContainerOpen()`, `getOpenContainerIds()`, `setContainerOpen()`, `setOpenContainers()`, `toggleContainer()`, `restoreInitialContainerState()`, `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.
|
|
238
|
+
|
|
239
|
+
Cada cambio del estado vivo emite `lc-container-state-change`. Su detalle contiene
|
|
240
|
+
`openContainers`, `changedContainers`, `changedContainer`, `open` y `source`, de
|
|
241
|
+
modo que el host puede consultar o persistir una interacción sin acceder a
|
|
242
|
+
detalles internos del componente.
|
|
211
243
|
|
|
212
244
|
Una vista inicial portable puede declararse dentro del modelo:
|
|
213
245
|
|
|
214
246
|
```yaml
|
|
247
|
+
entities:
|
|
248
|
+
- id: distribution-agreements
|
|
249
|
+
type: container
|
|
250
|
+
open: true
|
|
251
|
+
children: []
|
|
215
252
|
render:
|
|
216
253
|
focus:
|
|
217
254
|
mode: connected
|