@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,54 @@
1
+ import { ImageFileMetadata } from "storage";
2
+ import { Canvas } from "../Canvas";
3
+ import { Renderable } from "../shapes";
4
+ export type SerializedTransform = {
5
+ x: number;
6
+ y: number;
7
+ sx: number;
8
+ sy: number;
9
+ };
10
+ export type SerializedNodeBase = {
11
+ id?: number;
12
+ type: string;
13
+ transform?: SerializedTransform;
14
+ children?: SerializedNode[];
15
+ layer?: number;
16
+ renderOrder?: number;
17
+ };
18
+ export type SerializedRect = SerializedNodeBase & {
19
+ type: "Rect";
20
+ width: number;
21
+ height: number;
22
+ color: [number, number, number, number];
23
+ };
24
+ export type SerializedImg = SerializedNodeBase & {
25
+ type: "Img";
26
+ width: number;
27
+ height: number;
28
+ fileId: number | string;
29
+ };
30
+ export type SerializedGrid = SerializedNodeBase & {
31
+ type: "Grid";
32
+ style?: number;
33
+ };
34
+ export type SerializedNode = SerializedRect | SerializedImg | SerializedGrid | SerializedNodeBase;
35
+ export type SerializedCamera = {
36
+ zoom: number;
37
+ x: number;
38
+ y: number;
39
+ };
40
+ export type SerializedCanvas = {
41
+ version: 1;
42
+ canvas: {
43
+ width: number;
44
+ height: number;
45
+ dpr: number;
46
+ };
47
+ camera?: SerializedCamera;
48
+ root: SerializedNode;
49
+ files?: ImageFileMetadata[];
50
+ };
51
+ export declare function serializeNode(node: Renderable): SerializedNode;
52
+ export declare function serializeCanvas(canvas: Canvas, files?: ImageFileMetadata[]): SerializedCanvas;
53
+ export declare function deserializeCanvas(data: SerializedCanvas, canvas: Canvas, getFile: (id: string | number) => Promise<ImageFileMetadata>, writeFileToDatabase?: (data: string) => void): Promise<Canvas>;
54
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"src/","sources":["serializer/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAmB,MAAM,WAAW,CAAC;AAmBxD,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG;IAC/C,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,aAAa,GACb,cAAc,GACd,kBAAkB,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC7B,CAAC;AAeF,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CA0C9D;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,iBAAiB,EAAE,GAC1B,gBAAgB,CAiBlB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EAC5D,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,mBA6F7C"}
@@ -0,0 +1,226 @@
1
+ import { Canvas } from "../Canvas";
2
+ import { Rect, Img, Grid } from "../shapes";
3
+ import { hashStringToId } from "../util";
4
+ /**
5
+ * What should be exposed?
6
+ * the images created - their position, scale and src - maintain the order they have been saved
7
+ *
8
+ * grid state should be tracked to decide if grid lines are there or not - TO BE IMPLEMENTED
9
+ *
10
+ * Should camera position be tracked
11
+ *
12
+ * How often should we write to the chosen method fo storage? When initialising the exporter, we can decide between indexdb and an actual db
13
+ * is there anyway to force a save when the app closes? In what circumstances will that not work? An ungraceful shutdown?
14
+ */
15
+ const PLACEHOLDER_IMAGE_SRC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSIjYjNiM2IzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgNmEyLjI1IDIuMjUgMCAwIDEgMi4yNS0yLjI1aDE2LjVBMi4yNSAyLjI1IDAgMCAxIDIyLjUgNnYxMmEyLjI1IDIuMjUgMCAwIDEtMi4yNSAyLjI1SDMuNzVBMi4yNSAyLjI1IDAgMCAxIDEuNSAxOHpNMyAxNi4wNlYxOGMwIC40MTQuMzM2Ljc1Ljc1Ljc1aDE2LjVBLjc1Ljc1IDAgMCAwIDIxIDE4di0xLjk0bC0yLjY5LTIuNjg5YTEuNSAxLjUgMCAwIDAtMi4xMiAwbC0uODguODc5bC45Ny45N2EuNzUuNzUgMCAxIDEtMS4wNiAxLjA2bC01LjE2LTUuMTU5YTEuNSAxLjUgMCAwIDAtMi4xMiAwem0xMC4xMjUtNy44MWExLjEyNSAxLjEyNSAwIDEgMSAyLjI1IDBhMS4xMjUgMS4xMjUgMCAwIDEtMi4yNSAwIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=";
16
+ const PLACEHOLDER_IMAGE_SIZE = 240;
17
+ function transformOf(node) {
18
+ return {
19
+ x: node.x ?? 0,
20
+ y: node.y ?? 0,
21
+ sx: node.sx ?? 1,
22
+ sy: node.sy ?? 1,
23
+ };
24
+ }
25
+ function serializeChildren(node) {
26
+ return node.children.map(serializeNode);
27
+ }
28
+ export function serializeNode(node) {
29
+ if (node instanceof Img) {
30
+ const base = {
31
+ type: "Img",
32
+ id: node.seq,
33
+ renderOrder: node.renderOrder,
34
+ transform: transformOf(node),
35
+ width: node.width,
36
+ height: node.height,
37
+ fileId: node.fileId,
38
+ children: node.children?.length ? serializeChildren(node) : undefined,
39
+ };
40
+ return base;
41
+ }
42
+ if (node instanceof Rect) {
43
+ const base = {
44
+ type: "Rect",
45
+ id: node.seq,
46
+ renderOrder: node.renderOrder,
47
+ transform: transformOf(node),
48
+ width: node.width,
49
+ height: node.height,
50
+ color: node.color,
51
+ children: node.children?.length ? serializeChildren(node) : undefined,
52
+ };
53
+ return base;
54
+ }
55
+ if (node instanceof Grid) {
56
+ const base = {
57
+ type: "Grid",
58
+ style: node.gridType,
59
+ };
60
+ return base;
61
+ }
62
+ const generic = {
63
+ type: "Renderable",
64
+ children: node.children?.length ? serializeChildren(node) : undefined,
65
+ };
66
+ return generic;
67
+ }
68
+ export function serializeCanvas(canvas, files) {
69
+ const { gl } = canvas;
70
+ return {
71
+ version: 1,
72
+ canvas: {
73
+ width: gl.canvas.width,
74
+ height: gl.canvas.height,
75
+ dpr: window.devicePixelRatio || 1,
76
+ },
77
+ camera: {
78
+ x: canvas.camera.state.x,
79
+ y: canvas.camera.state.y,
80
+ zoom: canvas.camera.state.zoom,
81
+ },
82
+ root: serializeNode(canvas),
83
+ files,
84
+ };
85
+ }
86
+ export async function deserializeCanvas(data, canvas, getFile, writeFileToDatabase) {
87
+ canvas.children.length = 0;
88
+ if (data.camera) {
89
+ canvas.camera.state.setZoom(data.camera.zoom);
90
+ canvas.camera.state.setX(data.camera.x);
91
+ canvas.camera.state.setY(data.camera.y);
92
+ }
93
+ async function build(node, parent) {
94
+ let instance;
95
+ switch (node.type) {
96
+ case "Rect":
97
+ instance = new Rect({
98
+ x: node.transform.x,
99
+ y: node.transform.y,
100
+ width: node.width,
101
+ height: node.height,
102
+ });
103
+ instance.setScale(node.transform.sx, node.transform.sy);
104
+ canvas.appendChild(instance);
105
+ break;
106
+ case "Img":
107
+ let src;
108
+ try {
109
+ src = (() => {
110
+ if (data.files && Array.isArray(data.files)) {
111
+ const fileMeta = data.files.find((e) => e.id === node.fileId);
112
+ return fileMeta?.dataURL ?? PLACEHOLDER_IMAGE_SRC;
113
+ }
114
+ return PLACEHOLDER_IMAGE_SRC;
115
+ })();
116
+ if (writeFileToDatabase) {
117
+ writeFileToDatabase(src);
118
+ }
119
+ const width = node.width;
120
+ const height = node.height;
121
+ const framedPlaceholder = await framePlaceholder(src, width * node.transform.sx, height * node.transform.sy);
122
+ instance = new Img({
123
+ x: node.transform.x,
124
+ y: node.transform.y,
125
+ src: framedPlaceholder,
126
+ width,
127
+ height,
128
+ });
129
+ getFile(node.fileId)
130
+ .then((file) => {
131
+ console.log("image loaded!");
132
+ instance.src = file.dataURL;
133
+ })
134
+ .catch((err) => console.error("Image not loaded", err));
135
+ // skip hashing if it already has a file ID
136
+ instance.fileId =
137
+ node.fileId ?? (await hashStringToId(src));
138
+ instance.setScale(node.transform.sx, node.transform.sy);
139
+ canvas.appendChild(instance);
140
+ if (typeof node.renderOrder === "number") {
141
+ instance.renderOrder = node.renderOrder;
142
+ }
143
+ }
144
+ catch (err) {
145
+ // delete node from storage? It won't be saved in the next instance, so perhaps it's fine?
146
+ console.error(`Failed to match image to restore with source: ${src}`);
147
+ }
148
+ finally {
149
+ break;
150
+ }
151
+ case "Grid":
152
+ if (parent instanceof Canvas) {
153
+ parent.grid.gridType = node.style;
154
+ }
155
+ break;
156
+ default:
157
+ break;
158
+ }
159
+ if (node.children) {
160
+ for (const child of node.children)
161
+ await build(child, instance);
162
+ }
163
+ }
164
+ await build(data.root, canvas);
165
+ return canvas;
166
+ }
167
+ async function loadImageElement(src) {
168
+ const img = new Image();
169
+ img.crossOrigin = "anonymous";
170
+ return new Promise((resolve, reject) => {
171
+ img.onload = () => resolve(img);
172
+ img.onerror = (err) => reject(err);
173
+ img.src = src;
174
+ });
175
+ }
176
+ async function framePlaceholder(srcOrBlob, tw, th, bg = "#d6d6d6ff") {
177
+ let objectUrl = null;
178
+ let src;
179
+ if (srcOrBlob instanceof Blob) {
180
+ objectUrl = URL.createObjectURL(srcOrBlob);
181
+ src = objectUrl;
182
+ }
183
+ else {
184
+ src = srcOrBlob;
185
+ }
186
+ try {
187
+ let img = null;
188
+ try {
189
+ img = await loadImageElement(src);
190
+ }
191
+ catch (e) {
192
+ // Swallow in order to proceed with a background-only placeholder
193
+ }
194
+ const targetW = tw && tw > 0 ? tw : (img?.naturalWidth ?? PLACEHOLDER_IMAGE_SIZE);
195
+ const targetH = th && th > 0 ? th : (img?.naturalHeight ?? PLACEHOLDER_IMAGE_SIZE);
196
+ const canvas = document.createElement("canvas");
197
+ canvas.width = targetW;
198
+ canvas.height = targetH;
199
+ const ctx = canvas.getContext("2d");
200
+ ctx.fillStyle = bg;
201
+ ctx.fillRect(0, 0, targetW, targetH);
202
+ if (img) {
203
+ // if any of the sides is less than the placeholder image size, then use the natural ratio
204
+ const ratio = Math.min(targetW / img.naturalWidth, targetH / img.naturalHeight);
205
+ const ratioedHeight = img.naturalHeight * ratio;
206
+ const ratioedWidth = img.naturalWidth * ratio;
207
+ let dw = PLACEHOLDER_IMAGE_SIZE;
208
+ let dh = PLACEHOLDER_IMAGE_SIZE;
209
+ if (PLACEHOLDER_IMAGE_SIZE > ratioedHeight ||
210
+ PLACEHOLDER_IMAGE_SIZE > ratioedWidth) {
211
+ dw = ratioedWidth;
212
+ dh = ratioedHeight;
213
+ }
214
+ const dx = Math.round((targetW - dw) / 2);
215
+ const dy = Math.round((targetH - dh) / 2);
216
+ ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, dx, dy, dw, dh);
217
+ }
218
+ return canvas.toDataURL("image/png");
219
+ }
220
+ finally {
221
+ if (objectUrl) {
222
+ URL.revokeObjectURL(objectUrl);
223
+ }
224
+ }
225
+ }
226
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"src/","sources":["serializer/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const gridVert = "\n#extension GL_OES_standard_derivatives : enable\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nprecision highp int;\n#else\nprecision mediump float;\nprecision mediump int;\n#endif\n\nuniform mat3 u_ViewProjectionInvMatrix;\nuniform float u_ZoomScale;\nuniform float u_CheckboardStyle;\nuniform float u_z;\n\nattribute vec2 a_Position;\n\nvarying vec2 v_Position;\n\nvec2 project_clipspace_to_world(vec2 p) {\n return (u_ViewProjectionInvMatrix * vec3(p, 1.0)).xy;\n}\n\nvoid main() {\n v_Position = project_clipspace_to_world(a_Position);\n float z = mix(1.0, -1.0, u_z);\n gl_Position = vec4(a_Position, z, 1.0);\n}\n";
2
+ export declare const gridFrag = "\n#extension GL_OES_standard_derivatives : enable\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nprecision highp int;\n#else\nprecision mediump float;\nprecision mediump int;\n#endif\n\nuniform mat3 u_ViewProjectionInvMatrix;\nuniform float u_ZoomScale;\nuniform float u_CheckboardStyle;\n\nvarying vec2 v_Position;\n\nconst vec4 GRID_COLOR = vec4(0.87, 0.87, 0.87, 1.0);\nconst vec4 PAGE_COLOR = vec4(0.986, 0.986, 0.986, 1.0);\nconst int CHECKERBOARD_STYLE_NONE = 0;\nconst int CHECKERBOARD_STYLE_GRID = 1;\nconst int CHECKERBOARD_STYLE_DOTS = 2;\nconst float BASE_GRID_PIXEL_SIZE = 100.0;\n\nvec2 scale_grid_size(float zoom) {\n if (zoom < 0.125) return vec2(BASE_GRID_PIXEL_SIZE * 125.0, 0.125);\n else if (zoom < 0.25) return vec2(BASE_GRID_PIXEL_SIZE * 25.0, 0.25);\n else if (zoom < 0.5) return vec2(BASE_GRID_PIXEL_SIZE * 5.0, 0.5);\n return vec2(BASE_GRID_PIXEL_SIZE, 4.0);\n}\n\nvec4 render_grid_checkerboard(vec2 coord) {\n float alpha = 0.0;\n\n vec2 size = scale_grid_size(u_ZoomScale);\n float gridSize1 = size.x;\n float gridSize2 = gridSize1 / 10.0;\n float zoomStep = size.y;\n int checkboardStyle = int(floor(u_CheckboardStyle + 0.5));\n\n if (checkboardStyle == CHECKERBOARD_STYLE_GRID) {\n vec2 grid1 = abs(fract(coord / gridSize1 - 0.5) - 0.5) / fwidth(coord) * gridSize1 / 2.0;\n vec2 grid2 = abs(fract(coord / gridSize2 - 0.5) - 0.5) / fwidth(coord) * gridSize2;\n float v1 = 1.0 - min(min(grid1.x, grid1.y), 1.0);\n float v2 = 1.0 - min(min(grid2.x, grid2.y), 1.0);\n\n if (v1 > 0.0) {\n alpha = v1;\n } else {\n alpha = v2 * clamp(u_ZoomScale / zoomStep, 0.0, 1.0);\n }\n }\n \n return mix(PAGE_COLOR, GRID_COLOR, alpha);\n}\n\nvoid main() {\n gl_FragColor = render_grid_checkerboard(v_Position);\n}\n";
3
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"src/","sources":["shaders/grid.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,moBA4BpB,CAAC;AAEF,eAAO,MAAM,QAAQ,gwDA0DpB,CAAC"}
@@ -0,0 +1,89 @@
1
+ export const gridVert = /* glsl */ `
2
+ #extension GL_OES_standard_derivatives : enable
3
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
4
+ precision highp float;
5
+ precision highp int;
6
+ #else
7
+ precision mediump float;
8
+ precision mediump int;
9
+ #endif
10
+
11
+ uniform mat3 u_ViewProjectionInvMatrix;
12
+ uniform float u_ZoomScale;
13
+ uniform float u_CheckboardStyle;
14
+ uniform float u_z;
15
+
16
+ attribute vec2 a_Position;
17
+
18
+ varying vec2 v_Position;
19
+
20
+ vec2 project_clipspace_to_world(vec2 p) {
21
+ return (u_ViewProjectionInvMatrix * vec3(p, 1.0)).xy;
22
+ }
23
+
24
+ void main() {
25
+ v_Position = project_clipspace_to_world(a_Position);
26
+ float z = mix(1.0, -1.0, u_z);
27
+ gl_Position = vec4(a_Position, z, 1.0);
28
+ }
29
+ `;
30
+ export const gridFrag = /* glsl */ `
31
+ #extension GL_OES_standard_derivatives : enable
32
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
33
+ precision highp float;
34
+ precision highp int;
35
+ #else
36
+ precision mediump float;
37
+ precision mediump int;
38
+ #endif
39
+
40
+ uniform mat3 u_ViewProjectionInvMatrix;
41
+ uniform float u_ZoomScale;
42
+ uniform float u_CheckboardStyle;
43
+
44
+ varying vec2 v_Position;
45
+
46
+ const vec4 GRID_COLOR = vec4(0.87, 0.87, 0.87, 1.0);
47
+ const vec4 PAGE_COLOR = vec4(0.986, 0.986, 0.986, 1.0);
48
+ const int CHECKERBOARD_STYLE_NONE = 0;
49
+ const int CHECKERBOARD_STYLE_GRID = 1;
50
+ const int CHECKERBOARD_STYLE_DOTS = 2;
51
+ const float BASE_GRID_PIXEL_SIZE = 100.0;
52
+
53
+ vec2 scale_grid_size(float zoom) {
54
+ if (zoom < 0.125) return vec2(BASE_GRID_PIXEL_SIZE * 125.0, 0.125);
55
+ else if (zoom < 0.25) return vec2(BASE_GRID_PIXEL_SIZE * 25.0, 0.25);
56
+ else if (zoom < 0.5) return vec2(BASE_GRID_PIXEL_SIZE * 5.0, 0.5);
57
+ return vec2(BASE_GRID_PIXEL_SIZE, 4.0);
58
+ }
59
+
60
+ vec4 render_grid_checkerboard(vec2 coord) {
61
+ float alpha = 0.0;
62
+
63
+ vec2 size = scale_grid_size(u_ZoomScale);
64
+ float gridSize1 = size.x;
65
+ float gridSize2 = gridSize1 / 10.0;
66
+ float zoomStep = size.y;
67
+ int checkboardStyle = int(floor(u_CheckboardStyle + 0.5));
68
+
69
+ if (checkboardStyle == CHECKERBOARD_STYLE_GRID) {
70
+ vec2 grid1 = abs(fract(coord / gridSize1 - 0.5) - 0.5) / fwidth(coord) * gridSize1 / 2.0;
71
+ vec2 grid2 = abs(fract(coord / gridSize2 - 0.5) - 0.5) / fwidth(coord) * gridSize2;
72
+ float v1 = 1.0 - min(min(grid1.x, grid1.y), 1.0);
73
+ float v2 = 1.0 - min(min(grid2.x, grid2.y), 1.0);
74
+
75
+ if (v1 > 0.0) {
76
+ alpha = v1;
77
+ } else {
78
+ alpha = v2 * clamp(u_ZoomScale / zoomStep, 0.0, 1.0);
79
+ }
80
+ }
81
+
82
+ return mix(PAGE_COLOR, GRID_COLOR, alpha);
83
+ }
84
+
85
+ void main() {
86
+ gl_FragColor = render_grid_checkerboard(v_Position);
87
+ }
88
+ `;
89
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sourceRoot":"src/","sources":["shaders/grid.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DlC,CAAC"}
@@ -0,0 +1,4 @@
1
+ declare const vert = "\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform vec2 u_resolution;\nuniform mat3 u_matrix;\nuniform float u_z;\n\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec2 position = (u_matrix * vec3(a_position, 1)).xy;\n vec2 zeroToOne = position / u_resolution;\n vec2 zeroToTwo = zeroToOne * 2.0;\n vec2 clipSpace = zeroToTwo - 1.0;\n float z = mix(1.0, -1.0, u_z);\n\n gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);\n\n v_texCoord = a_texCoord;\n}\n";
2
+ declare const frag = "\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n \nuniform sampler2D u_image;\n \nvarying vec2 v_texCoord;\n \nvoid main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n}\n";
3
+ export { vert as imageVert, frag as imageFrag };
4
+ //# sourceMappingURL=img.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"img.d.ts","sourceRoot":"src/","sources":["shaders/img.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,geAqBT,CAAC;AAEF,QAAA,MAAM,IAAI,8OAcT,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ const vert = `
2
+ attribute vec2 a_position;
3
+ attribute vec2 a_texCoord;
4
+
5
+ uniform vec2 u_resolution;
6
+ uniform mat3 u_matrix;
7
+ uniform float u_z;
8
+
9
+ varying vec2 v_texCoord;
10
+
11
+ void main() {
12
+ vec2 position = (u_matrix * vec3(a_position, 1)).xy;
13
+ vec2 zeroToOne = position / u_resolution;
14
+ vec2 zeroToTwo = zeroToOne * 2.0;
15
+ vec2 clipSpace = zeroToTwo - 1.0;
16
+ float z = mix(1.0, -1.0, u_z);
17
+
18
+ gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);
19
+
20
+ v_texCoord = a_texCoord;
21
+ }
22
+ `;
23
+ const frag = `
24
+ #ifdef GL_FRAGMENT_PRECISION_HIGH
25
+ precision highp float;
26
+ #else
27
+ precision mediump float;
28
+ #endif
29
+
30
+ uniform sampler2D u_image;
31
+
32
+ varying vec2 v_texCoord;
33
+
34
+ void main() {
35
+ gl_FragColor = texture2D(u_image, v_texCoord);
36
+ }
37
+ `;
38
+ export { vert as imageVert, frag as imageFrag };
39
+ //# sourceMappingURL=img.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"img.js","sourceRoot":"src/","sources":["shaders/img.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBZ,CAAC;AAEF,MAAM,IAAI,GAAG;;;;;;;;;;;;;;CAcZ,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./shape";
2
+ export * from "./grid";
3
+ export * from "./img";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"src/","sources":["shaders/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./shape";
2
+ export * from "./grid";
3
+ export * from "./img";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["shaders/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ declare const vert = "\nattribute vec2 a_position;\n\nuniform vec2 u_resolution;\nuniform mat3 u_matrix;\nuniform float u_z;\n\n// all shaders have a main function\nvoid main() {\n vec2 position = (u_matrix * vec3(a_position, 1)).xy;\n\n vec2 zeroToOne = position / u_resolution;\n vec2 zeroToTwo = zeroToOne * 2.0;\n vec2 clipSpace = zeroToTwo - 1.0;\n float z = mix(1.0, -1.0, u_z);\n\n gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);\n}\n";
2
+ declare const frag = "\nprecision mediump float;\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n";
3
+ export { vert as shapeVert, frag as shapeFrag };
4
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"src/","sources":["shaders/shape.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,ibAkBT,CAAC;AAEF,QAAA,MAAM,IAAI,uGAOT,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ const vert = `
2
+ attribute vec2 a_position;
3
+
4
+ uniform vec2 u_resolution;
5
+ uniform mat3 u_matrix;
6
+ uniform float u_z;
7
+
8
+ // all shaders have a main function
9
+ void main() {
10
+ vec2 position = (u_matrix * vec3(a_position, 1)).xy;
11
+
12
+ vec2 zeroToOne = position / u_resolution;
13
+ vec2 zeroToTwo = zeroToOne * 2.0;
14
+ vec2 clipSpace = zeroToTwo - 1.0;
15
+ float z = mix(1.0, -1.0, u_z);
16
+
17
+ gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);
18
+ }
19
+ `;
20
+ const frag = `
21
+ precision mediump float;
22
+ uniform vec4 u_color;
23
+
24
+ void main() {
25
+ gl_FragColor = u_color;
26
+ }
27
+ `;
28
+ export { vert as shapeVert, frag as shapeFrag };
29
+ //# sourceMappingURL=shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.js","sourceRoot":"src/","sources":["shaders/shape.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,IAAI,GAAG;;;;;;;CAOZ,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { WebGLRenderable } from "./Renderable";
2
+ export declare enum GRID_TYPE {
3
+ NONE = 0,
4
+ GRID = 1
5
+ }
6
+ export declare class Grid extends WebGLRenderable {
7
+ private buffer;
8
+ private vertexCount;
9
+ viewProjectionInvLocation: WebGLUniformLocation;
10
+ zoomScaleLocation: WebGLUniformLocation;
11
+ checkboardStyleLocation: WebGLUniformLocation;
12
+ gridType: GRID_TYPE;
13
+ zoom: number;
14
+ getPositions(): Float32Array<ArrayBuffer>;
15
+ changeGridType(type: GRID_TYPE): void;
16
+ render(gl: WebGLRenderingContext, program: WebGLProgram): void;
17
+ destroy(): void;
18
+ hitTest(x: number, y: number): boolean;
19
+ protected setUpUniforms(gl: WebGLRenderingContext, program: WebGLProgram): void;
20
+ }
21
+ //# sourceMappingURL=Grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"src/","sources":["shapes/Grid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,IAAI,IAAA;CACL;AAED,qBAAa,IAAK,SAAQ,eAAe;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAK;IAExB,yBAAyB,EAAE,oBAAoB,CAAC;IAChD,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,uBAAuB,EAAE,oBAAoB,CAAC;IAE9C,QAAQ,EAAE,SAAS,CAAkB;IACrC,IAAI,EAAE,MAAM,CAAK;IAGjB,YAAY;IAKZ,cAAc,CAAC,IAAI,EAAE,SAAS;IAI9B,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAwD9D,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC,SAAS,CAAC,aAAa,CACrB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,IAAI;CAgBR"}
@@ -0,0 +1,86 @@
1
+ import { m3 } from "../util";
2
+ import { WebGLRenderable } from "./Renderable";
3
+ export var GRID_TYPE;
4
+ (function (GRID_TYPE) {
5
+ GRID_TYPE[GRID_TYPE["NONE"] = 0] = "NONE";
6
+ GRID_TYPE[GRID_TYPE["GRID"] = 1] = "GRID";
7
+ })(GRID_TYPE || (GRID_TYPE = {}));
8
+ export class Grid extends WebGLRenderable {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.buffer = null;
12
+ this.vertexCount = 0;
13
+ this.gridType = GRID_TYPE.GRID;
14
+ this.zoom = 1;
15
+ }
16
+ // Fullscreen big-triangle in clip space: covers [-1,1] without seams
17
+ getPositions() {
18
+ // x,y pairs in clip space
19
+ return new Float32Array([-1.0, -1.0, 3.0, -1.0, -1.0, 3.0]);
20
+ }
21
+ changeGridType(type) {
22
+ this.gridType = type;
23
+ }
24
+ render(gl, program) {
25
+ if (!this.buffer) {
26
+ this.buffer = gl.createBuffer();
27
+ if (!this.buffer)
28
+ throw new Error("Failed to create grid buffer");
29
+ const data = this.getPositions();
30
+ this.vertexCount = data.length / 2;
31
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
32
+ gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
33
+ }
34
+ else {
35
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
36
+ }
37
+ // Ensure program is current
38
+ gl.useProgram(program);
39
+ if (!this.initialized) {
40
+ this.setUpVertexData(gl, program);
41
+ this.setUpUniforms(gl, program);
42
+ this.initialized = true;
43
+ }
44
+ // Convert clip [-1,1] to pixel coords using the current drawing buffer size
45
+ const w = gl.drawingBufferWidth;
46
+ const h = gl.drawingBufferHeight;
47
+ const invP = m3.inverse(m3.projection(w, h)); // clip to pixel space
48
+ const invView = m3.inverse(this.worldMatrix); // camera/view -> world
49
+ const invVP = m3.multiply(invView, invP); // clip -> world
50
+ if (this.viewProjectionInvLocation)
51
+ gl.uniformMatrix3fv(this.viewProjectionInvLocation, false, new Float32Array(invVP));
52
+ if (this.zoomScaleLocation)
53
+ gl.uniform1f(this.zoomScaleLocation, this.zoom);
54
+ if (this.checkboardStyleLocation)
55
+ gl.uniform1f(this.checkboardStyleLocation, this.gridType);
56
+ // a_Position is clip-space position (vec2)
57
+ const loc = gl.getAttribLocation(program, "a_Position");
58
+ if (loc === -1) {
59
+ throw new Error("Attribute a_Position not found in grid program");
60
+ }
61
+ gl.vertexAttribPointer(loc, 2, gl.FLOAT, false, 0, 0);
62
+ gl.enableVertexAttribArray(loc);
63
+ // Draw the fullscreen triangle
64
+ gl.drawArrays(gl.TRIANGLES, 0, this.vertexCount);
65
+ gl.disableVertexAttribArray(loc);
66
+ gl.bindBuffer(gl.ARRAY_BUFFER, null);
67
+ }
68
+ destroy() {
69
+ if (this.buffer) {
70
+ this.buffer = null;
71
+ }
72
+ }
73
+ hitTest(x, y) {
74
+ return false;
75
+ }
76
+ setUpUniforms(gl, program) {
77
+ const I3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
78
+ this.viewProjectionInvLocation = gl.getUniformLocation(program, "u_ViewProjectionInvMatrix");
79
+ this.zoomScaleLocation = gl.getUniformLocation(program, "u_ZoomScale");
80
+ this.checkboardStyleLocation = gl.getUniformLocation(program, "u_CheckboardStyle");
81
+ gl.uniformMatrix3fv(this.viewProjectionInvLocation, false, I3);
82
+ gl.uniform1f(this.zoomScaleLocation, this.zoom);
83
+ gl.uniform1f(this.checkboardStyleLocation, 1.0);
84
+ }
85
+ }
86
+ //# sourceMappingURL=Grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","sourceRoot":"src/","sources":["shapes/Grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,yCAAI,CAAA;IACJ,yCAAI,CAAA;AACN,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,OAAO,IAAK,SAAQ,eAAe;IAAzC;;QACU,WAAM,GAAuB,IAAI,CAAC;QAClC,gBAAW,GAAG,CAAC,CAAC;QAMxB,aAAQ,GAAc,SAAS,CAAC,IAAI,CAAC;QACrC,SAAI,GAAW,CAAC,CAAC;IAiGnB,CAAC;IA/FC,qEAAqE;IACrE,YAAY;QACV,0BAA0B;QAC1B,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CAAC,IAAe;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,EAAyB,EAAE,OAAqB;QACrD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,4BAA4B;QAC5B,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAED,4EAA4E;QAC5E,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;QAEjC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QACpE,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,uBAAuB;QACrE,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB;QAE1D,IAAI,IAAI,CAAC,yBAAyB;YAChC,EAAE,CAAC,gBAAgB,CACjB,IAAI,CAAC,yBAAyB,EAC9B,KAAK,EACL,IAAI,YAAY,CAAC,KAAK,CAAC,CACxB,CAAC;QACJ,IAAI,IAAI,CAAC,iBAAiB;YAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,uBAAuB;YAC9B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5D,2CAA2C;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACxD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAEhC,+BAA+B;QAC/B,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjD,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACjC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAES,aAAa,CACrB,EAAyB,EACzB,OAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC,kBAAkB,CACpD,OAAO,EACP,2BAA2B,CAC5B,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC,kBAAkB,CAClD,OAAO,EACP,mBAAmB,CACpB,CAAC;QAEF,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;CACF"}