@ue-too/board
Main entry point for the @ue-too/board package.
Remarks
This package provides a high-performance infinite canvas with pan, zoom, and rotate capabilities. The Board class is the primary API that orchestrates camera management, input handling, and coordinate transformations for building interactive 2D canvas applications.
Key Exports
- Board: Main class for creating an infinite canvas with camera controls
- Camera System: Camera classes, rigs, and multiplexers for viewport management
- Input System: Input parsers, state machines, and orchestration for user interaction
- Utilities: Helper functions for coordinate conversion, math operations, and more
Example
Basic usage
typescript
import { Board } from '@ue-too/board';
const canvas = document.querySelector('canvas') as HTMLCanvasElement;
const board = new Board(canvas);
function draw(timestamp: number) {
board.step(timestamp);
if (board.context) {
board.context.fillRect(0, 0, 100, 100);
}
requestAnimationFrame(draw);
}
requestAnimationFrame(draw);Board
Camera
- CameraUpdatePublisher
- DefaultBoardCamera
- EdgeAutoCameraInput
- BoardCamera
- ObservableBoardCamera
- AllCameraEventPayload
- AllObserver
- Boundaries
- Callback
- CameraEventMap
- CameraPanEvent
- CameraPanEventPayload
- CameraRotateEvent
- CameraRotateEventPayload
- CameraState
- CameraZoomEvent
- CameraZoomEventPayload
- ConslidateCallback
- PanObserver
- RotateObserver
- RotationBoundary
- RotationLimits
- TransformationMatrix
- UnSubscribe
- ZoomLevelLimits
- ZoomObserver
- angleSpan
- boundariesFullyDefined
- cameraPositionToGet
- clampPoint
- clampPointEntireViewPort
- clampRotation
- clampZoomLevel
- convert2ViewPortSpaceAnchorAtCenter
- convert2WorldSpace
- convert2WorldSpaceAnchorAtCenter
- convert2WorldSpaceWithTransformationMatrix
- convert2WorldSpaceWRT
- convertDeltaInViewPortToWorldSpace
- convertDeltaInWorldToViewPortSpace
- createCameraMatrix
- decomposeCameraMatrix
- deg2rad
- halfTranslationHeightOf
- halfTranslationWidthOf
- invertFromWorldSpace
- isValidBoundaries
- isValidZoomLevelLimits
- minZoomLevelBaseOnDimensions
- minZoomLevelBaseOnHeight
- minZoomLevelBaseOnWidth
- normalizeAngleZero2TwoPI
- pointIsInViewPort
- rad2deg
- rotationWithinBoundary
- rotationWithinLimits
- transformationMatrixFromCamera
- translationHeightOf
- translationWidthOf
- withinBoundaries
- zoomLevelBoundariesShouldUpdate
- zoomLevelWithinLimits
Camera Rig
- DefaultCameraRig
- CameraRig
- CameraRigConfig
- PanByHandlerFunction
- PanHandlerClampConfig
- PanHandlerConfig
- PanHandlerRestrictionConfig
- PanToHandlerFunction
- RotateByHandlerFunction
- RotateToHandlerFunction
- RotationHandlerClampConfig
- RotationHandlerConfig
- RotationHandlerRestrictConfig
- ZoomByHandlerFunction
- ZoomHandlerClampConfig
- ZoomHandlerConfig
- ZoomHandlerRestrictConfig
- ZoomToHandlerFunction
- clampByHandler
- clampRotateByHandler
- clampRotateToHandler
- clampToHandler
- clampZoomByHandler
- clampZoomToHandler
- convertDeltaToComplyWithRestriction
- convertUserInputDeltaToCameraDelta
- createDefaultCameraRig
- createDefaultPanByHandler
- createDefaultPanToHandler
- createDefaultRotateByHandler
- createDefaultRotateToHandler
- createDefaultZoomByOnlyHandler
- createDefaultZoomToOnlyHandler
- restrictPanByHandler
- restrictPanToHandler
- restrictRotateByHandler
- restrictRotateToHandler
- restrictZoomByHandler
- restrictZoomToHandler
Canvas Position
- CanvasPositionDimensionPublisher
- SvgPositionDimensionPublisher
- getTrueRect
- invertYAxisForDrawImageWith9Args
- reverseYAxis
Coordinate Conversion
- convertFromCanvas2ViewPort
- convertFromCanvas2Window
- convertFromViewPort2Canvas
- convertFromViewport2World
- convertFromWindow2Canvas
- convertFromWindow2ViewPortWithCanvasOperator
- convertFromWorld2Viewport
- pointConversion
Drawing Utilities
- HALF_TICK_LENGTH
- MAJOR_TICK_LENGTH
- MINOR_TICK_LENGTH
- TEXT_HALF_TICK_FONT_SIZE
- TEXT_HALF_TICK_OFFSET
- TEXT_MAJOR_TICK_FONT_SIZE
- TEXT_MAJOR_TICK_OFFSET
- calculateOrderOfMagnitude
- calculateTickValues
- drawArrow
- drawRuler
Input Flow Control
- AcceptingUserInputState
- CameraMuxWithAnimationAndLock
- LockedOnObjectState
- PanControlStateMachine
- Relay
- RotateControlStateMachine
- RotationAcceptingUserInputState
- RotationLockedOnObjectState
- RotationTransitionState
- TransitionState
- ZoomAcceptingUserInputState
- ZoomControlStateMachine
- ZoomLockedOnObjectState
- ZoomTransitionState
- CameraMux
- CameraMuxPanOutput
- CameraMuxRotationOutput
- CameraMuxZoomOutput
- PanByInputEventPayload
- PanControlOutputEvent
- PanControlOutputMapping
- PanControlStates
- PanEventPayloadMapping
- PanToInputEventPayload
- RotateByInputEventPayload
- RotateControlOutputEvent
- RotateControlOutputMapping
- RotateControlStates
- RotateEventPayloadMapping
- RotateToInputEventPayload
- ZoomByAtInputPayload
- ZoomByPayload
- ZoomControlOutputEvent
- ZoomControlOutputMapping
- ZoomControlStates
- ZoomEventPayloadMapping
- ZoomToAtInputPayload
- ZoomToPayload
- createCameraMuxWithAnimationAndLock
- createDefaultCameraMux
- createDefaultPanControlStateMachine
- createDefaultPanControlStates
- createDefaultRotateControlStateMachine
- createDefaultRotateControlStates
- createDefaultZoomControlStateMachine
- createDefaultZoomControlStates
Input Interpretation
Input State Machine
- CursorStyle
- CanvasCacheInWebWorker
- CanvasProxy
- DummyCanvas
- DummyKmtInputContext
- InitialPanState
- InProgressState
- ObservableInputTracker
- PanState
- PanViaScrollWheelState
- PendingState
- ReadyToPanViaScrollWheelState
- ReadyToPanViaSpaceBarState
- SvgProxy
- Canvas
- KmtInputContext
- CanvasDimensions
Input State Machine - KMT
- KmtIdleState
- KmtInputEventMapping
- KmtInputEventOutputMapping
- KmtInputStateMachine
- KmtInputStates
- KmtOutputEvent
- PointerEventPayload
- ScrollEventPayload
- ScrollWithCtrlEventPayload
- createKmtInputStateMachine
Input State Machine - Touch
- IdleState
- TouchInputTracker
- TouchContext
- TouchEventMapping
- TouchEventPayload
- TouchInputEventOutputMapping
- TouchInputStateMachine
- TouchOutputEvent
- TouchPoints
- TouchStates
- createTouchInputStateMachine
Matrix
Observable Pattern
Other
- DisabledState
- KmtEmptyState
- KmtInputStateMachineWebWorkerProxy
- WorkerRelayCanvas
- CameraOptions
- KmtIdleStatePossibleTargetStates
- RotateToWithAnchorPointHandlerFunction
- DEFAULT_BOARD_CAMERA_BOUNDARIES
- DEFAULT_BOARD_CAMERA_OPTIONS
- DEFAULT_BOARD_CAMERA_ROTATION_BOUNDARIES
- DEFAULT_BOARD_CAMERA_VIEWPORT_HEIGHT
- DEFAULT_BOARD_CAMERA_VIEWPORT_WIDTH
- DEFAULT_BOARD_CAMERA_ZOOM_BOUNDARIES
- createKmtInputStateMachineWithCanvas
- getScrollBar
- getScrollBarDimension
- getScrollBarPosition
Raw Input Parser
- VanillaKMTEventParser
- VanillaTouchEventParser
- KMTEventParser
- StateMachine
- TouchEventParser
- EventTargetWithPointerEvents
- MinimumKeyboardEvent
- MinimumPointerEvent
- MinimumWheelEvent
Raw Input Publisher
- RawUserInputPublisher
- RawUserInputPublisherWithWebWorkerRelay
- UserInputPublisher
- RawUserInputCallback
- RawUserInputEvent
- RawUserInputEventMap
- RawUserPanInputEvent
- RawUserPanInputEventPayload
- RawUserRotateInputEvent
- RawUserRotateInputEventPayload
- RawUserZoomInputEvent
- RawUserZoomInputEventPayload
- UnsubscribeToUserRawInput
- createDefaultRawUserInputPublisher