@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.
Files changed (547) hide show
  1. package/README.md +81 -9
  2. package/dist/app/edit.d.ts +12 -1
  3. package/dist/app/edit.js +96 -11
  4. package/dist/app/edit.js.map +1 -1
  5. package/dist/app/state.d.ts +31 -4
  6. package/dist/app/state.js +31 -2
  7. package/dist/app/state.js.map +1 -1
  8. package/dist/data/memory.d.ts +5 -0
  9. package/dist/data/memory.js +2 -2
  10. package/dist/data/memory.js.map +1 -1
  11. package/dist/data/provider.d.ts +19 -7
  12. package/dist/data/sync.d.ts +7 -2
  13. package/dist/data/sync.js +115 -64
  14. package/dist/data/sync.js.map +1 -1
  15. package/dist/editor/actions.d.ts +1 -2
  16. package/dist/editor/actions.js +391 -113
  17. package/dist/editor/actions.js.map +1 -1
  18. package/dist/editor/confirm.d.ts +23 -0
  19. package/dist/editor/confirm.js +35 -0
  20. package/dist/editor/confirm.js.map +1 -0
  21. package/dist/editor/elevation.d.ts +191 -90
  22. package/dist/editor/elevation.js +812 -616
  23. package/dist/editor/elevation.js.map +1 -1
  24. package/dist/editor/face.d.ts +73 -0
  25. package/dist/editor/face.js +269 -0
  26. package/dist/editor/face.js.map +1 -0
  27. package/dist/editor/files.d.ts +6 -0
  28. package/dist/editor/files.js +50 -4
  29. package/dist/editor/files.js.map +1 -1
  30. package/dist/editor/gestures.d.ts +18 -3
  31. package/dist/editor/gestures.js +145 -30
  32. package/dist/editor/gestures.js.map +1 -1
  33. package/dist/editor/keypad.d.ts +19 -4
  34. package/dist/editor/keypad.js +39 -9
  35. package/dist/editor/keypad.js.map +1 -1
  36. package/dist/editor/keys.js +36 -4
  37. package/dist/editor/keys.js.map +1 -1
  38. package/dist/editor/laser.d.ts +20 -4
  39. package/dist/editor/laser.js +104 -21
  40. package/dist/editor/laser.js.map +1 -1
  41. package/dist/editor/linkActions.d.ts +49 -0
  42. package/dist/editor/linkActions.js +210 -0
  43. package/dist/editor/linkActions.js.map +1 -0
  44. package/dist/editor/linkFollow.d.ts +2 -0
  45. package/dist/editor/linkFollow.js +53 -0
  46. package/dist/editor/linkFollow.js.map +1 -0
  47. package/dist/editor/linkWrite.d.ts +13 -0
  48. package/dist/editor/linkWrite.js +84 -0
  49. package/dist/editor/linkWrite.js.map +1 -0
  50. package/dist/editor/links.d.ts +84 -0
  51. package/dist/editor/links.js +130 -0
  52. package/dist/editor/links.js.map +1 -0
  53. package/dist/editor/markup.d.ts +29 -3
  54. package/dist/editor/markup.js +95 -10
  55. package/dist/editor/markup.js.map +1 -1
  56. package/dist/editor/mode.d.ts +40 -2
  57. package/dist/editor/mode.js +71 -4
  58. package/dist/editor/mode.js.map +1 -1
  59. package/dist/editor/ports.d.ts +36 -6
  60. package/dist/editor/ports.js +10 -1
  61. package/dist/editor/ports.js.map +1 -1
  62. package/dist/editor/project.d.ts +38 -6
  63. package/dist/editor/project.js +167 -27
  64. package/dist/editor/project.js.map +1 -1
  65. package/dist/editor/selection.d.ts +10 -0
  66. package/dist/editor/selection.js +62 -8
  67. package/dist/editor/selection.js.map +1 -1
  68. package/dist/editor/status.js +3 -0
  69. package/dist/editor/status.js.map +1 -1
  70. package/dist/editor/tooltips.d.ts +5 -0
  71. package/dist/editor/tooltips.js +48 -0
  72. package/dist/editor/tooltips.js.map +1 -0
  73. package/dist/editor/view3d.d.ts +17 -0
  74. package/dist/editor/view3d.js +135 -0
  75. package/dist/editor/view3d.js.map +1 -0
  76. package/dist/editor/view3dState.d.ts +39 -0
  77. package/dist/editor/view3dState.js +44 -0
  78. package/dist/editor/view3dState.js.map +1 -0
  79. package/dist/export/dxf.js +1 -1
  80. package/dist/export/dxf.js.map +1 -1
  81. package/dist/export/pdf.js +17 -12
  82. package/dist/export/pdf.js.map +1 -1
  83. package/dist/export/plan.d.ts +23 -6
  84. package/dist/export/plan.js +127 -44
  85. package/dist/export/plan.js.map +1 -1
  86. package/dist/index.d.ts +5 -0
  87. package/dist/index.js +2 -0
  88. package/dist/index.js.map +1 -1
  89. package/dist/model/constraints.js +15 -4
  90. package/dist/model/constraints.js.map +1 -1
  91. package/dist/model/demo.js +3 -3
  92. package/dist/model/demo.js.map +1 -1
  93. package/dist/model/elevation.d.ts +6 -9
  94. package/dist/model/elevation.js +5 -13
  95. package/dist/model/elevation.js.map +1 -1
  96. package/dist/model/faces.d.ts +58 -0
  97. package/dist/model/faces.js +197 -0
  98. package/dist/model/faces.js.map +1 -0
  99. package/dist/model/facesolve.d.ts +72 -0
  100. package/dist/model/facesolve.js +369 -0
  101. package/dist/model/facesolve.js.map +1 -0
  102. package/dist/model/history.d.ts +3 -2
  103. package/dist/model/history.js +17 -11
  104. package/dist/model/history.js.map +1 -1
  105. package/dist/model/images.d.ts +18 -0
  106. package/dist/model/images.js +26 -0
  107. package/dist/model/images.js.map +1 -0
  108. package/dist/model/links.d.ts +46 -0
  109. package/dist/model/links.js +73 -0
  110. package/dist/model/links.js.map +1 -0
  111. package/dist/model/markup.d.ts +46 -0
  112. package/dist/model/markup.js +71 -0
  113. package/dist/model/markup.js.map +1 -0
  114. package/dist/model/measurement.d.ts +11 -0
  115. package/dist/model/measurement.js +24 -0
  116. package/dist/model/measurement.js.map +1 -0
  117. package/dist/model/openings.d.ts +4 -0
  118. package/dist/model/openings.js +4 -0
  119. package/dist/model/openings.js.map +1 -1
  120. package/dist/model/planGeom.d.ts +72 -2
  121. package/dist/model/planGeom.js +184 -10
  122. package/dist/model/planGeom.js.map +1 -1
  123. package/dist/model/project.js +3 -2
  124. package/dist/model/project.js.map +1 -1
  125. package/dist/model/projectfile.js +2 -1
  126. package/dist/model/projectfile.js.map +1 -1
  127. package/dist/model/rooms.js +2 -2
  128. package/dist/model/rooms.js.map +1 -1
  129. package/dist/model/settings.d.ts +6 -0
  130. package/dist/model/settings.js +2 -2
  131. package/dist/model/settings.js.map +1 -1
  132. package/dist/model/sketch.d.ts +14 -0
  133. package/dist/model/sketch.js +143 -24
  134. package/dist/model/sketch.js.map +1 -1
  135. package/dist/model/smooth.d.ts +6 -0
  136. package/dist/model/smooth.js +52 -0
  137. package/dist/model/smooth.js.map +1 -0
  138. package/dist/model/store.d.ts +12 -0
  139. package/dist/model/store.js +35 -3
  140. package/dist/model/store.js.map +1 -1
  141. package/dist/model/types.d.ts +173 -8
  142. package/dist/model/wallfaces.d.ts +32 -0
  143. package/dist/model/wallfaces.js +133 -20
  144. package/dist/model/wallfaces.js.map +1 -1
  145. package/dist/model/wallshape.d.ts +15 -0
  146. package/dist/model/wallshape.js +89 -0
  147. package/dist/model/wallshape.js.map +1 -0
  148. package/dist/react/BottomBar.d.ts +9 -5
  149. package/dist/react/BottomBar.js +213 -24
  150. package/dist/react/BottomBar.js.map +1 -1
  151. package/dist/react/Buttons.d.ts +13 -2
  152. package/dist/react/Buttons.js +37 -5
  153. package/dist/react/Buttons.js.map +1 -1
  154. package/dist/react/CadEditor.d.ts +46 -3
  155. package/dist/react/CadEditor.js +77 -20
  156. package/dist/react/CadEditor.js.map +1 -1
  157. package/dist/react/ConfirmSheet.d.ts +4 -0
  158. package/dist/react/ConfirmSheet.js +31 -0
  159. package/dist/react/ConfirmSheet.js.map +1 -0
  160. package/dist/react/ConflictSheet.d.ts +2 -1
  161. package/dist/react/ConflictSheet.js +16 -8
  162. package/dist/react/ConflictSheet.js.map +1 -1
  163. package/dist/react/Drawer.d.ts +8 -2
  164. package/dist/react/Drawer.js +167 -38
  165. package/dist/react/Drawer.js.map +1 -1
  166. package/dist/react/Duck.d.ts +13 -0
  167. package/dist/react/Duck.js +45 -0
  168. package/dist/react/Duck.js.map +1 -0
  169. package/dist/react/Empty3D.d.ts +2 -0
  170. package/dist/react/Empty3D.js +39 -0
  171. package/dist/react/Empty3D.js.map +1 -0
  172. package/dist/react/FitScroll.d.ts +6 -0
  173. package/dist/react/FitScroll.js +14 -0
  174. package/dist/react/FitScroll.js.map +1 -0
  175. package/dist/react/Icon.native.d.ts +6 -0
  176. package/dist/react/Icon.native.js +4 -0
  177. package/dist/react/Icon.native.js.map +1 -1
  178. package/dist/react/Icon.web.d.ts +6 -0
  179. package/dist/react/Icon.web.js +4 -0
  180. package/dist/react/Icon.web.js.map +1 -1
  181. package/dist/react/KeypadSheet.d.ts +9 -2
  182. package/dist/react/KeypadSheet.js +174 -42
  183. package/dist/react/KeypadSheet.js.map +1 -1
  184. package/dist/react/LaserTray.js +8 -5
  185. package/dist/react/LaserTray.js.map +1 -1
  186. package/dist/react/MarkupPanel.d.ts +8 -0
  187. package/dist/react/MarkupPanel.js +67 -0
  188. package/dist/react/MarkupPanel.js.map +1 -0
  189. package/dist/react/PageThumb.native.d.ts +7 -2
  190. package/dist/react/PageThumb.native.js +19 -7
  191. package/dist/react/PageThumb.native.js.map +1 -1
  192. package/dist/react/PageThumb.web.d.ts +3 -2
  193. package/dist/react/PageThumb.web.js +4 -4
  194. package/dist/react/PageThumb.web.js.map +1 -1
  195. package/dist/react/PlanCanvas.native.d.ts +1 -1
  196. package/dist/react/PlanCanvas.native.js +134 -36
  197. package/dist/react/PlanCanvas.native.js.map +1 -1
  198. package/dist/react/PlanCanvas.web.js +16 -5
  199. package/dist/react/PlanCanvas.web.js.map +1 -1
  200. package/dist/react/Popovers.d.ts +12 -6
  201. package/dist/react/Popovers.js +53 -26
  202. package/dist/react/Popovers.js.map +1 -1
  203. package/dist/react/Rail.d.ts +24 -0
  204. package/dist/react/Rail.js +324 -34
  205. package/dist/react/Rail.js.map +1 -1
  206. package/dist/react/ShapeMenu.d.ts +7 -0
  207. package/dist/react/ShapeMenu.js +58 -0
  208. package/dist/react/ShapeMenu.js.map +1 -0
  209. package/dist/react/Sheet.d.ts +14 -4
  210. package/dist/react/Sheet.js +54 -9
  211. package/dist/react/Sheet.js.map +1 -1
  212. package/dist/react/Slider.d.ts +18 -0
  213. package/dist/react/Slider.js +27 -0
  214. package/dist/react/Slider.js.map +1 -0
  215. package/dist/react/Toast.js +14 -6
  216. package/dist/react/Toast.js.map +1 -1
  217. package/dist/react/ToolTip.d.ts +7 -0
  218. package/dist/react/ToolTip.js +43 -0
  219. package/dist/react/ToolTip.js.map +1 -0
  220. package/dist/react/TopBar.d.ts +6 -3
  221. package/dist/react/TopBar.js +48 -17
  222. package/dist/react/TopBar.js.map +1 -1
  223. package/dist/react/Tween.d.ts +7 -0
  224. package/dist/react/Tween.js +26 -0
  225. package/dist/react/Tween.js.map +1 -0
  226. package/dist/react/Tween.native.d.ts +6 -0
  227. package/dist/react/Tween.native.js +43 -0
  228. package/dist/react/Tween.native.js.map +1 -0
  229. package/dist/react/View3D.native.d.ts +4 -0
  230. package/dist/react/View3D.native.js +103 -0
  231. package/dist/react/View3D.native.js.map +1 -0
  232. package/dist/react/View3D.web.d.ts +4 -0
  233. package/dist/react/View3D.web.js +151 -0
  234. package/dist/react/View3D.web.js.map +1 -0
  235. package/dist/react/View3DHost.d.ts +143 -0
  236. package/dist/react/View3DHost.js +377 -0
  237. package/dist/react/View3DHost.js.map +1 -0
  238. package/dist/react/corners.d.ts +7 -0
  239. package/dist/react/corners.js +51 -0
  240. package/dist/react/corners.js.map +1 -0
  241. package/dist/react/easing.d.ts +15 -0
  242. package/dist/react/easing.js +10 -0
  243. package/dist/react/easing.js.map +1 -0
  244. package/dist/react/host.d.ts +7 -2
  245. package/dist/react/host.js +8 -3
  246. package/dist/react/host.js.map +1 -1
  247. package/dist/react/hostKeypad.d.ts +56 -0
  248. package/dist/react/hostKeypad.js +5 -0
  249. package/dist/react/hostKeypad.js.map +1 -0
  250. package/dist/react/motion.d.ts +77 -0
  251. package/dist/react/motion.js +173 -0
  252. package/dist/react/motion.js.map +1 -0
  253. package/dist/react/ports.js +90 -8
  254. package/dist/react/ports.js.map +1 -1
  255. package/dist/react/saving.d.ts +15 -0
  256. package/dist/react/saving.js +76 -0
  257. package/dist/react/saving.js.map +1 -0
  258. package/dist/react/store.d.ts +38 -1
  259. package/dist/react/store.js +31 -1
  260. package/dist/react/store.js.map +1 -1
  261. package/dist/react/theme.d.ts +10 -0
  262. package/dist/react/theme.js +8 -0
  263. package/dist/react/theme.js.map +1 -1
  264. package/dist/react/topRow.d.ts +22 -0
  265. package/dist/react/topRow.js +61 -0
  266. package/dist/react/topRow.js.map +1 -0
  267. package/dist/react/touch.d.ts +6 -0
  268. package/dist/react/touch.js +9 -0
  269. package/dist/react/touch.js.map +1 -0
  270. package/dist/render/ctx.d.ts +8 -0
  271. package/dist/render/draw.d.ts +33 -1
  272. package/dist/render/draw.js +593 -215
  273. package/dist/render/draw.js.map +1 -1
  274. package/dist/render/elevation.d.ts +65 -43
  275. package/dist/render/elevation.js +414 -140
  276. package/dist/render/elevation.js.map +1 -1
  277. package/dist/render/figmaIcons.d.ts +12 -0
  278. package/dist/render/figmaIcons.js +21 -0
  279. package/dist/render/figmaIcons.js.map +1 -0
  280. package/dist/render/hit.d.ts +22 -2
  281. package/dist/render/hit.js +168 -25
  282. package/dist/render/hit.js.map +1 -1
  283. package/dist/render/icons.js +69 -10
  284. package/dist/render/icons.js.map +1 -1
  285. package/dist/render/linkTile.d.ts +15 -0
  286. package/dist/render/linkTile.js +369 -0
  287. package/dist/render/linkTile.js.map +1 -0
  288. package/dist/render/markup.d.ts +11 -0
  289. package/dist/render/markup.js +112 -0
  290. package/dist/render/markup.js.map +1 -0
  291. package/dist/render/navigate.d.ts +88 -0
  292. package/dist/render/navigate.js +100 -0
  293. package/dist/render/navigate.js.map +1 -0
  294. package/dist/render/snap.d.ts +20 -1
  295. package/dist/render/snap.js +118 -25
  296. package/dist/render/snap.js.map +1 -1
  297. package/dist/render/squircle.d.ts +8 -0
  298. package/dist/render/squircle.js +71 -0
  299. package/dist/render/squircle.js.map +1 -0
  300. package/dist/render/view.d.ts +115 -2
  301. package/dist/render/view.js +244 -19
  302. package/dist/render/view.js.map +1 -1
  303. package/dist/skia/SkiaDrawCtx.d.ts +30 -2
  304. package/dist/skia/SkiaDrawCtx.js +198 -43
  305. package/dist/skia/SkiaDrawCtx.js.map +1 -1
  306. package/dist/skia/host.d.ts +18 -2
  307. package/dist/skia/host.js +46 -1
  308. package/dist/skia/host.js.map +1 -1
  309. package/dist/solver/equations.js +37 -2
  310. package/dist/solver/equations.js.map +1 -1
  311. package/dist/solver/gauss-newton.d.ts +17 -0
  312. package/dist/solver/gauss-newton.js +144 -36
  313. package/dist/solver/gauss-newton.js.map +1 -1
  314. package/dist/solver/linalg.d.ts +45 -2
  315. package/dist/solver/linalg.js +164 -10
  316. package/dist/solver/linalg.js.map +1 -1
  317. package/dist/solver/types.d.ts +5 -0
  318. package/dist/tools/annotate.d.ts +57 -1
  319. package/dist/tools/annotate.js +64 -43
  320. package/dist/tools/annotate.js.map +1 -1
  321. package/dist/tools/chamfer.d.ts +12 -0
  322. package/dist/tools/chamfer.js +114 -0
  323. package/dist/tools/chamfer.js.map +1 -0
  324. package/dist/tools/corner.d.ts +38 -0
  325. package/dist/tools/corner.js +99 -0
  326. package/dist/tools/corner.js.map +1 -0
  327. package/dist/tools/dim.d.ts +86 -9
  328. package/dist/tools/dim.js +581 -96
  329. package/dist/tools/dim.js.map +1 -1
  330. package/dist/tools/elevation.js +1 -1
  331. package/dist/tools/elevation.js.map +1 -1
  332. package/dist/tools/fillet.d.ts +9 -0
  333. package/dist/tools/fillet.js +86 -0
  334. package/dist/tools/fillet.js.map +1 -0
  335. package/dist/tools/freehand.d.ts +3 -2
  336. package/dist/tools/freehand.js +19 -12
  337. package/dist/tools/freehand.js.map +1 -1
  338. package/dist/tools/index.js +14 -4
  339. package/dist/tools/index.js.map +1 -1
  340. package/dist/tools/line.d.ts +8 -3
  341. package/dist/tools/line.js +66 -30
  342. package/dist/tools/line.js.map +1 -1
  343. package/dist/tools/modify.d.ts +13 -0
  344. package/dist/tools/modify.js +105 -25
  345. package/dist/tools/modify.js.map +1 -1
  346. package/dist/tools/openings.js +22 -15
  347. package/dist/tools/openings.js.map +1 -1
  348. package/dist/tools/registry.d.ts +8 -0
  349. package/dist/tools/registry.js +42 -2
  350. package/dist/tools/registry.js.map +1 -1
  351. package/dist/tools/select.d.ts +77 -3
  352. package/dist/tools/select.js +560 -74
  353. package/dist/tools/select.js.map +1 -1
  354. package/dist/tools/shapes.d.ts +14 -0
  355. package/dist/tools/shapes.js +154 -75
  356. package/dist/tools/shapes.js.map +1 -1
  357. package/dist/units/format.d.ts +10 -2
  358. package/dist/units/format.js +18 -3
  359. package/dist/units/format.js.map +1 -1
  360. package/dist/view3d/build.d.ts +35 -0
  361. package/dist/view3d/build.js +630 -0
  362. package/dist/view3d/build.js.map +1 -0
  363. package/dist/view3d/camera.d.ts +60 -0
  364. package/dist/view3d/camera.js +84 -0
  365. package/dist/view3d/camera.js.map +1 -0
  366. package/dist/view3d/fatLines.d.ts +11 -0
  367. package/dist/view3d/fatLines.js +83 -0
  368. package/dist/view3d/fatLines.js.map +1 -0
  369. package/dist/view3d/lines.d.ts +17 -0
  370. package/dist/view3d/lines.js +271 -0
  371. package/dist/view3d/lines.js.map +1 -0
  372. package/dist/view3d/mesh.d.ts +51 -0
  373. package/dist/view3d/mesh.js +101 -0
  374. package/dist/view3d/mesh.js.map +1 -0
  375. package/dist/view3d/poly.d.ts +16 -0
  376. package/dist/view3d/poly.js +109 -0
  377. package/dist/view3d/poly.js.map +1 -0
  378. package/dist/view3d/viewer.d.ts +86 -0
  379. package/dist/view3d/viewer.js +350 -0
  380. package/dist/view3d/viewer.js.map +1 -0
  381. package/package.json +15 -2
  382. package/src/app/edit.ts +83 -12
  383. package/src/app/main.ts +11 -5
  384. package/src/app/state.ts +38 -5
  385. package/src/data/memory.ts +2 -2
  386. package/src/data/provider.ts +15 -7
  387. package/src/data/sync.ts +87 -50
  388. package/src/editor/actions.ts +292 -83
  389. package/src/editor/confirm.ts +58 -0
  390. package/src/editor/elevation.ts +698 -478
  391. package/src/editor/face.ts +227 -0
  392. package/src/editor/files.ts +40 -4
  393. package/src/editor/gestures.ts +147 -31
  394. package/src/editor/keypad.ts +43 -11
  395. package/src/editor/keys.ts +25 -5
  396. package/src/editor/laser.ts +98 -20
  397. package/src/editor/linkActions.ts +194 -0
  398. package/src/editor/linkFollow.ts +43 -0
  399. package/src/editor/linkWrite.ts +77 -0
  400. package/src/editor/links.ts +181 -0
  401. package/src/editor/markup.ts +92 -8
  402. package/src/editor/mode.ts +83 -7
  403. package/src/editor/ports.ts +37 -6
  404. package/src/editor/project.ts +155 -26
  405. package/src/editor/selection.ts +54 -8
  406. package/src/editor/status.ts +2 -0
  407. package/src/editor/tooltips.ts +47 -0
  408. package/src/editor/view3d.ts +119 -0
  409. package/src/editor/view3dState.ts +61 -0
  410. package/src/export/dxf.ts +1 -1
  411. package/src/export/pdf.ts +15 -7
  412. package/src/export/plan.ts +119 -35
  413. package/src/index.ts +5 -0
  414. package/src/input/keyboard.ts +2 -4
  415. package/src/model/constraints.ts +13 -4
  416. package/src/model/demo.ts +3 -3
  417. package/src/model/elevation.ts +6 -16
  418. package/src/model/faces.ts +153 -0
  419. package/src/model/facesolve.ts +322 -0
  420. package/src/model/history.ts +19 -11
  421. package/src/model/images.ts +35 -0
  422. package/src/model/links.ts +77 -0
  423. package/src/model/markup.ts +80 -0
  424. package/src/model/measurement.ts +26 -0
  425. package/src/model/openings.ts +6 -0
  426. package/src/model/planGeom.ts +174 -8
  427. package/src/model/project.ts +3 -2
  428. package/src/model/projectfile.ts +2 -1
  429. package/src/model/rooms.ts +1 -1
  430. package/src/model/settings.ts +8 -2
  431. package/src/model/sketch.ts +101 -14
  432. package/src/model/smooth.ts +51 -0
  433. package/src/model/store.ts +35 -4
  434. package/src/model/types.ts +170 -8
  435. package/src/model/wallfaces.ts +126 -17
  436. package/src/model/wallshape.ts +97 -0
  437. package/src/react/BottomBar.tsx +263 -46
  438. package/src/react/Buttons.tsx +50 -9
  439. package/src/react/CadEditor.tsx +133 -30
  440. package/src/react/ConfirmSheet.tsx +38 -0
  441. package/src/react/ConflictSheet.tsx +19 -12
  442. package/src/react/Drawer.tsx +213 -110
  443. package/src/react/Duck.tsx +50 -0
  444. package/src/react/Empty3D.tsx +32 -0
  445. package/src/react/FitScroll.tsx +19 -0
  446. package/src/react/Icon.native.tsx +5 -0
  447. package/src/react/Icon.web.tsx +5 -0
  448. package/src/react/KeypadSheet.tsx +253 -60
  449. package/src/react/LaserTray.tsx +12 -8
  450. package/src/react/MarkupPanel.tsx +150 -0
  451. package/src/react/PageThumb.native.tsx +18 -7
  452. package/src/react/PageThumb.web.tsx +4 -4
  453. package/src/react/PlanCanvas.native.tsx +151 -34
  454. package/src/react/PlanCanvas.web.tsx +15 -5
  455. package/src/react/Popovers.tsx +116 -51
  456. package/src/react/Rail.tsx +360 -27
  457. package/src/react/ShapeMenu.tsx +66 -0
  458. package/src/react/Sheet.tsx +56 -11
  459. package/src/react/Slider.tsx +48 -0
  460. package/src/react/Toast.tsx +16 -9
  461. package/src/react/ToolTip.tsx +49 -0
  462. package/src/react/TopBar.tsx +97 -39
  463. package/src/react/Tween.native.tsx +36 -0
  464. package/src/react/Tween.tsx +24 -0
  465. package/src/react/View3D.native.tsx +131 -0
  466. package/src/react/View3D.web.tsx +131 -0
  467. package/src/react/View3DHost.ts +367 -0
  468. package/src/react/corners.ts +52 -0
  469. package/src/react/easing.ts +14 -0
  470. package/src/react/host.ts +8 -3
  471. package/src/react/hostKeypad.ts +66 -0
  472. package/src/react/motion.tsx +239 -0
  473. package/src/react/ports.ts +78 -9
  474. package/src/react/saving.ts +80 -0
  475. package/src/react/store.ts +35 -3
  476. package/src/react/theme.ts +8 -0
  477. package/src/react/topRow.ts +71 -0
  478. package/src/react/touch.ts +10 -0
  479. package/src/render/ctx.ts +8 -0
  480. package/src/render/draw.ts +437 -175
  481. package/src/render/elevation.ts +349 -143
  482. package/src/render/figmaIcons.ts +22 -0
  483. package/src/render/hit.ts +140 -21
  484. package/src/render/icons.ts +69 -10
  485. package/src/render/linkTile.ts +297 -0
  486. package/src/render/markup.ts +91 -0
  487. package/src/render/navigate.ts +114 -0
  488. package/src/render/snap.ts +105 -22
  489. package/src/render/squircle.ts +73 -0
  490. package/src/render/view.ts +255 -19
  491. package/src/skia/SkiaDrawCtx.ts +163 -41
  492. package/src/skia/host.ts +46 -1
  493. package/src/solver/equations.ts +37 -2
  494. package/src/solver/gauss-newton.ts +125 -28
  495. package/src/solver/linalg.ts +141 -5
  496. package/src/solver/types.ts +5 -0
  497. package/src/styles.css +91 -42
  498. package/src/tools/annotate.ts +58 -29
  499. package/src/tools/chamfer.ts +103 -0
  500. package/src/tools/corner.ts +99 -0
  501. package/src/tools/dim.ts +524 -92
  502. package/src/tools/elevation.ts +1 -1
  503. package/src/tools/fillet.ts +82 -0
  504. package/src/tools/freehand.ts +20 -16
  505. package/src/tools/index.ts +17 -4
  506. package/src/tools/line.ts +59 -23
  507. package/src/tools/modify.ts +86 -24
  508. package/src/tools/openings.ts +8 -13
  509. package/src/tools/registry.ts +27 -2
  510. package/src/tools/select.ts +424 -75
  511. package/src/tools/shapes.ts +119 -58
  512. package/src/ui/ctx.ts +2 -1
  513. package/src/ui/domPorts.ts +23 -4
  514. package/src/ui/drawer.ts +6 -26
  515. package/src/ui/elevation.ts +10 -101
  516. package/src/ui/keypad.ts +8 -14
  517. package/src/ui/laser.ts +2 -2
  518. package/src/ui/menu.ts +63 -17
  519. package/src/ui/noteinput.ts +3 -3
  520. package/src/ui/opacity.ts +108 -0
  521. package/src/ui/palette.ts +67 -12
  522. package/src/ui/rail.ts +21 -7
  523. package/src/ui/topbar.ts +4 -14
  524. package/src/units/format.ts +18 -3
  525. package/src/view3d/build.ts +607 -0
  526. package/src/view3d/camera.ts +113 -0
  527. package/src/view3d/fatLines.ts +83 -0
  528. package/src/view3d/lines.ts +258 -0
  529. package/src/view3d/mesh.ts +111 -0
  530. package/src/view3d/poly.ts +104 -0
  531. package/src/view3d/viewer.ts +348 -0
  532. package/dist/react/ElevCanvas.native.d.ts +0 -3
  533. package/dist/react/ElevCanvas.native.js +0 -58
  534. package/dist/react/ElevCanvas.native.js.map +0 -1
  535. package/dist/react/ElevCanvas.web.d.ts +0 -4
  536. package/dist/react/ElevCanvas.web.js +0 -44
  537. package/dist/react/ElevCanvas.web.js.map +0 -1
  538. package/dist/react/ElevationSheet.d.ts +0 -2
  539. package/dist/react/ElevationSheet.js +0 -38
  540. package/dist/react/ElevationSheet.js.map +0 -1
  541. package/dist/render/elevationView.d.ts +0 -3
  542. package/dist/render/elevationView.js +0 -100
  543. package/dist/render/elevationView.js.map +0 -1
  544. package/src/react/ElevCanvas.native.tsx +0 -68
  545. package/src/react/ElevCanvas.web.tsx +0 -42
  546. package/src/react/ElevationSheet.tsx +0 -88
  547. package/src/render/elevationView.ts +0 -73
@@ -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 { page, saveSoon, SK, store } from '../model/store';
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(SK(), { project: store.project.name, subtitle: page().name }));
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(SK()));
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 {
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/editor/files.ts"],"names":[],"mappings":"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"}
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 const pointerUp: (e: PointerIn) => void;
24
- export declare const pointerCancel: (e: PointerIn) => void;
25
- /** A mouse left the canvas: drop hover highlights (the line tools keep their snap marker). */
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).
@@ -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 { saveSoon } from '../model/store';
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, panDrag = 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
- const [wx, wy] = s2w(p.x, p.y);
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
- g.moved += hyp(dx, dy);
56
- panBy(dx, dy);
57
- if (s.n >= 2 && L.d > 0 && s.d > 0) {
58
- g.moved += Math.abs(s.d - L.d);
59
- zoomAt(s.x, s.y, s.d / L.d);
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
- if (g.moved < 14 && t - g.t0 < 380 && !ed.readOnly) {
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
- saveSoon();
141
+ saveViewSoon();
75
142
  }
76
- /** A second finger landed mid-action: abandon the primary pointer (reverting a drag in progress). */
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 && t.st && t.st.down)
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
- ed.preview = ed.tool === 'line' || ed.tool === 'wall' ? ed.preview : null;
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
- saveSoon();
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
- if (e.kind === 'mouse' && (e.button === 1 || e.button === 2 || keys.spaceDown || ed.readOnly)) {
121
- panDrag = { x: p.x, y: p.y, id: e.id };
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 || ed.readOnly) {
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 || ed.readOnly)
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' && !ed.readOnly) {
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 const pointerUp = (e) => endPtr(e, false);
174
- export const pointerCancel = (e) => endPtr(e, true);
175
- /** A mouse left the canvas: drop hover highlights (the line tools keep their snap marker). */
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' && ed.tool !== 'wall')
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(saveSoon, 400);
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":"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"}
@@ -1,14 +1,23 @@
1
1
  import { type KeypadSpec } from './ports';
2
2
  export declare const FRACTIONS: string[];
3
- /** Key layouts: 'space', 'laser', '⌫' and '( )' are special keys. */
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
- export declare function keypadStart(spec: KeypadSpec): void;
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
- /** A laser reading into an open length keypad. False if this keypad can't take one (degrees, or laser turned off). */
32
- export declare function keypadTakeLaser(v: number): boolean;
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.
@@ -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
- /** Key layouts: 'space', 'laser', '⌫' and '( )' are special keys. */
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
- ? ['7', '8', '9', '⌫', '4', '5', '6', '-', '1', '2', '3', '/', '+', '0', '.', '( )']
10
- : ['7', '8', '9', '⌫', '4', '5', '6', "'", '1', '2', '3', '"', 'space', '0', '.', 'laser'];
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
- export function keypadStart(spec) {
18
- kps.cur = { spec, text: spec.initial || '', fresh: !!spec.selectAll };
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
- /** A laser reading into an open length keypad. False if this keypad can't take one (degrees, or laser turned off). */
88
- export function keypadTakeLaser(v) {
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;AAStE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAiB,EAAE,CAAC,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACnF,qEAAqE;AACrE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAiB,EAAY,EAAE,CAAC,OAAO;IAC/D,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;IACpF,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAE7F,MAAM,CAAC,MAAM,UAAU,GAAG,GAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACnD,MAAM,CAAC,MAAM,UAAU,GAAG,GAAsB,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3D,6FAA6F;AAC7F,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAElG,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;IACnC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC;IACf,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO;IACrB,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,KAAwB;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACpB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;QAAC,KAAK,GAAG,SAAS,CAAC;IAAC,CAAC;IACjE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACZ,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/G,4DAA4D;AAC5D,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,GAAG,MAAM,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEjI,+EAA+E;AAC/E,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;IACpB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;IAAC,CAAC;;QAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO;IACrB,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,CAAS;IACxC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,OAAO;IACrB,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACjE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,CAAK,EAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE/F,+FAA+F;AAC/F,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,aAAa;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,0BAA0B,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC/G,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACjE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC/E,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,MAAM,CAAC,GAAG,WAAW,EAAE,CAAC;IACxB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAAC,aAAa,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACjE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC;IACd,IAAI,IAAI;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"keypad.js","sourceRoot":"","sources":["../../src/editor/keypad.ts"],"names":[],"mappings":"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"}