samcan 0.0.2 → 0.1.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 (327) hide show
  1. package/{license → LICENSE} +3 -1
  2. package/README.md +3 -0
  3. package/dist/camera/index.cjs +370 -0
  4. package/dist/camera/index.d.cts +54 -0
  5. package/dist/camera/index.d.ts +54 -0
  6. package/dist/camera/index.js +70 -0
  7. package/dist/document/index.cjs +735 -0
  8. package/dist/document/index.d.cts +174 -0
  9. package/dist/document/index.d.ts +174 -0
  10. package/dist/document/index.js +161 -0
  11. package/dist/editor/index.cjs +5007 -0
  12. package/dist/editor/index.d.cts +374 -0
  13. package/dist/editor/index.d.ts +374 -0
  14. package/dist/editor/index.js +2401 -0
  15. package/dist/engine/index.cjs +3752 -0
  16. package/dist/engine/index.d.cts +183 -0
  17. package/dist/engine/index.d.ts +183 -0
  18. package/dist/engine/index.js +111 -0
  19. package/dist/index.cjs +8899 -0
  20. package/dist/index.d.cts +962 -0
  21. package/dist/index.d.ts +962 -46
  22. package/dist/index.js +1008 -49
  23. package/dist/math/index.cjs +2230 -0
  24. package/dist/math/index.d.cts +302 -0
  25. package/dist/math/index.d.ts +302 -0
  26. package/dist/math/index.js +1109 -0
  27. package/dist/renderer/index.cjs +1865 -0
  28. package/dist/renderer/index.d.cts +91 -0
  29. package/dist/renderer/index.d.ts +91 -0
  30. package/dist/renderer/index.js +89 -0
  31. package/dist/shared/chunk-35pkr0zs.js +110 -0
  32. package/dist/shared/chunk-7sr7q84y.js +80 -0
  33. package/dist/shared/chunk-87399bz7.js +89 -0
  34. package/dist/shared/chunk-8ynnz57m.js +129 -0
  35. package/dist/shared/chunk-d6gxvapt.js +500 -0
  36. package/dist/shared/chunk-hewznwbd.js +305 -0
  37. package/dist/shared/chunk-jdvrd5tv.js +623 -0
  38. package/dist/shared/chunk-rvag1j46.js +461 -0
  39. package/dist/shared/chunk-rzxyjwk8.js +397 -0
  40. package/dist/shared/chunk-s3qdcmcq.js +1392 -0
  41. package/dist/shared/chunk-v53jprrn.js +68 -0
  42. package/dist/shared/chunk-wa3772hp.js +117 -0
  43. package/dist/spatial/index.cjs +954 -0
  44. package/dist/spatial/index.d.cts +136 -0
  45. package/dist/spatial/index.d.ts +136 -0
  46. package/dist/spatial/index.js +301 -0
  47. package/dist/stroke/index.cjs +1010 -0
  48. package/dist/stroke/index.d.cts +143 -0
  49. package/dist/stroke/index.d.ts +143 -0
  50. package/dist/stroke/index.js +343 -0
  51. package/package.json +122 -58
  52. package/dist/bundle.js +0 -5888
  53. package/dist/core/animation/animationruntime.d.ts +0 -238
  54. package/dist/core/animation/animationruntime.d.ts.map +0 -1
  55. package/dist/core/animation/animationruntime.js +0 -530
  56. package/dist/core/animation/animationruntime.js.map +0 -1
  57. package/dist/core/animation/animationstate.d.ts +0 -85
  58. package/dist/core/animation/animationstate.d.ts.map +0 -1
  59. package/dist/core/animation/animationstate.js +0 -119
  60. package/dist/core/animation/animationstate.js.map +0 -1
  61. package/dist/core/animation/animationtrack.d.ts +0 -55
  62. package/dist/core/animation/animationtrack.d.ts.map +0 -1
  63. package/dist/core/animation/animationtrack.js +0 -185
  64. package/dist/core/animation/animationtrack.js.map +0 -1
  65. package/dist/core/animation/easing.d.ts +0 -80
  66. package/dist/core/animation/easing.d.ts.map +0 -1
  67. package/dist/core/animation/easing.js +0 -126
  68. package/dist/core/animation/easing.js.map +0 -1
  69. package/dist/core/animation/index.d.ts +0 -11
  70. package/dist/core/animation/index.d.ts.map +0 -1
  71. package/dist/core/animation/index.js +0 -10
  72. package/dist/core/animation/index.js.map +0 -1
  73. package/dist/core/animation/interpolator.d.ts +0 -82
  74. package/dist/core/animation/interpolator.d.ts.map +0 -1
  75. package/dist/core/animation/interpolator.js +0 -108
  76. package/dist/core/animation/interpolator.js.map +0 -1
  77. package/dist/core/animation/keyframe.d.ts +0 -52
  78. package/dist/core/animation/keyframe.d.ts.map +0 -1
  79. package/dist/core/animation/keyframe.js +0 -65
  80. package/dist/core/animation/keyframe.js.map +0 -1
  81. package/dist/core/animation/logger.d.ts +0 -8
  82. package/dist/core/animation/logger.d.ts.map +0 -1
  83. package/dist/core/animation/logger.js +0 -20
  84. package/dist/core/animation/logger.js.map +0 -1
  85. package/dist/core/animation/statemachine.d.ts +0 -178
  86. package/dist/core/animation/statemachine.d.ts.map +0 -1
  87. package/dist/core/animation/statemachine.js +0 -378
  88. package/dist/core/animation/statemachine.js.map +0 -1
  89. package/dist/core/animation/statetransition.d.ts +0 -142
  90. package/dist/core/animation/statetransition.d.ts.map +0 -1
  91. package/dist/core/animation/statetransition.js +0 -189
  92. package/dist/core/animation/statetransition.js.map +0 -1
  93. package/dist/core/animation/timeline.d.ts +0 -62
  94. package/dist/core/animation/timeline.d.ts.map +0 -1
  95. package/dist/core/animation/timeline.js +0 -102
  96. package/dist/core/animation/timeline.js.map +0 -1
  97. package/dist/core/api.d.ts +0 -245
  98. package/dist/core/api.d.ts.map +0 -1
  99. package/dist/core/api.js +0 -369
  100. package/dist/core/api.js.map +0 -1
  101. package/dist/core/asset/assetmanager.d.ts +0 -196
  102. package/dist/core/asset/assetmanager.d.ts.map +0 -1
  103. package/dist/core/asset/assetmanager.js +0 -502
  104. package/dist/core/asset/assetmanager.js.map +0 -1
  105. package/dist/core/asset/index.d.ts +0 -3
  106. package/dist/core/asset/index.d.ts.map +0 -1
  107. package/dist/core/asset/index.js +0 -3
  108. package/dist/core/asset/index.js.map +0 -1
  109. package/dist/core/asset/types.d.ts +0 -36
  110. package/dist/core/asset/types.d.ts.map +0 -1
  111. package/dist/core/asset/types.js +0 -1
  112. package/dist/core/asset/types.js.map +0 -1
  113. package/dist/core/command/basecommand.d.ts +0 -29
  114. package/dist/core/command/basecommand.d.ts.map +0 -1
  115. package/dist/core/command/basecommand.js +0 -36
  116. package/dist/core/command/basecommand.js.map +0 -1
  117. package/dist/core/command/command.d.ts +0 -55
  118. package/dist/core/command/command.d.ts.map +0 -1
  119. package/dist/core/command/command.js +0 -1
  120. package/dist/core/command/command.js.map +0 -1
  121. package/dist/core/command/commandhistory.d.ts +0 -76
  122. package/dist/core/command/commandhistory.d.ts.map +0 -1
  123. package/dist/core/command/commandhistory.js +0 -122
  124. package/dist/core/command/commandhistory.js.map +0 -1
  125. package/dist/core/command/editorcommands.d.ts +0 -108
  126. package/dist/core/command/editorcommands.d.ts.map +0 -1
  127. package/dist/core/command/editorcommands.js +0 -274
  128. package/dist/core/command/editorcommands.js.map +0 -1
  129. package/dist/core/command/index.d.ts +0 -5
  130. package/dist/core/command/index.d.ts.map +0 -1
  131. package/dist/core/command/index.js +0 -5
  132. package/dist/core/command/index.js.map +0 -1
  133. package/dist/core/editor/events/emitter.d.ts +0 -45
  134. package/dist/core/editor/events/emitter.d.ts.map +0 -1
  135. package/dist/core/editor/events/emitter.js +0 -88
  136. package/dist/core/editor/events/emitter.js.map +0 -1
  137. package/dist/core/error/animationerror.d.ts +0 -27
  138. package/dist/core/error/animationerror.d.ts.map +0 -1
  139. package/dist/core/error/animationerror.js +0 -41
  140. package/dist/core/error/animationerror.js.map +0 -1
  141. package/dist/core/error/asseterror.d.ts +0 -32
  142. package/dist/core/error/asseterror.d.ts.map +0 -1
  143. package/dist/core/error/asseterror.js +0 -48
  144. package/dist/core/error/asseterror.js.map +0 -1
  145. package/dist/core/error/index.d.ts +0 -7
  146. package/dist/core/error/index.d.ts.map +0 -1
  147. package/dist/core/error/index.js +0 -7
  148. package/dist/core/error/index.js.map +0 -1
  149. package/dist/core/error/pluginerror.d.ts +0 -22
  150. package/dist/core/error/pluginerror.d.ts.map +0 -1
  151. package/dist/core/error/pluginerror.js +0 -33
  152. package/dist/core/error/pluginerror.js.map +0 -1
  153. package/dist/core/error/renderererror.d.ts +0 -26
  154. package/dist/core/error/renderererror.d.ts.map +0 -1
  155. package/dist/core/error/renderererror.js +0 -40
  156. package/dist/core/error/renderererror.js.map +0 -1
  157. package/dist/core/error/samcanerror.d.ts +0 -72
  158. package/dist/core/error/samcanerror.d.ts.map +0 -1
  159. package/dist/core/error/samcanerror.js +0 -108
  160. package/dist/core/error/samcanerror.js.map +0 -1
  161. package/dist/core/error/serializationerror.d.ts +0 -31
  162. package/dist/core/error/serializationerror.d.ts.map +0 -1
  163. package/dist/core/error/serializationerror.js +0 -46
  164. package/dist/core/error/serializationerror.js.map +0 -1
  165. package/dist/core/index.d.ts +0 -12
  166. package/dist/core/index.d.ts.map +0 -1
  167. package/dist/core/index.js +0 -12
  168. package/dist/core/index.js.map +0 -1
  169. package/dist/core/math/color.d.ts +0 -56
  170. package/dist/core/math/color.d.ts.map +0 -1
  171. package/dist/core/math/color.js +0 -125
  172. package/dist/core/math/color.js.map +0 -1
  173. package/dist/core/math/index.d.ts +0 -14
  174. package/dist/core/math/index.d.ts.map +0 -1
  175. package/dist/core/math/index.js +0 -14
  176. package/dist/core/math/index.js.map +0 -1
  177. package/dist/core/math/matrix.d.ts +0 -101
  178. package/dist/core/math/matrix.d.ts.map +0 -1
  179. package/dist/core/math/matrix.js +0 -177
  180. package/dist/core/math/matrix.js.map +0 -1
  181. package/dist/core/math/paint.d.ts +0 -104
  182. package/dist/core/math/paint.d.ts.map +0 -1
  183. package/dist/core/math/paint.js +0 -204
  184. package/dist/core/math/paint.js.map +0 -1
  185. package/dist/core/math/path/index.d.ts +0 -94
  186. package/dist/core/math/path/index.d.ts.map +0 -1
  187. package/dist/core/math/path/index.js +0 -180
  188. package/dist/core/math/path/index.js.map +0 -1
  189. package/dist/core/math/path/operations.d.ts +0 -38
  190. package/dist/core/math/path/operations.d.ts.map +0 -1
  191. package/dist/core/math/path/operations.js +0 -149
  192. package/dist/core/math/path/operations.js.map +0 -1
  193. package/dist/core/math/pool.d.ts +0 -54
  194. package/dist/core/math/pool.d.ts.map +0 -1
  195. package/dist/core/math/pool.js +0 -97
  196. package/dist/core/math/pool.js.map +0 -1
  197. package/dist/core/math/pools.d.ts +0 -29
  198. package/dist/core/math/pools.d.ts.map +0 -1
  199. package/dist/core/math/pools.js +0 -50
  200. package/dist/core/math/pools.js.map +0 -1
  201. package/dist/core/math/rectangle.d.ts +0 -68
  202. package/dist/core/math/rectangle.d.ts.map +0 -1
  203. package/dist/core/math/rectangle.js +0 -124
  204. package/dist/core/math/rectangle.js.map +0 -1
  205. package/dist/core/math/utils.d.ts +0 -68
  206. package/dist/core/math/utils.d.ts.map +0 -1
  207. package/dist/core/math/utils.js +0 -110
  208. package/dist/core/math/utils.js.map +0 -1
  209. package/dist/core/math/vector2.d.ts +0 -85
  210. package/dist/core/math/vector2.d.ts.map +0 -1
  211. package/dist/core/math/vector2.js +0 -134
  212. package/dist/core/math/vector2.js.map +0 -1
  213. package/dist/core/plugin/animationcontroller.d.ts +0 -43
  214. package/dist/core/plugin/animationcontroller.d.ts.map +0 -1
  215. package/dist/core/plugin/animationcontroller.js +0 -11
  216. package/dist/core/plugin/animationcontroller.js.map +0 -1
  217. package/dist/core/plugin/index.d.ts +0 -6
  218. package/dist/core/plugin/index.d.ts.map +0 -1
  219. package/dist/core/plugin/index.js +0 -4
  220. package/dist/core/plugin/index.js.map +0 -1
  221. package/dist/core/plugin/plugin.d.ts +0 -53
  222. package/dist/core/plugin/plugin.d.ts.map +0 -1
  223. package/dist/core/plugin/plugin.js +0 -29
  224. package/dist/core/plugin/plugin.js.map +0 -1
  225. package/dist/core/plugin/pluginregistry.d.ts +0 -71
  226. package/dist/core/plugin/pluginregistry.d.ts.map +0 -1
  227. package/dist/core/plugin/pluginregistry.js +0 -143
  228. package/dist/core/plugin/pluginregistry.js.map +0 -1
  229. package/dist/core/renderer/batchmanager.d.ts +0 -68
  230. package/dist/core/renderer/batchmanager.d.ts.map +0 -1
  231. package/dist/core/renderer/batchmanager.js +0 -82
  232. package/dist/core/renderer/batchmanager.js.map +0 -1
  233. package/dist/core/renderer/canvas2drenderer.d.ts +0 -139
  234. package/dist/core/renderer/canvas2drenderer.d.ts.map +0 -1
  235. package/dist/core/renderer/canvas2drenderer.js +0 -499
  236. package/dist/core/renderer/canvas2drenderer.js.map +0 -1
  237. package/dist/core/renderer/dirtyregionmanager.d.ts +0 -54
  238. package/dist/core/renderer/dirtyregionmanager.d.ts.map +0 -1
  239. package/dist/core/renderer/dirtyregionmanager.js +0 -129
  240. package/dist/core/renderer/dirtyregionmanager.js.map +0 -1
  241. package/dist/core/renderer/index.d.ts +0 -8
  242. package/dist/core/renderer/index.d.ts.map +0 -1
  243. package/dist/core/renderer/index.js +0 -6
  244. package/dist/core/renderer/index.js.map +0 -1
  245. package/dist/core/renderer/renderer.d.ts +0 -154
  246. package/dist/core/renderer/renderer.d.ts.map +0 -1
  247. package/dist/core/renderer/renderer.js +0 -1
  248. package/dist/core/renderer/renderer.js.map +0 -1
  249. package/dist/core/renderer/rendererfactory.d.ts +0 -66
  250. package/dist/core/renderer/rendererfactory.d.ts.map +0 -1
  251. package/dist/core/renderer/rendererfactory.js +0 -219
  252. package/dist/core/renderer/rendererfactory.js.map +0 -1
  253. package/dist/core/renderer/webglrenderer.d.ts +0 -185
  254. package/dist/core/renderer/webglrenderer.d.ts.map +0 -1
  255. package/dist/core/renderer/webglrenderer.js +0 -1007
  256. package/dist/core/renderer/webglrenderer.js.map +0 -1
  257. package/dist/core/scene/index.d.ts +0 -4
  258. package/dist/core/scene/index.d.ts.map +0 -1
  259. package/dist/core/scene/index.js +0 -4
  260. package/dist/core/scene/index.js.map +0 -1
  261. package/dist/core/scene/node.d.ts +0 -162
  262. package/dist/core/scene/node.d.ts.map +0 -1
  263. package/dist/core/scene/node.js +0 -402
  264. package/dist/core/scene/node.js.map +0 -1
  265. package/dist/core/scene/nodes/artboard.d.ts +0 -42
  266. package/dist/core/scene/nodes/artboard.d.ts.map +0 -1
  267. package/dist/core/scene/nodes/artboard.js +0 -64
  268. package/dist/core/scene/nodes/artboard.js.map +0 -1
  269. package/dist/core/scene/nodes/groupnode.d.ts +0 -10
  270. package/dist/core/scene/nodes/groupnode.d.ts.map +0 -1
  271. package/dist/core/scene/nodes/groupnode.js +0 -12
  272. package/dist/core/scene/nodes/groupnode.js.map +0 -1
  273. package/dist/core/scene/nodes/imagenode.d.ts +0 -38
  274. package/dist/core/scene/nodes/imagenode.d.ts.map +0 -1
  275. package/dist/core/scene/nodes/imagenode.js +0 -77
  276. package/dist/core/scene/nodes/imagenode.js.map +0 -1
  277. package/dist/core/scene/nodes/index.d.ts +0 -5
  278. package/dist/core/scene/nodes/index.d.ts.map +0 -1
  279. package/dist/core/scene/nodes/index.js +0 -5
  280. package/dist/core/scene/nodes/index.js.map +0 -1
  281. package/dist/core/scene/nodes/shapenode.d.ts +0 -76
  282. package/dist/core/scene/nodes/shapenode.d.ts.map +0 -1
  283. package/dist/core/scene/nodes/shapenode.js +0 -212
  284. package/dist/core/scene/nodes/shapenode.js.map +0 -1
  285. package/dist/core/scene/transform.d.ts +0 -27
  286. package/dist/core/scene/transform.d.ts.map +0 -1
  287. package/dist/core/scene/transform.js +0 -52
  288. package/dist/core/scene/transform.js.map +0 -1
  289. package/dist/core/serialization/index.d.ts +0 -3
  290. package/dist/core/serialization/index.d.ts.map +0 -1
  291. package/dist/core/serialization/index.js +0 -2
  292. package/dist/core/serialization/index.js.map +0 -1
  293. package/dist/core/serialization/serializer.d.ts +0 -323
  294. package/dist/core/serialization/serializer.d.ts.map +0 -1
  295. package/dist/core/serialization/serializer.js +0 -1173
  296. package/dist/core/serialization/serializer.js.map +0 -1
  297. package/dist/core/serialization/types.d.ts +0 -242
  298. package/dist/core/serialization/types.d.ts.map +0 -1
  299. package/dist/core/serialization/types.js +0 -1
  300. package/dist/core/serialization/types.js.map +0 -1
  301. package/dist/core/timing/clock.d.ts +0 -43
  302. package/dist/core/timing/clock.d.ts.map +0 -1
  303. package/dist/core/timing/clock.js +0 -78
  304. package/dist/core/timing/clock.js.map +0 -1
  305. package/dist/core/timing/index.d.ts +0 -3
  306. package/dist/core/timing/index.d.ts.map +0 -1
  307. package/dist/core/timing/index.js +0 -3
  308. package/dist/core/timing/index.js.map +0 -1
  309. package/dist/core/timing/scheduler.d.ts +0 -72
  310. package/dist/core/timing/scheduler.d.ts.map +0 -1
  311. package/dist/core/timing/scheduler.js +0 -163
  312. package/dist/core/timing/scheduler.js.map +0 -1
  313. package/dist/index.d.ts.map +0 -1
  314. package/dist/index.js.map +0 -1
  315. package/dist/wrapper/react/index.d.ts +0 -5
  316. package/dist/wrapper/react/index.d.ts.map +0 -1
  317. package/dist/wrapper/react/index.js +0 -3
  318. package/dist/wrapper/react/index.js.map +0 -1
  319. package/dist/wrapper/react/samcan-player.d.ts +0 -26
  320. package/dist/wrapper/react/samcan-player.d.ts.map +0 -1
  321. package/dist/wrapper/react/samcan-player.js +0 -19
  322. package/dist/wrapper/react/samcan-player.js.map +0 -1
  323. package/dist/wrapper/react/use-samcan-player.d.ts +0 -33
  324. package/dist/wrapper/react/use-samcan-player.d.ts.map +0 -1
  325. package/dist/wrapper/react/use-samcan-player.js +0 -65
  326. package/dist/wrapper/react/use-samcan-player.js.map +0 -1
  327. package/readme.md +0 -96
@@ -0,0 +1,962 @@
1
+ type camera = [number, number, number, number];
2
+ type camera_limits = {
3
+ readonly min_zoom: number;
4
+ readonly max_zoom: number;
5
+ readonly min_x: number;
6
+ readonly max_x: number;
7
+ readonly min_y: number;
8
+ readonly max_y: number;
9
+ };
10
+ type zoom_anchor = {
11
+ readonly screen_x: number;
12
+ readonly screen_y: number;
13
+ readonly world_x: number;
14
+ readonly world_y: number;
15
+ };
16
+ declare function create_camera(x?: number, y?: number, zoom?: number, rotation?: number): camera;
17
+ declare function clone_camera(c: camera): camera;
18
+ declare function copy_camera(c: camera, out: camera): camera;
19
+ declare function set_camera(x: number, y: number, zoom: number, rotation: number, out: camera): camera;
20
+ declare function x_of_camera(c: camera): number;
21
+ declare function y_of_camera(c: camera): number;
22
+ declare function zoom_of_camera(c: camera): number;
23
+ declare function rotation_of_camera(c: camera): number;
24
+ declare function position_of_camera(c: camera, out: [number, number]): [number, number];
25
+ declare function pan_camera(c: camera, dx: number, dy: number, out: camera): camera;
26
+ declare function zoom_camera(c: camera, factor: number, out: camera): camera;
27
+ declare function zoom_at_camera(c: camera, factor: number, anchor: zoom_anchor, out: camera): camera;
28
+ declare function rotate_camera(c: camera, angle: number, out: camera): camera;
29
+ declare function clamp_camera(c: camera, limits: camera_limits, out: camera): camera;
30
+ declare function lerp_camera(a: camera, b: camera, t: number, out: camera): camera;
31
+ declare function smooth_damp_camera(current: camera, target: camera, velocity: camera, smooth_time: number, delta_time: number, out: camera): camera;
32
+ declare function equals_camera(c1: camera, c2: camera, epsilon?: number): boolean;
33
+ declare function is_identity_camera(c: camera): boolean;
34
+ type vector2 = [number, number];
35
+ declare function create_vector2(x: number, y: number): vector2;
36
+ declare function zero_vector2(): vector2;
37
+ declare function unit_vector2(): vector2;
38
+ declare function clone_vector2(v: vector2): vector2;
39
+ declare function copy_vector2(v: vector2, out: vector2): vector2;
40
+ declare function set_vector2(x: number, y: number, out: vector2): vector2;
41
+ declare function add_vector2(a: vector2, b: vector2, out: vector2): vector2;
42
+ declare function subtract_vector2(a: vector2, b: vector2, out: vector2): vector2;
43
+ declare function multiply_vector2(a: vector2, b: number, out: vector2): vector2;
44
+ declare function divide_vector2(a: vector2, b: number, out: vector2): vector2;
45
+ declare function normalize_vector2(a: vector2, out: vector2): vector2;
46
+ declare function lerp_vector2(a: vector2, b: vector2, t: number, out: vector2): vector2;
47
+ declare function dot_vector2(a: vector2, b: vector2): number;
48
+ declare function cross_vector2(a: vector2, b: vector2): number;
49
+ declare function length_squared_vector2(a: vector2): number;
50
+ declare function length_vector2(a: vector2): number;
51
+ declare function distance_squared_vector2(a: vector2, b: vector2): number;
52
+ declare function distance_vector2(a: vector2, b: vector2): number;
53
+ declare function is_equal_vector2(a: vector2, b: vector2, epsilon?: number): boolean;
54
+ type rectangle = [number, number, number, number];
55
+ declare function create_rectangle(x?: number, y?: number, width?: number, height?: number): rectangle;
56
+ declare function clone_rectangle(r: rectangle): rectangle;
57
+ declare function from_center_rectangle(center: vector2, width: number, height: number, out: rectangle): rectangle;
58
+ declare function top_of_rectangle(r: rectangle): number;
59
+ declare function left_of_rectangle(r: rectangle): number;
60
+ declare function right_of_rectangle(r: rectangle): number;
61
+ declare function bottom_of_rectangle(r: rectangle): number;
62
+ declare function center_of_rectangle(r: rectangle, out: vector2): vector2;
63
+ declare function width_of_rectangle(r: rectangle): number;
64
+ declare function height_of_rectangle(r: rectangle): number;
65
+ declare function area_of_rectangle(r: rectangle): number;
66
+ declare function set_rectangle(x: number, y: number, width: number, height: number, out: rectangle): rectangle;
67
+ declare function translate_rectangle(r: rectangle, dx: number, dy: number, out: rectangle): rectangle;
68
+ declare function scale_rectangle(r: rectangle, scale: number, out: rectangle): rectangle;
69
+ declare function contains_point_rectangle(r: rectangle, x: number, y: number): boolean;
70
+ declare function contains_rectangle(r1: rectangle, r2: rectangle): boolean;
71
+ declare function intersects_rectangle(r1: rectangle, r2: rectangle): boolean;
72
+ declare function intersection_rectangle(r1: rectangle, r2: rectangle, out: rectangle): rectangle | null;
73
+ declare function union_rectangle(r1: rectangle, r2: rectangle, out: rectangle): rectangle;
74
+ declare function expand_rectangle(r: rectangle, amount: number, out: rectangle): rectangle;
75
+ declare function is_empty_rectangle(r: rectangle): boolean;
76
+ declare function equals_rectangle(r1: rectangle, r2: rectangle): boolean;
77
+ type frustum = [number, number, number, number, number, number];
78
+ declare function create_frustum(left: number, right: number, top: number, bottom: number, near: number, far: number): frustum;
79
+ declare function create_frustum_from_bounds(min_x: number, max_x: number, min_y: number, max_y: number, out: frustum): frustum;
80
+ declare function create_frustum_from_rectangle(view_bounds: rectangle, out: frustum): frustum;
81
+ declare function left_of_frustum(f: frustum): number;
82
+ declare function right_of_frustum(f: frustum): number;
83
+ declare function top_of_frustum(f: frustum): number;
84
+ declare function bottom_of_frustum(f: frustum): number;
85
+ declare function near_of_frustum(f: frustum): number;
86
+ declare function far_of_frustum(f: frustum): number;
87
+ declare function width_of_frustum(f: frustum): number;
88
+ declare function height_of_frustum(f: frustum): number;
89
+ declare function set_frustum_bounds(left: number, right: number, top: number, bottom: number, near: number, far: number, out: frustum): frustum;
90
+ declare function clone_frustum(f: frustum): frustum;
91
+ declare function copy_frustum(f: frustum, out: frustum): frustum;
92
+ declare function create_frustum_from_camera(camera_x: number, camera_y: number, viewport_width: number, viewport_height: number, zoom: number, out: frustum): frustum;
93
+ declare function create_frustum_from_view_matrix(camera_position: vector2, viewport_size: vector2, zoom: number, out: frustum): frustum;
94
+ declare function expand_frustum(f: frustum, margin: number, out: frustum): frustum;
95
+ declare function intersects_frustum_rectangle(f: frustum, r: rectangle): boolean;
96
+ declare function contains_rectangle_frustum(f: frustum, r: rectangle): boolean;
97
+ declare function contains_point_frustum(f: frustum, x: number, y: number): boolean;
98
+ declare function cull_rectangle_frustum(f: frustum, r: rectangle): boolean;
99
+ declare function cull_rectangles_frustum(f: frustum, rectangles: rectangle[]): rectangle[];
100
+ declare function filter_visible_rectangles_frustum(f: frustum, rectangles: rectangle[], out_visible: rectangle[]): rectangle[];
101
+ declare function count_visible_rectangles_frustum(f: frustum, rectangles: rectangle[]): number;
102
+ declare function is_empty_frustum(f: frustum): boolean;
103
+ declare function equals_frustum(f1: frustum, f2: frustum): boolean;
104
+ declare function area_of_frustum(f: frustum): number;
105
+ declare function center_of_frustum(f: frustum, out: vector2): vector2;
106
+ declare function translate_frustum(f: frustum, dx: number, dy: number, out: frustum): frustum;
107
+ declare function intersection_frustum_rectangle(f: frustum, r: rectangle, out: rectangle): rectangle | null;
108
+ type transform = [number, number, number, number, number, number];
109
+ declare function create_transform(a?: number, b?: number, c?: number, d?: number, tx?: number, ty?: number): transform;
110
+ declare function clone_transform(t: transform): transform;
111
+ declare function set_transform(a: number, b: number, c: number, d: number, tx: number, ty: number, out: transform): transform;
112
+ declare function copy_transform(t: transform, out: transform): transform;
113
+ declare function identity_transform(): transform;
114
+ declare function set_identity_transform(out: transform): transform;
115
+ declare function translate_transform(x: number, y: number): transform;
116
+ declare function scale_transform(sx: number, sy?: number): transform;
117
+ declare function rotate_transform(angle: number): transform;
118
+ declare function from_trs_transform(translation: vector2, rotation: number, scale: vector2): transform;
119
+ declare function multiply_transform(t1: transform, t2: transform, out: transform): transform;
120
+ declare function determinant_transform(t: transform): number;
121
+ declare function invert_transform(t: transform, out: transform): transform | null;
122
+ declare function transform_point_transform(t: transform, point: vector2, out: vector2): vector2;
123
+ declare function transform_vector_transform(t: transform, vector: vector2, out: vector2): vector2;
124
+ declare function append_translation_transform(t: transform, x: number, y: number, out: transform): transform;
125
+ declare function append_rotation_transform(t: transform, angle: number, out: transform): transform;
126
+ declare function append_scale_transform(t: transform, sx: number, sy: number | undefined, out: transform): transform;
127
+ declare function prepend_translation_transform(x: number, y: number, t: transform, out: transform): transform;
128
+ declare function prepend_rotation_transform(angle: number, t: transform, out: transform): transform;
129
+ declare function prepend_scale_transform(sx: number, sy: number | undefined, t: transform, out: transform): transform;
130
+ declare function equals_transform(t1: transform, t2: transform, epsilon?: number): boolean;
131
+ declare function is_identity_transform(t: transform, epsilon?: number): boolean;
132
+ type viewport = [number, number, number];
133
+ declare function world_to_screen_camera(c: camera, v: viewport, world_pos: vector2, out: vector2): vector2;
134
+ declare function screen_to_world_camera(c: camera, v: viewport, screen_pos: vector2, out: vector2): vector2;
135
+ declare function view_transform_camera(c: camera, out: transform): transform;
136
+ declare function inverse_view_transform_camera(c: camera, out: transform): transform;
137
+ declare function camera_frustum(c: camera, v: viewport, out: frustum): frustum;
138
+ declare function fit_camera_to_bounds(bounds: rectangle, v: viewport, margin: number | undefined, out: camera): camera;
139
+ declare function contains_point_camera_frustum(c: camera, v: viewport, world_x: number, world_y: number): boolean;
140
+ declare function width_of_camera_world(c: camera, v: viewport): number;
141
+ declare function height_of_camera_world(c: camera, v: viewport): number;
142
+ declare function pixel_size_of_camera(c: camera): number;
143
+ declare function pixel_ratio_of_viewport(v: viewport): number;
144
+ declare function device_width_of_viewport(v: viewport): number;
145
+ declare function device_height_of_viewport(v: viewport): number;
146
+ declare function world_to_device_camera(c: camera, v: viewport, world_pos: vector2, out: vector2): vector2;
147
+ declare function device_to_world_camera(c: camera, v: viewport, device_pos: vector2, out: vector2): vector2;
148
+ type image_asset = {
149
+ id: string;
150
+ src: string;
151
+ width: number;
152
+ height: number;
153
+ };
154
+ declare function create_image_asset(id: string, src: string, width?: number, height?: number): image_asset;
155
+ type color = [number, number, number, number];
156
+ declare function create_color(r?: number, g?: number, b?: number, a?: number): color;
157
+ declare function clone_color(c: color): color;
158
+ declare function set_color(r: number, g: number, b: number, a: number | undefined, out: color): color;
159
+ declare function copy_color(c: color, out: color): color;
160
+ declare function from_rgb_color(r: number, g: number, b: number, a?: number): color;
161
+ declare function from_hex_color(hex: string): color;
162
+ declare function to_rgba_string_color(c: color): string;
163
+ declare function to_hex_string_color(c: color): string;
164
+ declare function lerp_color(c1: color, c2: color, t: number, out: color): color;
165
+ declare function equals_color(c1: color, c2: color, epsilon?: number): boolean;
166
+ declare function white_color(): color;
167
+ declare function black_color(): color;
168
+ declare function transparent_color(): color;
169
+ type spline_segment = {
170
+ a: number;
171
+ b: number;
172
+ c: number;
173
+ d: number;
174
+ x_start: number;
175
+ x_end: number;
176
+ };
177
+ type spline = {
178
+ segments_x: spline_segment[];
179
+ segments_y: spline_segment[];
180
+ point_count: number;
181
+ };
182
+ declare function create_spline(): spline;
183
+ declare function clone_spline(s: spline): spline;
184
+ declare function build_natural_spline_1d(points: number[], t_values: number[]): spline_segment[];
185
+ declare function build_natural_spline_from_points(points: vector2[], spline: spline): spline;
186
+ declare function evaluate_spline_segment(segment: spline_segment, t: number): number;
187
+ declare function evaluate_spline_at_t(spline: spline, t: number, out: vector2): vector2 | null;
188
+ declare function evaluate_spline_at_points(spline: spline, t_values: number[], out_points: vector2[]): number;
189
+ declare function get_spline_length(spline: spline, steps?: number): number;
190
+ declare function simplify_points_for_spline(points: vector2[], tolerance?: number): vector2[];
191
+ declare const element_type_stroke = 0;
192
+ declare const element_type_shape = 1;
193
+ declare const element_type_image = 2;
194
+ declare const element_type_text = 3;
195
+ type stroke_element = {
196
+ type: typeof element_type_stroke;
197
+ id: string;
198
+ bounds: rectangle;
199
+ z_index: number;
200
+ layer_id: string;
201
+ group_id: string | null;
202
+ points: vector2[];
203
+ pressure: number[] | null;
204
+ color: color;
205
+ width: number;
206
+ simplified_points: vector2[] | null;
207
+ spline: spline | null;
208
+ };
209
+ declare const shape_type_rectangle = 0;
210
+ declare const shape_type_ellipse = 1;
211
+ declare const shape_type_line = 2;
212
+ declare const shape_type_arrow = 3;
213
+ declare const shape_type_frame = 4;
214
+ type shape_element = {
215
+ type: typeof element_type_shape;
216
+ id: string;
217
+ bounds: rectangle;
218
+ z_index: number;
219
+ layer_id: string;
220
+ group_id: string | null;
221
+ shape_type: number;
222
+ fill_color: color | null;
223
+ stroke_color: color | null;
224
+ stroke_width: number;
225
+ start_point: vector2 | null;
226
+ end_point: vector2 | null;
227
+ };
228
+ type image_element = {
229
+ type: typeof element_type_image;
230
+ id: string;
231
+ bounds: rectangle;
232
+ z_index: number;
233
+ layer_id: string;
234
+ group_id: string | null;
235
+ asset_id: string | null;
236
+ src: string;
237
+ original_width: number;
238
+ original_height: number;
239
+ opacity: number;
240
+ loaded: boolean;
241
+ load_error: boolean;
242
+ bitmap: ImageBitmap | HTMLImageElement | null;
243
+ };
244
+ declare const text_align_left = 0;
245
+ declare const text_align_center = 1;
246
+ declare const text_align_right = 2;
247
+ type text_element = {
248
+ type: typeof element_type_text;
249
+ id: string;
250
+ bounds: rectangle;
251
+ z_index: number;
252
+ layer_id: string;
253
+ group_id: string | null;
254
+ content: string;
255
+ font_family: string;
256
+ font_size: number;
257
+ color: color;
258
+ align: number;
259
+ };
260
+ type element = stroke_element | shape_element | image_element | text_element;
261
+ declare function create_stroke_element(id: string, bounds: rectangle, z_index: number, layer_id: string, points: vector2[], pressure: number[] | null, color: color, width: number, group_id?: string | null): stroke_element;
262
+ declare function create_shape_element(id: string, bounds: rectangle, z_index: number, layer_id: string, shape_type: number, fill_color: color | null, stroke_color: color | null, stroke_width: number, start_point: vector2 | null, end_point: vector2 | null, group_id?: string | null): shape_element;
263
+ declare function create_image_element(id: string, bounds: rectangle, z_index: number, layer_id: string, src: string, original_width: number, original_height: number, opacity: number, group_id?: string | null, asset_id?: string | null): image_element;
264
+ declare function create_text_element(id: string, bounds: rectangle, z_index: number, layer_id: string, content: string, font_family: string, font_size: number, color: color, align: number, group_id?: string | null): text_element;
265
+ declare function clone_element(el: element): element;
266
+ declare function id_of_element(el: element): string;
267
+ declare function bounds_of_element(el: element): rectangle;
268
+ declare function z_index_of_element(el: element): number;
269
+ declare function layer_id_of_element(el: element): string;
270
+ declare function type_of_element(el: element): number;
271
+ declare function update_element_bounds(el: element, bounds: rectangle): element;
272
+ declare function update_element_z_index(el: element, z_index: number): element;
273
+ declare function update_element_layer_id(el: element, layer_id: string): element;
274
+ declare function update_stroke_points(el: stroke_element, points: vector2[]): stroke_element;
275
+ declare function update_stroke_simplified_points(el: stroke_element, simplified: vector2[] | null): stroke_element;
276
+ declare function update_stroke_spline(el: stroke_element, spline_data: spline | null): stroke_element;
277
+ declare function update_image_loaded(el: image_element, loaded: boolean, bitmap: ImageBitmap | HTMLImageElement | null, load_error?: boolean): image_element;
278
+ declare function update_image_asset_id(el: image_element, asset_id: string | null): image_element;
279
+ declare function update_text_content(el: text_element, content: string): text_element;
280
+ declare function equals_element_identity(a: element, b: element): boolean;
281
+ type layer = {
282
+ id: string;
283
+ name: string;
284
+ visible: boolean;
285
+ locked: boolean;
286
+ opacity: number;
287
+ element_ids: string[];
288
+ };
289
+ declare function create_layer(id: string, name: string, visible?: boolean, locked?: boolean, opacity?: number): layer;
290
+ declare function clone_layer(l: layer): layer;
291
+ declare function id_of_layer(l: layer): string;
292
+ declare function name_of_layer(l: layer): string;
293
+ declare function is_visible_layer(l: layer): boolean;
294
+ declare function is_locked_layer(l: layer): boolean;
295
+ declare function opacity_of_layer(l: layer): number;
296
+ declare function element_ids_of_layer(l: layer): readonly string[];
297
+ declare function element_count_of_layer(l: layer): number;
298
+ declare function update_layer_name(l: layer, name: string): layer;
299
+ declare function update_layer_visibility(l: layer, visible: boolean): layer;
300
+ declare function update_layer_locked(l: layer, locked: boolean): layer;
301
+ declare function update_layer_opacity(l: layer, opacity: number): layer;
302
+ declare function add_element_id_to_layer(l: layer, element_id: string): layer;
303
+ declare function remove_element_id_from_layer(l: layer, element_id: string): layer;
304
+ declare function has_element_id_in_layer(l: layer, element_id: string): boolean;
305
+ declare function reorder_element_ids_in_layer(l: layer, element_ids: string[]): layer;
306
+ declare function equals_layer(a: layer, b: layer): boolean;
307
+ type document = {
308
+ id: string;
309
+ elements: Map<string, element>;
310
+ layers: layer[];
311
+ active_layer_id: string;
312
+ assets: Map<string, image_asset>;
313
+ bounds: rectangle;
314
+ element_count: number;
315
+ };
316
+ declare function create_document(id: string, active_layer_id: string): document;
317
+ declare function clone_document(doc: document): document;
318
+ declare function id_of_document(doc: document): string;
319
+ declare function elements_map_of_document(doc: document): Map<string, element>;
320
+ declare function layers_of_document(doc: document): readonly layer[];
321
+ declare function active_layer_id_of_document(doc: document): string;
322
+ declare function assets_of_document(doc: document): Map<string, image_asset>;
323
+ declare function bounds_of_document(doc: document): rectangle;
324
+ declare function element_count_of_document(doc: document): number;
325
+ declare function get_element_by_id_document(doc: document, element_id: string): element | null;
326
+ declare function get_layer_by_id_document(doc: document, layer_id: string): layer | null;
327
+ declare function add_element_document(doc: document, el: element): document;
328
+ declare function remove_element_document(doc: document, element_id: string): document;
329
+ declare function update_element_document(doc: document, element_id: string, new_element: element): document;
330
+ declare function add_layer_document(doc: document, layer: layer): document;
331
+ declare function remove_layer_document(doc: document, layer_id: string): document;
332
+ declare function reorder_layers_document(doc: document, layer_ids: string[]): document;
333
+ declare function set_active_layer_document(doc: document, layer_id: string): document;
334
+ declare function get_elements_in_layer_document(doc: document, layer_id: string): element[];
335
+ declare function get_all_elements_document(doc: document): element[];
336
+ declare function recalculate_bounds_document(doc: document): document;
337
+ declare function clear_document(doc: document): document;
338
+ declare function add_image_asset_document(doc: document, asset: image_asset): document;
339
+ declare function get_image_asset_document(doc: document, asset_id: string): image_asset | null;
340
+ declare function remove_image_asset_document(doc: document, asset_id: string): document;
341
+ type bezier_cubic = [vector2, vector2, vector2, vector2];
342
+ type bezier_quadratic = [vector2, vector2, vector2];
343
+ declare function create_cubic_bezier(p0: vector2, p1: vector2, p2: vector2, p3: vector2): bezier_cubic;
344
+ declare function create_quadratic_bezier(p0: vector2, p1: vector2, p2: vector2): bezier_quadratic;
345
+ declare function clone_cubic_bezier(b: bezier_cubic): bezier_cubic;
346
+ declare function clone_quadratic_bezier(b: bezier_quadratic): bezier_quadratic;
347
+ declare function evaluate_cubic_bezier(b: bezier_cubic, t: number, out: vector2): vector2;
348
+ declare function evaluate_quadratic_bezier(b: bezier_quadratic, t: number, out: vector2): vector2;
349
+ declare function derivative_cubic_bezier(b: bezier_cubic, t: number, out: vector2): vector2;
350
+ declare function derivative_quadratic_bezier(b: bezier_quadratic, t: number, out: vector2): vector2;
351
+ declare function length_cubic_bezier(b: bezier_cubic, steps?: number): number;
352
+ declare function length_quadratic_bezier(b: bezier_quadratic, steps?: number): number;
353
+ declare function subdivide_cubic_bezier(b: bezier_cubic, t: number, out1: bezier_cubic, out2: bezier_cubic): void;
354
+ declare function closest_point_cubic_bezier(b: bezier_cubic, point: vector2, steps?: number): number;
355
+ declare function from_points_cubic_bezier(points: vector2[], out: bezier_cubic[]): number;
356
+ type circle = [number, number, number];
357
+ declare function create_circle(x?: number, y?: number, radius?: number): circle;
358
+ declare function clone_circle(c: circle): circle;
359
+ declare function set_circle(x: number, y: number, radius: number, out: circle): circle;
360
+ declare function copy_circle(c: circle, out: circle): circle;
361
+ declare function center_of_circle(c: circle, out: vector2): vector2;
362
+ declare function radius_of_circle(c: circle): number;
363
+ declare function diameter_of_circle(c: circle): number;
364
+ declare function area_of_circle(c: circle): number;
365
+ declare function circumference_of_circle(c: circle): number;
366
+ declare function contains_point_circle(c: circle, x: number, y: number): boolean;
367
+ declare function contains_circle(c1: circle, c2: circle): boolean;
368
+ declare function intersects_circle(c1: circle, c2: circle): boolean;
369
+ declare function intersects_rectangle_circle(c: circle, r: rectangle): boolean;
370
+ declare function distance_to_circle(c1: circle, c2: circle): number;
371
+ declare function translate_circle(c: circle, dx: number, dy: number, out: circle): circle;
372
+ declare function scale_circle(c: circle, scale: number, out: circle): circle;
373
+ declare function bounding_rectangle_circle(c: circle, out: rectangle): rectangle;
374
+ declare function equals_circle(c1: circle, c2: circle, epsilon?: number): boolean;
375
+ declare function is_empty_circle(c: circle): boolean;
376
+ type lod_level = {
377
+ readonly level: number;
378
+ readonly min_distance: number;
379
+ readonly max_distance: number;
380
+ readonly detail_factor: number;
381
+ };
382
+ type lod_config = {
383
+ readonly levels: readonly lod_level[];
384
+ readonly max_level: number;
385
+ readonly min_level: number;
386
+ readonly base_distance: number;
387
+ readonly distance_multiplier: number;
388
+ };
389
+ type lod_result = {
390
+ level: number;
391
+ blend_factor: number;
392
+ next_level: number;
393
+ distance: number;
394
+ screen_error: number;
395
+ };
396
+ type lod_viewport = {
397
+ readonly position: vector2;
398
+ readonly zoom_level: number;
399
+ readonly screen_width: number;
400
+ readonly screen_height: number;
401
+ readonly field_of_view: number;
402
+ };
403
+ declare function create_lod_level(level: number, min_distance: number, max_distance: number, detail_factor: number): lod_level;
404
+ declare function create_lod_config(levels: lod_level[], base_distance?: number, distance_multiplier?: number): lod_config;
405
+ declare function create_lod_result(): lod_result;
406
+ declare function create_lod_viewport(position: vector2, zoom_level: number, screen_width: number, screen_height: number, field_of_view?: number): lod_viewport;
407
+ declare function clone_lod_viewport(viewport: lod_viewport): lod_viewport;
408
+ declare function copy_lod_viewport(viewport: lod_viewport, out_viewport: vector2, out_zoom: {
409
+ zoom_level: number;
410
+ }, out_screen: {
411
+ screen_width: number;
412
+ screen_height: number;
413
+ }, out_fov: {
414
+ field_of_view: number;
415
+ }): void;
416
+ declare function distance_from_viewport(viewport: lod_viewport, object_position: vector2): number;
417
+ declare function zoom_adjusted_distance(distance: number, zoom_level: number): number;
418
+ declare function screen_space_distance(distance: number, viewport: lod_viewport): number;
419
+ declare function calculate_lod_distance(object_position: vector2, viewport: lod_viewport): number;
420
+ declare function world_to_screen_size(world_size: number, distance: number, viewport: lod_viewport): number;
421
+ declare function screen_to_world_size(screen_size: number, distance: number, viewport: lod_viewport): number;
422
+ declare function select_discrete_lod_level(distance: number, config: lod_config): number;
423
+ declare function select_lod_by_zoom(object_position: vector2, viewport: lod_viewport, config: lod_config): number;
424
+ declare function select_lod_by_screen_size(object_world_size: number, object_position: vector2, viewport: lod_viewport, config: lod_config, pixel_threshold?: number): number;
425
+ declare function find_lod_level_by_index(config: lod_config, level_index: number): lod_level | null;
426
+ declare function get_detail_factor_for_level(config: lod_config, level_index: number): number;
427
+ declare function calculate_continuous_lod(distance: number, config: lod_config, out_result: lod_result): lod_result;
428
+ declare function interpolate_lod_detail_factor(result: lod_result, config: lod_config): number;
429
+ declare function calculate_smooth_lod_transition(object_position: vector2, viewport: lod_viewport, config: lod_config, out_result: lod_result): lod_result;
430
+ declare function lerp_lod_values(value_a: number, value_b: number, blend_factor: number): number;
431
+ declare function smooth_step_transition(t: number): number;
432
+ declare function smoother_step_transition(t: number): number;
433
+ declare function calculate_alpha_blend_factor(result: lod_result, transition_distance?: number): number;
434
+ declare function calculate_hysteresis_lod(current_lod: number, target_lod: number, distance: number, config: lod_config, hysteresis_factor?: number): number;
435
+ declare function calculate_temporal_lod_blend(previous_result: lod_result, current_result: lod_result, delta_time: number, blend_speed?: number): number;
436
+ declare function is_lod_transition_stable(result: lod_result, stability_threshold?: number): boolean;
437
+ declare function calculate_screen_space_error(geometric_error: number, distance: number, viewport: lod_viewport): number;
438
+ declare function calculate_geometric_error_for_lod(config: lod_config, level_index: number, base_error?: number): number;
439
+ declare function select_lod_by_screen_error(object_position: vector2, viewport: lod_viewport, config: lod_config, max_screen_error?: number, base_geometric_error?: number): number;
440
+ declare function calculate_pixel_density_lod(object_bounds: rectangle, object_position: vector2, viewport: lod_viewport, config: lod_config, target_pixels_per_unit?: number): number;
441
+ declare function update_lod_result_screen_error(result: lod_result, viewport: lod_viewport, config: lod_config, base_geometric_error: number | undefined, out_result: lod_result): lod_result;
442
+ declare function create_adaptive_lod_config(max_levels?: number, base_distance?: number, distance_multiplier?: number, detail_falloff?: number): lod_config;
443
+ type quadtree_point = [number, number, unknown];
444
+ type quadtree_node = {
445
+ readonly boundary: rectangle;
446
+ readonly points: readonly quadtree_point[];
447
+ readonly children: readonly quadtree_node[] | null;
448
+ readonly capacity: number;
449
+ readonly depth: number;
450
+ };
451
+ type quadtree = {
452
+ readonly root: quadtree_node;
453
+ readonly capacity: number;
454
+ readonly max_depth: number;
455
+ };
456
+ declare function create_quadtree_point(x: number, y: number, data?: unknown): quadtree_point;
457
+ declare function x_of_quadtree_point(point: quadtree_point): number;
458
+ declare function y_of_quadtree_point(point: quadtree_point): number;
459
+ declare function data_of_quadtree_point(point: quadtree_point): unknown;
460
+ declare function create_quadtree_node(boundary: rectangle, capacity?: number, depth?: number): quadtree_node;
461
+ declare function create_quadtree(boundary: rectangle, capacity?: number, max_depth?: number): quadtree;
462
+ declare function is_leaf_quadtree_node(node: quadtree_node): boolean;
463
+ declare function point_count_quadtree_node(node: quadtree_node): number;
464
+ declare function subdivide_quadtree_node(node: quadtree_node, max_depth: number): quadtree_node;
465
+ declare function insert_quadtree_node(node: quadtree_node, point: quadtree_point, max_depth: number): quadtree_node | null;
466
+ declare function insert_quadtree(tree: quadtree, point: quadtree_point): quadtree;
467
+ declare function query_range_quadtree_node(node: quadtree_node, range: rectangle, out_results: quadtree_point[]): quadtree_point[];
468
+ declare function query_range_quadtree(tree: quadtree, range: rectangle, out_results: quadtree_point[]): quadtree_point[];
469
+ declare function query_radius_quadtree_node(node: quadtree_node, center_x: number, center_y: number, radius: number, out_results: quadtree_point[]): quadtree_point[];
470
+ declare function query_radius_quadtree(tree: quadtree, center_x: number, center_y: number, radius: number, out_results: quadtree_point[]): quadtree_point[];
471
+ declare function find_nearest_quadtree(tree: quadtree, x: number, y: number, max_distance?: number): quadtree_point | null;
472
+ declare function find_nearest_quadtree_node(node: quadtree_node, x: number, y: number, max_distance?: number): quadtree_point | null;
473
+ declare function remove_quadtree_node(node: quadtree_node, point: quadtree_point): quadtree_node;
474
+ declare function remove_quadtree(tree: quadtree, point: quadtree_point): quadtree;
475
+ declare function collect_all_points_quadtree_node(node: quadtree_node, out_points: quadtree_point[]): quadtree_point[];
476
+ declare function clear_quadtree(tree: quadtree): quadtree;
477
+ declare function point_count_quadtree(tree: quadtree): number;
478
+ declare function depth_of_quadtree_node(node: quadtree_node): number;
479
+ declare function depth_of_quadtree(tree: quadtree): number;
480
+ declare function is_empty_quadtree(tree: quadtree): boolean;
481
+ declare function bounds_of_quadtree(tree: quadtree, out_bounds: rectangle): rectangle;
482
+ declare function find_k_nearest_quadtree(tree: quadtree, x: number, y: number, k: number, max_distance: number, out_results: quadtree_point[]): quadtree_point[];
483
+ declare function detect_collisions_quadtree(tree: quadtree, point: quadtree_point, radius: number, out_collisions: quadtree_point[]): quadtree_point[];
484
+ declare function detect_collisions_rectangle_quadtree(tree: quadtree, rect: rectangle, out_collisions: quadtree_point[]): quadtree_point[];
485
+ type simplify_result = {
486
+ points: vector2[];
487
+ original_count: number;
488
+ simplified_count: number;
489
+ reduction_ratio: number;
490
+ };
491
+ declare function create_simplify_result(): simplify_result;
492
+ declare function clone_simplify_result(result: simplify_result): simplify_result;
493
+ declare function copy_simplify_result(result: simplify_result, out: simplify_result): simplify_result;
494
+ declare function perpendicular_distance_to_line(point: vector2, line_start: vector2, line_end: vector2): number;
495
+ declare function find_farthest_point(points: vector2[], start_index: number, end_index: number, out_result: {
496
+ index: number;
497
+ distance: number;
498
+ }): {
499
+ index: number;
500
+ distance: number;
501
+ };
502
+ declare function simplify_douglas_peucker(points: vector2[], epsilon: number, out_points: vector2[]): number;
503
+ declare function simplify_douglas_peucker_detailed(points: vector2[], epsilon: number, out_result: simplify_result): simplify_result;
504
+ declare function estimate_epsilon_from_points(points: vector2[], tolerance_factor?: number): number;
505
+ declare function polyline_length(points: vector2[]): number;
506
+ declare function polyline_area_under_curve(points: vector2[]): number;
507
+ declare function validate_simplified_polyline(points: vector2[]): boolean;
508
+ declare const path_move = 0;
509
+ declare const path_line = 1;
510
+ declare const path_cubic = 2;
511
+ declare const path_close = 3;
512
+ type path_command_move = [typeof path_move, number, number];
513
+ type path_command_line = [typeof path_line, number, number];
514
+ type path_command_cubic = [typeof path_cubic, number, number, number, number, number, number];
515
+ type path_command_close = [typeof path_close];
516
+ type path_command = path_command_move | path_command_line | path_command_cubic | path_command_close;
517
+ type path = {
518
+ readonly commands: readonly path_command[];
519
+ readonly bounds: rectangle;
520
+ };
521
+ declare function create_path(): path;
522
+ declare function clone_path(p: path): path;
523
+ declare function move_to_path(p: path, x: number, y: number): path;
524
+ declare function line_to_path(p: path, x: number, y: number): path;
525
+ declare function cubic_to_path(p: path, c1x: number, c1y: number, c2x: number, c2y: number, x: number, y: number): path;
526
+ declare function close_path(p: path): path;
527
+ declare function bounds_of_path(p: path): rectangle;
528
+ declare function is_empty_path(p: path): boolean;
529
+ declare function command_count_of_path(p: path): number;
530
+ declare function transform_path(p: path, t: transform, out: path): path;
531
+ declare function hash_of_path(p: path): number;
532
+ declare function from_rectangle_path(r: rectangle): path;
533
+ declare function from_circle_path(c: circle, segments: number): path;
534
+ declare function from_polyline_path(points: readonly vector2[], closed: boolean): path;
535
+ type draw_style = {
536
+ readonly fill: color | null;
537
+ readonly stroke: color | null;
538
+ readonly stroke_width: number;
539
+ readonly line_cap: number;
540
+ readonly line_join: number;
541
+ readonly miter_limit: number;
542
+ readonly alpha: number;
543
+ };
544
+ declare const line_cap_butt = 0;
545
+ declare const line_cap_round = 1;
546
+ declare const line_cap_square = 2;
547
+ declare const line_join_miter = 0;
548
+ declare const line_join_round = 1;
549
+ declare const line_join_bevel = 2;
550
+ declare function create_draw_style(): draw_style;
551
+ declare function clone_draw_style(s: draw_style): draw_style;
552
+ declare function copy_draw_style(s: draw_style, out: draw_style): draw_style;
553
+ declare function set_draw_style(fill: color | null, stroke: color | null, stroke_width: number, line_cap: number, line_join: number, miter_limit: number, alpha: number, out: draw_style): draw_style;
554
+ declare function with_fill_draw_style(s: draw_style, fill: color | null, out: draw_style): draw_style;
555
+ declare function with_stroke_draw_style(s: draw_style, stroke: color | null, stroke_width: number, out: draw_style): draw_style;
556
+ declare function with_alpha_draw_style(s: draw_style, alpha: number, out: draw_style): draw_style;
557
+ declare function with_line_cap_draw_style(s: draw_style, line_cap: number, out: draw_style): draw_style;
558
+ declare function with_line_join_draw_style(s: draw_style, line_join: number, miter_limit: number, out: draw_style): draw_style;
559
+ declare function equals_draw_style(a: draw_style, b: draw_style): boolean;
560
+ declare const renderer_kind_canvas = 0;
561
+ declare const renderer_kind_webgl = 1;
562
+ type renderer_config = {
563
+ readonly prefer_webgl: boolean;
564
+ readonly path_cache_size: number;
565
+ };
566
+ type image_source = HTMLImageElement | HTMLCanvasElement | ImageBitmap;
567
+ type renderer = {
568
+ readonly kind: number;
569
+ readonly width: number;
570
+ readonly height: number;
571
+ readonly pixel_ratio: number;
572
+ begin_frame: () => void;
573
+ end_frame: () => void;
574
+ set_transform: (t: transform) => void;
575
+ reset_transform: () => void;
576
+ save: () => void;
577
+ restore: () => void;
578
+ draw_path: (p: path, s: draw_style) => void;
579
+ draw_rectangle: (r: rectangle, s: draw_style) => void;
580
+ draw_circle: (c: circle, s: draw_style) => void;
581
+ draw_line: (a: vector2, b: vector2, s: draw_style) => void;
582
+ draw_polyline: (points: readonly vector2[], s: draw_style) => void;
583
+ draw_image: (image: image_source, r: rectangle, opacity: number, version?: number) => void;
584
+ clip_rectangle: (r: rectangle) => void;
585
+ clear: (c: color) => void;
586
+ resize: (width: number, height: number, pixel_ratio: number) => void;
587
+ dispose: () => void;
588
+ };
589
+ declare function create_renderer_config(): renderer_config;
590
+ declare function create_renderer(canvas: HTMLCanvasElement, config: renderer_config): renderer | null;
591
+ declare function create_renderer_canvas(canvas: HTMLCanvasElement, config: renderer_config): renderer | null;
592
+ declare function create_renderer_webgl(canvas: HTMLCanvasElement, config: renderer_config): renderer | null;
593
+ type spatial_index = {
594
+ readonly quadtree: quadtree;
595
+ readonly bounds_map: Map<string, rectangle>;
596
+ readonly element_positions: Map<string, vector2>;
597
+ readonly config: spatial_index_config;
598
+ readonly deletion_count: number;
599
+ };
600
+ type spatial_index_config = {
601
+ readonly capacity: number;
602
+ readonly max_depth: number;
603
+ readonly world_bounds: rectangle;
604
+ readonly auto_expand: boolean;
605
+ readonly rebuild_dirty_ratio: number;
606
+ };
607
+ type spatial_query_result = {
608
+ readonly id: string;
609
+ readonly bounds: rectangle;
610
+ };
611
+ type spatial_index_stats = {
612
+ readonly element_count: number;
613
+ readonly tree_depth: number;
614
+ readonly node_count: number;
615
+ };
616
+ declare function create_spatial_index_config(world_bounds: rectangle, capacity?: number, max_depth?: number, auto_expand?: boolean, rebuild_dirty_ratio?: number): spatial_index_config;
617
+ declare function create_spatial_index(config: spatial_index_config): spatial_index;
618
+ declare function create_spatial_index_from_document(doc: {
619
+ elements: Map<string, element>;
620
+ }, config: spatial_index_config): spatial_index;
621
+ declare function insert_spatial_index(index: spatial_index, id: string, bounds: rectangle): spatial_index;
622
+ declare function remove_spatial_index(index: spatial_index, id: string): spatial_index;
623
+ declare function update_spatial_index(index: spatial_index, id: string, new_bounds: rectangle): spatial_index;
624
+ declare function clear_spatial_index(index: spatial_index): spatial_index;
625
+ declare function rebuild_spatial_index(index: spatial_index, elements: Map<string, element>): spatial_index;
626
+ declare function query_range_spatial_index(index: spatial_index, bounds: rectangle, out_results: spatial_query_result[]): spatial_query_result[];
627
+ declare function query_point_spatial_index(index: spatial_index, x: number, y: number, out_results: spatial_query_result[]): spatial_query_result[];
628
+ declare function query_radius_spatial_index(index: spatial_index, x: number, y: number, radius: number, out_results: spatial_query_result[]): spatial_query_result[];
629
+ declare function query_frustum_spatial_index(index: spatial_index, frustum_bounds: frustum, out_results: spatial_query_result[]): spatial_query_result[];
630
+ declare function query_visible_elements_spatial_index(index: spatial_index, viewport_bounds: rectangle, margin: number | undefined, out_results: spatial_query_result[]): spatial_query_result[];
631
+ declare function count_spatial_index(index: spatial_index): number;
632
+ declare function bounds_of_spatial_index(index: spatial_index, out: rectangle): rectangle;
633
+ declare function has_element_spatial_index(index: spatial_index, id: string): boolean;
634
+ declare function get_element_bounds_spatial_index(index: spatial_index, id: string): rectangle | null;
635
+ declare function stats_of_spatial_index(index: spatial_index): spatial_index_stats;
636
+ type stroke_style = {
637
+ color: color;
638
+ width: number;
639
+ opacity: number;
640
+ pressure_sensitivity: number;
641
+ };
642
+ type stroke_point = {
643
+ position: vector2;
644
+ pressure: number;
645
+ timestamp: number;
646
+ };
647
+ type live_stroke = {
648
+ id: string;
649
+ points: stroke_point[];
650
+ style: stroke_style;
651
+ stabilizer_state: stabilizer_state;
652
+ };
653
+ type stroke = {
654
+ id: string;
655
+ bounds: rectangle;
656
+ z_index: number;
657
+ layer_id: string;
658
+ points: vector2[];
659
+ pressure: number[] | null;
660
+ style: stroke_style;
661
+ simplified_points: vector2[];
662
+ spline: spline | null;
663
+ path_cache: path_command[] | null;
664
+ };
665
+ type stabilizer_state = {
666
+ history: vector2[];
667
+ smoothing_factor: number;
668
+ };
669
+ declare const default_stroke_style: stroke_style;
670
+ declare function create_stroke_style(color: color, width: number, opacity?: number, pressure_sensitivity?: number): stroke_style;
671
+ declare function clone_stroke_style(s: stroke_style): stroke_style;
672
+ declare const default_smoothing_factor = .3;
673
+ declare const default_stabilizer_history_size = 5;
674
+ declare function create_stabilizer(smoothing_factor?: number): stabilizer_state;
675
+ declare function stabilize_point(state: stabilizer_state, raw: vector2, out: vector2): vector2;
676
+ declare function reset_stabilizer(state: stabilizer_state): void;
677
+ declare function get_stabilized_history(state: stabilizer_state): readonly vector2[];
678
+ declare function generate_stroke_id(): string;
679
+ declare function create_live_stroke(style: stroke_style, id?: string): live_stroke;
680
+ declare function add_point_live_stroke(live: live_stroke, position: vector2, pressure?: number, timestamp?: number): live_stroke;
681
+ declare function add_raw_point_live_stroke(live: live_stroke, raw_position: vector2, pressure?: number, timestamp?: number): live_stroke;
682
+ declare function get_points_from_live_stroke(live: live_stroke): vector2[];
683
+ declare function get_pressure_from_live_stroke(live: live_stroke): number[] | null;
684
+ declare function render_live_stroke(live: live_stroke, renderer: renderer): void;
685
+ declare function finalize_live_stroke(live: live_stroke, z_index: number, layer_id: string): {
686
+ points: vector2[];
687
+ pressure: number[] | null;
688
+ style: stroke_style;
689
+ id: string;
690
+ z_index: number;
691
+ layer_id: string;
692
+ };
693
+ declare const default_simplify_epsilon = 1;
694
+ declare const default_lod_simplify_factor = 3;
695
+ declare function simplify_stroke_points(points: vector2[], epsilon: number | undefined, out: vector2[]): number;
696
+ declare function simplify_stroke_points_auto(points: vector2[], out: vector2[]): number;
697
+ declare function fit_spline_to_stroke(points: vector2[], out_spline: spline): spline;
698
+ declare function compute_stroke_bounds(points: vector2[], width: number, out: rectangle): rectangle;
699
+ declare function process_stroke(points: vector2[], pressure: number[] | null, style: stroke_style, out_simplified: vector2[], out_spline: spline): {
700
+ simplified: vector2[];
701
+ spline: spline;
702
+ };
703
+ declare function get_simplified_for_lod(points: vector2[], lod_level: number, out: vector2[]): vector2[];
704
+ declare const lod_high = 1;
705
+ declare const lod_medium = .5;
706
+ declare const lod_low = .25;
707
+ declare const spline_evaluation_interval_high = 2;
708
+ declare const spline_evaluation_interval_medium = 4;
709
+ declare const spline_evaluation_interval_low = 8;
710
+ declare function select_lod_from_zoom(zoom: number): number;
711
+ declare function get_spline_evaluation_interval(lod: number): number;
712
+ declare function stroke_to_path_commands(stroke: stroke, lod: number, out_commands: number[]): number;
713
+ declare function render_stroke(stroke: stroke, renderer: renderer, zoom?: number): void;
714
+ declare function render_stroke_with_pressure(stroke: stroke, renderer: renderer, _zoom?: number): void;
715
+ type engine_options = {
716
+ readonly prefer_webgl?: boolean;
717
+ readonly path_cache_size?: number;
718
+ readonly document?: document;
719
+ readonly camera?: camera;
720
+ readonly background?: color;
721
+ readonly background_image?: image_source;
722
+ };
723
+ type engine = {
724
+ renderer: renderer;
725
+ document: document;
726
+ camera: camera;
727
+ viewport: viewport;
728
+ background: color;
729
+ background_image: image_source | null;
730
+ };
731
+ type overlay_draw = (drawer: renderer) => void;
732
+ declare function create_engine(canvas: HTMLCanvasElement, options?: engine_options): engine | null;
733
+ declare function dispose_engine(state: engine): void;
734
+ declare function set_document_engine(state: engine, doc: document): engine;
735
+ declare function set_background_engine(state: engine, value: color): engine;
736
+ declare function set_background_image_engine(state: engine, value: image_source | null): engine;
737
+ declare function set_camera_engine(state: engine, x: number, y: number, zoom: number, rotation?: number): engine;
738
+ declare function pan_engine(state: engine, dx: number, dy: number): engine;
739
+ declare function zoom_engine(state: engine, factor: number): engine;
740
+ declare function zoom_at_engine(state: engine, factor: number, screen_x: number, screen_y: number): engine;
741
+ declare function resize_engine(state: engine, width: number, height: number, pixel_ratio?: number): engine;
742
+ declare function world_to_screen_engine(state: engine, world: vector2, out: vector2): vector2;
743
+ declare function screen_to_world_engine(state: engine, screen: vector2, out: vector2): vector2;
744
+ declare function visible_bounds_world_engine(state: engine): rectangle;
745
+ declare function render_engine(state: engine): void;
746
+ declare function render_engine_with_overlay(state: engine, overlay: overlay_draw | null): void;
747
+ type editor_snap_context = "move" | "resize" | "rotate" | "shape" | "text" | "image";
748
+ type editor_snap_result = {
749
+ point: vector2;
750
+ guides: rectangle[];
751
+ };
752
+ type editor_snap_meta = {
753
+ subject_bounds?: rectangle;
754
+ };
755
+ type editor_snapper = (state: editor, point: vector2, context: editor_snap_context, meta?: editor_snap_meta) => editor_snap_result | null;
756
+ declare const editor_tool_select = 0;
757
+ declare const editor_tool_hand = 1;
758
+ declare const editor_tool_draw = 2;
759
+ declare const editor_tool_rectangle = 3;
760
+ declare const editor_tool_ellipse = 4;
761
+ declare const editor_tool_line = 5;
762
+ declare const editor_tool_arrow = 6;
763
+ declare const editor_tool_text = 7;
764
+ declare const editor_tool_image_place = 8;
765
+ declare const editor_tool_frame = 9;
766
+ type editor_tool_id = number | string;
767
+ type editor_pointer_input = {
768
+ screen: vector2;
769
+ button?: number;
770
+ shift?: boolean;
771
+ alt?: boolean;
772
+ ctrl?: boolean;
773
+ meta?: boolean;
774
+ };
775
+ type editor_key_input = {
776
+ key: string;
777
+ shift?: boolean;
778
+ alt?: boolean;
779
+ ctrl?: boolean;
780
+ meta?: boolean;
781
+ repeat?: boolean;
782
+ };
783
+ type editor_clipboard_payload = {
784
+ elements: element[];
785
+ anchor: vector2;
786
+ };
787
+ type editor_move_state = {
788
+ kind: "move";
789
+ origin_world: vector2;
790
+ current_world: vector2;
791
+ base_document: document;
792
+ moved_element_ids: string[];
793
+ selection_bounds: rectangle;
794
+ };
795
+ type editor_pending_move_state = {
796
+ kind: "pending_move";
797
+ origin_world: vector2;
798
+ origin_screen: vector2;
799
+ selected_element_ids: string[];
800
+ };
801
+ type editor_resize_state = {
802
+ kind: "resize";
803
+ origin_world: vector2;
804
+ current_world: vector2;
805
+ base_document: document;
806
+ resized_element_ids: string[];
807
+ selection_bounds: rectangle;
808
+ handle: string;
809
+ keep_aspect: boolean;
810
+ centered: boolean;
811
+ };
812
+ type editor_rotate_state = {
813
+ kind: "rotate";
814
+ origin_world: vector2;
815
+ current_world: vector2;
816
+ base_document: document;
817
+ rotated_element_ids: string[];
818
+ selection_bounds: rectangle;
819
+ center: vector2;
820
+ start_angle: number;
821
+ snap_angle: boolean;
822
+ };
823
+ type editor_marquee_state = {
824
+ kind: "marquee";
825
+ origin_world: vector2;
826
+ current_world: vector2;
827
+ add_mode: boolean;
828
+ };
829
+ type editor_pending_marquee_state = {
830
+ kind: "pending_marquee";
831
+ origin_world: vector2;
832
+ origin_screen: vector2;
833
+ add_mode: boolean;
834
+ };
835
+ type editor_pan_state = {
836
+ kind: "pan";
837
+ origin_screen: vector2;
838
+ current_screen: vector2;
839
+ };
840
+ type editor_shape_state = {
841
+ kind: "shape";
842
+ origin_world: vector2;
843
+ current_world: vector2;
844
+ element_id: string;
845
+ shape_tool: editor_tool_id;
846
+ };
847
+ type editor_text_state = {
848
+ kind: "text";
849
+ origin_world: vector2;
850
+ current_world: vector2;
851
+ element_id: string;
852
+ };
853
+ type editor_image_state = {
854
+ kind: "image";
855
+ origin_world: vector2;
856
+ current_world: vector2;
857
+ element_id: string;
858
+ };
859
+ type editor_draw_state = {
860
+ kind: "draw";
861
+ points: vector2[];
862
+ pressure: number[];
863
+ };
864
+ type editor_text_edit_state = {
865
+ element_id: string;
866
+ draft: string;
867
+ original: string;
868
+ caret: number;
869
+ anchor: number | null;
870
+ preferred_column: number | null;
871
+ };
872
+ type editor_interaction_state = editor_pending_move_state | editor_move_state | editor_resize_state | editor_rotate_state | editor_pending_marquee_state | editor_marquee_state | editor_pan_state | editor_shape_state | editor_text_state | editor_image_state | editor_draw_state;
873
+ type editor_transaction = {
874
+ label: string;
875
+ before: document;
876
+ };
877
+ type editor_tool = {
878
+ id: editor_tool_id;
879
+ name: string;
880
+ pointer_down: (state: editor, input: editor_pointer_input) => void;
881
+ pointer_move: (state: editor, input: editor_pointer_input) => void;
882
+ pointer_up: (state: editor, input: editor_pointer_input) => void;
883
+ double_click: (state: editor, input: editor_pointer_input) => void;
884
+ key_down: (state: editor, input: editor_key_input) => void;
885
+ cancel: (state: editor) => void;
886
+ hover: (state: editor, input: editor_pointer_input) => void;
887
+ cursor: (state: editor) => string;
888
+ overlay: (state: editor, drawer: renderer) => void;
889
+ };
890
+ type editor_plugin = {
891
+ id: string;
892
+ tools: editor_tool[];
893
+ };
894
+ type editor = {
895
+ engine: engine;
896
+ current_tool: editor_tool_id;
897
+ previous_tool_before_hand: editor_tool_id | null;
898
+ selected_element_ids: Set<string>;
899
+ hovered_element_id: string | null;
900
+ active_handle: string | null;
901
+ pointer_capture: boolean;
902
+ drag_state: editor_interaction_state | null;
903
+ marquee_state: editor_marquee_state | null;
904
+ clipboard_payload: editor_clipboard_payload | null;
905
+ active_transaction: editor_transaction | null;
906
+ undo_stack: document[];
907
+ redo_stack: document[];
908
+ transient_guides: rectangle[];
909
+ pointer_world: vector2;
910
+ pointer_screen: vector2;
911
+ has_pointer_input: boolean;
912
+ text_edit: editor_text_edit_state | null;
913
+ snappers: editor_snapper[];
914
+ tools: Map<editor_tool_id, editor_tool>;
915
+ plugin_tools: Map<string, editor_tool_id[]>;
916
+ id_counter: number;
917
+ };
918
+ declare function copy_selection_editor(state: editor): boolean;
919
+ declare function cut_selection_editor(state: editor): boolean;
920
+ declare function paste_clipboard_editor(state: editor, world_anchor?: vector2): boolean;
921
+ declare function delete_selection_editor(state: editor): boolean;
922
+ declare function undo_action_editor(state: editor): boolean;
923
+ declare function redo_action_editor(state: editor): boolean;
924
+ declare function group_selection_editor(state: editor): boolean;
925
+ declare function ungroup_selection_editor(state: editor): boolean;
926
+ declare function begin_text_edit_editor(state: editor, element_id: string, caret_from_world?: [number, number]): boolean;
927
+ declare function is_text_editing_editor(state: editor): boolean;
928
+ declare function commit_text_edit_editor(state: editor): boolean;
929
+ type editor_options = {
930
+ initial_tool?: editor_tool_id;
931
+ plugins?: editor_plugin[];
932
+ snappers?: editor_snapper[];
933
+ };
934
+ declare function create_editor(state: engine, options?: editor_options): editor;
935
+ declare function render_editor(state: editor): void;
936
+ declare function set_tool_editor(state: editor, tool: editor_tool_id): void;
937
+ declare function register_editor_tool_editor(state: editor, tool: editor_tool): void;
938
+ declare function install_editor_plugin_editor(state: editor, plugin: editor_plugin): void;
939
+ declare function uninstall_editor_plugin_editor(state: editor, plugin_id: string): void;
940
+ declare function cursor_editor(state: editor): string;
941
+ declare function pointer_down_editor(state: editor, input: editor_pointer_input): void;
942
+ declare function pointer_move_editor(state: editor, input: editor_pointer_input): void;
943
+ declare function pointer_up_editor(state: editor, input: editor_pointer_input): void;
944
+ declare function hover_editor(state: editor, input: editor_pointer_input): void;
945
+ declare function double_click_editor(state: editor, input: editor_pointer_input): void;
946
+ declare function key_down_editor(state: editor, input: editor_key_input): void;
947
+ declare function key_up_editor(state: editor, input: editor_key_input): void;
948
+ declare function cancel_editor(state: editor): void;
949
+ type selection_handle = {
950
+ id: string;
951
+ bounds: rectangle;
952
+ };
953
+ declare function selection_handles_editor(bounds: rectangle): selection_handle[];
954
+ declare function selection_handles_for_elements_editor(doc: document, selected_ids: readonly string[]): selection_handle[];
955
+ declare function hit_selection_handle_editor(bounds: rectangle, point: vector2): selection_handle | null;
956
+ declare function hit_selection_handles_editor(handles: readonly selection_handle[], point: vector2): selection_handle | null;
957
+ declare function contains_point_editor(bounds: rectangle, point: vector2): boolean;
958
+ declare function element_hit_at_point_editor(doc: document, x: number, y: number, padding?: number): element | null;
959
+ declare function snap_point_editor(state: editor, point: vector2, context: editor_snap_context, meta?: editor_snap_meta): vector2;
960
+ declare function create_grid_snapper_editor(grid_size?: number, tolerance?: number): editor_snapper;
961
+ declare function create_element_smart_snapper_editor(tolerance?: number): editor_snapper;
962
+ export { zoom_of_camera, zoom_engine, zoom_camera, zoom_at_engine, zoom_at_camera, zoom_anchor, zoom_adjusted_distance, zero_vector2, z_index_of_element, y_of_quadtree_point, y_of_camera, x_of_quadtree_point, x_of_camera, world_to_screen_size, world_to_screen_engine, world_to_screen_camera, world_to_device_camera, with_stroke_draw_style, with_line_join_draw_style, with_line_cap_draw_style, with_fill_draw_style, with_alpha_draw_style, width_of_rectangle, width_of_frustum, width_of_camera_world, white_color, visible_bounds_world_engine, viewport, view_transform_camera, vector2, validate_simplified_polyline, update_text_content, update_stroke_spline, update_stroke_simplified_points, update_stroke_points, update_spatial_index, update_lod_result_screen_error, update_layer_visibility, update_layer_opacity, update_layer_name, update_layer_locked, update_image_loaded, update_image_asset_id, update_element_z_index, update_element_layer_id, update_element_document, update_element_bounds, unit_vector2, union_rectangle, uninstall_editor_plugin_editor, ungroup_selection_editor, undo_action_editor, type_of_element, transparent_color, translate_transform, translate_rectangle, translate_frustum, translate_circle, transform_vector_transform, transform_point_transform, transform_path, transform, top_of_rectangle, top_of_frustum, to_rgba_string_color, to_hex_string_color, text_element, text_align_right, text_align_left, text_align_center, subtract_vector2, subdivide_quadtree_node, subdivide_cubic_bezier, stroke_to_path_commands, stroke_style, stroke_point, stroke_element, stroke, stats_of_spatial_index, stabilizer_state, stabilize_point, spline_segment, spline_evaluation_interval_medium, spline_evaluation_interval_low, spline_evaluation_interval_high, spline, spatial_query_result, spatial_index_stats, spatial_index_config, spatial_index, snap_point_editor, smoother_step_transition, smooth_step_transition, smooth_damp_camera, simplify_stroke_points_auto, simplify_stroke_points, simplify_result, simplify_points_for_spline, simplify_douglas_peucker_detailed, simplify_douglas_peucker, shape_type_rectangle, shape_type_line, shape_type_frame, shape_type_ellipse, shape_type_arrow, shape_element, set_vector2, set_transform, set_tool_editor, set_rectangle, set_identity_transform, set_frustum_bounds, set_draw_style, set_document_engine, set_color, set_circle, set_camera_engine, set_camera, set_background_image_engine, set_background_engine, set_active_layer_document, selection_handles_for_elements_editor, selection_handles_editor, select_lod_from_zoom, select_lod_by_zoom, select_lod_by_screen_size, select_lod_by_screen_error, select_discrete_lod_level, screen_to_world_size, screen_to_world_engine, screen_to_world_camera, screen_space_distance, scale_transform, scale_rectangle, scale_circle, rotation_of_camera, rotate_transform, rotate_camera, right_of_rectangle, right_of_frustum, resize_engine, reset_stabilizer, reorder_layers_document, reorder_element_ids_in_layer, renderer_kind_webgl, renderer_kind_canvas, renderer_config, renderer, render_stroke_with_pressure, render_stroke, render_live_stroke, render_engine_with_overlay, render_engine, render_editor, remove_spatial_index, remove_quadtree_node, remove_quadtree, remove_layer_document, remove_image_asset_document, remove_element_id_from_layer, remove_element_document, register_editor_tool_editor, redo_action_editor, rectangle, recalculate_bounds_document, rebuild_spatial_index, radius_of_circle, query_visible_elements_spatial_index, query_range_spatial_index, query_range_quadtree_node, query_range_quadtree, query_radius_spatial_index, query_radius_quadtree_node, query_radius_quadtree, query_point_spatial_index, query_frustum_spatial_index, quadtree_point, quadtree_node, quadtree, process_stroke, prepend_translation_transform, prepend_scale_transform, prepend_rotation_transform, position_of_camera, polyline_length, polyline_area_under_curve, pointer_up_editor, pointer_move_editor, pointer_down_editor, point_count_quadtree_node, point_count_quadtree, pixel_size_of_camera, pixel_ratio_of_viewport, perpendicular_distance_to_line, path_move, path_line, path_cubic, path_command_move, path_command_line, path_command_cubic, path_command_close, path_command, path_close, path, paste_clipboard_editor, pan_engine, pan_camera, overlay_draw, opacity_of_layer, normalize_vector2, near_of_frustum, name_of_layer, multiply_vector2, multiply_transform, move_to_path, lod_viewport, lod_result, lod_medium, lod_low, lod_level, lod_high, lod_config, live_stroke, line_to_path, line_join_round, line_join_miter, line_join_bevel, line_cap_square, line_cap_round, line_cap_butt, lerp_vector2, lerp_lod_values, lerp_color, lerp_camera, length_vector2, length_squared_vector2, length_quadratic_bezier, length_cubic_bezier, left_of_rectangle, left_of_frustum, layers_of_document, layer_id_of_element, layer, key_up_editor, key_down_editor, is_visible_layer, is_text_editing_editor, is_lod_transition_stable, is_locked_layer, is_leaf_quadtree_node, is_identity_transform, is_identity_camera, is_equal_vector2, is_empty_rectangle, is_empty_quadtree, is_empty_path, is_empty_frustum, is_empty_circle, invert_transform, inverse_view_transform_camera, intersects_rectangle_circle, intersects_rectangle, intersects_frustum_rectangle, intersects_circle, intersection_rectangle, intersection_frustum_rectangle, interpolate_lod_detail_factor, install_editor_plugin_editor, insert_spatial_index, insert_quadtree_node, insert_quadtree, image_source, image_element, image_asset, identity_transform, id_of_layer, id_of_element, id_of_document, hover_editor, hit_selection_handles_editor, hit_selection_handle_editor, height_of_rectangle, height_of_frustum, height_of_camera_world, hash_of_path, has_element_spatial_index, has_element_id_in_layer, group_selection_editor, get_stabilized_history, get_spline_length, get_spline_evaluation_interval, get_simplified_for_lod, get_pressure_from_live_stroke, get_points_from_live_stroke, get_layer_by_id_document, get_image_asset_document, get_elements_in_layer_document, get_element_by_id_document, get_element_bounds_spatial_index, get_detail_factor_for_level, get_all_elements_document, generate_stroke_id, frustum, from_trs_transform, from_rgb_color, from_rectangle_path, from_polyline_path, from_points_cubic_bezier, from_hex_color, from_circle_path, from_center_rectangle, fit_spline_to_stroke, fit_camera_to_bounds, find_nearest_quadtree_node, find_nearest_quadtree, find_lod_level_by_index, find_k_nearest_quadtree, find_farthest_point, finalize_live_stroke, filter_visible_rectangles_frustum, far_of_frustum, expand_rectangle, expand_frustum, evaluate_spline_segment, evaluate_spline_at_t, evaluate_spline_at_points, evaluate_quadratic_bezier, evaluate_cubic_bezier, estimate_epsilon_from_points, equals_transform, equals_rectangle, equals_layer, equals_frustum, equals_element_identity, equals_draw_style, equals_color, equals_circle, equals_camera, engine_options, engine, elements_map_of_document, element_type_text, element_type_stroke, element_type_shape, element_type_image, element_ids_of_layer, element_hit_at_point_editor, element_count_of_layer, element_count_of_document, element, editor_transaction, editor_tool_text, editor_tool_select, editor_tool_rectangle, editor_tool_line, editor_tool_image_place, editor_tool_id, editor_tool_hand, editor_tool_frame, editor_tool_ellipse, editor_tool_draw, editor_tool_arrow, editor_tool, editor_text_edit_state, editor_snapper, editor_snap_result, editor_snap_context, editor_pointer_input, editor_plugin, editor_key_input, editor_interaction_state, editor_clipboard_payload, editor, draw_style, double_click_editor, dot_vector2, document, divide_vector2, distance_vector2, distance_to_circle, distance_squared_vector2, distance_from_viewport, dispose_engine, diameter_of_circle, device_width_of_viewport, device_to_world_camera, device_height_of_viewport, determinant_transform, detect_collisions_rectangle_quadtree, detect_collisions_quadtree, derivative_quadratic_bezier, derivative_cubic_bezier, depth_of_quadtree_node, depth_of_quadtree, delete_selection_editor, default_stroke_style, default_stabilizer_history_size, default_smoothing_factor, default_simplify_epsilon, default_lod_simplify_factor, data_of_quadtree_point, cut_selection_editor, cursor_editor, cull_rectangles_frustum, cull_rectangle_frustum, cubic_to_path, cross_vector2, create_vector2, create_transform, create_text_element, create_stroke_style, create_stroke_element, create_stabilizer, create_spline, create_spatial_index_from_document, create_spatial_index_config, create_spatial_index, create_simplify_result, create_shape_element, create_renderer_webgl, create_renderer_config, create_renderer_canvas, create_renderer, create_rectangle, create_quadtree_point, create_quadtree_node, create_quadtree, create_quadratic_bezier, create_path, create_lod_viewport, create_lod_result, create_lod_level, create_lod_config, create_live_stroke, create_layer, create_image_element, create_image_asset, create_grid_snapper_editor, create_frustum_from_view_matrix, create_frustum_from_rectangle, create_frustum_from_camera, create_frustum_from_bounds, create_frustum, create_engine, create_element_smart_snapper_editor, create_editor, create_draw_style, create_document, create_cubic_bezier, create_color, create_circle, create_camera, create_adaptive_lod_config, count_visible_rectangles_frustum, count_spatial_index, copy_vector2, copy_transform, copy_simplify_result, copy_selection_editor, copy_lod_viewport, copy_frustum, copy_draw_style, copy_color, copy_circle, copy_camera, contains_rectangle_frustum, contains_rectangle, contains_point_rectangle, contains_point_frustum, contains_point_editor, contains_point_circle, contains_point_camera_frustum, contains_circle, compute_stroke_bounds, commit_text_edit_editor, command_count_of_path, color, collect_all_points_quadtree_node, closest_point_cubic_bezier, close_path, clone_vector2, clone_transform, clone_stroke_style, clone_spline, clone_simplify_result, clone_rectangle, clone_quadratic_bezier, clone_path, clone_lod_viewport, clone_layer, clone_frustum, clone_element, clone_draw_style, clone_document, clone_cubic_bezier, clone_color, clone_circle, clone_camera, clear_spatial_index, clear_quadtree, clear_document, clamp_camera, circumference_of_circle, circle, center_of_rectangle, center_of_frustum, center_of_circle, cancel_editor, camera_limits, camera_frustum, camera, calculate_temporal_lod_blend, calculate_smooth_lod_transition, calculate_screen_space_error, calculate_pixel_density_lod, calculate_lod_distance, calculate_hysteresis_lod, calculate_geometric_error_for_lod, calculate_continuous_lod, calculate_alpha_blend_factor, build_natural_spline_from_points, build_natural_spline_1d, bounds_of_spatial_index, bounds_of_quadtree, bounds_of_path, bounds_of_element, bounds_of_document, bounding_rectangle_circle, bottom_of_rectangle, bottom_of_frustum, black_color, bezier_quadratic, bezier_cubic, begin_text_edit_editor, assets_of_document, area_of_rectangle, area_of_frustum, area_of_circle, append_translation_transform, append_scale_transform, append_rotation_transform, add_vector2, add_raw_point_live_stroke, add_point_live_stroke, add_layer_document, add_image_asset_document, add_element_id_to_layer, add_element_document, active_layer_id_of_document };