@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 +17 -8
- package/dist/liquidcars-atlas.js +737 -557
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +1 -1
- package/src/liquidcars-atlas.js +358 -58
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.
|
|
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
|
|
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
|
|
392
|
-
|
|
393
|
-
|
|
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
|