@ue-too/board 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +10 -11
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js +0 -475
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js +0 -340
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/base.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js +0 -88
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/animation-and-lock.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js +0 -5
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.js +0 -157
- 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 +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.js +0 -151
- 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 +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.js +0 -153
- 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 +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js +0 -4
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js +0 -2
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/interface.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js +0 -38
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-mux/relay.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js +0 -454
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/camera-rig.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js +0 -6
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js +0 -124
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/pan-handler.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js +0 -71
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/rotation-handler.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js +0 -4
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js +0 -97
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/position-update-batcher.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js +0 -91
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/rotation-update-batcher.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js +0 -128
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js +0 -76
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/camera-rig/zoom-handler.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js +0 -258
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/default-camera.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js +0 -9
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js +0 -2
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/interface.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js +0 -74
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/update-publisher.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js +0 -150
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/coordinate-conversion.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js +0 -6
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js +0 -421
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/matrix.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js +0 -177
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/position.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js +0 -122
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/rotation.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js +0 -46
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera/utils/zoom.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js +0 -6
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js +0 -4
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js +0 -5
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js +0 -191
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-context.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js +0 -342
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/kmt-input-state-machine.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js +0 -62
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-context.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js +0 -173
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/input-state-machine/touch-input-state-machine.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js +0 -3
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js +0 -123
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js +0 -118
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js +0 -2
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js +0 -99
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation/raw-input-publisher/raw-input-publisher.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js +0 -184
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/canvas-position-dimension.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js +0 -10
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/coorindate-conversion.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js +0 -450
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing-utils.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js +0 -192
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/drawing.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js +0 -27
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/handler-pipeline.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js +0 -9
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/index.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js +0 -47
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/observable.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js +0 -21
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/ruler.js.map +0 -1
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js +0 -102
- package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils/zoomlevel-adjustment.js.map +0 -1
- package/dist/board.tsbuildinfo +0 -1
- package/dist/boardify/index.d.ts +0 -192
- package/dist/camera/base.d.ts +0 -189
- package/dist/camera/camera-mux/animation-and-lock/animation-and-lock.d.ts +0 -50
- package/dist/camera/camera-mux/animation-and-lock/index.d.ts +0 -4
- package/dist/camera/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +0 -137
- package/dist/camera/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +0 -131
- package/dist/camera/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +0 -143
- package/dist/camera/camera-mux/index.d.ts +0 -3
- package/dist/camera/camera-mux/interface.d.ts +0 -12
- package/dist/camera/camera-mux/relay.d.ts +0 -27
- package/dist/camera/camera-rig/camera-rig.d.ts +0 -207
- package/dist/camera/camera-rig/index.d.ts +0 -5
- package/dist/camera/camera-rig/pan-handler.d.ts +0 -113
- package/dist/camera/camera-rig/rotation-handler.d.ts +0 -78
- package/dist/camera/camera-rig/update-batcher/index.d.ts +0 -3
- package/dist/camera/camera-rig/update-batcher/position-update-batcher.d.ts +0 -58
- package/dist/camera/camera-rig/update-batcher/rotation-update-batcher.d.ts +0 -54
- package/dist/camera/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +0 -60
- package/dist/camera/camera-rig/zoom-handler.d.ts +0 -77
- package/dist/camera/default-camera.d.ts +0 -170
- package/dist/camera/index.d.ts +0 -8
- package/dist/camera/interface.d.ts +0 -59
- package/dist/camera/update-publisher.d.ts +0 -172
- package/dist/camera/utils/coordinate-conversion.d.ts +0 -75
- package/dist/camera/utils/index.d.ts +0 -5
- package/dist/camera/utils/matrix.d.ts +0 -114
- package/dist/camera/utils/position.d.ts +0 -71
- package/dist/camera/utils/rotation.d.ts +0 -64
- package/dist/camera/utils/zoom.d.ts +0 -25
- package/dist/index.d.ts +0 -5
- package/dist/input-interpretation/index.d.ts +0 -3
- package/dist/input-interpretation/input-state-machine/index.d.ts +0 -4
- package/dist/input-interpretation/input-state-machine/kmt-input-context.d.ts +0 -130
- package/dist/input-interpretation/input-state-machine/kmt-input-state-machine.d.ts +0 -194
- package/dist/input-interpretation/input-state-machine/touch-input-context.d.ts +0 -44
- package/dist/input-interpretation/input-state-machine/touch-input-state-machine.d.ts +0 -64
- package/dist/input-interpretation/raw-input-parser/index.d.ts +0 -2
- package/dist/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.d.ts +0 -87
- package/dist/input-interpretation/raw-input-parser/vanilla-touch-event-parser.d.ts +0 -55
- package/dist/input-interpretation/raw-input-publisher/index.d.ts +0 -1
- package/dist/input-interpretation/raw-input-publisher/raw-input-publisher.d.ts +0 -130
- package/dist/package.json +0 -39
- package/dist/utils/canvas-position-dimension.d.ts +0 -18
- package/dist/utils/coorindate-conversion.d.ts +0 -5
- package/dist/utils/drawing-utils.d.ts +0 -55
- package/dist/utils/drawing.d.ts +0 -30
- package/dist/utils/handler-pipeline.d.ts +0 -30
- package/dist/utils/index.d.ts +0 -8
- package/dist/utils/observable.d.ts +0 -9
- package/dist/utils/ruler.d.ts +0 -1
- package/dist/utils/zoomlevel-adjustment.d.ts +0 -28
- package/jest.config.js +0 -18
- package/project.json +0 -34
- package/rollup.config.js +0 -29
- package/src/boardify/index.ts +0 -562
- package/src/camera/base.ts +0 -387
- package/src/camera/camera-mux/animation-and-lock/animation-and-lock.ts +0 -114
- package/src/camera/camera-mux/animation-and-lock/index.ts +0 -4
- package/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts +0 -248
- package/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts +0 -237
- package/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts +0 -263
- package/src/camera/camera-mux/index.ts +0 -3
- package/src/camera/camera-mux/interface.ts +0 -13
- package/src/camera/camera-mux/relay.ts +0 -50
- package/src/camera/camera-rig/camera-rig.ts +0 -560
- package/src/camera/camera-rig/index.ts +0 -5
- package/src/camera/camera-rig/pan-handler.ts +0 -192
- package/src/camera/camera-rig/rotation-handler.ts +0 -124
- package/src/camera/camera-rig/update-batcher/index.ts +0 -3
- package/src/camera/camera-rig/update-batcher/position-update-batcher.ts +0 -133
- package/src/camera/camera-rig/update-batcher/rotation-update-batcher.ts +0 -123
- package/src/camera/camera-rig/update-batcher/zoom-udpate-batcher.ts +0 -157
- package/src/camera/camera-rig/zoom-handler.ts +0 -123
- package/src/camera/default-camera.ts +0 -297
- package/src/camera/index.ts +0 -8
- package/src/camera/interface.ts +0 -45
- package/src/camera/update-publisher.ts +0 -222
- package/src/camera/utils/coordinate-conversion.ts +0 -160
- package/src/camera/utils/index.ts +0 -5
- package/src/camera/utils/matrix.ts +0 -558
- package/src/camera/utils/position.ts +0 -196
- package/src/camera/utils/rotation.ts +0 -147
- package/src/camera/utils/zoom.ts +0 -55
- package/src/index.ts +0 -5
- package/src/input-interpretation/index.ts +0 -3
- package/src/input-interpretation/input-state-machine/index.ts +0 -4
- package/src/input-interpretation/input-state-machine/kmt-input-context.ts +0 -283
- package/src/input-interpretation/input-state-machine/kmt-input-state-machine.ts +0 -491
- package/src/input-interpretation/input-state-machine/touch-input-context.ts +0 -106
- package/src/input-interpretation/input-state-machine/touch-input-state-machine.ts +0 -215
- package/src/input-interpretation/raw-input-parser/index.ts +0 -2
- package/src/input-interpretation/raw-input-parser/vanilla-kmt-event-parser.ts +0 -207
- package/src/input-interpretation/raw-input-parser/vanilla-touch-event-parser.ts +0 -169
- package/src/input-interpretation/raw-input-publisher/index.ts +0 -1
- package/src/input-interpretation/raw-input-publisher/raw-input-publisher.ts +0 -227
- package/src/utils/canvas-position-dimension.ts +0 -215
- package/src/utils/coorindate-conversion.ts +0 -12
- package/src/utils/drawing-utils.ts +0 -439
- package/src/utils/drawing.ts +0 -266
- package/src/utils/handler-pipeline.ts +0 -41
- package/src/utils/index.ts +0 -8
- package/src/utils/observable.ts +0 -63
- package/src/utils/ruler.ts +0 -18
- package/src/utils/zoomlevel-adjustment.ts +0 -108
- package/test/board-camera/camera-rig.test.ts +0 -78
- package/test/board-camera/camera-utils.test.ts +0 -263
- package/test/board-camera/utils/coordinate-conversion.test.ts +0 -26
- package/test/board-camera/utils/matrix.test.ts +0 -35
- package/test/boardify/utils/canvas.test.ts +0 -20
- package/test/util/drawing.test.ts +0 -83
- package/test/util/handler-pipeline.test.ts +0 -74
- package/test/util/observable.test.ts +0 -42
- package/test/util/ruler.test.ts +0 -41
- package/tsconfig.json +0 -23
- package/tsconfig.spec.json +0 -12
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/board.tsbuildinfo → board.tsbuildinfo} +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify → boardify}/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/base.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/animation-and-lock/animation-and-lock.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/animation-and-lock/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/animation-and-lock/pan-control-state-machine.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/animation-and-lock/rotation-control-state-machine.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/animation-and-lock/zoom-control-state-machine.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/interface.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-mux/relay.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/camera-rig.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/pan-handler.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/rotation-handler.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/update-batcher/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/update-batcher/position-update-batcher.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/update-batcher/rotation-update-batcher.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/update-batcher/zoom-udpate-batcher.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/camera-rig/zoom-handler.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/default-camera.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/interface.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/update-publisher.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/coordinate-conversion.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/matrix.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/position.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/rotation.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/camera → camera}/utils/zoom.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/index.js → index.js} +0 -0
- /package/{dist/index.js.map → index.js.map} +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/input-state-machine/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/input-state-machine/kmt-input-context.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/input-state-machine/kmt-input-state-machine.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/input-state-machine/touch-input-context.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/input-state-machine/touch-input-state-machine.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/raw-input-parser/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/raw-input-parser/vanilla-kmt-event-parser.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/raw-input-parser/vanilla-touch-event-parser.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/raw-input-publisher/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/input-interpretation → input-interpretation}/raw-input-publisher/raw-input-publisher.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/canvas-position-dimension.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/coorindate-conversion.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/drawing-utils.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/drawing.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/handler-pipeline.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/index.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/observable.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/ruler.d.ts +0 -0
- /package/{.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/utils → utils}/zoomlevel-adjustment.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ue-too/board",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"types": "./
|
|
8
|
-
"import": "./
|
|
9
|
-
"default": "./
|
|
7
|
+
"types": "./index.d.ts",
|
|
8
|
+
"import": "./index.js",
|
|
9
|
+
"default": "./index.js"
|
|
10
10
|
},
|
|
11
11
|
"./package.json": "./package.json"
|
|
12
12
|
},
|
|
13
|
-
"main": "./
|
|
14
|
-
"types": "./
|
|
15
|
-
"module": "./
|
|
13
|
+
"main": "./index.js",
|
|
14
|
+
"types": "./index.d.ts",
|
|
15
|
+
"module": "./index.js",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ue-too/math": "0.
|
|
18
|
-
"@ue-too/being": "0.
|
|
17
|
+
"@ue-too/math": "^0.6.0",
|
|
18
|
+
"@ue-too/being": "^0.6.0"
|
|
19
19
|
},
|
|
20
20
|
"repository": {
|
|
21
21
|
"type": "git",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"PIXI"
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
|
-
"test": "
|
|
38
|
-
"build": "rm -rf dist && rollup -c rollup.config.js"
|
|
37
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
39
38
|
}
|
|
40
39
|
}
|
|
@@ -1,475 +0,0 @@
|
|
|
1
|
-
import DefaultBoardCamera from '../camera/default-camera';
|
|
2
|
-
import { halfTranslationHeightOf, halfTranslationWidthOf } from '../camera/utils/position';
|
|
3
|
-
import { VanillaKMTEventParser } from '../input-interpretation/raw-input-parser';
|
|
4
|
-
import { VanillaTouchEventParser } from '../input-interpretation/raw-input-parser';
|
|
5
|
-
import { reverseYAxis } from '../utils';
|
|
6
|
-
import { PointCal } from '@ue-too/math';
|
|
7
|
-
import { minZoomLevelBaseOnDimensions, minZoomLevelBaseOnHeight, minZoomLevelBaseOnWidth, zoomLevelBoundariesShouldUpdate } from '../utils';
|
|
8
|
-
import { RawUserInputPublisher } from '../input-interpretation/raw-input-publisher';
|
|
9
|
-
import { createCameraMuxWithAnimationAndLockWithCameraRig } from '../camera/camera-mux';
|
|
10
|
-
import { DefaultCameraRig } from '../camera/camera-rig';
|
|
11
|
-
import { CanvasProxy, createKmtInputStateMachine, createTouchInputStateMachine, ObservableInputTracker, TouchInputTracker } from '../input-interpretation/input-state-machine';
|
|
12
|
-
/**
|
|
13
|
-
* Usage
|
|
14
|
-
* ```typescript
|
|
15
|
-
* import { Board } from "@niuee/board";
|
|
16
|
-
*
|
|
17
|
-
* // however you prefer to get a canvas element that is already in the DOM
|
|
18
|
-
* const canvasElement = document.querySelector("canvas") as HTMLCanvasElement;
|
|
19
|
-
* const board = new Board(canvasElement);
|
|
20
|
-
*
|
|
21
|
-
* const stepFn = board.getStepFunction();
|
|
22
|
-
* const context = board.getContext();
|
|
23
|
-
*
|
|
24
|
-
* function step(timestamp: number){
|
|
25
|
-
* stepFn(timestamp);
|
|
26
|
-
* // do other stuff after the board has stepped
|
|
27
|
-
* //.
|
|
28
|
-
* //.
|
|
29
|
-
* //.
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
* Alternatively you can import the board class as from a subdirectory; this shaves the bundle size a bit but not a lot though. As the board is the overall entry point for the library.
|
|
33
|
-
*
|
|
34
|
-
* ```typescript
|
|
35
|
-
* import { Board } from "@niuee/board/boardify";
|
|
36
|
-
* ```
|
|
37
|
-
* @category Board
|
|
38
|
-
*
|
|
39
|
-
*/
|
|
40
|
-
export default class Board {
|
|
41
|
-
constructor(canvas, eventTarget = canvas) {
|
|
42
|
-
this._alignCoordinateSystem = true;
|
|
43
|
-
this._fullScreen = false;
|
|
44
|
-
this.lastUpdateTime = 0;
|
|
45
|
-
this._canvas = canvas;
|
|
46
|
-
const camera = new DefaultBoardCamera();
|
|
47
|
-
camera.viewPortHeight = canvas.height;
|
|
48
|
-
camera.viewPortWidth = canvas.width;
|
|
49
|
-
camera.boundaries = { min: { x: -5000, y: -5000 }, max: { x: 5000, y: 5000 } };
|
|
50
|
-
const context = canvas.getContext('2d');
|
|
51
|
-
if (context == null) {
|
|
52
|
-
throw new Error("Canvas 2d context is null");
|
|
53
|
-
}
|
|
54
|
-
this._context = context;
|
|
55
|
-
this._reversedContext = reverseYAxis(context);
|
|
56
|
-
this.bindFunctions();
|
|
57
|
-
this.attributeObserver = new MutationObserver(this.attributeCallBack);
|
|
58
|
-
this.attributeObserver.observe(this._canvas, { attributes: true });
|
|
59
|
-
this._canvasProxy = new CanvasProxy(canvas);
|
|
60
|
-
this.cameraRig = new DefaultCameraRig({
|
|
61
|
-
limitEntireViewPort: true,
|
|
62
|
-
restrictRelativeXTranslation: false,
|
|
63
|
-
restrictRelativeYTranslation: false,
|
|
64
|
-
restrictXTranslation: false,
|
|
65
|
-
restrictYTranslation: false,
|
|
66
|
-
restrictZoom: false,
|
|
67
|
-
clampTranslation: true,
|
|
68
|
-
clampZoom: true,
|
|
69
|
-
}, camera);
|
|
70
|
-
this.boardInputPublisher = new RawUserInputPublisher(createCameraMuxWithAnimationAndLockWithCameraRig(this.cameraRig));
|
|
71
|
-
this._observableInputTracker = new ObservableInputTracker(this._canvasProxy, this.boardInputPublisher);
|
|
72
|
-
this._touchInputTracker = new TouchInputTracker(this._canvasProxy, this.boardInputPublisher);
|
|
73
|
-
const kmtInputStateMachine = createKmtInputStateMachine(this._observableInputTracker);
|
|
74
|
-
const touchInputStateMachine = createTouchInputStateMachine(this._touchInputTracker);
|
|
75
|
-
this._kmtParser = new VanillaKMTEventParser(canvas, kmtInputStateMachine);
|
|
76
|
-
this._touchParser = new VanillaTouchEventParser(canvas, touchInputStateMachine);
|
|
77
|
-
this.calibrateCanvasDimensions();
|
|
78
|
-
this.setup();
|
|
79
|
-
}
|
|
80
|
-
calibrateCanvasDimensions() {
|
|
81
|
-
// NOTE: device pixel ratio
|
|
82
|
-
this._canvas.style.width = this._canvas.width + "px";
|
|
83
|
-
this._canvas.style.height = this._canvas.height + "px";
|
|
84
|
-
this._canvas.width = window.devicePixelRatio * this._canvas.width;
|
|
85
|
-
this._canvas.height = window.devicePixelRatio * this._canvas.height;
|
|
86
|
-
}
|
|
87
|
-
registerEventListeners() {
|
|
88
|
-
this._kmtParser.setUp();
|
|
89
|
-
this._touchParser.setUp();
|
|
90
|
-
}
|
|
91
|
-
removeEventListeners() {
|
|
92
|
-
this._touchParser.tearDown();
|
|
93
|
-
this._kmtParser.tearDown();
|
|
94
|
-
}
|
|
95
|
-
attach(canvas) {
|
|
96
|
-
if (this._canvas == canvas) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
this._canvas = canvas;
|
|
100
|
-
this.calibrateCanvasDimensions();
|
|
101
|
-
this._kmtParser.attach(canvas);
|
|
102
|
-
this._touchParser.attach(canvas);
|
|
103
|
-
this._canvasProxy.attach(canvas);
|
|
104
|
-
this.attributeObserver.disconnect();
|
|
105
|
-
this.attributeObserver.observe(canvas, { attributes: true });
|
|
106
|
-
this._context = canvas.getContext('2d');
|
|
107
|
-
this._reversedContext = reverseYAxis(this._context);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* @group LifeCycle
|
|
111
|
-
* @description This function is used to set up the board. It adds all the event listeners and starts the resize observer and the attribute observer.
|
|
112
|
-
*/
|
|
113
|
-
setup() {
|
|
114
|
-
this.registerEventListeners();
|
|
115
|
-
this.attributeObserver.observe(this._canvas, { attributes: true });
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* @group LifeCycle
|
|
119
|
-
* @description This function is used to clean up the board. It removes all the event listeners and disconnects the resize observer and the attribute observer.
|
|
120
|
-
*/
|
|
121
|
-
tearDown() {
|
|
122
|
-
this.removeEventListeners();
|
|
123
|
-
this.attributeObserver.disconnect();
|
|
124
|
-
}
|
|
125
|
-
bindFunctions() {
|
|
126
|
-
this.step = this.step.bind(this);
|
|
127
|
-
this.attributeCallBack = this.attributeCallBack.bind(this);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* @group Properties
|
|
131
|
-
* @description This is in sync with the canvas width and the camera view port width. This is not the board's width.
|
|
132
|
-
* If the `limitEntireViewPort` is set to true, the min zoom level is updated based on the width of the canvas.
|
|
133
|
-
*/
|
|
134
|
-
set width(width) {
|
|
135
|
-
this._canvas.width = width * window.devicePixelRatio;
|
|
136
|
-
this._canvas.style.width = width + "px";
|
|
137
|
-
this.camera.viewPortWidth = width;
|
|
138
|
-
if (this.limitEntireViewPort) {
|
|
139
|
-
const targetMinZoomLevel = minZoomLevelBaseOnWidth(this.camera.boundaries, this._canvas.width / window.devicePixelRatio, this._canvas.height / window.devicePixelRatio, this.camera.rotation);
|
|
140
|
-
if (targetMinZoomLevel != undefined && zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
141
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
get width() {
|
|
146
|
-
return this._canvas.width / window.devicePixelRatio;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* @group Properties
|
|
150
|
-
* @description This is in sync with the canvas height and the camera view port height. This is not the board's height.
|
|
151
|
-
* If the limitEntireViewPort is set to true, the min zoom level is updated based on the height.
|
|
152
|
-
*/
|
|
153
|
-
set height(height) {
|
|
154
|
-
this._canvas.height = height * window.devicePixelRatio;
|
|
155
|
-
this._canvas.style.height = height + "px";
|
|
156
|
-
this.camera.viewPortHeight = height;
|
|
157
|
-
if (this.limitEntireViewPort) {
|
|
158
|
-
const targetMinZoomLevel = minZoomLevelBaseOnHeight(this.camera.boundaries, this._canvas.width / window.devicePixelRatio, this._canvas.height / window.devicePixelRatio, this.camera.rotation);
|
|
159
|
-
if (targetMinZoomLevel != undefined && zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
160
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
get height() {
|
|
165
|
-
return this._canvas.height / window.devicePixelRatio;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* @description This is an attribute that determines if the coordinate system should be aligned with the one of the HTML canvas element. The default is true.
|
|
169
|
-
* If you set this to true, the coordinate system will be aligned with the one of the HTML canvas element.
|
|
170
|
-
* If you change this value during runtime, you should update the context to be aligned with the new coordinate system. (just call board.context again)
|
|
171
|
-
*/
|
|
172
|
-
set alignCoordinateSystem(align) {
|
|
173
|
-
this._alignCoordinateSystem = align;
|
|
174
|
-
this._observableInputTracker.alignCoordinateSystem = align;
|
|
175
|
-
this._touchInputTracker.alignCoordinateSystem = align;
|
|
176
|
-
}
|
|
177
|
-
get alignCoordinateSystem() {
|
|
178
|
-
return this._alignCoordinateSystem;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* @description Determines if the board should be full screen. If this is set to true, the width and height of the board will be set to the window's inner width and inner height respectively,
|
|
182
|
-
* and the width and height of the board will resize with the window.
|
|
183
|
-
*/
|
|
184
|
-
get fullScreen() {
|
|
185
|
-
return this._fullScreen;
|
|
186
|
-
}
|
|
187
|
-
set fullScreen(value) {
|
|
188
|
-
this._fullScreen = value;
|
|
189
|
-
if (this._fullScreen) {
|
|
190
|
-
this.width = window.innerWidth;
|
|
191
|
-
this.height = window.innerHeight;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* @description The context used to draw on the canvas.
|
|
196
|
-
* If alignCoordinateSystem is false, this returns a proxy that automatically negates y-coordinates for relevant drawing methods.
|
|
197
|
-
*/
|
|
198
|
-
get context() {
|
|
199
|
-
if (!this._alignCoordinateSystem) {
|
|
200
|
-
return this._reversedContext;
|
|
201
|
-
}
|
|
202
|
-
return this._context;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* @description Determines the behavior of the camera when the camera is at the edge of the boundaries. If set to true, the entire view port would not move beyond the boundaries.
|
|
206
|
-
* If set to false, only the center of the camera is bounded by the boundaries.
|
|
207
|
-
*/
|
|
208
|
-
set limitEntireViewPort(value) {
|
|
209
|
-
this.cameraRig.limitEntireViewPort = value;
|
|
210
|
-
if (value) {
|
|
211
|
-
const targetMinZoomLevel = minZoomLevelBaseOnDimensions(this.camera.boundaries, this._canvas.width, this._canvas.height, this.camera.rotation);
|
|
212
|
-
if (targetMinZoomLevel != undefined && zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
213
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
get limitEntireViewPort() {
|
|
218
|
-
return this.cameraRig.limitEntireViewPort;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* @description The strategy used to handle the keyboard, mouse events. The default strategy is the DefaultBoardKMTStrategy.
|
|
222
|
-
* You can implement your own strategy by implementing the BoardKMTStrategy interface.
|
|
223
|
-
*/
|
|
224
|
-
set kmtParser(parser) {
|
|
225
|
-
this._kmtParser.tearDown();
|
|
226
|
-
parser.setUp();
|
|
227
|
-
this._kmtParser = parser;
|
|
228
|
-
}
|
|
229
|
-
get kmtParser() {
|
|
230
|
-
return this._kmtParser;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* @description The parser used to handle touch events. The default parser is the DefaultTouchParser.
|
|
234
|
-
* You can have your own parser by implementing the BoardTouchParser interface.
|
|
235
|
-
*/
|
|
236
|
-
set touchParser(parser) {
|
|
237
|
-
this._touchParser.tearDown();
|
|
238
|
-
parser.setUp();
|
|
239
|
-
this._touchParser = parser;
|
|
240
|
-
}
|
|
241
|
-
get touchParser() {
|
|
242
|
-
return this._touchParser;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* @description The underlying camera of the board. The camera of the board can be switched.
|
|
246
|
-
* The boundaries are based on camera meaning you can have cameras with different boundaries, and you can switch between them during runtime.
|
|
247
|
-
*/
|
|
248
|
-
get camera() {
|
|
249
|
-
return this.cameraRig.camera;
|
|
250
|
-
}
|
|
251
|
-
set camera(camera) {
|
|
252
|
-
camera.viewPortHeight = this._canvas.height / window.devicePixelRatio;
|
|
253
|
-
camera.viewPortWidth = this._canvas.width / window.devicePixelRatio;
|
|
254
|
-
this.camera = camera;
|
|
255
|
-
}
|
|
256
|
-
get cameraMux() {
|
|
257
|
-
return this.boardInputPublisher.cameraMux;
|
|
258
|
-
}
|
|
259
|
-
set cameraMux(cameraMux) {
|
|
260
|
-
this.boardInputPublisher.cameraMux = cameraMux;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* @description This is the step function that is called in the animation frame. This function is responsible for updating the canvas context and the camera state.
|
|
264
|
-
* @param timestamp
|
|
265
|
-
*/
|
|
266
|
-
step(timestamp) {
|
|
267
|
-
if (this._fullScreen && (this.width != window.innerWidth || this.height != window.innerHeight)) {
|
|
268
|
-
this.width = window.innerWidth;
|
|
269
|
-
this.height = window.innerHeight;
|
|
270
|
-
}
|
|
271
|
-
this.cameraRig.update();
|
|
272
|
-
let deltaTime = timestamp - this.lastUpdateTime;
|
|
273
|
-
this.lastUpdateTime = timestamp;
|
|
274
|
-
deltaTime = deltaTime / 1000;
|
|
275
|
-
this._context.reset();
|
|
276
|
-
this._context.clearRect(0, 0, this._canvas.width, this._canvas.height);
|
|
277
|
-
const transfromMatrix = this.camera.getTransform(window.devicePixelRatio, this._alignCoordinateSystem);
|
|
278
|
-
this._context.setTransform(transfromMatrix.a, transfromMatrix.b, transfromMatrix.c, transfromMatrix.d, transfromMatrix.e, transfromMatrix.f);
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* @description Converts a point from window coordinates to world coordinates.
|
|
282
|
-
* @param clickPointInWindow The point in window coordinates to convert.
|
|
283
|
-
* @returns The converted point in world coordinates.
|
|
284
|
-
*/
|
|
285
|
-
convertWindowPoint2WorldCoord(clickPointInWindow) {
|
|
286
|
-
const boundingRect = this._canvas.getBoundingClientRect();
|
|
287
|
-
const cameraCenterInWindow = { x: boundingRect.left + (boundingRect.right - boundingRect.left) / 2, y: boundingRect.top + (boundingRect.bottom - boundingRect.top) / 2 };
|
|
288
|
-
const pointInViewPort = PointCal.subVector(clickPointInWindow, cameraCenterInWindow);
|
|
289
|
-
if (!this._alignCoordinateSystem) {
|
|
290
|
-
pointInViewPort.y = -pointInViewPort.y;
|
|
291
|
-
}
|
|
292
|
-
return this.camera.convertFromViewPort2WorldSpace(pointInViewPort);
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* @description Add an camera movement event listener. The events are "pan", "zoom", and "rotate".
|
|
296
|
-
* There's also an "all" event that will be triggered when any of the above events are triggered.
|
|
297
|
-
* @param eventName The event name to listen for. The events are "pan", "zoom", and "rotate".
|
|
298
|
-
* @param callback The callback function to call when the event is triggered. The event provided to the callback is different for the different events.
|
|
299
|
-
* @returns The converted point in world coordinates.
|
|
300
|
-
*/
|
|
301
|
-
on(eventName, callback) {
|
|
302
|
-
return this.camera.on(eventName, callback);
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* @description Add an input event listener. The events are "pan", "zoom", and "rotate". This is different from the camera event listener as this is for input events.
|
|
306
|
-
* There's also an "all" event that will be triggered when any of the above events are triggered.
|
|
307
|
-
* Input event does not necesarily mean that the camera will move. The input events are the events triggered when the user interacts with the board.
|
|
308
|
-
* @param eventName
|
|
309
|
-
* @param callback
|
|
310
|
-
* @returns
|
|
311
|
-
*/
|
|
312
|
-
onInput(eventName, callback) {
|
|
313
|
-
return this.boardInputPublisher.on(eventName, callback);
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* @description The max translation height of the camera. This is the maximum distance the camera can move in the vertical direction.
|
|
317
|
-
*/
|
|
318
|
-
get maxHalfTransHeight() {
|
|
319
|
-
return halfTranslationHeightOf(this.camera.boundaries);
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* @description The max translation width of the camera. This is the maximum distance the camera can move in the horizontal direction.
|
|
323
|
-
*/
|
|
324
|
-
get maxHalfTransWidth() {
|
|
325
|
-
return halfTranslationWidthOf(this.camera.boundaries);
|
|
326
|
-
}
|
|
327
|
-
attributeCallBack(mutationsList, observer) {
|
|
328
|
-
for (let mutation of mutationsList) {
|
|
329
|
-
if (mutation.type === "attributes") {
|
|
330
|
-
if (mutation.attributeName === "width") {
|
|
331
|
-
// NOTE canvas width change (not the style width)
|
|
332
|
-
this._canvas.style.width = this._canvas.width / window.devicePixelRatio + "px";
|
|
333
|
-
this.camera.viewPortWidth = this._canvas.width / window.devicePixelRatio;
|
|
334
|
-
if (this.limitEntireViewPort) {
|
|
335
|
-
const targetMinZoomLevel = minZoomLevelBaseOnWidth(this.camera.boundaries, this.camera.viewPortWidth, this.camera.viewPortHeight, this.camera.rotation);
|
|
336
|
-
if (zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
337
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
else if (mutation.attributeName === "height") {
|
|
342
|
-
// NOTE canvas height change (not the style height)
|
|
343
|
-
this._canvas.style.height = this._canvas.height / window.devicePixelRatio + "px";
|
|
344
|
-
this.camera.viewPortHeight = this._canvas.height / window.devicePixelRatio;
|
|
345
|
-
if (this.limitEntireViewPort) {
|
|
346
|
-
const targetMinZoomLevel = minZoomLevelBaseOnHeight(this.camera.boundaries, this.camera.viewPortWidth, this.camera.viewPortHeight, this.camera.rotation);
|
|
347
|
-
if (zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
348
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
else if (mutation.attributeName === "style") {
|
|
353
|
-
const styleWidth = parseFloat(this._canvas.style.width);
|
|
354
|
-
const styleHeight = parseFloat(this._canvas.style.height);
|
|
355
|
-
const newWidth = styleWidth * window.devicePixelRatio;
|
|
356
|
-
if (newWidth != this._canvas.width) {
|
|
357
|
-
this._canvas.width = newWidth;
|
|
358
|
-
this.camera.viewPortWidth = styleWidth;
|
|
359
|
-
}
|
|
360
|
-
const newHeight = styleHeight * window.devicePixelRatio;
|
|
361
|
-
if (newHeight != this._canvas.height) {
|
|
362
|
-
this._canvas.height = newHeight;
|
|
363
|
-
this.camera.viewPortHeight = styleHeight;
|
|
364
|
-
}
|
|
365
|
-
if (this.limitEntireViewPort) {
|
|
366
|
-
const targetMinZoomLevel = minZoomLevelBaseOnDimensions(this.camera.boundaries, this.camera.viewPortWidth, this.camera.viewPortHeight, this.camera.rotation);
|
|
367
|
-
if (zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
368
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* @group Helper Methods
|
|
377
|
-
* @description This function sets the max translation width of the camera while fixing the minimum x boundary.
|
|
378
|
-
*/
|
|
379
|
-
setMaxTransWidthWithFixedMinBoundary(value) {
|
|
380
|
-
const curBoundaries = this.camera.boundaries;
|
|
381
|
-
const curMin = curBoundaries == undefined ? undefined : curBoundaries.min;
|
|
382
|
-
const curHorizontalMin = curMin == undefined ? undefined : curMin.x;
|
|
383
|
-
if (curHorizontalMin == undefined) {
|
|
384
|
-
this.camera.setHorizontalBoundaries(-value, value);
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
this.camera.setHorizontalBoundaries(curHorizontalMin, curHorizontalMin + value * 2);
|
|
388
|
-
}
|
|
389
|
-
if (this.limitEntireViewPort) {
|
|
390
|
-
const targetMinZoomLevel = minZoomLevelBaseOnWidth(this.camera.boundaries, this.camera.viewPortWidth, this.camera.viewPortHeight, this.camera.rotation);
|
|
391
|
-
if (zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
392
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* @group Helper Methods
|
|
398
|
-
* @description This function sets the max translation width of the camera while fixing the minimum x boundary.
|
|
399
|
-
*/
|
|
400
|
-
setMaxTransWidthWithFixedMaxBoundary(value) {
|
|
401
|
-
const curBoundaries = this.camera.boundaries;
|
|
402
|
-
const curMax = curBoundaries == undefined ? undefined : curBoundaries.max;
|
|
403
|
-
const curHorizontalMax = curMax == undefined ? undefined : curMax.x;
|
|
404
|
-
if (curHorizontalMax == undefined) {
|
|
405
|
-
this.camera.setHorizontalBoundaries(-value, value);
|
|
406
|
-
}
|
|
407
|
-
else {
|
|
408
|
-
this.camera.setHorizontalBoundaries(curHorizontalMax - value * 2, curHorizontalMax);
|
|
409
|
-
}
|
|
410
|
-
if (this.limitEntireViewPort) {
|
|
411
|
-
const targetMinZoomLevel = minZoomLevelBaseOnWidth(this.camera.boundaries, this.camera.viewPortWidth, this.camera.viewPortHeight, this.camera.rotation);
|
|
412
|
-
if (zoomLevelBoundariesShouldUpdate(this.camera.zoomBoundaries, targetMinZoomLevel)) {
|
|
413
|
-
this.camera.setMinZoomLevel(targetMinZoomLevel);
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
get restrictRelativeXTranslation() {
|
|
418
|
-
return this.cameraRig.config.restrictRelativeXTranslation;
|
|
419
|
-
}
|
|
420
|
-
get restrictRelativeYTranslation() {
|
|
421
|
-
return this.cameraRig.config.restrictRelativeYTranslation;
|
|
422
|
-
}
|
|
423
|
-
get restrictXTranslation() {
|
|
424
|
-
return this.cameraRig.config.restrictXTranslation;
|
|
425
|
-
}
|
|
426
|
-
get restrictYTranslation() {
|
|
427
|
-
return this.cameraRig.config.restrictYTranslation;
|
|
428
|
-
}
|
|
429
|
-
set restrictRelativeXTranslation(value) {
|
|
430
|
-
this.cameraRig.config.restrictRelativeXTranslation = value;
|
|
431
|
-
}
|
|
432
|
-
set restrictRelativeYTranslation(value) {
|
|
433
|
-
this.cameraRig.configure({ restrictRelativeYTranslation: value });
|
|
434
|
-
}
|
|
435
|
-
set restrictXTranslation(value) {
|
|
436
|
-
this.cameraRig.configure({ restrictXTranslation: value });
|
|
437
|
-
}
|
|
438
|
-
set restrictYTranslation(value) {
|
|
439
|
-
this.cameraRig.configure({ restrictYTranslation: value });
|
|
440
|
-
}
|
|
441
|
-
get restrictZoom() {
|
|
442
|
-
return this.cameraRig.config.restrictZoom;
|
|
443
|
-
}
|
|
444
|
-
set restrictZoom(value) {
|
|
445
|
-
this.cameraRig.configure({ restrictZoom: value });
|
|
446
|
-
}
|
|
447
|
-
get restrictRotation() {
|
|
448
|
-
return this.cameraRig.config.restrictRotation;
|
|
449
|
-
}
|
|
450
|
-
set restrictRotation(value) {
|
|
451
|
-
this.cameraRig.configure({ restrictRotation: value });
|
|
452
|
-
}
|
|
453
|
-
get clampTranslation() {
|
|
454
|
-
return this.cameraRig.config.clampTranslation;
|
|
455
|
-
}
|
|
456
|
-
set clampTranslation(value) {
|
|
457
|
-
this.cameraRig.configure({ clampTranslation: value });
|
|
458
|
-
}
|
|
459
|
-
get clampZoom() {
|
|
460
|
-
return this.cameraRig.config.clampZoom;
|
|
461
|
-
}
|
|
462
|
-
set clampZoom(value) {
|
|
463
|
-
this.cameraRig.configure({ clampZoom: value });
|
|
464
|
-
}
|
|
465
|
-
get clampRotation() {
|
|
466
|
-
return this.cameraRig.config.clampRotation;
|
|
467
|
-
}
|
|
468
|
-
set clampRotation(value) {
|
|
469
|
-
this.cameraRig.configure({ clampRotation: value });
|
|
470
|
-
}
|
|
471
|
-
getCameraRig() {
|
|
472
|
-
return this.cameraRig;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
//# sourceMappingURL=index.js.map
|
package/.rollup.cache/home/runner/work/ue-too/ue-too/packages/board/dist/boardify/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/boardify/index.ts"],"names":[],"mappings":"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"}
|