@reekon-tools/boldr-cad 0.1.0 → 1.0.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/README.md +81 -9
- package/dist/app/edit.d.ts +12 -1
- package/dist/app/edit.js +96 -11
- package/dist/app/edit.js.map +1 -1
- package/dist/app/state.d.ts +31 -4
- package/dist/app/state.js +31 -2
- package/dist/app/state.js.map +1 -1
- package/dist/data/memory.d.ts +5 -0
- package/dist/data/memory.js +2 -2
- package/dist/data/memory.js.map +1 -1
- package/dist/data/provider.d.ts +19 -7
- package/dist/data/sync.d.ts +7 -2
- package/dist/data/sync.js +115 -64
- package/dist/data/sync.js.map +1 -1
- package/dist/editor/actions.d.ts +1 -2
- package/dist/editor/actions.js +391 -113
- package/dist/editor/actions.js.map +1 -1
- package/dist/editor/confirm.d.ts +23 -0
- package/dist/editor/confirm.js +35 -0
- package/dist/editor/confirm.js.map +1 -0
- package/dist/editor/elevation.d.ts +191 -90
- package/dist/editor/elevation.js +812 -616
- package/dist/editor/elevation.js.map +1 -1
- package/dist/editor/face.d.ts +73 -0
- package/dist/editor/face.js +269 -0
- package/dist/editor/face.js.map +1 -0
- package/dist/editor/files.d.ts +6 -0
- package/dist/editor/files.js +50 -4
- package/dist/editor/files.js.map +1 -1
- package/dist/editor/gestures.d.ts +18 -3
- package/dist/editor/gestures.js +145 -30
- package/dist/editor/gestures.js.map +1 -1
- package/dist/editor/keypad.d.ts +19 -4
- package/dist/editor/keypad.js +39 -9
- package/dist/editor/keypad.js.map +1 -1
- package/dist/editor/keys.js +36 -4
- package/dist/editor/keys.js.map +1 -1
- package/dist/editor/laser.d.ts +20 -4
- package/dist/editor/laser.js +104 -21
- package/dist/editor/laser.js.map +1 -1
- package/dist/editor/linkActions.d.ts +49 -0
- package/dist/editor/linkActions.js +210 -0
- package/dist/editor/linkActions.js.map +1 -0
- package/dist/editor/linkFollow.d.ts +2 -0
- package/dist/editor/linkFollow.js +53 -0
- package/dist/editor/linkFollow.js.map +1 -0
- package/dist/editor/linkWrite.d.ts +13 -0
- package/dist/editor/linkWrite.js +84 -0
- package/dist/editor/linkWrite.js.map +1 -0
- package/dist/editor/links.d.ts +84 -0
- package/dist/editor/links.js +130 -0
- package/dist/editor/links.js.map +1 -0
- package/dist/editor/markup.d.ts +29 -3
- package/dist/editor/markup.js +95 -10
- package/dist/editor/markup.js.map +1 -1
- package/dist/editor/mode.d.ts +40 -2
- package/dist/editor/mode.js +71 -4
- package/dist/editor/mode.js.map +1 -1
- package/dist/editor/ports.d.ts +36 -6
- package/dist/editor/ports.js +10 -1
- package/dist/editor/ports.js.map +1 -1
- package/dist/editor/project.d.ts +38 -6
- package/dist/editor/project.js +167 -27
- package/dist/editor/project.js.map +1 -1
- package/dist/editor/selection.d.ts +10 -0
- package/dist/editor/selection.js +62 -8
- package/dist/editor/selection.js.map +1 -1
- package/dist/editor/status.js +3 -0
- package/dist/editor/status.js.map +1 -1
- package/dist/editor/tooltips.d.ts +5 -0
- package/dist/editor/tooltips.js +48 -0
- package/dist/editor/tooltips.js.map +1 -0
- package/dist/editor/view3d.d.ts +17 -0
- package/dist/editor/view3d.js +135 -0
- package/dist/editor/view3d.js.map +1 -0
- package/dist/editor/view3dState.d.ts +39 -0
- package/dist/editor/view3dState.js +44 -0
- package/dist/editor/view3dState.js.map +1 -0
- package/dist/export/dxf.js +1 -1
- package/dist/export/dxf.js.map +1 -1
- package/dist/export/pdf.js +17 -12
- package/dist/export/pdf.js.map +1 -1
- package/dist/export/plan.d.ts +23 -6
- package/dist/export/plan.js +127 -44
- package/dist/export/plan.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model/constraints.js +15 -4
- package/dist/model/constraints.js.map +1 -1
- package/dist/model/demo.js +3 -3
- package/dist/model/demo.js.map +1 -1
- package/dist/model/elevation.d.ts +6 -9
- package/dist/model/elevation.js +5 -13
- package/dist/model/elevation.js.map +1 -1
- package/dist/model/faces.d.ts +58 -0
- package/dist/model/faces.js +197 -0
- package/dist/model/faces.js.map +1 -0
- package/dist/model/facesolve.d.ts +72 -0
- package/dist/model/facesolve.js +369 -0
- package/dist/model/facesolve.js.map +1 -0
- package/dist/model/history.d.ts +3 -2
- package/dist/model/history.js +17 -11
- package/dist/model/history.js.map +1 -1
- package/dist/model/images.d.ts +18 -0
- package/dist/model/images.js +26 -0
- package/dist/model/images.js.map +1 -0
- package/dist/model/links.d.ts +46 -0
- package/dist/model/links.js +73 -0
- package/dist/model/links.js.map +1 -0
- package/dist/model/markup.d.ts +46 -0
- package/dist/model/markup.js +71 -0
- package/dist/model/markup.js.map +1 -0
- package/dist/model/measurement.d.ts +11 -0
- package/dist/model/measurement.js +24 -0
- package/dist/model/measurement.js.map +1 -0
- package/dist/model/openings.d.ts +4 -0
- package/dist/model/openings.js +4 -0
- package/dist/model/openings.js.map +1 -1
- package/dist/model/planGeom.d.ts +72 -2
- package/dist/model/planGeom.js +184 -10
- package/dist/model/planGeom.js.map +1 -1
- package/dist/model/project.js +3 -2
- package/dist/model/project.js.map +1 -1
- package/dist/model/projectfile.js +2 -1
- package/dist/model/projectfile.js.map +1 -1
- package/dist/model/rooms.js +2 -2
- package/dist/model/rooms.js.map +1 -1
- package/dist/model/settings.d.ts +6 -0
- package/dist/model/settings.js +2 -2
- package/dist/model/settings.js.map +1 -1
- package/dist/model/sketch.d.ts +14 -0
- package/dist/model/sketch.js +143 -24
- package/dist/model/sketch.js.map +1 -1
- package/dist/model/smooth.d.ts +6 -0
- package/dist/model/smooth.js +52 -0
- package/dist/model/smooth.js.map +1 -0
- package/dist/model/store.d.ts +12 -0
- package/dist/model/store.js +35 -3
- package/dist/model/store.js.map +1 -1
- package/dist/model/types.d.ts +173 -8
- package/dist/model/wallfaces.d.ts +32 -0
- package/dist/model/wallfaces.js +133 -20
- package/dist/model/wallfaces.js.map +1 -1
- package/dist/model/wallshape.d.ts +15 -0
- package/dist/model/wallshape.js +89 -0
- package/dist/model/wallshape.js.map +1 -0
- package/dist/react/BottomBar.d.ts +9 -5
- package/dist/react/BottomBar.js +213 -24
- package/dist/react/BottomBar.js.map +1 -1
- package/dist/react/Buttons.d.ts +13 -2
- package/dist/react/Buttons.js +37 -5
- package/dist/react/Buttons.js.map +1 -1
- package/dist/react/CadEditor.d.ts +46 -3
- package/dist/react/CadEditor.js +77 -20
- package/dist/react/CadEditor.js.map +1 -1
- package/dist/react/ConfirmSheet.d.ts +4 -0
- package/dist/react/ConfirmSheet.js +31 -0
- package/dist/react/ConfirmSheet.js.map +1 -0
- package/dist/react/ConflictSheet.d.ts +2 -1
- package/dist/react/ConflictSheet.js +16 -8
- package/dist/react/ConflictSheet.js.map +1 -1
- package/dist/react/Drawer.d.ts +8 -2
- package/dist/react/Drawer.js +167 -38
- package/dist/react/Drawer.js.map +1 -1
- package/dist/react/Duck.d.ts +13 -0
- package/dist/react/Duck.js +45 -0
- package/dist/react/Duck.js.map +1 -0
- package/dist/react/Empty3D.d.ts +2 -0
- package/dist/react/Empty3D.js +39 -0
- package/dist/react/Empty3D.js.map +1 -0
- package/dist/react/FitScroll.d.ts +6 -0
- package/dist/react/FitScroll.js +14 -0
- package/dist/react/FitScroll.js.map +1 -0
- package/dist/react/Icon.native.d.ts +6 -0
- package/dist/react/Icon.native.js +4 -0
- package/dist/react/Icon.native.js.map +1 -1
- package/dist/react/Icon.web.d.ts +6 -0
- package/dist/react/Icon.web.js +4 -0
- package/dist/react/Icon.web.js.map +1 -1
- package/dist/react/KeypadSheet.d.ts +9 -2
- package/dist/react/KeypadSheet.js +174 -42
- package/dist/react/KeypadSheet.js.map +1 -1
- package/dist/react/LaserTray.js +8 -5
- package/dist/react/LaserTray.js.map +1 -1
- package/dist/react/MarkupPanel.d.ts +8 -0
- package/dist/react/MarkupPanel.js +67 -0
- package/dist/react/MarkupPanel.js.map +1 -0
- package/dist/react/PageThumb.native.d.ts +7 -2
- package/dist/react/PageThumb.native.js +19 -7
- package/dist/react/PageThumb.native.js.map +1 -1
- package/dist/react/PageThumb.web.d.ts +3 -2
- package/dist/react/PageThumb.web.js +4 -4
- package/dist/react/PageThumb.web.js.map +1 -1
- package/dist/react/PlanCanvas.native.d.ts +1 -1
- package/dist/react/PlanCanvas.native.js +134 -36
- package/dist/react/PlanCanvas.native.js.map +1 -1
- package/dist/react/PlanCanvas.web.js +16 -5
- package/dist/react/PlanCanvas.web.js.map +1 -1
- package/dist/react/Popovers.d.ts +12 -6
- package/dist/react/Popovers.js +53 -26
- package/dist/react/Popovers.js.map +1 -1
- package/dist/react/Rail.d.ts +24 -0
- package/dist/react/Rail.js +324 -34
- package/dist/react/Rail.js.map +1 -1
- package/dist/react/ShapeMenu.d.ts +7 -0
- package/dist/react/ShapeMenu.js +58 -0
- package/dist/react/ShapeMenu.js.map +1 -0
- package/dist/react/Sheet.d.ts +14 -4
- package/dist/react/Sheet.js +54 -9
- package/dist/react/Sheet.js.map +1 -1
- package/dist/react/Slider.d.ts +18 -0
- package/dist/react/Slider.js +27 -0
- package/dist/react/Slider.js.map +1 -0
- package/dist/react/Toast.js +14 -6
- package/dist/react/Toast.js.map +1 -1
- package/dist/react/ToolTip.d.ts +7 -0
- package/dist/react/ToolTip.js +43 -0
- package/dist/react/ToolTip.js.map +1 -0
- package/dist/react/TopBar.d.ts +6 -3
- package/dist/react/TopBar.js +48 -17
- package/dist/react/TopBar.js.map +1 -1
- package/dist/react/Tween.d.ts +7 -0
- package/dist/react/Tween.js +26 -0
- package/dist/react/Tween.js.map +1 -0
- package/dist/react/Tween.native.d.ts +6 -0
- package/dist/react/Tween.native.js +43 -0
- package/dist/react/Tween.native.js.map +1 -0
- package/dist/react/View3D.native.d.ts +4 -0
- package/dist/react/View3D.native.js +103 -0
- package/dist/react/View3D.native.js.map +1 -0
- package/dist/react/View3D.web.d.ts +4 -0
- package/dist/react/View3D.web.js +151 -0
- package/dist/react/View3D.web.js.map +1 -0
- package/dist/react/View3DHost.d.ts +143 -0
- package/dist/react/View3DHost.js +377 -0
- package/dist/react/View3DHost.js.map +1 -0
- package/dist/react/corners.d.ts +7 -0
- package/dist/react/corners.js +51 -0
- package/dist/react/corners.js.map +1 -0
- package/dist/react/easing.d.ts +15 -0
- package/dist/react/easing.js +10 -0
- package/dist/react/easing.js.map +1 -0
- package/dist/react/host.d.ts +7 -2
- package/dist/react/host.js +8 -3
- package/dist/react/host.js.map +1 -1
- package/dist/react/hostKeypad.d.ts +56 -0
- package/dist/react/hostKeypad.js +5 -0
- package/dist/react/hostKeypad.js.map +1 -0
- package/dist/react/motion.d.ts +77 -0
- package/dist/react/motion.js +173 -0
- package/dist/react/motion.js.map +1 -0
- package/dist/react/ports.js +90 -8
- package/dist/react/ports.js.map +1 -1
- package/dist/react/saving.d.ts +15 -0
- package/dist/react/saving.js +76 -0
- package/dist/react/saving.js.map +1 -0
- package/dist/react/store.d.ts +38 -1
- package/dist/react/store.js +31 -1
- package/dist/react/store.js.map +1 -1
- package/dist/react/theme.d.ts +10 -0
- package/dist/react/theme.js +8 -0
- package/dist/react/theme.js.map +1 -1
- package/dist/react/topRow.d.ts +22 -0
- package/dist/react/topRow.js +61 -0
- package/dist/react/topRow.js.map +1 -0
- package/dist/react/touch.d.ts +6 -0
- package/dist/react/touch.js +9 -0
- package/dist/react/touch.js.map +1 -0
- package/dist/render/ctx.d.ts +8 -0
- package/dist/render/draw.d.ts +33 -1
- package/dist/render/draw.js +593 -215
- package/dist/render/draw.js.map +1 -1
- package/dist/render/elevation.d.ts +65 -43
- package/dist/render/elevation.js +414 -140
- package/dist/render/elevation.js.map +1 -1
- package/dist/render/figmaIcons.d.ts +12 -0
- package/dist/render/figmaIcons.js +21 -0
- package/dist/render/figmaIcons.js.map +1 -0
- package/dist/render/hit.d.ts +22 -2
- package/dist/render/hit.js +168 -25
- package/dist/render/hit.js.map +1 -1
- package/dist/render/icons.js +69 -10
- package/dist/render/icons.js.map +1 -1
- package/dist/render/linkTile.d.ts +15 -0
- package/dist/render/linkTile.js +369 -0
- package/dist/render/linkTile.js.map +1 -0
- package/dist/render/markup.d.ts +11 -0
- package/dist/render/markup.js +112 -0
- package/dist/render/markup.js.map +1 -0
- package/dist/render/navigate.d.ts +88 -0
- package/dist/render/navigate.js +100 -0
- package/dist/render/navigate.js.map +1 -0
- package/dist/render/snap.d.ts +20 -1
- package/dist/render/snap.js +118 -25
- package/dist/render/snap.js.map +1 -1
- package/dist/render/squircle.d.ts +8 -0
- package/dist/render/squircle.js +71 -0
- package/dist/render/squircle.js.map +1 -0
- package/dist/render/view.d.ts +115 -2
- package/dist/render/view.js +244 -19
- package/dist/render/view.js.map +1 -1
- package/dist/skia/SkiaDrawCtx.d.ts +30 -2
- package/dist/skia/SkiaDrawCtx.js +198 -43
- package/dist/skia/SkiaDrawCtx.js.map +1 -1
- package/dist/skia/host.d.ts +18 -2
- package/dist/skia/host.js +46 -1
- package/dist/skia/host.js.map +1 -1
- package/dist/solver/equations.js +37 -2
- package/dist/solver/equations.js.map +1 -1
- package/dist/solver/gauss-newton.d.ts +17 -0
- package/dist/solver/gauss-newton.js +144 -36
- package/dist/solver/gauss-newton.js.map +1 -1
- package/dist/solver/linalg.d.ts +45 -2
- package/dist/solver/linalg.js +164 -10
- package/dist/solver/linalg.js.map +1 -1
- package/dist/solver/types.d.ts +5 -0
- package/dist/tools/annotate.d.ts +57 -1
- package/dist/tools/annotate.js +64 -43
- package/dist/tools/annotate.js.map +1 -1
- package/dist/tools/chamfer.d.ts +12 -0
- package/dist/tools/chamfer.js +114 -0
- package/dist/tools/chamfer.js.map +1 -0
- package/dist/tools/corner.d.ts +38 -0
- package/dist/tools/corner.js +99 -0
- package/dist/tools/corner.js.map +1 -0
- package/dist/tools/dim.d.ts +86 -9
- package/dist/tools/dim.js +581 -96
- package/dist/tools/dim.js.map +1 -1
- package/dist/tools/elevation.js +1 -1
- package/dist/tools/elevation.js.map +1 -1
- package/dist/tools/fillet.d.ts +9 -0
- package/dist/tools/fillet.js +86 -0
- package/dist/tools/fillet.js.map +1 -0
- package/dist/tools/freehand.d.ts +3 -2
- package/dist/tools/freehand.js +19 -12
- package/dist/tools/freehand.js.map +1 -1
- package/dist/tools/index.js +14 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/line.d.ts +8 -3
- package/dist/tools/line.js +66 -30
- package/dist/tools/line.js.map +1 -1
- package/dist/tools/modify.d.ts +13 -0
- package/dist/tools/modify.js +105 -25
- package/dist/tools/modify.js.map +1 -1
- package/dist/tools/openings.js +22 -15
- package/dist/tools/openings.js.map +1 -1
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.js +42 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/select.d.ts +77 -3
- package/dist/tools/select.js +560 -74
- package/dist/tools/select.js.map +1 -1
- package/dist/tools/shapes.d.ts +14 -0
- package/dist/tools/shapes.js +154 -75
- package/dist/tools/shapes.js.map +1 -1
- package/dist/units/format.d.ts +10 -2
- package/dist/units/format.js +18 -3
- package/dist/units/format.js.map +1 -1
- package/dist/view3d/build.d.ts +35 -0
- package/dist/view3d/build.js +630 -0
- package/dist/view3d/build.js.map +1 -0
- package/dist/view3d/camera.d.ts +60 -0
- package/dist/view3d/camera.js +84 -0
- package/dist/view3d/camera.js.map +1 -0
- package/dist/view3d/fatLines.d.ts +11 -0
- package/dist/view3d/fatLines.js +83 -0
- package/dist/view3d/fatLines.js.map +1 -0
- package/dist/view3d/lines.d.ts +17 -0
- package/dist/view3d/lines.js +271 -0
- package/dist/view3d/lines.js.map +1 -0
- package/dist/view3d/mesh.d.ts +51 -0
- package/dist/view3d/mesh.js +101 -0
- package/dist/view3d/mesh.js.map +1 -0
- package/dist/view3d/poly.d.ts +16 -0
- package/dist/view3d/poly.js +109 -0
- package/dist/view3d/poly.js.map +1 -0
- package/dist/view3d/viewer.d.ts +86 -0
- package/dist/view3d/viewer.js +350 -0
- package/dist/view3d/viewer.js.map +1 -0
- package/package.json +15 -2
- package/src/app/edit.ts +83 -12
- package/src/app/main.ts +11 -5
- package/src/app/state.ts +38 -5
- package/src/data/memory.ts +2 -2
- package/src/data/provider.ts +15 -7
- package/src/data/sync.ts +87 -50
- package/src/editor/actions.ts +292 -83
- package/src/editor/confirm.ts +58 -0
- package/src/editor/elevation.ts +698 -478
- package/src/editor/face.ts +227 -0
- package/src/editor/files.ts +40 -4
- package/src/editor/gestures.ts +147 -31
- package/src/editor/keypad.ts +43 -11
- package/src/editor/keys.ts +25 -5
- package/src/editor/laser.ts +98 -20
- package/src/editor/linkActions.ts +194 -0
- package/src/editor/linkFollow.ts +43 -0
- package/src/editor/linkWrite.ts +77 -0
- package/src/editor/links.ts +181 -0
- package/src/editor/markup.ts +92 -8
- package/src/editor/mode.ts +83 -7
- package/src/editor/ports.ts +37 -6
- package/src/editor/project.ts +155 -26
- package/src/editor/selection.ts +54 -8
- package/src/editor/status.ts +2 -0
- package/src/editor/tooltips.ts +47 -0
- package/src/editor/view3d.ts +119 -0
- package/src/editor/view3dState.ts +61 -0
- package/src/export/dxf.ts +1 -1
- package/src/export/pdf.ts +15 -7
- package/src/export/plan.ts +119 -35
- package/src/index.ts +5 -0
- package/src/input/keyboard.ts +2 -4
- package/src/model/constraints.ts +13 -4
- package/src/model/demo.ts +3 -3
- package/src/model/elevation.ts +6 -16
- package/src/model/faces.ts +153 -0
- package/src/model/facesolve.ts +322 -0
- package/src/model/history.ts +19 -11
- package/src/model/images.ts +35 -0
- package/src/model/links.ts +77 -0
- package/src/model/markup.ts +80 -0
- package/src/model/measurement.ts +26 -0
- package/src/model/openings.ts +6 -0
- package/src/model/planGeom.ts +174 -8
- package/src/model/project.ts +3 -2
- package/src/model/projectfile.ts +2 -1
- package/src/model/rooms.ts +1 -1
- package/src/model/settings.ts +8 -2
- package/src/model/sketch.ts +101 -14
- package/src/model/smooth.ts +51 -0
- package/src/model/store.ts +35 -4
- package/src/model/types.ts +170 -8
- package/src/model/wallfaces.ts +126 -17
- package/src/model/wallshape.ts +97 -0
- package/src/react/BottomBar.tsx +263 -46
- package/src/react/Buttons.tsx +50 -9
- package/src/react/CadEditor.tsx +133 -30
- package/src/react/ConfirmSheet.tsx +38 -0
- package/src/react/ConflictSheet.tsx +19 -12
- package/src/react/Drawer.tsx +213 -110
- package/src/react/Duck.tsx +50 -0
- package/src/react/Empty3D.tsx +32 -0
- package/src/react/FitScroll.tsx +19 -0
- package/src/react/Icon.native.tsx +5 -0
- package/src/react/Icon.web.tsx +5 -0
- package/src/react/KeypadSheet.tsx +253 -60
- package/src/react/LaserTray.tsx +12 -8
- package/src/react/MarkupPanel.tsx +150 -0
- package/src/react/PageThumb.native.tsx +18 -7
- package/src/react/PageThumb.web.tsx +4 -4
- package/src/react/PlanCanvas.native.tsx +151 -34
- package/src/react/PlanCanvas.web.tsx +15 -5
- package/src/react/Popovers.tsx +116 -51
- package/src/react/Rail.tsx +360 -27
- package/src/react/ShapeMenu.tsx +66 -0
- package/src/react/Sheet.tsx +56 -11
- package/src/react/Slider.tsx +48 -0
- package/src/react/Toast.tsx +16 -9
- package/src/react/ToolTip.tsx +49 -0
- package/src/react/TopBar.tsx +97 -39
- package/src/react/Tween.native.tsx +36 -0
- package/src/react/Tween.tsx +24 -0
- package/src/react/View3D.native.tsx +131 -0
- package/src/react/View3D.web.tsx +131 -0
- package/src/react/View3DHost.ts +367 -0
- package/src/react/corners.ts +52 -0
- package/src/react/easing.ts +14 -0
- package/src/react/host.ts +8 -3
- package/src/react/hostKeypad.ts +66 -0
- package/src/react/motion.tsx +239 -0
- package/src/react/ports.ts +78 -9
- package/src/react/saving.ts +80 -0
- package/src/react/store.ts +35 -3
- package/src/react/theme.ts +8 -0
- package/src/react/topRow.ts +71 -0
- package/src/react/touch.ts +10 -0
- package/src/render/ctx.ts +8 -0
- package/src/render/draw.ts +437 -175
- package/src/render/elevation.ts +349 -143
- package/src/render/figmaIcons.ts +22 -0
- package/src/render/hit.ts +140 -21
- package/src/render/icons.ts +69 -10
- package/src/render/linkTile.ts +297 -0
- package/src/render/markup.ts +91 -0
- package/src/render/navigate.ts +114 -0
- package/src/render/snap.ts +105 -22
- package/src/render/squircle.ts +73 -0
- package/src/render/view.ts +255 -19
- package/src/skia/SkiaDrawCtx.ts +163 -41
- package/src/skia/host.ts +46 -1
- package/src/solver/equations.ts +37 -2
- package/src/solver/gauss-newton.ts +125 -28
- package/src/solver/linalg.ts +141 -5
- package/src/solver/types.ts +5 -0
- package/src/styles.css +91 -42
- package/src/tools/annotate.ts +58 -29
- package/src/tools/chamfer.ts +103 -0
- package/src/tools/corner.ts +99 -0
- package/src/tools/dim.ts +524 -92
- package/src/tools/elevation.ts +1 -1
- package/src/tools/fillet.ts +82 -0
- package/src/tools/freehand.ts +20 -16
- package/src/tools/index.ts +17 -4
- package/src/tools/line.ts +59 -23
- package/src/tools/modify.ts +86 -24
- package/src/tools/openings.ts +8 -13
- package/src/tools/registry.ts +27 -2
- package/src/tools/select.ts +424 -75
- package/src/tools/shapes.ts +119 -58
- package/src/ui/ctx.ts +2 -1
- package/src/ui/domPorts.ts +23 -4
- package/src/ui/drawer.ts +6 -26
- package/src/ui/elevation.ts +10 -101
- package/src/ui/keypad.ts +8 -14
- package/src/ui/laser.ts +2 -2
- package/src/ui/menu.ts +63 -17
- package/src/ui/noteinput.ts +3 -3
- package/src/ui/opacity.ts +108 -0
- package/src/ui/palette.ts +67 -12
- package/src/ui/rail.ts +21 -7
- package/src/ui/topbar.ts +4 -14
- package/src/units/format.ts +18 -3
- package/src/view3d/build.ts +607 -0
- package/src/view3d/camera.ts +113 -0
- package/src/view3d/fatLines.ts +83 -0
- package/src/view3d/lines.ts +258 -0
- package/src/view3d/mesh.ts +111 -0
- package/src/view3d/poly.ts +104 -0
- package/src/view3d/viewer.ts +348 -0
- package/dist/react/ElevCanvas.native.d.ts +0 -3
- package/dist/react/ElevCanvas.native.js +0 -58
- package/dist/react/ElevCanvas.native.js.map +0 -1
- package/dist/react/ElevCanvas.web.d.ts +0 -4
- package/dist/react/ElevCanvas.web.js +0 -44
- package/dist/react/ElevCanvas.web.js.map +0 -1
- package/dist/react/ElevationSheet.d.ts +0 -2
- package/dist/react/ElevationSheet.js +0 -38
- package/dist/react/ElevationSheet.js.map +0 -1
- package/dist/render/elevationView.d.ts +0 -3
- package/dist/render/elevationView.js +0 -100
- package/dist/render/elevationView.js.map +0 -1
- package/src/react/ElevCanvas.native.tsx +0 -68
- package/src/react/ElevCanvas.web.tsx +0 -42
- package/src/react/ElevationSheet.tsx +0 -88
- package/src/render/elevationView.ts +0 -73
package/dist/editor/files.js
CHANGED
|
@@ -6,18 +6,22 @@ import { seedProject } from '../model/demo';
|
|
|
6
6
|
import { clearAllHistory } from '../model/history';
|
|
7
7
|
import { projectFileName, projectFromFile, projectToFile } from '../model/projectfile';
|
|
8
8
|
import { sessionState } from '../model/session';
|
|
9
|
-
import {
|
|
9
|
+
import { settings } from '../model/settings';
|
|
10
|
+
import { page, planSK, saveSoon, store } from '../model/store';
|
|
10
11
|
import { fitView } from '../render/view';
|
|
11
|
-
import { saveFile, toast, updateTopBar } from './ports';
|
|
12
|
+
import { refreshDrawerSoon, saveFile, toast, updateTopBar } from './ports';
|
|
13
|
+
import { closeElevation } from './elevation';
|
|
14
|
+
import { switchPage } from './project';
|
|
15
|
+
import { uid } from '../model/ids';
|
|
12
16
|
/* Files in and out: PDF and DXF of the page, the whole project as a .boldr.json file, and starting over. */
|
|
13
17
|
export function exportPdf() {
|
|
14
18
|
const name = pdfFileName(store.project.name, page().name);
|
|
15
|
-
saveFile(name, 'application/pdf', sketchToPdf(
|
|
19
|
+
saveFile(name, 'application/pdf', sketchToPdf(planSK(), { project: store.project.name, subtitle: page().name, cabinets: settings.layers.cabinets }));
|
|
16
20
|
toast('Exported ' + name);
|
|
17
21
|
}
|
|
18
22
|
export function exportDxf() {
|
|
19
23
|
const name = dxfFileName(store.project.name, page().name);
|
|
20
|
-
saveFile(name, 'application/dxf', sketchToDxf(
|
|
24
|
+
saveFile(name, 'application/dxf', sketchToDxf(planSK(), { cabinets: settings.layers.cabinets }));
|
|
21
25
|
toast('Exported ' + name + ' (inches)');
|
|
22
26
|
}
|
|
23
27
|
/** The whole project (all pages, images included) as a .boldr.json file. */
|
|
@@ -43,6 +47,48 @@ export function openProject(p) {
|
|
|
43
47
|
show(p, p.pages[0].id);
|
|
44
48
|
toast('Opened ' + p.name, { action: { label: 'Undo', fn: () => { show(before.project, before.page); toast('Back to ' + before.project.name); } } });
|
|
45
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Open file (the ⋯ menu): a project file's pages are added to the drawing that's open — nothing in it is replaced —
|
|
52
|
+
* and the first one is shown. A page named like one already here takes the file's project name in front (and a
|
|
53
|
+
* number if it still clashes). The message's Undo takes them out again. Saved with the rest when the drawing is.
|
|
54
|
+
*/
|
|
55
|
+
export function importPagesText(text) {
|
|
56
|
+
let p;
|
|
57
|
+
try {
|
|
58
|
+
p = projectFromFile(text);
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
toast(e.message, { warn: true });
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
closeElevation();
|
|
65
|
+
const names = new Set(store.project.pages.map(x => x.name)), from = p.name && p.name !== store.project.name ? p.name + ' · ' : '';
|
|
66
|
+
const added = p.pages.map(pg => {
|
|
67
|
+
let name = names.has(pg.name) ? from + pg.name : pg.name;
|
|
68
|
+
for (let n = 2, base = name; names.has(name); n++)
|
|
69
|
+
name = base + ' ' + n;
|
|
70
|
+
names.add(name);
|
|
71
|
+
return { ...pg, id: uid('pg'), name, view: null };
|
|
72
|
+
});
|
|
73
|
+
const back = store.curPageId, ids = new Set(added.map(x => x.id));
|
|
74
|
+
store.project.pages.push(...added);
|
|
75
|
+
switchPage(added[0].id);
|
|
76
|
+
refreshDrawerSoon();
|
|
77
|
+
const n = added.length;
|
|
78
|
+
toast('Added ' + (n === 1 ? 'a page' : n + ' pages') + ' from ' + p.name, {
|
|
79
|
+
action: { label: 'Undo', fn: () => {
|
|
80
|
+
if (!store.project.pages.some(x => !ids.has(x.id)))
|
|
81
|
+
return;
|
|
82
|
+
if (ids.has(store.curPageId))
|
|
83
|
+
switchPage(store.project.pages.some(x => x.id === back) ? back : store.project.pages.find(x => !ids.has(x.id)).id);
|
|
84
|
+
store.project.pages = store.project.pages.filter(x => !ids.has(x.id));
|
|
85
|
+
updateTopBar();
|
|
86
|
+
refreshDrawerSoon();
|
|
87
|
+
saveSoon();
|
|
88
|
+
toast('Import taken out');
|
|
89
|
+
} },
|
|
90
|
+
});
|
|
91
|
+
}
|
|
46
92
|
/** Open a project file's text; a message says what's wrong if it isn't one. */
|
|
47
93
|
export function openProjectText(text) {
|
|
48
94
|
try {
|
package/dist/editor/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/editor/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/editor/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,29 @@ export interface PointerIn {
|
|
|
15
15
|
cx?: number;
|
|
16
16
|
cy?: number;
|
|
17
17
|
}
|
|
18
|
+
export declare function setHostNavigation(on: boolean): void;
|
|
18
19
|
export declare const keys: {
|
|
19
20
|
spaceDown: boolean;
|
|
20
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* A sheet is up over the drawing: the keypad (not one that leaves the drawing live, nor the host's own, which covers
|
|
24
|
+
* it) or a conflict to resolve. On a tablet or a computer the drawing stays in reach around it (react/CadEditor.tsx):
|
|
25
|
+
* it can be panned and zoomed to see what's being measured, and a tap on it closes the sheet — nothing on it is
|
|
26
|
+
* picked or changed meanwhile. (A phone's sheet has a backdrop: the drawing gets no pointers at all.)
|
|
27
|
+
*/
|
|
28
|
+
export declare const sheetUp: () => boolean;
|
|
29
|
+
/** Pointers only move the view: a drawing that can't be edited, or one with a sheet up over it. */
|
|
30
|
+
export declare const navigationOnly: () => boolean;
|
|
21
31
|
export declare function pointerDown(e: PointerIn): void;
|
|
22
32
|
export declare function pointerMove(e: PointerIn): void;
|
|
23
|
-
export declare
|
|
24
|
-
export declare
|
|
25
|
-
/**
|
|
33
|
+
export declare function pointerUp(e: PointerIn): void;
|
|
34
|
+
export declare function pointerCancel(e: PointerIn): void;
|
|
35
|
+
/**
|
|
36
|
+
* Every pointer the host still has down (a device says so as each new one lands): any other was lost — its lift
|
|
37
|
+
* never came — and is let go now, so it can't hold a gesture, or the chrome, open.
|
|
38
|
+
*/
|
|
39
|
+
export declare function pointersStill(ids: number[]): void;
|
|
40
|
+
/** A mouse left the canvas: drop hover highlights (the Line tool keeps its snap marker). */
|
|
26
41
|
export declare function pointerLeave(kind: string): void;
|
|
27
42
|
/**
|
|
28
43
|
* Wheel or trackpad: always zooms around (x, y), never pans (pan with Space-drag, middle/right-drag or two fingers).
|
package/dist/editor/gestures.js
CHANGED
|
@@ -3,12 +3,41 @@ import { ed } from '../app/state';
|
|
|
3
3
|
import { hyp } from '../model/geom';
|
|
4
4
|
import { revertLast } from '../model/history';
|
|
5
5
|
import { onSessionReset } from '../model/session';
|
|
6
|
-
import {
|
|
7
|
-
import { panBy, requestDraw, s2w, zoomAt } from '../render/view';
|
|
6
|
+
import { saveViewSoon, setSaveIdle } from '../model/store';
|
|
7
|
+
import { paintPending, panBy, requestDraw, s2w, zoomAt } from '../render/view';
|
|
8
8
|
import { tools } from '../tools/registry';
|
|
9
|
-
import { dismissPopovers, setCursor } from './ports';
|
|
9
|
+
import { closeKeypad, dismissConflict, dismissPopovers, interacting, setCursor, updateCtx, updateHint } from './ports';
|
|
10
|
+
import { intoWall } from './elevation';
|
|
11
|
+
import { keypadOnHost, keypadOpen, keypadSpec } from './keypad';
|
|
12
|
+
import { conflictOpen } from './conflict';
|
|
13
|
+
import { confirmCancel, confirmOpen } from './confirm';
|
|
14
|
+
import { readOnlyTap } from './linkActions';
|
|
15
|
+
/**
|
|
16
|
+
* A host that pans and zooms the view itself (a device does it on its UI thread, so a pinch never waits for this
|
|
17
|
+
* thread): fingers still end a tool's action and two- and three-finger taps still undo and redo here, but the view is
|
|
18
|
+
* left to the host, which hands it back with setViewFromHost.
|
|
19
|
+
*/
|
|
20
|
+
let hostNavigates = false;
|
|
21
|
+
export function setHostNavigation(on) { hostNavigates = on; }
|
|
22
|
+
/**
|
|
23
|
+
* Past this far (screen px) pointers on the drawing are moving — a stroke, a drag, a pan or a pinch — not tapping. It
|
|
24
|
+
* tells a two-finger tap (undo) from a pan or pinch, and it's when the interface hears that a gesture is in motion
|
|
25
|
+
* (the `interacting` port: a phone's chrome steps aside) until the last pointer lifts — so the chrome never blinks on
|
|
26
|
+
* a tap.
|
|
27
|
+
*/
|
|
28
|
+
const MOTION_PX = 14;
|
|
10
29
|
const ptrs = new Map();
|
|
11
|
-
let penSeen = false, gesture = null, primary = null
|
|
30
|
+
let penSeen = false, gesture = null, primary = null;
|
|
31
|
+
/** close: a press under a sheet (see sheetUp) — a tap closes it; open: a view-only press — a tap opens a link's tile */
|
|
32
|
+
let panDrag = null;
|
|
33
|
+
/** where the primary pointer went down, and whether a gesture on the drawing is in motion */
|
|
34
|
+
let primaryAt = null, inMotion = false;
|
|
35
|
+
/**
|
|
36
|
+
* What a press can change, as it was before the primary pointer went down: if a second finger turns the press into a
|
|
37
|
+
* pan or pinch, it's put back (see cancelPrimary). A tool's own state is kept a level deep — its presses set its fields,
|
|
38
|
+
* they don't change what's in them.
|
|
39
|
+
*/
|
|
40
|
+
let beforePress = null;
|
|
12
41
|
let wheelT;
|
|
13
42
|
export const keys = { spaceDown: false };
|
|
14
43
|
onSessionReset(() => {
|
|
@@ -18,10 +47,39 @@ onSessionReset(() => {
|
|
|
18
47
|
primary = null;
|
|
19
48
|
panDrag = null;
|
|
20
49
|
keys.spaceDown = false;
|
|
50
|
+
primaryAt = null;
|
|
51
|
+
beforePress = null;
|
|
52
|
+
setMotion(false);
|
|
21
53
|
clearTimeout(wheelT);
|
|
22
54
|
});
|
|
55
|
+
// (a save waits until nothing is pressed on the drawing: see setSaveIdle)
|
|
56
|
+
setSaveIdle(() => ptrs.size === 0);
|
|
57
|
+
/**
|
|
58
|
+
* A sheet is up over the drawing: the keypad (not one that leaves the drawing live, nor the host's own, which covers
|
|
59
|
+
* it) or a conflict to resolve. On a tablet or a computer the drawing stays in reach around it (react/CadEditor.tsx):
|
|
60
|
+
* it can be panned and zoomed to see what's being measured, and a tap on it closes the sheet — nothing on it is
|
|
61
|
+
* picked or changed meanwhile. (A phone's sheet has a backdrop: the drawing gets no pointers at all.)
|
|
62
|
+
*/
|
|
63
|
+
export const sheetUp = () => (keypadOpen() && !keypadSpec()?.modeless && !keypadOnHost()) || conflictOpen() || confirmOpen();
|
|
64
|
+
/** Pointers only move the view: a drawing that can't be edited, or one with a sheet up over it. */
|
|
65
|
+
export const navigationOnly = () => ed.readOnly || sheetUp();
|
|
66
|
+
function closeSheet() {
|
|
67
|
+
if (keypadOpen())
|
|
68
|
+
closeKeypad();
|
|
69
|
+
else if (confirmOpen())
|
|
70
|
+
confirmCancel();
|
|
71
|
+
else
|
|
72
|
+
dismissConflict();
|
|
73
|
+
}
|
|
74
|
+
function setMotion(on) {
|
|
75
|
+
if (on === inMotion)
|
|
76
|
+
return;
|
|
77
|
+
inMotion = on;
|
|
78
|
+
interacting(on);
|
|
79
|
+
}
|
|
23
80
|
function evOf(p) {
|
|
24
|
-
|
|
81
|
+
// in the wall view, tools work inside the wall
|
|
82
|
+
const [wx, wy] = intoWall(...s2w(p.x, p.y));
|
|
25
83
|
return { sx: p.x, sy: p.y, wx, wy, touch: p.kind !== 'mouse', shift: !!p.shift };
|
|
26
84
|
}
|
|
27
85
|
const curTool = () => tools[ed.tool];
|
|
@@ -51,12 +109,15 @@ function updateGesture() {
|
|
|
51
109
|
g.last = s;
|
|
52
110
|
return;
|
|
53
111
|
}
|
|
54
|
-
const dx = s.x - L.x, dy = s.y - L.y;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
|
|
59
|
-
|
|
112
|
+
const dx = s.x - L.x, dy = s.y - L.y, pinch = s.n >= 2 && L.d > 0 && s.d > 0;
|
|
113
|
+
// (how far the fingers went tells a tap — undo, redo — from a pan or pinch, whoever moves the view)
|
|
114
|
+
g.moved += hyp(dx, dy) + (pinch ? Math.abs(s.d - L.d) : 0);
|
|
115
|
+
if (g.moved >= MOTION_PX)
|
|
116
|
+
setMotion(true);
|
|
117
|
+
if (!hostNavigates) {
|
|
118
|
+
panBy(dx, dy);
|
|
119
|
+
if (pinch)
|
|
120
|
+
zoomAt(s.x, s.y, s.d / L.d);
|
|
60
121
|
}
|
|
61
122
|
g.last = s;
|
|
62
123
|
}
|
|
@@ -65,33 +126,57 @@ function endGesture(t) {
|
|
|
65
126
|
gesture = null;
|
|
66
127
|
if (!g)
|
|
67
128
|
return;
|
|
68
|
-
|
|
129
|
+
// (under a sheet a tap closes it, however many fingers: nothing is undone under it)
|
|
130
|
+
if (g.moved < MOTION_PX && sheetUp())
|
|
131
|
+
closeSheet();
|
|
132
|
+
// (view only: a finger's tap on a link's tile opens it, once the person says so)
|
|
133
|
+
else if (g.moved < MOTION_PX && ed.readOnly && g.max === 1 && g.last && t - g.t0 < 500)
|
|
134
|
+
readOnlyTap(g.last.x, g.last.y, true);
|
|
135
|
+
else if (g.moved < MOTION_PX && t - g.t0 < 380 && !ed.readOnly) {
|
|
69
136
|
if (g.max === 2)
|
|
70
137
|
undo();
|
|
71
138
|
else if (g.max >= 3)
|
|
72
139
|
redo();
|
|
73
140
|
}
|
|
74
|
-
|
|
141
|
+
saveViewSoon();
|
|
75
142
|
}
|
|
76
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* A second finger landed mid-action: the first finger's press never happened. A drag in progress is reverted, and the
|
|
145
|
+
* tool, the selection and what's shown go back to how they were before it — so a shape being drawn keeps the points
|
|
146
|
+
* already placed (a rectangle's first corner, an arc's ends, a line's last point), nothing is left where the first
|
|
147
|
+
* finger landed (a line or rectangle to it, a mark under it), and the next tap carries on where it was.
|
|
148
|
+
*/
|
|
77
149
|
function cancelPrimary() {
|
|
78
|
-
const t = curTool();
|
|
150
|
+
const t = curTool(), was = beforePress;
|
|
79
151
|
if (t && t.st && t.st.dragging && t.st.drag)
|
|
80
152
|
revertLast();
|
|
81
|
-
if (t &&
|
|
82
|
-
t.st =
|
|
153
|
+
if (t && was && was.tool === ed.tool) {
|
|
154
|
+
t.st = was.st;
|
|
155
|
+
ed.sel = was.sel;
|
|
156
|
+
ed.preview = was.preview;
|
|
157
|
+
ed.snapState = was.snap;
|
|
158
|
+
}
|
|
159
|
+
else if (t && t.reset)
|
|
160
|
+
t.reset();
|
|
161
|
+
beforePress = null;
|
|
83
162
|
primary = null;
|
|
84
163
|
ed.boxSel = null;
|
|
85
|
-
|
|
164
|
+
updateCtx();
|
|
165
|
+
updateHint();
|
|
86
166
|
requestDraw();
|
|
87
167
|
}
|
|
88
168
|
function endPtr(e, cancel) {
|
|
89
169
|
const p = ptrs.get(e.id);
|
|
90
170
|
ptrs.delete(e.id);
|
|
91
171
|
if (panDrag && panDrag.id === e.id) {
|
|
172
|
+
const still = panDrag.moved < MOTION_PX && !cancel, close = !!panDrag.close && still, open = !!panDrag.open && still;
|
|
92
173
|
panDrag = null;
|
|
93
174
|
setCursor('');
|
|
94
|
-
|
|
175
|
+
saveViewSoon();
|
|
176
|
+
if (close && sheetUp())
|
|
177
|
+
closeSheet();
|
|
178
|
+
else if (open)
|
|
179
|
+
readOnlyTap(e.x, e.y, e.kind !== 'mouse');
|
|
95
180
|
return;
|
|
96
181
|
}
|
|
97
182
|
if (gesture && p && p.kind === 'touch') {
|
|
@@ -117,33 +202,45 @@ export function pointerDown(e) {
|
|
|
117
202
|
ed.lastPointerTouch = e.kind !== 'mouse';
|
|
118
203
|
const p = { ...e };
|
|
119
204
|
ptrs.set(e.id, p);
|
|
120
|
-
|
|
121
|
-
|
|
205
|
+
// (under a sheet a pen moves the view as a mouse does, and a plain press of either that doesn't move closes it)
|
|
206
|
+
const under = sheetUp(), navOnly = under || ed.readOnly;
|
|
207
|
+
if ((e.kind === 'mouse' && (e.button === 1 || e.button === 2 || keys.spaceDown || navOnly)) || (e.kind === 'pen' && (under || ed.readOnly))) {
|
|
208
|
+
panDrag = { x: p.x, y: p.y, id: e.id, moved: 0, close: under && !e.button, open: ed.readOnly && !under && !e.button && !keys.spaceDown };
|
|
122
209
|
setCursor('grabbing');
|
|
123
210
|
return;
|
|
124
211
|
}
|
|
125
212
|
if (e.kind === 'touch') {
|
|
126
213
|
const touches = touchList();
|
|
127
|
-
if (penSeen || touches.length >= 2 ||
|
|
214
|
+
if (penSeen || touches.length >= 2 || navOnly) {
|
|
128
215
|
if (primary && primary.kind === 'touch')
|
|
129
216
|
cancelPrimary();
|
|
217
|
+
// (a finger joining one already moving the view: the pinch is measured from here, none of its first move lost)
|
|
130
218
|
if (!gesture)
|
|
131
219
|
startGesture(e.t);
|
|
132
|
-
else
|
|
220
|
+
else {
|
|
133
221
|
gesture.max = Math.max(gesture.max, touches.length);
|
|
222
|
+
gesture.last = gState(touches);
|
|
223
|
+
}
|
|
134
224
|
return;
|
|
135
225
|
}
|
|
136
226
|
}
|
|
137
|
-
if (primary ||
|
|
227
|
+
if (primary || navOnly)
|
|
138
228
|
return;
|
|
139
229
|
primary = p;
|
|
230
|
+
primaryAt = { x: e.x, y: e.y };
|
|
231
|
+
// (what it lands on is picked from the drawing as it is now, not as the last frame painted it)
|
|
232
|
+
paintPending();
|
|
140
233
|
const t = curTool();
|
|
234
|
+
beforePress = { tool: ed.tool, st: t && t.st && typeof t.st === 'object' ? { ...t.st } : t?.st, sel: [...ed.sel], preview: ed.preview, snap: ed.snapState };
|
|
141
235
|
if (t && t.down)
|
|
142
236
|
t.down(evOf(e));
|
|
143
237
|
}
|
|
144
238
|
export function pointerMove(e) {
|
|
145
239
|
const p = ptrs.get(e.id);
|
|
146
240
|
if (panDrag && panDrag.id === e.id) {
|
|
241
|
+
panDrag.moved += hyp(e.x - panDrag.x, e.y - panDrag.y);
|
|
242
|
+
if (panDrag.moved >= MOTION_PX)
|
|
243
|
+
setMotion(true);
|
|
147
244
|
panBy(e.x - panDrag.x, e.y - panDrag.y);
|
|
148
245
|
panDrag.x = e.x;
|
|
149
246
|
panDrag.y = e.y;
|
|
@@ -161,22 +258,40 @@ export function pointerMove(e) {
|
|
|
161
258
|
if (!t)
|
|
162
259
|
return;
|
|
163
260
|
if (primary && e.id === primary.id) {
|
|
261
|
+
if (primaryAt && hyp(e.x - primaryAt.x, e.y - primaryAt.y) >= MOTION_PX)
|
|
262
|
+
setMotion(true);
|
|
164
263
|
if (t.move)
|
|
165
264
|
t.move(evOf(e));
|
|
166
265
|
}
|
|
167
|
-
else if (!primary && e.kind !== 'touch' && !
|
|
266
|
+
else if (!primary && e.kind !== 'touch' && !navigationOnly()) {
|
|
168
267
|
ed.lastPointerTouch = false;
|
|
169
268
|
if (t.hover)
|
|
170
269
|
t.hover(evOf(e));
|
|
171
270
|
}
|
|
172
271
|
}
|
|
173
|
-
export
|
|
174
|
-
export
|
|
175
|
-
/**
|
|
272
|
+
export function pointerUp(e) { endPtr(e, false); settle(); }
|
|
273
|
+
export function pointerCancel(e) { endPtr(e, true); settle(); }
|
|
274
|
+
/** The last pointer lifted: nothing on the drawing is moving any more. */
|
|
275
|
+
function settle() {
|
|
276
|
+
if (ptrs.size)
|
|
277
|
+
return;
|
|
278
|
+
primaryAt = null;
|
|
279
|
+
setMotion(false);
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Every pointer the host still has down (a device says so as each new one lands): any other was lost — its lift
|
|
283
|
+
* never came — and is let go now, so it can't hold a gesture, or the chrome, open.
|
|
284
|
+
*/
|
|
285
|
+
export function pointersStill(ids) {
|
|
286
|
+
for (const [id, p] of [...ptrs])
|
|
287
|
+
if (!ids.includes(id))
|
|
288
|
+
pointerCancel({ ...p, t: Date.now() });
|
|
289
|
+
}
|
|
290
|
+
/** A mouse left the canvas: drop hover highlights (the Line tool keeps its snap marker). */
|
|
176
291
|
export function pointerLeave(kind) {
|
|
177
292
|
if (kind === 'mouse' && !primary) {
|
|
178
293
|
ed.hover = null;
|
|
179
|
-
if (ed.tool !== 'line'
|
|
294
|
+
if (ed.tool !== 'line')
|
|
180
295
|
ed.snapState = null;
|
|
181
296
|
requestDraw();
|
|
182
297
|
}
|
|
@@ -191,6 +306,6 @@ export function wheelZoom(x, y, dy, pinch, lines) {
|
|
|
191
306
|
else
|
|
192
307
|
zoomAt(x, y, Math.exp(-dy * (lines ? 0.06 : 0.0016)));
|
|
193
308
|
clearTimeout(wheelT);
|
|
194
|
-
wheelT = setTimeout(
|
|
309
|
+
wheelT = setTimeout(saveViewSoon, 400);
|
|
195
310
|
}
|
|
196
311
|
//# sourceMappingURL=gestures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestures.js","sourceRoot":"","sources":["../../src/editor/gestures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gestures.js","sourceRoot":"","sources":["../../src/editor/gestures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,EAAE,EAA2B,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,KAAK,EAAY,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyB5C;;;;GAIG;AACH,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,MAAM,UAAU,iBAAiB,CAAC,EAAW,IAAU,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAC1C,IAAI,OAAO,GAAG,KAAK,EAAE,OAAO,GAAmB,IAAI,EAAE,OAAO,GAAqB,IAAI,CAAC;AACtF,wHAAwH;AACxH,IAAI,OAAO,GAAgG,IAAI,CAAC;AAChH,6FAA6F;AAC7F,IAAI,SAAS,GAAoC,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC;AACxE;;;;GAIG;AACH,IAAI,WAAW,GAAqG,IAAI,CAAC;AACzH,IAAI,MAAiD,CAAC;AACtD,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,cAAc,CAAC,GAAG,EAAE;IAClB,IAAI,CAAC,KAAK,EAAE,CAAC;IAAC,OAAO,GAAG,KAAK,CAAC;IAAC,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,GAAG,IAAI,CAAC;IAAC,OAAO,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAAC,SAAS,GAAG,IAAI,CAAC;IAAC,WAAW,GAAG,IAAI,CAAC;IAC5I,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,YAAY,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAY,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,YAAY,EAAE,IAAI,WAAW,EAAE,CAAC;AAEtI,mGAAmG;AACnG,MAAM,CAAC,MAAM,cAAc,GAAG,GAAY,EAAE,CAAC,EAAE,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC;AAEtE,SAAS,UAAU;IACjB,IAAI,UAAU,EAAE;QAAE,WAAW,EAAE,CAAC;SAAM,IAAI,WAAW,EAAE;QAAE,aAAa,EAAE,CAAC;;QAAM,eAAe,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,SAAS,CAAC,EAAW;IAC5B,IAAI,EAAE,KAAK,QAAQ;QAAE,OAAO;IAC5B,QAAQ,GAAG,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,IAAI,CAAC,CAAY;IACxB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACnF,CAAC;AAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACrC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAE3E,SAAS,MAAM,CAAC,EAAe;IAC7B,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;IAAC,CAAC;IAClJ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IACvB,OAAO,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,OAAQ,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC;IACrC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACxC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7E,oGAAoG;IACpG,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,KAAK,IAAI,SAAS;QAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACd,IAAI,KAAK;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,MAAM,CAAC,GAAG,OAAO,CAAC;IAClB,OAAO,GAAG,IAAI,CAAC;IACf,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,oFAAoF;IACpF,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,OAAO,EAAE;QAAE,UAAU,EAAE,CAAC;IACnD,iFAAiF;SAC5E,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG;QAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SACzH,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,EAAE,CAAC;IAAC,CAAC;IACzH,YAAY,EAAE,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,OAAO,EAAE,EAAE,GAAG,GAAG,WAAW,CAAC;IACvC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI;QAAE,UAAU,EAAE,CAAC;IAC1D,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACrC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACd,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAAC,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;IACtE,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK;QAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACnC,WAAW,GAAG,IAAI,CAAC;IACnB,OAAO,GAAG,IAAI,CAAC;IACf,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IACjB,SAAS,EAAE,CAAC;IAAC,UAAU,EAAE,CAAC;IAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,MAAM,CAAC,CAAY,EAAE,MAAe;IAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClB,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QACrH,OAAO,GAAG,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,OAAO,EAAE;YAAE,UAAU,EAAE,CAAC;aAChC,IAAI,IAAI;YAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM;YAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC7F,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;YAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aACnC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAAC,WAAW,EAAE,CAAC;QAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAY;IACtC,eAAe,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC;IACrC,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACnB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClB,gHAAgH;IAChH,MAAM,KAAK,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC;IACxD,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC5I,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzI,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;YAC9C,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;gBAAE,aAAa,EAAE,CAAC;YACzD,+GAA+G;YAC/G,IAAI,CAAC,OAAO;gBAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAAM,CAAC;gBAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAC9H,OAAO;QACT,CAAC;IACH,CAAC;IACD,IAAI,OAAO,IAAI,OAAO;QAAE,OAAO;IAC/B,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,YAAY,EAAE,CAAC;IACf,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,WAAW,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;IAC5J,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;QAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAY;IACtC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,IAAI,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAChC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAAC,aAAa,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACpE,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,IAAI,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,CAAC,IAAI;YAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;SACI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAAC,EAAE,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAAC,IAAI,CAAC,CAAC,KAAK;YAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC/H,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAY,IAAU,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7E,MAAM,UAAU,aAAa,CAAC,CAAY,IAAU,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,0EAA0E;AAC1E,SAAS,MAAM;IACb,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO;IACtB,SAAS,GAAG,IAAI,CAAC;IACjB,SAAS,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAa;IACzC,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,aAAa,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;QAChB,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;YAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5C,WAAW,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,KAAc,EAAE,KAAc;IACxF,IAAI,KAAK;QAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;QACzC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/editor/keypad.d.ts
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
import { type KeypadSpec } from './ports';
|
|
2
2
|
export declare const FRACTIONS: string[];
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Key layouts, phone-style (1 2 3 on top): '⌫' and '( )' are special keys. In lengths the 0 is three keys wide
|
|
5
|
+
* (`keySpan`); the fraction keys put their own space before them, so there's no space key. (A laser reading goes
|
|
6
|
+
* straight into an open keypad: no key for it.)
|
|
7
|
+
*/
|
|
4
8
|
export declare const keyLayout: (numeric?: boolean) => string[];
|
|
9
|
+
/** How many columns (of four) a key takes. */
|
|
10
|
+
export declare const keySpan: (k: string, numeric?: boolean) => number;
|
|
5
11
|
export declare const keypadOpen: () => boolean;
|
|
6
12
|
export declare const keypadSpec: () => KeypadSpec | null;
|
|
7
13
|
export declare const keypadText: () => string;
|
|
8
14
|
export declare const keypadFresh: () => boolean;
|
|
9
15
|
/** The fraction row shows for lengths in feet and inches, not for degrees or millimetres. */
|
|
10
16
|
export declare const fractionRowShown: () => boolean;
|
|
11
|
-
|
|
17
|
+
/** Open the keypad for `spec`; `host`: the host shows its own keypad for it (see react/hostKeypad.ts). */
|
|
18
|
+
export declare function keypadStart(spec: KeypadSpec, host?: boolean): void;
|
|
19
|
+
/** Whether the open keypad is the host's own. */
|
|
20
|
+
export declare const keypadOnHost: () => boolean;
|
|
12
21
|
/** Close the keypad; returns what it was opened with. */
|
|
13
22
|
export declare function keypadEnd(): KeypadSpec | null;
|
|
14
23
|
/** Text edited straight in the display (a keyboard on the field itself). */
|
|
@@ -28,8 +37,12 @@ export declare function keypadBackspace(): void;
|
|
|
28
37
|
export declare function keypadDeleteLast(): void;
|
|
29
38
|
/** A measured length into the display, replaced again by the next key. */
|
|
30
39
|
export declare function keypadSetReading(v: number): void;
|
|
31
|
-
/**
|
|
32
|
-
|
|
40
|
+
/**
|
|
41
|
+
* A laser reading into an open length keypad. False if this keypad can't take one (degrees, or laser turned off).
|
|
42
|
+
* The host's own keypad can't be typed into from here, so a reading there is the value: it's applied at once.
|
|
43
|
+
* `capture`, the host's record of the reading, goes with the value if it's applied as it came in (see KeypadSpec.onDone).
|
|
44
|
+
*/
|
|
45
|
+
export declare function keypadTakeLaser(v: number, capture?: unknown): boolean;
|
|
33
46
|
/** The value currently typed, or null if none/unreadable (for live previews on the canvas). */
|
|
34
47
|
export declare function keypadTyped(): number | null;
|
|
35
48
|
/** The line under the display: an example to type, "= value", or that it can't be read yet. */
|
|
@@ -43,6 +56,8 @@ export declare function keypadValue(): {
|
|
|
43
56
|
} | {
|
|
44
57
|
error: string;
|
|
45
58
|
};
|
|
59
|
+
/** A value from the host's own keypad (or a laser reading into it): close the keypad and hand it on, as Apply does. */
|
|
60
|
+
export declare function keypadSubmit(v: number, capture?: unknown): void;
|
|
46
61
|
/**
|
|
47
62
|
* Apply: close the keypad and hand the value to whoever opened it — or, if it can't be read, keep the keypad open
|
|
48
63
|
* and say so under the display.
|
package/dist/editor/keypad.js
CHANGED
|
@@ -4,19 +4,28 @@ import { fmtAng, fmtLen, parseLen, parseNum } from '../units';
|
|
|
4
4
|
import { closeKeypad, refreshKeypad } from './ports';
|
|
5
5
|
const kps = sessionState(() => ({ cur: null }));
|
|
6
6
|
export const FRACTIONS = ['1/16', '1/8', '1/4', '3/8', '1/2', '5/8', '3/4', '7/8'];
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Key layouts, phone-style (1 2 3 on top): '⌫' and '( )' are special keys. In lengths the 0 is three keys wide
|
|
9
|
+
* (`keySpan`); the fraction keys put their own space before them, so there's no space key. (A laser reading goes
|
|
10
|
+
* straight into an open keypad: no key for it.)
|
|
11
|
+
*/
|
|
8
12
|
export const keyLayout = (numeric) => numeric
|
|
9
|
-
? ['
|
|
10
|
-
: ['
|
|
13
|
+
? ['1', '2', '3', '⌫', '4', '5', '6', '-', '7', '8', '9', '+', '0', '.', '/', '( )']
|
|
14
|
+
: ['1', '2', '3', '⌫', '4', '5', '6', '"', '7', '8', '9', "'", '0', '.'];
|
|
15
|
+
/** How many columns (of four) a key takes. */
|
|
16
|
+
export const keySpan = (k, numeric) => (k === '0' && !numeric ? 3 : 1);
|
|
11
17
|
export const keypadOpen = () => !!kps.cur;
|
|
12
18
|
export const keypadSpec = () => kps.cur?.spec ?? null;
|
|
13
19
|
export const keypadText = () => kps.cur?.text ?? '';
|
|
14
20
|
export const keypadFresh = () => !!kps.cur?.fresh;
|
|
15
21
|
/** The fraction row shows for lengths in feet and inches, not for degrees or millimetres. */
|
|
16
22
|
export const fractionRowShown = () => !(kps.cur?.spec.numeric || settings.unit === 'mm');
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
/** Open the keypad for `spec`; `host`: the host shows its own keypad for it (see react/hostKeypad.ts). */
|
|
24
|
+
export function keypadStart(spec, host = false) {
|
|
25
|
+
kps.cur = { spec, text: spec.initial || '', fresh: !!spec.selectAll, host };
|
|
19
26
|
}
|
|
27
|
+
/** Whether the open keypad is the host's own. */
|
|
28
|
+
export const keypadOnHost = () => !!kps.cur?.host;
|
|
20
29
|
/** Close the keypad; returns what it was opened with. */
|
|
21
30
|
export function keypadEnd() {
|
|
22
31
|
const spec = kps.cur?.spec ?? null;
|
|
@@ -84,14 +93,25 @@ export function keypadSetReading(v) {
|
|
|
84
93
|
kps.cur.fresh = true;
|
|
85
94
|
kps.cur.error = undefined;
|
|
86
95
|
}
|
|
87
|
-
/**
|
|
88
|
-
|
|
96
|
+
/**
|
|
97
|
+
* A laser reading into an open length keypad. False if this keypad can't take one (degrees, or laser turned off).
|
|
98
|
+
* The host's own keypad can't be typed into from here, so a reading there is the value: it's applied at once.
|
|
99
|
+
* `capture`, the host's record of the reading, goes with the value if it's applied as it came in (see KeypadSpec.onDone).
|
|
100
|
+
*/
|
|
101
|
+
export function keypadTakeLaser(v, capture) {
|
|
89
102
|
const k = kps.cur;
|
|
90
103
|
if (!k || k.spec.laser === false || k.spec.numeric)
|
|
91
104
|
return false;
|
|
105
|
+
if (k.host) {
|
|
106
|
+
keypadSubmit(v, capture);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
92
109
|
keypadSetReading(v);
|
|
110
|
+
k.capture = capture !== undefined ? { of: capture, text: k.text } : undefined;
|
|
93
111
|
return true;
|
|
94
112
|
}
|
|
113
|
+
/** The last reading's record, if the display still shows what it put there. */
|
|
114
|
+
const readingCapture = (k) => (k.capture && k.capture.text === k.text ? k.capture.of : undefined);
|
|
95
115
|
const parse = (k) => (k.spec.numeric ? parseNum(k.text) : parseLen(k.text));
|
|
96
116
|
/** The value currently typed, or null if none/unreadable (for live previews on the canvas). */
|
|
97
117
|
export function keypadTyped() {
|
|
@@ -119,6 +139,16 @@ export function keypadValue() {
|
|
|
119
139
|
const v = kps.cur ? parse(kps.cur) : null;
|
|
120
140
|
return v == null ? { error: 'Enter a length like 12\' 6" or 150.5' } : { v };
|
|
121
141
|
}
|
|
142
|
+
/** A value from the host's own keypad (or a laser reading into it): close the keypad and hand it on, as Apply does. */
|
|
143
|
+
export function keypadSubmit(v, capture) {
|
|
144
|
+
const k = kps.cur;
|
|
145
|
+
if (!k)
|
|
146
|
+
return;
|
|
147
|
+
const done = k.spec.onDone;
|
|
148
|
+
closeKeypad();
|
|
149
|
+
if (done)
|
|
150
|
+
done(v, capture);
|
|
151
|
+
}
|
|
122
152
|
/**
|
|
123
153
|
* Apply: close the keypad and hand the value to whoever opened it — or, if it can't be read, keep the keypad open
|
|
124
154
|
* and say so under the display.
|
|
@@ -133,9 +163,9 @@ export function keypadApply() {
|
|
|
133
163
|
refreshKeypad();
|
|
134
164
|
return;
|
|
135
165
|
}
|
|
136
|
-
const done = k.spec.onDone;
|
|
166
|
+
const done = k.spec.onDone, capture = readingCapture(k);
|
|
137
167
|
closeKeypad();
|
|
138
168
|
if (done)
|
|
139
|
-
done(r.v);
|
|
169
|
+
done(r.v, capture);
|
|
140
170
|
}
|
|
141
171
|
//# sourceMappingURL=keypad.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keypad.js","sourceRoot":"","sources":["../../src/editor/keypad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAmB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"keypad.js","sourceRoot":"","sources":["../../src/editor/keypad.ts"],"names":[],"mappings":"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"}
|