motion-script 1.0.0

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 (250) hide show
  1. package/dist/attributes/bounds/bounds.d.ts +10 -0
  2. package/dist/attributes/bounds/bounds.d.ts.map +1 -0
  3. package/dist/attributes/bounds/bounds.js +2 -0
  4. package/dist/attributes/bounds/bounds.js.map +1 -0
  5. package/dist/attributes/fill/blend.d.ts +4 -0
  6. package/dist/attributes/fill/blend.d.ts.map +1 -0
  7. package/dist/attributes/fill/blend.js +14 -0
  8. package/dist/attributes/fill/blend.js.map +1 -0
  9. package/dist/attributes/fill/fill.d.ts +28 -0
  10. package/dist/attributes/fill/fill.d.ts.map +1 -0
  11. package/dist/attributes/fill/fill.js +23 -0
  12. package/dist/attributes/fill/fill.js.map +1 -0
  13. package/dist/attributes/fill/registry.d.ts +23 -0
  14. package/dist/attributes/fill/registry.d.ts.map +1 -0
  15. package/dist/attributes/fill/registry.js +106 -0
  16. package/dist/attributes/fill/registry.js.map +1 -0
  17. package/dist/attributes/index.d.ts +9 -0
  18. package/dist/attributes/index.d.ts.map +1 -0
  19. package/dist/attributes/index.js +9 -0
  20. package/dist/attributes/index.js.map +1 -0
  21. package/dist/attributes/insets/inset.d.ts +7 -0
  22. package/dist/attributes/insets/inset.d.ts.map +1 -0
  23. package/dist/attributes/insets/inset.js +2 -0
  24. package/dist/attributes/insets/inset.js.map +1 -0
  25. package/dist/attributes/position/vector2.d.ts +5 -0
  26. package/dist/attributes/position/vector2.d.ts.map +1 -0
  27. package/dist/attributes/position/vector2.js +2 -0
  28. package/dist/attributes/position/vector2.js.map +1 -0
  29. package/dist/attributes/size/constraints.d.ts +5 -0
  30. package/dist/attributes/size/constraints.d.ts.map +1 -0
  31. package/dist/attributes/size/constraints.js +2 -0
  32. package/dist/attributes/size/constraints.js.map +1 -0
  33. package/dist/attributes/size/size.d.ts +6 -0
  34. package/dist/attributes/size/size.d.ts.map +1 -0
  35. package/dist/attributes/size/size.js +2 -0
  36. package/dist/attributes/size/size.js.map +1 -0
  37. package/dist/attributes/stroke/stroke.d.ts +6 -0
  38. package/dist/attributes/stroke/stroke.d.ts.map +1 -0
  39. package/dist/attributes/stroke/stroke.js +2 -0
  40. package/dist/attributes/stroke/stroke.js.map +1 -0
  41. package/dist/index.d.ts +8 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +8 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/jsx/jsx-dev-runtime.d.ts +4 -0
  46. package/dist/jsx/jsx-dev-runtime.d.ts.map +1 -0
  47. package/dist/jsx/jsx-dev-runtime.js +16 -0
  48. package/dist/jsx/jsx-dev-runtime.js.map +1 -0
  49. package/dist/jsx/jsx-runtime.d.ts +4 -0
  50. package/dist/jsx/jsx-runtime.d.ts.map +1 -0
  51. package/dist/jsx/jsx-runtime.js +16 -0
  52. package/dist/jsx/jsx-runtime.js.map +1 -0
  53. package/dist/nodes/base/node.d.ts +37 -0
  54. package/dist/nodes/base/node.d.ts.map +1 -0
  55. package/dist/nodes/base/node.js +107 -0
  56. package/dist/nodes/base/node.js.map +1 -0
  57. package/dist/nodes/flex/node.d.ts +35 -0
  58. package/dist/nodes/flex/node.d.ts.map +1 -0
  59. package/dist/nodes/flex/node.js +318 -0
  60. package/dist/nodes/flex/node.js.map +1 -0
  61. package/dist/nodes/flex/props.d.ts +27 -0
  62. package/dist/nodes/flex/props.d.ts.map +1 -0
  63. package/dist/nodes/flex/props.js +2 -0
  64. package/dist/nodes/flex/props.js.map +1 -0
  65. package/dist/nodes/index.d.ts +13 -0
  66. package/dist/nodes/index.d.ts.map +1 -0
  67. package/dist/nodes/index.js +13 -0
  68. package/dist/nodes/index.js.map +1 -0
  69. package/dist/nodes/rect/node.d.ts +14 -0
  70. package/dist/nodes/rect/node.d.ts.map +1 -0
  71. package/dist/nodes/rect/node.js +55 -0
  72. package/dist/nodes/rect/node.js.map +1 -0
  73. package/dist/nodes/rect/props.d.ts +10 -0
  74. package/dist/nodes/rect/props.d.ts.map +1 -0
  75. package/dist/nodes/rect/props.js +2 -0
  76. package/dist/nodes/rect/props.js.map +1 -0
  77. package/dist/nodes/registry.d.ts +3 -0
  78. package/dist/nodes/registry.d.ts.map +1 -0
  79. package/dist/nodes/registry.js +31 -0
  80. package/dist/nodes/registry.js.map +1 -0
  81. package/dist/nodes/shape/node.d.ts +15 -0
  82. package/dist/nodes/shape/node.d.ts.map +1 -0
  83. package/dist/nodes/shape/node.js +32 -0
  84. package/dist/nodes/shape/node.js.map +1 -0
  85. package/dist/nodes/shape/props.d.ts +8 -0
  86. package/dist/nodes/shape/props.d.ts.map +1 -0
  87. package/dist/nodes/shape/props.js +2 -0
  88. package/dist/nodes/shape/props.js.map +1 -0
  89. package/dist/nodes/text/node.d.ts +18 -0
  90. package/dist/nodes/text/node.d.ts.map +1 -0
  91. package/dist/nodes/text/node.js +76 -0
  92. package/dist/nodes/text/node.js.map +1 -0
  93. package/dist/nodes/text/props.d.ts +11 -0
  94. package/dist/nodes/text/props.d.ts.map +1 -0
  95. package/dist/nodes/text/props.js +2 -0
  96. package/dist/nodes/text/props.js.map +1 -0
  97. package/dist/nodes/transform/node.d.ts +39 -0
  98. package/dist/nodes/transform/node.d.ts.map +1 -0
  99. package/dist/nodes/transform/node.js +160 -0
  100. package/dist/nodes/transform/node.js.map +1 -0
  101. package/dist/nodes/transform/props.d.ts +11 -0
  102. package/dist/nodes/transform/props.d.ts.map +1 -0
  103. package/dist/nodes/transform/props.js +2 -0
  104. package/dist/nodes/transform/props.js.map +1 -0
  105. package/dist/project/generator.d.ts +2 -0
  106. package/dist/project/generator.d.ts.map +1 -0
  107. package/dist/project/generator.js +2 -0
  108. package/dist/project/generator.js.map +1 -0
  109. package/dist/project/index.d.ts +4 -0
  110. package/dist/project/index.d.ts.map +1 -0
  111. package/dist/project/index.js +4 -0
  112. package/dist/project/index.js.map +1 -0
  113. package/dist/project/project.d.ts +14 -0
  114. package/dist/project/project.d.ts.map +1 -0
  115. package/dist/project/project.js +2 -0
  116. package/dist/project/project.js.map +1 -0
  117. package/dist/project/scene.d.ts +49 -0
  118. package/dist/project/scene.d.ts.map +1 -0
  119. package/dist/project/scene.js +2 -0
  120. package/dist/project/scene.js.map +1 -0
  121. package/dist/rendering/contexts/draw-context.d.ts +17 -0
  122. package/dist/rendering/contexts/draw-context.d.ts.map +1 -0
  123. package/dist/rendering/contexts/draw-context.js +12 -0
  124. package/dist/rendering/contexts/draw-context.js.map +1 -0
  125. package/dist/rendering/contexts/pixi-context.d.ts +29 -0
  126. package/dist/rendering/contexts/pixi-context.d.ts.map +1 -0
  127. package/dist/rendering/contexts/pixi-context.js +117 -0
  128. package/dist/rendering/contexts/pixi-context.js.map +1 -0
  129. package/dist/rendering/index.d.ts +11 -0
  130. package/dist/rendering/index.d.ts.map +1 -0
  131. package/dist/rendering/index.js +11 -0
  132. package/dist/rendering/index.js.map +1 -0
  133. package/dist/rendering/painters/base/painter.d.ts +9 -0
  134. package/dist/rendering/painters/base/painter.d.ts.map +1 -0
  135. package/dist/rendering/painters/base/painter.js +12 -0
  136. package/dist/rendering/painters/base/painter.js.map +1 -0
  137. package/dist/rendering/painters/ellipse/ellipse.d.ts +9 -0
  138. package/dist/rendering/painters/ellipse/ellipse.d.ts.map +1 -0
  139. package/dist/rendering/painters/ellipse/ellipse.js +2 -0
  140. package/dist/rendering/painters/ellipse/ellipse.js.map +1 -0
  141. package/dist/rendering/painters/latex/state.d.ts +6 -0
  142. package/dist/rendering/painters/latex/state.d.ts.map +1 -0
  143. package/dist/rendering/painters/latex/state.js +2 -0
  144. package/dist/rendering/painters/latex/state.js.map +1 -0
  145. package/dist/rendering/painters/rect/cache.d.ts +22 -0
  146. package/dist/rendering/painters/rect/cache.d.ts.map +1 -0
  147. package/dist/rendering/painters/rect/cache.js +106 -0
  148. package/dist/rendering/painters/rect/cache.js.map +1 -0
  149. package/dist/rendering/painters/rect/painter.d.ts +13 -0
  150. package/dist/rendering/painters/rect/painter.d.ts.map +1 -0
  151. package/dist/rendering/painters/rect/painter.js +66 -0
  152. package/dist/rendering/painters/rect/painter.js.map +1 -0
  153. package/dist/rendering/painters/rect/state.d.ts +11 -0
  154. package/dist/rendering/painters/rect/state.d.ts.map +1 -0
  155. package/dist/rendering/painters/rect/state.js +21 -0
  156. package/dist/rendering/painters/rect/state.js.map +1 -0
  157. package/dist/rendering/painters/shape/state.d.ts +9 -0
  158. package/dist/rendering/painters/shape/state.d.ts.map +1 -0
  159. package/dist/rendering/painters/shape/state.js +2 -0
  160. package/dist/rendering/painters/shape/state.js.map +1 -0
  161. package/dist/rendering/painters/text/cache.d.ts +30 -0
  162. package/dist/rendering/painters/text/cache.d.ts.map +1 -0
  163. package/dist/rendering/painters/text/cache.js +525 -0
  164. package/dist/rendering/painters/text/cache.js.map +1 -0
  165. package/dist/rendering/painters/text/geometry/font/cache.d.ts +9 -0
  166. package/dist/rendering/painters/text/geometry/font/cache.d.ts.map +1 -0
  167. package/dist/rendering/painters/text/geometry/font/cache.js +20 -0
  168. package/dist/rendering/painters/text/geometry/font/cache.js.map +1 -0
  169. package/dist/rendering/painters/text/geometry/font/fonts.json +3844 -0
  170. package/dist/rendering/painters/text/geometry/font/loader.d.ts +4 -0
  171. package/dist/rendering/painters/text/geometry/font/loader.d.ts.map +1 -0
  172. package/dist/rendering/painters/text/geometry/font/loader.js +33 -0
  173. package/dist/rendering/painters/text/geometry/font/loader.js.map +1 -0
  174. package/dist/rendering/painters/text/geometry/font/ttf.d.ts +27 -0
  175. package/dist/rendering/painters/text/geometry/font/ttf.d.ts.map +1 -0
  176. package/dist/rendering/painters/text/geometry/font/ttf.js +26 -0
  177. package/dist/rendering/painters/text/geometry/font/ttf.js.map +1 -0
  178. package/dist/rendering/painters/text/geometry/path.d.ts +16 -0
  179. package/dist/rendering/painters/text/geometry/path.d.ts.map +1 -0
  180. package/dist/rendering/painters/text/geometry/path.js +40 -0
  181. package/dist/rendering/painters/text/geometry/path.js.map +1 -0
  182. package/dist/rendering/painters/text/painter.d.ts +13 -0
  183. package/dist/rendering/painters/text/painter.d.ts.map +1 -0
  184. package/dist/rendering/painters/text/painter.js +69 -0
  185. package/dist/rendering/painters/text/painter.js.map +1 -0
  186. package/dist/rendering/painters/text/state.d.ts +12 -0
  187. package/dist/rendering/painters/text/state.d.ts.map +1 -0
  188. package/dist/rendering/painters/text/state.js +22 -0
  189. package/dist/rendering/painters/text/state.js.map +1 -0
  190. package/dist/rendering/painters/transform/painter.d.ts +9 -0
  191. package/dist/rendering/painters/transform/painter.d.ts.map +1 -0
  192. package/dist/rendering/painters/transform/painter.js +18 -0
  193. package/dist/rendering/painters/transform/painter.js.map +1 -0
  194. package/dist/rendering/painters/transform/state.d.ts +9 -0
  195. package/dist/rendering/painters/transform/state.d.ts.map +1 -0
  196. package/dist/rendering/painters/transform/state.js +2 -0
  197. package/dist/rendering/painters/transform/state.js.map +1 -0
  198. package/dist/rendering/textures/multi-fill.d.ts +1 -0
  199. package/dist/rendering/textures/multi-fill.d.ts.map +1 -0
  200. package/dist/rendering/textures/multi-fill.js +18 -0
  201. package/dist/rendering/textures/multi-fill.js.map +1 -0
  202. package/dist/signal/collector.d.ts +6 -0
  203. package/dist/signal/collector.d.ts.map +1 -0
  204. package/dist/signal/collector.js +18 -0
  205. package/dist/signal/collector.js.map +1 -0
  206. package/dist/signal/index.d.ts +3 -0
  207. package/dist/signal/index.d.ts.map +1 -0
  208. package/dist/signal/index.js +3 -0
  209. package/dist/signal/index.js.map +1 -0
  210. package/dist/signal/signal.d.ts +7 -0
  211. package/dist/signal/signal.d.ts.map +1 -0
  212. package/dist/signal/signal.js +217 -0
  213. package/dist/signal/signal.js.map +1 -0
  214. package/dist/signal/type.d.ts +40 -0
  215. package/dist/signal/type.d.ts.map +1 -0
  216. package/dist/signal/type.js +2 -0
  217. package/dist/signal/type.js.map +1 -0
  218. package/dist/tween/ease.d.ts +13 -0
  219. package/dist/tween/ease.d.ts.map +1 -0
  220. package/dist/tween/ease.js +40 -0
  221. package/dist/tween/ease.js.map +1 -0
  222. package/dist/tween/eases.d.ts +12 -0
  223. package/dist/tween/eases.d.ts.map +1 -0
  224. package/dist/tween/eases.js +69 -0
  225. package/dist/tween/eases.js.map +1 -0
  226. package/dist/tween/index.d.ts +7 -0
  227. package/dist/tween/index.d.ts.map +1 -0
  228. package/dist/tween/index.js +7 -0
  229. package/dist/tween/index.js.map +1 -0
  230. package/dist/tween/parallel.d.ts +3 -0
  231. package/dist/tween/parallel.d.ts.map +1 -0
  232. package/dist/tween/parallel.js +24 -0
  233. package/dist/tween/parallel.js.map +1 -0
  234. package/dist/tween/sequence.d.ts +3 -0
  235. package/dist/tween/sequence.d.ts.map +1 -0
  236. package/dist/tween/sequence.js +7 -0
  237. package/dist/tween/sequence.js.map +1 -0
  238. package/dist/tween/tests/realtime.test.d.ts +2 -0
  239. package/dist/tween/tests/realtime.test.d.ts.map +1 -0
  240. package/dist/tween/tests/realtime.test.js +76 -0
  241. package/dist/tween/tests/realtime.test.js.map +1 -0
  242. package/dist/tween/tween.d.ts +3 -0
  243. package/dist/tween/tween.d.ts.map +1 -0
  244. package/dist/tween/tween.js +14 -0
  245. package/dist/tween/tween.js.map +1 -0
  246. package/dist/tween/wait.d.ts +3 -0
  247. package/dist/tween/wait.d.ts.map +1 -0
  248. package/dist/tween/wait.js +10 -0
  249. package/dist/tween/wait.js.map +1 -0
  250. package/package.json +55 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Utility used by layout code. Existing logic from runner.ts has been
3
+ * preserved here since it is referenced by both the base implementation
4
+ * and the Flex node.
5
+ */
6
+ export function resolveSizeValue(size, parentSize, hugSize) {
7
+ if (typeof size === "number")
8
+ return size;
9
+ if (size === "fill")
10
+ return parentSize;
11
+ if (size === "hug")
12
+ return hugSize;
13
+ return parentSize;
14
+ }
15
+ export class BaseNode {
16
+ id;
17
+ parentId;
18
+ type;
19
+ rect;
20
+ constraints;
21
+ children = [];
22
+ constructor(id, type, parentId) {
23
+ this.id = id;
24
+ this.type = type;
25
+ this.parentId = parentId;
26
+ }
27
+ setTo(props) {
28
+ const signalMap = this.getSignalMap();
29
+ for (const key in props) {
30
+ const value = props[key];
31
+ if (value === undefined)
32
+ continue;
33
+ const signal = signalMap[key];
34
+ if (!signal)
35
+ continue;
36
+ this.onBeforePropUpdate(key, value);
37
+ signal.set(value);
38
+ this.animationStartValues.delete(key);
39
+ }
40
+ }
41
+ animateTo(props, progress) {
42
+ const signalMap = this.getSignalMap();
43
+ for (const key in props) {
44
+ const toValue = props[key];
45
+ if (toValue === undefined)
46
+ continue;
47
+ const signal = signalMap[key];
48
+ if (!signal)
49
+ continue;
50
+ this.onBeforePropUpdate(key, toValue);
51
+ if (progress === 0 || !this.animationStartValues.has(key)) {
52
+ this.animationStartValues.set(key, signal.get());
53
+ }
54
+ const fromValue = this.animationStartValues.get(key);
55
+ const nextValue = this.interpolatePropValue(key, fromValue, toValue, progress);
56
+ signal.set(nextValue);
57
+ if (progress >= 1) {
58
+ this.animationStartValues.delete(key);
59
+ }
60
+ }
61
+ }
62
+ animationStartValues = new Map();
63
+ signalMap = null;
64
+ onBeforePropUpdate(_key, _value) {
65
+ // Subclasses can track metadata when a prop is explicitly updated.
66
+ }
67
+ interpolatePropValue(_key, fromValue, toValue, progress) {
68
+ if (typeof fromValue === "number" && typeof toValue === "number") {
69
+ return fromValue + (toValue - fromValue) * progress;
70
+ }
71
+ if (progress >= 1) {
72
+ return toValue;
73
+ }
74
+ return fromValue;
75
+ }
76
+ getSignalMap() {
77
+ if (!this.signalMap) {
78
+ this.signalMap = this.createSignalMap();
79
+ }
80
+ return this.signalMap;
81
+ }
82
+ measure(constraints) {
83
+ this.constraints = constraints;
84
+ return {};
85
+ }
86
+ layout(rect) {
87
+ this.rect = rect;
88
+ }
89
+ addChild(child) {
90
+ this.children.push(child);
91
+ }
92
+ addChildAt(child, index) {
93
+ this.children.splice(index, 0, child);
94
+ }
95
+ addChildren(children) {
96
+ this.children.push(...children);
97
+ }
98
+ clearChildren() {
99
+ this.children.length = 0;
100
+ }
101
+ draw(ctx) {
102
+ ctx.withNode(this.id, this.parentId, () => {
103
+ this.drawSelf(ctx);
104
+ });
105
+ }
106
+ }
107
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/nodes/base/node.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA0B,EAAE,UAAkB,EAAE,OAAe;IAC5F,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IACvC,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IACnC,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,OAAgB,QAAQ;IACjB,EAAE,CAAS;IACX,QAAQ,CAAqB;IAC7B,IAAI,CAAS;IACZ,IAAI,CAAa;IACjB,WAAW,CAAmB;IAE/B,QAAQ,GAAe,EAAE,CAAC;IAEnC,YAAY,EAAU,EAAE,IAAY,EAAE,QAAiB;QACnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAA0B;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAElC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED,SAAS,CAAC,KAA0B,EAAE,QAAgB;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YAEpC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAEtC,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC/E,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEtB,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAChB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAGgB,oBAAoB,GAAqB,IAAI,GAAG,EAAE,CAAC;IACpE,SAAS,GAAuC,IAAI,CAAC;IAG3C,kBAAkB,CAAC,IAAY,EAAE,MAAW;QAClD,mEAAmE;IACvE,CAAC;IAES,oBAAoB,CAAC,IAAY,EAAE,SAAc,EAAE,OAAY,EAAE,QAAgB;QACvF,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO,SAAS,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,QAAQ,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAES,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,WAA4B;QAChC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,CAAC,IAAe;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAID,QAAQ,CAAC,KAAe;QAEpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,KAAe,EAAE,KAAa;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,WAAW,CAAC,QAAoB;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,GAAgB;QACjB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ"}
@@ -0,0 +1,35 @@
1
+ import { SizeConstraints } from "@/attributes/size/constraints";
2
+ import { Size2D } from "@/attributes/size/size";
3
+ import { DrawContext } from "@/rendering/contexts/draw-context";
4
+ import { Signal } from "@/signal/type";
5
+ import { TransformNode } from "../transform/node";
6
+ import { FlexDirection, FlexProps } from "./props";
7
+ import { BoxBounds } from "@/attributes/bounds/bounds";
8
+ export declare class FlexNode extends TransformNode {
9
+ readonly type: FlexDirection;
10
+ private readonly widthModeSignal;
11
+ private readonly heightModeSignal;
12
+ private readonly gapSignal;
13
+ private readonly leftPaddingSignal;
14
+ private readonly rightPaddingSignal;
15
+ private readonly topPaddingSignal;
16
+ private readonly bottomPaddingSignal;
17
+ private readonly alignmentSignal;
18
+ constructor(id: string, type: FlexDirection, parentId: string | undefined, props: Partial<FlexProps>);
19
+ createSignalMap(): Record<string, Signal<any>>;
20
+ protected interpolatePropValue(key: string, fromValue: any, toValue: any, progress: number): any;
21
+ measure(constraints: SizeConstraints): Partial<Size2D>;
22
+ layout(rect: BoxBounds): void;
23
+ private measureChildren;
24
+ private getSizeMode;
25
+ private getPadding;
26
+ private get widthMode();
27
+ private set widthMode(value);
28
+ private get heightMode();
29
+ private set heightMode(value);
30
+ private get gap();
31
+ private get alignment();
32
+ private createSizeModeSignal;
33
+ protected drawSelf(_ctx: DrawContext): void;
34
+ }
35
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/nodes/flex/node.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAa,SAAS,EAAY,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,qBAAa,QAAS,SAAQ,aAAa;IACvC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;IAiB3F,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;cAepC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG;IAahG,OAAO,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCtD,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IA2EtC,OAAO,CAAC,eAAe;IA4FvB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IASlB,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,SAAS,QAEpB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,QAErB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,oBAAoB;cA0CT,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAGvD"}
@@ -0,0 +1,318 @@
1
+ import createSignal from "@/signal/signal";
2
+ import { resolveSizeValue } from "../base/node";
3
+ import { TransformNode } from "../transform/node";
4
+ export class FlexNode extends TransformNode {
5
+ type;
6
+ widthModeSignal;
7
+ heightModeSignal;
8
+ gapSignal;
9
+ leftPaddingSignal;
10
+ rightPaddingSignal;
11
+ topPaddingSignal;
12
+ bottomPaddingSignal;
13
+ alignmentSignal;
14
+ constructor(id, type, parentId, props) {
15
+ super(id, type, parentId, {
16
+ ...props,
17
+ width: typeof props.width === "number" ? props.width : 0,
18
+ height: typeof props.height === "number" ? props.height : 0,
19
+ });
20
+ this.type = type;
21
+ this.widthModeSignal = createSignal(props.width);
22
+ this.heightModeSignal = createSignal(props.height);
23
+ this.gapSignal = createSignal(props.gap ?? 0);
24
+ this.leftPaddingSignal = createSignal(props.leftPadding ?? 0);
25
+ this.rightPaddingSignal = createSignal(props.rightPadding ?? 0);
26
+ this.topPaddingSignal = createSignal(props.topPadding ?? 0);
27
+ this.bottomPaddingSignal = createSignal(props.bottomPadding ?? 0);
28
+ this.alignmentSignal = createSignal(props.alignment ?? { x: 0, y: 0 });
29
+ }
30
+ createSignalMap() {
31
+ const baseMap = super.createSignalMap();
32
+ return {
33
+ ...baseMap,
34
+ width: this.createSizeModeSignal("width", baseMap.width),
35
+ height: this.createSizeModeSignal("height", baseMap.height),
36
+ gap: this.gapSignal,
37
+ leftPadding: this.leftPaddingSignal,
38
+ rightPadding: this.rightPaddingSignal,
39
+ topPadding: this.topPaddingSignal,
40
+ bottomPadding: this.bottomPaddingSignal,
41
+ alignment: this.alignmentSignal,
42
+ };
43
+ }
44
+ interpolatePropValue(key, fromValue, toValue, progress) {
45
+ if ((key === "width" || key === "height") && typeof toValue === "number") {
46
+ const fromNumeric = typeof fromValue === "number"
47
+ ? fromValue
48
+ : key === "width"
49
+ ? this.width
50
+ : this.height;
51
+ return fromNumeric + (toValue - fromNumeric) * progress;
52
+ }
53
+ return super.interpolatePropValue(key, fromValue, toValue, progress);
54
+ }
55
+ measure(constraints) {
56
+ const padding = this.getPadding();
57
+ const maxWidth = constraints.maxWidth ?? 0;
58
+ const maxHeight = constraints.maxHeight ?? 0;
59
+ const widthMode = this.widthMode;
60
+ const heightMode = this.heightMode;
61
+ const availableWidth = typeof widthMode === "number"
62
+ ? widthMode
63
+ : widthMode === "fill"
64
+ ? maxWidth
65
+ : maxWidth;
66
+ const availableHeight = typeof heightMode === "number"
67
+ ? heightMode
68
+ : heightMode === "fill"
69
+ ? maxHeight
70
+ : maxHeight;
71
+ const innerWidth = Math.max(0, availableWidth - padding.left - padding.right);
72
+ const innerHeight = Math.max(0, availableHeight - padding.top - padding.bottom);
73
+ const measuredChildren = this.measureChildren(innerWidth, innerHeight);
74
+ const hugWidth = measuredChildren.hugWidth + padding.left + padding.right;
75
+ const hugHeight = measuredChildren.hugHeight + padding.top + padding.bottom;
76
+ const resolvedWidth = typeof widthMode === "number"
77
+ ? widthMode
78
+ : resolveSizeValue(widthMode, maxWidth, hugWidth);
79
+ const resolvedHeight = typeof heightMode === "number"
80
+ ? heightMode
81
+ : resolveSizeValue(heightMode, maxHeight, hugHeight);
82
+ return {
83
+ width: resolvedWidth,
84
+ height: resolvedHeight,
85
+ };
86
+ }
87
+ layout(rect) {
88
+ this.rect = rect;
89
+ super.setTo({ width: rect.width, height: rect.height });
90
+ const direction = this.type;
91
+ const padding = this.getPadding();
92
+ const gap = this.gap;
93
+ const alignment = this.alignment;
94
+ const innerWidth = Math.max(0, rect.width - padding.left - padding.right);
95
+ const innerHeight = Math.max(0, rect.height - padding.top - padding.bottom);
96
+ const { entries } = this.measureChildren(innerWidth, innerHeight);
97
+ const totalMain = entries.reduce((sum, entry) => sum + (direction === "row" ? entry.width : entry.height), 0) + gap * Math.max(0, entries.length - 1);
98
+ const mainDim = direction === "row" ? rect.width : rect.height;
99
+ const crossDim = direction === "row" ? rect.height : rect.width;
100
+ const justify = direction === "column"
101
+ ? (alignment.y === 1 ? "start" : alignment.y === 0 ? "center" : "end")
102
+ : (alignment.x === -1 ? "start" : alignment.x === 0 ? "center" : "end");
103
+ const align = direction === "column"
104
+ ? (alignment.x === -1 ? "start" : alignment.x === 0 ? "center" : "end")
105
+ : (alignment.y === 1 ? "start" : alignment.y === 0 ? "center" : "end");
106
+ let mainPos;
107
+ if (direction === "row") {
108
+ if (justify === "start")
109
+ mainPos = -mainDim / 2 + padding.left;
110
+ else if (justify === "center")
111
+ mainPos = -totalMain / 2;
112
+ else
113
+ mainPos = mainDim / 2 - totalMain - padding.right;
114
+ }
115
+ else {
116
+ if (justify === "start")
117
+ mainPos = -mainDim / 2 + padding.top;
118
+ else if (justify === "center")
119
+ mainPos = -totalMain / 2;
120
+ else
121
+ mainPos = mainDim / 2 - totalMain - padding.bottom;
122
+ }
123
+ for (const entry of entries) {
124
+ const childMain = direction === "row" ? entry.width : entry.height;
125
+ const childCross = direction === "row" ? entry.height : entry.width;
126
+ let crossPos;
127
+ if (direction === "row") {
128
+ if (align === "start")
129
+ crossPos = -crossDim / 2 + childCross / 2 + padding.top;
130
+ else if (align === "center")
131
+ crossPos = 0;
132
+ else
133
+ crossPos = crossDim / 2 - childCross / 2 - padding.bottom;
134
+ }
135
+ else {
136
+ if (align === "start")
137
+ crossPos = -crossDim / 2 + childCross / 2 + padding.left;
138
+ else if (align === "center")
139
+ crossPos = 0;
140
+ else
141
+ crossPos = crossDim / 2 - childCross / 2 - padding.right;
142
+ }
143
+ const localX = direction === "row" ? mainPos + childMain / 2 : crossPos;
144
+ const localY = direction === "row" ? crossPos : mainPos + childMain / 2;
145
+ entry.child.setLayoutAnchor(localX, localY);
146
+ entry.child.setLayoutTransform({
147
+ width: entry.width,
148
+ height: entry.height,
149
+ });
150
+ entry.child.layout({
151
+ x: localX,
152
+ y: localY,
153
+ width: entry.width,
154
+ height: entry.height,
155
+ });
156
+ mainPos += childMain + gap;
157
+ }
158
+ }
159
+ measureChildren(innerWidth, innerHeight) {
160
+ const direction = this.type;
161
+ const gap = this.gap;
162
+ const mainKey = direction === "row" ? "width" : "height";
163
+ const crossKey = direction === "row" ? "height" : "width";
164
+ const entries = this.children
165
+ .filter((child) => child instanceof TransformNode)
166
+ .map((child) => {
167
+ const mainMode = this.getSizeMode(child, mainKey);
168
+ return {
169
+ child,
170
+ width: 0,
171
+ height: 0,
172
+ isFlexibleMain: mainMode === "fill",
173
+ };
174
+ });
175
+ const innerMain = direction === "row" ? innerWidth : innerHeight;
176
+ const innerCross = direction === "row" ? innerHeight : innerWidth;
177
+ let fixedMain = 0;
178
+ for (const entry of entries) {
179
+ if (entry.isFlexibleMain)
180
+ continue;
181
+ const size = entry.child.measure({ maxWidth: innerWidth, maxHeight: innerHeight });
182
+ const measuredWidth = size.width ?? 0;
183
+ const measuredHeight = size.height ?? 0;
184
+ const crossMode = this.getSizeMode(entry.child, crossKey);
185
+ if (direction === "row") {
186
+ entry.width = measuredWidth;
187
+ entry.height = crossMode === "fill" ? innerCross : measuredHeight;
188
+ fixedMain += entry.width;
189
+ }
190
+ else {
191
+ entry.width = crossMode === "fill" ? innerCross : measuredWidth;
192
+ entry.height = measuredHeight;
193
+ fixedMain += entry.height;
194
+ }
195
+ }
196
+ const totalGap = gap * Math.max(0, entries.length - 1);
197
+ const remainingMain = Math.max(0, innerMain - totalGap - fixedMain);
198
+ const flexibleCount = entries.filter((entry) => entry.isFlexibleMain).length;
199
+ const distributedMain = flexibleCount > 0 ? remainingMain / flexibleCount : 0;
200
+ for (const entry of entries) {
201
+ if (!entry.isFlexibleMain)
202
+ continue;
203
+ const measured = entry.child.measure(direction === "row"
204
+ ? { maxWidth: distributedMain, maxHeight: innerHeight }
205
+ : { maxWidth: innerWidth, maxHeight: distributedMain });
206
+ const measuredWidth = measured.width ?? 0;
207
+ const measuredHeight = measured.height ?? 0;
208
+ const crossMode = this.getSizeMode(entry.child, crossKey);
209
+ if (direction === "row") {
210
+ entry.width = distributedMain;
211
+ entry.height = crossMode === "fill" ? innerCross : measuredHeight;
212
+ }
213
+ else {
214
+ entry.width = crossMode === "fill" ? innerCross : measuredWidth;
215
+ entry.height = distributedMain;
216
+ }
217
+ }
218
+ let totalMain = 0;
219
+ let maxCross = 0;
220
+ for (const entry of entries) {
221
+ const childMain = direction === "row" ? entry.width : entry.height;
222
+ const childCross = direction === "row" ? entry.height : entry.width;
223
+ totalMain += childMain;
224
+ maxCross = Math.max(maxCross, childCross);
225
+ }
226
+ return direction === "row"
227
+ ? {
228
+ entries,
229
+ hugWidth: totalMain + totalGap,
230
+ hugHeight: maxCross,
231
+ }
232
+ : {
233
+ entries,
234
+ hugWidth: maxCross,
235
+ hugHeight: totalMain + totalGap,
236
+ };
237
+ }
238
+ getSizeMode(child, axis) {
239
+ if (child instanceof FlexNode) {
240
+ return axis === "width" ? child.widthMode : child.heightMode;
241
+ }
242
+ if (child.isAutoSize(axis)) {
243
+ return "fill";
244
+ }
245
+ return undefined;
246
+ }
247
+ getPadding() {
248
+ return {
249
+ left: this.leftPaddingSignal.get(),
250
+ right: this.rightPaddingSignal.get(),
251
+ top: this.topPaddingSignal.get(),
252
+ bottom: this.bottomPaddingSignal.get(),
253
+ };
254
+ }
255
+ get widthMode() {
256
+ return this.widthModeSignal.get();
257
+ }
258
+ set widthMode(value) {
259
+ this.widthModeSignal.set(value);
260
+ }
261
+ get heightMode() {
262
+ return this.heightModeSignal.get();
263
+ }
264
+ set heightMode(value) {
265
+ this.heightModeSignal.set(value);
266
+ }
267
+ get gap() {
268
+ return this.gapSignal.get();
269
+ }
270
+ get alignment() {
271
+ return this.alignmentSignal.get();
272
+ }
273
+ createSizeModeSignal(axis, numericSignal) {
274
+ const mapped = function (arg, duration, easing, lerp) {
275
+ if (arguments.length === 0)
276
+ return mapped.get();
277
+ if (arguments.length >= 2 && typeof duration === "number") {
278
+ return mapped.tween(arg, duration, easing, lerp);
279
+ }
280
+ return mapped.set(arg);
281
+ };
282
+ mapped.get = () => (axis === "width" ? this.widthMode : this.heightMode);
283
+ mapped.set = (next) => {
284
+ if (axis === "width")
285
+ this.widthMode = next;
286
+ else
287
+ this.heightMode = next;
288
+ if (typeof next === "number") {
289
+ numericSignal.set(next);
290
+ }
291
+ };
292
+ mapped.subscribe = (subscriber) => {
293
+ subscriber(mapped.get());
294
+ return () => { };
295
+ };
296
+ mapped.tween = (next, duration, easing, lerp) => {
297
+ if (typeof next !== "number") {
298
+ if (axis === "width")
299
+ this.widthMode = next;
300
+ else
301
+ this.heightMode = next;
302
+ return (function* () {
303
+ return;
304
+ })();
305
+ }
306
+ if (axis === "width")
307
+ this.widthMode = next;
308
+ else
309
+ this.heightMode = next;
310
+ return numericSignal.tween(next, duration, easing, lerp);
311
+ };
312
+ return mapped;
313
+ }
314
+ drawSelf(_ctx) {
315
+ // Layout containers only emit a transform container layer.
316
+ }
317
+ }
318
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/nodes/flex/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Vector2 } from "../../attributes/position/vector2";
2
+ import { TransformNode } from "../transform/node";
3
+ export interface FlexProps {
4
+ x?: number;
5
+ y?: number;
6
+ width?: FlexSize;
7
+ height?: FlexSize;
8
+ scale?: number;
9
+ rotate?: number;
10
+ opacity?: number;
11
+ blur?: number;
12
+ gap?: number;
13
+ leftPadding?: number;
14
+ rightPadding?: number;
15
+ topPadding?: number;
16
+ bottomPadding?: number;
17
+ alignment?: Vector2;
18
+ }
19
+ export type FlexDirection = "row" | "column";
20
+ export type FlexSize = number | "fill" | "hug";
21
+ export interface FlexEntry {
22
+ child: TransformNode;
23
+ width: number;
24
+ height: number;
25
+ isFlexibleMain: boolean;
26
+ }
27
+ //# sourceMappingURL=props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../../src/nodes/flex/props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,SAAS;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC7C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAK/C,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../../src/nodes/flex/props.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export * from './base/node';
2
+ export * from './flex/node';
3
+ export * from './flex/props';
4
+ export * from './rect/node';
5
+ export * from './rect/props';
6
+ export * from './shape/node';
7
+ export * from './shape/props';
8
+ export * from './text/node';
9
+ export * from './text/props';
10
+ export * from './transform/node';
11
+ export * from './transform/props';
12
+ export * from './registry';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAE9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAElC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from './base/node';
2
+ export * from './flex/node';
3
+ export * from './flex/props';
4
+ export * from './rect/node';
5
+ export * from './rect/props';
6
+ export * from './shape/node';
7
+ export * from './shape/props';
8
+ export * from './text/node';
9
+ export * from './text/props';
10
+ export * from './transform/node';
11
+ export * from './transform/props';
12
+ export * from './registry';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAE9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAElC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Signal } from "@/signal/type";
2
+ import type { RectProps } from "./props";
3
+ import { ShapeNode } from "../shape/node";
4
+ import { DrawContext } from "@/rendering/contexts/draw-context";
5
+ export declare class RRectNode extends ShapeNode {
6
+ private readonly topLeftRadiusSignal;
7
+ private readonly topRightRadiusSignal;
8
+ private readonly bottomLeftRadiusSignal;
9
+ private readonly bottomRightRadiusSignal;
10
+ constructor(id: string, parentId: string | undefined, props: Partial<RectProps>);
11
+ createSignalMap(): Record<string, Signal<any>>;
12
+ protected drawSelf(draw: DrawContext): void;
13
+ }
14
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/nodes/rect/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAGhE,qBAAa,SAAU,SAAQ,SAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAiB;IACtD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiB;IACxD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiB;gBAE7C,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;IAQtE,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAUvD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;CAgC9C"}
@@ -0,0 +1,55 @@
1
+ import createSignal from "@/signal/signal";
2
+ import { ShapeNode } from "../shape/node";
3
+ export class RRectNode extends ShapeNode {
4
+ topLeftRadiusSignal;
5
+ topRightRadiusSignal;
6
+ bottomLeftRadiusSignal;
7
+ bottomRightRadiusSignal;
8
+ constructor(id, parentId, props) {
9
+ super(id, "rect", parentId, props);
10
+ this.topLeftRadiusSignal = createSignal(props.topLeftRadius ?? 0);
11
+ this.topRightRadiusSignal = createSignal(props.topRightRadius ?? 0);
12
+ this.bottomLeftRadiusSignal = createSignal(props.bottomLeftRadius ?? 0);
13
+ this.bottomRightRadiusSignal = createSignal(props.bottomRightRadius ?? 0);
14
+ }
15
+ createSignalMap() {
16
+ return {
17
+ ...super.createSignalMap(),
18
+ topLeftRadius: this.topLeftRadiusSignal,
19
+ topRightRadius: this.topRightRadiusSignal,
20
+ bottomLeftRadius: this.bottomLeftRadiusSignal,
21
+ bottomRightRadius: this.bottomRightRadiusSignal,
22
+ };
23
+ }
24
+ drawSelf(draw) {
25
+ const fills = this.fill;
26
+ const borderRadius = {
27
+ topLeftRadius: this.topLeftRadiusSignal.get(),
28
+ topRightRadius: this.topRightRadiusSignal.get(),
29
+ bottomLeftRadius: this.bottomLeftRadiusSignal.get(),
30
+ bottomRightRadius: this.bottomRightRadiusSignal.get(),
31
+ };
32
+ for (let i = 0; i < fills.length; i++) {
33
+ draw.rect(`fill_${i}`, {
34
+ width: this.rect.width,
35
+ height: this.rect.height,
36
+ ...borderRadius,
37
+ fill: [fills[i]],
38
+ paintStyle: "fill",
39
+ });
40
+ }
41
+ const strokes = this.stroke;
42
+ for (let i = 0; i < strokes.length; i++) {
43
+ const stroke = strokes[i];
44
+ draw.rect(`stroke_${i}`, {
45
+ width: this.rect.width,
46
+ height: this.rect.height,
47
+ ...borderRadius,
48
+ fill: [stroke.fill],
49
+ strokeWidth: stroke.weight,
50
+ paintStyle: "stroke",
51
+ });
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/nodes/rect/node.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,SAAU,SAAQ,SAAS;IACnB,mBAAmB,CAAiB;IACpC,oBAAoB,CAAiB;IACrC,sBAAsB,CAAiB;IACvC,uBAAuB,CAAiB;IAEzD,YAAY,EAAU,EAAE,QAA4B,EAAE,KAAyB;QAC3E,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEQ,eAAe;QACpB,OAAO;YACH,GAAG,KAAK,CAAC,eAAe,EAAE;YAC1B,aAAa,EAAE,IAAI,CAAC,mBAAmB;YACvC,cAAc,EAAE,IAAI,CAAC,oBAAoB;YACzC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB;YAC7C,iBAAiB,EAAE,IAAI,CAAC,uBAAuB;SAClD,CAAC;IACN,CAAC;IAES,QAAQ,CAAC,IAAiB;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,MAAM,YAAY,GAAG;YACjB,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE;YAC7C,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE;YAC/C,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE;YACnD,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE;SACxD,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,GAAG,YAAY;gBACf,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChB,UAAU,EAAE,MAAM;aACrB,CAAC,CAAC;QACP,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;gBACrB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;gBACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,GAAG,YAAY;gBACf,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnB,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,UAAU,EAAE,QAAQ;aACvB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ"}