@liquidcars/atlas 0.1.18 → 0.1.20

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
@@ -141,9 +141,9 @@ Una vez publicado, los consumidores podrán instalarlo con `npm install @liquidc
141
141
  Para probar el paquete sin publicarlo, basta con instalar el tarball generado:
142
142
 
143
143
  ```bash
144
- npm install ./liquidcars-atlas-0.1.18.tgz
144
+ npm install ./liquidcars-atlas-0.1.20.tgz
145
145
  ```
146
146
 
147
147
  ## Estado
148
148
 
149
- `0.1.18` mantiene la corrección del desplazamiento interno del texto y ancla las etiquetas a las dimensiones reales de las geometrías redondeadas. Además fija un margen superior absoluto para las etiquetas secundarias de contenedores abiertos, situado dentro del frontal del contenedor y sin depender de sus dimensiones. También corrige los sólidos truncados, normaliza sus dimensiones finales, refuerza la visibilidad de la toolbar con el atributo `toolbar="on"`/`"off"` y `setToolbarVisible()`, desacopla la paleta por defecto de nombres de dominio, añade actualización programática de la paleta con `setPalette`, expone las acciones de navegación para controles externos y mantiene siempre visibles las ayudas de interacción dentro del viewport. Esta versión añade edición en caliente de entidades y relaciones, eventos compuestos de selección y los modos de relación `directed`, `bidirectional` y `broken`.
149
+ `0.1.20` mantiene la corrección del desplazamiento interno del texto y ancla las etiquetas a las dimensiones reales de las geometrías redondeadas. Además fija un margen superior absoluto para las etiquetas secundarias de contenedores abiertos, situado dentro del frontal del contenedor y sin depender de sus dimensiones. También corrige los sólidos truncados, normaliza sus dimensiones finales, refuerza la visibilidad de la toolbar con el atributo `toolbar="on"`/`"off"` y `setToolbarVisible()`, desacopla la paleta por defecto de nombres de dominio, añade actualización programática de la paleta con `setPalette`, expone las acciones de navegación para controles externos y mantiene siempre visibles las ayudas de interacción dentro del viewport. Esta versión añade edición en caliente de entidades y relaciones, eventos compuestos de selección y los modos de relación `directed`, `bidirectional` y `broken`; las relaciones rotas se representan con un único tubo rojo y tres anillos oscilantes distribuidos a lo largo del recorrido.
package/demo/index.html CHANGED
@@ -14,12 +14,12 @@
14
14
  liquidcars-atlas { display: block; width: 100%; max-width: 1480px; margin: 0 auto; }
15
15
  code { color: #85e5d3; }
16
16
  </style>
17
- <script type="module" src="../dist/liquidcars-atlas.js?v=0.1.18"></script>
17
+ <script type="module" src="../dist/liquidcars-atlas.js?v=0.1.20"></script>
18
18
  </head>
19
19
  <body>
20
20
  <header>
21
21
  <h1>LiquidCars Atlas</h1>
22
- <p>Prueba de distribución del componente <code>&lt;liquidcars-atlas&gt;</code> · v0.1.18</p>
22
+ <p>Prueba de distribución del componente <code>&lt;liquidcars-atlas&gt;</code> · v0.1.20</p>
23
23
  </header>
24
24
  <main>
25
25
  <liquidcars-atlas id="atlas" height="720" relation-mode="selected" shell-labels="on"></liquidcars-atlas>
@@ -1,4 +1,4 @@
1
- /*! LiquidCars Atlas 0.1.18 | MIT */
1
+ /*! LiquidCars Atlas 0.1.20 | MIT */
2
2
 
3
3
  // src/three.core.js
4
4
  /**
@@ -30122,24 +30122,21 @@ var LiquidCarsAtlas = class extends HTMLElement {
30122
30122
  if (visualMode === "broken") {
30123
30123
  const brokenColor = new Color(0xe45b63);
30124
30124
  const direction = delta.clone().normalize();
30125
- const midpoint = start.clone().lerp(end, 0.5);
30126
- const gap = Math.min(delta.length() * 0.16, 0.72);
30127
- makeTube(start, midpoint.clone().sub(direction.clone().multiplyScalar(gap / 2)), 0.86, brokenColor, 0.055);
30128
- makeTube(midpoint.clone().add(direction.clone().multiplyScalar(gap / 2)), end, 0.86, brokenColor, 0.055);
30129
- // Mark the interruption with a red X in a plane perpendicular to
30130
- // the communication line. The two arms are fixed at the midpoint,
30131
- // making the broken state visible from every camera angle.
30132
- const reference = Math.abs(direction.y) < 0.9 ? new Vector3(0, 1, 0) : new Vector3(1, 0, 0);
30133
- const axisA = new Vector3().crossVectors(direction, reference).normalize();
30134
- const axisB = new Vector3().crossVectors(direction, axisA).normalize();
30135
- const arm = Math.min(0.52, Math.max(0.28, delta.length() * 0.07));
30136
- makeTube(midpoint.clone().addScaledVector(axisA, -arm), midpoint.clone().addScaledVector(axisA, arm), 1, brokenColor, 0.065);
30137
- makeTube(midpoint.clone().addScaledVector(axisB, -arm), midpoint.clone().addScaledVector(axisB, arm), 1, brokenColor, 0.065);
30138
- const stoppedRing = new Mesh(new TorusGeometry(0.09, 0.025, 8, 20), new MeshBasicMaterial({ color: brokenColor, transparent: true, opacity: 1 }));
30139
- stoppedRing.userData.start = midpoint.clone();
30140
- stoppedRing.userData.end = midpoint.clone();
30141
- stoppedRing.quaternion.setFromUnitVectors(new Vector3(0, 0, 1), direction);
30142
- this.relationGroup.add(stoppedRing);
30125
+ // A broken communication remains a continuous red tube. Its rings
30126
+ // oscillate locally around their positions instead of travelling
30127
+ // along the connection, conveying a failed/retrying signal.
30128
+ makeTube(start, end, 0.88, brokenColor, 0.055);
30129
+ const amplitude = Math.min(0.18, Math.max(0.07, delta.length() * 0.018));
30130
+ for (let ringIndex = 0; ringIndex < 3; ringIndex++) {
30131
+ const position = start.clone().lerp(end, (ringIndex + 1) / 4);
30132
+ const ring = new Mesh(new TorusGeometry(0.085, 0.024, 8, 20), new MeshBasicMaterial({ color: brokenColor, transparent: true, opacity: 1 }));
30133
+ ring.userData.phase = ringIndex / 3;
30134
+ ring.userData.oscillate = true;
30135
+ ring.userData.start = position.clone().addScaledVector(direction, -amplitude);
30136
+ ring.userData.end = position.clone().addScaledVector(direction, amplitude);
30137
+ ring.quaternion.setFromUnitVectors(new Vector3(0, 0, 1), direction);
30138
+ this.relationGroup.add(ring);
30139
+ }
30143
30140
  continue;
30144
30141
  }
30145
30142
  makeTube(start, end);
@@ -30351,7 +30348,9 @@ var LiquidCarsAtlas = class extends HTMLElement {
30351
30348
  if (!child.userData.start) continue;
30352
30349
  const phase = child.userData.phase || 0;
30353
30350
  const direction = child.userData.direction || 1;
30354
- const factor = ((time * 22e-5 * direction + phase) % 1 + 1) % 1;
30351
+ const factor = child.userData.oscillate
30352
+ ? 0.5 + 0.5 * Math.sin(time * 0.004 + phase * Math.PI * 2)
30353
+ : ((time * 22e-5 * direction + phase) % 1 + 1) % 1;
30355
30354
  child.position.lerpVectors(child.userData.start, child.userData.end, factor);
30356
30355
  }
30357
30356
  this.renderer.render(this.scene, this.camera);
package/index.html CHANGED
@@ -14,12 +14,12 @@
14
14
  liquidcars-atlas { display: block; width: 100%; max-width: 1480px; margin: 0 auto; }
15
15
  code { color: #85e5d3; }
16
16
  </style>
17
- <script type="module" src="./dist/liquidcars-atlas.js?v=0.1.18"></script>
17
+ <script type="module" src="./dist/liquidcars-atlas.js?v=0.1.20"></script>
18
18
  </head>
19
19
  <body>
20
20
  <header>
21
21
  <h1>LiquidCars Atlas</h1>
22
- <p>Prueba de distribución del componente <code>&lt;liquidcars-atlas&gt;</code> · v0.1.18</p>
22
+ <p>Prueba de distribución del componente <code>&lt;liquidcars-atlas&gt;</code> · v0.1.20</p>
23
23
  </header>
24
24
  <main>
25
25
  <liquidcars-atlas id="atlas" height="720" relation-mode="selected" shell-labels="on"></liquidcars-atlas>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liquidcars/atlas",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "description": "Reusable 3D conceptual atlas Web Component for LiquidCars-style models",
5
5
  "type": "module",
6
6
  "main": "./dist/liquidcars-atlas.js",