@liquidcars/atlas 0.1.29 → 0.1.30

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
@@ -32,7 +32,7 @@ Después abre <http://localhost:4173/> (o <http://localhost:4173/demo/>). La dem
32
32
  "p": [0, -3, 0],
33
33
  "s": [11, 3.4, 5],
34
34
  "c": "#48c8b0",
35
- "type": "shell",
35
+ "type": "container",
36
36
  "text": "..."
37
37
  }
38
38
  ],
@@ -59,6 +59,9 @@ atlas.panBy(-1.5, 0); // desplazamiento horizontal/vertical en el plano de cáma
59
59
  atlas.panTo(0, 0, 0); // centra la cámara en un punto del mundo
60
60
  atlas.fit();
61
61
  atlas.frontView();
62
+ const initialView = atlas.getCameraView();
63
+ atlas.setCameraView(initialView, { animate: false });
64
+ atlas.restoreInitialCamera({ animate: false });
62
65
  atlas.setShellLabels(true);
63
66
  atlas.openAllContainers();
64
67
  atlas.closeAllContainers();
@@ -115,6 +118,7 @@ como `setClickBehavior()`).
115
118
 
116
119
  - `palette`: mapa de nombres de color a valores CSS/hex.
117
120
  - `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
121
+ - `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.
118
122
  - `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`.
119
123
  - `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
120
124
  - `s` son dimensiones absolutas locales `[x, y, z]`.
@@ -127,6 +131,9 @@ como `setClickBehavior()`).
127
131
 
128
132
  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.
129
133
 
134
+ Las etiquetas se rasterizan con relleno claro y un contorno oscuro proporcional
135
+ para mantener el contraste sobre geometrías tanto claras como oscuras.
136
+
130
137
  ## Geometry packs
131
138
 
132
139
  Las geometrías pueden distribuirse en paquetes independientes. El componente
@@ -193,7 +200,21 @@ una caja roja de fallback y emite `lc-warning` con el código
193
200
 
194
201
  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.
195
202
 
196
- Las acciones de navegación y exploración también están disponibles para la página anfitriona: `zoomIn()`, `zoomOut()`, `panBy()`, `panTo()`, `fit()`, `frontView()`, `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.
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.
204
+
205
+ Una vista inicial portable puede declararse dentro del modelo:
206
+
207
+ ```yaml
208
+ render:
209
+ camera:
210
+ position: [12.4, 7.2, 18.6]
211
+ target: [0, 1.5, 0]
212
+ zoom: 1.35
213
+ ```
214
+
215
+ `position` y `target` fijan la dirección observada. Cuando existe `zoom`, éste
216
+ prevalece para calcular la distancia final y mantener el encuadre; si se omite,
217
+ Atlas lo deriva de la distancia declarada.
197
218
 
198
219
  La escena también se puede editar en caliente. `updateModel(patch)` reemplaza
199
220
  las secciones indicadas; `addEntity`, `updateEntity` y `removeEntity` gestionan
package/demo/model.json CHANGED
@@ -28,7 +28,7 @@
28
28
  5
29
29
  ],
30
30
  "c": "offers",
31
- "type": "shell",
31
+ "type": "container",
32
32
  "text": "La base del modelo contiene inventarios, ofertas y servicios. El dealer aporta la Base Offer, que referencia el vehículo físico; el proveedor aporta el servicio asociado."
33
33
  },
34
34
  {
@@ -46,7 +46,7 @@
46
46
  5
47
47
  ],
48
48
  "c": "ole",
49
- "type": "shell",
49
+ "type": "container",
50
50
  "text": "El Offer Listing Engine aplica revenue management, etiquetas y condiciones de distribución para calcular la oferta que observa cada canal."
51
51
  },
52
52
  {
@@ -64,7 +64,7 @@
64
64
  5
65
65
  ],
66
66
  "c": "agreements",
67
- "type": "shell",
67
+ "type": "container",
68
68
  "text": "Agrupa el acuerdo de distribución y sus ámbitos funcionales: atribución, reservas y pedidos. El acuerdo vincula las ofertas y servicios con su distribución autorizada."
69
69
  },
70
70
  {
@@ -82,7 +82,7 @@
82
82
  5
83
83
  ],
84
84
  "c": "channels",
85
- "type": "shell",
85
+ "type": "container",
86
86
  "text": "Agrupa los canales de distribución. Cada CHANNEL está contenido en CHANNELS y contiene la oferta de canal que presenta al comprador."
87
87
  },
88
88
  {
@@ -101,7 +101,7 @@
101
101
  3.9
102
102
  ],
103
103
  "c": "offers",
104
- "type": "shell",
104
+ "type": "container",
105
105
  "text": "Colección de ofertas alimentada directamente por el dealer o su sistema de stock. Contiene la Base Offer y propaga sus actualizaciones."
106
106
  },
107
107
  {
@@ -160,7 +160,7 @@
160
160
  3.9
161
161
  ],
162
162
  "c": "offers",
163
- "type": "shell",
163
+ "type": "container",
164
164
  "text": "Vista calculada de un inventario mediante filtros y reglas. Está apoyada sobre el inventario físico para expresar su dependencia; no duplica el vehículo."
165
165
  },
166
166
  {
@@ -220,7 +220,7 @@
220
220
  3.8
221
221
  ],
222
222
  "c": "ole",
223
- "type": "shell",
223
+ "type": "container",
224
224
  "text": "Etiquetas estáticas o dinámicas, activas o inactivas, que alimentan las reglas de selección, precio y disponibilidad. Su efecto procede de las fórmulas donde se utilizan."
225
225
  },
226
226
  {
@@ -365,7 +365,7 @@
365
365
  3.8
366
366
  ],
367
367
  "c": "ole",
368
- "type": "shell",
368
+ "type": "container",
369
369
  "text": "Aplica las reglas comerciales autorizadas al contexto de distribución. Contiene la Channel Offer calculada; el sistema ejecuta las decisiones de las partes."
370
370
  },
371
371
  {
@@ -546,7 +546,7 @@
546
546
  4.3
547
547
  ],
548
548
  "c": "channels",
549
- "type": "shell",
549
+ "type": "container",
550
550
  "text": "Representa un canal de distribución dentro de CHANNELS: un marketplace, la web del dealer u otro canal autorizado. Contiene la oferta de canal presentada al comprador."
551
551
  },
552
552
  {