@liquidcars/atlas 0.1.38 → 0.1.39

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
@@ -187,12 +187,17 @@ para mantener el contraste sobre geometrías tanto claras como oscuras.
187
187
  ## Geometry packs
188
188
 
189
189
  Las geometrías pueden distribuirse en paquetes independientes. El componente
190
- expone `registerGeometryPack()`, `unregisterGeometryPack()` y
191
- `getGeometryCatalog()`; los mismos métodos están disponibles como estáticos en
192
- `LiquidCarsAtlas`. Los identificadores usan un namespace (`infra.server`,
193
- `architecture.application`, etc.) y las primitivas integradas también se
194
- publican como `geo.box`, `geo.sphere`, etc. Los nombres históricos sin
195
- namespace siguen siendo compatibles.
190
+ expone `registerGeometryPack()`, `unregisterGeometryPack()`,
191
+ `getGeometryCatalog()` y `getGeometryPackCatalog()`; los mismos métodos están
192
+ disponibles como estáticos en `LiquidCarsAtlas`. Los identificadores usan un
193
+ namespace (`infra.server`, `emoji-fluent.robot`, `architecture.hexagonal.port`, etc.) y las primitivas
194
+ integradas también se publican como `geo.box`, `geo.sphere`, etc. Los nombres
195
+ históricos sin namespace siguen siendo compatibles. Los namespaces pueden contener segmentos separados por puntos, de modo que packs especializados como `architecture.hexagonal` convivan con `architecture`.
196
+
197
+ `getGeometryCatalog()` conserva el catálogo operativo de geometrías.
198
+ `getGeometryPackCatalog()` describe las librerías registradas, incluyendo
199
+ autoría, licencia, procedencia y recursos, sin duplicar estos datos en cada
200
+ geometría.
196
201
 
197
202
  El módulo exporta también `ATLAS_VERSION`, y la clase registrada expone la
198
203
  misma versión mediante `customElements.get("liquidcars-atlas").version`. Esta
@@ -202,27 +207,39 @@ si accidentalmente se cargan varias versiones del core.
202
207
  ```js
203
208
  import { registerGeometryPack } from "@liquidcars/atlas";
204
209
 
210
+ const robotImage = new URL("./assets/robot.svg", import.meta.url).href;
211
+
205
212
  registerGeometryPack({
206
- namespace: "infra",
207
- name: "Infrastructure",
213
+ namespace: "example",
214
+ name: "Example visual assets",
208
215
  version: "0.1.0",
209
- palette: { chassis: "#587386", accent: "#72dbc9" },
216
+ authors: [{ name: "Example Studio", url: "https://example.com" }],
217
+ license: { spdx: "MIT", url: "https://opensource.org/license/mit" },
218
+ sources: [{
219
+ id: "example-artwork",
220
+ name: "Example artwork",
221
+ authors: ["Example Studio"],
222
+ license: "MIT"
223
+ }],
224
+ resources: [{
225
+ id: "robot",
226
+ kind: "image",
227
+ mimeType: "image/svg+xml",
228
+ path: "./assets/robot.svg",
229
+ url: robotImage,
230
+ source: "example-artwork"
231
+ }],
232
+ palette: { backplate: "#193142", image: "#ffffff" },
210
233
  geometries: [{
211
- id: "server",
212
- name: "Server",
213
- canonicalSize: [2.7, 1.8, 2.2],
214
- parameters: {
215
- units: { type: "number", min: 1, max: 8, default: 3 },
216
- icon: { type: "icon", default: "⚙" },
217
- image: { type: "image", default: "" }
218
- },
219
- anchors: { input: [-1, 0, 0], output: [1, 0, 0], network: [0, 0, 1] },
220
- create({ parameters }) {
234
+ id: "robot",
235
+ canonicalSize: [2.4, 2.4, .5],
236
+ resource: "robot",
237
+ create({ resources }) {
221
238
  return { parts: [
222
- { shape: "box", size: [1, 1, 1], color: "chassis" },
223
- { shape: "plane", size: [.42, .42, 1], position: [0, 0, .51],
224
- color: "accent", icon: parameters.icon, image: parameters.image,
225
- edges: false, doubleSided: true }
239
+ { shape: "box", size: [.92, .92, .12], color: "backplate", radius: .16 },
240
+ { shape: "plane", size: [.84, .84, 1], position: [0, 0, .07],
241
+ color: "image", image: resources.robot.url, imageFit: "contain",
242
+ transparent: true, edges: false }
226
243
  ] };
227
244
  }
228
245
  }]
@@ -233,17 +250,22 @@ El modelo configura cada instancia sin conocer la implementación del paquete:
233
250
 
234
251
  ```json
235
252
  {
236
- "geometry": "infra.server",
237
- "geometryOptions": { "units": 4, "icon": "DB" },
238
- "geometryPalette": { "accent": "#ffd166" }
253
+ "geometry": "example.robot",
254
+ "geometryPalette": { "backplate": "#284b63" }
239
255
  }
240
256
  ```
241
257
 
242
258
  Cada definición puede declarar parámetros tipados, una paleta local,
243
- proporciones canónicas y anchors. Las piezas declarativas admiten primitivas,
244
- posición, rotación, escala, materiales, iconos de texto o emoji e imágenes por
245
- URL/data URI; los SVG también pueden proporcionarse inline. Para planos con
246
- imagen, `imageFit` admite `cover`, `contain` y `stretch`. El renderer mantiene Three.js encapsulado para evitar que los packs
259
+ proporciones canónicas y anchors. Los recursos declarados por el pack se
260
+ entregan a `create({ resources })` indexados por `id`; pueden estar
261
+ empaquetados mediante `new URL("./assets/...", import.meta.url)`, ser data URIs
262
+ o apuntar a un recurso remoto. `sources` permite atribuir una colección de
263
+ terceros una sola vez y cada recurso puede sobrescribir `authors` o `license`.
264
+
265
+ Las piezas declarativas admiten primitivas, posición, rotación, escala,
266
+ materiales e imágenes por URL/data URI; los SVG también pueden proporcionarse
267
+ inline. Para planos con imagen, `imageFit` admite `cover`, `contain` y
268
+ `stretch`. El renderer mantiene Three.js encapsulado para evitar que los packs
247
269
  dependan de su versión interna. Las relaciones parten por defecto de la
248
270
  superficie orientada hacia el otro extremo. `anchor: center` conserva el
249
271
  comportamiento centrado cuando sea necesario, y `fromAnchor` y `toAnchor`
@@ -319,12 +341,12 @@ Una vez publicado, los consumidores podrán instalarlo con `npm install @liquidc
319
341
  Para probar el paquete sin publicarlo, basta con instalar el tarball generado:
320
342
 
321
343
  ```bash
322
- npm install ./liquidcars-atlas-0.1.28.tgz
344
+ npm install ./liquidcars-atlas-0.1.39.tgz
323
345
  ```
324
346
 
325
347
  ## Estado
326
348
 
327
- `0.1.28` rasteriza explícitamente los SVG sobre un canvas antes de subirlos a
349
+ `0.1.39` incorpora metadatos normalizados de autoría, licencia, procedencia y recursos para los geometry packs, añade `getGeometryPackCatalog()` y entrega los recursos declarados a `create({ resources })`. Se mantiene intacto `getGeometryCatalog()` para conservar la compatibilidad. `0.1.28` rasteriza explícitamente los SVG sobre un canvas antes de subirlos a
328
350
  WebGL y emite diagnósticos cuando falla la carga o la conversión. `0.1.27` añade carga automática de imágenes SVG remotas, SVG mediante data URI
329
351
  y SVG inline, manteniendo las mismas opciones de cara y ajuste que las imágenes
330
352
  raster. `0.1.26` mantiene el centro como anclaje implícito de toda relación y utiliza
@@ -332,7 +354,7 @@ los puertos de geometrías externas únicamente cuando el modelo los solicita.
332
354
  También evita recorrer los materiales de geometrías compuestas en cada frame,
333
355
  refuerza la liberación de recursos y expone `getRenderStats()`.
334
356
  `0.1.24` incorporó geometry packs independientes, namespaces, parámetros
335
- personalizados, paletas locales, anchors e imágenes/iconos declarativos. La
357
+ personalizados, paletas locales, anchors e imágenes declarativas. La
336
358
  versión `0.1.23` añadió desplazamiento lateral de cámara mediante ratón, teclado
337
359
  modificador y gestos táctiles, además de la API pública `panBy()` y `panTo()`.
338
360
  Se conserva la selección contextual de relaciones introducida en `0.1.22`: el usuario puede