@ue-too/board 0.5.1 → 0.5.2

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 (270) hide show
  1. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js +475 -0
  2. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js.map +1 -0
  3. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js +340 -0
  4. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js.map +1 -0
  5. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js +88 -0
  6. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js.map +1 -0
  7. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js +5 -0
  8. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js.map +1 -0
  9. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.js +157 -0
  10. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.js.map +1 -0
  11. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.js +151 -0
  12. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.js.map +1 -0
  13. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.js +153 -0
  14. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.js.map +1 -0
  15. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js +4 -0
  16. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js.map +1 -0
  17. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js +2 -0
  18. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js.map +1 -0
  19. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js +38 -0
  20. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js.map +1 -0
  21. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js +454 -0
  22. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js.map +1 -0
  23. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js +6 -0
  24. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js.map +1 -0
  25. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js +124 -0
  26. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js.map +1 -0
  27. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js +71 -0
  28. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js.map +1 -0
  29. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js +4 -0
  30. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js.map +1 -0
  31. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js +97 -0
  32. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js.map +1 -0
  33. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js +91 -0
  34. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js.map +1 -0
  35. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js +128 -0
  36. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js.map +1 -0
  37. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js +76 -0
  38. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js.map +1 -0
  39. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js +258 -0
  40. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js.map +1 -0
  41. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js +9 -0
  42. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js.map +1 -0
  43. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js +2 -0
  44. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js.map +1 -0
  45. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js +74 -0
  46. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js.map +1 -0
  47. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js +150 -0
  48. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js.map +1 -0
  49. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js +6 -0
  50. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js.map +1 -0
  51. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js +421 -0
  52. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js.map +1 -0
  53. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js +177 -0
  54. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js.map +1 -0
  55. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js +122 -0
  56. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js.map +1 -0
  57. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js +46 -0
  58. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js.map +1 -0
  59. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js +6 -0
  60. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js.map +1 -0
  61. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js +4 -0
  62. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js.map +1 -0
  63. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js +5 -0
  64. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js.map +1 -0
  65. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js +191 -0
  66. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js.map +1 -0
  67. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js +342 -0
  68. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js.map +1 -0
  69. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js +62 -0
  70. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js.map +1 -0
  71. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js +173 -0
  72. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js.map +1 -0
  73. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js +3 -0
  74. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js.map +1 -0
  75. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js +123 -0
  76. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js.map +1 -0
  77. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js +118 -0
  78. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js.map +1 -0
  79. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js +2 -0
  80. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js.map +1 -0
  81. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js +99 -0
  82. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js.map +1 -0
  83. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js +184 -0
  84. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js.map +1 -0
  85. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js +10 -0
  86. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js.map +1 -0
  87. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js +450 -0
  88. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js.map +1 -0
  89. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js +192 -0
  90. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js.map +1 -0
  91. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js +27 -0
  92. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js.map +1 -0
  93. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js +9 -0
  94. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js.map +1 -0
  95. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js +47 -0
  96. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js.map +1 -0
  97. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js +21 -0
  98. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js.map +1 -0
  99. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js +102 -0
  100. package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js.map +1 -0
  101. package/dist/board.tsbuildinfo +1 -0
  102. package/dist/boardify/index.d.ts +192 -0
  103. package/dist/camera/base.d.ts +189 -0
  104. package/dist/camera/camera-mux/animation-and-lock/animation-and-lock.d.ts +50 -0
  105. package/dist/camera/camera-mux/animation-and-lock/index.d.ts +4 -0
  106. package/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +137 -0
  107. package/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +131 -0
  108. package/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +143 -0
  109. package/dist/camera/camera-mux/index.d.ts +3 -0
  110. package/dist/camera/camera-mux/interface.d.ts +12 -0
  111. package/dist/camera/camera-mux/relay.d.ts +27 -0
  112. package/dist/camera/camera-rig/camera-rig.d.ts +207 -0
  113. package/dist/camera/camera-rig/index.d.ts +5 -0
  114. package/dist/camera/camera-rig/pan-handler.d.ts +113 -0
  115. package/dist/camera/camera-rig/rotation-handler.d.ts +78 -0
  116. package/dist/camera/camera-rig/update-batcher/index.d.ts +3 -0
  117. package/dist/camera/camera-rig/update-batcher/position-update-batcher.d.ts +58 -0
  118. package/dist/camera/camera-rig/update-batcher/rotation-update-batcher.d.ts +54 -0
  119. package/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +60 -0
  120. package/dist/camera/camera-rig/zoom-handler.d.ts +77 -0
  121. package/dist/camera/default-camera.d.ts +170 -0
  122. package/dist/camera/index.d.ts +8 -0
  123. package/dist/camera/interface.d.ts +59 -0
  124. package/dist/camera/update-publisher.d.ts +172 -0
  125. package/dist/camera/utils/coordinate-conversion.d.ts +75 -0
  126. package/dist/camera/utils/index.d.ts +5 -0
  127. package/dist/camera/utils/matrix.d.ts +114 -0
  128. package/dist/camera/utils/position.d.ts +71 -0
  129. package/dist/camera/utils/rotation.d.ts +64 -0
  130. package/dist/camera/utils/zoom.d.ts +25 -0
  131. package/dist/index.d.ts +5 -0
  132. package/dist/input-interpretation/index.d.ts +3 -0
  133. package/dist/input-interpretation/input-state-machine/index.d.ts +4 -0
  134. package/dist/input-interpretation/input-state-machine/kmt-input-context.d.ts +130 -0
  135. package/dist/input-interpretation/input-state-machine/kmt-input-state-machine.d.ts +194 -0
  136. package/dist/input-interpretation/input-state-machine/touch-input-context.d.ts +44 -0
  137. package/dist/input-interpretation/input-state-machine/touch-input-state-machine.d.ts +64 -0
  138. package/dist/input-interpretation/raw-input-parser/index.d.ts +2 -0
  139. package/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.d.ts +87 -0
  140. package/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.d.ts +55 -0
  141. package/dist/input-interpretation/raw-input-publisher/index.d.ts +1 -0
  142. package/dist/input-interpretation/raw-input-publisher/raw-input-publisher.d.ts +130 -0
  143. package/dist/package.json +39 -0
  144. package/dist/utils/canvas-position-dimension.d.ts +18 -0
  145. package/dist/utils/coorindate-conversion.d.ts +5 -0
  146. package/dist/utils/drawing-utils.d.ts +55 -0
  147. package/dist/utils/drawing.d.ts +30 -0
  148. package/dist/utils/handler-pipeline.d.ts +30 -0
  149. package/dist/utils/index.d.ts +8 -0
  150. package/dist/utils/observable.d.ts +9 -0
  151. package/dist/utils/ruler.d.ts +1 -0
  152. package/dist/utils/zoomlevel-adjustment.d.ts +28 -0
  153. package/jest.config.js +18 -0
  154. package/package.json +11 -10
  155. package/project.json +34 -0
  156. package/rollup.config.js +29 -0
  157. package/src/boardify/index.ts +562 -0
  158. package/src/camera/base.ts +387 -0
  159. package/src/camera/camera-mux/animation-and-lock/animation-and-lock.ts +114 -0
  160. package/src/camera/camera-mux/animation-and-lock/index.ts +4 -0
  161. package/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts +248 -0
  162. package/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts +237 -0
  163. package/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts +263 -0
  164. package/src/camera/camera-mux/index.ts +3 -0
  165. package/src/camera/camera-mux/interface.ts +13 -0
  166. package/src/camera/camera-mux/relay.ts +50 -0
  167. package/src/camera/camera-rig/camera-rig.ts +560 -0
  168. package/src/camera/camera-rig/index.ts +5 -0
  169. package/src/camera/camera-rig/pan-handler.ts +192 -0
  170. package/src/camera/camera-rig/rotation-handler.ts +124 -0
  171. package/src/camera/camera-rig/update-batcher/index.ts +3 -0
  172. package/src/camera/camera-rig/update-batcher/position-update-batcher.ts +133 -0
  173. package/src/camera/camera-rig/update-batcher/rotation-update-batcher.ts +123 -0
  174. package/src/camera/camera-rig/update-batcher/zoom-udpate-batcher.ts +157 -0
  175. package/src/camera/camera-rig/zoom-handler.ts +123 -0
  176. package/src/camera/default-camera.ts +297 -0
  177. package/src/camera/index.ts +8 -0
  178. package/src/camera/interface.ts +45 -0
  179. package/src/camera/update-publisher.ts +222 -0
  180. package/src/camera/utils/coordinate-conversion.ts +160 -0
  181. package/src/camera/utils/index.ts +5 -0
  182. package/src/camera/utils/matrix.ts +558 -0
  183. package/src/camera/utils/position.ts +196 -0
  184. package/src/camera/utils/rotation.ts +147 -0
  185. package/src/camera/utils/zoom.ts +55 -0
  186. package/src/index.ts +5 -0
  187. package/src/input-interpretation/index.ts +3 -0
  188. package/src/input-interpretation/input-state-machine/index.ts +4 -0
  189. package/src/input-interpretation/input-state-machine/kmt-input-context.ts +283 -0
  190. package/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts +491 -0
  191. package/src/input-interpretation/input-state-machine/touch-input-context.ts +106 -0
  192. package/src/input-interpretation/input-state-machine/touch-input-state-machine.ts +215 -0
  193. package/src/input-interpretation/raw-input-parser/index.ts +2 -0
  194. package/src/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.ts +207 -0
  195. package/src/input-interpretation/raw-input-parser/vanilla-touch-event-parser.ts +169 -0
  196. package/src/input-interpretation/raw-input-publisher/index.ts +1 -0
  197. package/src/input-interpretation/raw-input-publisher/raw-input-publisher.ts +227 -0
  198. package/src/utils/canvas-position-dimension.ts +215 -0
  199. package/src/utils/coorindate-conversion.ts +12 -0
  200. package/src/utils/drawing-utils.ts +439 -0
  201. package/src/utils/drawing.ts +266 -0
  202. package/src/utils/handler-pipeline.ts +41 -0
  203. package/src/utils/index.ts +8 -0
  204. package/src/utils/observable.ts +63 -0
  205. package/src/utils/ruler.ts +18 -0
  206. package/src/utils/zoomlevel-adjustment.ts +108 -0
  207. package/test/board-camera/camera-rig.test.ts +78 -0
  208. package/test/board-camera/camera-utils.test.ts +263 -0
  209. package/test/board-camera/utils/coordinate-conversion.test.ts +26 -0
  210. package/test/board-camera/utils/matrix.test.ts +35 -0
  211. package/test/boardify/utils/canvas.test.ts +20 -0
  212. package/test/util/drawing.test.ts +83 -0
  213. package/test/util/handler-pipeline.test.ts +74 -0
  214. package/test/util/observable.test.ts +42 -0
  215. package/test/util/ruler.test.ts +41 -0
  216. package/tsconfig.json +23 -0
  217. package/tsconfig.spec.json +12 -0
  218. /package/{board.tsbuildinfo → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/board.tsbuildinfo} +0 -0
  219. /package/{boardify → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify}/index.d.ts +0 -0
  220. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/base.d.ts +0 -0
  221. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/animation-and-lock.d.ts +0 -0
  222. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/index.d.ts +0 -0
  223. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +0 -0
  224. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +0 -0
  225. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +0 -0
  226. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/index.d.ts +0 -0
  227. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/interface.d.ts +0 -0
  228. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/relay.d.ts +0 -0
  229. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/camera-rig.d.ts +0 -0
  230. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/index.d.ts +0 -0
  231. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/pan-handler.d.ts +0 -0
  232. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/rotation-handler.d.ts +0 -0
  233. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/index.d.ts +0 -0
  234. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/position-update-batcher.d.ts +0 -0
  235. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/rotation-update-batcher.d.ts +0 -0
  236. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +0 -0
  237. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/zoom-handler.d.ts +0 -0
  238. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/default-camera.d.ts +0 -0
  239. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/index.d.ts +0 -0
  240. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/interface.d.ts +0 -0
  241. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/update-publisher.d.ts +0 -0
  242. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/coordinate-conversion.d.ts +0 -0
  243. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/index.d.ts +0 -0
  244. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/matrix.d.ts +0 -0
  245. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/position.d.ts +0 -0
  246. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/rotation.d.ts +0 -0
  247. /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/zoom.d.ts +0 -0
  248. /package/{index.d.ts → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.d.ts} +0 -0
  249. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/index.d.ts +0 -0
  250. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/index.d.ts +0 -0
  251. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/kmt-input-context.d.ts +0 -0
  252. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/kmt-input-state-machine.d.ts +0 -0
  253. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/touch-input-context.d.ts +0 -0
  254. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/input-state-machine/touch-input-state-machine.d.ts +0 -0
  255. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/index.d.ts +0 -0
  256. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/vanilla-kmt-event-parser.d.ts +0 -0
  257. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-parser/vanilla-touch-event-parser.d.ts +0 -0
  258. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-publisher/index.d.ts +0 -0
  259. /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/raw-input-publisher/raw-input-publisher.d.ts +0 -0
  260. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/canvas-position-dimension.d.ts +0 -0
  261. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/coorindate-conversion.d.ts +0 -0
  262. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing-utils.d.ts +0 -0
  263. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing.d.ts +0 -0
  264. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/handler-pipeline.d.ts +0 -0
  265. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/index.d.ts +0 -0
  266. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/observable.d.ts +0 -0
  267. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/ruler.d.ts +0 -0
  268. /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/zoomlevel-adjustment.d.ts +0 -0
  269. /package/{index.js → dist/index.js} +0 -0
  270. /package/{index.js.map → dist/index.js.map} +0 -0
@@ -0,0 +1,491 @@
1
+ import { EventReactions, EventGuards, Guard, TemplateState, TemplateStateMachine } from "@ue-too/being";
2
+ import type { Point } from "@ue-too/math";
3
+ import { PointCal } from "@ue-too/math";
4
+ import { CanvasOperator, CursorStyle, DummyKmtInputContext, KmtInputContext } from "./kmt-input-context";
5
+
6
+ /**
7
+ * @description The possible states of the keyboard mouse and trackpad input state machine.
8
+ *
9
+ * @category Input State Machine
10
+ */
11
+ export type KmtInputStates = "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL" | "PAN" | "INITIAL_PAN" | "PAN_VIA_SCROLL_WHEEL";
12
+
13
+ /**
14
+ * @description The payload for the pointer event.
15
+ *
16
+ * @category Input State Machine
17
+ */
18
+ export type PointerEventPayload = {
19
+ x: number;
20
+ y: number;
21
+ }
22
+
23
+ type EmptyPayload = {};
24
+
25
+ /**
26
+ * @description The payload for the scroll event.
27
+ *
28
+ * @category Input State Machine
29
+ */
30
+ export type ScrollEventPayload = {
31
+ deltaX: number;
32
+ deltaY: number;
33
+ }
34
+
35
+ /**
36
+ * @description The payload for the scroll with ctrl event.
37
+ *
38
+ * @category Input State Machine
39
+ */
40
+ export type ScrollWithCtrlEventPayload = {
41
+ deltaX: number;
42
+ deltaY: number;
43
+ x: number;
44
+ y: number;
45
+ }
46
+
47
+ /**
48
+ * @description The payload mapping for the events of the keyboard mouse and trackpad input state machine.
49
+ *
50
+ * @category Input State Machine
51
+ */
52
+ export type KmtInputEventMapping = {
53
+ leftPointerDown: PointerEventPayload;
54
+ leftPointerUp: PointerEventPayload;
55
+ leftPointerMove: PointerEventPayload;
56
+ spacebarDown: EmptyPayload;
57
+ spacebarUp: EmptyPayload;
58
+ stayIdle: EmptyPayload;
59
+ cursorOnElement: EmptyPayload;
60
+ scroll: ScrollEventPayload;
61
+ scrollWithCtrl: ScrollWithCtrlEventPayload;
62
+ middlePointerDown: PointerEventPayload;
63
+ middlePointerUp: PointerEventPayload;
64
+ middlePointerMove: PointerEventPayload;
65
+ }
66
+
67
+ /**
68
+ * @description Converts the point from window coordinates(browser) to view port coordinates.
69
+ *
70
+ * @category Input State Machine
71
+ */
72
+ export function convertFromWindow2ViewPort(point: Point, canvas: HTMLCanvasElement): Point {
73
+ const canvasBoundingRect = canvas.getBoundingClientRect();
74
+ const cameraCenterInWindow = {x: canvasBoundingRect.left + (canvasBoundingRect.right - canvasBoundingRect.left) / 2, y: canvasBoundingRect.top + (canvasBoundingRect.bottom - canvasBoundingRect.top) / 2};
75
+ return PointCal.subVector(point, cameraCenterInWindow);
76
+ }
77
+
78
+ export function convertFromWindow2ViewPortWithCanvasOperator(point: Point, canvasOperator: CanvasOperator): Point {
79
+ const cameraCenterInWindow = {x: canvasOperator.position.x + (canvasOperator.width / 2), y: canvasOperator.position.y + (canvasOperator.height / 2)};
80
+ return PointCal.subVector(point, cameraCenterInWindow);
81
+ }
82
+
83
+ export function convertFromWindow2ViewPortCanvasOperator(point: Point, canvasOperator: CanvasOperator): Point {
84
+ const cameraCenterInWindow = {x: canvasOperator.position.x + (canvasOperator.width / 2), y: canvasOperator.position.y + (canvasOperator.height / 2)};
85
+ return PointCal.subVector(point, cameraCenterInWindow);
86
+ }
87
+
88
+ /**
89
+ * @description The possible target states of the idle state.
90
+ *
91
+ * @category Input State Machine
92
+ */
93
+ export type KmtIdleStatePossibleTargetStates = "IDLE" | "READY_TO_PAN_VIA_SPACEBAR" | "READY_TO_PAN_VIA_SCROLL_WHEEL";
94
+
95
+ /**
96
+ * @description The idle state of the keyboard mouse and trackpad input state machine.
97
+ *
98
+ * @category Input State Machine
99
+ */
100
+ export class KmtIdleState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
101
+
102
+ constructor() {
103
+ super();
104
+ }
105
+
106
+ protected _guards: Guard<KmtInputContext, "isIdle"> = {
107
+ isIdle: () => true,
108
+ }
109
+
110
+ protected _eventGuards: Partial<EventGuards<KmtInputEventMapping, KmtInputStates, KmtInputContext, Guard<KmtInputContext>>> = {
111
+ }
112
+
113
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
114
+ return this._eventReactions;
115
+ }
116
+
117
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
118
+ spacebarDown: {
119
+ action: this.spacebarDownHandler,
120
+ defaultTargetState: "READY_TO_PAN_VIA_SPACEBAR",
121
+ },
122
+ scroll: {
123
+ action: this.scrollHandler,
124
+ defaultTargetState: "IDLE",
125
+ },
126
+ scrollWithCtrl: {
127
+ action: this.scrollWithCtrlHandler,
128
+ defaultTargetState: "IDLE",
129
+ },
130
+ middlePointerDown: {
131
+ action: this.middlePointerDownHandler,
132
+ defaultTargetState: "READY_TO_PAN_VIA_SCROLL_WHEEL",
133
+ },
134
+ }
135
+
136
+ scrollHandler(context: KmtInputContext, payload: ScrollEventPayload): void {
137
+ const delta = {...payload}
138
+ if(!context.alignCoordinateSystem){
139
+ delta.deltaY = -delta.deltaY;
140
+ }
141
+ context.notifyOnPan({x: delta.deltaX, y: delta.deltaY});
142
+ }
143
+
144
+ scrollWithCtrlHandler(context: KmtInputContext, payload: ScrollWithCtrlEventPayload): void {
145
+ let scrollSensitivity = 0.005;
146
+ if(Math.abs(payload.deltaY) > 100){
147
+ scrollSensitivity = 0.0005;
148
+ }
149
+ const zoomAmount = payload.deltaY * scrollSensitivity;
150
+ const cursorPosition = {x: payload.x, y: payload.y};
151
+ const anchorPoint = convertFromWindow2ViewPortCanvasOperator(cursorPosition, context.canvas);
152
+ if(!context.alignCoordinateSystem){
153
+ anchorPoint.y = -anchorPoint.y;
154
+ }
155
+ context.notifyOnZoom(-(zoomAmount * 5), anchorPoint);
156
+ }
157
+
158
+ spacebarDownHandler(context: KmtInputContext, payload: EmptyPayload): void {
159
+ context.canvas.setCursor(CursorStyle.GRAB);
160
+ }
161
+
162
+ middlePointerDownHandler(context: KmtInputContext, payload: PointerEventPayload): void {
163
+ context.setInitialCursorPosition({x: payload.x, y: payload.y});
164
+ context.canvas.setCursor(CursorStyle.GRABBING);
165
+ }
166
+ }
167
+
168
+ /**
169
+ * @description The possible target states of the ready to select state.
170
+ *
171
+ * @category Input State Machine
172
+ */
173
+ export type ReadyToSelectStatePossibleTargetStates = "IDLE" | "SELECTING";
174
+
175
+ /**
176
+ * @description The context for the ready to select state.
177
+ *
178
+ * @category Input State Machine
179
+ */
180
+ export type SelectionContext = {
181
+ setSelectionEndPoint: (point: Point) => void;
182
+ toggleSelectionBox: (show: boolean) => void;
183
+ cleanup: () => void;
184
+ setup: () => void;
185
+ canvas: HTMLCanvasElement;
186
+ }
187
+
188
+ /**
189
+ * @description The ready to select state of the keyboard mouse and trackpad input state machine.
190
+ *
191
+ * @category Input State Machine
192
+ */
193
+ export class ReadyToSelectState extends TemplateState<KmtInputEventMapping, SelectionContext, ReadyToSelectStatePossibleTargetStates> {
194
+
195
+ constructor() {
196
+ super();
197
+ }
198
+
199
+ leftPointerMove = ((context: SelectionContext, payload: PointerEventPayload): void => {
200
+ const viewportPoint = convertFromWindow2ViewPort({x: payload.x, y: payload.y}, context.canvas);
201
+ context.setSelectionEndPoint(viewportPoint);
202
+ context.toggleSelectionBox(true);
203
+ }).bind(this);
204
+
205
+ protected _eventReactions: EventReactions<KmtInputEventMapping, SelectionContext, ReadyToSelectStatePossibleTargetStates> = {
206
+ leftPointerUp: {
207
+ action: () => "IDLE",
208
+ defaultTargetState: "IDLE",
209
+ },
210
+ leftPointerMove: {
211
+ action: this.leftPointerMove,
212
+ defaultTargetState: "SELECTING",
213
+ },
214
+ }
215
+
216
+ get eventReactions(): EventReactions<KmtInputEventMapping, SelectionContext, ReadyToSelectStatePossibleTargetStates> {
217
+ return this._eventReactions;
218
+ }
219
+
220
+ }
221
+
222
+ /**
223
+ * @description The ready to pan via space bar state of the keyboard mouse and trackpad input state machine.
224
+ *
225
+ * @category Input State Machine
226
+ */
227
+ export class ReadyToPanViaSpaceBarState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
228
+
229
+ constructor() {
230
+ super();
231
+ }
232
+
233
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
234
+ spacebarUp: {
235
+ action: this.spacebarUpHandler,
236
+ defaultTargetState: "IDLE",
237
+ },
238
+ leftPointerDown: {
239
+ action: this.leftPointerDownHandler,
240
+ defaultTargetState: "INITIAL_PAN",
241
+ },
242
+ }
243
+
244
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
245
+ return this._eventReactions;
246
+ }
247
+
248
+ leftPointerDownHandler(context: KmtInputContext, payload: PointerEventPayload): void {
249
+ context.setInitialCursorPosition({x: payload.x, y: payload.y});
250
+ context.canvas.setCursor(CursorStyle.GRABBING);
251
+ }
252
+
253
+ spacebarUpHandler(context: KmtInputContext, payload: EmptyPayload): void {
254
+ context.canvas.setCursor(CursorStyle.DEFAULT);
255
+ }
256
+ }
257
+
258
+ /**
259
+ * @description The initial pan state of the keyboard mouse and trackpad input state machine.
260
+ *
261
+ * @category Input State Machine
262
+ */
263
+ export class InitialPanState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
264
+
265
+ constructor() {
266
+ super();
267
+ }
268
+
269
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
270
+ leftPointerUp: {
271
+ action: this.leftPointerUpHandler,
272
+ defaultTargetState: "READY_TO_PAN_VIA_SPACEBAR",
273
+ },
274
+ leftPointerMove: {
275
+ action: this.leftPointerMoveHandler,
276
+ defaultTargetState: "PAN",
277
+ },
278
+ spacebarUp: {
279
+ action: () => "IDLE",
280
+ defaultTargetState: "IDLE",
281
+ },
282
+ leftPointerDown: {
283
+ action: () => "PAN",
284
+ defaultTargetState: "PAN",
285
+ },
286
+ }
287
+
288
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
289
+ return this._eventReactions;
290
+ }
291
+
292
+ leftPointerMoveHandler(context: KmtInputContext, payload: PointerEventPayload): void {
293
+ const delta = {
294
+ x: context.initialCursorPosition.x - payload.x,
295
+ y: context.initialCursorPosition.y - payload.y,
296
+ };
297
+ if(!context.alignCoordinateSystem){
298
+ delta.y = -delta.y;
299
+ }
300
+ context.notifyOnPan(delta);
301
+ context.setInitialCursorPosition({x: payload.x, y: payload.y});
302
+ }
303
+
304
+ leftPointerUpHandler(context: KmtInputContext, payload: PointerEventPayload): void {
305
+ context.canvas.setCursor(CursorStyle.GRAB);
306
+ }
307
+ }
308
+
309
+ /**
310
+ * @description The ready to pan via scroll wheel state of the keyboard mouse and trackpad input state machine.
311
+ *
312
+ * @category Input State Machine
313
+ */
314
+ export class ReadyToPanViaScrollWheelState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
315
+
316
+ constructor() {
317
+ super();
318
+ }
319
+
320
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
321
+ middlePointerUp: {
322
+ action: this.middlePointerUpHandler,
323
+ defaultTargetState: "IDLE",
324
+ },
325
+ middlePointerMove: {
326
+ action: this.middlePointerMoveHandler,
327
+ defaultTargetState: "PAN_VIA_SCROLL_WHEEL",
328
+ },
329
+ }
330
+
331
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
332
+ return this._eventReactions;
333
+ }
334
+
335
+ middlePointerMoveHandler(context: KmtInputContext, payload: PointerEventPayload): void {
336
+ context.canvas.setCursor(CursorStyle.GRABBING);
337
+ }
338
+
339
+ middlePointerUpHandler(context: KmtInputContext, payload: PointerEventPayload): void {
340
+ context.canvas.setCursor(CursorStyle.DEFAULT);
341
+ }
342
+
343
+ }
344
+
345
+ /**
346
+ * @description The pan state of the keyboard mouse and trackpad input state machine.
347
+ *
348
+ * @category Input State Machine
349
+ */
350
+ export class PanState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
351
+
352
+ constructor() {
353
+ super();
354
+ }
355
+
356
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
357
+ leftPointerUp: {
358
+ action: this.leftPointerUpHandler,
359
+ defaultTargetState: "READY_TO_PAN_VIA_SPACEBAR",
360
+ },
361
+ leftPointerMove: {
362
+ action: this.leftPointerMoveHandler,
363
+ defaultTargetState: "PAN",
364
+ },
365
+ spacebarUp: {
366
+ action: this.spacebarUpHandler,
367
+ defaultTargetState: "IDLE",
368
+ },
369
+ }
370
+
371
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
372
+ return this._eventReactions;
373
+ }
374
+
375
+ leftPointerMoveHandler(context: KmtInputContext, payload: PointerEventPayload): void {
376
+ const delta = {
377
+ x: context.initialCursorPosition.x - payload.x,
378
+ y: context.initialCursorPosition.y - payload.y,
379
+ };
380
+ if(!context.alignCoordinateSystem){
381
+ delta.y = -delta.y;
382
+ }
383
+ context.notifyOnPan(delta);
384
+ context.setInitialCursorPosition({x: payload.x, y: payload.y});
385
+ }
386
+
387
+ spacebarUpHandler(context: KmtInputContext, payload: EmptyPayload): void {
388
+ context.canvas.setCursor(CursorStyle.DEFAULT);
389
+ }
390
+
391
+ leftPointerUpHandler(context: KmtInputContext, payload: PointerEventPayload): void {
392
+ context.canvas.setCursor(CursorStyle.GRAB);
393
+ }
394
+ }
395
+
396
+ /**
397
+ * @description The pan via scroll wheel state of the keyboard mouse and trackpad input state machine.
398
+ *
399
+ * @category Input State Machine
400
+ */
401
+ export class PanViaScrollWheelState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
402
+
403
+ protected _eventReactions: EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> = {
404
+ middlePointerUp: {
405
+ action: this.middlePointerUpHandler,
406
+ defaultTargetState: "IDLE",
407
+ },
408
+ middlePointerMove: {
409
+ action: this.middlePointerMoveHandler,
410
+ defaultTargetState: "PAN_VIA_SCROLL_WHEEL",
411
+ },
412
+ }
413
+
414
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
415
+ return this._eventReactions;
416
+ }
417
+
418
+ middlePointerMoveHandler(context: KmtInputContext, payload: PointerEventPayload): void {
419
+ const delta = {
420
+ x: context.initialCursorPosition.x - payload.x,
421
+ y: context.initialCursorPosition.y - payload.y,
422
+ };
423
+ if(!context.alignCoordinateSystem){
424
+ delta.y = -delta.y;
425
+ }
426
+ context.notifyOnPan(delta);
427
+ context.setInitialCursorPosition({x: payload.x, y: payload.y});
428
+ }
429
+
430
+ middlePointerUpHandler(context: KmtInputContext, payload: PointerEventPayload): void {
431
+ context.canvas.setCursor(CursorStyle.DEFAULT);
432
+ }
433
+ }
434
+
435
+ export class KmtEmptyState extends TemplateState<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
436
+
437
+ constructor() {
438
+ super();
439
+ }
440
+
441
+ get eventReactions(): EventReactions<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
442
+ return {};
443
+ }
444
+
445
+ }
446
+
447
+ export type KmtInputStateMachine = TemplateStateMachine<KmtInputEventMapping, KmtInputContext, KmtInputStates>;
448
+
449
+ /**
450
+ * @description Creates the keyboard mouse and trackpad input state machine.
451
+ *
452
+ * @category Input State Machine
453
+ */
454
+ export function createKmtInputStateMachine(context: KmtInputContext): KmtInputStateMachine {
455
+ const states = {
456
+ IDLE: new KmtIdleState(),
457
+ READY_TO_PAN_VIA_SPACEBAR: new ReadyToPanViaSpaceBarState(),
458
+ INITIAL_PAN: new InitialPanState(),
459
+ PAN: new PanState(),
460
+ READY_TO_PAN_VIA_SCROLL_WHEEL: new ReadyToPanViaScrollWheelState(),
461
+ PAN_VIA_SCROLL_WHEEL: new PanViaScrollWheelState(),
462
+ }
463
+ return new TemplateStateMachine(states, "IDLE", context);
464
+ }
465
+
466
+ export class KmtInputStateMachineWebWorkerProxy extends TemplateStateMachine<KmtInputEventMapping, KmtInputContext, KmtInputStates> {
467
+
468
+ private _webworker: Worker;
469
+
470
+ constructor(webworker: Worker){
471
+ super({
472
+ "IDLE": new KmtEmptyState(),
473
+ "READY_TO_PAN_VIA_SPACEBAR": new KmtEmptyState(),
474
+ "INITIAL_PAN": new KmtEmptyState(),
475
+ "PAN": new KmtEmptyState(),
476
+ "READY_TO_PAN_VIA_SCROLL_WHEEL": new KmtEmptyState(),
477
+ "PAN_VIA_SCROLL_WHEEL": new KmtEmptyState(),
478
+ }, "IDLE", new DummyKmtInputContext());
479
+ this._webworker = webworker;
480
+ }
481
+
482
+ happens(event: keyof KmtInputEventMapping, payload: KmtInputEventMapping[keyof KmtInputEventMapping]): KmtInputStates | undefined {
483
+ this._webworker.postMessage({
484
+ type: "kmtInputStateMachine",
485
+ event,
486
+ payload,
487
+ });
488
+ return "IDLE";
489
+ }
490
+
491
+ }
@@ -0,0 +1,106 @@
1
+ import type { Point } from "@ue-too/math";
2
+ import { RawUserInputPublisher } from "../raw-input-publisher";
3
+ import { BaseContext } from "@ue-too/being";
4
+ import { CanvasOperator } from "./kmt-input-context";
5
+
6
+ /**
7
+ * @description The touch points.
8
+ *
9
+ * @category Input State Machine
10
+ */
11
+ export type TouchPoints = {
12
+ ident: number,
13
+ x: number,
14
+ y: number,
15
+ }
16
+
17
+ export interface TouchContext extends BaseContext{
18
+ addTouchPoints: (points: TouchPoints[]) => void;
19
+ removeTouchPoints: (idents: number[]) => void;
20
+ getCurrentTouchPointsCount: () => number;
21
+ getInitialTouchPointsPositions: (idents: number[]) => TouchPoints[];
22
+ updateTouchPoints: (pointsMoved: TouchPoints[]) => void;
23
+ notifyOnPan: (delta: Point) => void;
24
+ notifyOnZoom: (zoomAmount: number, anchorPoint: Point) => void;
25
+ alignCoordinateSystem: boolean;
26
+ canvas: CanvasOperator;
27
+ }
28
+
29
+ export class TouchInputTracker implements TouchContext {
30
+
31
+ private _inputPublisher: RawUserInputPublisher;
32
+ private _touchPointsMap: Map<number, TouchPoints> = new Map<number, TouchPoints>();
33
+ private _canvas: CanvasOperator;
34
+ private _alignCoordinateSystem: boolean;
35
+
36
+ constructor(canvas: CanvasOperator, inputPublisher: RawUserInputPublisher) {
37
+ this._canvas = canvas;
38
+ this._inputPublisher = inputPublisher;
39
+ this._alignCoordinateSystem = true;
40
+ }
41
+
42
+ addTouchPoints(points: TouchPoints[]): void {
43
+ points.forEach((point)=>{
44
+ this._touchPointsMap.set(point.ident, {...point});
45
+ });
46
+ }
47
+
48
+ removeTouchPoints(identifiers: number[]): void {
49
+ identifiers.forEach((ident)=>{
50
+ if(this._touchPointsMap.has(ident)){
51
+ this._touchPointsMap.delete(ident);
52
+ }
53
+ });
54
+ }
55
+
56
+ getCurrentTouchPointsCount(): number {
57
+ return this._touchPointsMap.size;
58
+ }
59
+
60
+ getInitialTouchPointsPositions(idents: number[]): TouchPoints[] {
61
+ const res: TouchPoints[] = [];
62
+ idents.forEach((ident)=>{
63
+ if(this._touchPointsMap.has(ident)){
64
+ const point = this._touchPointsMap.get(ident);
65
+ if(point){
66
+ res.push(point);
67
+ }
68
+ }
69
+ });
70
+ return res;
71
+ }
72
+
73
+ updateTouchPoints(pointsMoved: TouchPoints[]): void {
74
+ pointsMoved.forEach((point)=>{
75
+ if(this._touchPointsMap.has(point.ident)){
76
+ this._touchPointsMap.set(point.ident, {...point});
77
+ }
78
+ });
79
+ }
80
+
81
+ notifyOnPan(delta: Point): void {
82
+ this._inputPublisher.notifyPan(delta);
83
+ }
84
+
85
+ notifyOnZoom(zoomAmount: number, anchorPoint: Point): void {
86
+ this._inputPublisher.notifyZoom(zoomAmount, anchorPoint);
87
+ }
88
+
89
+ get alignCoordinateSystem(): boolean {
90
+ return this._alignCoordinateSystem;
91
+ }
92
+
93
+ set alignCoordinateSystem(value: boolean) {
94
+ this._alignCoordinateSystem = value;
95
+ }
96
+
97
+ get canvas(): CanvasOperator {
98
+ return this._canvas;
99
+ }
100
+
101
+ cleanup(): void {
102
+ }
103
+
104
+ setup(): void {
105
+ }
106
+ }