@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.
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js +475 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js +340 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js.map +1 -0
- 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
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js +5 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js.map +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js +38 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js +454 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js +124 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js +71 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js +97 -0
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js +91 -0
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js +128 -0
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js +76 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js +258 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js +9 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js +74 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js +150 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js +421 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js +177 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js +122 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js +46 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js +6 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js +4 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js +5 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js +191 -0
- 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
- 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
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js +62 -0
- 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
- 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
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js +3 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js.map +1 -0
- 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
- 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
- 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
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js +2 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js +99 -0
- 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
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js +184 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js +10 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js +450 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js +192 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js +27 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js +9 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js +47 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js +21 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js.map +1 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js +102 -0
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js.map +1 -0
- package/dist/board.tsbuildinfo +1 -0
- package/dist/boardify/index.d.ts +192 -0
- package/dist/camera/base.d.ts +189 -0
- package/dist/camera/camera-mux/animation-and-lock/animation-and-lock.d.ts +50 -0
- package/dist/camera/camera-mux/animation-and-lock/index.d.ts +4 -0
- package/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +137 -0
- package/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +131 -0
- package/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +143 -0
- package/dist/camera/camera-mux/index.d.ts +3 -0
- package/dist/camera/camera-mux/interface.d.ts +12 -0
- package/dist/camera/camera-mux/relay.d.ts +27 -0
- package/dist/camera/camera-rig/camera-rig.d.ts +207 -0
- package/dist/camera/camera-rig/index.d.ts +5 -0
- package/dist/camera/camera-rig/pan-handler.d.ts +113 -0
- package/dist/camera/camera-rig/rotation-handler.d.ts +78 -0
- package/dist/camera/camera-rig/update-batcher/index.d.ts +3 -0
- package/dist/camera/camera-rig/update-batcher/position-update-batcher.d.ts +58 -0
- package/dist/camera/camera-rig/update-batcher/rotation-update-batcher.d.ts +54 -0
- package/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +60 -0
- package/dist/camera/camera-rig/zoom-handler.d.ts +77 -0
- package/dist/camera/default-camera.d.ts +170 -0
- package/dist/camera/index.d.ts +8 -0
- package/dist/camera/interface.d.ts +59 -0
- package/dist/camera/update-publisher.d.ts +172 -0
- package/dist/camera/utils/coordinate-conversion.d.ts +75 -0
- package/dist/camera/utils/index.d.ts +5 -0
- package/dist/camera/utils/matrix.d.ts +114 -0
- package/dist/camera/utils/position.d.ts +71 -0
- package/dist/camera/utils/rotation.d.ts +64 -0
- package/dist/camera/utils/zoom.d.ts +25 -0
- package/dist/index.d.ts +5 -0
- package/dist/input-interpretation/index.d.ts +3 -0
- package/dist/input-interpretation/input-state-machine/index.d.ts +4 -0
- package/dist/input-interpretation/input-state-machine/kmt-input-context.d.ts +130 -0
- package/dist/input-interpretation/input-state-machine/kmt-input-state-machine.d.ts +194 -0
- package/dist/input-interpretation/input-state-machine/touch-input-context.d.ts +44 -0
- package/dist/input-interpretation/input-state-machine/touch-input-state-machine.d.ts +64 -0
- package/dist/input-interpretation/raw-input-parser/index.d.ts +2 -0
- package/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.d.ts +87 -0
- package/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.d.ts +55 -0
- package/dist/input-interpretation/raw-input-publisher/index.d.ts +1 -0
- package/dist/input-interpretation/raw-input-publisher/raw-input-publisher.d.ts +130 -0
- package/dist/package.json +39 -0
- package/dist/utils/canvas-position-dimension.d.ts +18 -0
- package/dist/utils/coorindate-conversion.d.ts +5 -0
- package/dist/utils/drawing-utils.d.ts +55 -0
- package/dist/utils/drawing.d.ts +30 -0
- package/dist/utils/handler-pipeline.d.ts +30 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/observable.d.ts +9 -0
- package/dist/utils/ruler.d.ts +1 -0
- package/dist/utils/zoomlevel-adjustment.d.ts +28 -0
- package/jest.config.js +18 -0
- package/package.json +11 -10
- package/project.json +34 -0
- package/rollup.config.js +29 -0
- package/src/boardify/index.ts +562 -0
- package/src/camera/base.ts +387 -0
- package/src/camera/camera-mux/animation-and-lock/animation-and-lock.ts +114 -0
- package/src/camera/camera-mux/animation-and-lock/index.ts +4 -0
- package/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts +248 -0
- package/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts +237 -0
- package/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts +263 -0
- package/src/camera/camera-mux/index.ts +3 -0
- package/src/camera/camera-mux/interface.ts +13 -0
- package/src/camera/camera-mux/relay.ts +50 -0
- package/src/camera/camera-rig/camera-rig.ts +560 -0
- package/src/camera/camera-rig/index.ts +5 -0
- package/src/camera/camera-rig/pan-handler.ts +192 -0
- package/src/camera/camera-rig/rotation-handler.ts +124 -0
- package/src/camera/camera-rig/update-batcher/index.ts +3 -0
- package/src/camera/camera-rig/update-batcher/position-update-batcher.ts +133 -0
- package/src/camera/camera-rig/update-batcher/rotation-update-batcher.ts +123 -0
- package/src/camera/camera-rig/update-batcher/zoom-udpate-batcher.ts +157 -0
- package/src/camera/camera-rig/zoom-handler.ts +123 -0
- package/src/camera/default-camera.ts +297 -0
- package/src/camera/index.ts +8 -0
- package/src/camera/interface.ts +45 -0
- package/src/camera/update-publisher.ts +222 -0
- package/src/camera/utils/coordinate-conversion.ts +160 -0
- package/src/camera/utils/index.ts +5 -0
- package/src/camera/utils/matrix.ts +558 -0
- package/src/camera/utils/position.ts +196 -0
- package/src/camera/utils/rotation.ts +147 -0
- package/src/camera/utils/zoom.ts +55 -0
- package/src/index.ts +5 -0
- package/src/input-interpretation/index.ts +3 -0
- package/src/input-interpretation/input-state-machine/index.ts +4 -0
- package/src/input-interpretation/input-state-machine/kmt-input-context.ts +283 -0
- package/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts +491 -0
- package/src/input-interpretation/input-state-machine/touch-input-context.ts +106 -0
- package/src/input-interpretation/input-state-machine/touch-input-state-machine.ts +215 -0
- package/src/input-interpretation/raw-input-parser/index.ts +2 -0
- package/src/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.ts +207 -0
- package/src/input-interpretation/raw-input-parser/vanilla-touch-event-parser.ts +169 -0
- package/src/input-interpretation/raw-input-publisher/index.ts +1 -0
- package/src/input-interpretation/raw-input-publisher/raw-input-publisher.ts +227 -0
- package/src/utils/canvas-position-dimension.ts +215 -0
- package/src/utils/coorindate-conversion.ts +12 -0
- package/src/utils/drawing-utils.ts +439 -0
- package/src/utils/drawing.ts +266 -0
- package/src/utils/handler-pipeline.ts +41 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/observable.ts +63 -0
- package/src/utils/ruler.ts +18 -0
- package/src/utils/zoomlevel-adjustment.ts +108 -0
- package/test/board-camera/camera-rig.test.ts +78 -0
- package/test/board-camera/camera-utils.test.ts +263 -0
- package/test/board-camera/utils/coordinate-conversion.test.ts +26 -0
- package/test/board-camera/utils/matrix.test.ts +35 -0
- package/test/boardify/utils/canvas.test.ts +20 -0
- package/test/util/drawing.test.ts +83 -0
- package/test/util/handler-pipeline.test.ts +74 -0
- package/test/util/observable.test.ts +42 -0
- package/test/util/ruler.test.ts +41 -0
- package/tsconfig.json +23 -0
- package/tsconfig.spec.json +12 -0
- /package/{board.tsbuildinfo → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/board.tsbuildinfo} +0 -0
- /package/{boardify → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify}/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/base.d.ts +0 -0
- /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
- /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
- /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
- /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
- /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
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/interface.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-mux/relay.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/camera-rig.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/pan-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/rotation-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/update-batcher/index.d.ts +0 -0
- /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
- /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
- /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
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/camera-rig/zoom-handler.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/default-camera.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/interface.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/update-publisher.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/coordinate-conversion.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/index.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/matrix.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/position.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/rotation.d.ts +0 -0
- /package/{camera → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera}/utils/zoom.d.ts +0 -0
- /package/{index.d.ts → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.d.ts} +0 -0
- /package/{input-interpretation → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation}/index.d.ts +0 -0
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/canvas-position-dimension.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/coorindate-conversion.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing-utils.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/drawing.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/handler-pipeline.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/index.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/observable.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/ruler.d.ts +0 -0
- /package/{utils → .rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils}/zoomlevel-adjustment.d.ts +0 -0
- /package/{index.js → dist/index.js} +0 -0
- /package/{index.js.map → dist/index.js.map} +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import type { Point } from "@ue-too/math";
|
|
2
|
+
import { createDefaultCameraMux, CameraMux } from "../../camera/camera-mux";
|
|
3
|
+
import { ObservableBoardCamera } from "../../camera/interface";
|
|
4
|
+
import { Observable, Observer } from "../../utils/observable";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description The unsubscribe to user raw input.
|
|
8
|
+
*
|
|
9
|
+
* @category Event Parser
|
|
10
|
+
*/
|
|
11
|
+
export type UnsubscribeToUserRawInput = () => void;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @description The raw user pan input event payload.
|
|
15
|
+
*
|
|
16
|
+
* @category Event Parser
|
|
17
|
+
*/
|
|
18
|
+
export type RawUserPanInputEventPayload = {
|
|
19
|
+
diff: Point;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @description The raw user pan input event.
|
|
24
|
+
* Use type to discriminate between pan, zoom, and rotate events.
|
|
25
|
+
*
|
|
26
|
+
* @category Event Parser
|
|
27
|
+
*/
|
|
28
|
+
export type RawUserPanInputEvent = {
|
|
29
|
+
type: "pan",
|
|
30
|
+
} & RawUserPanInputEventPayload;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @description The raw user zoom input event payload.
|
|
34
|
+
*
|
|
35
|
+
* @category Event Parser
|
|
36
|
+
*/
|
|
37
|
+
export type RawUserZoomInputEventPayload = {
|
|
38
|
+
deltaZoomAmount: number;
|
|
39
|
+
anchorPoint: Point;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @description The raw user zoom input event.
|
|
44
|
+
* Use type to discriminate between pan, zoom, and rotate events.
|
|
45
|
+
*
|
|
46
|
+
* @category Event Parser
|
|
47
|
+
*/
|
|
48
|
+
export type RawUserZoomInputEvent = {
|
|
49
|
+
type: "zoom",
|
|
50
|
+
} & RawUserZoomInputEventPayload;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @description The raw user rotate input event payload.
|
|
54
|
+
*
|
|
55
|
+
* @category Event Parser
|
|
56
|
+
*/
|
|
57
|
+
export type RawUserRotateInputEventPayload = {
|
|
58
|
+
deltaRotation: number;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @description The raw user rotate input event.
|
|
63
|
+
* Use type to discriminate between pan, zoom, and rotate events.
|
|
64
|
+
*
|
|
65
|
+
* @category Event Parser
|
|
66
|
+
*/
|
|
67
|
+
export type RawUserRotateInputEvent = {
|
|
68
|
+
type: "rotate",
|
|
69
|
+
} & RawUserRotateInputEventPayload;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @description The raw user input event map.
|
|
73
|
+
*
|
|
74
|
+
* @category Event Parser
|
|
75
|
+
*/
|
|
76
|
+
export type RawUserInputEventMap = {
|
|
77
|
+
"pan": RawUserPanInputEventPayload,
|
|
78
|
+
"zoom": RawUserZoomInputEventPayload,
|
|
79
|
+
"rotate": RawUserRotateInputEventPayload,
|
|
80
|
+
"all": RawUserInputEvent,
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @description The raw user input event.
|
|
85
|
+
* Use type to discriminate between pan, zoom, and rotate events.
|
|
86
|
+
*
|
|
87
|
+
* @category Event Parser
|
|
88
|
+
*/
|
|
89
|
+
export type RawUserInputEvent = RawUserPanInputEvent | RawUserZoomInputEvent | RawUserRotateInputEvent;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @description The raw user input callback.
|
|
93
|
+
* This is the function type of callbacks for raw user input events.
|
|
94
|
+
*
|
|
95
|
+
* @category Event Parser
|
|
96
|
+
*/
|
|
97
|
+
export type RawUserInputCallback<K extends keyof RawUserInputEventMap> = (event: RawUserInputEventMap[K])=>void;
|
|
98
|
+
|
|
99
|
+
export interface UserInputPublisher {
|
|
100
|
+
notifyPan(diff: Point): void;
|
|
101
|
+
notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void;
|
|
102
|
+
notifyRotate(deltaRotation: number): void;
|
|
103
|
+
on<K extends keyof RawUserInputEventMap>(eventName: K, callback: (event: RawUserInputEventMap[K])=>void): UnsubscribeToUserRawInput;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @description The raw user input publisher.
|
|
108
|
+
* Publishs raw user input events to the input flow control, and subscribers.
|
|
109
|
+
*
|
|
110
|
+
* @category Event Parser
|
|
111
|
+
*/
|
|
112
|
+
export class RawUserInputPublisher implements UserInputPublisher {
|
|
113
|
+
|
|
114
|
+
private pan: Observable<Parameters<RawUserInputCallback<"pan">>>;
|
|
115
|
+
private zoom: Observable<Parameters<RawUserInputCallback<"zoom">>>;
|
|
116
|
+
private rotate: Observable<Parameters<RawUserInputCallback<"rotate">>>;
|
|
117
|
+
private all: Observable<Parameters<RawUserInputCallback<"all">>>;
|
|
118
|
+
private _cameraMux: CameraMux;
|
|
119
|
+
|
|
120
|
+
constructor(cameraMux: CameraMux){
|
|
121
|
+
this.pan = new Observable<Parameters<RawUserInputCallback<"pan">>>();
|
|
122
|
+
this.zoom = new Observable<Parameters<RawUserInputCallback<"zoom">>>();
|
|
123
|
+
this.rotate = new Observable<Parameters<RawUserInputCallback<"rotate">>>();
|
|
124
|
+
this.all = new Observable<Parameters<RawUserInputCallback<"all">>>();
|
|
125
|
+
this._cameraMux = cameraMux;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
notifyPan(diff: Point): void {
|
|
129
|
+
this._cameraMux.notifyPanInput(diff);
|
|
130
|
+
this.pan.notify({diff: diff});
|
|
131
|
+
this.all.notify({type: "pan", diff: diff});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void {
|
|
135
|
+
this._cameraMux.notifyZoomInput(deltaZoomAmount, anchorPoint);
|
|
136
|
+
this.zoom.notify({deltaZoomAmount: deltaZoomAmount, anchorPoint: anchorPoint});
|
|
137
|
+
this.all.notify({type: "zoom", deltaZoomAmount: deltaZoomAmount, anchorPoint: anchorPoint});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
notifyRotate(deltaRotation: number): void {
|
|
141
|
+
this._cameraMux.notifyRotationInput(deltaRotation);
|
|
142
|
+
this.rotate.notify({deltaRotation: deltaRotation});
|
|
143
|
+
this.all.notify({type: "rotate", deltaRotation: deltaRotation});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
on<K extends keyof RawUserInputEventMap>(eventName: K, callback: (event: RawUserInputEventMap[K])=>void): UnsubscribeToUserRawInput {
|
|
147
|
+
switch (eventName){
|
|
148
|
+
case "pan":
|
|
149
|
+
return this.pan.subscribe(callback as Observer<Parameters<RawUserInputCallback<"pan">>>);
|
|
150
|
+
case "zoom":
|
|
151
|
+
return this.zoom.subscribe(callback as Observer<Parameters<RawUserInputCallback<"zoom">>>);
|
|
152
|
+
case "rotate":
|
|
153
|
+
return this.rotate.subscribe(callback as Observer<Parameters<RawUserInputCallback<"rotate">>>);
|
|
154
|
+
case "all":
|
|
155
|
+
return this.all.subscribe(callback as Observer<Parameters<RawUserInputCallback<"all">>>);
|
|
156
|
+
default:
|
|
157
|
+
throw new Error("Invalid raw user input event name");
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
get cameraMux(): CameraMux {
|
|
162
|
+
return this._cameraMux;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
set cameraMux(cameraMux: CameraMux){
|
|
166
|
+
this._cameraMux = cameraMux;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @description Creates a default raw user input publisher.
|
|
172
|
+
*
|
|
173
|
+
* @category Event Parser
|
|
174
|
+
*/
|
|
175
|
+
export function createDefaultRawUserInputPublisher(camera: ObservableBoardCamera): RawUserInputPublisher {
|
|
176
|
+
return new RawUserInputPublisher(createDefaultCameraMux(camera));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export class RawUserInputPublisherWithWebWorkerRelay implements UserInputPublisher {
|
|
180
|
+
|
|
181
|
+
private pan: Observable<Parameters<RawUserInputCallback<"pan">>>;
|
|
182
|
+
private zoom: Observable<Parameters<RawUserInputCallback<"zoom">>>;
|
|
183
|
+
private rotate: Observable<Parameters<RawUserInputCallback<"rotate">>>;
|
|
184
|
+
private all: Observable<Parameters<RawUserInputCallback<"all">>>;
|
|
185
|
+
private webWorker: Worker;
|
|
186
|
+
|
|
187
|
+
constructor(webWorker: Worker){
|
|
188
|
+
this.pan = new Observable<Parameters<RawUserInputCallback<"pan">>>();
|
|
189
|
+
this.zoom = new Observable<Parameters<RawUserInputCallback<"zoom">>>();
|
|
190
|
+
this.rotate = new Observable<Parameters<RawUserInputCallback<"rotate">>>();
|
|
191
|
+
this.all = new Observable<Parameters<RawUserInputCallback<"all">>>();
|
|
192
|
+
this.webWorker = webWorker;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
notifyPan(diff: Point): void {
|
|
196
|
+
this.webWorker.postMessage({type: "notifyUserInput", payload: {type: "pan", diff: diff}});
|
|
197
|
+
this.pan.notify({diff: diff});
|
|
198
|
+
this.all.notify({type: "pan", diff: diff});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
notifyZoom(deltaZoomAmount: number, anchorPoint: Point): void {
|
|
202
|
+
this.webWorker.postMessage({type: "notifyUserInput", payload: {type: "zoom", deltaZoomAmount: deltaZoomAmount, anchorPoint: anchorPoint}});
|
|
203
|
+
this.zoom.notify({deltaZoomAmount: deltaZoomAmount, anchorPoint: anchorPoint});
|
|
204
|
+
this.all.notify({type: "zoom", deltaZoomAmount: deltaZoomAmount, anchorPoint: anchorPoint});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
notifyRotate(deltaRotation: number): void {
|
|
208
|
+
this.webWorker.postMessage({type: "notifyUserInput", payload: {type: "rotate", deltaRotation: deltaRotation}});
|
|
209
|
+
this.rotate.notify({deltaRotation: deltaRotation});
|
|
210
|
+
this.all.notify({type: "rotate", deltaRotation: deltaRotation});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
on<K extends keyof RawUserInputEventMap>(eventName: K, callback: (event: RawUserInputEventMap[K])=>void): UnsubscribeToUserRawInput {
|
|
214
|
+
switch (eventName){
|
|
215
|
+
case "pan":
|
|
216
|
+
return this.pan.subscribe(callback as Observer<Parameters<RawUserInputCallback<"pan">>>);
|
|
217
|
+
case "zoom":
|
|
218
|
+
return this.zoom.subscribe(callback as Observer<Parameters<RawUserInputCallback<"zoom">>>);
|
|
219
|
+
case "rotate":
|
|
220
|
+
return this.rotate.subscribe(callback as Observer<Parameters<RawUserInputCallback<"rotate">>>);
|
|
221
|
+
case "all":
|
|
222
|
+
return this.all.subscribe(callback as Observer<Parameters<RawUserInputCallback<"all">>>);
|
|
223
|
+
default:
|
|
224
|
+
throw new Error("Invalid raw user input event name");
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// Track position changes with ResizeObserver
|
|
2
|
+
import { Observable, Observer, SubscriptionOptions } from "../utils/observable";
|
|
3
|
+
|
|
4
|
+
export type CanvasUpdateObserver = (rect: DOMRect) => void;
|
|
5
|
+
|
|
6
|
+
export class CanvasPositionDimensionPublisher {
|
|
7
|
+
|
|
8
|
+
private lastRect: DOMRect;
|
|
9
|
+
private resizeObserver: ResizeObserver;
|
|
10
|
+
private intersectionObserver: IntersectionObserver;
|
|
11
|
+
private scrollHandler: () => void;
|
|
12
|
+
private resizeHandler: () => void;
|
|
13
|
+
private _observers: Observable<Parameters<CanvasUpdateObserver>>;
|
|
14
|
+
|
|
15
|
+
constructor(canvas: HTMLCanvasElement) {
|
|
16
|
+
this._observers = new Observable<Parameters<CanvasUpdateObserver>>();
|
|
17
|
+
this.lastRect = canvas.getBoundingClientRect();
|
|
18
|
+
|
|
19
|
+
this.resizeObserver = new ResizeObserver(entries => {
|
|
20
|
+
for (const entry of entries) {
|
|
21
|
+
const newRect = entry.target.getBoundingClientRect();
|
|
22
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(entry.target));
|
|
23
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
24
|
+
this.publishPositionUpdate(trueRect);
|
|
25
|
+
this.lastRect = trueRect;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
this.intersectionObserver = new IntersectionObserver(entries => {
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
if (entry.isIntersecting) {
|
|
33
|
+
const newRect = entry.boundingClientRect;
|
|
34
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(entry.target));
|
|
35
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
36
|
+
this.publishPositionUpdate(trueRect);
|
|
37
|
+
this.lastRect = trueRect;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// Add scroll handler to detect position changes during scrolling
|
|
44
|
+
this.scrollHandler = (() => {
|
|
45
|
+
const newRect = canvas.getBoundingClientRect();
|
|
46
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(canvas));
|
|
47
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
48
|
+
this.publishPositionUpdate(trueRect);
|
|
49
|
+
this.lastRect = trueRect;
|
|
50
|
+
}
|
|
51
|
+
}).bind(this);
|
|
52
|
+
|
|
53
|
+
// Add window resize handler to detect position changes when window size changes
|
|
54
|
+
this.resizeHandler = (() => {
|
|
55
|
+
const newRect = canvas.getBoundingClientRect();
|
|
56
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(canvas));
|
|
57
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
58
|
+
this.publishPositionUpdate(trueRect);
|
|
59
|
+
this.lastRect = trueRect;
|
|
60
|
+
}
|
|
61
|
+
}).bind(this);
|
|
62
|
+
|
|
63
|
+
this.resizeObserver.observe(canvas);
|
|
64
|
+
this.intersectionObserver.observe(canvas);
|
|
65
|
+
window.addEventListener('scroll', this.scrollHandler, { passive: true });
|
|
66
|
+
window.addEventListener('resize', this.resizeHandler, { passive: true });
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Add a cleanup method to remove event listeners
|
|
70
|
+
public dispose(): void {
|
|
71
|
+
this.resizeObserver.disconnect();
|
|
72
|
+
this.intersectionObserver.disconnect();
|
|
73
|
+
window.removeEventListener('scroll', this.scrollHandler);
|
|
74
|
+
window.removeEventListener('resize', this.resizeHandler);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
attach(canvas: HTMLCanvasElement) {
|
|
78
|
+
this.dispose();
|
|
79
|
+
this.resizeObserver.observe(canvas);
|
|
80
|
+
this.intersectionObserver.observe(canvas);
|
|
81
|
+
this.scrollHandler = (() => {
|
|
82
|
+
const newRect = canvas.getBoundingClientRect();
|
|
83
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(canvas));
|
|
84
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
85
|
+
this.publishPositionUpdate(trueRect);
|
|
86
|
+
this.lastRect = trueRect;
|
|
87
|
+
}
|
|
88
|
+
}).bind(this);
|
|
89
|
+
this.resizeHandler = (() => {
|
|
90
|
+
const newRect = canvas.getBoundingClientRect();
|
|
91
|
+
const trueRect = getTrueRect(newRect, window.getComputedStyle(canvas));
|
|
92
|
+
if (rectChanged(this.lastRect, trueRect)) {
|
|
93
|
+
this.publishPositionUpdate(trueRect);
|
|
94
|
+
this.lastRect = trueRect;
|
|
95
|
+
}
|
|
96
|
+
}).bind(this);
|
|
97
|
+
window.addEventListener("scroll", this.scrollHandler, { passive: true });
|
|
98
|
+
window.addEventListener("resize", this.resizeHandler, { passive: true });
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private publishPositionUpdate(rect: DOMRect) {
|
|
102
|
+
this._observers.notify(rect);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
onPositionUpdate(observer: Observer<[DOMRect]>, options?: SubscriptionOptions) {
|
|
106
|
+
this._observers.subscribe(observer, options);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export function getTrueRect(rect: DOMRect, computedStyle: CSSStyleDeclaration) {
|
|
111
|
+
const paddingLeft = parseFloat(computedStyle.paddingLeft);
|
|
112
|
+
const paddingTop = parseFloat(computedStyle.paddingTop);
|
|
113
|
+
const paddingRight = parseFloat(computedStyle.paddingRight);
|
|
114
|
+
const paddingBottom = parseFloat(computedStyle.paddingBottom);
|
|
115
|
+
|
|
116
|
+
const borderLeft = parseFloat(computedStyle.borderLeftWidth);
|
|
117
|
+
const borderTop = parseFloat(computedStyle.borderTopWidth);
|
|
118
|
+
const borderRight = parseFloat(computedStyle.borderRightWidth);
|
|
119
|
+
const borderBottom = parseFloat(computedStyle.borderBottomWidth);
|
|
120
|
+
|
|
121
|
+
const trueLeft = rect.left + paddingLeft + borderLeft;
|
|
122
|
+
const trueTop = rect.top + paddingTop + borderTop;
|
|
123
|
+
const trueWidth = rect.width - paddingLeft - paddingRight - borderLeft - borderRight;
|
|
124
|
+
const trueHeight = rect.height - paddingTop - paddingBottom - borderTop - borderBottom;
|
|
125
|
+
return new DOMRect(trueLeft, trueTop, trueWidth, trueHeight);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function rectChanged(r1: DOMRect, r2: DOMRect) {
|
|
129
|
+
return r1.top !== r2.top || r1.left !== r2.left ||
|
|
130
|
+
r1.width !== r2.width || r1.height !== r2.height;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* This is for proxying the canvas context methods that need to flip the y-coordinates.
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
const methodsToFlip: Record<string, number[]> = {
|
|
138
|
+
fillRect: [1], // [yIndex] - indices of y-coordinates to flip
|
|
139
|
+
strokeRect: [1],
|
|
140
|
+
fillText: [2],
|
|
141
|
+
strokeText: [1],
|
|
142
|
+
lineTo: [1],
|
|
143
|
+
moveTo: [1],
|
|
144
|
+
quadraticCurveTo: [1, 3],
|
|
145
|
+
bezierCurveTo: [1, 3, 5],
|
|
146
|
+
arc: [1],
|
|
147
|
+
drawImage: [2], // Base case for first two signatures
|
|
148
|
+
rect: [1],
|
|
149
|
+
roundRect: [1],
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
export function reverseYAxis(context: CanvasRenderingContext2D): CanvasRenderingContext2D {
|
|
153
|
+
return new Proxy(context, {
|
|
154
|
+
get(target: CanvasRenderingContext2D, prop: string | symbol, receiver: any): any {
|
|
155
|
+
const value = Reflect.get(target, prop, target);
|
|
156
|
+
|
|
157
|
+
// Check if this is a method that needs y-coordinate flipping
|
|
158
|
+
if (typeof prop === 'string' && prop in methodsToFlip && typeof value === 'function') {
|
|
159
|
+
return function(...args: any[]) {
|
|
160
|
+
// Create a copy of the arguments
|
|
161
|
+
const newArgs = [...args];
|
|
162
|
+
|
|
163
|
+
// Special handling for drawImage with 9 arguments (third signature of drawImage)
|
|
164
|
+
if (prop === 'drawImage' && args.length === 9) {
|
|
165
|
+
const convertedArgs = invertYAxisForDrawImageWith9Args(args);
|
|
166
|
+
return value.apply(target, convertedArgs);
|
|
167
|
+
} else {
|
|
168
|
+
// Flip the y-coordinates based on methodsToFlip configuration
|
|
169
|
+
const yIndices = methodsToFlip[prop];
|
|
170
|
+
for (const index of yIndices) {
|
|
171
|
+
if (index < newArgs.length) {
|
|
172
|
+
newArgs[index] = -newArgs[index];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Special handling for drawImage with 5 arguments (first signature of drawImage)
|
|
176
|
+
if(prop === "drawImage" && args.length === 5){
|
|
177
|
+
newArgs[2] -= newArgs[4];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Call the original method with the modified arguments
|
|
182
|
+
return value.apply(target, newArgs);
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Return the original value for properties and methods that don't need modification
|
|
187
|
+
if (typeof value === 'function') {
|
|
188
|
+
return function(...args: any[]) {
|
|
189
|
+
return value.apply(target, args);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return value;
|
|
194
|
+
},
|
|
195
|
+
set(target, prop, value): boolean {
|
|
196
|
+
return Reflect.set(target, prop, value);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export function invertYAxisForDrawImageWith9Args(args: any[]): typeof args {
|
|
202
|
+
if(args.length !== 9){
|
|
203
|
+
return args;
|
|
204
|
+
}
|
|
205
|
+
const newArgs = [...args];
|
|
206
|
+
const imageHeight = args[0].height;
|
|
207
|
+
if(imageHeight !== undefined){
|
|
208
|
+
newArgs[2] = imageHeight - newArgs[2];
|
|
209
|
+
newArgs[6] = -newArgs[6];
|
|
210
|
+
newArgs[6] -= newArgs[8];
|
|
211
|
+
newArgs[4] = -newArgs[4];
|
|
212
|
+
}
|
|
213
|
+
return newArgs;
|
|
214
|
+
}
|
|
215
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Point } from "@ue-too/math";
|
|
2
|
+
|
|
3
|
+
// isometric point to flat world point
|
|
4
|
+
export function pointConversion(point: Point) {
|
|
5
|
+
const cos30 = Math.cos(Math.PI / 6);
|
|
6
|
+
const cos60 = Math.cos(Math.PI / 3);
|
|
7
|
+
|
|
8
|
+
return {
|
|
9
|
+
x: point.x * cos30 - point.y * cos30,
|
|
10
|
+
y: point.x * cos60 + point.y * cos60 + (point.z ?? 0)
|
|
11
|
+
}
|
|
12
|
+
}
|