@reffy/infinite-canvas 0.0.1

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 (507) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +94 -0
  3. package/esm/API.d.ts +21 -0
  4. package/esm/API.d.ts.map +1 -0
  5. package/esm/API.js +74 -0
  6. package/esm/API.js.map +1 -0
  7. package/esm/Canvas.d.ts +69 -0
  8. package/esm/Canvas.d.ts.map +1 -0
  9. package/esm/Canvas.js +383 -0
  10. package/esm/Canvas.js.map +1 -0
  11. package/esm/Component.d.ts +126 -0
  12. package/esm/Component.d.ts.map +1 -0
  13. package/esm/Component.js +612 -0
  14. package/esm/Component.js.map +1 -0
  15. package/esm/bounding/AABB.d.ts +10 -0
  16. package/esm/bounding/AABB.d.ts.map +1 -0
  17. package/esm/bounding/AABB.js +19 -0
  18. package/esm/bounding/AABB.js.map +1 -0
  19. package/esm/bounding/BoundingBox.d.ts +53 -0
  20. package/esm/bounding/BoundingBox.d.ts.map +1 -0
  21. package/esm/bounding/BoundingBox.js +300 -0
  22. package/esm/bounding/BoundingBox.js.map +1 -0
  23. package/esm/bounding/Marquee.d.ts +28 -0
  24. package/esm/bounding/Marquee.d.ts.map +1 -0
  25. package/esm/bounding/Marquee.js +111 -0
  26. package/esm/bounding/Marquee.js.map +1 -0
  27. package/esm/bounding/MultiBoundingBox.d.ts +33 -0
  28. package/esm/bounding/MultiBoundingBox.d.ts.map +1 -0
  29. package/esm/bounding/MultiBoundingBox.js +373 -0
  30. package/esm/bounding/MultiBoundingBox.js.map +1 -0
  31. package/esm/bounding/index.d.ts +6 -0
  32. package/esm/bounding/index.d.ts.map +1 -0
  33. package/esm/bounding/index.js +6 -0
  34. package/esm/bounding/index.js.map +1 -0
  35. package/esm/bounding/type.d.ts +13 -0
  36. package/esm/bounding/type.d.ts.map +1 -0
  37. package/esm/bounding/type.js +6 -0
  38. package/esm/bounding/type.js.map +1 -0
  39. package/esm/camera/Camera.d.ts +27 -0
  40. package/esm/camera/Camera.d.ts.map +1 -0
  41. package/esm/camera/Camera.js +68 -0
  42. package/esm/camera/Camera.js.map +1 -0
  43. package/esm/camera/index.d.ts +2 -0
  44. package/esm/camera/index.d.ts.map +1 -0
  45. package/esm/camera/index.js +2 -0
  46. package/esm/camera/index.js.map +1 -0
  47. package/esm/contextMenu/ContextMenu.d.ts +57 -0
  48. package/esm/contextMenu/ContextMenu.d.ts.map +1 -0
  49. package/esm/contextMenu/ContextMenu.js +118 -0
  50. package/esm/contextMenu/ContextMenu.js.map +1 -0
  51. package/esm/contextMenu/Interaction.d.ts +22 -0
  52. package/esm/contextMenu/Interaction.d.ts.map +1 -0
  53. package/esm/contextMenu/Interaction.js +256 -0
  54. package/esm/contextMenu/Interaction.js.map +1 -0
  55. package/esm/contextMenu/index.d.ts +3 -0
  56. package/esm/contextMenu/index.d.ts.map +1 -0
  57. package/esm/contextMenu/index.js +3 -0
  58. package/esm/contextMenu/index.js.map +1 -0
  59. package/esm/history/history.d.ts +29 -0
  60. package/esm/history/history.d.ts.map +1 -0
  61. package/esm/history/history.js +120 -0
  62. package/esm/history/history.js.map +1 -0
  63. package/esm/history/index.d.ts +2 -0
  64. package/esm/history/index.d.ts.map +1 -0
  65. package/esm/history/index.js +2 -0
  66. package/esm/history/index.js.map +1 -0
  67. package/esm/index.d.ts +5 -0
  68. package/esm/index.d.ts.map +1 -0
  69. package/esm/index.js +5 -0
  70. package/esm/index.js.map +1 -0
  71. package/esm/loader/Interaction.d.ts +4 -0
  72. package/esm/loader/Interaction.d.ts.map +1 -0
  73. package/esm/loader/Interaction.js +17 -0
  74. package/esm/loader/Interaction.js.map +1 -0
  75. package/esm/loader/Loader.d.ts +19 -0
  76. package/esm/loader/Loader.d.ts.map +1 -0
  77. package/esm/loader/Loader.js +49 -0
  78. package/esm/loader/Loader.js.map +1 -0
  79. package/esm/loader/index.d.ts +3 -0
  80. package/esm/loader/index.d.ts.map +1 -0
  81. package/esm/loader/index.js +3 -0
  82. package/esm/loader/index.js.map +1 -0
  83. package/esm/manager/ContextMenu.d.ts +11 -0
  84. package/esm/manager/ContextMenu.d.ts.map +1 -0
  85. package/esm/manager/ContextMenu.js +46 -0
  86. package/esm/manager/ContextMenu.js.map +1 -0
  87. package/esm/manager/FlipCommand.d.ts +18 -0
  88. package/esm/manager/FlipCommand.d.ts.map +1 -0
  89. package/esm/manager/FlipCommand.js +35 -0
  90. package/esm/manager/FlipCommand.js.map +1 -0
  91. package/esm/manager/KeyEvent.d.ts +16 -0
  92. package/esm/manager/KeyEvent.d.ts.map +1 -0
  93. package/esm/manager/KeyEvent.js +51 -0
  94. package/esm/manager/KeyEvent.js.map +1 -0
  95. package/esm/manager/OrderCommand.d.ts +17 -0
  96. package/esm/manager/OrderCommand.d.ts.map +1 -0
  97. package/esm/manager/OrderCommand.js +28 -0
  98. package/esm/manager/OrderCommand.js.map +1 -0
  99. package/esm/manager/PointerEvent.d.ts +70 -0
  100. package/esm/manager/PointerEvent.d.ts.map +1 -0
  101. package/esm/manager/PointerEvent.js +171 -0
  102. package/esm/manager/PointerEvent.js.map +1 -0
  103. package/esm/manager/SceneCommand.d.ts +18 -0
  104. package/esm/manager/SceneCommand.d.ts.map +1 -0
  105. package/esm/manager/SceneCommand.js +85 -0
  106. package/esm/manager/SceneCommand.js.map +1 -0
  107. package/esm/manager/Selection.d.ts +61 -0
  108. package/esm/manager/Selection.d.ts.map +1 -0
  109. package/esm/manager/Selection.js +305 -0
  110. package/esm/manager/Selection.js.map +1 -0
  111. package/esm/manager/TransformCommand.d.ts +20 -0
  112. package/esm/manager/TransformCommand.d.ts.map +1 -0
  113. package/esm/manager/TransformCommand.js +29 -0
  114. package/esm/manager/TransformCommand.js.map +1 -0
  115. package/esm/manager/index.d.ts +9 -0
  116. package/esm/manager/index.d.ts.map +1 -0
  117. package/esm/manager/index.js +9 -0
  118. package/esm/manager/index.js.map +1 -0
  119. package/esm/serializer/index.d.ts +2 -0
  120. package/esm/serializer/index.d.ts.map +1 -0
  121. package/esm/serializer/index.js +2 -0
  122. package/esm/serializer/index.js.map +1 -0
  123. package/esm/serializer/serializer.d.ts +54 -0
  124. package/esm/serializer/serializer.d.ts.map +1 -0
  125. package/esm/serializer/serializer.js +226 -0
  126. package/esm/serializer/serializer.js.map +1 -0
  127. package/esm/shaders/grid.d.ts +3 -0
  128. package/esm/shaders/grid.d.ts.map +1 -0
  129. package/esm/shaders/grid.js +89 -0
  130. package/esm/shaders/grid.js.map +1 -0
  131. package/esm/shaders/img.d.ts +4 -0
  132. package/esm/shaders/img.d.ts.map +1 -0
  133. package/esm/shaders/img.js +39 -0
  134. package/esm/shaders/img.js.map +1 -0
  135. package/esm/shaders/index.d.ts +4 -0
  136. package/esm/shaders/index.d.ts.map +1 -0
  137. package/esm/shaders/index.js +4 -0
  138. package/esm/shaders/index.js.map +1 -0
  139. package/esm/shaders/shape.d.ts +4 -0
  140. package/esm/shaders/shape.d.ts.map +1 -0
  141. package/esm/shaders/shape.js +29 -0
  142. package/esm/shaders/shape.js.map +1 -0
  143. package/esm/shapes/Grid.d.ts +21 -0
  144. package/esm/shapes/Grid.d.ts.map +1 -0
  145. package/esm/shapes/Grid.js +86 -0
  146. package/esm/shapes/Grid.js.map +1 -0
  147. package/esm/shapes/Img.d.ts +47 -0
  148. package/esm/shapes/Img.d.ts.map +1 -0
  149. package/esm/shapes/Img.js +310 -0
  150. package/esm/shapes/Img.js.map +1 -0
  151. package/esm/shapes/Rect.d.ts +34 -0
  152. package/esm/shapes/Rect.d.ts.map +1 -0
  153. package/esm/shapes/Rect.js +92 -0
  154. package/esm/shapes/Rect.js.map +1 -0
  155. package/esm/shapes/Renderable.d.ts +54 -0
  156. package/esm/shapes/Renderable.d.ts.map +1 -0
  157. package/esm/shapes/Renderable.js +141 -0
  158. package/esm/shapes/Renderable.js.map +1 -0
  159. package/esm/shapes/Shape.d.ts +27 -0
  160. package/esm/shapes/Shape.d.ts.map +1 -0
  161. package/esm/shapes/Shape.js +69 -0
  162. package/esm/shapes/Shape.js.map +1 -0
  163. package/esm/shapes/Triangle.d.ts +20 -0
  164. package/esm/shapes/Triangle.d.ts.map +1 -0
  165. package/esm/shapes/Triangle.js +82 -0
  166. package/esm/shapes/Triangle.js.map +1 -0
  167. package/esm/shapes/index.d.ts +6 -0
  168. package/esm/shapes/index.d.ts.map +1 -0
  169. package/esm/shapes/index.js +7 -0
  170. package/esm/shapes/index.js.map +1 -0
  171. package/esm/state/camera.d.ts +36 -0
  172. package/esm/state/camera.d.ts.map +1 -0
  173. package/esm/state/camera.js +88 -0
  174. package/esm/state/camera.js.map +1 -0
  175. package/esm/state/index.d.ts +4 -0
  176. package/esm/state/index.d.ts.map +1 -0
  177. package/esm/state/index.js +4 -0
  178. package/esm/state/index.js.map +1 -0
  179. package/esm/state/pointerEvent.d.ts +23 -0
  180. package/esm/state/pointerEvent.d.ts.map +1 -0
  181. package/esm/state/pointerEvent.js +49 -0
  182. package/esm/state/pointerEvent.js.map +1 -0
  183. package/esm/state/renderable.d.ts +36 -0
  184. package/esm/state/renderable.d.ts.map +1 -0
  185. package/esm/state/renderable.js +176 -0
  186. package/esm/state/renderable.js.map +1 -0
  187. package/esm/storage/defaultStorage.d.ts +34 -0
  188. package/esm/storage/defaultStorage.d.ts.map +1 -0
  189. package/esm/storage/defaultStorage.js +237 -0
  190. package/esm/storage/defaultStorage.js.map +1 -0
  191. package/esm/storage/index.d.ts +3 -0
  192. package/esm/storage/index.d.ts.map +1 -0
  193. package/esm/storage/index.js +3 -0
  194. package/esm/storage/index.js.map +1 -0
  195. package/esm/storage/storage.d.ts +36 -0
  196. package/esm/storage/storage.d.ts.map +1 -0
  197. package/esm/storage/storage.js +44 -0
  198. package/esm/storage/storage.js.map +1 -0
  199. package/esm/util/camera/camera.d.ts +19 -0
  200. package/esm/util/camera/camera.d.ts.map +1 -0
  201. package/esm/util/camera/camera.js +75 -0
  202. package/esm/util/camera/camera.js.map +1 -0
  203. package/esm/util/camera/index.d.ts +2 -0
  204. package/esm/util/camera/index.d.ts.map +1 -0
  205. package/esm/util/camera/index.js +2 -0
  206. package/esm/util/camera/index.js.map +1 -0
  207. package/esm/util/checks.d.ts +11 -0
  208. package/esm/util/checks.d.ts.map +1 -0
  209. package/esm/util/checks.js +36 -0
  210. package/esm/util/checks.js.map +1 -0
  211. package/esm/util/clipboard.d.ts +7 -0
  212. package/esm/util/clipboard.d.ts.map +1 -0
  213. package/esm/util/clipboard.js +146 -0
  214. package/esm/util/clipboard.js.map +1 -0
  215. package/esm/util/color.d.ts +4 -0
  216. package/esm/util/color.d.ts.map +1 -0
  217. package/esm/util/color.js +8 -0
  218. package/esm/util/color.js.map +1 -0
  219. package/esm/util/customEventType.d.ts +35 -0
  220. package/esm/util/customEventType.d.ts.map +1 -0
  221. package/esm/util/customEventType.js +35 -0
  222. package/esm/util/customEventType.js.map +1 -0
  223. package/esm/util/files.d.ts +19 -0
  224. package/esm/util/files.d.ts.map +1 -0
  225. package/esm/util/files.js +182 -0
  226. package/esm/util/files.js.map +1 -0
  227. package/esm/util/handles.d.ts +10 -0
  228. package/esm/util/handles.d.ts.map +1 -0
  229. package/esm/util/handles.js +16 -0
  230. package/esm/util/handles.js.map +1 -0
  231. package/esm/util/index.d.ts +11 -0
  232. package/esm/util/index.d.ts.map +1 -0
  233. package/esm/util/index.js +11 -0
  234. package/esm/util/index.js.map +1 -0
  235. package/esm/util/performance.d.ts +2 -0
  236. package/esm/util/performance.d.ts.map +1 -0
  237. package/esm/util/performance.js +7 -0
  238. package/esm/util/performance.js.map +1 -0
  239. package/esm/util/shaders.d.ts +2 -0
  240. package/esm/util/shaders.d.ts.map +1 -0
  241. package/esm/util/shaders.js +30 -0
  242. package/esm/util/shaders.js.map +1 -0
  243. package/esm/util/webgl/index.d.ts +3 -0
  244. package/esm/util/webgl/index.d.ts.map +1 -0
  245. package/esm/util/webgl/index.js +3 -0
  246. package/esm/util/webgl/index.js.map +1 -0
  247. package/esm/util/webgl/m3.d.ts +11 -0
  248. package/esm/util/webgl/m3.d.ts.map +1 -0
  249. package/esm/util/webgl/m3.js +98 -0
  250. package/esm/util/webgl/m3.js.map +1 -0
  251. package/esm/util/webgl/uniform.d.ts +5 -0
  252. package/esm/util/webgl/uniform.d.ts.map +1 -0
  253. package/esm/util/webgl/uniform.js +18 -0
  254. package/esm/util/webgl/uniform.js.map +1 -0
  255. package/lib/API.d.ts +21 -0
  256. package/lib/API.d.ts.map +1 -0
  257. package/lib/API.js +78 -0
  258. package/lib/API.js.map +1 -0
  259. package/lib/Canvas.d.ts +69 -0
  260. package/lib/Canvas.d.ts.map +1 -0
  261. package/lib/Canvas.js +387 -0
  262. package/lib/Canvas.js.map +1 -0
  263. package/lib/Component.d.ts +126 -0
  264. package/lib/Component.d.ts.map +1 -0
  265. package/lib/Component.js +618 -0
  266. package/lib/Component.js.map +1 -0
  267. package/lib/bounding/AABB.d.ts +10 -0
  268. package/lib/bounding/AABB.d.ts.map +1 -0
  269. package/lib/bounding/AABB.js +23 -0
  270. package/lib/bounding/AABB.js.map +1 -0
  271. package/lib/bounding/BoundingBox.d.ts +53 -0
  272. package/lib/bounding/BoundingBox.d.ts.map +1 -0
  273. package/lib/bounding/BoundingBox.js +304 -0
  274. package/lib/bounding/BoundingBox.js.map +1 -0
  275. package/lib/bounding/Marquee.d.ts +28 -0
  276. package/lib/bounding/Marquee.d.ts.map +1 -0
  277. package/lib/bounding/Marquee.js +115 -0
  278. package/lib/bounding/Marquee.js.map +1 -0
  279. package/lib/bounding/MultiBoundingBox.d.ts +33 -0
  280. package/lib/bounding/MultiBoundingBox.d.ts.map +1 -0
  281. package/lib/bounding/MultiBoundingBox.js +377 -0
  282. package/lib/bounding/MultiBoundingBox.js.map +1 -0
  283. package/lib/bounding/index.d.ts +6 -0
  284. package/lib/bounding/index.d.ts.map +1 -0
  285. package/lib/bounding/index.js +22 -0
  286. package/lib/bounding/index.js.map +1 -0
  287. package/lib/bounding/type.d.ts +13 -0
  288. package/lib/bounding/type.d.ts.map +1 -0
  289. package/lib/bounding/type.js +9 -0
  290. package/lib/bounding/type.js.map +1 -0
  291. package/lib/camera/Camera.d.ts +27 -0
  292. package/lib/camera/Camera.d.ts.map +1 -0
  293. package/lib/camera/Camera.js +72 -0
  294. package/lib/camera/Camera.js.map +1 -0
  295. package/lib/camera/index.d.ts +2 -0
  296. package/lib/camera/index.d.ts.map +1 -0
  297. package/lib/camera/index.js +18 -0
  298. package/lib/camera/index.js.map +1 -0
  299. package/lib/contextMenu/ContextMenu.d.ts +57 -0
  300. package/lib/contextMenu/ContextMenu.d.ts.map +1 -0
  301. package/lib/contextMenu/ContextMenu.js +124 -0
  302. package/lib/contextMenu/ContextMenu.js.map +1 -0
  303. package/lib/contextMenu/Interaction.d.ts +22 -0
  304. package/lib/contextMenu/Interaction.d.ts.map +1 -0
  305. package/lib/contextMenu/Interaction.js +265 -0
  306. package/lib/contextMenu/Interaction.js.map +1 -0
  307. package/lib/contextMenu/index.d.ts +3 -0
  308. package/lib/contextMenu/index.d.ts.map +1 -0
  309. package/lib/contextMenu/index.js +19 -0
  310. package/lib/contextMenu/index.js.map +1 -0
  311. package/lib/history/history.d.ts +29 -0
  312. package/lib/history/history.d.ts.map +1 -0
  313. package/lib/history/history.js +127 -0
  314. package/lib/history/history.js.map +1 -0
  315. package/lib/history/index.d.ts +2 -0
  316. package/lib/history/index.d.ts.map +1 -0
  317. package/lib/history/index.js +18 -0
  318. package/lib/history/index.js.map +1 -0
  319. package/lib/index.d.ts +5 -0
  320. package/lib/index.d.ts.map +1 -0
  321. package/lib/index.js +21 -0
  322. package/lib/index.js.map +1 -0
  323. package/lib/loader/Interaction.d.ts +4 -0
  324. package/lib/loader/Interaction.d.ts.map +1 -0
  325. package/lib/loader/Interaction.js +21 -0
  326. package/lib/loader/Interaction.js.map +1 -0
  327. package/lib/loader/Loader.d.ts +19 -0
  328. package/lib/loader/Loader.d.ts.map +1 -0
  329. package/lib/loader/Loader.js +53 -0
  330. package/lib/loader/Loader.js.map +1 -0
  331. package/lib/loader/index.d.ts +3 -0
  332. package/lib/loader/index.d.ts.map +1 -0
  333. package/lib/loader/index.js +19 -0
  334. package/lib/loader/index.js.map +1 -0
  335. package/lib/manager/ContextMenu.d.ts +11 -0
  336. package/lib/manager/ContextMenu.d.ts.map +1 -0
  337. package/lib/manager/ContextMenu.js +50 -0
  338. package/lib/manager/ContextMenu.js.map +1 -0
  339. package/lib/manager/FlipCommand.d.ts +18 -0
  340. package/lib/manager/FlipCommand.d.ts.map +1 -0
  341. package/lib/manager/FlipCommand.js +39 -0
  342. package/lib/manager/FlipCommand.js.map +1 -0
  343. package/lib/manager/KeyEvent.d.ts +16 -0
  344. package/lib/manager/KeyEvent.d.ts.map +1 -0
  345. package/lib/manager/KeyEvent.js +55 -0
  346. package/lib/manager/KeyEvent.js.map +1 -0
  347. package/lib/manager/OrderCommand.d.ts +17 -0
  348. package/lib/manager/OrderCommand.d.ts.map +1 -0
  349. package/lib/manager/OrderCommand.js +32 -0
  350. package/lib/manager/OrderCommand.js.map +1 -0
  351. package/lib/manager/PointerEvent.d.ts +70 -0
  352. package/lib/manager/PointerEvent.d.ts.map +1 -0
  353. package/lib/manager/PointerEvent.js +175 -0
  354. package/lib/manager/PointerEvent.js.map +1 -0
  355. package/lib/manager/SceneCommand.d.ts +18 -0
  356. package/lib/manager/SceneCommand.d.ts.map +1 -0
  357. package/lib/manager/SceneCommand.js +91 -0
  358. package/lib/manager/SceneCommand.js.map +1 -0
  359. package/lib/manager/Selection.d.ts +61 -0
  360. package/lib/manager/Selection.d.ts.map +1 -0
  361. package/lib/manager/Selection.js +309 -0
  362. package/lib/manager/Selection.js.map +1 -0
  363. package/lib/manager/TransformCommand.d.ts +20 -0
  364. package/lib/manager/TransformCommand.d.ts.map +1 -0
  365. package/lib/manager/TransformCommand.js +33 -0
  366. package/lib/manager/TransformCommand.js.map +1 -0
  367. package/lib/manager/index.d.ts +9 -0
  368. package/lib/manager/index.d.ts.map +1 -0
  369. package/lib/manager/index.js +25 -0
  370. package/lib/manager/index.js.map +1 -0
  371. package/lib/serializer/index.d.ts +2 -0
  372. package/lib/serializer/index.d.ts.map +1 -0
  373. package/lib/serializer/index.js +18 -0
  374. package/lib/serializer/index.js.map +1 -0
  375. package/lib/serializer/serializer.d.ts +54 -0
  376. package/lib/serializer/serializer.d.ts.map +1 -0
  377. package/lib/serializer/serializer.js +231 -0
  378. package/lib/serializer/serializer.js.map +1 -0
  379. package/lib/shaders/grid.d.ts +3 -0
  380. package/lib/shaders/grid.d.ts.map +1 -0
  381. package/lib/shaders/grid.js +92 -0
  382. package/lib/shaders/grid.js.map +1 -0
  383. package/lib/shaders/img.d.ts +4 -0
  384. package/lib/shaders/img.d.ts.map +1 -0
  385. package/lib/shaders/img.js +43 -0
  386. package/lib/shaders/img.js.map +1 -0
  387. package/lib/shaders/index.d.ts +4 -0
  388. package/lib/shaders/index.d.ts.map +1 -0
  389. package/lib/shaders/index.js +20 -0
  390. package/lib/shaders/index.js.map +1 -0
  391. package/lib/shaders/shape.d.ts +4 -0
  392. package/lib/shaders/shape.d.ts.map +1 -0
  393. package/lib/shaders/shape.js +33 -0
  394. package/lib/shaders/shape.js.map +1 -0
  395. package/lib/shapes/Grid.d.ts +21 -0
  396. package/lib/shapes/Grid.d.ts.map +1 -0
  397. package/lib/shapes/Grid.js +90 -0
  398. package/lib/shapes/Grid.js.map +1 -0
  399. package/lib/shapes/Img.d.ts +47 -0
  400. package/lib/shapes/Img.d.ts.map +1 -0
  401. package/lib/shapes/Img.js +314 -0
  402. package/lib/shapes/Img.js.map +1 -0
  403. package/lib/shapes/Rect.d.ts +34 -0
  404. package/lib/shapes/Rect.d.ts.map +1 -0
  405. package/lib/shapes/Rect.js +96 -0
  406. package/lib/shapes/Rect.js.map +1 -0
  407. package/lib/shapes/Renderable.d.ts +54 -0
  408. package/lib/shapes/Renderable.d.ts.map +1 -0
  409. package/lib/shapes/Renderable.js +146 -0
  410. package/lib/shapes/Renderable.js.map +1 -0
  411. package/lib/shapes/Shape.d.ts +27 -0
  412. package/lib/shapes/Shape.d.ts.map +1 -0
  413. package/lib/shapes/Shape.js +73 -0
  414. package/lib/shapes/Shape.js.map +1 -0
  415. package/lib/shapes/Triangle.d.ts +20 -0
  416. package/lib/shapes/Triangle.d.ts.map +1 -0
  417. package/lib/shapes/Triangle.js +86 -0
  418. package/lib/shapes/Triangle.js.map +1 -0
  419. package/lib/shapes/index.d.ts +6 -0
  420. package/lib/shapes/index.d.ts.map +1 -0
  421. package/lib/shapes/index.js +23 -0
  422. package/lib/shapes/index.js.map +1 -0
  423. package/lib/state/camera.d.ts +36 -0
  424. package/lib/state/camera.d.ts.map +1 -0
  425. package/lib/state/camera.js +92 -0
  426. package/lib/state/camera.js.map +1 -0
  427. package/lib/state/index.d.ts +4 -0
  428. package/lib/state/index.d.ts.map +1 -0
  429. package/lib/state/index.js +20 -0
  430. package/lib/state/index.js.map +1 -0
  431. package/lib/state/pointerEvent.d.ts +23 -0
  432. package/lib/state/pointerEvent.d.ts.map +1 -0
  433. package/lib/state/pointerEvent.js +53 -0
  434. package/lib/state/pointerEvent.js.map +1 -0
  435. package/lib/state/renderable.d.ts +36 -0
  436. package/lib/state/renderable.d.ts.map +1 -0
  437. package/lib/state/renderable.js +180 -0
  438. package/lib/state/renderable.js.map +1 -0
  439. package/lib/storage/defaultStorage.d.ts +34 -0
  440. package/lib/storage/defaultStorage.d.ts.map +1 -0
  441. package/lib/storage/defaultStorage.js +246 -0
  442. package/lib/storage/defaultStorage.js.map +1 -0
  443. package/lib/storage/index.d.ts +3 -0
  444. package/lib/storage/index.d.ts.map +1 -0
  445. package/lib/storage/index.js +19 -0
  446. package/lib/storage/index.js.map +1 -0
  447. package/lib/storage/storage.d.ts +36 -0
  448. package/lib/storage/storage.d.ts.map +1 -0
  449. package/lib/storage/storage.js +50 -0
  450. package/lib/storage/storage.js.map +1 -0
  451. package/lib/util/camera/camera.d.ts +19 -0
  452. package/lib/util/camera/camera.d.ts.map +1 -0
  453. package/lib/util/camera/camera.js +87 -0
  454. package/lib/util/camera/camera.js.map +1 -0
  455. package/lib/util/camera/index.d.ts +2 -0
  456. package/lib/util/camera/index.d.ts.map +1 -0
  457. package/lib/util/camera/index.js +18 -0
  458. package/lib/util/camera/index.js.map +1 -0
  459. package/lib/util/checks.d.ts +11 -0
  460. package/lib/util/checks.d.ts.map +1 -0
  461. package/lib/util/checks.js +49 -0
  462. package/lib/util/checks.js.map +1 -0
  463. package/lib/util/clipboard.d.ts +7 -0
  464. package/lib/util/clipboard.d.ts.map +1 -0
  465. package/lib/util/clipboard.js +152 -0
  466. package/lib/util/clipboard.js.map +1 -0
  467. package/lib/util/color.d.ts +4 -0
  468. package/lib/util/color.d.ts.map +1 -0
  469. package/lib/util/color.js +11 -0
  470. package/lib/util/color.js.map +1 -0
  471. package/lib/util/customEventType.d.ts +35 -0
  472. package/lib/util/customEventType.d.ts.map +1 -0
  473. package/lib/util/customEventType.js +38 -0
  474. package/lib/util/customEventType.js.map +1 -0
  475. package/lib/util/files.d.ts +19 -0
  476. package/lib/util/files.d.ts.map +1 -0
  477. package/lib/util/files.js +193 -0
  478. package/lib/util/files.js.map +1 -0
  479. package/lib/util/handles.d.ts +10 -0
  480. package/lib/util/handles.d.ts.map +1 -0
  481. package/lib/util/handles.js +20 -0
  482. package/lib/util/handles.js.map +1 -0
  483. package/lib/util/index.d.ts +11 -0
  484. package/lib/util/index.d.ts.map +1 -0
  485. package/lib/util/index.js +27 -0
  486. package/lib/util/index.js.map +1 -0
  487. package/lib/util/performance.d.ts +2 -0
  488. package/lib/util/performance.d.ts.map +1 -0
  489. package/lib/util/performance.js +10 -0
  490. package/lib/util/performance.js.map +1 -0
  491. package/lib/util/shaders.d.ts +2 -0
  492. package/lib/util/shaders.d.ts.map +1 -0
  493. package/lib/util/shaders.js +33 -0
  494. package/lib/util/shaders.js.map +1 -0
  495. package/lib/util/webgl/index.d.ts +3 -0
  496. package/lib/util/webgl/index.d.ts.map +1 -0
  497. package/lib/util/webgl/index.js +19 -0
  498. package/lib/util/webgl/index.js.map +1 -0
  499. package/lib/util/webgl/m3.d.ts +11 -0
  500. package/lib/util/webgl/m3.d.ts.map +1 -0
  501. package/lib/util/webgl/m3.js +101 -0
  502. package/lib/util/webgl/m3.js.map +1 -0
  503. package/lib/util/webgl/uniform.d.ts +5 -0
  504. package/lib/util/webgl/uniform.d.ts.map +1 -0
  505. package/lib/util/webgl/uniform.js +21 -0
  506. package/lib/util/webgl/uniform.js.map +1 -0
  507. package/package.json +95 -0
@@ -0,0 +1,47 @@
1
+ import { AABB } from "../bounding";
2
+ import { Rect } from "./Rect";
3
+ export declare class Img extends Rect {
4
+ private texcoordBuffer?;
5
+ private texcoordLocation?;
6
+ private samplerLocation?;
7
+ private texture?;
8
+ private lowResTexture?;
9
+ private gl?;
10
+ private program?;
11
+ private texCoordArray;
12
+ private _fileId;
13
+ private _src;
14
+ private _image;
15
+ private useLowRes;
16
+ private lowResNeedsRefresh;
17
+ private bitmap;
18
+ private lowResBitmap;
19
+ constructor(config: Partial<{
20
+ x: number;
21
+ y: number;
22
+ src: string;
23
+ sx?: number;
24
+ sy?: number;
25
+ width?: number;
26
+ height?: number;
27
+ }>);
28
+ get src(): string;
29
+ set src(val: string);
30
+ get fileId(): string | number;
31
+ set fileId(val: string | number);
32
+ determineIfLowRes(cameraBoundingBox: AABB, zoomFactor: number, threshold?: number): boolean;
33
+ setUseLowRes(useLowRes: boolean, gl?: WebGLRenderingContext): Promise<void>;
34
+ private loadImage;
35
+ private updateImageTexture;
36
+ private ensureLowResUploaded;
37
+ private setLowResTextureFromBitmap;
38
+ private initialiseTexture;
39
+ private setUpTexData;
40
+ private setTexture;
41
+ updateVertexData(gl: WebGLRenderingContext): void;
42
+ getVertexCount(): number;
43
+ render(gl: WebGLRenderingContext, program: WebGLProgram): void;
44
+ protected draw(gl: WebGLRenderingContext): void;
45
+ destroy(): void;
46
+ }
47
+ //# sourceMappingURL=Img.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Img.d.ts","sourceRoot":"src/","sources":["shapes/Img.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,GAAI,SAAQ,IAAI;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAc;IACrC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,eAAe,CAAC,CAAuB;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,EAAE,CAAC,CAAwB;IACnC,OAAO,CAAC,OAAO,CAAC,CAAe;IAE/B,OAAO,CAAC,aAAa,CAalB;IAGH,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAc;gBAGhC,MAAM,EAAE,OAAO,CAAC;QACd,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAOJ,IAAI,GAAG,IAGM,MAAM,CADlB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAMlB;IAED,IAAI,MAAM,IAGM,MAAM,GAAG,MAAM,CAD9B;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAE9B;IAED,iBAAiB,CACf,iBAAiB,EAAE,IAAI,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAM;IAaX,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,qBAAqB;IAWjE,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,kBAAkB;YAgDZ,oBAAoB;IA4ClC,OAAO,CAAC,0BAA0B;IA0BlC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;IAoClB,gBAAgB,CAAC,EAAE,EAAE,qBAAqB;IAQ1C,cAAc,IAAI,MAAM;IAIxB,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAyB9D,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB;IA4CxC,OAAO;CAuCR"}
@@ -0,0 +1,310 @@
1
+ import { Rect } from "./Rect";
2
+ export class Img extends Rect {
3
+ constructor(config) {
4
+ super(config);
5
+ this.texCoordArray = new Float32Array([
6
+ 0,
7
+ 0, // top-left
8
+ 0,
9
+ 1, // bottom-left
10
+ 1,
11
+ 0, // top-right
12
+ 1,
13
+ 0, // top-right
14
+ 0,
15
+ 1, // bottom-left
16
+ 1,
17
+ 1, // bottom-right
18
+ ]);
19
+ this.useLowRes = false;
20
+ this.lowResNeedsRefresh = true;
21
+ this._src = config.src;
22
+ this.loadImage(config.src, config.width, config.height);
23
+ }
24
+ get src() {
25
+ return this._src;
26
+ }
27
+ set src(val) {
28
+ if (this._src !== val) {
29
+ this._src = val;
30
+ this.updateImageTexture(val);
31
+ this.markDirty();
32
+ }
33
+ }
34
+ get fileId() {
35
+ return this._fileId;
36
+ }
37
+ set fileId(val) {
38
+ this._fileId = val;
39
+ }
40
+ determineIfLowRes(cameraBoundingBox, zoomFactor, threshold = 0.1) {
41
+ // get both starting point and end point of each axis
42
+ // compare that with the bounding box of the container (0 -> edge)
43
+ // see how much space the visible parts of the image takes up
44
+ const cameraArea = cameraBoundingBox.getArea();
45
+ const area = this.getBoundingBox().getArea();
46
+ // Low-res if area ratio is below threshold
47
+ return area / cameraArea < threshold / zoomFactor;
48
+ }
49
+ async setUseLowRes(useLowRes, gl) {
50
+ // checks for current state to see if we are already using low res so we can avoid doing the extra work
51
+ if (this.useLowRes === useLowRes && !this.lowResNeedsRefresh)
52
+ return;
53
+ this.useLowRes = useLowRes;
54
+ if ((useLowRes && gl) || this.lowResNeedsRefresh) {
55
+ await this.ensureLowResUploaded(gl);
56
+ }
57
+ this.markDirty();
58
+ this.lowResNeedsRefresh = false;
59
+ }
60
+ loadImage(src, width, height) {
61
+ if (this.culled)
62
+ return;
63
+ this.updateImageTexture(src, width, height);
64
+ }
65
+ updateImageTexture(src, width, height) {
66
+ this._image = new Image();
67
+ this._image.crossOrigin = "anonymous";
68
+ this._image.onload = async () => {
69
+ this.width = width ?? this._image.naturalWidth;
70
+ this.height = height ?? this._image.naturalHeight;
71
+ try {
72
+ if (this.bitmap) {
73
+ try {
74
+ this.bitmap.close();
75
+ }
76
+ catch (e) { }
77
+ this.bitmap = undefined;
78
+ }
79
+ if (typeof createImageBitmap === "function") {
80
+ this.bitmap = await createImageBitmap(this._image);
81
+ }
82
+ }
83
+ catch (err) {
84
+ console.warn("createImageBitmap failed, falling back to HTMLImageElement", err);
85
+ this.bitmap = undefined;
86
+ }
87
+ if (this.gl && this.program) {
88
+ try {
89
+ if (this.texture && this.gl) {
90
+ this.gl.deleteTexture(this.texture);
91
+ this.texture = undefined;
92
+ }
93
+ this.initialiseTexture();
94
+ this.initialized = true;
95
+ this.markDirty();
96
+ }
97
+ catch (err) {
98
+ console.error("Failed to initialise texture on image load", err);
99
+ }
100
+ }
101
+ // only trigger regeneration of the low res once the image has been updated
102
+ this.lowResNeedsRefresh = true;
103
+ };
104
+ this._image.onerror = (error) => {
105
+ console.error("Failed to load image:", src, error);
106
+ };
107
+ this._image.src = src;
108
+ }
109
+ async ensureLowResUploaded(gl) {
110
+ if (this.lowResTexture && !this.lowResNeedsRefresh)
111
+ return;
112
+ if (!this._image || !this._image.complete)
113
+ return;
114
+ try {
115
+ const targetMaxSide = 256;
116
+ const naturalW = this._image.naturalWidth;
117
+ const naturalH = this._image.naturalHeight;
118
+ const scale = Math.min(1, targetMaxSide / Math.max(1, Math.max(naturalW, naturalH)));
119
+ const w = Math.max(1, Math.round(naturalW * scale));
120
+ const h = Math.max(1, Math.round(naturalH * scale));
121
+ let canvas;
122
+ if (typeof OffscreenCanvas !== "undefined") {
123
+ canvas = new OffscreenCanvas(w, h);
124
+ }
125
+ else {
126
+ canvas = document.createElement("canvas");
127
+ canvas.width = w;
128
+ canvas.height = h;
129
+ }
130
+ const ctx = canvas.getContext("2d");
131
+ ctx.clearRect(0, 0, w, h);
132
+ const ratio = Math.min(w / naturalW, h / naturalH);
133
+ const dw = Math.round(naturalW * ratio);
134
+ const dh = Math.round(naturalH * ratio);
135
+ const dx = Math.round((w - dw) / 2);
136
+ const dy = Math.round((h - dh) / 2);
137
+ ctx.drawImage(this._image, 0, 0, naturalW, naturalH, dx, dy, dw, dh);
138
+ this.lowResBitmap = await createImageBitmap(canvas);
139
+ this.setLowResTextureFromBitmap(gl, this.lowResBitmap);
140
+ }
141
+ catch (err) {
142
+ console.error("Failed to create/upload low-res image", err);
143
+ }
144
+ }
145
+ setLowResTextureFromBitmap(gl, bitmap) {
146
+ if (this.lowResTexture) {
147
+ try {
148
+ gl.deleteTexture(this.lowResTexture);
149
+ }
150
+ catch (e) { }
151
+ this.lowResTexture = undefined;
152
+ }
153
+ this.lowResTexture = gl.createTexture();
154
+ gl.bindTexture(gl.TEXTURE_2D, this.lowResTexture);
155
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
156
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
157
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
158
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
159
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, bitmap);
160
+ gl.bindTexture(gl.TEXTURE_2D, null);
161
+ this.markDirty();
162
+ }
163
+ // data upload
164
+ initialiseTexture() {
165
+ if (!this.gl || !this.program)
166
+ return;
167
+ if (!this._image || !this._image.complete || this._image.naturalWidth === 0)
168
+ return;
169
+ this.setUpVertexData(this.gl, this.program);
170
+ this.setUpTexData(this.gl, this.program);
171
+ this.setTexture(this.gl);
172
+ super.setUpUniforms(this.gl, this.program);
173
+ this.samplerLocation = this.gl.getUniformLocation(this.program, "u_image");
174
+ if (this.samplerLocation)
175
+ this.gl.uniform1i(this.samplerLocation, 0);
176
+ }
177
+ setUpTexData(gl, program) {
178
+ if (!this.texcoordBuffer) {
179
+ this.texcoordBuffer = gl.createBuffer();
180
+ }
181
+ this.texcoordLocation = gl.getAttribLocation(program, "a_texCoord");
182
+ }
183
+ setTexture(gl) {
184
+ if (this.texture) {
185
+ try {
186
+ try {
187
+ gl.deleteTexture(this.texture);
188
+ }
189
+ catch (e) { }
190
+ }
191
+ catch (e) { }
192
+ this.texture = undefined;
193
+ }
194
+ this.texture = gl.createTexture();
195
+ gl.bindTexture(gl.TEXTURE_2D, this.texture);
196
+ // Set the parameters so we can render any size image.
197
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
198
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
199
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
200
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
201
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
202
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
203
+ // Upload the image into the texture.
204
+ const srcForTex = this.bitmap ?? this._image;
205
+ if (srcForTex) {
206
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, srcForTex);
207
+ }
208
+ gl.bindTexture(gl.TEXTURE_2D, null);
209
+ }
210
+ updateVertexData(gl) {
211
+ super.updateVertexData(gl);
212
+ // Upload texture coordinates
213
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.texcoordBuffer);
214
+ gl.bufferData(gl.ARRAY_BUFFER, this.texCoordArray, gl.STATIC_DRAW);
215
+ }
216
+ getVertexCount() {
217
+ return 6;
218
+ }
219
+ render(gl, program) {
220
+ if (this.dirty && !this.culled) {
221
+ this.updateWorldMatrix(this.parent ? this.parent.worldMatrix : undefined);
222
+ if (!this.initialized) {
223
+ this.gl = gl;
224
+ this.program = program;
225
+ this.initialiseTexture();
226
+ // Only create texture if image is loaded
227
+ if (this._image.complete && this._image.naturalWidth > 0) {
228
+ this.initialized = true;
229
+ }
230
+ else {
231
+ // Image not ready yet, skip initialization
232
+ return;
233
+ }
234
+ }
235
+ this.updateVertexData(gl);
236
+ this.clearDirty();
237
+ }
238
+ super.updateUniforms(gl);
239
+ if (!this.culled)
240
+ this.draw(gl);
241
+ }
242
+ draw(gl) {
243
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer);
244
+ const size = 2; // 2 components per iteration since it's a vec2D
245
+ const type = gl.FLOAT; // the data is 32bit floats
246
+ const normalize = false; // don't normalize the data
247
+ const stride = 0; // 0 = move forward size * sizeof(type) each iteration to get the next position
248
+ const offset = 0; // start at the beginning of the buffer
249
+ gl.vertexAttribPointer(this.attributeLocation, size, type, normalize, stride, offset);
250
+ gl.enableVertexAttribArray(this.attributeLocation);
251
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.texcoordBuffer);
252
+ gl.vertexAttribPointer(this.texcoordLocation, size, type, normalize, stride, offset);
253
+ gl.enableVertexAttribArray(this.texcoordLocation);
254
+ gl.activeTexture(gl.TEXTURE0);
255
+ try {
256
+ const tex = this.useLowRes && this.lowResTexture
257
+ ? this.lowResTexture
258
+ : this.texture;
259
+ gl.bindTexture(gl.TEXTURE_2D, tex);
260
+ gl.drawArrays(gl.TRIANGLES, 0, this.getVertexCount());
261
+ }
262
+ catch (err) {
263
+ console.error(err);
264
+ }
265
+ }
266
+ destroy() {
267
+ if (this.texcoordBuffer) {
268
+ try {
269
+ this.gl.deleteBuffer(this.texcoordBuffer);
270
+ }
271
+ catch (e) { }
272
+ this.texcoordBuffer = undefined;
273
+ }
274
+ if (this.texture) {
275
+ try {
276
+ this.gl.deleteTexture(this.texture);
277
+ }
278
+ catch (e) { }
279
+ this.texture = undefined;
280
+ }
281
+ if (this.lowResTexture) {
282
+ try {
283
+ this.gl.deleteTexture(this.lowResTexture);
284
+ }
285
+ catch (e) { }
286
+ this.lowResTexture = undefined;
287
+ }
288
+ if (this.bitmap) {
289
+ try {
290
+ this.bitmap.close();
291
+ }
292
+ catch (e) { }
293
+ this.bitmap = undefined;
294
+ }
295
+ if (this.lowResBitmap) {
296
+ try {
297
+ this.lowResBitmap.close();
298
+ }
299
+ catch (e) { }
300
+ this.lowResBitmap = undefined;
301
+ }
302
+ this.texcoordLocation = undefined;
303
+ this.samplerLocation = undefined;
304
+ try {
305
+ super.destroy();
306
+ }
307
+ catch (e) { }
308
+ }
309
+ }
310
+ //# sourceMappingURL=Img.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Img.js","sourceRoot":"src/","sources":["shapes/Img.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { AABB } from "../bounding";
2
+ import { Shape } from "./Shape";
3
+ export declare class Rect extends Shape {
4
+ private _width;
5
+ private _height;
6
+ AABB: AABB;
7
+ constructor(config: Partial<{
8
+ x: number;
9
+ y: number;
10
+ width: number;
11
+ height: number;
12
+ sx?: number;
13
+ sy?: number;
14
+ }>);
15
+ get width(): number;
16
+ set width(value: number);
17
+ get height(): number;
18
+ set height(value: number);
19
+ getVertexCount(): number;
20
+ getPositions(): number[];
21
+ /**
22
+ *
23
+ * @returns A bounding box that is not adjusted for world space.
24
+ */
25
+ getBoundingBox(): AABB;
26
+ getEdge(): {
27
+ minX: number;
28
+ maxX: number;
29
+ minY: number;
30
+ maxY: number;
31
+ };
32
+ hitTest(x: number, y: number): boolean;
33
+ }
34
+ //# sourceMappingURL=Rect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rect.d.ts","sourceRoot":"src/","sources":["shapes/Rect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAMnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,IAAK,SAAQ,KAAK;IAE7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,IAAI,EAAE,IAAI,CAAC;gBAGT,MAAM,EAAE,OAAO,CAAC;QACd,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IAOJ,IAAI,KAAK,IAGQ,MAAM,CADtB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAED,IAAI,MAAM,IAGQ,MAAM,CADvB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAKvB;IAED,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM,EAAE;IAsBxB;;;OAGG;IACH,cAAc;IAgBd,OAAO;;;;;;IAWP,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;CAkBvC"}
@@ -0,0 +1,92 @@
1
+ import { AABB } from "../bounding";
2
+ import { getScalesFromMatrix, applyMatrixToPoint, isScalePositive, } from "../util";
3
+ import { Shape } from "./Shape";
4
+ export class Rect extends Shape {
5
+ constructor(config) {
6
+ super(config.x, config.y, config.sx, config.sy);
7
+ this._width = config.width ?? 100;
8
+ this._height = config.height ?? 100;
9
+ }
10
+ get width() {
11
+ return this._width;
12
+ }
13
+ set width(value) {
14
+ if (this._width !== value) {
15
+ this._width = value;
16
+ this.markDirty();
17
+ }
18
+ }
19
+ get height() {
20
+ return this._height;
21
+ }
22
+ set height(value) {
23
+ if (this._height !== value) {
24
+ this._height = value;
25
+ this.markDirty();
26
+ }
27
+ }
28
+ getVertexCount() {
29
+ return 6;
30
+ }
31
+ getPositions() {
32
+ const left = 0;
33
+ const top = 0;
34
+ const right = this.width;
35
+ const bottom = this.height;
36
+ return [
37
+ left,
38
+ top, // top-left
39
+ left,
40
+ bottom, // bottom-left
41
+ right,
42
+ top, // top-right
43
+ right,
44
+ top, // top-right
45
+ left,
46
+ bottom, // bottom-left
47
+ right,
48
+ bottom, // bottom-right
49
+ ];
50
+ }
51
+ /**
52
+ *
53
+ * @returns A bounding box that is not adjusted for world space.
54
+ */
55
+ getBoundingBox() {
56
+ // due to possible flips, the original width could be flipped by the scale value and become lesser the its translation[0]
57
+ const x0 = this.state.translation[0];
58
+ const x1 = x0 + this.width * this.state.scaleX;
59
+ const y0 = this.state.translation[1];
60
+ const y1 = y0 + this.height * this.state.scaleY;
61
+ const minX = Math.min(x0, x1);
62
+ const maxX = Math.max(x0, x1);
63
+ const minY = Math.min(y0, y1);
64
+ const maxY = Math.max(y0, y1);
65
+ this.AABB = new AABB(minX, minY, maxX, maxY);
66
+ return this.AABB;
67
+ }
68
+ getEdge() {
69
+ const x = this.x, y = this.y;
70
+ return {
71
+ minX: Math.min(x, x + this.width),
72
+ maxX: Math.max(x, x + this.width),
73
+ minY: Math.min(y, y + this.height),
74
+ maxY: Math.max(y, y + this.height),
75
+ };
76
+ }
77
+ hitTest(x, y) {
78
+ const [scaleX, scaleY] = getScalesFromMatrix(this.worldMatrix);
79
+ const [signX, signY] = isScalePositive(this.worldMatrix);
80
+ // Transform the input point to the rectangle's local space
81
+ const [hx, hy] = applyMatrixToPoint(this.parent.worldMatrix, x, y);
82
+ const [cx, cy] = applyMatrixToPoint(this.worldMatrix);
83
+ const w = this.width * scaleX * signX;
84
+ const h = this.height * scaleY * signY;
85
+ const minX = Math.min(cx, cx + w);
86
+ const maxX = Math.max(cx, cx + w);
87
+ const minY = Math.min(cy, cy + h);
88
+ const maxY = Math.max(cy, cy + h);
89
+ return hx >= minX && hx <= maxX && hy >= minY && hy <= maxY;
90
+ }
91
+ }
92
+ //# sourceMappingURL=Rect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rect.js","sourceRoot":"src/","sources":["shapes/Rect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import EventEmitter from "eventemitter3";
2
+ import { RenderableState } from "../state";
3
+ export declare abstract class Renderable {
4
+ state: RenderableState;
5
+ get x(): number;
6
+ get y(): number;
7
+ get sx(): number;
8
+ get sy(): number;
9
+ get dirty(): boolean;
10
+ get localMatrix(): number[];
11
+ get worldMatrix(): number[];
12
+ get children(): Renderable[];
13
+ get parent(): Renderable;
14
+ get angleRadians(): number;
15
+ updateTranslation(x: number, y: number): void;
16
+ setTranslation(x: number, y: number): void;
17
+ updateScale(x: number, y: number): void;
18
+ setScale(x: number, y: number): void;
19
+ setAngle(rotationDegree: number): void;
20
+ flipVertical(height: number): void;
21
+ flipHorizontal(width: number): void;
22
+ markDirty(): void;
23
+ clearDirty(): void;
24
+ updateLocalMatrix(): void;
25
+ setWorldMatrix(matrix: number[]): void;
26
+ addChild(child: Renderable): void;
27
+ addParent(parent: Renderable | null): void;
28
+ clearChildren(): void;
29
+ _emitter: EventEmitter;
30
+ constructor();
31
+ appendChild<T extends Renderable>(child: T): T;
32
+ setParent(parent: Renderable | null): void;
33
+ updateWorldMatrix(parentWorldMatrix?: number[]): void;
34
+ abstract render(gl: WebGLRenderingContext, program: WebGLProgram): void;
35
+ abstract destroy(): void;
36
+ abstract hitTest(x: number, y: number): boolean;
37
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
38
+ removeEventListener(type: string, listener?: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
39
+ dispatchEvent(e: Event): boolean;
40
+ }
41
+ export declare abstract class WebGLRenderable extends Renderable {
42
+ protected positionBuffer?: WebGLBuffer;
43
+ protected attributeLocation?: number;
44
+ protected initialized: boolean;
45
+ protected vertexArray?: Float32Array;
46
+ protected resolutionLocation?: WebGLUniformLocation;
47
+ protected matrixLocation?: WebGLUniformLocation;
48
+ abstract getPositions(): number[] | Float32Array;
49
+ updateVertexData(gl: WebGLRenderingContext): void;
50
+ protected setUpVertexData(gl: WebGLRenderingContext, program: WebGLProgram): void;
51
+ protected setUpUniforms(gl: WebGLRenderingContext, program: WebGLProgram): void;
52
+ protected updateUniforms(gl: WebGLRenderingContext): void;
53
+ }
54
+ //# sourceMappingURL=Renderable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderable.d.ts","sourceRoot":"src/","sources":["shapes/Renderable.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,8BAAsB,UAAU;IAC9B,KAAK,EAAE,eAAe,CAAC;IAEvB,IAAI,CAAC,WAEJ;IACD,IAAI,CAAC,WAEJ;IACD,IAAI,EAAE,WAEL;IACD,IAAI,EAAE,WAEL;IACD,IAAI,KAAK,YAER;IACD,IAAI,WAAW,aAEd;IACD,IAAI,WAAW,aAEd;IACD,IAAI,QAAQ,iBAEX;IACD,IAAI,MAAM,eAET;IACD,IAAI,YAAY,WAEf;IAED,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAGtC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAGnC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAGhC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAG7B,QAAQ,CAAC,cAAc,EAAE,MAAM;IAG/B,YAAY,CAAC,MAAM,EAAE,MAAM;IAG3B,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,SAAS;IAGT,UAAU;IAIV,iBAAiB;IAGjB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;IAI/B,QAAQ,CAAC,KAAK,EAAE,UAAU;IAG1B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAGnC,aAAa;IAIb,QAAQ,EAAE,YAAY,CAAC;;IASvB,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;IAM9C,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IASnC,iBAAiB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE;IAK9C,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IACvE,QAAQ,CAAC,OAAO,IAAI,IAAI;IACxB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAE/C,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,EAC5C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB;IAS7C,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,kCAAkC,EAC7C,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB;IAG1C,aAAa,CAAC,CAAC,EAAE,KAAK;CAIvB;AAED,8BAAsB,eAAgB,SAAQ,UAAU;IACtD,SAAS,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IACvC,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,WAAW,UAAS;IAC9B,SAAS,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IAErC,SAAS,CAAC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IACpD,SAAS,CAAC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAEhD,QAAQ,CAAC,YAAY,IAAI,MAAM,EAAE,GAAG,YAAY;IAEhD,gBAAgB,CAAC,EAAE,EAAE,qBAAqB;IAa1C,SAAS,CAAC,eAAe,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY;IAO1E,SAAS,CAAC,aAAa,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY;IAKxE,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,qBAAqB;CAInD"}