@liquidcars/atlas 0.1.42 → 0.1.44

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
@@ -17,7 +17,7 @@ Después abre <http://localhost:4173/> (o <http://localhost:4173/demo/>). La dem
17
17
  ```html
18
18
  <script type="module" src="./dist/liquidcars-atlas.js"></script>
19
19
 
20
- <liquidcars-atlas height="720" relation-mode="selected" shell-labels="on" toolbar="on">
20
+ <liquidcars-atlas height="720" relation-mode="selected" relation-marker="cone" shell-labels="on" toolbar="on">
21
21
  <script type="application/json">
22
22
  {
23
23
  "palette": {
@@ -58,7 +58,10 @@ atlas.select('distribution-agreement'); // selecciona sin mover la cámara
58
58
  atlas.focusSelection(); // centra y amplía la selección explícitamente
59
59
  atlas.setSelectionNavigation('preserve'); // 'preserve' | 'center' | 'fit'
60
60
  atlas.selectRelation(0); // también acepta el id de una relación
61
- atlas.setRelationMode('all'); // 'all' | 'selected' | 'none'
61
+ atlas.getRelationBundle(); // conexiones A↔B que comparten el tubo de la selección
62
+ atlas.setRelationMode('all'); // 'all' | 'selected' | 'callers' | 'called' | 'none'
63
+ atlas.setRelationMarker('cone'); // 'cone' por defecto; 'ring' conserva el indicador clásico
64
+ atlas.setVisibleRelationGroups(['electric', 'water']); // null vuelve a mostrar todos
62
65
  atlas.setToolbarVisible(true); // también se puede usar toolbar="on" | "off"
63
66
  atlas.setPanelVisible(true); // también se puede usar panel="on" | "off"
64
67
  atlas.setItemFacing('camera'); // valor por defecto; usa 'model' para conservar la orientación original
@@ -114,7 +117,7 @@ por lo que una aplicación puede adaptar la apariencia sin modificar el bundle.
114
117
  Las propiedades `atlas.theme` y `atlas.styles` son alias prácticos de esta configuración.
115
118
 
116
119
  Eventos disponibles: `lc-ready`, `lc-error`, `lc-warning`, `lc-select`, `lc-model-change`,
117
- `lc-relation-mode`, `lc-item-facing-change`, `lc-focus-change`, `lc-print-ready`, `lc-print-error`,
120
+ `lc-relation-mode`, `lc-relation-marker-change`, `lc-relation-groups-change`, `lc-item-facing-change`, `lc-focus-change`, `lc-print-ready`, `lc-print-error`,
118
121
  `lc-print-restored` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
119
122
  las entidades incluyen `{ kind: 'entity', id, entity, source }` y las relaciones
120
123
  `{ kind: 'relation', id, index, relation, source }`. Los campos históricos `id`
@@ -137,6 +140,7 @@ atributo `selection-navigation="preserve|center|fit"`, mediante
137
140
 
138
141
  ```yaml
139
142
  render:
143
+ relationMarker: cone # ring conserva el indicador circular clásico
140
144
  navigation:
141
145
  onSelect: preserve
142
146
  itemFacing: model # opt-out; camera es el valor por defecto
@@ -148,6 +152,8 @@ Atlas prepara automáticamente una representación WYSIWYG al entrar en el modo
148
152
  de impresión del navegador. La captura conserva el ángulo, el zoom, el foco y
149
153
  los objetos visibles, pero omite la toolbar, el panel de información y las
150
154
  indicaciones de interacción. Al terminar se restaura el canvas WebGL.
155
+ Los conos animados indican el sentido incluso en una captura estática. Un
156
+ modelo puede recuperar los aros clásicos con `render.relationMarker: ring`.
151
157
 
152
158
  La misma funcionalidad puede controlarse explícitamente:
153
159
 
@@ -169,15 +175,17 @@ componente aplica `break-inside: avoid` durante la impresión.
169
175
  - `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
170
176
  - `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.
171
177
  - `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`).
178
+ - `render.relationMarker` (opcional): forma de los indicadores animados de relación. Admite `cone` (por defecto, conserva el sentido en capturas estáticas) o `ring`.
172
179
  - `style.label.anchor` (opcional): posición predeterminada de las etiquetas de los elementos (`auto`, `top`, `bottom`, `left` o `right`). Si se omite, los elementos usan `bottom`; una entidad puede sobrescribirlo con su propio `style.label.anchor`. Los títulos de contenedores mantienen su colocación automática salvo override explícito.
173
180
  - `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.
174
181
  - `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
175
182
  - `s` son dimensiones absolutas locales `[x, y, z]`.
176
183
  - `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.
184
+ - `relationGroups` declara capas temáticas `{id, label, color, description}` y cada relación puede referenciar una con `group`. `render.visibleRelationGroups` las filtra sin alterar el modo de relaciones. Las conexiones paralelas visibles comparten automáticamente un portador translúcido, pero cada conductor conserva selección, dirección, marcador e inspector propios.
177
185
  El campo visual opcional `mode` admite `directed` (por defecto),
178
186
  `bidirectional` y `broken`. En modo bidireccional los indicadores animados
179
187
  circulan en ambos sentidos por el mismo tubo; en modo broken los dos tramos
180
- se sustituyen por un único tubo rojo con tres anillos que vibran localmente,
188
+ se sustituyen por un único tubo rojo con tres indicadores que vibran localmente.
181
189
  distribuidos a lo largo del recorrido.
182
190
 
183
191
  Geometrías incluidas en esta primera versión: `box`, `cylinder`, `sphere`, `cone`, `frustum-cone`, `frustum-pyramid`, `frustum-triangle`, `prism`, `pyramid-square`, `pyramid-triangle`, `octahedron`, `dodecahedron` e `icosahedron`. Las variantes `frustum-*` son sólidos truncados con dos caras finitas paralelas; las dimensiones `s` se aplican sobre su caja final normalizada.
@@ -302,7 +310,7 @@ una caja roja de fallback y emite `lc-warning` con el código
302
310
 
303
311
  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.
304
312
 
305
- 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()`, `setItemFacing()`, `toggleItemFacing()`, `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.
313
+ 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()`, `setRelationMarker()`, `setItemFacing()`, `toggleItemFacing()`, `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.
306
314
 
307
315
  Cada cambio del estado vivo emite `lc-container-state-change`. Su detalle contiene
308
316
  `openContainers`, `changedContainers`, `changedContainer`, `open` y `source`, de
@@ -388,9 +396,10 @@ personalizados, paletas locales, anchors e imágenes declarativas. La
388
396
  versión `0.1.23` añadió desplazamiento lateral de cámara mediante ratón, teclado
389
397
  modificador y gestos táctiles, además de la API pública `panBy()` y `panTo()`.
390
398
  Se conserva la selección contextual de relaciones introducida en `0.1.22`: el usuario puede
391
- seleccionar un tubo directamente, el componente lo realza, muestra sus extremos
392
- y modo en el panel y emite el mismo evento `lc-select` con `kind: 'relation'`.
393
- La API pública añade `selectRelation()`, `selectedRelation` y `selection`, y la
399
+ seleccionar un tubo directamente. Cuando varias conexiones comparten extremos,
400
+ los clics sucesivos recorren sus conductores y el panel enumera el tubo virtual
401
+ completo para permitir una selección precisa. La API pública añade
402
+ `selectRelation()`, `getRelationBundle()`, `selectedRelation` y `selection`, y la
394
403
  selección se conserva durante las mutaciones del modelo siempre que el elemento
395
404
  siga existiendo. Se mantienen las correcciones de geometría, toolbar, etiquetas,
396
405
  paleta externa, edición en caliente y los modos `directed`, `bidirectional` y