@liquidcars/atlas 0.1.30 → 0.1.32

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
@@ -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
- { "from": "dealer", "to": "base-offer", "label": "mantiene" }
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,7 @@ 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` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
109
+ `lc-relation-mode`, `lc-focus-change` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
104
110
  las entidades incluyen `{ kind: 'entity', id, entity, source }` y las relaciones
105
111
  `{ kind: 'relation', id, index, relation, source }`. Los campos históricos `id`
106
112
  y `entity` se conservan para las selecciones de entidad. Al volver a la vista
@@ -119,10 +125,11 @@ como `setClickBehavior()`).
119
125
  - `palette`: mapa de nombres de color a valores CSS/hex.
120
126
  - `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
121
127
  - `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
- - `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`.
128
+ - `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.
123
130
  - `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
124
131
  - `s` son dimensiones absolutas locales `[x, y, z]`.
125
- - `relations` acepta objetos `{from, to, label}` o la forma corta `[from, to, label]`.
132
+ - `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.
126
133
  El campo visual opcional `mode` admite `directed` (por defecto),
127
134
  `bidirectional` y `broken`. En modo bidireccional los indicadores animados
128
135
  circulan en ambos sentidos por el mismo tubo; en modo broken los dos tramos
@@ -200,18 +207,28 @@ una caja roja de fallback y emite `lc-warning` con el código
200
207
 
201
208
  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.
202
209
 
203
- 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()`, `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.
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.
204
211
 
205
212
  Una vista inicial portable puede declararse dentro del modelo:
206
213
 
207
214
  ```yaml
208
215
  render:
216
+ focus:
217
+ mode: connected
218
+ effect: dim
219
+ layout: preserve
220
+ opacity: 0.12
209
221
  camera:
210
222
  position: [12.4, 7.2, 18.6]
211
223
  target: [0, 1.5, 0]
212
224
  zoom: 1.35
213
225
  ```
214
226
 
227
+ La API equivalente es `setFocusFilter({ mode, effect, layout, opacity })`.
228
+ `getFocusedIds()` devuelve la selección, sus vecinos directos y los contenedores
229
+ ancestros necesarios. El evento `lc-focus-change` permite que un host conectado a
230
+ `@liquidcars/atlas-layout` recompile una proyección cuando `layout` es `reflow`.
231
+
215
232
  `position` y `target` fijan la dirección observada. Cuando existe `zoom`, éste
216
233
  prevalece para calcular la distancia final y mantener el encuadre; si se omite,
217
234
  Atlas lo deriva de la distancia declarada.