@retikz/vanilla 0.3.0-beta.1 → 0.3.0-beta.2

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 (71) hide show
  1. package/dist/es/builder/{isFigure.d.ts → is-figure.d.ts} +1 -1
  2. package/dist/es/builder/is-figure.d.ts.map +1 -0
  3. package/dist/es/builder/{isFigure.js → is-figure.js} +1 -1
  4. package/dist/es/builder/types.d.ts +18 -5
  5. package/dist/es/builder/types.d.ts.map +1 -1
  6. package/dist/es/builder/types.js +17 -0
  7. package/dist/es/figure.d.ts +1 -1
  8. package/dist/es/figure.d.ts.map +1 -1
  9. package/dist/es/figure.js +38 -8
  10. package/dist/es/index.d.ts +4 -4
  11. package/dist/es/index.d.ts.map +1 -1
  12. package/dist/es/index.js +3 -3
  13. package/dist/{lib/mountCanvas.d.ts → es/mount-canvas.d.ts} +1 -1
  14. package/dist/es/mount-canvas.d.ts.map +1 -0
  15. package/dist/es/{mountCanvas.js → mount-canvas.js} +46 -7
  16. package/dist/es/{mountSvg.d.ts → mount-svg.d.ts} +1 -1
  17. package/dist/es/mount-svg.d.ts.map +1 -0
  18. package/dist/es/{mountSvg.js → mount-svg.js} +13 -5
  19. package/dist/{lib/renderToSvgString.d.ts → es/render-to-svg-string.d.ts} +1 -1
  20. package/dist/es/render-to-svg-string.d.ts.map +1 -0
  21. package/dist/es/{renderToSvgString.js → render-to-svg-string.js} +3 -3
  22. package/dist/es/{svgNodeToDom.d.ts → svg-node-to-dom.d.ts} +1 -1
  23. package/dist/es/svg-node-to-dom.d.ts.map +1 -0
  24. package/dist/es/{svgNodeToDom.js → svg-node-to-dom.js} +1 -1
  25. package/dist/{lib/toScene.d.ts → es/to-scene.d.ts} +1 -1
  26. package/dist/es/to-scene.d.ts.map +1 -0
  27. package/dist/es/{toScene.js → to-scene.js} +1 -1
  28. package/dist/es/types.d.ts +2 -2
  29. package/dist/es/types.d.ts.map +1 -1
  30. package/dist/lib/builder/{isFigure.cjs → is-figure.cjs} +1 -1
  31. package/dist/lib/builder/{isFigure.d.ts → is-figure.d.ts} +1 -1
  32. package/dist/lib/builder/is-figure.d.ts.map +1 -0
  33. package/dist/lib/builder/types.cjs +17 -0
  34. package/dist/lib/builder/types.d.ts +18 -5
  35. package/dist/lib/builder/types.d.ts.map +1 -1
  36. package/dist/lib/figure.cjs +43 -13
  37. package/dist/lib/figure.d.ts +1 -1
  38. package/dist/lib/figure.d.ts.map +1 -1
  39. package/dist/lib/index.cjs +6 -6
  40. package/dist/lib/index.d.ts +4 -4
  41. package/dist/lib/index.d.ts.map +1 -1
  42. package/dist/lib/{mountCanvas.cjs → mount-canvas.cjs} +49 -10
  43. package/dist/{es/mountCanvas.d.ts → lib/mount-canvas.d.ts} +1 -1
  44. package/dist/lib/mount-canvas.d.ts.map +1 -0
  45. package/dist/lib/{mountSvg.cjs → mount-svg.cjs} +18 -10
  46. package/dist/lib/{mountSvg.d.ts → mount-svg.d.ts} +1 -1
  47. package/dist/lib/mount-svg.d.ts.map +1 -0
  48. package/dist/lib/{renderToSvgString.cjs → render-to-svg-string.cjs} +5 -5
  49. package/dist/{es/renderToSvgString.d.ts → lib/render-to-svg-string.d.ts} +1 -1
  50. package/dist/lib/render-to-svg-string.d.ts.map +1 -0
  51. package/dist/lib/{svgNodeToDom.cjs → svg-node-to-dom.cjs} +1 -1
  52. package/dist/lib/{svgNodeToDom.d.ts → svg-node-to-dom.d.ts} +1 -1
  53. package/dist/lib/svg-node-to-dom.d.ts.map +1 -0
  54. package/dist/lib/{toScene.cjs → to-scene.cjs} +1 -1
  55. package/dist/{es/toScene.d.ts → lib/to-scene.d.ts} +1 -1
  56. package/dist/lib/to-scene.d.ts.map +1 -0
  57. package/dist/lib/types.d.ts +2 -2
  58. package/dist/lib/types.d.ts.map +1 -1
  59. package/package.json +4 -4
  60. package/dist/es/builder/isFigure.d.ts.map +0 -1
  61. package/dist/es/mountCanvas.d.ts.map +0 -1
  62. package/dist/es/mountSvg.d.ts.map +0 -1
  63. package/dist/es/renderToSvgString.d.ts.map +0 -1
  64. package/dist/es/svgNodeToDom.d.ts.map +0 -1
  65. package/dist/es/toScene.d.ts.map +0 -1
  66. package/dist/lib/builder/isFigure.d.ts.map +0 -1
  67. package/dist/lib/mountCanvas.d.ts.map +0 -1
  68. package/dist/lib/mountSvg.d.ts.map +0 -1
  69. package/dist/lib/renderToSvgString.d.ts.map +0 -1
  70. package/dist/lib/svgNodeToDom.d.ts.map +0 -1
  71. package/dist/lib/toScene.d.ts.map +0 -1
@@ -1,43 +1,71 @@
1
- const require_isFigure = require("./builder/isFigure.cjs");
2
- const require_toScene = require("./toScene.cjs");
3
- const require_renderToSvgString = require("./renderToSvgString.cjs");
4
- const require_mountSvg = require("./mountSvg.cjs");
5
- const require_mountCanvas = require("./mountCanvas.cjs");
1
+ const require_is_figure = require("./builder/is-figure.cjs");
2
+ const require_to_scene = require("./to-scene.cjs");
3
+ const require_render_to_svg_string = require("./render-to-svg-string.cjs");
4
+ const require_mount_svg = require("./mount-svg.cjs");
5
+ const require_mount_canvas = require("./mount-canvas.cjs");
6
6
  const require_coordinate = require("./builder/coordinate.cjs");
7
7
  const require_draw = require("./builder/draw.cjs");
8
8
  const require_node = require("./builder/node.cjs");
9
9
  const require_scope = require("./builder/scope.cjs");
10
+ const require_types = require("./builder/types.cjs");
10
11
  let _retikz_render_canvas = require("@retikz/render/canvas");
11
12
  //#region src/figure.ts
13
+ /**
14
+ * 拣出真正携带样式指令的根样式字段
15
+ * @description 在「取 defined」基础上剔除空对象的四通道 default(`nodeDefault: {}` 等)——空 default 无样式指令,
16
+ * 留着只会让 figure 无谓包一层空合成根 `<Scope>`、改变 IR / Scene 拓扑却无视觉差异。标量通道的 falsy-但-defined
17
+ * 值(`strokeWidth: 0` / `opacity: 0`)是有意义样式、保留(镜像 react `pickScopeStyle`)。
18
+ */
19
+ var pickRootStyle = (config) => {
20
+ const picked = {};
21
+ for (const key of require_types.FIGURE_ROOT_STYLE_FIELDS) {
22
+ const value = config[key];
23
+ if (value === void 0) continue;
24
+ if (typeof value === "object" && Object.keys(value).length === 0) continue;
25
+ Object.assign(picked, { [key]: value });
26
+ }
27
+ return picked;
28
+ };
12
29
  /** figure() 的内部入口:装配 Figure(持 config + children,方法闭包其上) */
13
30
  var createFigure = (config, children) => {
14
- /** call-site options 覆盖 figure 存的 config(call-site wins):viewBox 已并进 ir,其余(width/height/idPrefix + 全套 CompileOptions)全透传 */
31
+ /**
32
+ * call-site options 覆盖 figure 存的 config(call-site wins):viewBox / animations / 根样式已并进 ir,
33
+ * 这些 IR-only 字段从下发的 render options 剔除;其余(width/height/idPrefix + 全套 CompileOptions)全透传。
34
+ */
15
35
  const renderOptions = (callSite) => {
16
36
  const merged = {
17
37
  ...config,
18
38
  ...callSite
19
39
  };
20
40
  delete merged.viewBox;
41
+ delete merged.animations;
42
+ for (const key of require_types.FIGURE_ROOT_STYLE_FIELDS) delete merged[key];
21
43
  return merged;
22
44
  };
23
45
  const fig = {
24
- [require_isFigure.FIGURE_BRAND]: true,
46
+ [require_is_figure.FIGURE_BRAND]: true,
25
47
  get ir() {
48
+ const rootStyle = pickRootStyle(config);
26
49
  return {
27
50
  version: 1,
28
51
  type: "scene",
29
- children,
30
- ...config.viewBox ? { viewBox: config.viewBox } : {}
52
+ children: Object.keys(rootStyle).length > 0 ? [{
53
+ type: "scope",
54
+ ...rootStyle,
55
+ children
56
+ }] : children,
57
+ ...config.viewBox ? { viewBox: config.viewBox } : {},
58
+ ...config.animations ? { animations: config.animations } : {}
31
59
  };
32
60
  },
33
61
  mount(container, options) {
34
- return require_mountSvg.mountSvg(container, fig.ir, renderOptions(options));
62
+ return require_mount_svg.mountSvg(container, fig.ir, renderOptions(options));
35
63
  },
36
64
  mountCanvas(container, options) {
37
- return require_mountCanvas.mountCanvas(container, fig.ir, renderOptions(options));
65
+ return require_mount_canvas.mountCanvas(container, fig.ir, renderOptions(options));
38
66
  },
39
67
  toSvgString(options) {
40
- return require_renderToSvgString.renderToSvgString(fig.ir, renderOptions(options));
68
+ return require_render_to_svg_string.renderToSvgString(fig.ir, renderOptions(options));
41
69
  },
42
70
  toCanvas(canvas, options) {
43
71
  const compile = { ...config };
@@ -45,7 +73,9 @@ var createFigure = (config, children) => {
45
73
  delete compile.idPrefix;
46
74
  delete compile.width;
47
75
  delete compile.height;
48
- (0, _retikz_render_canvas.renderToCanvas)(canvas, require_toScene.toScene(fig.ir, compile), options ?? {});
76
+ delete compile.animations;
77
+ for (const key of require_types.FIGURE_ROOT_STYLE_FIELDS) delete compile[key];
78
+ (0, _retikz_render_canvas.renderToCanvas)(canvas, require_to_scene.toScene(fig.ir, compile), options ?? {});
49
79
  },
50
80
  node(...args) {
51
81
  children.push(require_node.node(...args));
@@ -1,6 +1,6 @@
1
1
  import { IR } from '@retikz/core';
2
2
  import { RenderOptions } from '@retikz/render/canvas';
3
- import { FIGURE_BRAND } from './builder/isFigure';
3
+ import { FIGURE_BRAND } from './builder/is-figure';
4
4
  import { node } from './builder/node';
5
5
  import { ScopeBuilder } from './builder/scope';
6
6
  import { Child, CoordinateConfig, DrawConfig, FigureConfig, ScopeConfig, Way } from './builder/types';
@@ -1 +1 @@
1
- {"version":3,"file":"figure.d.ts","sourceRoot":"","sources":["../../src/figure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAK3G,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhH;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,WAAW,CAAC;IACnE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,UAAU,CAAC;IAC9E,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,MAAM,CAAC;IACzD,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACvE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC7D,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC,KAAK,MAAM,CAAC;CACzF,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,EAAE,UAAU,KAAK,CAAC,KAAK,CAAC,KAAG,MAwD3E,CAAC"}
1
+ {"version":3,"file":"figure.d.ts","sourceRoot":"","sources":["../../src/figure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAmB,WAAW,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAK5H,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhH;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,WAAW,CAAC;IACnE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,UAAU,CAAC;IAC9E,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,qBAAqB,KAAK,MAAM,CAAC;IACzD,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACvE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAC7D,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC,KAAK,MAAM,CAAC;CACzF,CAAC;AAoBF,2DAA2D;AAC3D,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,EAAE,UAAU,KAAK,CAAC,KAAK,CAAC,KAAG,MAoE3E,CAAC"}
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_renderToSvgString = require("./renderToSvgString.cjs");
3
- const require_mountSvg = require("./mountSvg.cjs");
2
+ const require_render_to_svg_string = require("./render-to-svg-string.cjs");
3
+ const require_mount_svg = require("./mount-svg.cjs");
4
4
  const require_hydrate = require("./hydrate.cjs");
5
- const require_mountCanvas = require("./mountCanvas.cjs");
5
+ const require_mount_canvas = require("./mount-canvas.cjs");
6
6
  const require_coordinate = require("./builder/coordinate.cjs");
7
7
  const require_draw = require("./builder/draw.cjs");
8
8
  const require_node = require("./builder/node.cjs");
@@ -91,8 +91,8 @@ Object.defineProperty(exports, "loop", {
91
91
  return _retikz_core.loop;
92
92
  }
93
93
  });
94
- exports.mountCanvas = require_mountCanvas.mountCanvas;
95
- exports.mountSvg = require_mountSvg.mountSvg;
94
+ exports.mountCanvas = require_mount_canvas.mountCanvas;
95
+ exports.mountSvg = require_mount_svg.mountSvg;
96
96
  exports.node = require_node.node;
97
97
  Object.defineProperty(exports, "pulse", {
98
98
  enumerable: true,
@@ -100,7 +100,7 @@ Object.defineProperty(exports, "pulse", {
100
100
  return _retikz_core.pulse;
101
101
  }
102
102
  });
103
- exports.renderToSvgString = require_renderToSvgString.renderToSvgString;
103
+ exports.renderToSvgString = require_render_to_svg_string.renderToSvgString;
104
104
  Object.defineProperty(exports, "scaleIn", {
105
105
  enumerable: true,
106
106
  get: function() {
@@ -6,10 +6,10 @@
6
6
  * `figure`/`node`/`draw`/`coordinate`/`scope` 是命令式 builder:用具名图元 + 自定义 shape 构图、产同一份 IR。
7
7
  * 模块顶层不触碰任何 DOM 全局——`import` 在纯 Node 下安全。
8
8
  */
9
- export { renderToSvgString } from './renderToSvgString';
10
- export { mountSvg } from './mountSvg';
9
+ export { renderToSvgString } from './render-to-svg-string';
10
+ export { mountSvg } from './mount-svg';
11
11
  export { hydrate } from './hydrate';
12
- export { mountCanvas } from './mountCanvas';
12
+ export { mountCanvas } from './mount-canvas';
13
13
  export type { RetikzEventValue, HydrationHandlers, HydrationHandler, HydrationContext, HydrationAnimationControls, HydrationGeometry, } from '@retikz/render/hydration';
14
14
  export { fadeIn, drawOn, scaleIn, grow, growUp, slideIn, colorShift, cameraTo, pulse, spin, loop, flash, blink, wiggle, stagger, } from '@retikz/core';
15
15
  export type { AnimationPresetOptions, ScaleInOptions, GrowUpOptions, SlideInOptions, ColorShiftOptions, CameraToOptions, PulseOptions, SpinOptions, LoopOptions, FlashOptions, BlinkOptions, WiggleOptions, } from '@retikz/core';
@@ -26,6 +26,6 @@ export { coordinate } from './builder/coordinate';
26
26
  export { scope } from './builder/scope';
27
27
  export type { Figure } from './figure';
28
28
  export type { ScopeBuilder } from './builder/scope';
29
- export type { Child, NodeConfig, DrawConfig, CoordinateConfig, ScopeConfig, FigureConfig, Way, } from './builder/types';
29
+ export type { Child, NodeConfig, DrawConfig, CoordinateConfig, ScopeConfig, FigureConfig, FigureRootStyle, Way, } from './builder/types';
30
30
  export type { RenderInput, CommonOptions, MountOptions, RenderToStringOptions, VanillaView, CanvasView, MountCanvasOptions, HydrateOptions, HydrationHandle, ScenePoint, AnimationControls, } from './types';
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,GAAG,GACJ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,YAAY,EACV,KAAK,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,GAAG,GACJ,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -1,9 +1,9 @@
1
- const require_isFigure = require("./builder/isFigure.cjs");
2
- const require_toScene = require("./toScene.cjs");
1
+ const require_is_figure = require("./builder/is-figure.cjs");
2
+ const require_to_scene = require("./to-scene.cjs");
3
3
  let _retikz_render_animation = require("@retikz/render/animation");
4
4
  let _retikz_render_hydration = require("@retikz/render/hydration");
5
5
  let _retikz_render_canvas = require("@retikz/render/canvas");
6
- //#region src/mountCanvas.ts
6
+ //#region src/mount-canvas.ts
7
7
  /** 设备像素比:取有限正数、否则回退 1(镜像 react CanvasHost) */
8
8
  var resolveDevicePixelRatio = (override) => {
9
9
  if (typeof override === "number" && Number.isFinite(override) && override > 0) return override;
@@ -19,7 +19,7 @@ var resolveDevicePixelRatio = (override) => {
19
19
  * 与 `clientToScene`(逆 meet-fit 坐标映射)。DOM 仅在调用时惰性触碰,`import` 本模块不碰 DOM——守 SSR 导入安全。
20
20
  */
21
21
  var mountCanvas = (container, input, options = {}) => {
22
- if (require_isFigure.isFigure(input)) return input.mountCanvas(container, options);
22
+ if (require_is_figure.isFigure(input)) return input.mountCanvas(container, options);
23
23
  if (typeof Element === "undefined" || !(container instanceof Element)) throw new Error("mountCanvas: container must be a DOM Element.");
24
24
  const canvas = document.createElement("canvas");
25
25
  const ratio = resolveDevicePixelRatio(options.devicePixelRatio);
@@ -29,6 +29,7 @@ var mountCanvas = (container, input, options = {}) => {
29
29
  let visibleActivated = /* @__PURE__ */ new Set();
30
30
  let visibleTeardown;
31
31
  let currentScene;
32
+ const liveHydrations = /* @__PURE__ */ new Set();
32
33
  /** 把全局帧时刻折算成单个 prim 的动画解析(per-id):stop→渲染 base;否则按有效时刻 + 是否含非自动播 track */
33
34
  const resolvePrim = (id, globalTime) => id !== void 0 && registry.isStopped(id) ? { mode: "skip" } : {
34
35
  mode: "at",
@@ -71,19 +72,27 @@ var mountCanvas = (container, input, options = {}) => {
71
72
  visibleTeardown = void 0;
72
73
  if (!animate || !(0, _retikz_render_animation.sceneHasAnimations)(currentScene)) return;
73
74
  if ((0, _retikz_render_hydration.collectCanvasVisibleAnimationIds)(currentScene).size === 0 || typeof window === "undefined") return;
74
- const schedule = () => activateVisibleTracks();
75
+ let scheduledRaf;
76
+ const runScheduled = () => {
77
+ scheduledRaf = void 0;
78
+ activateVisibleTracks();
79
+ };
80
+ const schedule = () => {
81
+ if (scheduledRaf !== void 0) return;
82
+ scheduledRaf = window.requestAnimationFrame(runScheduled);
83
+ };
75
84
  window.addEventListener("scroll", schedule, true);
76
85
  window.addEventListener("resize", schedule);
77
- const raf = window.requestAnimationFrame(schedule);
86
+ schedule();
78
87
  visibleTeardown = () => {
79
88
  window.removeEventListener("scroll", schedule, true);
80
89
  window.removeEventListener("resize", schedule);
81
- window.cancelAnimationFrame(raf);
90
+ if (scheduledRaf !== void 0) window.cancelAnimationFrame(scheduledRaf);
82
91
  };
83
92
  };
84
93
  const renderInto = (next) => {
85
- if (require_isFigure.isFigure(next)) throw new Error("mountCanvas: view.update does not accept a Figure; pass figure.ir instead.");
86
- const scene = require_toScene.toScene(next, options);
94
+ if (require_is_figure.isFigure(next)) throw new Error("mountCanvas: view.update does not accept a Figure; pass figure.ir instead.");
95
+ const scene = require_to_scene.toScene(next, options);
87
96
  currentScene = scene;
88
97
  const hasNominalSize = typeof options.width === "number" && Number.isFinite(options.width) && typeof options.height === "number" && Number.isFinite(options.height);
89
98
  const bitmapWidth = hasNominalSize ? options.width : scene.layout.width;
@@ -93,6 +102,15 @@ var mountCanvas = (container, input, options = {}) => {
93
102
  if (options.width !== void 0) canvas.style.width = `${options.width}px`;
94
103
  if (options.height !== void 0) canvas.style.height = `${options.height}px`;
95
104
  canvas.style.objectFit = "contain";
105
+ if (options.snapshotAt !== void 0) {
106
+ (0, _retikz_render_canvas.renderToCanvas)(canvas, scene, {
107
+ devicePixelRatio: ratio,
108
+ time: options.snapshotAt,
109
+ easings: options.easings,
110
+ animationProperties: options.animationProperties
111
+ });
112
+ return;
113
+ }
96
114
  (0, _retikz_render_canvas.renderToCanvas)(canvas, scene, { devicePixelRatio: ratio });
97
115
  clock?.dispose();
98
116
  clock = void 0;
@@ -166,19 +184,40 @@ var mountCanvas = (container, input, options = {}) => {
166
184
  defaultId: id
167
185
  })
168
186
  });
169
- return { dispose: (0, _retikz_render_hydration.createHydrationController)(canvas, (0, _retikz_render_hydration.withCanvasAnimationEventHandlers)(currentScene, hydrateOptions.handlers), locate, buildContext).dispose };
187
+ const userHandlers = hydrateOptions.handlers;
188
+ const bind = () => (0, _retikz_render_hydration.createHydrationController)(canvas, (0, _retikz_render_hydration.withCanvasAnimationEventHandlers)(currentScene, userHandlers), locate, buildContext);
189
+ let controller = bind();
190
+ const live = {
191
+ rebind: () => {
192
+ controller.dispose();
193
+ controller = bind();
194
+ },
195
+ unbind: () => controller.dispose()
196
+ };
197
+ liveHydrations.add(live);
198
+ return { dispose: () => {
199
+ live.unbind();
200
+ liveHydrations.delete(live);
201
+ } };
202
+ };
203
+ /** update 换 scene 后按新 scene 重建存活水合的 onEvent 动画 handler 表(新增 / 移除的 onEvent track 即时反映) */
204
+ const rebindHydrations = () => {
205
+ for (const live of liveHydrations) live.rebind();
170
206
  };
171
207
  return {
172
208
  root: canvas,
173
209
  update(next) {
174
210
  if (disposed) throw new Error("mountCanvas: view already disposed.");
175
211
  renderInto(next);
212
+ rebindHydrations();
176
213
  },
177
214
  dispose() {
178
215
  if (disposed) return;
179
216
  disposed = true;
180
217
  visibleTeardown?.();
181
218
  clock?.dispose();
219
+ for (const live of liveHydrations) live.unbind();
220
+ liveHydrations.clear();
182
221
  canvas.remove();
183
222
  },
184
223
  hydrate,
@@ -8,4 +8,4 @@ import { CanvasView, MountCanvasOptions, RenderInput } from './types';
8
8
  * 与 `clientToScene`(逆 meet-fit 坐标映射)。DOM 仅在调用时惰性触碰,`import` 本模块不碰 DOM——守 SSR 导入安全。
9
9
  */
10
10
  export declare const mountCanvas: (container: Element, input: RenderInput, options?: MountCanvasOptions) => CanvasView;
11
- //# sourceMappingURL=mountCanvas.d.ts.map
11
+ //# sourceMappingURL=mount-canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount-canvas.d.ts","sourceRoot":"","sources":["../../src/mount-canvas.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAkB,kBAAkB,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AASvG;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,OAAO,EAClB,OAAO,WAAW,EAClB,UAAS,kBAAuB,KAC/B,UA4PF,CAAC"}
@@ -1,10 +1,10 @@
1
- const require_isFigure = require("./builder/isFigure.cjs");
2
- const require_toScene = require("./toScene.cjs");
3
- const require_svgNodeToDom = require("./svgNodeToDom.cjs");
1
+ const require_is_figure = require("./builder/is-figure.cjs");
2
+ const require_to_scene = require("./to-scene.cjs");
3
+ const require_svg_node_to_dom = require("./svg-node-to-dom.cjs");
4
4
  let _retikz_render_svg = require("@retikz/render/svg");
5
5
  let _retikz_render_animation = require("@retikz/render/animation");
6
6
  let _retikz_render_hydration = require("@retikz/render/hydration");
7
- //#region src/mountSvg.ts
7
+ //#region src/mount-svg.ts
8
8
  var SVG_NS = "http://www.w3.org/2000/svg";
9
9
  /**
10
10
  * 把 IR / Scene / Figure 挂成真实 SVG DOM(无框架浏览器 runtime)
@@ -14,16 +14,17 @@ var SVG_NS = "http://www.w3.org/2000/svg";
14
14
  * 原地重渲染、root 元素 identity 跨 update 不变、不失效。DOM 仅在调用时惰性触碰,`import` 本模块不碰 DOM——守 SSR 导入安全。
15
15
  */
16
16
  var mountSvg = (container, input, options = {}) => {
17
- if (require_isFigure.isFigure(input)) return input.mount(container, options);
17
+ if (require_is_figure.isFigure(input)) return input.mount(container, options);
18
18
  if (typeof Element === "undefined" || !(container instanceof Element)) throw new Error("mountSvg: container must be a DOM Element.");
19
19
  const idPrefix = options.idPrefix ?? "r";
20
20
  const root = document.createElementNS(SVG_NS, "svg");
21
21
  const animate = options.animate !== false && !(0, _retikz_render_animation.prefersReducedMotion)();
22
22
  let animationControls;
23
23
  let currentScene;
24
+ const liveHydrationDisposers = /* @__PURE__ */ new Set();
24
25
  const renderInto = (next) => {
25
- if (require_isFigure.isFigure(next)) throw new Error("mountSvg: view.update does not accept a Figure; pass figure.ir instead.");
26
- const scene = require_toScene.toScene(next, options);
26
+ if (require_is_figure.isFigure(next)) throw new Error("mountSvg: view.update does not accept a Figure; pass figure.ir instead.");
27
+ const scene = require_to_scene.toScene(next, options);
27
28
  currentScene = scene;
28
29
  const doc = (0, _retikz_render_svg.buildSvgDocument)(scene, {
29
30
  idPrefix,
@@ -33,10 +34,10 @@ var mountSvg = (container, input, options = {}) => {
33
34
  });
34
35
  while (root.firstChild) root.removeChild(root.firstChild);
35
36
  for (const attr of [...root.attributes]) root.removeAttribute(attr.name);
36
- require_svgNodeToDom.applyAttrs(root, doc);
37
+ require_svg_node_to_dom.applyAttrs(root, doc);
37
38
  if (options.width !== void 0) root.setAttribute("width", String(options.width));
38
39
  if (options.height !== void 0) root.setAttribute("height", String(options.height));
39
- for (const child of doc.children ?? []) root.appendChild(typeof child === "string" ? document.createTextNode(child) : require_svgNodeToDom.svgNodeToDom(child));
40
+ for (const child of doc.children ?? []) root.appendChild(typeof child === "string" ? document.createTextNode(child) : require_svg_node_to_dom.svgNodeToDom(child));
40
41
  animationControls?.dispose();
41
42
  animationControls = animate && (0, _retikz_render_animation.sceneHasAnimations)(scene) ? (0, _retikz_render_animation.bindWaapiDescriptors)(root) : void 0;
42
43
  };
@@ -57,7 +58,13 @@ var mountSvg = (container, input, options = {}) => {
57
58
  resolvePoint: (event) => (0, _retikz_render_hydration.resolvePointViaLayout)(root, currentScene.layout)(event),
58
59
  makeAnimation: (id) => (0, _retikz_render_hydration.createSvgAnimationControls)(root, id)
59
60
  });
60
- return { dispose: (0, _retikz_render_hydration.createHydrationController)(root, hydrateOptions.handlers, _retikz_render_hydration.locateSvg, buildContext).dispose };
61
+ const controller = (0, _retikz_render_hydration.createHydrationController)(root, hydrateOptions.handlers, _retikz_render_hydration.locateSvg, buildContext);
62
+ const dispose = () => {
63
+ controller.dispose();
64
+ liveHydrationDisposers.delete(dispose);
65
+ };
66
+ liveHydrationDisposers.add(dispose);
67
+ return { dispose };
61
68
  };
62
69
  let disposed = false;
63
70
  return {
@@ -70,6 +77,7 @@ var mountSvg = (container, input, options = {}) => {
70
77
  dispose() {
71
78
  if (disposed) return;
72
79
  disposed = true;
80
+ for (const disposeHydration of [...liveHydrationDisposers]) disposeHydration();
73
81
  animationControls?.dispose();
74
82
  root.remove();
75
83
  },
@@ -7,4 +7,4 @@ import { MountOptions, RenderInput, VanillaView } from './types';
7
7
  * 原地重渲染、root 元素 identity 跨 update 不变、不失效。DOM 仅在调用时惰性触碰,`import` 本模块不碰 DOM——守 SSR 导入安全。
8
8
  */
9
9
  export declare const mountSvg: (container: Element, input: RenderInput, options?: MountOptions) => VanillaView;
10
- //# sourceMappingURL=mountSvg.d.ts.map
10
+ //# sourceMappingURL=mount-svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount-svg.d.ts","sourceRoot":"","sources":["../../src/mount-svg.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAmC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIvG;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,OAAO,EAAE,OAAO,WAAW,EAAE,UAAS,YAAiB,KAAG,WAkF7F,CAAC"}
@@ -1,7 +1,7 @@
1
- const require_isFigure = require("./builder/isFigure.cjs");
2
- const require_toScene = require("./toScene.cjs");
1
+ const require_is_figure = require("./builder/is-figure.cjs");
2
+ const require_to_scene = require("./to-scene.cjs");
3
3
  let _retikz_render_svg = require("@retikz/render/svg");
4
- //#region src/renderToSvgString.ts
4
+ //#region src/render-to-svg-string.ts
5
5
  /**
6
6
  * 把 IR / Scene / Figure 渲染成 SVG 字符串(SSR / 构建期)
7
7
  * @description 收 `Figure` 时 delegate 给 `figure.toSvgString`。收 IR/Scene 时薄包 `@retikz/render/svg`:`toScene`
@@ -9,8 +9,8 @@ let _retikz_render_svg = require("@retikz/render/svg");
9
9
  * `<svg>` attrs(不在本层对字符串做正则后处理)。零 DOM。
10
10
  */
11
11
  var renderToSvgString = (input, options = {}) => {
12
- if (require_isFigure.isFigure(input)) return input.toSvgString(options);
13
- return (0, _retikz_render_svg.renderToSvgString)(require_toScene.toScene(input, options), {
12
+ if (require_is_figure.isFigure(input)) return input.toSvgString(options);
13
+ return (0, _retikz_render_svg.renderToSvgString)(require_to_scene.toScene(input, options), {
14
14
  idPrefix: options.idPrefix ?? "r",
15
15
  animate: options.animate,
16
16
  snapshotAt: options.snapshotAt,
@@ -6,4 +6,4 @@ import { RenderInput, RenderToStringOptions } from './types';
6
6
  * `<svg>` attrs(不在本层对字符串做正则后处理)。零 DOM。
7
7
  */
8
8
  export declare const renderToSvgString: (input: RenderInput, options?: RenderToStringOptions) => string;
9
- //# sourceMappingURL=renderToSvgString.d.ts.map
9
+ //# sourceMappingURL=render-to-svg-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-to-svg-string.d.ts","sourceRoot":"","sources":["../../src/render-to-svg-string.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,EAAE,UAAS,qBAA0B,KAAG,MAU3F,CAAC"}
@@ -1,4 +1,4 @@
1
- //#region src/svgNodeToDom.ts
1
+ //#region src/svg-node-to-dom.ts
2
2
  var SVG_NS = "http://www.w3.org/2000/svg";
3
3
  /**
4
4
  * 把 `SvgNode` 的 attrs / style 写到一个(可复用的)SVG 元素上
@@ -11,4 +11,4 @@ export declare const applyAttrs: (el: SVGElement, node: SvgNode) => void;
11
11
  * (`document.createElementNS`),模块顶层不碰任何 DOM 全局——守 SSR 导入安全。
12
12
  */
13
13
  export declare const svgNodeToDom: (node: SvgNode) => SVGElement;
14
- //# sourceMappingURL=svgNodeToDom.d.ts.map
14
+ //# sourceMappingURL=svg-node-to-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-node-to-dom.d.ts","sourceRoot":"","sources":["../../src/svg-node-to-dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,UAAU,EAAE,MAAM,OAAO,KAAG,IAS1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,KAAG,UAO5C,CAAC"}
@@ -1,5 +1,5 @@
1
1
  let _retikz_core = require("@retikz/core");
2
- //#region src/toScene.ts
2
+ //#region src/to-scene.ts
3
3
  /**
4
4
  * 入参归一成 `Scene`
5
5
  * @description 已是 `Scene`(有 `primitives`)直接用;否则当 `IR` 经 `compileToScene` 编译。剥掉 render-only 键
@@ -7,4 +7,4 @@ import { CommonOptions } from './types';
7
7
  * `fallbackMeasurer`,Node 下确定可跑)。注:调用方须先把 `Figure` 解成 `ir`,此处只认 `IR | Scene`。
8
8
  */
9
9
  export declare const toScene: (input: Scene | IR, options: CommonOptions) => Scene;
10
- //# sourceMappingURL=toScene.d.ts.map
10
+ //# sourceMappingURL=to-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-scene.d.ts","sourceRoot":"","sources":["../../src/to-scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,EAAkB,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,GAAG,EAAE,EAAE,SAAS,aAAa,KAAG,KAOnE,CAAC"}
@@ -18,7 +18,7 @@ export type CommonOptions = {
18
18
  height?: number;
19
19
  /**
20
20
  * 是否播放动画(缺省 true);`false` → 渲染 base 静态图(不 emit CSS/WAAPI、Canvas 不起 rAF)
21
- * @description runtime 据 `{animate:false}` 或 `prefers-reduced-motion` 走静态路径(ADR-01「三事一路」)。
21
+ * @description runtime 据 `{animate:false}` 或 `prefers-reduced-motion` 走静态路径,不起任何动画。
22
22
  */
23
23
  animate?: boolean;
24
24
  /**
@@ -37,7 +37,7 @@ export type VanillaView = {
37
37
  readonly root: SVGSVGElement;
38
38
  /** 整图重渲染(原地复用 `root`,清子节点 + 重设 root attrs + 重物化),不承诺局部 patch */
39
39
  update: (next: RenderInput) => void;
40
- /** 卸载:移除 `root`、置 view 失效(再调 `update` 抛、`dispose` noop) */
40
+ /** 卸载:解绑本 view 上未手动 dispose 的水合、移除 `root`、置 view 失效(再调 `update` 抛、`dispose` noop) */
41
41
  dispose: () => void;
42
42
  /**
43
43
  * 绑定 handler 到本 view 的 `<svg>`(locateSvg 定位);handler 收 `(event, context)` 富上下文
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,GAAG,cAAc,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,gEAAgE;IAChE,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,eAAe,CAAC;IACtD,yEAAyE;IACzE,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC5B,kCAAkC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qFAAqF;IACrF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG;IACvB,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,iDAAiD;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,gEAAgE;IAChE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4FAA4F;IAC5F,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,eAAe,CAAC;IACtD;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC;IAChE,6DAA6D;IAC7D,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CACjD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,GAAG,cAAc,CAAC;AAEnB,MAAM,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAClD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,gEAAgE;IAChE,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,qFAAqF;IACrF,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,eAAe,CAAC;IACtD,yEAAyE;IACzE,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG;IAC5B,kCAAkC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qFAAqF;IACrF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B,CAAC;AAEF,gDAAgD;AAChD,MAAM,MAAM,UAAU,GAAG;IACvB,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,iDAAiD;IACjD,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACpC,gEAAgE;IAChE,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4FAA4F;IAC5F,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,eAAe,CAAC;IACtD;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC;IAChE,6DAA6D;IAC7D,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@retikz/vanilla",
3
- "version": "0.3.0-beta.1",
3
+ "version": "0.3.0-beta.2",
4
4
  "description": "Framework-free retikz runtime: mount SVG/Canvas, hydrate interactions, control animations, or render SVG strings for SSR.",
5
5
  "type": "module",
6
6
  "author": "Pionpill",
@@ -39,8 +39,8 @@
39
39
  "dist/**/*"
40
40
  ],
41
41
  "dependencies": {
42
- "@retikz/core": "0.3.0-beta.1",
43
- "@retikz/render": "0.3.0-beta.1"
42
+ "@retikz/core": "0.3.0-beta.2",
43
+ "@retikz/render": "0.3.0-beta.2"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^25.6.0",
@@ -48,7 +48,7 @@
48
48
  "vite": "^8.0.10",
49
49
  "vite-plugin-dts": "^4.5.4",
50
50
  "vitest": "^4.1.5",
51
- "zod": "^3.23.8"
51
+ "zod": "^4.4.3"
52
52
  },
53
53
  "scripts": {
54
54
  "dev": "vite",
@@ -1 +0,0 @@
1
- {"version":3,"file":"isFigure.d.ts","sourceRoot":"","sources":["../../../src/builder/isFigure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,oGAAoG;AACpG,eAAO,MAAM,YAAY,EAAE,OAAO,MAA4C,CAAC;AAE/E,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACuD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountCanvas.d.ts","sourceRoot":"","sources":["../../src/mountCanvas.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAkB,kBAAkB,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AASvG;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,OAAO,EAClB,OAAO,WAAW,EAClB,UAAS,kBAAuB,KAC/B,UA2MF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountSvg.d.ts","sourceRoot":"","sources":["../../src/mountSvg.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAmC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIvG;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,OAAO,EAAE,OAAO,WAAW,EAAE,UAAS,YAAiB,KAAG,WAyE7F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderToSvgString.d.ts","sourceRoot":"","sources":["../../src/renderToSvgString.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,EAAE,UAAS,qBAA0B,KAAG,MAU3F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"svgNodeToDom.d.ts","sourceRoot":"","sources":["../../src/svgNodeToDom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,UAAU,EAAE,MAAM,OAAO,KAAG,IAS1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,KAAG,UAO5C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toScene.d.ts","sourceRoot":"","sources":["../../src/toScene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,EAAkB,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,GAAG,EAAE,EAAE,SAAS,aAAa,KAAG,KAOnE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"isFigure.d.ts","sourceRoot":"","sources":["../../../src/builder/isFigure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,oGAAoG;AACpG,eAAO,MAAM,YAAY,EAAE,OAAO,MAA4C,CAAC;AAE/E,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MACuD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountCanvas.d.ts","sourceRoot":"","sources":["../../src/mountCanvas.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAkB,kBAAkB,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AASvG;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,OAAO,EAClB,OAAO,WAAW,EAClB,UAAS,kBAAuB,KAC/B,UA2MF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mountSvg.d.ts","sourceRoot":"","sources":["../../src/mountSvg.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAmC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIvG;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,WAAW,OAAO,EAAE,OAAO,WAAW,EAAE,UAAS,YAAiB,KAAG,WAyE7F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderToSvgString.d.ts","sourceRoot":"","sources":["../../src/renderToSvgString.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,WAAW,EAAE,UAAS,qBAA0B,KAAG,MAU3F,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"svgNodeToDom.d.ts","sourceRoot":"","sources":["../../src/svgNodeToDom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,UAAU,EAAE,MAAM,OAAO,KAAG,IAS1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,OAAO,KAAG,UAO5C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toScene.d.ts","sourceRoot":"","sources":["../../src/toScene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,EAAkB,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,GAAG,EAAE,EAAE,SAAS,aAAa,KAAG,KAOnE,CAAC"}