@reffy/infinite-canvas 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +21 -0
- package/README.md +94 -0
- package/esm/API.d.ts +21 -0
- package/esm/API.d.ts.map +1 -0
- package/esm/API.js +74 -0
- package/esm/API.js.map +1 -0
- package/esm/Canvas.d.ts +69 -0
- package/esm/Canvas.d.ts.map +1 -0
- package/esm/Canvas.js +383 -0
- package/esm/Canvas.js.map +1 -0
- package/esm/Component.d.ts +126 -0
- package/esm/Component.d.ts.map +1 -0
- package/esm/Component.js +612 -0
- package/esm/Component.js.map +1 -0
- package/esm/bounding/AABB.d.ts +10 -0
- package/esm/bounding/AABB.d.ts.map +1 -0
- package/esm/bounding/AABB.js +19 -0
- package/esm/bounding/AABB.js.map +1 -0
- package/esm/bounding/BoundingBox.d.ts +53 -0
- package/esm/bounding/BoundingBox.d.ts.map +1 -0
- package/esm/bounding/BoundingBox.js +300 -0
- package/esm/bounding/BoundingBox.js.map +1 -0
- package/esm/bounding/Marquee.d.ts +28 -0
- package/esm/bounding/Marquee.d.ts.map +1 -0
- package/esm/bounding/Marquee.js +111 -0
- package/esm/bounding/Marquee.js.map +1 -0
- package/esm/bounding/MultiBoundingBox.d.ts +33 -0
- package/esm/bounding/MultiBoundingBox.d.ts.map +1 -0
- package/esm/bounding/MultiBoundingBox.js +373 -0
- package/esm/bounding/MultiBoundingBox.js.map +1 -0
- package/esm/bounding/index.d.ts +6 -0
- package/esm/bounding/index.d.ts.map +1 -0
- package/esm/bounding/index.js +6 -0
- package/esm/bounding/index.js.map +1 -0
- package/esm/bounding/type.d.ts +13 -0
- package/esm/bounding/type.d.ts.map +1 -0
- package/esm/bounding/type.js +6 -0
- package/esm/bounding/type.js.map +1 -0
- package/esm/camera/Camera.d.ts +27 -0
- package/esm/camera/Camera.d.ts.map +1 -0
- package/esm/camera/Camera.js +68 -0
- package/esm/camera/Camera.js.map +1 -0
- package/esm/camera/index.d.ts +2 -0
- package/esm/camera/index.d.ts.map +1 -0
- package/esm/camera/index.js +2 -0
- package/esm/camera/index.js.map +1 -0
- package/esm/contextMenu/ContextMenu.d.ts +57 -0
- package/esm/contextMenu/ContextMenu.d.ts.map +1 -0
- package/esm/contextMenu/ContextMenu.js +118 -0
- package/esm/contextMenu/ContextMenu.js.map +1 -0
- package/esm/contextMenu/Interaction.d.ts +22 -0
- package/esm/contextMenu/Interaction.d.ts.map +1 -0
- package/esm/contextMenu/Interaction.js +256 -0
- package/esm/contextMenu/Interaction.js.map +1 -0
- package/esm/contextMenu/index.d.ts +3 -0
- package/esm/contextMenu/index.d.ts.map +1 -0
- package/esm/contextMenu/index.js +3 -0
- package/esm/contextMenu/index.js.map +1 -0
- package/esm/history/history.d.ts +29 -0
- package/esm/history/history.d.ts.map +1 -0
- package/esm/history/history.js +120 -0
- package/esm/history/history.js.map +1 -0
- package/esm/history/index.d.ts +2 -0
- package/esm/history/index.d.ts.map +1 -0
- package/esm/history/index.js +2 -0
- package/esm/history/index.js.map +1 -0
- package/esm/index.d.ts +5 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +5 -0
- package/esm/index.js.map +1 -0
- package/esm/loader/Interaction.d.ts +4 -0
- package/esm/loader/Interaction.d.ts.map +1 -0
- package/esm/loader/Interaction.js +17 -0
- package/esm/loader/Interaction.js.map +1 -0
- package/esm/loader/Loader.d.ts +19 -0
- package/esm/loader/Loader.d.ts.map +1 -0
- package/esm/loader/Loader.js +49 -0
- package/esm/loader/Loader.js.map +1 -0
- package/esm/loader/index.d.ts +3 -0
- package/esm/loader/index.d.ts.map +1 -0
- package/esm/loader/index.js +3 -0
- package/esm/loader/index.js.map +1 -0
- package/esm/manager/ContextMenu.d.ts +11 -0
- package/esm/manager/ContextMenu.d.ts.map +1 -0
- package/esm/manager/ContextMenu.js +46 -0
- package/esm/manager/ContextMenu.js.map +1 -0
- package/esm/manager/FlipCommand.d.ts +18 -0
- package/esm/manager/FlipCommand.d.ts.map +1 -0
- package/esm/manager/FlipCommand.js +35 -0
- package/esm/manager/FlipCommand.js.map +1 -0
- package/esm/manager/KeyEvent.d.ts +16 -0
- package/esm/manager/KeyEvent.d.ts.map +1 -0
- package/esm/manager/KeyEvent.js +51 -0
- package/esm/manager/KeyEvent.js.map +1 -0
- package/esm/manager/OrderCommand.d.ts +17 -0
- package/esm/manager/OrderCommand.d.ts.map +1 -0
- package/esm/manager/OrderCommand.js +28 -0
- package/esm/manager/OrderCommand.js.map +1 -0
- package/esm/manager/PointerEvent.d.ts +70 -0
- package/esm/manager/PointerEvent.d.ts.map +1 -0
- package/esm/manager/PointerEvent.js +171 -0
- package/esm/manager/PointerEvent.js.map +1 -0
- package/esm/manager/SceneCommand.d.ts +18 -0
- package/esm/manager/SceneCommand.d.ts.map +1 -0
- package/esm/manager/SceneCommand.js +85 -0
- package/esm/manager/SceneCommand.js.map +1 -0
- package/esm/manager/Selection.d.ts +61 -0
- package/esm/manager/Selection.d.ts.map +1 -0
- package/esm/manager/Selection.js +305 -0
- package/esm/manager/Selection.js.map +1 -0
- package/esm/manager/TransformCommand.d.ts +20 -0
- package/esm/manager/TransformCommand.d.ts.map +1 -0
- package/esm/manager/TransformCommand.js +29 -0
- package/esm/manager/TransformCommand.js.map +1 -0
- package/esm/manager/index.d.ts +9 -0
- package/esm/manager/index.d.ts.map +1 -0
- package/esm/manager/index.js +9 -0
- package/esm/manager/index.js.map +1 -0
- package/esm/serializer/index.d.ts +2 -0
- package/esm/serializer/index.d.ts.map +1 -0
- package/esm/serializer/index.js +2 -0
- package/esm/serializer/index.js.map +1 -0
- package/esm/serializer/serializer.d.ts +54 -0
- package/esm/serializer/serializer.d.ts.map +1 -0
- package/esm/serializer/serializer.js +226 -0
- package/esm/serializer/serializer.js.map +1 -0
- package/esm/shaders/grid.d.ts +3 -0
- package/esm/shaders/grid.d.ts.map +1 -0
- package/esm/shaders/grid.js +89 -0
- package/esm/shaders/grid.js.map +1 -0
- package/esm/shaders/img.d.ts +4 -0
- package/esm/shaders/img.d.ts.map +1 -0
- package/esm/shaders/img.js +39 -0
- package/esm/shaders/img.js.map +1 -0
- package/esm/shaders/index.d.ts +4 -0
- package/esm/shaders/index.d.ts.map +1 -0
- package/esm/shaders/index.js +4 -0
- package/esm/shaders/index.js.map +1 -0
- package/esm/shaders/shape.d.ts +4 -0
- package/esm/shaders/shape.d.ts.map +1 -0
- package/esm/shaders/shape.js +29 -0
- package/esm/shaders/shape.js.map +1 -0
- package/esm/shapes/Grid.d.ts +21 -0
- package/esm/shapes/Grid.d.ts.map +1 -0
- package/esm/shapes/Grid.js +86 -0
- package/esm/shapes/Grid.js.map +1 -0
- package/esm/shapes/Img.d.ts +47 -0
- package/esm/shapes/Img.d.ts.map +1 -0
- package/esm/shapes/Img.js +310 -0
- package/esm/shapes/Img.js.map +1 -0
- package/esm/shapes/Rect.d.ts +34 -0
- package/esm/shapes/Rect.d.ts.map +1 -0
- package/esm/shapes/Rect.js +92 -0
- package/esm/shapes/Rect.js.map +1 -0
- package/esm/shapes/Renderable.d.ts +54 -0
- package/esm/shapes/Renderable.d.ts.map +1 -0
- package/esm/shapes/Renderable.js +141 -0
- package/esm/shapes/Renderable.js.map +1 -0
- package/esm/shapes/Shape.d.ts +27 -0
- package/esm/shapes/Shape.d.ts.map +1 -0
- package/esm/shapes/Shape.js +69 -0
- package/esm/shapes/Shape.js.map +1 -0
- package/esm/shapes/Triangle.d.ts +20 -0
- package/esm/shapes/Triangle.d.ts.map +1 -0
- package/esm/shapes/Triangle.js +82 -0
- package/esm/shapes/Triangle.js.map +1 -0
- package/esm/shapes/index.d.ts +6 -0
- package/esm/shapes/index.d.ts.map +1 -0
- package/esm/shapes/index.js +7 -0
- package/esm/shapes/index.js.map +1 -0
- package/esm/state/camera.d.ts +36 -0
- package/esm/state/camera.d.ts.map +1 -0
- package/esm/state/camera.js +88 -0
- package/esm/state/camera.js.map +1 -0
- package/esm/state/index.d.ts +4 -0
- package/esm/state/index.d.ts.map +1 -0
- package/esm/state/index.js +4 -0
- package/esm/state/index.js.map +1 -0
- package/esm/state/pointerEvent.d.ts +23 -0
- package/esm/state/pointerEvent.d.ts.map +1 -0
- package/esm/state/pointerEvent.js +49 -0
- package/esm/state/pointerEvent.js.map +1 -0
- package/esm/state/renderable.d.ts +36 -0
- package/esm/state/renderable.d.ts.map +1 -0
- package/esm/state/renderable.js +176 -0
- package/esm/state/renderable.js.map +1 -0
- package/esm/storage/defaultStorage.d.ts +34 -0
- package/esm/storage/defaultStorage.d.ts.map +1 -0
- package/esm/storage/defaultStorage.js +237 -0
- package/esm/storage/defaultStorage.js.map +1 -0
- package/esm/storage/index.d.ts +3 -0
- package/esm/storage/index.d.ts.map +1 -0
- package/esm/storage/index.js +3 -0
- package/esm/storage/index.js.map +1 -0
- package/esm/storage/storage.d.ts +36 -0
- package/esm/storage/storage.d.ts.map +1 -0
- package/esm/storage/storage.js +44 -0
- package/esm/storage/storage.js.map +1 -0
- package/esm/util/camera/camera.d.ts +19 -0
- package/esm/util/camera/camera.d.ts.map +1 -0
- package/esm/util/camera/camera.js +75 -0
- package/esm/util/camera/camera.js.map +1 -0
- package/esm/util/camera/index.d.ts +2 -0
- package/esm/util/camera/index.d.ts.map +1 -0
- package/esm/util/camera/index.js +2 -0
- package/esm/util/camera/index.js.map +1 -0
- package/esm/util/checks.d.ts +11 -0
- package/esm/util/checks.d.ts.map +1 -0
- package/esm/util/checks.js +36 -0
- package/esm/util/checks.js.map +1 -0
- package/esm/util/clipboard.d.ts +7 -0
- package/esm/util/clipboard.d.ts.map +1 -0
- package/esm/util/clipboard.js +146 -0
- package/esm/util/clipboard.js.map +1 -0
- package/esm/util/color.d.ts +4 -0
- package/esm/util/color.d.ts.map +1 -0
- package/esm/util/color.js +8 -0
- package/esm/util/color.js.map +1 -0
- package/esm/util/customEventType.d.ts +35 -0
- package/esm/util/customEventType.d.ts.map +1 -0
- package/esm/util/customEventType.js +35 -0
- package/esm/util/customEventType.js.map +1 -0
- package/esm/util/files.d.ts +19 -0
- package/esm/util/files.d.ts.map +1 -0
- package/esm/util/files.js +182 -0
- package/esm/util/files.js.map +1 -0
- package/esm/util/handles.d.ts +10 -0
- package/esm/util/handles.d.ts.map +1 -0
- package/esm/util/handles.js +16 -0
- package/esm/util/handles.js.map +1 -0
- package/esm/util/index.d.ts +11 -0
- package/esm/util/index.d.ts.map +1 -0
- package/esm/util/index.js +11 -0
- package/esm/util/index.js.map +1 -0
- package/esm/util/performance.d.ts +2 -0
- package/esm/util/performance.d.ts.map +1 -0
- package/esm/util/performance.js +7 -0
- package/esm/util/performance.js.map +1 -0
- package/esm/util/shaders.d.ts +2 -0
- package/esm/util/shaders.d.ts.map +1 -0
- package/esm/util/shaders.js +30 -0
- package/esm/util/shaders.js.map +1 -0
- package/esm/util/webgl/index.d.ts +3 -0
- package/esm/util/webgl/index.d.ts.map +1 -0
- package/esm/util/webgl/index.js +3 -0
- package/esm/util/webgl/index.js.map +1 -0
- package/esm/util/webgl/m3.d.ts +11 -0
- package/esm/util/webgl/m3.d.ts.map +1 -0
- package/esm/util/webgl/m3.js +98 -0
- package/esm/util/webgl/m3.js.map +1 -0
- package/esm/util/webgl/uniform.d.ts +5 -0
- package/esm/util/webgl/uniform.d.ts.map +1 -0
- package/esm/util/webgl/uniform.js +18 -0
- package/esm/util/webgl/uniform.js.map +1 -0
- package/lib/API.d.ts +21 -0
- package/lib/API.d.ts.map +1 -0
- package/lib/API.js +78 -0
- package/lib/API.js.map +1 -0
- package/lib/Canvas.d.ts +69 -0
- package/lib/Canvas.d.ts.map +1 -0
- package/lib/Canvas.js +387 -0
- package/lib/Canvas.js.map +1 -0
- package/lib/Component.d.ts +126 -0
- package/lib/Component.d.ts.map +1 -0
- package/lib/Component.js +618 -0
- package/lib/Component.js.map +1 -0
- package/lib/bounding/AABB.d.ts +10 -0
- package/lib/bounding/AABB.d.ts.map +1 -0
- package/lib/bounding/AABB.js +23 -0
- package/lib/bounding/AABB.js.map +1 -0
- package/lib/bounding/BoundingBox.d.ts +53 -0
- package/lib/bounding/BoundingBox.d.ts.map +1 -0
- package/lib/bounding/BoundingBox.js +304 -0
- package/lib/bounding/BoundingBox.js.map +1 -0
- package/lib/bounding/Marquee.d.ts +28 -0
- package/lib/bounding/Marquee.d.ts.map +1 -0
- package/lib/bounding/Marquee.js +115 -0
- package/lib/bounding/Marquee.js.map +1 -0
- package/lib/bounding/MultiBoundingBox.d.ts +33 -0
- package/lib/bounding/MultiBoundingBox.d.ts.map +1 -0
- package/lib/bounding/MultiBoundingBox.js +377 -0
- package/lib/bounding/MultiBoundingBox.js.map +1 -0
- package/lib/bounding/index.d.ts +6 -0
- package/lib/bounding/index.d.ts.map +1 -0
- package/lib/bounding/index.js +22 -0
- package/lib/bounding/index.js.map +1 -0
- package/lib/bounding/type.d.ts +13 -0
- package/lib/bounding/type.d.ts.map +1 -0
- package/lib/bounding/type.js +9 -0
- package/lib/bounding/type.js.map +1 -0
- package/lib/camera/Camera.d.ts +27 -0
- package/lib/camera/Camera.d.ts.map +1 -0
- package/lib/camera/Camera.js +72 -0
- package/lib/camera/Camera.js.map +1 -0
- package/lib/camera/index.d.ts +2 -0
- package/lib/camera/index.d.ts.map +1 -0
- package/lib/camera/index.js +18 -0
- package/lib/camera/index.js.map +1 -0
- package/lib/contextMenu/ContextMenu.d.ts +57 -0
- package/lib/contextMenu/ContextMenu.d.ts.map +1 -0
- package/lib/contextMenu/ContextMenu.js +124 -0
- package/lib/contextMenu/ContextMenu.js.map +1 -0
- package/lib/contextMenu/Interaction.d.ts +22 -0
- package/lib/contextMenu/Interaction.d.ts.map +1 -0
- package/lib/contextMenu/Interaction.js +265 -0
- package/lib/contextMenu/Interaction.js.map +1 -0
- package/lib/contextMenu/index.d.ts +3 -0
- package/lib/contextMenu/index.d.ts.map +1 -0
- package/lib/contextMenu/index.js +19 -0
- package/lib/contextMenu/index.js.map +1 -0
- package/lib/history/history.d.ts +29 -0
- package/lib/history/history.d.ts.map +1 -0
- package/lib/history/history.js +127 -0
- package/lib/history/history.js.map +1 -0
- package/lib/history/index.d.ts +2 -0
- package/lib/history/index.d.ts.map +1 -0
- package/lib/history/index.js +18 -0
- package/lib/history/index.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +21 -0
- package/lib/index.js.map +1 -0
- package/lib/loader/Interaction.d.ts +4 -0
- package/lib/loader/Interaction.d.ts.map +1 -0
- package/lib/loader/Interaction.js +21 -0
- package/lib/loader/Interaction.js.map +1 -0
- package/lib/loader/Loader.d.ts +19 -0
- package/lib/loader/Loader.d.ts.map +1 -0
- package/lib/loader/Loader.js +53 -0
- package/lib/loader/Loader.js.map +1 -0
- package/lib/loader/index.d.ts +3 -0
- package/lib/loader/index.d.ts.map +1 -0
- package/lib/loader/index.js +19 -0
- package/lib/loader/index.js.map +1 -0
- package/lib/manager/ContextMenu.d.ts +11 -0
- package/lib/manager/ContextMenu.d.ts.map +1 -0
- package/lib/manager/ContextMenu.js +50 -0
- package/lib/manager/ContextMenu.js.map +1 -0
- package/lib/manager/FlipCommand.d.ts +18 -0
- package/lib/manager/FlipCommand.d.ts.map +1 -0
- package/lib/manager/FlipCommand.js +39 -0
- package/lib/manager/FlipCommand.js.map +1 -0
- package/lib/manager/KeyEvent.d.ts +16 -0
- package/lib/manager/KeyEvent.d.ts.map +1 -0
- package/lib/manager/KeyEvent.js +55 -0
- package/lib/manager/KeyEvent.js.map +1 -0
- package/lib/manager/OrderCommand.d.ts +17 -0
- package/lib/manager/OrderCommand.d.ts.map +1 -0
- package/lib/manager/OrderCommand.js +32 -0
- package/lib/manager/OrderCommand.js.map +1 -0
- package/lib/manager/PointerEvent.d.ts +70 -0
- package/lib/manager/PointerEvent.d.ts.map +1 -0
- package/lib/manager/PointerEvent.js +175 -0
- package/lib/manager/PointerEvent.js.map +1 -0
- package/lib/manager/SceneCommand.d.ts +18 -0
- package/lib/manager/SceneCommand.d.ts.map +1 -0
- package/lib/manager/SceneCommand.js +91 -0
- package/lib/manager/SceneCommand.js.map +1 -0
- package/lib/manager/Selection.d.ts +61 -0
- package/lib/manager/Selection.d.ts.map +1 -0
- package/lib/manager/Selection.js +309 -0
- package/lib/manager/Selection.js.map +1 -0
- package/lib/manager/TransformCommand.d.ts +20 -0
- package/lib/manager/TransformCommand.d.ts.map +1 -0
- package/lib/manager/TransformCommand.js +33 -0
- package/lib/manager/TransformCommand.js.map +1 -0
- package/lib/manager/index.d.ts +9 -0
- package/lib/manager/index.d.ts.map +1 -0
- package/lib/manager/index.js +25 -0
- package/lib/manager/index.js.map +1 -0
- package/lib/serializer/index.d.ts +2 -0
- package/lib/serializer/index.d.ts.map +1 -0
- package/lib/serializer/index.js +18 -0
- package/lib/serializer/index.js.map +1 -0
- package/lib/serializer/serializer.d.ts +54 -0
- package/lib/serializer/serializer.d.ts.map +1 -0
- package/lib/serializer/serializer.js +231 -0
- package/lib/serializer/serializer.js.map +1 -0
- package/lib/shaders/grid.d.ts +3 -0
- package/lib/shaders/grid.d.ts.map +1 -0
- package/lib/shaders/grid.js +92 -0
- package/lib/shaders/grid.js.map +1 -0
- package/lib/shaders/img.d.ts +4 -0
- package/lib/shaders/img.d.ts.map +1 -0
- package/lib/shaders/img.js +43 -0
- package/lib/shaders/img.js.map +1 -0
- package/lib/shaders/index.d.ts +4 -0
- package/lib/shaders/index.d.ts.map +1 -0
- package/lib/shaders/index.js +20 -0
- package/lib/shaders/index.js.map +1 -0
- package/lib/shaders/shape.d.ts +4 -0
- package/lib/shaders/shape.d.ts.map +1 -0
- package/lib/shaders/shape.js +33 -0
- package/lib/shaders/shape.js.map +1 -0
- package/lib/shapes/Grid.d.ts +21 -0
- package/lib/shapes/Grid.d.ts.map +1 -0
- package/lib/shapes/Grid.js +90 -0
- package/lib/shapes/Grid.js.map +1 -0
- package/lib/shapes/Img.d.ts +47 -0
- package/lib/shapes/Img.d.ts.map +1 -0
- package/lib/shapes/Img.js +314 -0
- package/lib/shapes/Img.js.map +1 -0
- package/lib/shapes/Rect.d.ts +34 -0
- package/lib/shapes/Rect.d.ts.map +1 -0
- package/lib/shapes/Rect.js +96 -0
- package/lib/shapes/Rect.js.map +1 -0
- package/lib/shapes/Renderable.d.ts +54 -0
- package/lib/shapes/Renderable.d.ts.map +1 -0
- package/lib/shapes/Renderable.js +146 -0
- package/lib/shapes/Renderable.js.map +1 -0
- package/lib/shapes/Shape.d.ts +27 -0
- package/lib/shapes/Shape.d.ts.map +1 -0
- package/lib/shapes/Shape.js +73 -0
- package/lib/shapes/Shape.js.map +1 -0
- package/lib/shapes/Triangle.d.ts +20 -0
- package/lib/shapes/Triangle.d.ts.map +1 -0
- package/lib/shapes/Triangle.js +86 -0
- package/lib/shapes/Triangle.js.map +1 -0
- package/lib/shapes/index.d.ts +6 -0
- package/lib/shapes/index.d.ts.map +1 -0
- package/lib/shapes/index.js +23 -0
- package/lib/shapes/index.js.map +1 -0
- package/lib/state/camera.d.ts +36 -0
- package/lib/state/camera.d.ts.map +1 -0
- package/lib/state/camera.js +92 -0
- package/lib/state/camera.js.map +1 -0
- package/lib/state/index.d.ts +4 -0
- package/lib/state/index.d.ts.map +1 -0
- package/lib/state/index.js +20 -0
- package/lib/state/index.js.map +1 -0
- package/lib/state/pointerEvent.d.ts +23 -0
- package/lib/state/pointerEvent.d.ts.map +1 -0
- package/lib/state/pointerEvent.js +53 -0
- package/lib/state/pointerEvent.js.map +1 -0
- package/lib/state/renderable.d.ts +36 -0
- package/lib/state/renderable.d.ts.map +1 -0
- package/lib/state/renderable.js +180 -0
- package/lib/state/renderable.js.map +1 -0
- package/lib/storage/defaultStorage.d.ts +34 -0
- package/lib/storage/defaultStorage.d.ts.map +1 -0
- package/lib/storage/defaultStorage.js +246 -0
- package/lib/storage/defaultStorage.js.map +1 -0
- package/lib/storage/index.d.ts +3 -0
- package/lib/storage/index.d.ts.map +1 -0
- package/lib/storage/index.js +19 -0
- package/lib/storage/index.js.map +1 -0
- package/lib/storage/storage.d.ts +36 -0
- package/lib/storage/storage.d.ts.map +1 -0
- package/lib/storage/storage.js +50 -0
- package/lib/storage/storage.js.map +1 -0
- package/lib/util/camera/camera.d.ts +19 -0
- package/lib/util/camera/camera.d.ts.map +1 -0
- package/lib/util/camera/camera.js +87 -0
- package/lib/util/camera/camera.js.map +1 -0
- package/lib/util/camera/index.d.ts +2 -0
- package/lib/util/camera/index.d.ts.map +1 -0
- package/lib/util/camera/index.js +18 -0
- package/lib/util/camera/index.js.map +1 -0
- package/lib/util/checks.d.ts +11 -0
- package/lib/util/checks.d.ts.map +1 -0
- package/lib/util/checks.js +49 -0
- package/lib/util/checks.js.map +1 -0
- package/lib/util/clipboard.d.ts +7 -0
- package/lib/util/clipboard.d.ts.map +1 -0
- package/lib/util/clipboard.js +152 -0
- package/lib/util/clipboard.js.map +1 -0
- package/lib/util/color.d.ts +4 -0
- package/lib/util/color.d.ts.map +1 -0
- package/lib/util/color.js +11 -0
- package/lib/util/color.js.map +1 -0
- package/lib/util/customEventType.d.ts +35 -0
- package/lib/util/customEventType.d.ts.map +1 -0
- package/lib/util/customEventType.js +38 -0
- package/lib/util/customEventType.js.map +1 -0
- package/lib/util/files.d.ts +19 -0
- package/lib/util/files.d.ts.map +1 -0
- package/lib/util/files.js +193 -0
- package/lib/util/files.js.map +1 -0
- package/lib/util/handles.d.ts +10 -0
- package/lib/util/handles.d.ts.map +1 -0
- package/lib/util/handles.js +20 -0
- package/lib/util/handles.js.map +1 -0
- package/lib/util/index.d.ts +11 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/index.js +27 -0
- package/lib/util/index.js.map +1 -0
- package/lib/util/performance.d.ts +2 -0
- package/lib/util/performance.d.ts.map +1 -0
- package/lib/util/performance.js +10 -0
- package/lib/util/performance.js.map +1 -0
- package/lib/util/shaders.d.ts +2 -0
- package/lib/util/shaders.d.ts.map +1 -0
- package/lib/util/shaders.js +33 -0
- package/lib/util/shaders.js.map +1 -0
- package/lib/util/webgl/index.d.ts +3 -0
- package/lib/util/webgl/index.d.ts.map +1 -0
- package/lib/util/webgl/index.js +19 -0
- package/lib/util/webgl/index.js.map +1 -0
- package/lib/util/webgl/m3.d.ts +11 -0
- package/lib/util/webgl/m3.d.ts.map +1 -0
- package/lib/util/webgl/m3.js +101 -0
- package/lib/util/webgl/m3.js.map +1 -0
- package/lib/util/webgl/uniform.d.ts +5 -0
- package/lib/util/webgl/uniform.d.ts.map +1 -0
- package/lib/util/webgl/uniform.js +21 -0
- package/lib/util/webgl/uniform.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeNode = serializeNode;
|
|
4
|
+
exports.serializeCanvas = serializeCanvas;
|
|
5
|
+
exports.deserializeCanvas = deserializeCanvas;
|
|
6
|
+
const Canvas_1 = require("../Canvas");
|
|
7
|
+
const shapes_1 = require("../shapes");
|
|
8
|
+
const util_1 = require("../util");
|
|
9
|
+
/**
|
|
10
|
+
* What should be exposed?
|
|
11
|
+
* the images created - their position, scale and src - maintain the order they have been saved
|
|
12
|
+
*
|
|
13
|
+
* grid state should be tracked to decide if grid lines are there or not - TO BE IMPLEMENTED
|
|
14
|
+
*
|
|
15
|
+
* Should camera position be tracked
|
|
16
|
+
*
|
|
17
|
+
* How often should we write to the chosen method fo storage? When initialising the exporter, we can decide between indexdb and an actual db
|
|
18
|
+
* is there anyway to force a save when the app closes? In what circumstances will that not work? An ungraceful shutdown?
|
|
19
|
+
*/
|
|
20
|
+
const PLACEHOLDER_IMAGE_SRC = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSIjYjNiM2IzIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgNmEyLjI1IDIuMjUgMCAwIDEgMi4yNS0yLjI1aDE2LjVBMi4yNSAyLjI1IDAgMCAxIDIyLjUgNnYxMmEyLjI1IDIuMjUgMCAwIDEtMi4yNSAyLjI1SDMuNzVBMi4yNSAyLjI1IDAgMCAxIDEuNSAxOHpNMyAxNi4wNlYxOGMwIC40MTQuMzM2Ljc1Ljc1Ljc1aDE2LjVBLjc1Ljc1IDAgMCAwIDIxIDE4di0xLjk0bC0yLjY5LTIuNjg5YTEuNSAxLjUgMCAwIDAtMi4xMiAwbC0uODguODc5bC45Ny45N2EuNzUuNzUgMCAxIDEtMS4wNiAxLjA2bC01LjE2LTUuMTU5YTEuNSAxLjUgMCAwIDAtMi4xMiAwem0xMC4xMjUtNy44MWExLjEyNSAxLjEyNSAwIDEgMSAyLjI1IDBhMS4xMjUgMS4xMjUgMCAwIDEtMi4yNSAwIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4=";
|
|
21
|
+
const PLACEHOLDER_IMAGE_SIZE = 240;
|
|
22
|
+
function transformOf(node) {
|
|
23
|
+
return {
|
|
24
|
+
x: node.x ?? 0,
|
|
25
|
+
y: node.y ?? 0,
|
|
26
|
+
sx: node.sx ?? 1,
|
|
27
|
+
sy: node.sy ?? 1,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function serializeChildren(node) {
|
|
31
|
+
return node.children.map(serializeNode);
|
|
32
|
+
}
|
|
33
|
+
function serializeNode(node) {
|
|
34
|
+
if (node instanceof shapes_1.Img) {
|
|
35
|
+
const base = {
|
|
36
|
+
type: "Img",
|
|
37
|
+
id: node.seq,
|
|
38
|
+
renderOrder: node.renderOrder,
|
|
39
|
+
transform: transformOf(node),
|
|
40
|
+
width: node.width,
|
|
41
|
+
height: node.height,
|
|
42
|
+
fileId: node.fileId,
|
|
43
|
+
children: node.children?.length ? serializeChildren(node) : undefined,
|
|
44
|
+
};
|
|
45
|
+
return base;
|
|
46
|
+
}
|
|
47
|
+
if (node instanceof shapes_1.Rect) {
|
|
48
|
+
const base = {
|
|
49
|
+
type: "Rect",
|
|
50
|
+
id: node.seq,
|
|
51
|
+
renderOrder: node.renderOrder,
|
|
52
|
+
transform: transformOf(node),
|
|
53
|
+
width: node.width,
|
|
54
|
+
height: node.height,
|
|
55
|
+
color: node.color,
|
|
56
|
+
children: node.children?.length ? serializeChildren(node) : undefined,
|
|
57
|
+
};
|
|
58
|
+
return base;
|
|
59
|
+
}
|
|
60
|
+
if (node instanceof shapes_1.Grid) {
|
|
61
|
+
const base = {
|
|
62
|
+
type: "Grid",
|
|
63
|
+
style: node.gridType,
|
|
64
|
+
};
|
|
65
|
+
return base;
|
|
66
|
+
}
|
|
67
|
+
const generic = {
|
|
68
|
+
type: "Renderable",
|
|
69
|
+
children: node.children?.length ? serializeChildren(node) : undefined,
|
|
70
|
+
};
|
|
71
|
+
return generic;
|
|
72
|
+
}
|
|
73
|
+
function serializeCanvas(canvas, files) {
|
|
74
|
+
const { gl } = canvas;
|
|
75
|
+
return {
|
|
76
|
+
version: 1,
|
|
77
|
+
canvas: {
|
|
78
|
+
width: gl.canvas.width,
|
|
79
|
+
height: gl.canvas.height,
|
|
80
|
+
dpr: window.devicePixelRatio || 1,
|
|
81
|
+
},
|
|
82
|
+
camera: {
|
|
83
|
+
x: canvas.camera.state.x,
|
|
84
|
+
y: canvas.camera.state.y,
|
|
85
|
+
zoom: canvas.camera.state.zoom,
|
|
86
|
+
},
|
|
87
|
+
root: serializeNode(canvas),
|
|
88
|
+
files,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
async function deserializeCanvas(data, canvas, getFile, writeFileToDatabase) {
|
|
92
|
+
canvas.children.length = 0;
|
|
93
|
+
if (data.camera) {
|
|
94
|
+
canvas.camera.state.setZoom(data.camera.zoom);
|
|
95
|
+
canvas.camera.state.setX(data.camera.x);
|
|
96
|
+
canvas.camera.state.setY(data.camera.y);
|
|
97
|
+
}
|
|
98
|
+
async function build(node, parent) {
|
|
99
|
+
let instance;
|
|
100
|
+
switch (node.type) {
|
|
101
|
+
case "Rect":
|
|
102
|
+
instance = new shapes_1.Rect({
|
|
103
|
+
x: node.transform.x,
|
|
104
|
+
y: node.transform.y,
|
|
105
|
+
width: node.width,
|
|
106
|
+
height: node.height,
|
|
107
|
+
});
|
|
108
|
+
instance.setScale(node.transform.sx, node.transform.sy);
|
|
109
|
+
canvas.appendChild(instance);
|
|
110
|
+
break;
|
|
111
|
+
case "Img":
|
|
112
|
+
let src;
|
|
113
|
+
try {
|
|
114
|
+
src = (() => {
|
|
115
|
+
if (data.files && Array.isArray(data.files)) {
|
|
116
|
+
const fileMeta = data.files.find((e) => e.id === node.fileId);
|
|
117
|
+
return fileMeta?.dataURL ?? PLACEHOLDER_IMAGE_SRC;
|
|
118
|
+
}
|
|
119
|
+
return PLACEHOLDER_IMAGE_SRC;
|
|
120
|
+
})();
|
|
121
|
+
if (writeFileToDatabase) {
|
|
122
|
+
writeFileToDatabase(src);
|
|
123
|
+
}
|
|
124
|
+
const width = node.width;
|
|
125
|
+
const height = node.height;
|
|
126
|
+
const framedPlaceholder = await framePlaceholder(src, width * node.transform.sx, height * node.transform.sy);
|
|
127
|
+
instance = new shapes_1.Img({
|
|
128
|
+
x: node.transform.x,
|
|
129
|
+
y: node.transform.y,
|
|
130
|
+
src: framedPlaceholder,
|
|
131
|
+
width,
|
|
132
|
+
height,
|
|
133
|
+
});
|
|
134
|
+
getFile(node.fileId)
|
|
135
|
+
.then((file) => {
|
|
136
|
+
console.log("image loaded!");
|
|
137
|
+
instance.src = file.dataURL;
|
|
138
|
+
})
|
|
139
|
+
.catch((err) => console.error("Image not loaded", err));
|
|
140
|
+
// skip hashing if it already has a file ID
|
|
141
|
+
instance.fileId =
|
|
142
|
+
node.fileId ?? (await (0, util_1.hashStringToId)(src));
|
|
143
|
+
instance.setScale(node.transform.sx, node.transform.sy);
|
|
144
|
+
canvas.appendChild(instance);
|
|
145
|
+
if (typeof node.renderOrder === "number") {
|
|
146
|
+
instance.renderOrder = node.renderOrder;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
// delete node from storage? It won't be saved in the next instance, so perhaps it's fine?
|
|
151
|
+
console.error(`Failed to match image to restore with source: ${src}`);
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case "Grid":
|
|
157
|
+
if (parent instanceof Canvas_1.Canvas) {
|
|
158
|
+
parent.grid.gridType = node.style;
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
default:
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
if (node.children) {
|
|
165
|
+
for (const child of node.children)
|
|
166
|
+
await build(child, instance);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
await build(data.root, canvas);
|
|
170
|
+
return canvas;
|
|
171
|
+
}
|
|
172
|
+
async function loadImageElement(src) {
|
|
173
|
+
const img = new Image();
|
|
174
|
+
img.crossOrigin = "anonymous";
|
|
175
|
+
return new Promise((resolve, reject) => {
|
|
176
|
+
img.onload = () => resolve(img);
|
|
177
|
+
img.onerror = (err) => reject(err);
|
|
178
|
+
img.src = src;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
async function framePlaceholder(srcOrBlob, tw, th, bg = "#d6d6d6ff") {
|
|
182
|
+
let objectUrl = null;
|
|
183
|
+
let src;
|
|
184
|
+
if (srcOrBlob instanceof Blob) {
|
|
185
|
+
objectUrl = URL.createObjectURL(srcOrBlob);
|
|
186
|
+
src = objectUrl;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
src = srcOrBlob;
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
let img = null;
|
|
193
|
+
try {
|
|
194
|
+
img = await loadImageElement(src);
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
// Swallow in order to proceed with a background-only placeholder
|
|
198
|
+
}
|
|
199
|
+
const targetW = tw && tw > 0 ? tw : (img?.naturalWidth ?? PLACEHOLDER_IMAGE_SIZE);
|
|
200
|
+
const targetH = th && th > 0 ? th : (img?.naturalHeight ?? PLACEHOLDER_IMAGE_SIZE);
|
|
201
|
+
const canvas = document.createElement("canvas");
|
|
202
|
+
canvas.width = targetW;
|
|
203
|
+
canvas.height = targetH;
|
|
204
|
+
const ctx = canvas.getContext("2d");
|
|
205
|
+
ctx.fillStyle = bg;
|
|
206
|
+
ctx.fillRect(0, 0, targetW, targetH);
|
|
207
|
+
if (img) {
|
|
208
|
+
// if any of the sides is less than the placeholder image size, then use the natural ratio
|
|
209
|
+
const ratio = Math.min(targetW / img.naturalWidth, targetH / img.naturalHeight);
|
|
210
|
+
const ratioedHeight = img.naturalHeight * ratio;
|
|
211
|
+
const ratioedWidth = img.naturalWidth * ratio;
|
|
212
|
+
let dw = PLACEHOLDER_IMAGE_SIZE;
|
|
213
|
+
let dh = PLACEHOLDER_IMAGE_SIZE;
|
|
214
|
+
if (PLACEHOLDER_IMAGE_SIZE > ratioedHeight ||
|
|
215
|
+
PLACEHOLDER_IMAGE_SIZE > ratioedWidth) {
|
|
216
|
+
dw = ratioedWidth;
|
|
217
|
+
dh = ratioedHeight;
|
|
218
|
+
}
|
|
219
|
+
const dx = Math.round((targetW - dw) / 2);
|
|
220
|
+
const dy = Math.round((targetH - dh) / 2);
|
|
221
|
+
ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, dx, dy, dw, dh);
|
|
222
|
+
}
|
|
223
|
+
return canvas.toDataURL("image/png");
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
if (objectUrl) {
|
|
227
|
+
URL.revokeObjectURL(objectUrl);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"src/","sources":["serializer/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const gridVert = "\n#extension GL_OES_standard_derivatives : enable\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nprecision highp int;\n#else\nprecision mediump float;\nprecision mediump int;\n#endif\n\nuniform mat3 u_ViewProjectionInvMatrix;\nuniform float u_ZoomScale;\nuniform float u_CheckboardStyle;\nuniform float u_z;\n\nattribute vec2 a_Position;\n\nvarying vec2 v_Position;\n\nvec2 project_clipspace_to_world(vec2 p) {\n return (u_ViewProjectionInvMatrix * vec3(p, 1.0)).xy;\n}\n\nvoid main() {\n v_Position = project_clipspace_to_world(a_Position);\n float z = mix(1.0, -1.0, u_z);\n gl_Position = vec4(a_Position, z, 1.0);\n}\n";
|
|
2
|
+
export declare const gridFrag = "\n#extension GL_OES_standard_derivatives : enable\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\nprecision highp int;\n#else\nprecision mediump float;\nprecision mediump int;\n#endif\n\nuniform mat3 u_ViewProjectionInvMatrix;\nuniform float u_ZoomScale;\nuniform float u_CheckboardStyle;\n\nvarying vec2 v_Position;\n\nconst vec4 GRID_COLOR = vec4(0.87, 0.87, 0.87, 1.0);\nconst vec4 PAGE_COLOR = vec4(0.986, 0.986, 0.986, 1.0);\nconst int CHECKERBOARD_STYLE_NONE = 0;\nconst int CHECKERBOARD_STYLE_GRID = 1;\nconst int CHECKERBOARD_STYLE_DOTS = 2;\nconst float BASE_GRID_PIXEL_SIZE = 100.0;\n\nvec2 scale_grid_size(float zoom) {\n if (zoom < 0.125) return vec2(BASE_GRID_PIXEL_SIZE * 125.0, 0.125);\n else if (zoom < 0.25) return vec2(BASE_GRID_PIXEL_SIZE * 25.0, 0.25);\n else if (zoom < 0.5) return vec2(BASE_GRID_PIXEL_SIZE * 5.0, 0.5);\n return vec2(BASE_GRID_PIXEL_SIZE, 4.0);\n}\n\nvec4 render_grid_checkerboard(vec2 coord) {\n float alpha = 0.0;\n\n vec2 size = scale_grid_size(u_ZoomScale);\n float gridSize1 = size.x;\n float gridSize2 = gridSize1 / 10.0;\n float zoomStep = size.y;\n int checkboardStyle = int(floor(u_CheckboardStyle + 0.5));\n\n if (checkboardStyle == CHECKERBOARD_STYLE_GRID) {\n vec2 grid1 = abs(fract(coord / gridSize1 - 0.5) - 0.5) / fwidth(coord) * gridSize1 / 2.0;\n vec2 grid2 = abs(fract(coord / gridSize2 - 0.5) - 0.5) / fwidth(coord) * gridSize2;\n float v1 = 1.0 - min(min(grid1.x, grid1.y), 1.0);\n float v2 = 1.0 - min(min(grid2.x, grid2.y), 1.0);\n\n if (v1 > 0.0) {\n alpha = v1;\n } else {\n alpha = v2 * clamp(u_ZoomScale / zoomStep, 0.0, 1.0);\n }\n }\n \n return mix(PAGE_COLOR, GRID_COLOR, alpha);\n}\n\nvoid main() {\n gl_FragColor = render_grid_checkerboard(v_Position);\n}\n";
|
|
3
|
+
//# sourceMappingURL=grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"src/","sources":["shaders/grid.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,moBA4BpB,CAAC;AAEF,eAAO,MAAM,QAAQ,gwDA0DpB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gridFrag = exports.gridVert = void 0;
|
|
4
|
+
exports.gridVert = `
|
|
5
|
+
#extension GL_OES_standard_derivatives : enable
|
|
6
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
7
|
+
precision highp float;
|
|
8
|
+
precision highp int;
|
|
9
|
+
#else
|
|
10
|
+
precision mediump float;
|
|
11
|
+
precision mediump int;
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
uniform mat3 u_ViewProjectionInvMatrix;
|
|
15
|
+
uniform float u_ZoomScale;
|
|
16
|
+
uniform float u_CheckboardStyle;
|
|
17
|
+
uniform float u_z;
|
|
18
|
+
|
|
19
|
+
attribute vec2 a_Position;
|
|
20
|
+
|
|
21
|
+
varying vec2 v_Position;
|
|
22
|
+
|
|
23
|
+
vec2 project_clipspace_to_world(vec2 p) {
|
|
24
|
+
return (u_ViewProjectionInvMatrix * vec3(p, 1.0)).xy;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void main() {
|
|
28
|
+
v_Position = project_clipspace_to_world(a_Position);
|
|
29
|
+
float z = mix(1.0, -1.0, u_z);
|
|
30
|
+
gl_Position = vec4(a_Position, z, 1.0);
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
exports.gridFrag = `
|
|
34
|
+
#extension GL_OES_standard_derivatives : enable
|
|
35
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
36
|
+
precision highp float;
|
|
37
|
+
precision highp int;
|
|
38
|
+
#else
|
|
39
|
+
precision mediump float;
|
|
40
|
+
precision mediump int;
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
uniform mat3 u_ViewProjectionInvMatrix;
|
|
44
|
+
uniform float u_ZoomScale;
|
|
45
|
+
uniform float u_CheckboardStyle;
|
|
46
|
+
|
|
47
|
+
varying vec2 v_Position;
|
|
48
|
+
|
|
49
|
+
const vec4 GRID_COLOR = vec4(0.87, 0.87, 0.87, 1.0);
|
|
50
|
+
const vec4 PAGE_COLOR = vec4(0.986, 0.986, 0.986, 1.0);
|
|
51
|
+
const int CHECKERBOARD_STYLE_NONE = 0;
|
|
52
|
+
const int CHECKERBOARD_STYLE_GRID = 1;
|
|
53
|
+
const int CHECKERBOARD_STYLE_DOTS = 2;
|
|
54
|
+
const float BASE_GRID_PIXEL_SIZE = 100.0;
|
|
55
|
+
|
|
56
|
+
vec2 scale_grid_size(float zoom) {
|
|
57
|
+
if (zoom < 0.125) return vec2(BASE_GRID_PIXEL_SIZE * 125.0, 0.125);
|
|
58
|
+
else if (zoom < 0.25) return vec2(BASE_GRID_PIXEL_SIZE * 25.0, 0.25);
|
|
59
|
+
else if (zoom < 0.5) return vec2(BASE_GRID_PIXEL_SIZE * 5.0, 0.5);
|
|
60
|
+
return vec2(BASE_GRID_PIXEL_SIZE, 4.0);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
vec4 render_grid_checkerboard(vec2 coord) {
|
|
64
|
+
float alpha = 0.0;
|
|
65
|
+
|
|
66
|
+
vec2 size = scale_grid_size(u_ZoomScale);
|
|
67
|
+
float gridSize1 = size.x;
|
|
68
|
+
float gridSize2 = gridSize1 / 10.0;
|
|
69
|
+
float zoomStep = size.y;
|
|
70
|
+
int checkboardStyle = int(floor(u_CheckboardStyle + 0.5));
|
|
71
|
+
|
|
72
|
+
if (checkboardStyle == CHECKERBOARD_STYLE_GRID) {
|
|
73
|
+
vec2 grid1 = abs(fract(coord / gridSize1 - 0.5) - 0.5) / fwidth(coord) * gridSize1 / 2.0;
|
|
74
|
+
vec2 grid2 = abs(fract(coord / gridSize2 - 0.5) - 0.5) / fwidth(coord) * gridSize2;
|
|
75
|
+
float v1 = 1.0 - min(min(grid1.x, grid1.y), 1.0);
|
|
76
|
+
float v2 = 1.0 - min(min(grid2.x, grid2.y), 1.0);
|
|
77
|
+
|
|
78
|
+
if (v1 > 0.0) {
|
|
79
|
+
alpha = v1;
|
|
80
|
+
} else {
|
|
81
|
+
alpha = v2 * clamp(u_ZoomScale / zoomStep, 0.0, 1.0);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return mix(PAGE_COLOR, GRID_COLOR, alpha);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
void main() {
|
|
89
|
+
gl_FragColor = render_grid_checkerboard(v_Position);
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
//# sourceMappingURL=grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grid.js","sourceRoot":"src/","sources":["shaders/grid.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BlC,CAAC;AAEW,QAAA,QAAQ,GAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DlC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
declare const vert = "\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform vec2 u_resolution;\nuniform mat3 u_matrix;\nuniform float u_z;\n\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec2 position = (u_matrix * vec3(a_position, 1)).xy;\n vec2 zeroToOne = position / u_resolution;\n vec2 zeroToTwo = zeroToOne * 2.0;\n vec2 clipSpace = zeroToTwo - 1.0;\n float z = mix(1.0, -1.0, u_z);\n\n gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);\n\n v_texCoord = a_texCoord;\n}\n";
|
|
2
|
+
declare const frag = "\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n \nuniform sampler2D u_image;\n \nvarying vec2 v_texCoord;\n \nvoid main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n}\n";
|
|
3
|
+
export { vert as imageVert, frag as imageFrag };
|
|
4
|
+
//# sourceMappingURL=img.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"img.d.ts","sourceRoot":"src/","sources":["shaders/img.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,geAqBT,CAAC;AAEF,QAAA,MAAM,IAAI,8OAcT,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.imageFrag = exports.imageVert = void 0;
|
|
4
|
+
const vert = `
|
|
5
|
+
attribute vec2 a_position;
|
|
6
|
+
attribute vec2 a_texCoord;
|
|
7
|
+
|
|
8
|
+
uniform vec2 u_resolution;
|
|
9
|
+
uniform mat3 u_matrix;
|
|
10
|
+
uniform float u_z;
|
|
11
|
+
|
|
12
|
+
varying vec2 v_texCoord;
|
|
13
|
+
|
|
14
|
+
void main() {
|
|
15
|
+
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
|
|
16
|
+
vec2 zeroToOne = position / u_resolution;
|
|
17
|
+
vec2 zeroToTwo = zeroToOne * 2.0;
|
|
18
|
+
vec2 clipSpace = zeroToTwo - 1.0;
|
|
19
|
+
float z = mix(1.0, -1.0, u_z);
|
|
20
|
+
|
|
21
|
+
gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);
|
|
22
|
+
|
|
23
|
+
v_texCoord = a_texCoord;
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
exports.imageVert = vert;
|
|
27
|
+
const frag = `
|
|
28
|
+
#ifdef GL_FRAGMENT_PRECISION_HIGH
|
|
29
|
+
precision highp float;
|
|
30
|
+
#else
|
|
31
|
+
precision mediump float;
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
uniform sampler2D u_image;
|
|
35
|
+
|
|
36
|
+
varying vec2 v_texCoord;
|
|
37
|
+
|
|
38
|
+
void main() {
|
|
39
|
+
gl_FragColor = texture2D(u_image, v_texCoord);
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
exports.imageFrag = frag;
|
|
43
|
+
//# sourceMappingURL=img.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"img.js","sourceRoot":"src/","sources":["shaders/img.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBZ,CAAC;AAkBe,yBAAS;AAhB1B,MAAM,IAAI,GAAG;;;;;;;;;;;;;;CAcZ,CAAC;AAEkC,yBAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"src/","sources":["shaders/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./shape"), exports);
|
|
18
|
+
__exportStar(require("./grid"), exports);
|
|
19
|
+
__exportStar(require("./img"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["shaders/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yCAAuB;AACvB,wCAAsB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
declare const vert = "\nattribute vec2 a_position;\n\nuniform vec2 u_resolution;\nuniform mat3 u_matrix;\nuniform float u_z;\n\n// all shaders have a main function\nvoid main() {\n vec2 position = (u_matrix * vec3(a_position, 1)).xy;\n\n vec2 zeroToOne = position / u_resolution;\n vec2 zeroToTwo = zeroToOne * 2.0;\n vec2 clipSpace = zeroToTwo - 1.0;\n float z = mix(1.0, -1.0, u_z);\n\n gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);\n}\n";
|
|
2
|
+
declare const frag = "\nprecision mediump float;\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n";
|
|
3
|
+
export { vert as shapeVert, frag as shapeFrag };
|
|
4
|
+
//# sourceMappingURL=shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"src/","sources":["shaders/shape.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,IAAI,ibAkBT,CAAC;AAEF,QAAA,MAAM,IAAI,uGAOT,CAAC;AAEF,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shapeFrag = exports.shapeVert = void 0;
|
|
4
|
+
const vert = `
|
|
5
|
+
attribute vec2 a_position;
|
|
6
|
+
|
|
7
|
+
uniform vec2 u_resolution;
|
|
8
|
+
uniform mat3 u_matrix;
|
|
9
|
+
uniform float u_z;
|
|
10
|
+
|
|
11
|
+
// all shaders have a main function
|
|
12
|
+
void main() {
|
|
13
|
+
vec2 position = (u_matrix * vec3(a_position, 1)).xy;
|
|
14
|
+
|
|
15
|
+
vec2 zeroToOne = position / u_resolution;
|
|
16
|
+
vec2 zeroToTwo = zeroToOne * 2.0;
|
|
17
|
+
vec2 clipSpace = zeroToTwo - 1.0;
|
|
18
|
+
float z = mix(1.0, -1.0, u_z);
|
|
19
|
+
|
|
20
|
+
gl_Position = vec4(clipSpace * vec2(1, -1), z, 1);
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
exports.shapeVert = vert;
|
|
24
|
+
const frag = `
|
|
25
|
+
precision mediump float;
|
|
26
|
+
uniform vec4 u_color;
|
|
27
|
+
|
|
28
|
+
void main() {
|
|
29
|
+
gl_FragColor = u_color;
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
exports.shapeFrag = frag;
|
|
33
|
+
//# sourceMappingURL=shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"src/","sources":["shaders/shape.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAWe,yBAAS;AAT1B,MAAM,IAAI,GAAG;;;;;;;CAOZ,CAAC;AAEkC,yBAAS"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { WebGLRenderable } from "./Renderable";
|
|
2
|
+
export declare enum GRID_TYPE {
|
|
3
|
+
NONE = 0,
|
|
4
|
+
GRID = 1
|
|
5
|
+
}
|
|
6
|
+
export declare class Grid extends WebGLRenderable {
|
|
7
|
+
private buffer;
|
|
8
|
+
private vertexCount;
|
|
9
|
+
viewProjectionInvLocation: WebGLUniformLocation;
|
|
10
|
+
zoomScaleLocation: WebGLUniformLocation;
|
|
11
|
+
checkboardStyleLocation: WebGLUniformLocation;
|
|
12
|
+
gridType: GRID_TYPE;
|
|
13
|
+
zoom: number;
|
|
14
|
+
getPositions(): Float32Array<ArrayBuffer>;
|
|
15
|
+
changeGridType(type: GRID_TYPE): void;
|
|
16
|
+
render(gl: WebGLRenderingContext, program: WebGLProgram): void;
|
|
17
|
+
destroy(): void;
|
|
18
|
+
hitTest(x: number, y: number): boolean;
|
|
19
|
+
protected setUpUniforms(gl: WebGLRenderingContext, program: WebGLProgram): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.d.ts","sourceRoot":"src/","sources":["shapes/Grid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,oBAAY,SAAS;IACnB,IAAI,IAAA;IACJ,IAAI,IAAA;CACL;AAED,qBAAa,IAAK,SAAQ,eAAe;IACvC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAK;IAExB,yBAAyB,EAAE,oBAAoB,CAAC;IAChD,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,uBAAuB,EAAE,oBAAoB,CAAC;IAE9C,QAAQ,EAAE,SAAS,CAAkB;IACrC,IAAI,EAAE,MAAM,CAAK;IAGjB,YAAY;IAKZ,cAAc,CAAC,IAAI,EAAE,SAAS;IAI9B,MAAM,CAAC,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAwD9D,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC,SAAS,CAAC,aAAa,CACrB,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,YAAY,GACpB,IAAI;CAgBR"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Grid = exports.GRID_TYPE = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const Renderable_1 = require("./Renderable");
|
|
6
|
+
var GRID_TYPE;
|
|
7
|
+
(function (GRID_TYPE) {
|
|
8
|
+
GRID_TYPE[GRID_TYPE["NONE"] = 0] = "NONE";
|
|
9
|
+
GRID_TYPE[GRID_TYPE["GRID"] = 1] = "GRID";
|
|
10
|
+
})(GRID_TYPE || (exports.GRID_TYPE = GRID_TYPE = {}));
|
|
11
|
+
class Grid extends Renderable_1.WebGLRenderable {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.buffer = null;
|
|
15
|
+
this.vertexCount = 0;
|
|
16
|
+
this.gridType = GRID_TYPE.GRID;
|
|
17
|
+
this.zoom = 1;
|
|
18
|
+
}
|
|
19
|
+
// Fullscreen big-triangle in clip space: covers [-1,1] without seams
|
|
20
|
+
getPositions() {
|
|
21
|
+
// x,y pairs in clip space
|
|
22
|
+
return new Float32Array([-1.0, -1.0, 3.0, -1.0, -1.0, 3.0]);
|
|
23
|
+
}
|
|
24
|
+
changeGridType(type) {
|
|
25
|
+
this.gridType = type;
|
|
26
|
+
}
|
|
27
|
+
render(gl, program) {
|
|
28
|
+
if (!this.buffer) {
|
|
29
|
+
this.buffer = gl.createBuffer();
|
|
30
|
+
if (!this.buffer)
|
|
31
|
+
throw new Error("Failed to create grid buffer");
|
|
32
|
+
const data = this.getPositions();
|
|
33
|
+
this.vertexCount = data.length / 2;
|
|
34
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
|
|
35
|
+
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer);
|
|
39
|
+
}
|
|
40
|
+
// Ensure program is current
|
|
41
|
+
gl.useProgram(program);
|
|
42
|
+
if (!this.initialized) {
|
|
43
|
+
this.setUpVertexData(gl, program);
|
|
44
|
+
this.setUpUniforms(gl, program);
|
|
45
|
+
this.initialized = true;
|
|
46
|
+
}
|
|
47
|
+
// Convert clip [-1,1] to pixel coords using the current drawing buffer size
|
|
48
|
+
const w = gl.drawingBufferWidth;
|
|
49
|
+
const h = gl.drawingBufferHeight;
|
|
50
|
+
const invP = util_1.m3.inverse(util_1.m3.projection(w, h)); // clip to pixel space
|
|
51
|
+
const invView = util_1.m3.inverse(this.worldMatrix); // camera/view -> world
|
|
52
|
+
const invVP = util_1.m3.multiply(invView, invP); // clip -> world
|
|
53
|
+
if (this.viewProjectionInvLocation)
|
|
54
|
+
gl.uniformMatrix3fv(this.viewProjectionInvLocation, false, new Float32Array(invVP));
|
|
55
|
+
if (this.zoomScaleLocation)
|
|
56
|
+
gl.uniform1f(this.zoomScaleLocation, this.zoom);
|
|
57
|
+
if (this.checkboardStyleLocation)
|
|
58
|
+
gl.uniform1f(this.checkboardStyleLocation, this.gridType);
|
|
59
|
+
// a_Position is clip-space position (vec2)
|
|
60
|
+
const loc = gl.getAttribLocation(program, "a_Position");
|
|
61
|
+
if (loc === -1) {
|
|
62
|
+
throw new Error("Attribute a_Position not found in grid program");
|
|
63
|
+
}
|
|
64
|
+
gl.vertexAttribPointer(loc, 2, gl.FLOAT, false, 0, 0);
|
|
65
|
+
gl.enableVertexAttribArray(loc);
|
|
66
|
+
// Draw the fullscreen triangle
|
|
67
|
+
gl.drawArrays(gl.TRIANGLES, 0, this.vertexCount);
|
|
68
|
+
gl.disableVertexAttribArray(loc);
|
|
69
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
70
|
+
}
|
|
71
|
+
destroy() {
|
|
72
|
+
if (this.buffer) {
|
|
73
|
+
this.buffer = null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
hitTest(x, y) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
setUpUniforms(gl, program) {
|
|
80
|
+
const I3 = new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);
|
|
81
|
+
this.viewProjectionInvLocation = gl.getUniformLocation(program, "u_ViewProjectionInvMatrix");
|
|
82
|
+
this.zoomScaleLocation = gl.getUniformLocation(program, "u_ZoomScale");
|
|
83
|
+
this.checkboardStyleLocation = gl.getUniformLocation(program, "u_CheckboardStyle");
|
|
84
|
+
gl.uniformMatrix3fv(this.viewProjectionInvLocation, false, I3);
|
|
85
|
+
gl.uniform1f(this.zoomScaleLocation, this.zoom);
|
|
86
|
+
gl.uniform1f(this.checkboardStyleLocation, 1.0);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.Grid = Grid;
|
|
90
|
+
//# sourceMappingURL=Grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"src/","sources":["shapes/Grid.ts"],"names":[],"mappings":"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"}
|