@twick/2d 0.14.21 → 0.15.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 (493) hide show
  1. package/dist/index.cjs +10806 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +4657 -0
  4. package/dist/index.d.ts +4657 -0
  5. package/dist/index.js +10768 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/jsx-runtime.d.mts +1 -0
  8. package/dist/jsx-runtime.d.ts +1 -0
  9. package/editor/index.css +24 -22
  10. package/editor/index.css.map +1 -0
  11. package/editor/index.d.ts +5 -0
  12. package/editor/index.js +472 -258
  13. package/editor/index.js.map +1 -1
  14. package/package.json +54 -27
  15. package/tsconfig.project.json +3 -2
  16. package/lib/code/CodeCursor.d.ts +0 -83
  17. package/lib/code/CodeCursor.d.ts.map +0 -1
  18. package/lib/code/CodeCursor.js +0 -306
  19. package/lib/code/CodeDiffer.d.ts +0 -28
  20. package/lib/code/CodeDiffer.d.ts.map +0 -1
  21. package/lib/code/CodeDiffer.js +0 -51
  22. package/lib/code/CodeFragment.d.ts +0 -42
  23. package/lib/code/CodeFragment.d.ts.map +0 -1
  24. package/lib/code/CodeFragment.js +0 -72
  25. package/lib/code/CodeHighlighter.d.ts +0 -71
  26. package/lib/code/CodeHighlighter.d.ts.map +0 -1
  27. package/lib/code/CodeHighlighter.js +0 -2
  28. package/lib/code/CodeMetrics.d.ts +0 -11
  29. package/lib/code/CodeMetrics.d.ts.map +0 -1
  30. package/lib/code/CodeMetrics.js +0 -29
  31. package/lib/code/CodeRange.d.ts +0 -41
  32. package/lib/code/CodeRange.d.ts.map +0 -1
  33. package/lib/code/CodeRange.js +0 -179
  34. package/lib/code/CodeScope.d.ts +0 -16
  35. package/lib/code/CodeScope.d.ts.map +0 -1
  36. package/lib/code/CodeScope.js +0 -72
  37. package/lib/code/CodeSelection.d.ts +0 -6
  38. package/lib/code/CodeSelection.d.ts.map +0 -1
  39. package/lib/code/CodeSelection.js +0 -13
  40. package/lib/code/CodeSignal.d.ts +0 -60
  41. package/lib/code/CodeSignal.d.ts.map +0 -1
  42. package/lib/code/CodeSignal.js +0 -194
  43. package/lib/code/CodeTokenizer.d.ts +0 -8
  44. package/lib/code/CodeTokenizer.d.ts.map +0 -1
  45. package/lib/code/CodeTokenizer.js +0 -50
  46. package/lib/code/DefaultHighlightStyle.d.ts +0 -3
  47. package/lib/code/DefaultHighlightStyle.d.ts.map +0 -1
  48. package/lib/code/DefaultHighlightStyle.js +0 -98
  49. package/lib/code/LezerHighlighter.d.ts +0 -22
  50. package/lib/code/LezerHighlighter.d.ts.map +0 -1
  51. package/lib/code/LezerHighlighter.js +0 -89
  52. package/lib/code/diff.d.ts +0 -31
  53. package/lib/code/diff.d.ts.map +0 -1
  54. package/lib/code/diff.js +0 -236
  55. package/lib/code/extractRange.d.ts +0 -17
  56. package/lib/code/extractRange.d.ts.map +0 -1
  57. package/lib/code/extractRange.js +0 -102
  58. package/lib/code/index.d.ts +0 -14
  59. package/lib/code/index.d.ts.map +0 -1
  60. package/lib/code/index.js +0 -14
  61. package/lib/components/Audio.d.ts +0 -14
  62. package/lib/components/Audio.d.ts.map +0 -1
  63. package/lib/components/Audio.js +0 -148
  64. package/lib/components/Bezier.d.ts +0 -23
  65. package/lib/components/Bezier.d.ts.map +0 -1
  66. package/lib/components/Bezier.js +0 -81
  67. package/lib/components/Circle.d.ts +0 -193
  68. package/lib/components/Circle.d.ts.map +0 -1
  69. package/lib/components/Circle.js +0 -178
  70. package/lib/components/Code.d.ts +0 -231
  71. package/lib/components/Code.d.ts.map +0 -1
  72. package/lib/components/Code.js +0 -325
  73. package/lib/components/CodeBlock.d.ts +0 -133
  74. package/lib/components/CodeBlock.d.ts.map +0 -1
  75. package/lib/components/CodeBlock.js +0 -461
  76. package/lib/components/CubicBezier.d.ts +0 -70
  77. package/lib/components/CubicBezier.d.ts.map +0 -1
  78. package/lib/components/CubicBezier.js +0 -81
  79. package/lib/components/Curve.d.ts +0 -204
  80. package/lib/components/Curve.d.ts.map +0 -1
  81. package/lib/components/Curve.js +0 -284
  82. package/lib/components/Grid.d.ts +0 -76
  83. package/lib/components/Grid.d.ts.map +0 -1
  84. package/lib/components/Grid.js +0 -91
  85. package/lib/components/Icon.d.ts +0 -59
  86. package/lib/components/Icon.d.ts.map +0 -1
  87. package/lib/components/Icon.js +0 -58
  88. package/lib/components/Img.d.ts +0 -118
  89. package/lib/components/Img.d.ts.map +0 -1
  90. package/lib/components/Img.js +0 -245
  91. package/lib/components/Knot.d.ts +0 -90
  92. package/lib/components/Knot.d.ts.map +0 -1
  93. package/lib/components/Knot.js +0 -68
  94. package/lib/components/Latex.d.ts +0 -39
  95. package/lib/components/Latex.d.ts.map +0 -1
  96. package/lib/components/Latex.js +0 -101
  97. package/lib/components/Layout.d.ts +0 -419
  98. package/lib/components/Layout.d.ts.map +0 -1
  99. package/lib/components/Layout.js +0 -706
  100. package/lib/components/Line.d.ts +0 -160
  101. package/lib/components/Line.d.ts.map +0 -1
  102. package/lib/components/Line.js +0 -346
  103. package/lib/components/Media.d.ts +0 -70
  104. package/lib/components/Media.d.ts.map +0 -1
  105. package/lib/components/Media.js +0 -493
  106. package/lib/components/Node.d.ts +0 -836
  107. package/lib/components/Node.d.ts.map +0 -1
  108. package/lib/components/Node.js +0 -1317
  109. package/lib/components/Path.d.ts +0 -20
  110. package/lib/components/Path.d.ts.map +0 -1
  111. package/lib/components/Path.js +0 -97
  112. package/lib/components/Polygon.d.ts +0 -113
  113. package/lib/components/Polygon.d.ts.map +0 -1
  114. package/lib/components/Polygon.js +0 -123
  115. package/lib/components/QuadBezier.d.ts +0 -62
  116. package/lib/components/QuadBezier.d.ts.map +0 -1
  117. package/lib/components/QuadBezier.js +0 -76
  118. package/lib/components/Ray.d.ts +0 -62
  119. package/lib/components/Ray.d.ts.map +0 -1
  120. package/lib/components/Ray.js +0 -96
  121. package/lib/components/Rect.d.ts +0 -114
  122. package/lib/components/Rect.d.ts.map +0 -1
  123. package/lib/components/Rect.js +0 -76
  124. package/lib/components/Rive.d.ts +0 -22
  125. package/lib/components/Rive.d.ts.map +0 -1
  126. package/lib/components/Rive.js +0 -117
  127. package/lib/components/SVG.d.ts +0 -178
  128. package/lib/components/SVG.d.ts.map +0 -1
  129. package/lib/components/SVG.js +0 -577
  130. package/lib/components/Shape.d.ts +0 -40
  131. package/lib/components/Shape.d.ts.map +0 -1
  132. package/lib/components/Shape.js +0 -134
  133. package/lib/components/Spline.d.ts +0 -89
  134. package/lib/components/Spline.d.ts.map +0 -1
  135. package/lib/components/Spline.js +0 -256
  136. package/lib/components/Txt.d.ts +0 -53
  137. package/lib/components/Txt.d.ts.map +0 -1
  138. package/lib/components/Txt.js +0 -173
  139. package/lib/components/TxtLeaf.d.ts +0 -21
  140. package/lib/components/TxtLeaf.d.ts.map +0 -1
  141. package/lib/components/TxtLeaf.js +0 -181
  142. package/lib/components/Video.d.ts +0 -69
  143. package/lib/components/Video.d.ts.map +0 -1
  144. package/lib/components/Video.js +0 -342
  145. package/lib/components/View2D.d.ts +0 -28
  146. package/lib/components/View2D.d.ts.map +0 -1
  147. package/lib/components/View2D.js +0 -93
  148. package/lib/components/index.d.ts +0 -29
  149. package/lib/components/index.d.ts.map +0 -1
  150. package/lib/components/index.js +0 -29
  151. package/lib/components/types.d.ts +0 -17
  152. package/lib/components/types.d.ts.map +0 -1
  153. package/lib/components/types.js +0 -2
  154. package/lib/curves/ArcSegment.d.ts +0 -26
  155. package/lib/curves/ArcSegment.d.ts.map +0 -1
  156. package/lib/curves/ArcSegment.js +0 -97
  157. package/lib/curves/CircleSegment.d.ts +0 -18
  158. package/lib/curves/CircleSegment.d.ts.map +0 -1
  159. package/lib/curves/CircleSegment.js +0 -52
  160. package/lib/curves/CubicBezierSegment.d.ts +0 -18
  161. package/lib/curves/CubicBezierSegment.d.ts.map +0 -1
  162. package/lib/curves/CubicBezierSegment.js +0 -55
  163. package/lib/curves/CurveDrawingInfo.d.ts +0 -11
  164. package/lib/curves/CurveDrawingInfo.d.ts.map +0 -1
  165. package/lib/curves/CurveDrawingInfo.js +0 -2
  166. package/lib/curves/CurvePoint.d.ts +0 -15
  167. package/lib/curves/CurvePoint.d.ts.map +0 -1
  168. package/lib/curves/CurvePoint.js +0 -2
  169. package/lib/curves/CurveProfile.d.ts +0 -7
  170. package/lib/curves/CurveProfile.d.ts.map +0 -1
  171. package/lib/curves/CurveProfile.js +0 -2
  172. package/lib/curves/KnotInfo.d.ts +0 -12
  173. package/lib/curves/KnotInfo.d.ts.map +0 -1
  174. package/lib/curves/KnotInfo.js +0 -2
  175. package/lib/curves/LineSegment.d.ts +0 -16
  176. package/lib/curves/LineSegment.d.ts.map +0 -1
  177. package/lib/curves/LineSegment.js +0 -45
  178. package/lib/curves/Polynomial.d.ts +0 -118
  179. package/lib/curves/Polynomial.d.ts.map +0 -1
  180. package/lib/curves/Polynomial.js +0 -259
  181. package/lib/curves/Polynomial2D.d.ts +0 -22
  182. package/lib/curves/Polynomial2D.d.ts.map +0 -1
  183. package/lib/curves/Polynomial2D.js +0 -45
  184. package/lib/curves/PolynomialSegment.d.ts +0 -39
  185. package/lib/curves/PolynomialSegment.d.ts.map +0 -1
  186. package/lib/curves/PolynomialSegment.js +0 -86
  187. package/lib/curves/QuadBezierSegment.d.ts +0 -17
  188. package/lib/curves/QuadBezierSegment.d.ts.map +0 -1
  189. package/lib/curves/QuadBezierSegment.js +0 -49
  190. package/lib/curves/Segment.d.ts +0 -9
  191. package/lib/curves/Segment.d.ts.map +0 -1
  192. package/lib/curves/Segment.js +0 -3
  193. package/lib/curves/UniformPolynomialCurveSampler.d.ts +0 -43
  194. package/lib/curves/UniformPolynomialCurveSampler.d.ts.map +0 -1
  195. package/lib/curves/UniformPolynomialCurveSampler.js +0 -73
  196. package/lib/curves/createCurveProfileLerp.d.ts +0 -32
  197. package/lib/curves/createCurveProfileLerp.d.ts.map +0 -1
  198. package/lib/curves/createCurveProfileLerp.js +0 -351
  199. package/lib/curves/getBezierSplineProfile.d.ts +0 -12
  200. package/lib/curves/getBezierSplineProfile.d.ts.map +0 -1
  201. package/lib/curves/getBezierSplineProfile.js +0 -137
  202. package/lib/curves/getCircleProfile.d.ts +0 -4
  203. package/lib/curves/getCircleProfile.d.ts.map +0 -1
  204. package/lib/curves/getCircleProfile.js +0 -44
  205. package/lib/curves/getPathProfile.d.ts +0 -3
  206. package/lib/curves/getPathProfile.d.ts.map +0 -1
  207. package/lib/curves/getPathProfile.js +0 -128
  208. package/lib/curves/getPointAtDistance.d.ts +0 -4
  209. package/lib/curves/getPointAtDistance.d.ts.map +0 -1
  210. package/lib/curves/getPointAtDistance.js +0 -15
  211. package/lib/curves/getPolylineProfile.d.ts +0 -4
  212. package/lib/curves/getPolylineProfile.d.ts.map +0 -1
  213. package/lib/curves/getPolylineProfile.js +0 -58
  214. package/lib/curves/getRectProfile.d.ts +0 -4
  215. package/lib/curves/getRectProfile.d.ts.map +0 -1
  216. package/lib/curves/getRectProfile.js +0 -57
  217. package/lib/curves/index.d.ts +0 -17
  218. package/lib/curves/index.d.ts.map +0 -1
  219. package/lib/curves/index.js +0 -17
  220. package/lib/decorators/canvasStyleSignal.d.ts +0 -5
  221. package/lib/decorators/canvasStyleSignal.d.ts.map +0 -1
  222. package/lib/decorators/canvasStyleSignal.js +0 -12
  223. package/lib/decorators/colorSignal.d.ts +0 -2
  224. package/lib/decorators/colorSignal.d.ts.map +0 -1
  225. package/lib/decorators/colorSignal.js +0 -9
  226. package/lib/decorators/compound.d.ts +0 -26
  227. package/lib/decorators/compound.d.ts.map +0 -1
  228. package/lib/decorators/compound.js +0 -49
  229. package/lib/decorators/computed.d.ts +0 -9
  230. package/lib/decorators/computed.d.ts.map +0 -1
  231. package/lib/decorators/computed.js +0 -18
  232. package/lib/decorators/defaultStyle.d.ts +0 -2
  233. package/lib/decorators/defaultStyle.d.ts.map +0 -1
  234. package/lib/decorators/defaultStyle.js +0 -14
  235. package/lib/decorators/filtersSignal.d.ts +0 -13
  236. package/lib/decorators/filtersSignal.d.ts.map +0 -1
  237. package/lib/decorators/filtersSignal.js +0 -73
  238. package/lib/decorators/index.d.ts +0 -11
  239. package/lib/decorators/index.d.ts.map +0 -1
  240. package/lib/decorators/index.js +0 -11
  241. package/lib/decorators/initializers.d.ts +0 -4
  242. package/lib/decorators/initializers.d.ts.map +0 -1
  243. package/lib/decorators/initializers.js +0 -27
  244. package/lib/decorators/nodeName.d.ts +0 -9
  245. package/lib/decorators/nodeName.d.ts.map +0 -1
  246. package/lib/decorators/nodeName.js +0 -13
  247. package/lib/decorators/signal.d.ts +0 -183
  248. package/lib/decorators/signal.d.ts.map +0 -1
  249. package/lib/decorators/signal.js +0 -285
  250. package/lib/decorators/spacingSignal.d.ts +0 -2
  251. package/lib/decorators/spacingSignal.d.ts.map +0 -1
  252. package/lib/decorators/spacingSignal.js +0 -15
  253. package/lib/decorators/vector2Signal.d.ts +0 -9
  254. package/lib/decorators/vector2Signal.d.ts.map +0 -1
  255. package/lib/decorators/vector2Signal.js +0 -15
  256. package/lib/index.d.ts +0 -9
  257. package/lib/index.d.ts.map +0 -1
  258. package/lib/index.js +0 -9
  259. package/lib/jsx-dev-runtime.d.ts +0 -3
  260. package/lib/jsx-dev-runtime.d.ts.map +0 -1
  261. package/lib/jsx-dev-runtime.js +0 -3
  262. package/lib/jsx-runtime.d.ts +0 -12
  263. package/lib/jsx-runtime.d.ts.map +0 -1
  264. package/lib/jsx-runtime.js +0 -23
  265. package/lib/partials/Filter.d.ts +0 -82
  266. package/lib/partials/Filter.d.ts.map +0 -1
  267. package/lib/partials/Filter.js +0 -135
  268. package/lib/partials/Gradient.d.ts +0 -31
  269. package/lib/partials/Gradient.d.ts.map +0 -1
  270. package/lib/partials/Gradient.js +0 -63
  271. package/lib/partials/Pattern.d.ts +0 -13
  272. package/lib/partials/Pattern.d.ts.map +0 -1
  273. package/lib/partials/Pattern.js +0 -27
  274. package/lib/partials/ShaderConfig.d.ts +0 -81
  275. package/lib/partials/ShaderConfig.d.ts.map +0 -1
  276. package/lib/partials/ShaderConfig.js +0 -25
  277. package/lib/partials/index.d.ts +0 -5
  278. package/lib/partials/index.d.ts.map +0 -1
  279. package/lib/partials/index.js +0 -5
  280. package/lib/partials/types.d.ts +0 -35
  281. package/lib/partials/types.d.ts.map +0 -1
  282. package/lib/partials/types.js +0 -2
  283. package/lib/scenes/Scene2D.d.ts +0 -29
  284. package/lib/scenes/Scene2D.d.ts.map +0 -1
  285. package/lib/scenes/Scene2D.js +0 -180
  286. package/lib/scenes/index.d.ts +0 -4
  287. package/lib/scenes/index.d.ts.map +0 -1
  288. package/lib/scenes/index.js +0 -4
  289. package/lib/scenes/makeScene2D.d.ts +0 -5
  290. package/lib/scenes/makeScene2D.d.ts.map +0 -1
  291. package/lib/scenes/makeScene2D.js +0 -11
  292. package/lib/scenes/useScene2D.d.ts +0 -3
  293. package/lib/scenes/useScene2D.d.ts.map +0 -1
  294. package/lib/scenes/useScene2D.js +0 -5
  295. package/lib/tsconfig.build.tsbuildinfo +0 -1
  296. package/lib/utils/CanvasUtils.d.ts +0 -23
  297. package/lib/utils/CanvasUtils.d.ts.map +0 -1
  298. package/lib/utils/CanvasUtils.js +0 -138
  299. package/lib/utils/diff.d.ts +0 -31
  300. package/lib/utils/diff.d.ts.map +0 -1
  301. package/lib/utils/diff.js +0 -97
  302. package/lib/utils/index.d.ts +0 -3
  303. package/lib/utils/index.d.ts.map +0 -1
  304. package/lib/utils/index.js +0 -3
  305. package/lib/utils/is.d.ts +0 -8
  306. package/lib/utils/is.d.ts.map +0 -1
  307. package/lib/utils/is.js +0 -10
  308. package/lib/utils/makeSignalExtensions.d.ts +0 -4
  309. package/lib/utils/makeSignalExtensions.d.ts.map +0 -1
  310. package/lib/utils/makeSignalExtensions.js +0 -20
  311. package/lib/utils/video/ffmpeg-client.d.ts +0 -5
  312. package/lib/utils/video/ffmpeg-client.d.ts.map +0 -1
  313. package/lib/utils/video/ffmpeg-client.js +0 -32
  314. package/lib/utils/video/mp4-parser-manager.d.ts +0 -3
  315. package/lib/utils/video/mp4-parser-manager.d.ts.map +0 -1
  316. package/lib/utils/video/mp4-parser-manager.js +0 -55
  317. package/lib/utils/video/parser/index.d.ts +0 -2
  318. package/lib/utils/video/parser/index.d.ts.map +0 -1
  319. package/lib/utils/video/parser/index.js +0 -2
  320. package/lib/utils/video/parser/parser.d.ts +0 -21
  321. package/lib/utils/video/parser/parser.d.ts.map +0 -1
  322. package/lib/utils/video/parser/parser.js +0 -168
  323. package/lib/utils/video/parser/sampler.d.ts +0 -16
  324. package/lib/utils/video/parser/sampler.d.ts.map +0 -1
  325. package/lib/utils/video/parser/sampler.js +0 -56
  326. package/lib/utils/video/parser/segment.d.ts +0 -48
  327. package/lib/utils/video/parser/segment.d.ts.map +0 -1
  328. package/lib/utils/video/parser/segment.js +0 -239
  329. package/lib/utils/video/parser/sink.d.ts +0 -9
  330. package/lib/utils/video/parser/sink.d.ts.map +0 -1
  331. package/lib/utils/video/parser/sink.js +0 -22
  332. package/lib/utils/video/parser/utils.d.ts +0 -10
  333. package/lib/utils/video/parser/utils.d.ts.map +0 -1
  334. package/lib/utils/video/parser/utils.js +0 -22
  335. package/src/editor/NodeInspectorConfig.tsx +0 -76
  336. package/src/editor/PreviewOverlayConfig.tsx +0 -67
  337. package/src/editor/Provider.tsx +0 -93
  338. package/src/editor/SceneGraphTabConfig.tsx +0 -81
  339. package/src/editor/icons/CircleIcon.tsx +0 -7
  340. package/src/editor/icons/CodeBlockIcon.tsx +0 -8
  341. package/src/editor/icons/CurveIcon.tsx +0 -7
  342. package/src/editor/icons/GridIcon.tsx +0 -7
  343. package/src/editor/icons/IconMap.ts +0 -35
  344. package/src/editor/icons/ImgIcon.tsx +0 -8
  345. package/src/editor/icons/LayoutIcon.tsx +0 -9
  346. package/src/editor/icons/LineIcon.tsx +0 -7
  347. package/src/editor/icons/NodeIcon.tsx +0 -7
  348. package/src/editor/icons/RayIcon.tsx +0 -7
  349. package/src/editor/icons/RectIcon.tsx +0 -7
  350. package/src/editor/icons/ShapeIcon.tsx +0 -7
  351. package/src/editor/icons/TxtIcon.tsx +0 -8
  352. package/src/editor/icons/VideoIcon.tsx +0 -7
  353. package/src/editor/icons/View2DIcon.tsx +0 -10
  354. package/src/editor/index.css +0 -0
  355. package/src/editor/index.ts +0 -17
  356. package/src/editor/tree/DetachedRoot.tsx +0 -23
  357. package/src/editor/tree/NodeElement.tsx +0 -74
  358. package/src/editor/tree/TreeElement.tsx +0 -72
  359. package/src/editor/tree/TreeRoot.tsx +0 -10
  360. package/src/editor/tree/ViewRoot.tsx +0 -20
  361. package/src/editor/tree/index.module.scss +0 -38
  362. package/src/editor/tree/index.ts +0 -3
  363. package/src/editor/tsconfig.build.json +0 -5
  364. package/src/editor/tsconfig.json +0 -12
  365. package/src/editor/tsdoc.json +0 -4
  366. package/src/editor/vite-env.d.ts +0 -1
  367. package/src/lib/code/CodeCursor.ts +0 -445
  368. package/src/lib/code/CodeDiffer.ts +0 -78
  369. package/src/lib/code/CodeFragment.ts +0 -97
  370. package/src/lib/code/CodeHighlighter.ts +0 -75
  371. package/src/lib/code/CodeMetrics.ts +0 -47
  372. package/src/lib/code/CodeRange.test.ts +0 -74
  373. package/src/lib/code/CodeRange.ts +0 -216
  374. package/src/lib/code/CodeScope.ts +0 -101
  375. package/src/lib/code/CodeSelection.ts +0 -24
  376. package/src/lib/code/CodeSignal.ts +0 -327
  377. package/src/lib/code/CodeTokenizer.ts +0 -54
  378. package/src/lib/code/DefaultHighlightStyle.ts +0 -98
  379. package/src/lib/code/LezerHighlighter.ts +0 -113
  380. package/src/lib/code/diff.test.ts +0 -311
  381. package/src/lib/code/diff.ts +0 -319
  382. package/src/lib/code/extractRange.ts +0 -126
  383. package/src/lib/code/index.ts +0 -13
  384. package/src/lib/components/Audio.ts +0 -168
  385. package/src/lib/components/Bezier.ts +0 -105
  386. package/src/lib/components/Circle.ts +0 -266
  387. package/src/lib/components/Code.ts +0 -526
  388. package/src/lib/components/CodeBlock.ts +0 -576
  389. package/src/lib/components/CubicBezier.ts +0 -112
  390. package/src/lib/components/Curve.ts +0 -455
  391. package/src/lib/components/Grid.ts +0 -135
  392. package/src/lib/components/Icon.ts +0 -96
  393. package/src/lib/components/Img.ts +0 -319
  394. package/src/lib/components/Knot.ts +0 -157
  395. package/src/lib/components/Latex.ts +0 -122
  396. package/src/lib/components/Layout.ts +0 -1092
  397. package/src/lib/components/Line.ts +0 -429
  398. package/src/lib/components/Media.ts +0 -576
  399. package/src/lib/components/Node.ts +0 -1940
  400. package/src/lib/components/Path.ts +0 -137
  401. package/src/lib/components/Polygon.ts +0 -171
  402. package/src/lib/components/QuadBezier.ts +0 -100
  403. package/src/lib/components/Ray.ts +0 -125
  404. package/src/lib/components/Rect.ts +0 -187
  405. package/src/lib/components/Rive.ts +0 -156
  406. package/src/lib/components/SVG.ts +0 -797
  407. package/src/lib/components/Shape.ts +0 -143
  408. package/src/lib/components/Spline.ts +0 -344
  409. package/src/lib/components/Txt.test.tsx +0 -81
  410. package/src/lib/components/Txt.ts +0 -203
  411. package/src/lib/components/TxtLeaf.ts +0 -205
  412. package/src/lib/components/Video.ts +0 -461
  413. package/src/lib/components/View2D.ts +0 -98
  414. package/src/lib/components/__tests__/children.test.tsx +0 -142
  415. package/src/lib/components/__tests__/clone.test.tsx +0 -126
  416. package/src/lib/components/__tests__/generatorTest.ts +0 -28
  417. package/src/lib/components/__tests__/mockScene2D.ts +0 -45
  418. package/src/lib/components/__tests__/query.test.tsx +0 -122
  419. package/src/lib/components/__tests__/state.test.tsx +0 -60
  420. package/src/lib/components/index.ts +0 -28
  421. package/src/lib/components/types.ts +0 -35
  422. package/src/lib/curves/ArcSegment.ts +0 -159
  423. package/src/lib/curves/CircleSegment.ts +0 -77
  424. package/src/lib/curves/CubicBezierSegment.ts +0 -78
  425. package/src/lib/curves/CurveDrawingInfo.ts +0 -11
  426. package/src/lib/curves/CurvePoint.ts +0 -15
  427. package/src/lib/curves/CurveProfile.ts +0 -7
  428. package/src/lib/curves/KnotInfo.ts +0 -10
  429. package/src/lib/curves/LineSegment.ts +0 -62
  430. package/src/lib/curves/Polynomial.ts +0 -355
  431. package/src/lib/curves/Polynomial2D.ts +0 -62
  432. package/src/lib/curves/PolynomialSegment.ts +0 -124
  433. package/src/lib/curves/QuadBezierSegment.ts +0 -64
  434. package/src/lib/curves/Segment.ts +0 -17
  435. package/src/lib/curves/UniformPolynomialCurveSampler.ts +0 -94
  436. package/src/lib/curves/createCurveProfileLerp.ts +0 -471
  437. package/src/lib/curves/getBezierSplineProfile.ts +0 -223
  438. package/src/lib/curves/getCircleProfile.ts +0 -86
  439. package/src/lib/curves/getPathProfile.ts +0 -178
  440. package/src/lib/curves/getPointAtDistance.ts +0 -21
  441. package/src/lib/curves/getPolylineProfile.test.ts +0 -21
  442. package/src/lib/curves/getPolylineProfile.ts +0 -89
  443. package/src/lib/curves/getRectProfile.ts +0 -139
  444. package/src/lib/curves/index.ts +0 -16
  445. package/src/lib/decorators/canvasStyleSignal.ts +0 -16
  446. package/src/lib/decorators/colorSignal.ts +0 -9
  447. package/src/lib/decorators/compound.ts +0 -72
  448. package/src/lib/decorators/computed.ts +0 -18
  449. package/src/lib/decorators/defaultStyle.ts +0 -18
  450. package/src/lib/decorators/filtersSignal.ts +0 -136
  451. package/src/lib/decorators/index.ts +0 -10
  452. package/src/lib/decorators/initializers.ts +0 -32
  453. package/src/lib/decorators/nodeName.ts +0 -13
  454. package/src/lib/decorators/signal.test.ts +0 -90
  455. package/src/lib/decorators/signal.ts +0 -345
  456. package/src/lib/decorators/spacingSignal.ts +0 -15
  457. package/src/lib/decorators/vector2Signal.ts +0 -30
  458. package/src/lib/globals.d.ts +0 -2
  459. package/src/lib/index.ts +0 -8
  460. package/src/lib/jsx-dev-runtime.ts +0 -2
  461. package/src/lib/jsx-runtime.ts +0 -46
  462. package/src/lib/parse-svg-path.d.ts +0 -14
  463. package/src/lib/partials/Filter.ts +0 -180
  464. package/src/lib/partials/Gradient.ts +0 -102
  465. package/src/lib/partials/Pattern.ts +0 -34
  466. package/src/lib/partials/ShaderConfig.ts +0 -117
  467. package/src/lib/partials/index.ts +0 -4
  468. package/src/lib/partials/types.ts +0 -58
  469. package/src/lib/scenes/Scene2D.ts +0 -242
  470. package/src/lib/scenes/index.ts +0 -3
  471. package/src/lib/scenes/makeScene2D.ts +0 -16
  472. package/src/lib/scenes/useScene2D.ts +0 -6
  473. package/src/lib/tsconfig.build.json +0 -5
  474. package/src/lib/tsconfig.json +0 -10
  475. package/src/lib/tsdoc.json +0 -4
  476. package/src/lib/utils/CanvasUtils.ts +0 -306
  477. package/src/lib/utils/diff.test.ts +0 -453
  478. package/src/lib/utils/diff.ts +0 -148
  479. package/src/lib/utils/index.ts +0 -2
  480. package/src/lib/utils/is.ts +0 -11
  481. package/src/lib/utils/makeSignalExtensions.ts +0 -30
  482. package/src/lib/utils/video/declarations.d.ts +0 -1
  483. package/src/lib/utils/video/ffmpeg-client.ts +0 -50
  484. package/src/lib/utils/video/mp4-parser-manager.ts +0 -72
  485. package/src/lib/utils/video/parser/index.ts +0 -1
  486. package/src/lib/utils/video/parser/parser.ts +0 -257
  487. package/src/lib/utils/video/parser/sampler.ts +0 -72
  488. package/src/lib/utils/video/parser/segment.ts +0 -302
  489. package/src/lib/utils/video/parser/sink.ts +0 -29
  490. package/src/lib/utils/video/parser/utils.ts +0 -31
  491. package/src/tsconfig.base.json +0 -19
  492. package/src/tsconfig.build.json +0 -8
  493. package/src/tsconfig.json +0 -5
@@ -1,76 +0,0 @@
1
- import {useComputed} from '@preact/signals';
2
- import type {PluginInspectorConfig} from '@twick/ui';
3
- import {
4
- AutoField,
5
- Button,
6
- Group,
7
- Label,
8
- Pane,
9
- Separator,
10
- UnknownField,
11
- findAndOpenFirstUserFile,
12
- useApplication,
13
- } from '@twick/ui';
14
- import {NodeInspectorKey, usePluginState} from './Provider';
15
-
16
- function Component() {
17
- const {inspection} = useApplication();
18
- const {scene, afterRender} = usePluginState();
19
- const node = useComputed(() => {
20
- afterRender.value;
21
- const {payload} = inspection.value;
22
- return scene.value?.getNode(payload as string);
23
- });
24
-
25
- const attributes = useComputed(() => {
26
- afterRender.value;
27
- const currentNode = node.value;
28
- const attributes: [string, unknown][] = [];
29
-
30
- if (currentNode) {
31
- for (const {key, meta, signal} of currentNode) {
32
- if (!meta.inspectable) continue;
33
- attributes.push([key, signal()]);
34
- }
35
- }
36
-
37
- return attributes;
38
- });
39
-
40
- const stack = node.value?.creationStack;
41
-
42
- return (
43
- <Pane title="Node Inspector" id="node-inspector-pane">
44
- <Separator size={1} />
45
- {stack && (
46
- <Group>
47
- <Label />
48
- <Button onClick={() => findAndOpenFirstUserFile(stack)} main>
49
- GO TO SOURCE
50
- </Button>
51
- </Group>
52
- )}
53
- <Group>
54
- <Label>key</Label>
55
- <UnknownField value={inspection.value.payload} />
56
- </Group>
57
- {!node.value && (
58
- <Group>
59
- <Label />
60
- Couldn't find the node. It may have been deleted or doesn't exist yet.
61
- </Group>
62
- )}
63
- {attributes.value.map(([key, value]) => (
64
- <Group key={key}>
65
- <Label>{key}</Label>
66
- <AutoField value={value} />
67
- </Group>
68
- ))}
69
- </Pane>
70
- );
71
- }
72
-
73
- export const NodeInspectorConfig: PluginInspectorConfig = {
74
- key: NodeInspectorKey,
75
- component: Component,
76
- };
@@ -1,67 +0,0 @@
1
- import {transformVectorAsPoint, Vector2} from '@twick/core';
2
- import type {PluginOverlayConfig} from '@twick/ui';
3
- import {
4
- MouseButton,
5
- OverlayWrapper,
6
- useViewportContext,
7
- useViewportMatrix,
8
- } from '@twick/ui';
9
- import type {ComponentChildren} from 'preact';
10
- import {usePluginState} from './Provider';
11
-
12
- function Component({children}: {children?: ComponentChildren}) {
13
- const state = useViewportContext();
14
- const {scene, selectedKey} = usePluginState();
15
- const matrix = useViewportMatrix();
16
-
17
- return (
18
- <OverlayWrapper
19
- onPointerDown={event => {
20
- if (event.button !== MouseButton.Left || event.shiftKey) return;
21
- if (!scene.value) return;
22
- event.stopPropagation();
23
-
24
- const diff = new Vector2(
25
- event.x - state.rect.x,
26
- event.y - state.rect.y,
27
- );
28
- const position = transformVectorAsPoint(diff, matrix.inverse());
29
-
30
- selectedKey.value = scene.value.inspectPosition(
31
- position.x,
32
- position.y,
33
- ) as string;
34
- }}
35
- >
36
- {children}
37
- </OverlayWrapper>
38
- );
39
- }
40
-
41
- function drawHook() {
42
- const {selectedKey, hoveredKey, afterRender, scene} = usePluginState();
43
- selectedKey.value;
44
- hoveredKey.value;
45
- afterRender.value;
46
-
47
- return (ctx: CanvasRenderingContext2D, matrix: DOMMatrix) => {
48
- const currentScene = scene.peek();
49
- if (!currentScene) return;
50
-
51
- let node = currentScene.getNode(selectedKey.value);
52
- if (node) {
53
- currentScene.drawOverlay(node.key, matrix, ctx);
54
- }
55
-
56
- node = currentScene.getNode(hoveredKey.value);
57
- if (node && hoveredKey.value !== selectedKey.value) {
58
- ctx.globalAlpha = 0.5;
59
- currentScene.drawOverlay(hoveredKey.value, matrix, ctx);
60
- }
61
- };
62
- }
63
-
64
- export const PreviewOverlayConfig: PluginOverlayConfig = {
65
- drawHook,
66
- component: Component,
67
- };
@@ -1,93 +0,0 @@
1
- import type {ReadonlySignal, Signal} from '@preact/signals';
2
- import {computed, signal, useSignalEffect} from '@preact/signals';
3
- import type {Scene2D} from '@twick/2d';
4
- import {SceneRenderEvent} from '@twick/core';
5
- import {useApplication, useCurrentScene} from '@twick/ui';
6
- import type {ComponentChildren} from 'preact';
7
- import {createContext} from 'preact';
8
- import {useContext, useMemo} from 'preact/hooks';
9
-
10
- export interface PluginState {
11
- selectedKey: Signal<string | null>;
12
- hoveredKey: Signal<string | null>;
13
- openNodes: Map<string, boolean>;
14
- scene: ReadonlySignal<Scene2D | null>;
15
- selectedChain: ReadonlySignal<Set<string>>;
16
- afterRender: ReadonlySignal<number>;
17
- }
18
-
19
- const PluginContext = createContext<PluginState | null>(null);
20
-
21
- export const NodeInspectorKey = '@twick/2d/node-inspector';
22
-
23
- export function usePluginState() {
24
- return useContext(PluginContext)!;
25
- }
26
-
27
- export function Provider({children}: {children?: ComponentChildren}) {
28
- const {inspection} = useApplication();
29
- const currentScene = useCurrentScene();
30
-
31
- const state = useMemo(() => {
32
- const scene = signal(currentScene as Scene2D);
33
- const selectedKey = signal<string | null>(null);
34
- const afterRender = signal(0);
35
- const hoveredKey = signal<string | null>(null);
36
- const openNodes = new Map<string, boolean>();
37
- const selectedChain = computed(() => {
38
- const chain = new Set<string>();
39
- const key = selectedKey.value;
40
- const selectedNode = scene.value?.getNode(key);
41
- if (selectedNode) {
42
- let node = selectedNode.parent() ?? null;
43
- while (node) {
44
- chain.add(node.key);
45
- node = node.parent();
46
- }
47
- }
48
-
49
- return chain;
50
- });
51
-
52
- return {
53
- selectedKey,
54
- hoveredKey,
55
- afterRender,
56
- openNodes,
57
- selectedChain,
58
- scene,
59
- } satisfies PluginState;
60
- }, []);
61
-
62
- state.scene.value = currentScene as Scene2D;
63
-
64
- useSignalEffect(() =>
65
- state.scene.value?.onRenderLifecycle.subscribe(([event]) => {
66
- if (event === SceneRenderEvent.AfterRender) {
67
- state.afterRender.value++;
68
- }
69
- }),
70
- );
71
-
72
- useSignalEffect(() => {
73
- const {key, payload} = inspection.value;
74
- if (key === NodeInspectorKey) {
75
- state.selectedKey.value = payload as string;
76
- }
77
- });
78
-
79
- useSignalEffect(() => {
80
- const nodeKey = state.selectedKey.value;
81
- const {key, payload} = inspection.peek();
82
-
83
- if (key === NodeInspectorKey && !nodeKey) {
84
- inspection.value = {key: '', payload: null};
85
- } else if (payload !== nodeKey) {
86
- inspection.value = {key: NodeInspectorKey, payload: nodeKey};
87
- }
88
- });
89
-
90
- return (
91
- <PluginContext.Provider value={state}>{children}</PluginContext.Provider>
92
- );
93
- }
@@ -1,81 +0,0 @@
1
- import type {PluginTabConfig, PluginTabProps} from '@twick/ui';
2
- import {
3
- AccountTree,
4
- emphasize,
5
- Pane,
6
- Tab,
7
- useApplication,
8
- usePanels,
9
- useReducedMotion,
10
- } from '@twick/ui';
11
-
12
- import {useSignalEffect} from '@preact/signals';
13
- import {useEffect, useRef} from 'preact/hooks';
14
- import {usePluginState} from './Provider';
15
- import {DetachedRoot, ViewRoot} from './tree';
16
-
17
- function TabComponent({tab}: PluginTabProps) {
18
- const {sidebar} = usePanels();
19
- const inspectorTab = useRef<HTMLButtonElement>(null);
20
- const reducedMotion = useReducedMotion();
21
- const {selectedKey} = usePluginState();
22
- const {logger} = useApplication();
23
-
24
- useEffect(
25
- () =>
26
- logger.onInspected.subscribe(key => {
27
- sidebar.set(tab);
28
- selectedKey.value = key;
29
- }),
30
- [tab],
31
- );
32
-
33
- useSignalEffect(() => {
34
- if (
35
- selectedKey.value &&
36
- sidebar.current.peek() !== tab &&
37
- !reducedMotion &&
38
- inspectorTab.current &&
39
- inspectorTab.current.getAnimations().length < 2
40
- ) {
41
- inspectorTab.current.animate(emphasize(), {duration: 400});
42
- inspectorTab.current.animate([{color: 'white'}, {color: ''}], {
43
- duration: 800,
44
- });
45
- }
46
- });
47
-
48
- return (
49
- <Tab
50
- forwardRef={inspectorTab}
51
- title="Scene Graph"
52
- id="scene-graph-tab"
53
- tab={tab}
54
- >
55
- <AccountTree />
56
- </Tab>
57
- );
58
- }
59
-
60
- function PaneComponent() {
61
- const {selectedKey} = usePluginState();
62
-
63
- return (
64
- <Pane
65
- title="Scene Graph"
66
- id="scene-graph-pane"
67
- onClick={() => {
68
- selectedKey.value = null;
69
- }}
70
- >
71
- <ViewRoot />
72
- <DetachedRoot />
73
- </Pane>
74
- );
75
- }
76
-
77
- export const SceneGraphTabConfig: PluginTabConfig = {
78
- name: 'scene-graph',
79
- tabComponent: TabComponent,
80
- paneComponent: PaneComponent,
81
- };
@@ -1,7 +0,0 @@
1
- export function CircleIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M10,5C12.76,5 15,7.24 15,10C15,12.76 12.76,15 10,15C7.24,15 5,12.76 5,10C5,7.24 7.24,5 10,5ZM10,7C8.344,7 7,8.344 7,10C7,11.656 8.344,13 10,13C11.656,13 13,11.656 13,10C13,8.344 11.656,7 10,7Z" />
5
- </svg>
6
- );
7
- }
@@ -1,8 +0,0 @@
1
- export function CodeBlockIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M5,9L5,6.999C5,6.469 5.211,5.96 5.585,5.586C5.96,5.211 6.469,5 6.999,5L9,5L9,7L6.999,7L7,9L7,11L7,13L8.985,13L9,15L7,15C5.895,15 5,14.105 5,13L5,11L4,11L4,9L5,9Z" />
5
- <path d="M15,11L15,13.001C15,13.531 14.789,14.04 14.415,14.414C14.04,14.789 13.531,15 13.001,15L11,15L11,13L13,13L13,11L13,9L13,7L11.015,7L11,5L13,5C14.105,5 15,5.895 15,7L15,9L16,9L16,11L15,11Z" />
6
- </svg>
7
- );
8
- }
@@ -1,7 +0,0 @@
1
- export function CurveIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M12.19,6.47L13.595,5.047C15.519,6.947 15.187,8.932 14.229,9.951C13.675,10.541 12.879,10.861 12.016,10.767C11.261,10.685 10.426,10.278 9.708,9.348C9.292,8.809 8.878,8.441 8.471,8.249C8.217,8.13 7.979,8.084 7.77,8.154C7.565,8.222 7.409,8.394 7.287,8.621C7.097,8.975 7.001,9.444 7,10.003C6.996,11.584 7.848,12.746 8.91,12.946C9.535,13.064 10.185,12.783 10.687,12.082L12.313,13.247C11,15.079 9.118,15.344 7.581,14.591C6.161,13.896 4.994,12.246 5,9.997C5.005,7.945 5.963,6.649 7.136,6.257C8.281,5.874 9.866,6.278 11.292,8.126C11.81,8.799 12.421,8.954 12.772,8.581C13.196,8.13 13.042,7.312 12.19,6.47Z" />
5
- </svg>
6
- );
7
- }
@@ -1,7 +0,0 @@
1
- export function GridIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M6,8L4,8L4,6L6,6L6,4L8,4L8,6L12,6L12,4L14,4L14,6L16,6L16,8L14,8L14,12L16,12L16,14L14,14L14,16L12,16L12,14L8,14L8,16L6,16L6,14L4,14L4,12L6,12L6,8ZM8,12L12,12L12,8L8,8L8,12Z" />
5
- </svg>
6
- );
7
- }
@@ -1,35 +0,0 @@
1
- /* eslint-disable @typescript-eslint/naming-convention */
2
-
3
- import type {FunctionComponent} from 'preact';
4
- import {CircleIcon} from './CircleIcon';
5
- import {CodeBlockIcon} from './CodeBlockIcon';
6
- import {CurveIcon} from './CurveIcon';
7
- import {GridIcon} from './GridIcon';
8
- import {ImgIcon} from './ImgIcon';
9
- import {LayoutIcon} from './LayoutIcon';
10
- import {LineIcon} from './LineIcon';
11
- import {NodeIcon} from './NodeIcon';
12
- import {RayIcon} from './RayIcon';
13
- import {RectIcon} from './RectIcon';
14
- import {ShapeIcon} from './ShapeIcon';
15
- import {TxtIcon} from './TxtIcon';
16
- import {VideoIcon} from './VideoIcon';
17
- import {View2DIcon} from './View2DIcon';
18
-
19
- export const IconMap: Record<string, FunctionComponent> = {
20
- Circle: CircleIcon,
21
- CodeBlock: CodeBlockIcon,
22
- Curve: CurveIcon,
23
- Grid: GridIcon,
24
- Img: ImgIcon,
25
- Layout: LayoutIcon,
26
- Line: LineIcon,
27
- Node: NodeIcon,
28
- Ray: RayIcon,
29
- Rect: RectIcon,
30
- Shape: ShapeIcon,
31
- Txt: TxtIcon,
32
- TxtLeaf: TxtIcon,
33
- Video: VideoIcon,
34
- View2D: View2DIcon,
35
- };
@@ -1,8 +0,0 @@
1
- export function ImgIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M5,15L15,15L15,10L13,8L8,13L5,10L5,15Z" />
5
- <circle cx="8" cy="7" r="2" />
6
- </svg>
7
- );
8
- }
@@ -1,9 +0,0 @@
1
- export function LayoutIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M14,5C14.552,5 15,5.448 15,6C15,7.916 15,12.084 15,14C15,14.552 14.552,15 14,15C12.815,15 11,15 11,15L11,5L14,5Z" />
5
- <path d="M9,5L9,9L5,9L5,6C5,5.448 5.448,5 6,5L9,5Z" />
6
- <path d="M9,11L9,15L6,15C5.448,15 5,14.552 5,14L5,11L9,11Z" />
7
- </svg>
8
- );
9
- }
@@ -1,7 +0,0 @@
1
- export function LineIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M9.906,4.589L11.411,5.906L8.529,9.2L13.859,8.439C14.273,8.379 14.68,8.584 14.879,8.952C15.078,9.319 15.028,9.772 14.753,10.087L10.094,15.411L8.589,14.094L11.471,10.8L6.141,11.561C5.727,11.621 5.32,11.416 5.121,11.048C4.922,10.681 4.972,10.228 5.247,9.913L9.906,4.589Z" />
5
- </svg>
6
- );
7
- }
@@ -1,7 +0,0 @@
1
- export function NodeIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M7,9L5,9L5,7L7,7L7,5L9,5L9,7L12,7L12,5L15,8L12,11L12,9L9,9L9,12L11,12L8,15L5,12L7,12L7,9Z" />
5
- </svg>
6
- );
7
- }
@@ -1,7 +0,0 @@
1
- export function RayIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M12,9.414L6.707,14.707L5.293,13.293L10.586,8L8,8L8,6L13,6C13.552,6 14,6.448 14,7L14,12L12,12L12,9.414Z" />
5
- </svg>
6
- );
7
- }
@@ -1,7 +0,0 @@
1
- export function RectIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M15,6L15,14C15,14.552 14.552,15 14,15L6,15C5.448,15 5,14.552 5,14L5,6C5,5.448 5.448,5 6,5L14,5C14.552,5 15,5.448 15,6ZM13,7L7,7L7,13L13,13L13,7Z" />
5
- </svg>
6
- );
7
- }
@@ -1,7 +0,0 @@
1
- export function ShapeIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M11.746,10.93C12.637,12.664 11.973,14.504 10.611,15.244C9.692,15.743 8.385,15.804 6.94,14.829C5.555,13.893 4.689,12.16 4.544,10.388C4.395,8.572 5,6.752 6.399,5.701C8.069,4.445 10.793,4.271 12.765,4.921C14.324,5.436 15.374,6.473 15.495,7.691C15.651,9.262 14.613,10.061 13.26,10.5C12.847,10.634 12.41,10.735 12.02,10.841C11.936,10.864 11.838,10.897 11.746,10.93ZM7.601,7.299C6.737,7.949 6.445,9.103 6.537,10.224C6.633,11.389 7.149,12.556 8.06,13.171C8.696,13.601 9.251,13.706 9.656,13.486C10.207,13.187 10.315,12.395 9.886,11.701C9.48,11.044 9.513,10.523 9.68,10.122C9.835,9.75 10.164,9.417 10.678,9.187C11.243,8.935 12.157,8.8 12.908,8.503C13.216,8.381 13.542,8.264 13.505,7.888C13.485,7.691 13.359,7.53 13.197,7.384C12.928,7.143 12.558,6.959 12.138,6.821C10.736,6.358 8.789,6.406 7.601,7.299Z" />
5
- </svg>
6
- );
7
- }
@@ -1,8 +0,0 @@
1
- export function TxtIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M9,13L9,6L11,6L11,13L12,13L12,15L8,15L8,13L9,13Z" />
5
- <path d="M7,8L5,8L5,6C5,5.448 5.448,5 6,5L14,5C14.552,5 15,5.448 15,6L15,8L13,8L13,7L7,7L7,8Z" />
6
- </svg>
7
- );
8
- }
@@ -1,7 +0,0 @@
1
- export function VideoIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M14,10.866L7.25,14.763C6.941,14.942 6.559,14.942 6.25,14.763C5.941,14.585 5.75,14.254 5.75,13.897L5.75,6.103C5.75,5.746 5.941,5.415 6.25,5.237C6.559,5.058 6.941,5.058 7.25,5.237L14,9.134C14.309,9.313 14.5,9.643 14.5,10C14.5,10.357 14.309,10.687 14,10.866ZM11.5,10L7.75,7.835L7.75,12.165L11.5,10Z" />
5
- </svg>
6
- );
7
- }
@@ -1,10 +0,0 @@
1
- export function View2DIcon() {
2
- return (
3
- <svg viewBox="0 0 20 20" fill="currentColor">
4
- <path d="M9,5L9,7L7,7L7,9L5,9L5,6C5,5.448 5.448,5 6,5L9,5Z" />
5
- <path d="M5,11L7,11L7,13L9,13L9,15L6,15C5.448,15 5,14.552 5,14L5,11Z" />
6
- <path d="M11,15L11,13L13,13L13,11L15,11L15,14C15,14.552 14.552,15 14,15L11,15Z" />
7
- <path d="M15,9L13,9L13,7L11,7L11,5L14,5C14.552,5 15,5.448 15,6L15,9Z" />
8
- </svg>
9
- );
10
- }
File without changes
@@ -1,17 +0,0 @@
1
- import './index.css';
2
-
3
- import {makeEditorPlugin} from '@twick/ui';
4
- import {NodeInspectorConfig} from './NodeInspectorConfig';
5
- import {PreviewOverlayConfig} from './PreviewOverlayConfig';
6
- import {Provider} from './Provider';
7
- import {SceneGraphTabConfig} from './SceneGraphTabConfig';
8
-
9
- export default makeEditorPlugin(() => {
10
- return {
11
- name: '@twick/2d',
12
- provider: Provider,
13
- previewOverlay: PreviewOverlayConfig,
14
- tabs: [SceneGraphTabConfig],
15
- inspectors: [NodeInspectorConfig],
16
- };
17
- });
@@ -1,23 +0,0 @@
1
- import {useSignal} from '@preact/signals';
2
- import {usePluginState} from '../Provider';
3
- import {NodeElement} from './NodeElement';
4
- import {TreeElement} from './TreeElement';
5
- import {TreeRoot} from './TreeRoot';
6
-
7
- export function DetachedRoot() {
8
- const {afterRender, scene} = usePluginState();
9
- const open = useSignal(false);
10
- const currentScene = scene.value;
11
- const children = currentScene ? [...currentScene.getDetachedNodes()] : [];
12
- afterRender.value;
13
-
14
- return children.length > 0 ? (
15
- <TreeRoot>
16
- <TreeElement open={open} label="Detached nodes">
17
- {children.map(child => (
18
- <NodeElement node={child} depth={1} />
19
- ))}
20
- </TreeElement>
21
- </TreeRoot>
22
- ) : null;
23
- }
@@ -1,74 +0,0 @@
1
- import {useComputed, useSignal, useSignalEffect} from '@preact/signals';
2
- import type {Node} from '@twick/2d';
3
- import {NODE_NAME} from '@twick/2d';
4
- import {useRef} from 'preact/hooks';
5
- import {usePluginState} from '../Provider';
6
- import {IconMap} from '../icons/IconMap';
7
- import {TreeElement} from './TreeElement';
8
-
9
- interface NodeElementProps {
10
- node: Node;
11
- depth?: number;
12
- }
13
-
14
- export function NodeElement({node, depth = 0}: NodeElementProps) {
15
- const {selectedKey, hoveredKey, openNodes, selectedChain, afterRender} =
16
- usePluginState();
17
- const ref = useRef<HTMLDivElement>(null);
18
- const open = useSignal(
19
- selectedChain.peek().has(node.key) || (openNodes.get(node.key) ?? false),
20
- );
21
- const nodeSignal = useSignal(node);
22
- nodeSignal.value = node;
23
-
24
- const children = useComputed(() => {
25
- afterRender.value;
26
- return nodeSignal.value.peekChildren();
27
- });
28
-
29
- useSignalEffect(() => {
30
- open.value = openNodes.get(nodeSignal.value.key) ?? false;
31
- });
32
-
33
- useSignalEffect(() => {
34
- const chain = selectedChain.value;
35
- if (chain.has(nodeSignal.value.key)) {
36
- open.value = true;
37
- }
38
- });
39
-
40
- useSignalEffect(() => {
41
- openNodes.set(nodeSignal.value.key, open.value);
42
- });
43
-
44
- useSignalEffect(() => {
45
- const key = selectedKey.value;
46
- if (node.key === key) {
47
- ref.current?.scrollIntoView({block: 'nearest', behavior: 'instant'});
48
- }
49
- });
50
-
51
- const Icon = IconMap[node[NODE_NAME]] ?? IconMap.Node;
52
-
53
- return (
54
- <TreeElement
55
- forwardRef={ref}
56
- open={open}
57
- depth={depth}
58
- icon={<Icon />}
59
- label={node.key}
60
- selected={selectedKey.value === node.key}
61
- onClick={event => {
62
- selectedKey.value = node.key;
63
- event.stopPropagation();
64
- }}
65
- onPointerEnter={() => (hoveredKey.value = node.key)}
66
- onPointerLeave={() => (hoveredKey.value = null)}
67
- >
68
- {children.value.length > 0 &&
69
- children.value.map(child => (
70
- <NodeElement node={child} depth={depth + 1} />
71
- ))}
72
- </TreeElement>
73
- );
74
- }
@@ -1,72 +0,0 @@
1
- import type {Signal} from '@preact/signals';
2
- import {Collapse, Toggle} from '@twick/ui';
3
- import {clsx} from 'clsx';
4
- import type {ComponentChildren, JSX} from 'preact';
5
- import type {Ref} from 'preact/hooks';
6
- import styles from './index.module.scss';
7
-
8
- const DEPTH_VAR = '--depth';
9
-
10
- interface TreeElementProps
11
- extends Omit<JSX.HTMLAttributes<HTMLDivElement>, 'label' | 'icon'> {
12
- icon?: ComponentChildren;
13
- label: ComponentChildren;
14
- children?: ComponentChildren;
15
- selected?: boolean;
16
- open: Signal<boolean>;
17
- depth?: number;
18
- forwardRef?: Ref<HTMLDivElement>;
19
- }
20
-
21
- export function TreeElement({
22
- label,
23
- children,
24
- selected,
25
- depth = 0,
26
- open,
27
- icon,
28
- forwardRef,
29
- ...props
30
- }: TreeElementProps) {
31
- const hasChildren = !!children;
32
-
33
- return (
34
- <>
35
- <div
36
- ref={forwardRef}
37
- className={clsx(
38
- styles.label,
39
- selected && styles.active,
40
- hasChildren && styles.parent,
41
- )}
42
- onDblClick={() => {
43
- if (hasChildren) {
44
- open.value = !open.value;
45
- }
46
- }}
47
- {...props}
48
- style={{[DEPTH_VAR]: `${depth}`}}
49
- >
50
- {hasChildren && (
51
- <Toggle
52
- animated={false}
53
- open={open.value}
54
- onToggle={value => {
55
- open.value = value;
56
- }}
57
- onDblClick={e => {
58
- e.stopPropagation();
59
- }}
60
- />
61
- )}
62
- {icon}
63
- {label}
64
- </div>
65
- {hasChildren && (
66
- <Collapse open={open.value} animated={false}>
67
- {children}
68
- </Collapse>
69
- )}
70
- </>
71
- );
72
- }