@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallshape.js","sourceRoot":"","sources":["../../src/model/wallshape.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The contextual bar: what fits the tool and selection, the yellow + to measure, and the trash on its own. It's as
|
|
3
|
+
* long as what's in it, centred on the screen — on a phone, unless that would put it under the trash, when it moves
|
|
4
|
+
* just clear of it (and scrolls only if even that leaves too little room). In Annotate on a phone (or a window too
|
|
5
|
+
* short for it under the rail) the + that adds the job's files and measurements has the trash's corner while nothing's
|
|
6
|
+
* selected: selecting anything puts the trash there instead, and letting go brings the + back.
|
|
7
|
+
*/
|
|
2
8
|
export declare function BottomBar({ phone }: {
|
|
3
9
|
phone: boolean;
|
|
4
10
|
}): import("react").JSX.Element;
|
|
5
|
-
/** The
|
|
6
|
-
export declare function
|
|
7
|
-
phone: boolean;
|
|
8
|
-
}): import("react").JSX.Element;
|
|
11
|
+
/** The hint for screen readers: what to do next with the tool or what's picked, read out as it changes. */
|
|
12
|
+
export declare function SpokenHint(): import("react").JSX.Element;
|
package/dist/react/BottomBar.js
CHANGED
|
@@ -1,44 +1,233 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { memo, useRef, useState } from 'react';
|
|
3
|
+
import { Animated, ScrollView, Text, View } from 'react-native';
|
|
3
4
|
import { ed } from '../app/state';
|
|
4
5
|
import { applyCtxAction, barItems, deleteSelection, plusAction, plusLabel, plusVisible } from '../editor/actions';
|
|
5
|
-
import {
|
|
6
|
+
import { addLinks, LINK_PLUS_LABEL, linkPlusVisible, linkSizeVisible, pageLinkSize, setLinkSize, SIZE_STEPS, sizeToStep, stepToSize } from '../editor/linkActions';
|
|
7
|
+
import { afterEdit } from '../app/edit';
|
|
8
|
+
import { LINK_SIDE_IN } from '../model/links';
|
|
9
|
+
import { fmtLen } from '../units';
|
|
10
|
+
import { bar3d, run3d } from '../editor/view3d';
|
|
11
|
+
import { is3d } from '../editor/view3dState';
|
|
12
|
+
import { OPACITY_MIN, OPACITY_STEP, ROTATE_MAX, ROTATE_STEP, setUnderlayOpacity, setUnderlayRotation } from '../editor/project';
|
|
13
|
+
import { pushHistory } from '../model/history';
|
|
14
|
+
import { imageById } from '../model/images';
|
|
15
|
+
import { Slider } from './Slider';
|
|
16
|
+
import { notify, ui, useEditorKey } from './store';
|
|
17
|
+
import { currentHint } from '../editor/status';
|
|
6
18
|
import { hovered } from './Buttons';
|
|
7
19
|
import { Icon } from './Icon';
|
|
8
20
|
import { RichText } from './RichText';
|
|
9
21
|
import { C, FONT, shadow } from './theme';
|
|
10
|
-
|
|
22
|
+
import { Tap, usePopup } from './motion';
|
|
23
|
+
import { createSheet } from './corners';
|
|
24
|
+
/**
|
|
25
|
+
* The contextual bar: what fits the tool and selection, the yellow + to measure, and the trash on its own. It's as
|
|
26
|
+
* long as what's in it, centred on the screen — on a phone, unless that would put it under the trash, when it moves
|
|
27
|
+
* just clear of it (and scrolls only if even that leaves too little room). In Annotate on a phone (or a window too
|
|
28
|
+
* short for it under the rail) the + that adds the job's files and measurements has the trash's corner while nothing's
|
|
29
|
+
* selected: selecting anything puts the trash there instead, and letting go brings the + back.
|
|
30
|
+
*/
|
|
11
31
|
export function BottomBar({ phone }) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
// what's in the bar, and the selected image's opacity and turn (its sliders)
|
|
33
|
+
useEditorKey(() => {
|
|
34
|
+
const u = ed.sel.length === 1 && ed.sel[0].type === 'underlay' ? imageById(ed.sel[0].id) : undefined;
|
|
35
|
+
return [buttonsKey(), plusVisible(), ed.sel.length, u ? u.opacity ?? 0.6 : '', u ? (u.rot ?? 0) + (u.locked ? 'L' : '') : '', linkPlusVisible(), ui.linkFab, linkSizeVisible(), pageLinkSize() ?? ''].join('|');
|
|
36
|
+
});
|
|
37
|
+
// (on a phone only buttons show: a bar that would hold just a label isn't shown at all. The 3D tab measures and
|
|
38
|
+
// deletes nothing: what's tapped there shows its sizes, and what can be done with it from there)
|
|
39
|
+
const items = shown(phone), plus = !is3d() && plusVisible(), trash = !is3d() && ed.sel.length > 0;
|
|
40
|
+
const fab = !trash && (phone || ui.linkFab) && linkPlusVisible(), corner = trash || fab;
|
|
41
|
+
// it scrolls only when its buttons can't all fit (a narrow phone): otherwise a drag on the bar would move it
|
|
42
|
+
const [room, setRoom] = useState(0), [content, setContent] = useState(0), over = content > room + 1;
|
|
43
|
+
return (_jsxs(_Fragment, { children: [(items.length > 0 || plus) && (_jsxs(View, { style: [s.bottom, phone ? s.phoneRow : s.centered], children: [_jsx(ImagePopover, {}), _jsx(LinkSizePopover, {}), phone && _jsx(View, { pointerEvents: "none", style: [s.springL, { flexBasis: corner ? TRASH_ROOM : 0 }] }), _jsxs(View, { testID: "ctxBar", style: s.ctx, children: [_jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, scrollEnabled: over, bounces: false, contentContainerStyle: s.items, style: { flexGrow: 0, flexShrink: 1 }, onLayout: e => setRoom(e.nativeEvent.layout.width), onContentSizeChange: w => setContent(w), children: _jsx(BarButtons, { k: buttonsKey(), phone: phone }) }), plus && (_jsx(Tap, { accessibilityRole: "button", accessibilityLabel: plusLabel(), testID: "addbtn", onPress: plusAction, style: s.add, children: _jsx(Icon, { name: "plus", color: C.dark }) }))] }), phone && _jsx(View, { pointerEvents: "none", style: [s.springR, { flexBasis: corner ? TRASH_ROOM : 0 }] })] })), trash && (_jsx(Tap, { accessibilityRole: "button", accessibilityLabel: "Delete selection", testID: "btnTrash", onPress: deleteSelection, style: s.trash, children: _jsx(Icon, { name: "trash", size: 24, color: "#fff" }) })), fab && (_jsx(Tap, { accessibilityRole: "button", accessibilityLabel: LINK_PLUS_LABEL, testID: "linkFab", onPress: () => { void addLinks(); }, style: [s.trash, s.fab], children: _jsx(Icon, { name: "plus", size: 30, color: C.dark }) }))] }));
|
|
21
44
|
}
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
45
|
+
/** What's in the bar: for the selection, or for what's tapped in the 3D tab. */
|
|
46
|
+
const entries = () => (is3d() ? bar3d() : barItems());
|
|
47
|
+
/**
|
|
48
|
+
* What the bar shows: on a phone, its buttons alone (see buttonsOnly) — except in 3D, where the sizes are the point of
|
|
49
|
+
* tapping something, and nothing else shows them.
|
|
50
|
+
*/
|
|
51
|
+
const shown = (phone) => (phone && !is3d() ? buttonsOnly(entries()) : entries());
|
|
52
|
+
/** What the bar's buttons show: its items (with their states), and which slider is open above it. */
|
|
53
|
+
function buttonsKey() {
|
|
54
|
+
const its = entries();
|
|
55
|
+
return JSON.stringify(its) + '|' + ui.imgPop;
|
|
26
56
|
}
|
|
27
|
-
|
|
57
|
+
/**
|
|
58
|
+
* A phone's bar: the buttons alone — the line saying what's selected and its sizes ("Cabinet 24" L × 34 1/2" H…") takes
|
|
59
|
+
* room a phone hasn't got, and the drawing shows the sizes anyway — with no divider left at an end or doubled up.
|
|
60
|
+
*/
|
|
61
|
+
function buttonsOnly(items) {
|
|
62
|
+
const out = [];
|
|
63
|
+
for (const it of items) {
|
|
64
|
+
if (it !== 'sep' && 'lbl' in it)
|
|
65
|
+
continue;
|
|
66
|
+
if (it === 'sep' && (!out.length || out[out.length - 1] === 'sep'))
|
|
67
|
+
continue;
|
|
68
|
+
out.push(it);
|
|
69
|
+
}
|
|
70
|
+
while (out[out.length - 1] === 'sep')
|
|
71
|
+
out.pop();
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The bar's buttons, drawn again only when what they show changes (`k`, see buttonsKey) — not when the bar itself
|
|
76
|
+
* is, as it measures whether they fit.
|
|
77
|
+
*/
|
|
78
|
+
const BarButtons = memo(function BarButtons({ phone }) {
|
|
79
|
+
return (_jsx(_Fragment, { children: shown(phone).map((it, i) => {
|
|
80
|
+
if (it === 'sep')
|
|
81
|
+
return _jsx(View, { style: s.sep }, 's' + i);
|
|
82
|
+
if ('lbl' in it)
|
|
83
|
+
return _jsx(Text, { style: s.lbl, children: it.lbl }, 'l' + i);
|
|
84
|
+
const fg = it.on ? C.dark : it.locked ? C.red : '#fff';
|
|
85
|
+
return (_jsxs(Tap, { accessibilityRole: "button", accessibilityLabel: it.label, accessibilityState: it.on != null || it.locked != null ? { selected: !!(it.on || it.locked) } : undefined, onPress: e => { if (!(is3d() && run3d(it.act)))
|
|
86
|
+
applyCtxAction(it.act, e.currentTarget); }, style: st => [s.cb, it.on || (it.act === 'imgOpacity' && ui.imgPop === 'opacity') || (it.act === 'imgRotate' && ui.imgPop === 'rotate') || (it.act === 'linkSize' && ui.imgPop === 'tilesize') ? { backgroundColor: 'rgba(255,255,255,0.14)' } : null,
|
|
87
|
+
it.on ? { backgroundColor: '#fff' } : hovered(st) && { backgroundColor: 'rgba(255,255,255,0.08)' }], children: [_jsx(Icon, { name: it.ic, color: fg }), _jsx(Text, { style: [s.cbText, { color: fg }], children: it.label })] }, it.act + i));
|
|
88
|
+
}) }));
|
|
89
|
+
});
|
|
90
|
+
/** Degrees, as the rotation slider shows them: whole, or to the half degree. */
|
|
91
|
+
const fmtDeg = (v) => (Math.round(v * 2) / 2).toString().replace('-', '−') + '°';
|
|
92
|
+
/**
|
|
93
|
+
* The selected image's slider, just above the bar: its opacity, or how far it's turned (Opacity or Rotate in the bar
|
|
94
|
+
* opens and closes it), with Reset to stand a turned one upright again. A locked image can't be turned: its slider
|
|
95
|
+
* goes with the lock.
|
|
96
|
+
*
|
|
97
|
+
* Kept quick on a device: as it's dragged the thumb and the number follow the finger from here (`live`), the image is
|
|
98
|
+
* changed at most once a frame, and only the photos are drawn again (requestImageDraw) — the rest of the editor
|
|
99
|
+
* hears of it once, as it's let go.
|
|
100
|
+
*/
|
|
101
|
+
function ImagePopover() {
|
|
102
|
+
const [live, setLive] = useState(null);
|
|
103
|
+
const pending = useRef(null);
|
|
104
|
+
const now = ed.sel.length === 1 && ed.sel[0].type === 'underlay' ? imageById(ed.sel[0].id) : undefined;
|
|
105
|
+
const kind = ui.imgPop === 'opacity' || ui.imgPop === 'rotate' ? ui.imgPop : null;
|
|
106
|
+
const open = !!kind && !!now && !(kind === 'rotate' && now.locked);
|
|
107
|
+
// (it rises from the bar; as it goes it keeps showing the image it was for)
|
|
108
|
+
const last = useRef(null), pop = usePopup(open, { y: 8 }, 'bottom center');
|
|
109
|
+
if (open)
|
|
110
|
+
last.current = { kind: kind, sel: now };
|
|
111
|
+
if (!pop.present || !last.current)
|
|
112
|
+
return null;
|
|
113
|
+
const { sel } = last.current, rotate = last.current.kind === 'rotate', id = sel.id;
|
|
114
|
+
const apply = (v) => (rotate ? setUnderlayRotation(id, v) : setUnderlayOpacity(id, v / 100));
|
|
115
|
+
const value = live ?? (rotate ? sel.rot ?? 0 : Math.round((sel.opacity ?? 0.6) * 100));
|
|
116
|
+
const change = (v) => {
|
|
117
|
+
setLive(v);
|
|
118
|
+
const p = pending.current;
|
|
119
|
+
if (p) {
|
|
120
|
+
p.v = v;
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
pending.current = { v, frame: requestAnimationFrame(() => { const q = pending.current; pending.current = null; if (q)
|
|
124
|
+
apply(q.v); }) };
|
|
125
|
+
};
|
|
126
|
+
const end = () => {
|
|
127
|
+
const p = pending.current;
|
|
128
|
+
if (p) {
|
|
129
|
+
cancelAnimationFrame(p.frame);
|
|
130
|
+
pending.current = null;
|
|
131
|
+
apply(p.v);
|
|
132
|
+
}
|
|
133
|
+
setLive(null);
|
|
134
|
+
notify();
|
|
135
|
+
};
|
|
136
|
+
const upright = Math.abs(sel.rot ?? 0) < 1e-9;
|
|
137
|
+
return (_jsx(View, { style: s.popWrap, pointerEvents: "box-none", children: _jsxs(Animated.View, { style: [s.pop, rotate && s.popReset, pop.style], pointerEvents: open ? 'auto' : 'none', testID: open ? (rotate ? 'rotatePop' : 'opacityPop') : undefined, children: [_jsx(Text, { style: s.popLabel, children: rotate ? 'Rotate' : 'Opacity' }), _jsx(View, { style: { flex: 1 }, children: rotate
|
|
138
|
+
? _jsx(Slider, { label: "Image rotation", testID: "rotateSlider", value: value, min: -ROTATE_MAX, max: ROTATE_MAX, step: ROTATE_STEP, format: fmtDeg, onStart: pushHistory, onChange: change, onEnd: end })
|
|
139
|
+
: _jsx(Slider, { label: "Image opacity", testID: "opacitySlider", value: value, min: OPACITY_MIN, max: 100, step: OPACITY_STEP, onStart: pushHistory, onChange: change, onEnd: end }) }), _jsx(Text, { style: s.popValue, children: rotate ? fmtDeg(value) : value + '%' }), rotate && (_jsx(Tap, { feel: "dim", accessibilityRole: "button", accessibilityLabel: "Reset rotation", accessibilityState: { disabled: upright }, disabled: upright, testID: "rotateReset", onPress: () => { pushHistory(); setUnderlayRotation(id, 0); notify(); }, style: [s.reset, upright && { opacity: 0.4 }], children: _jsx(Text, { style: s.resetText, children: "Reset" }) }))] }) }));
|
|
140
|
+
}
|
|
141
|
+
/** A tile size from the slider, as it's kept: to the quarter inch. */
|
|
142
|
+
const tileSize = (step) => Math.round(stepToSize(step) * 4) / 4;
|
|
143
|
+
/**
|
|
144
|
+
* The tiles' size, just above the bar (Size in it opens and closes it): one size for every tile on the page, on the drawing
|
|
145
|
+
* (they zoom with the plan and print at it). Kept quick on a device, as ImagePopover is: the thumb and the number follow
|
|
146
|
+
* the finger from here, the tiles are sized at most once a frame, and the rest of the editor hears of it as it's let go.
|
|
147
|
+
*/
|
|
148
|
+
function LinkSizePopover() {
|
|
149
|
+
const [live, setLive] = useState(null);
|
|
150
|
+
// the number's width as it was laid out, held while a drag goes on (the track ends at it: as long as the number is,
|
|
151
|
+
// no longer — but never narrower mid-drag, which would move the track under the finger)
|
|
152
|
+
const [numW, setNumW] = useState(0);
|
|
153
|
+
const pending = useRef(null);
|
|
154
|
+
// (opened from the bar's Size, as an image's sliders are; a press on the drawing closes it)
|
|
155
|
+
const size = ui.imgPop === 'tilesize' && linkSizeVisible() ? pageLinkSize() : null, open = size != null;
|
|
156
|
+
// (as it goes it keeps showing the size it had)
|
|
157
|
+
const last = useRef(size ?? LINK_SIDE_IN), pop = usePopup(open, { y: 8 }, 'bottom center');
|
|
158
|
+
if (size != null)
|
|
159
|
+
last.current = size;
|
|
160
|
+
if (!pop.present)
|
|
161
|
+
return null;
|
|
162
|
+
const value = live ?? sizeToStep(last.current);
|
|
163
|
+
const change = (v) => {
|
|
164
|
+
setLive(v);
|
|
165
|
+
const p = pending.current;
|
|
166
|
+
if (p) {
|
|
167
|
+
p.v = v;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
pending.current = { v, frame: requestAnimationFrame(() => { const q = pending.current; pending.current = null; if (q)
|
|
171
|
+
setLinkSize(tileSize(q.v)); }) };
|
|
172
|
+
};
|
|
173
|
+
const end = () => {
|
|
174
|
+
const p = pending.current;
|
|
175
|
+
if (p) {
|
|
176
|
+
cancelAnimationFrame(p.frame);
|
|
177
|
+
pending.current = null;
|
|
178
|
+
setLinkSize(tileSize(p.v));
|
|
179
|
+
}
|
|
180
|
+
setLive(null);
|
|
181
|
+
afterEdit();
|
|
182
|
+
notify();
|
|
183
|
+
};
|
|
184
|
+
return (_jsx(View, { style: s.popWrap, pointerEvents: "box-none", children: _jsxs(Animated.View, { style: [s.pop, pop.style], pointerEvents: open ? 'auto' : 'none', testID: open ? 'tileSizePop' : undefined, children: [_jsx(Text, { style: s.popLabel, children: "Tile size" }), _jsx(View, { style: { flex: 1 }, children: _jsx(Slider, { label: "Tile size", testID: "tileSizeSlider", value: value, min: 0, max: SIZE_STEPS, step: 1, format: v => fmtLen(tileSize(v)), onStart: pushHistory, onChange: change, onEnd: end }) }), _jsx(Text, { onLayout: e => { if (live == null)
|
|
185
|
+
setNumW(e.nativeEvent.layout.width); }, style: [s.popValue, s.sizeValue, live != null && numW ? { minWidth: numW } : null], children: fmtLen(live != null ? tileSize(live) : last.current) })] }) }));
|
|
186
|
+
}
|
|
187
|
+
/** The hint for screen readers: what to do next with the tool or what's picked, read out as it changes. */
|
|
188
|
+
export function SpokenHint() {
|
|
189
|
+
useEditorKey(currentHint);
|
|
190
|
+
return (_jsx(View, { style: s.srOnly, accessibilityLiveRegion: "polite", nativeID: "hint", children: _jsx(RichText, { html: currentHint() }) }));
|
|
191
|
+
}
|
|
192
|
+
/** What the trash (or Annotate's +, in its place) takes at the right of a phone's bar row: its 60 pt, and the 12 between them. */
|
|
193
|
+
const TRASH_ROOM = 72;
|
|
194
|
+
const s = createSheet({
|
|
28
195
|
bottom: { pointerEvents: 'box-none', position: 'absolute', bottom: 14, zIndex: 24, flexDirection: 'row', alignItems: 'center' },
|
|
29
196
|
centered: { left: 90, right: 90, justifyContent: 'center' },
|
|
30
|
-
|
|
197
|
+
phoneRow: { left: 12, right: 12 },
|
|
198
|
+
springL: { flexGrow: 1, flexShrink: 1000 },
|
|
199
|
+
springR: { flexGrow: 1, flexShrink: 0 },
|
|
200
|
+
// the same 6 all round, and corners of the buttons' radius plus 6: the end buttons sit concentric in the bar
|
|
201
|
+
// (it gives way when its buttons don't fit — React Native doesn't shrink a view unless told — and then scrolls)
|
|
202
|
+
ctx: { flexDirection: 'row', alignItems: 'center', backgroundColor: C.g2, borderRadius: 27 + 6, minHeight: 54 + 12, padding: 6, maxWidth: '100%', flexShrink: 1, ...shadow },
|
|
31
203
|
items: { flexDirection: 'row', alignItems: 'center', gap: 2 },
|
|
32
204
|
cb: { minWidth: 58, height: 54, borderRadius: 27, alignItems: 'center', justifyContent: 'center', gap: 3, paddingHorizontal: 8 },
|
|
33
205
|
cbText: { fontFamily: FONT, fontSize: 10.5, fontWeight: '500' },
|
|
34
206
|
sep: { width: 1, height: 32, backgroundColor: C.g3, marginHorizontal: 4 },
|
|
35
207
|
lbl: { fontFamily: FONT, fontSize: 12, color: C.lg1, paddingHorizontal: 10 },
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
208
|
+
// the slider sits just above the bar, centred on it
|
|
209
|
+
popWrap: { position: 'absolute', left: 0, right: 0, bottom: 76, alignItems: 'center' },
|
|
210
|
+
pop: { width: 400, maxWidth: '100%', flexDirection: 'row', alignItems: 'center', gap: 10, backgroundColor: C.g2, borderRadius: 999, paddingHorizontal: 16, paddingVertical: 4, ...shadow },
|
|
211
|
+
popLabel: { fontFamily: FONT, fontSize: 12.5, fontWeight: '600', color: C.lg2 },
|
|
212
|
+
popValue: { fontFamily: FONT, fontSize: 12.5, fontWeight: '600', color: '#fff', width: 48, textAlign: 'right' },
|
|
213
|
+
// (a length: as long as it is, the track running up to it)
|
|
214
|
+
sizeValue: { width: 'auto', minWidth: 0 },
|
|
215
|
+
// back to upright: a pill at the end of the rotation slider, concentric with it — the same 4 above, below and beside
|
|
216
|
+
// it, and the slider's radius (22, half its 44) less that 4 for its own
|
|
217
|
+
popReset: { paddingRight: 4 },
|
|
218
|
+
reset: { height: 36, paddingHorizontal: 16, borderRadius: 18, backgroundColor: C.g3, justifyContent: 'center' },
|
|
219
|
+
resetText: { fontFamily: FONT, fontSize: 12.5, fontWeight: '600', color: '#fff' },
|
|
220
|
+
// (smaller than a button, so 3 in from the bar's end as well as from its top and bottom: concentric too)
|
|
221
|
+
add: { width: 48, height: 48, borderRadius: 24, backgroundColor: C.yellow, alignItems: 'center', justifyContent: 'center', marginLeft: 4, marginRight: 3 },
|
|
222
|
+
// BOLDR's delete FAB (the annotation editors' DeleteFab): a 60 pt solid red circle 12 from the right and 14 from the
|
|
223
|
+
// bottom, level with the bar beside it, on every screen size
|
|
224
|
+
trash: {
|
|
225
|
+
position: 'absolute', right: 12, bottom: 14, zIndex: 24, width: 60, height: 60, borderRadius: 30,
|
|
226
|
+
backgroundColor: '#FD2525', alignItems: 'center', justifyContent: 'center',
|
|
227
|
+
boxShadow: '0 2.5px 2.5px rgba(0,0,0,0.15)', elevation: 4,
|
|
228
|
+
},
|
|
42
229
|
srOnly: { position: 'absolute', width: 1, height: 1, overflow: 'hidden', opacity: 0 },
|
|
230
|
+
// BOLDR's add FAB, in the trash's place: yellow, its + dark (white on the yellow is too faint)
|
|
231
|
+
fab: { backgroundColor: C.yellow },
|
|
43
232
|
});
|
|
44
233
|
//# sourceMappingURL=BottomBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomBar.js","sourceRoot":"","sources":["../../src/react/BottomBar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BottomBar.js","sourceRoot":"","sources":["../../src/react/BottomBar.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/Buttons.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
2
|
import { type PressableStateCallbackType, type StyleProp, type ViewStyle } from 'react-native';
|
|
3
3
|
/** A round icon button (the top bar's circles). */
|
|
4
4
|
export declare function CircleButton({ icon, label, onPress, color, iconColor, size, testID }: {
|
|
@@ -11,7 +11,7 @@ export declare function CircleButton({ icon, label, onPress, color, iconColor, s
|
|
|
11
11
|
testID?: string;
|
|
12
12
|
}): import("react").JSX.Element;
|
|
13
13
|
/** A rounded pill button: yellow for the main action, grey otherwise. */
|
|
14
|
-
export declare function Pill({ label, onPress, children, kind, style, testID, accessibilityLabel }: {
|
|
14
|
+
export declare function Pill({ label, onPress, children, kind, style, testID, accessibilityLabel, disabled }: {
|
|
15
15
|
label?: string;
|
|
16
16
|
onPress: () => void;
|
|
17
17
|
children?: ReactNode;
|
|
@@ -19,6 +19,17 @@ export declare function Pill({ label, onPress, children, kind, style, testID, ac
|
|
|
19
19
|
style?: StyleProp<ViewStyle>;
|
|
20
20
|
testID?: string;
|
|
21
21
|
accessibilityLabel?: string;
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
}): import("react").JSX.Element;
|
|
24
|
+
/**
|
|
25
|
+
* BOLDR's on/off toggle: a grey track with its knob on the left when off, green with the knob on the right when on.
|
|
26
|
+
* As on Apple's switches, pressing it in stretches the knob toward the side it's about to go (to the right when off,
|
|
27
|
+
* to the left when on); letting go, the knob glides across, rounding up again, as the track fades (react/motion.tsx).
|
|
28
|
+
*/
|
|
29
|
+
export declare function Toggle({ label, value, onChange }: {
|
|
30
|
+
label: string;
|
|
31
|
+
value: boolean;
|
|
32
|
+
onChange: () => void;
|
|
22
33
|
}): import("react").JSX.Element;
|
|
23
34
|
export declare function Row({ children, gap, style }: {
|
|
24
35
|
children: ReactNode;
|
package/dist/react/Buttons.js
CHANGED
|
@@ -1,23 +1,55 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Animated, Pressable, Text, View } from 'react-native';
|
|
3
4
|
import { Icon } from './Icon';
|
|
5
|
+
import { Tap, TOGGLE_EASE, TOGGLE_MS, TOGGLE_PRESS_MS, usePress, useToggleEased } from './motion';
|
|
4
6
|
import { C, FONT, shadow } from './theme';
|
|
7
|
+
import { createSheet } from './corners';
|
|
5
8
|
/** A round icon button (the top bar's circles). */
|
|
6
9
|
export function CircleButton({ icon, label, onPress, color = C.g3, iconColor = '#fff', size = 46, testID }) {
|
|
7
|
-
return (_jsx(
|
|
10
|
+
return (_jsx(Tap, { accessibilityRole: "button", accessibilityLabel: label, testID: testID, onPress: onPress, style: [s.circle, { width: size, height: size, backgroundColor: color }], children: _jsx(Icon, { name: icon, color: iconColor }) }));
|
|
8
11
|
}
|
|
9
12
|
/** A rounded pill button: yellow for the main action, grey otherwise. */
|
|
10
|
-
export function Pill({ label, onPress, children, kind = 'yellow', style, testID, accessibilityLabel }) {
|
|
13
|
+
export function Pill({ label, onPress, children, kind = 'yellow', style, testID, accessibilityLabel, disabled }) {
|
|
11
14
|
const bg = kind === 'yellow' ? C.yellow : kind === 'grey' ? C.g2 : C.g1, fg = kind === 'yellow' ? C.dark : '#fff';
|
|
12
|
-
return (_jsxs(
|
|
15
|
+
return (_jsxs(Tap, { accessibilityRole: "button", accessibilityLabel: accessibilityLabel ?? label, accessibilityState: { disabled: !!disabled }, testID: testID, onPress: onPress, disabled: disabled, style: [s.pill, { backgroundColor: bg }, disabled && { opacity: 0.7 }, style], children: [children, label ? _jsx(Text, { style: [s.pillText, { color: fg }], children: label }) : null] }));
|
|
13
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* BOLDR's on/off toggle: a grey track with its knob on the left when off, green with the knob on the right when on.
|
|
19
|
+
* As on Apple's switches, pressing it in stretches the knob toward the side it's about to go (to the right when off,
|
|
20
|
+
* to the left when on); letting go, the knob glides across, rounding up again, as the track fades (react/motion.tsx).
|
|
21
|
+
*/
|
|
22
|
+
export function Toggle({ label, value, onChange }) {
|
|
23
|
+
// pressed in it stretches (unhurried, so a quick tap still shows it); let go, it rounds up again over the whole glide
|
|
24
|
+
const { v: t, go } = useToggleEased(value), press = usePress(TOGGLE_PRESS_MS, TOGGLE_MS, TOGGLE_EASE, true);
|
|
25
|
+
// the knob sets off at once; the setting changes a frame later, once the glide is with the native driver (what it
|
|
26
|
+
// sets off — the menu drawn again, the drawing for a layer or a snap — then can't hold it up)
|
|
27
|
+
const flip = () => go(!value, onChange);
|
|
28
|
+
const travel = TOGGLE.w - TOGGLE.k - 2 * TOGGLE.pad;
|
|
29
|
+
// the stretch grows from the knob's outer edge: rightward from the left, leftward from the right. Drawn as a scale
|
|
30
|
+
// and a slide (what the native driver can play): the knob, k wide, scaled about its middle to k + stretch, its left
|
|
31
|
+
// edge at t × (travel − stretch) — so moved there plus half the stretch
|
|
32
|
+
const { fill, x, sx } = useMemo(() => {
|
|
33
|
+
const stretch = Animated.multiply(press.v, TOGGLE.stretch);
|
|
34
|
+
return {
|
|
35
|
+
fill: t.interpolate({ inputRange: [0, 1], outputRange: [C.g4, C.on] }),
|
|
36
|
+
x: Animated.add(Animated.subtract(Animated.multiply(t, travel), Animated.multiply(t, stretch)), Animated.multiply(stretch, 0.5)),
|
|
37
|
+
sx: Animated.add(1, Animated.multiply(press.v, TOGGLE.stretch / TOGGLE.k)),
|
|
38
|
+
};
|
|
39
|
+
}, [t, press.v, travel]);
|
|
40
|
+
return (_jsx(Pressable, { accessibilityRole: "switch", accessibilityLabel: label, accessibilityState: { checked: value }, "aria-checked": value, hitSlop: 6, onPressIn: press.onPressIn, onPressOut: press.onPressOut, onPress: flip, children: _jsx(Animated.View, { style: [s.track, { backgroundColor: fill }], children: _jsx(Animated.View, { style: [s.knob, { transform: [{ translateX: x }, { scaleX: sx }] }] }) }) }));
|
|
41
|
+
}
|
|
42
|
+
/** The Figma's 69 × 36 toggle (30 knob), scaled to the menus */
|
|
43
|
+
const TOGGLE = { w: 48, h: 25, k: 21, pad: 2, stretch: 6 };
|
|
14
44
|
export function Row({ children, gap = 8, style }) {
|
|
15
45
|
return _jsx(View, { style: [{ flexDirection: 'row', alignItems: 'center', gap }, style], children: children });
|
|
16
46
|
}
|
|
17
|
-
const s =
|
|
47
|
+
const s = createSheet({
|
|
18
48
|
circle: { borderRadius: 999, alignItems: 'center', justifyContent: 'center', borderWidth: 1, borderColor: 'rgba(255,255,255,0.16)', ...shadow },
|
|
19
49
|
pill: { height: 46, minWidth: 64, paddingHorizontal: 18, borderRadius: 24, flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 8, ...shadow },
|
|
20
50
|
pillText: { fontFamily: FONT, fontWeight: '600', fontSize: 15 },
|
|
51
|
+
track: { width: TOGGLE.w, height: TOGGLE.h, borderRadius: 100, padding: TOGGLE.pad, justifyContent: 'center', alignItems: 'flex-start', flexShrink: 0 },
|
|
52
|
+
knob: { width: TOGGLE.k, height: TOGGLE.k, borderRadius: 100, backgroundColor: '#fff', boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.2)' },
|
|
21
53
|
});
|
|
22
54
|
/** Whether a Pressable is under the mouse (react-native-web adds `hovered`; devices without a mouse never are). */
|
|
23
55
|
export const hovered = (state) => !!state.hovered;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Buttons.js","sourceRoot":"","sources":["../../src/react/Buttons.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Buttons.js","sourceRoot":"","sources":["../../src/react/Buttons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { CadSync } from '../data/sync';
|
|
3
|
+
import { type CadSaveState } from './saving';
|
|
3
4
|
import type { SkiaFonts } from '../skia/SkiaDrawCtx';
|
|
5
|
+
import { type HostKeypad, type MeasurementList } from './hostKeypad';
|
|
6
|
+
import { type CadLinks } from '../editor/links';
|
|
4
7
|
export interface CadEditorProps {
|
|
5
8
|
/** Back to the host (otherwise the back button opens the project's pages) */
|
|
6
9
|
onBack?: () => void;
|
|
7
|
-
/**
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The host's own buttons in the top bar (e.g. Bluetooth status). As a function it's given the size of the bar's
|
|
12
|
+
* round buttons (42 pt on a phone, 46 otherwise), to draw its own the same size.
|
|
13
|
+
*/
|
|
14
|
+
headerRight?: ReactNode | ((buttonSize: number) => ReactNode);
|
|
9
15
|
/** How to pick a photo or plan to trace (a data URL and its size); in a browser a file picker is the default. */
|
|
10
16
|
pickImage?: () => Promise<{
|
|
11
17
|
dataUrl: string;
|
|
@@ -28,11 +34,48 @@ export interface CadEditorProps {
|
|
|
28
34
|
readOnly?: boolean;
|
|
29
35
|
/** On a device: the typefaces to draw text on the plan with, by weight (default: the device's own sans-serif). */
|
|
30
36
|
fonts?: SkiaFonts;
|
|
37
|
+
/**
|
|
38
|
+
* How to pick a project file (.boldr.json) to open from the ⋯ menu — its text, null if none was picked. On a device
|
|
39
|
+
* the host passes its own (a document picker); in a browser it's a file picker.
|
|
40
|
+
*/
|
|
41
|
+
pickTextFile?: () => Promise<string | null>;
|
|
31
42
|
/** How exported files (PDF, DXF, project) reach the person, e.g. a share sheet on a device; in a browser they download. */
|
|
32
43
|
saveFile?: (name: string, mime: string, data: string) => void;
|
|
44
|
+
/**
|
|
45
|
+
* Save only when the person presses Save (BOLDR's annotation behaviour), instead of as they draw. Closing the editor
|
|
46
|
+
* then drops unsaved edits: warn with onSaveState, or save on the way out with saveCadDrawing. Needs `sync`.
|
|
47
|
+
*/
|
|
48
|
+
manualSave?: boolean;
|
|
49
|
+
/** With manualSave: 'saved', 'dirty' (unsaved edits), 'saving' or 'error' (the last save failed), as it changes. */
|
|
50
|
+
onSaveState?: (state: CadSaveState) => void;
|
|
51
|
+
/**
|
|
52
|
+
* On a phone, the host's own keypad for lengths and angles (BOLDR's measurement keypads) instead of the editor's:
|
|
53
|
+
* called with what's asked for when a keypad opens, and with null when the editor closes it (see hostKeypad.ts).
|
|
54
|
+
* Tablets and browsers keep the editor's keypad.
|
|
55
|
+
*/
|
|
56
|
+
keypad?: HostKeypad;
|
|
57
|
+
/**
|
|
58
|
+
* The job's files and measurements, to link on the drawing (Annotate's +) and to drive lines with (Draft): how to
|
|
59
|
+
* pick them, say what they are now, open them, and change or save measurements (see editor/links.ts). Without it
|
|
60
|
+
* there's nothing to link. Pass the same object for as long as the drawing is open.
|
|
61
|
+
*/
|
|
62
|
+
links?: CadLinks;
|
|
63
|
+
/**
|
|
64
|
+
* The job's measurements on the editor keypad's page of them (a line's length, a dimension's angle), drawn by the
|
|
65
|
+
* host in place of the editor's grid, so they look as they do everywhere else in it (BOLDR: its group headers and
|
|
66
|
+
* measurement tiles). Rendered from when the page is first shown, and again when what it's given changes: its kind,
|
|
67
|
+
* its size, and what to call with the measurement picked (see hostKeypad.ts). Return the list's element
|
|
68
|
+
* (`page => <JobList {...page} />`) and keep what it fetches inside it.
|
|
69
|
+
*
|
|
70
|
+
* The page is there when `links` offers the job's measurements (`measurements` or `pickMeasurement`; the editor
|
|
71
|
+
* calls neither for this page when it's the host's). A touch screen always swipes to it. A desktop shows it from
|
|
72
|
+
* Select from list only when the host has no `pickMeasurement`, which is its own drawer instead. A phone with a
|
|
73
|
+
* `keypad` of the host's own doesn't use it: that keypad has its own list.
|
|
74
|
+
*/
|
|
75
|
+
measurementList?: MeasurementList;
|
|
33
76
|
}
|
|
34
77
|
/**
|
|
35
78
|
* The layout editor as a React Native component: the plan canvas with its chrome. One per screen: mounting starts a
|
|
36
79
|
* new editing session (the drawing, tools and selection start fresh), unmounting saves.
|
|
37
80
|
*/
|
|
38
|
-
export declare function CadEditor({ onBack, headerRight, pickImage, theme: hostTheme, sync, units, devTools, readOnly, fonts, saveFile }: CadEditorProps): import("react").JSX.Element;
|
|
81
|
+
export declare function CadEditor({ onBack, headerRight, pickImage, pickTextFile, theme: hostTheme, sync, units, devTools, readOnly, fonts, saveFile, manualSave, onSaveState, keypad, links, measurementList }: CadEditorProps): import("react").JSX.Element;
|