@liquidcars/atlas 0.1.33 → 0.1.36

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 CHANGED
@@ -54,7 +54,9 @@ También se puede cargar el modelo desde JavaScript:
54
54
  ```js
55
55
  const atlas = document.querySelector('liquidcars-atlas');
56
56
  atlas.model = model;
57
- atlas.select('distribution-agreement');
57
+ atlas.select('distribution-agreement'); // selecciona sin mover la cámara
58
+ atlas.focusSelection(); // centra y amplía la selección explícitamente
59
+ atlas.setSelectionNavigation('preserve'); // 'preserve' | 'center' | 'fit'
58
60
  atlas.selectRelation(0); // también acepta el id de una relación
59
61
  atlas.setRelationMode('all'); // 'all' | 'selected' | 'none'
60
62
  atlas.setToolbarVisible(true); // también se puede usar toolbar="on" | "off"
@@ -69,6 +71,11 @@ const initialView = atlas.getCameraView();
69
71
  atlas.setCameraView(initialView, { animate: false });
70
72
  atlas.restoreInitialCamera({ animate: false });
71
73
  atlas.setShellLabels(true);
74
+ atlas.setContainerOpen('distribution-agreements', true);
75
+ atlas.toggleContainer('distribution-agreements');
76
+ console.log(atlas.isContainerOpen('distribution-agreements'));
77
+ console.log(atlas.getOpenContainerIds());
78
+ atlas.restoreInitialContainerState();
72
79
  atlas.openAllContainers();
73
80
  atlas.closeAllContainers();
74
81
  atlas.setTheme({
@@ -121,6 +128,18 @@ emite `lc-select` con `source: "pointer"`, pero deja la decisión a la página
121
128
  anfitriona. La API equivalente es `setSelectionMode()` (también disponible
122
129
  como `setClickBehavior()`).
123
130
 
131
+ La selección interna conserva la cámara por defecto. Un doble clic, el botón
132
+ **Enfocar selección** del panel o `focusSelection()` centran y amplían el
133
+ elemento seleccionado. El comportamiento automático puede cambiarse con el
134
+ atributo `selection-navigation="preserve|center|fit"`, mediante
135
+ `setSelectionNavigation()` o declarativamente en el modelo:
136
+
137
+ ```yaml
138
+ render:
139
+ navigation:
140
+ onSelect: preserve
141
+ ```
142
+
124
143
  ## Impresión
125
144
 
126
145
  Atlas prepara automáticamente una representación WYSIWYG al entrar en el modo
@@ -148,7 +167,7 @@ componente aplica `break-inside: avoid` durante la impresión.
148
167
  - `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
149
168
  - `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.
150
169
  - `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`).
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.
170
+ - `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.
152
171
  - `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
153
172
  - `s` son dimensiones absolutas locales `[x, y, z]`.
154
173
  - `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.
@@ -218,9 +237,10 @@ proporciones canónicas y anchors. Las piezas declarativas admiten primitivas,
218
237
  posición, rotación, escala, materiales, iconos de texto o emoji e imágenes por
219
238
  URL/data URI; los SVG también pueden proporcionarse inline. Para planos con
220
239
  imagen, `imageFit` admite `cover`, `contain` y `stretch`. El renderer mantiene Three.js encapsulado para evitar que los packs
221
- dependan de su versión interna. Las relaciones parten del centro por defecto;
222
- `fromAnchor` y `toAnchor` quedan como overrides explícitos para casos
223
- excepcionales.
240
+ dependan de su versión interna. Las relaciones parten por defecto de la
241
+ superficie orientada hacia el otro extremo. `anchor: center` conserva el
242
+ comportamiento centrado cuando sea necesario, y `fromAnchor` y `toAnchor`
243
+ permiten elegir puertos explícitos declarados por una geometría.
224
244
 
225
245
  Si un namespace no está registrado, Atlas conserva el modelo renderizable con
226
246
  una caja roja de fallback y emite `lc-warning` con el código
@@ -229,11 +249,21 @@ una caja roja de fallback y emite `lc-warning` con el código
229
249
 
230
250
  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.
231
251
 
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.
252
+ 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.
253
+
254
+ Cada cambio del estado vivo emite `lc-container-state-change`. Su detalle contiene
255
+ `openContainers`, `changedContainers`, `changedContainer`, `open` y `source`, de
256
+ modo que el host puede consultar o persistir una interacción sin acceder a
257
+ detalles internos del componente.
233
258
 
234
259
  Una vista inicial portable puede declararse dentro del modelo:
235
260
 
236
261
  ```yaml
262
+ entities:
263
+ - id: distribution-agreements
264
+ type: container
265
+ open: true
266
+ children: []
237
267
  render:
238
268
  focus:
239
269
  mode: connected