distark-render 1.1.15 → 1.1.16

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.
Files changed (184) hide show
  1. package/README.md +0 -0
  2. package/assets/tank.json +0 -0
  3. package/dist/cli/animate.d.ts +0 -0
  4. package/dist/cli/animate.d.ts.map +0 -0
  5. package/dist/cli/animate.js +0 -0
  6. package/dist/cli/animate.js.map +0 -0
  7. package/dist/cli/diff.d.ts +0 -0
  8. package/dist/cli/diff.d.ts.map +0 -0
  9. package/dist/cli/diff.js +0 -0
  10. package/dist/cli/diff.js.map +0 -0
  11. package/dist/cli/distark-check.d.ts +0 -0
  12. package/dist/cli/distark-check.d.ts.map +0 -0
  13. package/dist/cli/distark-check.js +0 -0
  14. package/dist/cli/distark-check.js.map +0 -0
  15. package/dist/cli/query.d.ts +0 -0
  16. package/dist/cli/query.d.ts.map +0 -0
  17. package/dist/cli/query.js +0 -0
  18. package/dist/cli/query.js.map +0 -0
  19. package/dist/cli/record.d.ts +0 -0
  20. package/dist/cli/record.d.ts.map +0 -0
  21. package/dist/cli/record.js +0 -0
  22. package/dist/cli/record.js.map +0 -0
  23. package/dist/cli/render.d.ts +0 -0
  24. package/dist/cli/render.d.ts.map +0 -0
  25. package/dist/cli/render.js +0 -0
  26. package/dist/cli/render.js.map +0 -0
  27. package/dist/cli/scene.d.ts +0 -0
  28. package/dist/cli/scene.d.ts.map +0 -0
  29. package/dist/cli/scene.js +16 -16
  30. package/dist/cli/scene.js.map +0 -0
  31. package/dist/cli/shared.d.ts +0 -0
  32. package/dist/cli/shared.d.ts.map +0 -0
  33. package/dist/cli/shared.js +0 -0
  34. package/dist/cli/shared.js.map +0 -0
  35. package/dist/cli/test.d.ts +0 -0
  36. package/dist/cli/test.d.ts.map +0 -0
  37. package/dist/cli/test.js +0 -0
  38. package/dist/cli/test.js.map +0 -0
  39. package/dist/cli/verify.d.ts +0 -0
  40. package/dist/cli/verify.d.ts.map +0 -0
  41. package/dist/cli/verify.js +0 -0
  42. package/dist/cli/verify.js.map +0 -0
  43. package/dist/modules/adapters/p5Renderer.d.ts +0 -0
  44. package/dist/modules/adapters/p5Renderer.d.ts.map +1 -1
  45. package/dist/modules/adapters/p5Renderer.js +54 -12
  46. package/dist/modules/adapters/p5Renderer.js.map +1 -1
  47. package/dist/modules/adapters/skiaRenderer.d.ts +0 -0
  48. package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -1
  49. package/dist/modules/adapters/skiaRenderer.js +2 -1
  50. package/dist/modules/adapters/skiaRenderer.js.map +1 -1
  51. package/dist/modules/animationDiff.d.ts +0 -0
  52. package/dist/modules/animationDiff.d.ts.map +0 -0
  53. package/dist/modules/animationDiff.js +0 -0
  54. package/dist/modules/animationDiff.js.map +0 -0
  55. package/dist/modules/browserSceneRenderer.d.ts +0 -0
  56. package/dist/modules/browserSceneRenderer.d.ts.map +0 -0
  57. package/dist/modules/browserSceneRenderer.js +0 -0
  58. package/dist/modules/browserSceneRenderer.js.map +0 -0
  59. package/dist/modules/characterValidator.d.ts +2 -1
  60. package/dist/modules/characterValidator.d.ts.map +1 -1
  61. package/dist/modules/characterValidator.js +2 -41
  62. package/dist/modules/characterValidator.js.map +1 -1
  63. package/dist/modules/eyeSystem.d.ts +0 -0
  64. package/dist/modules/eyeSystem.d.ts.map +1 -1
  65. package/dist/modules/eyeSystem.js +104 -69
  66. package/dist/modules/eyeSystem.js.map +1 -1
  67. package/dist/modules/imageLoad.d.ts +50 -0
  68. package/dist/modules/imageLoad.d.ts.map +1 -1
  69. package/dist/modules/imageLoad.js +262 -18
  70. package/dist/modules/imageLoad.js.map +1 -1
  71. package/dist/modules/mouthSystem.d.ts +0 -0
  72. package/dist/modules/mouthSystem.d.ts.map +0 -0
  73. package/dist/modules/mouthSystem.js +0 -0
  74. package/dist/modules/mouthSystem.js.map +0 -0
  75. package/dist/modules/renderRig.d.ts +0 -0
  76. package/dist/modules/renderRig.d.ts.map +0 -0
  77. package/dist/modules/renderRig.js +0 -0
  78. package/dist/modules/renderRig.js.map +0 -0
  79. package/dist/modules/sceneRenderer.d.ts +0 -0
  80. package/dist/modules/sceneRenderer.d.ts.map +0 -0
  81. package/dist/modules/sceneRenderer.js +0 -0
  82. package/dist/modules/sceneRenderer.js.map +0 -0
  83. package/dist/tests/helpers.d.ts +0 -0
  84. package/dist/tests/helpers.d.ts.map +0 -0
  85. package/dist/tests/helpers.js +0 -0
  86. package/dist/tests/helpers.js.map +0 -0
  87. package/dist/tests/test-angle-swap.d.ts +0 -0
  88. package/dist/tests/test-angle-swap.d.ts.map +0 -0
  89. package/dist/tests/test-angle-swap.js +0 -0
  90. package/dist/tests/test-angle-swap.js.map +0 -0
  91. package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
  92. package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
  93. package/dist/tests/test-animation-diff-rendering.js +0 -0
  94. package/dist/tests/test-animation-diff-rendering.js.map +0 -0
  95. package/dist/tests/test-animation-diff.d.ts +0 -0
  96. package/dist/tests/test-animation-diff.d.ts.map +0 -0
  97. package/dist/tests/test-animation-diff.js +0 -0
  98. package/dist/tests/test-animation-diff.js.map +0 -0
  99. package/dist/tests/test-auto-eye-movement-e2e.d.ts +24 -0
  100. package/dist/tests/test-auto-eye-movement-e2e.d.ts.map +1 -0
  101. package/dist/tests/test-auto-eye-movement-e2e.js +514 -0
  102. package/dist/tests/test-auto-eye-movement-e2e.js.map +1 -0
  103. package/dist/tests/test-autofit.d.ts +0 -0
  104. package/dist/tests/test-autofit.d.ts.map +0 -0
  105. package/dist/tests/test-autofit.js +0 -0
  106. package/dist/tests/test-autofit.js.map +0 -0
  107. package/dist/tests/test-base-autofit.d.ts +0 -0
  108. package/dist/tests/test-base-autofit.d.ts.map +0 -0
  109. package/dist/tests/test-base-autofit.js +0 -0
  110. package/dist/tests/test-base-autofit.js.map +0 -0
  111. package/dist/tests/test-browser-scene.d.ts +0 -0
  112. package/dist/tests/test-browser-scene.d.ts.map +0 -0
  113. package/dist/tests/test-browser-scene.js +0 -0
  114. package/dist/tests/test-browser-scene.js.map +0 -0
  115. package/dist/tests/test-character-validator.d.ts +0 -0
  116. package/dist/tests/test-character-validator.d.ts.map +0 -0
  117. package/dist/tests/test-character-validator.js +0 -32
  118. package/dist/tests/test-character-validator.js.map +1 -1
  119. package/dist/tests/test-cli.d.ts +0 -0
  120. package/dist/tests/test-cli.d.ts.map +0 -0
  121. package/dist/tests/test-cli.js +0 -0
  122. package/dist/tests/test-cli.js.map +0 -0
  123. package/dist/tests/test-eye-system-reset.d.ts +15 -0
  124. package/dist/tests/test-eye-system-reset.d.ts.map +1 -0
  125. package/dist/tests/test-eye-system-reset.js +148 -0
  126. package/dist/tests/test-eye-system-reset.js.map +1 -0
  127. package/dist/tests/test-image-loading.d.ts +0 -0
  128. package/dist/tests/test-image-loading.d.ts.map +0 -0
  129. package/dist/tests/test-image-loading.js +0 -0
  130. package/dist/tests/test-image-loading.js.map +0 -0
  131. package/dist/tests/test-joint-movement.d.ts +0 -0
  132. package/dist/tests/test-joint-movement.d.ts.map +0 -0
  133. package/dist/tests/test-joint-movement.js +0 -0
  134. package/dist/tests/test-joint-movement.js.map +0 -0
  135. package/dist/tests/test-p5-image-types.d.ts +0 -0
  136. package/dist/tests/test-p5-image-types.d.ts.map +0 -0
  137. package/dist/tests/test-p5-image-types.js +0 -0
  138. package/dist/tests/test-p5-image-types.js.map +0 -0
  139. package/dist/tests/test-render-cache-visual.d.ts +0 -0
  140. package/dist/tests/test-render-cache-visual.d.ts.map +0 -0
  141. package/dist/tests/test-render-cache-visual.js +0 -0
  142. package/dist/tests/test-render-cache-visual.js.map +0 -0
  143. package/dist/tests/test-render-cache.d.ts +0 -0
  144. package/dist/tests/test-render-cache.d.ts.map +0 -0
  145. package/dist/tests/test-render-cache.js +0 -0
  146. package/dist/tests/test-render-cache.js.map +0 -0
  147. package/dist/tests/test-scene-object-svg-rerasterization.d.ts +0 -0
  148. package/dist/tests/test-scene-object-svg-rerasterization.d.ts.map +0 -0
  149. package/dist/tests/test-scene-object-svg-rerasterization.js +0 -0
  150. package/dist/tests/test-scene-object-svg-rerasterization.js.map +0 -0
  151. package/dist/tests/test-scene.d.ts +0 -0
  152. package/dist/tests/test-scene.d.ts.map +0 -0
  153. package/dist/tests/test-scene.js +0 -0
  154. package/dist/tests/test-scene.js.map +0 -0
  155. package/dist/tests/test-skia.d.ts +0 -0
  156. package/dist/tests/test-skia.d.ts.map +0 -0
  157. package/dist/tests/test-skia.js +0 -0
  158. package/dist/tests/test-skia.js.map +0 -0
  159. package/dist/tests/test-svg-parallax.d.ts +0 -0
  160. package/dist/tests/test-svg-parallax.d.ts.map +0 -0
  161. package/dist/tests/test-svg-parallax.js +0 -0
  162. package/dist/tests/test-svg-parallax.js.map +0 -0
  163. package/dist/tests/test-svg-rerasterization.d.ts +0 -0
  164. package/dist/tests/test-svg-rerasterization.d.ts.map +0 -0
  165. package/dist/tests/test-svg-rerasterization.js +194 -4
  166. package/dist/tests/test-svg-rerasterization.js.map +1 -1
  167. package/dist/tests/test-teen-tank-rig.d.ts +12 -0
  168. package/dist/tests/test-teen-tank-rig.d.ts.map +1 -0
  169. package/dist/tests/test-teen-tank-rig.js +122 -0
  170. package/dist/tests/test-teen-tank-rig.js.map +1 -0
  171. package/dist/tests/test-torso-pivot.d.ts +0 -0
  172. package/dist/tests/test-torso-pivot.d.ts.map +0 -0
  173. package/dist/tests/test-torso-pivot.js +0 -0
  174. package/dist/tests/test-torso-pivot.js.map +0 -0
  175. package/dist/tests/test-visual-verification.d.ts +0 -0
  176. package/dist/tests/test-visual-verification.d.ts.map +0 -0
  177. package/dist/tests/test-visual-verification.js +0 -0
  178. package/dist/tests/test-visual-verification.js.map +0 -0
  179. package/dist/types.d.ts +0 -0
  180. package/dist/types.d.ts.map +0 -0
  181. package/dist/types.js +0 -0
  182. package/dist/types.js.map +0 -0
  183. package/package.json +106 -106
  184. package/assets/presets/jumping-jack.json +0 -194
@@ -38,6 +38,10 @@ function applySvgParallaxToSource(svgSource, config, angleDegrees) {
38
38
  return pathTag.replace(/\s*\/?>$/i, (ending) => ` transform="${transformValue}"${ending}`);
39
39
  });
40
40
  }
41
+ function isSvgRuntimeUpgradeLocked() {
42
+ return typeof globalThis !== 'undefined'
43
+ && globalThis.__distarkSvgRuntimeUpgradeLocked === true;
44
+ }
41
45
  /**
42
46
  * ImageLoader class - Handles loading and caching images for character rigs
43
47
  */
@@ -215,12 +219,37 @@ export class ImageLoader {
215
219
  const currentHeight = current.__distarkRasterHeight || current.height || 0;
216
220
  const requestedWidth = current.__distarkRequestedRasterWidth || currentWidth;
217
221
  const requestedHeight = current.__distarkRequestedRasterHeight || currentHeight;
222
+ // Once playback has precomputed the fixed-size SVG raster manifest, no
223
+ // runtime request is allowed to create or swap canvases. The previous
224
+ // behaviour replaced loadedImages[key] asynchronously here, which is the
225
+ // visible twitch/resizing path.
226
+ if (isSvgRuntimeUpgradeLocked()) {
227
+ return current;
228
+ }
229
+ // Guard 1: current raster is already large enough — serve it directly.
230
+ // Using <= (not ===) is the key invariant: the raster size is monotonically
231
+ // non-decreasing. Switching to === in commit 20182eb introduced a downgrade
232
+ // path: whenever desiredSize temporarily dipped below the cached raster size,
233
+ // a smaller canvas was requested; the next frame needing the larger size would
234
+ // then trigger another upgrade, creating perpetual oscillation ("shaking").
218
235
  if (targetWidth <= currentWidth && targetHeight <= currentHeight) {
219
236
  return current;
220
237
  }
238
+ // Guard 2: an upgrade to at least the required size is already in flight.
221
239
  if (targetWidth <= requestedWidth && targetHeight <= requestedHeight) {
222
240
  return current;
223
241
  }
242
+ // Guard 3 (hysteresis): absorb sub-pixel noise from floating-point scale
243
+ // values whose Math.round results may oscillate by ±1 px across frames.
244
+ // Only upgrade when the difference is substantial (> 2 px or > 2%).
245
+ const xTol = Math.max(2, Math.round(currentWidth * 0.02));
246
+ const yTol = Math.max(2, Math.round(currentHeight * 0.02));
247
+ if (Math.abs(targetWidth - currentWidth) <= xTol && Math.abs(targetHeight - currentHeight) <= yTol) {
248
+ return current;
249
+ }
250
+ // Always take the MAX of the current requested size and the new target.
251
+ // This ensures __distarkRequestedRasterWidth is monotonically non-decreasing,
252
+ // so Guard 2 on future frames correctly suppresses redundant re-rasterizations.
224
253
  current.__distarkRequestedRasterWidth = Math.max(requestedWidth, targetWidth);
225
254
  current.__distarkRequestedRasterHeight = Math.max(requestedHeight, targetHeight);
226
255
  const pendingTargetWidth = current.__distarkRequestedRasterWidth;
@@ -229,7 +258,11 @@ export class ImageLoader {
229
258
  if (!this.pendingRasterUpgrades.has(pendingKey)) {
230
259
  const upgradePromise = this.createSvgCanvas(current.__distarkSvgSource, pendingTargetWidth, pendingTargetHeight)
231
260
  .then((canvas) => {
232
- this.attachSvgMetadata(canvas, current.__distarkSvgSource, current.__distarkIntrinsicWidth || targetWidth, current.__distarkIntrinsicHeight || targetHeight, pendingTargetWidth, pendingTargetHeight);
261
+ this.attachSvgMetadata(canvas, current.__distarkSvgSource,
262
+ // Preserve the SVG's true intrinsic dimensions so that
263
+ // future requestImageForSize calls with desiredWidth=0 can
264
+ // fall back to the original natural size, not the raster size.
265
+ current.__distarkIntrinsicWidth || pendingTargetWidth, current.__distarkIntrinsicHeight || pendingTargetHeight, pendingTargetWidth, pendingTargetHeight);
233
266
  this.imageCache.set(key, canvas);
234
267
  if (loadedImages) {
235
268
  loadedImages[key] = canvas;
@@ -258,10 +291,19 @@ export class ImageLoader {
258
291
  const existing = this.imageCache.get(variantKey);
259
292
  const targetWidth = Math.max(1, Math.round(desiredWidth || baseImage.__distarkIntrinsicWidth || baseImage.width || 1));
260
293
  const targetHeight = Math.max(1, Math.round(desiredHeight || baseImage.__distarkIntrinsicHeight || baseImage.height || 1));
294
+ if (isSvgRuntimeUpgradeLocked()) {
295
+ return existing || baseImage;
296
+ }
261
297
  if (existing?.__distarkSvgSource === variantSource) {
262
298
  const currentWidth = existing.__distarkRasterWidth || existing.width || 0;
263
299
  const currentHeight = existing.__distarkRasterHeight || existing.height || 0;
264
- if (targetWidth <= currentWidth && targetHeight <= currentHeight) {
300
+ if (targetWidth === currentWidth && targetHeight === currentHeight) {
301
+ return existing;
302
+ }
303
+ // Same hysteresis as requestImageForSize: skip re-rasterize for tiny size diffs.
304
+ const xTol = Math.max(2, Math.round(currentWidth * 0.02));
305
+ const yTol = Math.max(2, Math.round(currentHeight * 0.02));
306
+ if (Math.abs(targetWidth - currentWidth) <= xTol && Math.abs(targetHeight - currentHeight) <= yTol) {
265
307
  return existing;
266
308
  }
267
309
  }
@@ -269,7 +311,7 @@ export class ImageLoader {
269
311
  if (!this.pendingRasterUpgrades.has(pendingKey)) {
270
312
  const upgradePromise = this.createSvgCanvas(variantSource, targetWidth, targetHeight)
271
313
  .then((canvas) => {
272
- this.attachSvgMetadata(canvas, variantSource, baseImage.__distarkIntrinsicWidth || targetWidth, baseImage.__distarkIntrinsicHeight || targetHeight, targetWidth, targetHeight);
314
+ this.attachSvgMetadata(canvas, variantSource, targetWidth, targetHeight, targetWidth, targetHeight);
273
315
  this.imageCache.set(variantKey, canvas);
274
316
  return canvas;
275
317
  })
@@ -283,6 +325,99 @@ export class ImageLoader {
283
325
  async waitForPendingImageUpgrades() {
284
326
  await Promise.all(this.pendingRasterUpgrades.values());
285
327
  }
328
+ /**
329
+ * Pre-rasterize all SVG parts at their rig dimensionValues sizes, scaled by
330
+ * pixelDensity so the first rendered frame is already sharp on retina displays.
331
+ *
332
+ * Pass `options.pixelDensity = p5.pixelDensity()` (typically 1 on standard
333
+ * screens, 2 on retina / HiDPI) so the target canvas matches exactly what
334
+ * _applyImageLoop will request:
335
+ * desiredWidth = dimensionValues[part].width × |scaleX| × pixelDensity
336
+ * Without this, every new loadImages call produces a canvas at 1× that is
337
+ * immediately eligible for an upgrade to 2×, causing 1–N frames of fuzziness
338
+ * while the async re-raster is in flight.
339
+ *
340
+ * This must be called AFTER the caller has already normalized __distarkSvgSource
341
+ * on each canvas (tight viewBox + preserveAspectRatio="none"). In the React
342
+ * app, Body.loadImages() does this via fitSvgViewBoxToContent +
343
+ * normalizeSvgPreserveAspectRatio before invoking prepareSvgCanvases.
344
+ *
345
+ * prepareSvgCanvases does NOT recompute content bounds. The caller owns that
346
+ * responsibility because it has access to browser DOM APIs (getBBox / DOMParser
347
+ * + accurate geometry). Any attempt to recompute here risks overriding the
348
+ * accurate tight viewBox with an inaccurate one (e.g. Bezier control-point
349
+ * bounds that exceed visible content), which is the root cause of distortion.
350
+ *
351
+ * Skips parts whose canvas is already at the target size (±2 px or 2% tolerance).
352
+ * Marks each produced canvas with __distarkSvgNormalized = true so Body.js
353
+ * rememberOriginalSvgImage does not re-run normalization on the next draw.
354
+ */
355
+ async prepareSvgCanvases(rigData, loadedImages, options) {
356
+ const dimensionValues = rigData.dimensionValues;
357
+ const imagePaths = rigData.imagePaths;
358
+ if (!dimensionValues || !imagePaths)
359
+ return;
360
+ // Clamp the requested raster scale to a sane range, but preserve
361
+ // fractional camera/capture scales. Rounding 1.2 down to 1 would leave
362
+ // the first playback frame undersized and force an async upgrade.
363
+ const pd = Math.max(1, Math.min(8, Number(options?.pixelDensity) || 1));
364
+ await Promise.all(Object.entries(imagePaths).map(async ([partName, imageUrl]) => {
365
+ if (!imageUrl || typeof imageUrl !== 'string')
366
+ return;
367
+ const image = loadedImages?.[imageUrl];
368
+ if (!image?.__distarkSvgSource)
369
+ return;
370
+ const targetDims = dimensionValues[partName];
371
+ if (!targetDims?.width || !targetDims?.height)
372
+ return;
373
+ const targetWidth = Math.round(targetDims.width * pd);
374
+ const targetHeight = Math.round(targetDims.height * pd);
375
+ // Never downgrade a cached SVG canvas. Playback precompute may
376
+ // warm a high-resolution camera-scaled raster; later loadImages
377
+ // calls at plain pixelDensity must not replace it with a smaller
378
+ // canvas and reintroduce fuzzy frames.
379
+ const currentWidth = image.__distarkRasterWidth || image.width || 0;
380
+ const currentHeight = image.__distarkRasterHeight || image.height || 0;
381
+ if (image.__distarkSvgNormalized && targetWidth <= currentWidth && targetHeight <= currentHeight) {
382
+ return;
383
+ }
384
+ // Skip if already near the target size (hysteresis: 2 px or 2%)
385
+ const xTol = Math.max(2, Math.round(currentWidth * 0.02));
386
+ const yTol = Math.max(2, Math.round(currentHeight * 0.02));
387
+ if (Math.abs(targetWidth - currentWidth) <= xTol &&
388
+ Math.abs(targetHeight - currentHeight) <= yTol)
389
+ return;
390
+ // Use the source exactly as the caller provided it — the caller is
391
+ // responsible for tight viewBox + preserveAspectRatio="none".
392
+ // Safety net: inject preserveAspectRatio="none" if somehow absent,
393
+ // so normalizeSvgToVisibleBounds uses fill mode not letterbox mode.
394
+ let normalizedSource = image.__distarkSvgSource;
395
+ if (!/preserveAspectRatio\s*=\s*["']none["']/i.test(normalizedSource)) {
396
+ normalizedSource = ImageLoader.injectPreserveAspectRatioNone(normalizedSource);
397
+ }
398
+ const canvas = await this.createSvgCanvas(normalizedSource, targetWidth, targetHeight);
399
+ this.attachSvgMetadata(canvas, normalizedSource, image.__distarkIntrinsicWidth || targetWidth, image.__distarkIntrinsicHeight || targetHeight, targetWidth, targetHeight);
400
+ // Mark normalized so Body.js rememberOriginalSvgImage does not redo the work.
401
+ canvas.__distarkSvgNormalized = true;
402
+ // Propagate the (possibly updated) source back to the old image object
403
+ // in case anything still holds a reference to it.
404
+ image.__distarkSvgSource = normalizedSource;
405
+ this.imageCache.set(imageUrl, canvas);
406
+ loadedImages[imageUrl] = canvas;
407
+ }));
408
+ }
409
+ /**
410
+ * Adds preserveAspectRatio="none" to the SVG root element.
411
+ * Replaces any existing preserveAspectRatio attribute value.
412
+ */
413
+ static injectPreserveAspectRatioNone(svgSource) {
414
+ if (/preserveAspectRatio\s*=\s*["']none["']/i.test(svgSource))
415
+ return svgSource;
416
+ if (/preserveAspectRatio/i.test(svgSource)) {
417
+ return svgSource.replace(/preserveAspectRatio\s*=\s*["'][^"']*["']/i, 'preserveAspectRatio="none"');
418
+ }
419
+ return svgSource.replace(/(<svg\b[^>]*?)(\s*\/?>)/i, '$1 preserveAspectRatio="none"$2');
420
+ }
286
421
  /**
287
422
  * Load image with caching support
288
423
  * Checks cache first, only loads if not cached
@@ -434,39 +569,147 @@ export class ImageLoader {
434
569
  if (!value) {
435
570
  return null;
436
571
  }
437
- const match = value.trim().match(/^([0-9]*\.?[0-9]+)/);
572
+ const match = value.trim().match(/^([+-]?(?:[0-9]*\.)?[0-9]+)([a-z%]*)$/i);
438
573
  if (!match) {
439
574
  return null;
440
575
  }
441
576
  const parsed = Number(match[1]);
442
- return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
577
+ if (!Number.isFinite(parsed) || parsed <= 0) {
578
+ return null;
579
+ }
580
+ const unit = (match[2] || 'px').toLowerCase();
581
+ const pxPerUnit = {
582
+ px: 1,
583
+ in: 96,
584
+ cm: 96 / 2.54,
585
+ mm: 96 / 25.4,
586
+ pt: 96 / 72,
587
+ pc: 16,
588
+ };
589
+ return pxPerUnit[unit] ? parsed * pxPerUnit[unit] : parsed;
590
+ }
591
+ static parseViewBox(svgSource) {
592
+ const viewBoxMatch = svgSource.match(/\bviewBox=["']([^"']+)["']/i);
593
+ if (!viewBoxMatch?.[1]) {
594
+ return null;
595
+ }
596
+ const parts = viewBoxMatch[1].trim().split(/[\s,]+/).map(Number);
597
+ if (parts.length !== 4) {
598
+ return null;
599
+ }
600
+ const [minX, minY, width, height] = parts;
601
+ if (![minX, minY, width, height].every(Number.isFinite) || width <= 0 || height <= 0) {
602
+ return null;
603
+ }
604
+ return { minX, minY, width, height };
443
605
  }
444
606
  static parseSvgDimensions(svgSource) {
445
607
  const widthMatch = svgSource.match(/\bwidth=["']([^"']+)["']/i);
446
608
  const heightMatch = svgSource.match(/\bheight=["']([^"']+)["']/i);
447
- const viewBoxMatch = svgSource.match(/\bviewBox=["']([^"']+)["']/i);
609
+ const viewBox = ImageLoader.parseViewBox(svgSource);
448
610
  const width = ImageLoader.parseDimension(widthMatch?.[1]);
449
611
  const height = ImageLoader.parseDimension(heightMatch?.[1]);
450
612
  if (width && height) {
451
613
  return { width, height };
452
614
  }
453
- if (viewBoxMatch?.[1]) {
454
- const parts = viewBoxMatch[1].trim().split(/[\s,]+/).map(Number);
455
- if (parts.length === 4) {
456
- const [, , vbWidth, vbHeight] = parts;
457
- if (Number.isFinite(vbWidth) && vbWidth > 0 && Number.isFinite(vbHeight) && vbHeight > 0) {
458
- return {
459
- width: width || vbWidth,
460
- height: height || vbHeight,
461
- };
462
- }
463
- }
615
+ if (viewBox) {
616
+ return {
617
+ width: width || viewBox.width,
618
+ height: height || viewBox.height,
619
+ };
464
620
  }
465
621
  return {
466
622
  width: width || 100,
467
623
  height: height || 100,
468
624
  };
469
625
  }
626
+ static formatNumber(value) {
627
+ return Number(value.toFixed(4)).toString();
628
+ }
629
+ static setSvgRootAttribute(rootTag, name, value) {
630
+ const attrRegex = new RegExp(`\\s${name}=["'][^"']*["']`, 'i');
631
+ if (attrRegex.test(rootTag)) {
632
+ return rootTag.replace(attrRegex, ` ${name}="${value}"`);
633
+ }
634
+ return rootTag.replace(/\s*>$/, ` ${name}="${value}">`);
635
+ }
636
+ /**
637
+ * Rewrites the SVG so it renders at exactly targetWidth × targetHeight with no clipping.
638
+ *
639
+ * Strategy: scale-to-fit using the SVG's own declared dimensions (after unit conversion),
640
+ * then center the result within the target box. The viewBox is set to
641
+ * "0 0 targetWidth targetHeight" so 1 SVG user unit = 1 CSS pixel.
642
+ *
643
+ * This guarantees no cropping because we use min(scaleX, scaleY) (uniform fit), and the
644
+ * reference dimensions come from the SVG's declared width/height — not from a content-bounds
645
+ * measurement that could under-report and cause clipping.
646
+ */
647
+ static normalizeSvgToVisibleBounds(svgSource, targetWidth, targetHeight) {
648
+ if (!targetWidth || !targetHeight || targetWidth <= 0 || targetHeight <= 0) {
649
+ return svgSource;
650
+ }
651
+ const rootMatch = svgSource.match(/<svg\b[^>]*>/i);
652
+ if (!rootMatch) {
653
+ return svgSource;
654
+ }
655
+ const dimensions = ImageLoader.parseSvgDimensions(svgSource);
656
+ const viewBox = ImageLoader.parseViewBox(svgSource) ?? { minX: 0, minY: 0, width: dimensions.width, height: dimensions.height };
657
+ // When the caller has marked the SVG with preserveAspectRatio="none" (e.g. Body.js
658
+ // patches Inkscape exports before the first requestImageForSize upgrade) we use
659
+ // non-uniform fill: each axis is scaled independently so the content fills the
660
+ // target box exactly with no padding. This matches the intent expressed by the
661
+ // attribute and prevents the visual dimension jump that occurs when the initial
662
+ // raster (rendered at intrinsic size without padding) is replaced by an upgrade
663
+ // raster rendered with uniform-fit letterboxing.
664
+ //
665
+ // Without the hint we keep the original uniform min-scale fit that centres the
666
+ // content inside the target box, which is the safe default for general SVG use.
667
+ const preserveNone = /preserveAspectRatio\s*=\s*["']none["']/i.test(rootMatch[0]);
668
+ let scaleUU_X;
669
+ let scaleUU_Y;
670
+ let translateX;
671
+ let translateY;
672
+ if (preserveNone) {
673
+ // Non-uniform fill: map viewBox directly to target dimensions, no padding.
674
+ scaleUU_X = targetWidth / viewBox.width;
675
+ scaleUU_Y = targetHeight / viewBox.height;
676
+ translateX = -viewBox.minX * scaleUU_X;
677
+ translateY = -viewBox.minY * scaleUU_Y;
678
+ }
679
+ else {
680
+ // Uniform fit: scale the SVG's intrinsic CSS-pixel size to fill the target box,
681
+ // then centre the result. Reference dimensions come from the SVG's declared
682
+ // width/height (after unit conversion) — not content bounds — to avoid clipping.
683
+ const fitScale = Math.min(targetWidth / dimensions.width, targetHeight / dimensions.height);
684
+ const scaledW = dimensions.width * fitScale;
685
+ const scaledH = dimensions.height * fitScale;
686
+ const offsetX = (targetWidth - scaledW) / 2;
687
+ const offsetY = (targetHeight - scaledH) / 2;
688
+ // The SVG content lives in viewBox user-unit space. Convert to CSS pixels then to
689
+ // target pixel space in one matrix: scaleUU = (CSS pixels per user unit) × fitScale.
690
+ scaleUU_X = (dimensions.width / viewBox.width) * fitScale;
691
+ scaleUU_Y = (dimensions.height / viewBox.height) * fitScale;
692
+ translateX = -viewBox.minX * scaleUU_X + offsetX;
693
+ translateY = -viewBox.minY * scaleUU_Y + offsetY;
694
+ }
695
+ let rootTag = rootMatch[0];
696
+ rootTag = ImageLoader.setSvgRootAttribute(rootTag, 'width', `${ImageLoader.formatNumber(targetWidth)}px`);
697
+ rootTag = ImageLoader.setSvgRootAttribute(rootTag, 'height', `${ImageLoader.formatNumber(targetHeight)}px`);
698
+ rootTag = ImageLoader.setSvgRootAttribute(rootTag, 'viewBox', `0 0 ${ImageLoader.formatNumber(targetWidth)} ${ImageLoader.formatNumber(targetHeight)}`);
699
+ const contentStart = (rootMatch.index || 0) + rootMatch[0].length;
700
+ const closeMatch = svgSource.match(/<\/svg\s*>/i);
701
+ if (!closeMatch || closeMatch.index === undefined) {
702
+ return `${svgSource.slice(0, rootMatch.index)}${rootTag}${svgSource.slice(contentStart)}`;
703
+ }
704
+ const inner = svgSource.slice(contentStart, closeMatch.index);
705
+ const identityScale = Math.abs(scaleUU_X - 1) < 0.001 && Math.abs(scaleUU_Y - 1) < 0.001;
706
+ const identityTranslate = Math.abs(translateX) < 0.001 && Math.abs(translateY) < 0.001;
707
+ if (identityScale && identityTranslate) {
708
+ return `${svgSource.slice(0, rootMatch.index)}${rootTag}${inner}${svgSource.slice(closeMatch.index)}`;
709
+ }
710
+ const fitTransform = `matrix(${ImageLoader.formatNumber(scaleUU_X)} 0 0 ${ImageLoader.formatNumber(scaleUU_Y)} ${ImageLoader.formatNumber(translateX)} ${ImageLoader.formatNumber(translateY)})`;
711
+ return `${svgSource.slice(0, rootMatch.index)}${rootTag}<g transform="${fitTransform}">${inner}</g>${svgSource.slice(closeMatch.index)}`;
712
+ }
470
713
  async prepareResolvedAsset(imageUrl) {
471
714
  if (imageUrl.startsWith('data:image/svg+xml')) {
472
715
  const svgSource = ImageLoader.decodeSvgDataUrl(imageUrl);
@@ -496,7 +739,8 @@ export class ImageLoader {
496
739
  async createSvgCanvas(svgSource, targetWidth, targetHeight) {
497
740
  const width = Math.max(1, Math.round(targetWidth || 1));
498
741
  const height = Math.max(1, Math.round(targetHeight || 1));
499
- const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgSource)}`;
742
+ const normalizedSource = ImageLoader.normalizeSvgToVisibleBounds(svgSource, width, height);
743
+ const svgUrl = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(normalizedSource)}`;
500
744
  const image = await this.loadDomImage(svgUrl);
501
745
  if (typeof document === 'undefined' || typeof document.createElement !== 'function') {
502
746
  throw new Error('Canvas creation is unavailable in this environment');
@@ -1 +1 @@
1
- {"version":3,"file":"imageLoad.js","sourceRoot":"","sources":["../../modules/imageLoad.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imageLoad.js","sourceRoot":"","sources":["../../modules/imageLoad.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,24 @@
1
+ /**
2
+ * TRUE End-to-End test: Auto eye movement with the real EyeSystem
3
+ *
4
+ * NO mocking of any kind — not Math.random, not Date.now, not EyeSystem.
5
+ * Tests use the real compiled module and real randomness.
6
+ *
7
+ * This is the ground-truth test that proves the eye system physically moves
8
+ * the iris when update(t, isPlaying=true) is called over time.
9
+ *
10
+ * Context:
11
+ * In the app, Body.update() now calls:
12
+ * const wallTime = Date.now() / 1000;
13
+ * eyeSystem.update(wallTime, /*isPlaying=*‌/true, ...);
14
+ * regardless of whether the timeline is playing or paused.
15
+ * These tests verify that this produces genuine, visible iris movement.
16
+ *
17
+ * The "teen tank" character (character_rig (7).json) is used for targeted tests
18
+ * because the user observed zero iris movement with that specific character.
19
+ * Root cause: socket-derived rangeX/rangeY both clamped to 0 when iris base
20
+ * dimensions exceeded the available socket space. Fixed by removing the iris-
21
+ * size subtraction and falling back to DEFAULT_MOVEMENT_RANGES instead.
22
+ */
23
+ export {};
24
+ //# sourceMappingURL=test-auto-eye-movement-e2e.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-auto-eye-movement-e2e.d.ts","sourceRoot":"","sources":["../../tests/test-auto-eye-movement-e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}