@reekon-tools/boldr-cad 1.0.0 → 1.1.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 (72) hide show
  1. package/README.md +18 -7
  2. package/dist/data/memory.d.ts +4 -1
  3. package/dist/data/memory.js +11 -6
  4. package/dist/data/memory.js.map +1 -1
  5. package/dist/data/provider.d.ts +11 -3
  6. package/dist/data/sync.d.ts +7 -1
  7. package/dist/data/sync.js +18 -2
  8. package/dist/data/sync.js.map +1 -1
  9. package/dist/editor/actions.js +1 -1
  10. package/dist/editor/actions.js.map +1 -1
  11. package/dist/editor/elevation.js +1 -1
  12. package/dist/editor/elevation.js.map +1 -1
  13. package/dist/editor/face.js +2 -2
  14. package/dist/editor/face.js.map +1 -1
  15. package/dist/editor/keypad.d.ts +1 -1
  16. package/dist/editor/keypad.js +24 -7
  17. package/dist/editor/keypad.js.map +1 -1
  18. package/dist/editor/ports.d.ts +2 -0
  19. package/dist/editor/ports.js.map +1 -1
  20. package/dist/editor/project.d.ts +2 -2
  21. package/dist/editor/project.js +7 -4
  22. package/dist/editor/project.js.map +1 -1
  23. package/dist/index.d.ts +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/model/planGeom.js +2 -2
  26. package/dist/model/planGeom.js.map +1 -1
  27. package/dist/react/CadEditor.d.ts +8 -1
  28. package/dist/react/CadEditor.js +3 -2
  29. package/dist/react/CadEditor.js.map +1 -1
  30. package/dist/react/Popovers.js +2 -2
  31. package/dist/react/Popovers.js.map +1 -1
  32. package/dist/tools/chamfer.js +3 -3
  33. package/dist/tools/chamfer.js.map +1 -1
  34. package/dist/tools/dim.js +4 -4
  35. package/dist/tools/dim.js.map +1 -1
  36. package/dist/tools/elevation.js +4 -4
  37. package/dist/tools/elevation.js.map +1 -1
  38. package/dist/tools/fillet.js +1 -1
  39. package/dist/tools/fillet.js.map +1 -1
  40. package/dist/tools/openings.js +3 -3
  41. package/dist/tools/openings.js.map +1 -1
  42. package/dist/units/format.d.ts +1 -1
  43. package/dist/units/format.js +9 -3
  44. package/dist/units/format.js.map +1 -1
  45. package/dist/units/parse.d.ts +2 -1
  46. package/dist/units/parse.js +5 -4
  47. package/dist/units/parse.js.map +1 -1
  48. package/dist/units/prefs.d.ts +9 -1
  49. package/dist/units/prefs.js +6 -0
  50. package/dist/units/prefs.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/data/memory.ts +13 -8
  53. package/src/data/provider.ts +10 -3
  54. package/src/data/sync.ts +20 -3
  55. package/src/editor/actions.ts +1 -1
  56. package/src/editor/elevation.ts +1 -1
  57. package/src/editor/face.ts +2 -2
  58. package/src/editor/keypad.ts +24 -7
  59. package/src/editor/ports.ts +2 -0
  60. package/src/editor/project.ts +7 -5
  61. package/src/index.ts +2 -1
  62. package/src/model/planGeom.ts +2 -2
  63. package/src/react/CadEditor.tsx +10 -5
  64. package/src/react/Popovers.tsx +3 -3
  65. package/src/tools/chamfer.ts +3 -3
  66. package/src/tools/dim.ts +4 -4
  67. package/src/tools/elevation.ts +4 -4
  68. package/src/tools/fillet.ts +1 -1
  69. package/src/tools/openings.ts +3 -3
  70. package/src/units/format.ts +6 -3
  71. package/src/units/parse.ts +4 -3
  72. package/src/units/prefs.ts +13 -1
@@ -22,7 +22,7 @@ export function editSill(opId) {
22
22
  return;
23
23
  const { sill, head } = openingHeights(o), h = head - sill, H = wallHeight(l);
24
24
  openKeypad({
25
- title: Name(o) + ' sill height', sub: 'Floor to the bottom of the ' + nameOf(o) + ' — locks its height above the floor', initial: fmtLen(sill), selectAll: true, laser: true,
25
+ title: Name(o) + ' sill height', sub: 'Floor to the bottom of the ' + nameOf(o) + ' — locks its height above the floor', initial: fmtLen(sill), value: sill, selectAll: true, laser: true,
26
26
  onDone: v => {
27
27
  if (v < 0)
28
28
  return;
@@ -44,7 +44,7 @@ export function editOpeningHeight(opId) {
44
44
  return;
45
45
  const { sill, head } = openingHeights(o), H = wallHeight(l);
46
46
  openKeypad({
47
- title: Name(o) + ' height', sub: 'Bottom to top of the ' + nameOf(o), initial: fmtLen(head - sill), selectAll: true, laser: true,
47
+ title: Name(o) + ' height', sub: 'Bottom to top of the ' + nameOf(o), initial: fmtLen(head - sill), value: head - sill, selectAll: true, laser: true,
48
48
  onDone: v => {
49
49
  if (v <= 0)
50
50
  return;
@@ -67,7 +67,7 @@ export function editWallHeight(lid) {
67
67
  return;
68
68
  const tallest = Math.max(0, ...Object.values(sk.openings).filter(o => o.line === lid).map(o => openingHeights(o).head));
69
69
  openKeypad({
70
- title: 'Wall height', sub: 'Floor to ceiling, this wall only', initial: fmtLen(wallHeight(l)), selectAll: true, laser: true,
70
+ title: 'Wall height', sub: 'Floor to ceiling, this wall only', initial: fmtLen(wallHeight(l)), value: wallHeight(l), selectAll: true, laser: true,
71
71
  onDone: v => {
72
72
  if (v <= 0)
73
73
  return;
@@ -107,7 +107,7 @@ export function editElevationPosition(opId, edge, ref, title) {
107
107
  const d = { id: uid('od'), edge, ref, value: cur, sign: e >= r ? 1 : -1, driving: true };
108
108
  openKeypad({
109
109
  title, sub: 'Locks the ' + nameOf(o) + '’s position',
110
- initial: fmtLen(cur), selectAll: true, laser: true,
110
+ initial: fmtLen(cur), value: cur, selectAll: true, laser: true,
111
111
  onDone: v => {
112
112
  if (v < 0)
113
113
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"elevation.js","sourceRoot":"","sources":["../../src/tools/elevation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elevation.js","sourceRoot":"","sources":["../../src/tools/elevation.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export function filletPrompt(pid) {
33
33
  }
34
34
  const most = maxFillet(sk, pid), start = Math.min(6, most * 0.5);
35
35
  openKeypad({
36
- title: 'Fillet radius', sub: 'Up to ' + fmtLen(most) + ' fits this corner', initial: fmtLen(Math.round(start * 16) / 16), selectAll: true, laser: true,
36
+ title: 'Fillet radius', sub: 'Up to ' + fmtLen(most) + ' fits this corner', initial: fmtLen(Math.round(start * 16) / 16), value: Math.round(start * 16) / 16, selectAll: true, laser: true,
37
37
  onDone: r => { filletCorner(pid, r); },
38
38
  });
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fillet.js","sourceRoot":"","sources":["../../src/tools/fillet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillet.js","sourceRoot":"","sources":["../../src/tools/fillet.ts"],"names":[],"mappings":"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"}
@@ -90,7 +90,7 @@ export function addOpeningDim(opId, edge, ref, title) {
90
90
  onClose: () => { ed.preview = null; requestDraw(); },
91
91
  title: title || 'Distance to ' + name.toLowerCase(),
92
92
  sub: d.driving ? 'Locks the ' + name.toLowerCase() + '’s position' : 'Already set by other dimensions — this one can only be a reference',
93
- initial: fmtLen(cur), selectAll: true, laser: true,
93
+ initial: fmtLen(cur), value: cur, selectAll: true, laser: true,
94
94
  onDone: v => {
95
95
  if (v < 0)
96
96
  return;
@@ -138,7 +138,7 @@ export function editOpeningDim(id, part) {
138
138
  focusOpening(id);
139
139
  const name = nameOf(o);
140
140
  openKeypad({
141
- title: name + ' width', sub: 'Edge to edge, along the wall', initial: fmtLen(g.w), selectAll: true, laser: true,
141
+ title: name + ' width', sub: 'Edge to edge, along the wall', initial: fmtLen(g.w), value: g.w, selectAll: true, laser: true,
142
142
  onDone: v => {
143
143
  if (v <= 0)
144
144
  return;
@@ -172,7 +172,7 @@ export function editPlacedOpeningDim(opId, dimId) {
172
172
  openKeypad({
173
173
  title: 'Distance to ' + name,
174
174
  sub: d.driving ? 'Driving — locks the ' + name + '’s position' : 'Reference — a value makes it lock the ' + name,
175
- initial: fmtLen(cur), selectAll: true, laser: true,
175
+ initial: fmtLen(cur), value: cur, selectAll: true, laser: true,
176
176
  // (no Reference or Delete here: they're the bar's, for the dimension selected)
177
177
  onDone: v => {
178
178
  if (v < 0)
@@ -1 +1 @@
1
- {"version":3,"file":"openings.js","sourceRoot":"","sources":["../../src/tools/openings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openings.js","sourceRoot":"","sources":["../../src/tools/openings.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export declare const hostUnits: () => UnitPrefs | null;
9
9
  /** Lengths read the host's way, rather than in units picked in the editor. */
10
10
  export declare const followingHostUnits: () => boolean;
11
11
  export declare function setOwnUnits(v: boolean): void;
12
- /** Format a length in inches: 150.5 → 12'-6 1/2" (ft-in), 150 1/2" (in), 3,823 mm (mm). */
12
+ /** Format a length in inches: 150.5 → 12'-6 1/2" (ft-in), 150 1/2" (in), 12.54' (ft), 3,823 mm (mm), 382.27 cm (cm), 3.823 m (m). */
13
13
  export declare function fmtLen(v: number, u?: UnitPrefs): string;
14
14
  /** Format an area given in square inches. */
15
15
  export declare function fmtArea(sqin: number, u?: UnitPrefs): string;
@@ -1,4 +1,4 @@
1
- import { getUnitPrefs } from './prefs';
1
+ import { getUnitPrefs, isMetric } from './prefs';
2
2
  let custom = null;
3
3
  let hostPrefs = null;
4
4
  /** The person picked the editor's own units in Settings over the host's. */
@@ -17,13 +17,19 @@ export const hostUnits = () => (custom ? hostPrefs ?? { unit: 'ftin', denom: 16
17
17
  /** Lengths read the host's way, rather than in units picked in the editor. */
18
18
  export const followingHostUnits = () => !!custom && !own;
19
19
  export function setOwnUnits(v) { own = v; }
20
- /** Format a length in inches: 150.5 → 12'-6 1/2" (ft-in), 150 1/2" (in), 3,823 mm (mm). */
20
+ /** Format a length in inches: 150.5 → 12'-6 1/2" (ft-in), 150 1/2" (in), 12.54' (ft), 3,823 mm (mm), 382.27 cm (cm), 3.823 m (m). */
21
21
  export function fmtLen(v, u = getUnitPrefs()) {
22
22
  v = Math.abs(v);
23
23
  if (custom && !own && u === getUnitPrefs())
24
24
  return custom(v);
25
25
  if (u.unit === 'mm')
26
26
  return Math.round(v * 25.4).toLocaleString() + ' mm';
27
+ if (u.unit === 'cm')
28
+ return (v * 2.54).toFixed(2) + ' cm';
29
+ if (u.unit === 'm')
30
+ return (v * 0.0254).toFixed(3) + ' m';
31
+ if (u.unit === 'ft')
32
+ return (v / 12).toFixed(2) + "'";
27
33
  const d = u.denom;
28
34
  const t = Math.round(v * d) / d;
29
35
  let ft = u.unit === 'ftin' ? Math.floor(t / 12 + 1e-9) : 0;
@@ -50,7 +56,7 @@ export function fmtLen(v, u = getUnitPrefs()) {
50
56
  }
51
57
  /** Format an area given in square inches. */
52
58
  export function fmtArea(sqin, u = getUnitPrefs()) {
53
- if (u.unit === 'mm')
59
+ if (isMetric(u.unit))
54
60
  return (sqin * 0.00064516).toFixed(2) + ' m²';
55
61
  return (sqin / 144).toFixed(1) + ' sq ft';
56
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/units/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/units/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAEjE,IAAI,MAAM,GAAwC,IAAI,CAAC;AACvD,IAAI,SAAS,GAAqB,IAAI,CAAC;AACvC,4EAA4E;AAC5E,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAuC,EAAE,KAAiB;IAC3F,MAAM,GAAG,EAAE,CAAC;IACZ,SAAS,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,GAAG,GAAG,KAAK,CAAC;AACd,CAAC;AACD,8FAA8F;AAC9F,MAAM,CAAC,MAAM,SAAS,GAAG,GAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5G,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAY,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC;AAClE,MAAM,UAAU,WAAW,CAAC,CAAU,IAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1D,qIAAqI;AACrI,MAAM,UAAU,MAAM,CAAC,CAAS,EAAE,CAAC,GAAc,YAAY,EAAE;IAC7D,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChB,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,YAAY,EAAE;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC;IAC1E,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACtD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACnC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAAC,KAAK,EAAE,CAAC;QAAC,EAAE,GAAG,CAAC,CAAC;IAAC,CAAC;IACjC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAAC,EAAE,EAAE,CAAC;QAAC,KAAK,IAAI,EAAE,CAAC;IAAC,CAAC;IAC5D,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;IACtB,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,GAAG,IAAI,CAAC,CAAC;QAAC,GAAG,IAAI,CAAC,CAAC;IAAC,CAAC;IACrE,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtG,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IAC/D,OAAO,IAAI,GAAG,GAAG,CAAC;AACpB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,CAAC,GAAc,YAAY,EAAE;IACjE,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACpE,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAW;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;AACzC,CAAC"}
@@ -4,7 +4,8 @@ export declare function evalExpr(src: string): number;
4
4
  /**
5
5
  * Parse a length and return inches, or null if it can't be read.
6
6
  * Accepts 12' 6 1/2", 12ft 6in, 150.5, 3.2m, 25mm, and arithmetic (10'+6).
7
- * Bare numbers are inches in ft-in / in mode and millimetres in mm mode.
7
+ * Bare numbers are read in the current unit: inches in ft-in and in modes, feet in ft, millimetres, centimetres or
8
+ * metres in those.
8
9
  */
9
10
  export declare function parseLen(str: string | null | undefined, u?: UnitPrefs): number | null;
10
11
  /** Parse a plain number (degrees etc.), allowing arithmetic and a trailing °. */
@@ -1,4 +1,4 @@
1
- import { getUnitPrefs } from './prefs';
1
+ import { bareScale, getUnitPrefs } from './prefs';
2
2
  /** Tiny recursive-descent evaluator for + - * / and parentheses. Throws on bad input. */
3
3
  export function evalExpr(src) {
4
4
  const t = src.replace(/\s+/g, '');
@@ -56,7 +56,8 @@ export function evalExpr(src) {
56
56
  /**
57
57
  * Parse a length and return inches, or null if it can't be read.
58
58
  * Accepts 12' 6 1/2", 12ft 6in, 150.5, 3.2m, 25mm, and arithmetic (10'+6).
59
- * Bare numbers are inches in ft-in / in mode and millimetres in mm mode.
59
+ * Bare numbers are read in the current unit: inches in ft-in and in modes, feet in ft, millimetres, centimetres or
60
+ * metres in those.
60
61
  */
61
62
  export function parseLen(str, u = getUnitPrefs()) {
62
63
  if (str == null)
@@ -82,8 +83,8 @@ export function parseLen(str, u = getUnitPrefs()) {
82
83
  }
83
84
  if (!isFinite(v))
84
85
  return null;
85
- if (u.unit === 'mm' && !hasUnit)
86
- v /= 25.4;
86
+ if (!hasUnit)
87
+ v *= bareScale(u.unit);
87
88
  return v;
88
89
  }
89
90
  /** Parse a plain number (degrees etc.), allowing arithmetic and a trailing °. */
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/units/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/units/parse.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
- export type Unit = 'ftin' | 'in' | 'mm';
1
+ export type Unit = 'ftin' | 'in' | 'ft' | 'mm' | 'cm' | 'm';
2
2
  /** Display preferences. Geometry is always stored in inches; these only change how values read. */
3
3
  export interface UnitPrefs {
4
4
  unit: Unit;
5
5
  /** Fraction precision for imperial display: 16 → 1/16". */
6
6
  denom: number;
7
+ /** Whether lengths are typed and read with fractions (the fraction keys, Precision). Unset: feet-inches and inches are. */
8
+ fractions?: boolean;
7
9
  }
8
10
  /** Point the formatters at a live prefs object (the app passes its settings object). */
9
11
  export declare function useUnitPrefs(p: UnitPrefs): void;
10
12
  export declare function getUnitPrefs(): UnitPrefs;
13
+ /** Metric units: bare numbers, the grid and areas are metric. */
14
+ export declare const isMetric: (unit: Unit) => boolean;
15
+ /** Inches per unit typed as a bare number: what a number with no unit means in `unit`. */
16
+ export declare const bareScale: (unit: Unit) => number;
17
+ /** Whether lengths read with fractions (the fraction keys, Precision): as the prefs say, else for feet-inches and inches. */
18
+ export declare const showFractions: (u?: UnitPrefs) => boolean;
@@ -6,4 +6,10 @@ export function useUnitPrefs(p) {
6
6
  export function getUnitPrefs() {
7
7
  return current;
8
8
  }
9
+ /** Metric units: bare numbers, the grid and areas are metric. */
10
+ export const isMetric = (unit) => unit === 'mm' || unit === 'cm' || unit === 'm';
11
+ /** Inches per unit typed as a bare number: what a number with no unit means in `unit`. */
12
+ export const bareScale = (unit) => unit === 'ft' ? 12 : unit === 'mm' ? 1 / 25.4 : unit === 'cm' ? 1 / 2.54 : unit === 'm' ? 1 / 0.0254 : 1;
13
+ /** Whether lengths read with fractions (the fraction keys, Precision): as the prefs say, else for feet-inches and inches. */
14
+ export const showFractions = (u = getUnitPrefs()) => u.fractions ?? (u.unit === 'ftin' || u.unit === 'in');
9
15
  //# sourceMappingURL=prefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/units/prefs.ts"],"names":[],"mappings":"AASA,IAAI,OAAO,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAErD,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,CAAY;IACvC,OAAO,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/units/prefs.ts"],"names":[],"mappings":"AAWA,IAAI,OAAO,GAAc,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAErD,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,CAAY;IACvC,OAAO,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAW,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC;AAEhG,0FAA0F;AAC1F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAU,EAAU,EAAE,CAC9C,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3G,6HAA6H;AAC7H,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,GAAc,YAAY,EAAE,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reekon-tools/boldr-cad",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "BOLDR's 2D layout editor (React Native, iOS/Android/web) and how its drawings are kept in BOLDR.",
5
5
  "author": "REEKON Tools",
6
6
  "license": "MIT",
@@ -4,17 +4,20 @@ import type { CadDataProvider, CadFileMeta, CadMeasurementValue, CadPageDoc } fr
4
4
 
5
5
  const copy = <T,>(v: T): T => JSON.parse(JSON.stringify(v)) as T;
6
6
 
7
- export function memoryProvider(name = 'Test drawing', meta: CadFileMeta | null = null, pages: Record<string, CadPageDoc> = {}) {
8
- const fileSubs = new Set<(f: { name: string; meta: CadFileMeta | null } | null) => void>();
9
- const pageSubs = new Set<(p: Record<string, CadPageDoc>) => void>();
7
+ export function memoryProvider(name = 'Test drawing', meta: CadFileMeta | null = null, pages: Record<string, CadPageDoc> = {}, opts: { fromCache?: boolean } = {}) {
8
+ // (fromCache: what's here is the cache's word, as a device offline hears it, until confirm() brings the server's)
9
+ let fromCache = !!opts.fromCache;
10
+ const snap = () => ({ fromCache });
11
+ const fileSubs = new Set<(f: { name: string; meta: CadFileMeta | null } | null, m?: { fromCache: boolean }) => void>();
12
+ const pageSubs = new Set<(p: Record<string, CadPageDoc>, m?: { fromCache: boolean }) => void>();
10
13
  const state = { name, meta: meta && copy(meta), pages: copy(pages), writes: 0, uploads: 0, thumbnail: null as string | null, files: {} as Record<string, string>, measurements: {} as Record<string, CadMeasurementValue>, placed: [] as string[], placedLinked: [] as { groupId: string; id: string; columnId?: string }[] };
11
14
  const measSubs = new Set<(v: Record<string, CadMeasurementValue>) => void>();
12
15
  const emitMeas = () => measSubs.forEach(cb => cb(copy(state.measurements)));
13
- const emitFile = () => fileSubs.forEach(cb => cb({ name: state.name, meta: state.meta && copy(state.meta) }));
14
- const emitPages = () => pageSubs.forEach(cb => cb(copy(state.pages)));
16
+ const emitFile = () => fileSubs.forEach(cb => cb({ name: state.name, meta: state.meta && copy(state.meta) }, snap()));
17
+ const emitPages = () => pageSubs.forEach(cb => cb(copy(state.pages), snap()));
15
18
  const provider: CadDataProvider = {
16
- subscribeFile(cb) { fileSubs.add(cb); queueMicrotask(() => cb({ name: state.name, meta: state.meta && copy(state.meta) })); return () => { fileSubs.delete(cb); }; },
17
- subscribePages(cb) { pageSubs.add(cb); queueMicrotask(() => cb(copy(state.pages))); return () => { pageSubs.delete(cb); }; },
19
+ subscribeFile(cb) { fileSubs.add(cb); queueMicrotask(() => cb({ name: state.name, meta: state.meta && copy(state.meta) }, snap())); return () => { fileSubs.delete(cb); }; },
20
+ subscribePages(cb) { pageSubs.add(cb); queueMicrotask(() => cb(copy(state.pages), snap())); return () => { pageSubs.delete(cb); }; },
18
21
  async writeMeta(m) { state.meta = copy(m); state.writes++; emitFile(); },
19
22
  async writePage(id, p) { state.pages[id] = copy(p); state.writes++; emitPages(); },
20
23
  async deletePage(id) { delete state.pages[id]; state.writes++; emitPages(); },
@@ -33,5 +36,7 @@ export function memoryProvider(name = 'Test drawing', meta: CadFileMeta | null =
33
36
  const remote = (id: string, p: CadPageDoc) => { state.pages[id] = copy(p); emitPages(); };
34
37
  /** Change a measurement as someone else would (e.g. in the job's measurement list). */
35
38
  const remoteMeasurement = (id: string, value: number) => { state.measurements[id] = { ...state.measurements[id], value }; emitMeas(); };
36
- return { provider, state, remote, remoteMeasurement };
39
+ /** The server's word after a start from the cache: everything is sent again, confirmed. */
40
+ const confirm = () => { fromCache = false; emitFile(); emitPages(); };
41
+ return { provider, state, remote, remoteMeasurement, confirm };
37
42
  }
@@ -31,11 +31,18 @@ export interface CadPageDoc {
31
31
  rev?: { clientId: string; seq: number };
32
32
  }
33
33
 
34
+ /**
35
+ * Where a snapshot came from: the local cache, which may be stale and, offline, empty for what was never read on this
36
+ * device, or the server. Unset: the server. Firestore delivers the cache's answer first when it's offline; subscribe
37
+ * with metadata changes included, so the server's confirmation of an empty collection still arrives.
38
+ */
39
+ export interface CadSnapshotMeta { fromCache: boolean }
40
+
34
41
  export interface CadDataProvider {
35
- /** The file's name and drawing record (null record: not a drawing yet). Returns an unsubscribe function. */
36
- subscribeFile(cb: (file: { name: string; meta: CadFileMeta | null } | null) => void): () => void;
42
+ /** The file's name and drawing record (null record: not a drawing yet; null file: no such file). Returns an unsubscribe function. */
43
+ subscribeFile(cb: (file: { name: string; meta: CadFileMeta | null } | null, meta?: CadSnapshotMeta) => void): () => void;
37
44
  /** Every page of the drawing, by id. Returns an unsubscribe function. */
38
- subscribePages(cb: (pages: Record<string, CadPageDoc>) => void): () => void;
45
+ subscribePages(cb: (pages: Record<string, CadPageDoc>, meta?: CadSnapshotMeta) => void): () => void;
39
46
  writeMeta(meta: CadFileMeta): Promise<void>;
40
47
  writePage(id: string, page: CadPageDoc): Promise<void>;
41
48
  deletePage(id: string): Promise<void>;
package/src/data/sync.ts CHANGED
@@ -30,10 +30,16 @@ export class NotACadDrawing extends Error {
30
30
  }
31
31
 
32
32
  export interface CadSyncOptions {
33
- /** start a new drawing when the file has no drawing record yet (a file just created for it) */
33
+ /**
34
+ * The file was just created here: start its first page without waiting for the server's word on its pages (offline,
35
+ * the cache says there are none, as it says of any drawing never opened on this device). Also starts a new drawing
36
+ * when the file has no drawing record yet.
37
+ */
34
38
  initialize?: boolean;
35
39
  /** a write or upload failed */
36
40
  onError?: (e: unknown) => void;
41
+ /** closes the drawing while it's still opening (the person left): the promise rejects and nothing is written */
42
+ signal?: AbortSignal;
37
43
  }
38
44
 
39
45
  export interface CadSync {
@@ -72,6 +78,8 @@ const newClientId = () => Date.now().toString(36) + '-' + Math.floor(Math.random
72
78
  export function openCadDrawing(provider: CadDataProvider, opts: CadSyncOptions = {}): Promise<CadSync> {
73
79
  const clientId = newClientId();
74
80
  let seq = 0, file: { name: string; meta: CadFileMeta | null } | null | undefined, pages: Record<string, CadPageDoc> | undefined;
81
+ /** whether the latest file and pages snapshots are the cache's word rather than the server's */
82
+ let fileFromCache = false, pagesFromCache = false;
75
83
  /** what each page looked like when last saved or taken in (to tell local edits from remote ones) */
76
84
  const saved = new Map<string, string>();
77
85
  /** removed pages whose delete is queued or in flight */
@@ -245,6 +253,11 @@ export function openCadDrawing(provider: CadDataProvider, opts: CadSyncOptions =
245
253
  let ready = false;
246
254
  const tryOpen = () => {
247
255
  if (ready || file === undefined || pages === undefined) return;
256
+ // the cache's word isn't final: a file it hasn't got, or a drawing whose pages it hasn't got, may well be on the
257
+ // server — wait for its answer (a file just created here is fresh: its first page is made without waiting)
258
+ if (file === null && fileFromCache) return;
259
+ const fresh = !!opts.initialize && !file?.meta?.pageOrder.length;
260
+ if (file && !Object.keys(pages).length && pagesFromCache && !fresh) return;
248
261
  ready = true;
249
262
  if (file === null) { stop(); reject(new NotACadDrawing('missing')); return; }
250
263
  if (!file.meta && !opts.initialize) { stop(); reject(new NotACadDrawing('legacy')); return; }
@@ -277,9 +290,13 @@ export function openCadDrawing(provider: CadDataProvider, opts: CadSyncOptions =
277
290
  failures: () => failures,
278
291
  });
279
292
  };
280
- const unsubFile = provider.subscribeFile(f => { file = f; if (ready) takeIn(); else tryOpen(); });
281
- const unsubPages = provider.subscribePages(p => { pages = p; if (ready) takeIn(); else tryOpen(); });
293
+ const unsubFile = provider.subscribeFile((f, m) => { file = f; fileFromCache = !!m?.fromCache; if (ready) takeIn(); else tryOpen(); });
294
+ const unsubPages = provider.subscribePages((p, m) => { pages = p; pagesFromCache = !!m?.fromCache; if (ready) takeIn(); else tryOpen(); });
282
295
  unsubMeas = meas ? meas.subscribe(takeInMeasurements) : null;
283
296
  function stop() { stopped = true; unsubFile(); unsubPages(); unsubMeas?.(); }
297
+ // left while still opening: let go of the drawing, nothing written
298
+ const abort = () => { if (ready) return; ready = true; stop(); reject(new Error('closed')); };
299
+ if (opts.signal?.aborted) abort();
300
+ else opts.signal?.addEventListener('abort', abort, { once: true });
284
301
  });
285
302
  }
@@ -258,7 +258,7 @@ function thicknessPrompt(walls: { thick?: number }[]): void {
258
258
  const sk = SK();
259
259
  if (!walls.length) return;
260
260
  openKeypad({
261
- title: 'Wall thickness', sub: 'Finished face to face', initial: fmtLen(walls[0].thick || 4.5), selectAll: true,
261
+ title: 'Wall thickness', sub: 'Finished face to face', initial: fmtLen(walls[0].thick || 4.5), value: walls[0].thick || 4.5, selectAll: true,
262
262
  onDone: v => {
263
263
  if (v <= 0) return;
264
264
  // a thicker wall's faces are shorter (its corners come in): not shorter than what's on them — and what's measured
@@ -646,7 +646,7 @@ export const heightTool = placingTool({
646
646
  },
647
647
  place: (_u, z) => {
648
648
  const q = 1 / settings.denom, start = clamp(Math.round(z / q) * q, 0, elev.frame!.H);
649
- openKeypad({ title: 'Height line', sub: 'Floor to the line — it runs across the whole wall', initial: fmtLen(start), selectAll: true, laser: true, onDone: v => { addHeightLine(v); } });
649
+ openKeypad({ title: 'Height line', sub: 'Floor to the line — it runs across the whole wall', initial: fmtLen(start), value: start, selectAll: true, laser: true, onDone: v => { addHeightLine(v); } });
650
650
  },
651
651
  hint: 'Tap the wall at a height, then enter it: a level line across the wall (a counter, a rail).',
652
652
  });
@@ -157,7 +157,7 @@ export function dimensionFace(kind: 'h' | 'v', a: string, b: string, title: stri
157
157
  if (!face.points[a] || !face.points[b]) return;
158
158
  const cur = measure(face, { type: 'dist', kind, a, b });
159
159
  openKeypad({
160
- title, initial: fmtLen(cur), selectAll: true, laser: true,
160
+ title, initial: fmtLen(cur), value: cur, selectAll: true, laser: true,
161
161
  onDone: v => {
162
162
  if (v < 0) return;
163
163
  const face = curFace(), pa = face.points[a], pb = face.points[b];
@@ -204,7 +204,7 @@ export function editCabinetDepth(cabId: string): void {
204
204
  const cb = curFace().cabs?.[cabId];
205
205
  if (!cb) return;
206
206
  openKeypad({
207
- title: 'Cabinet depth', sub: 'From the wall out into the room', initial: fmtLen(cb.depth), selectAll: true, laser: true,
207
+ title: 'Cabinet depth', sub: 'From the wall out into the room', initial: fmtLen(cb.depth), value: cb.depth, selectAll: true, laser: true,
208
208
  onDone: v => { if (v <= 0) return; pushHistory(); cb.depth = v; cb.depthSet = true; afterEdit(); },
209
209
  });
210
210
  }
@@ -1,6 +1,6 @@
1
1
  import { sessionState } from '../model/session';
2
2
  import { settings } from '../model/settings';
3
- import { fmtAng, fmtLen, parseLen, parseNum } from '../units';
3
+ import { fmtAng, fmtLen, parseLen, parseNum, showFractions } from '../units';
4
4
  import { closeKeypad, refreshKeypad, type KeypadSpec } from './ports';
5
5
 
6
6
  /*
@@ -13,6 +13,8 @@ interface Kp {
13
13
  spec: KeypadSpec; text: string; fresh: boolean; error?: string; host?: boolean;
14
14
  /** the last laser reading's record (laserReading's capture), and what it put in the display: kept while that's unchanged */
15
15
  capture?: { of: unknown; text: string };
16
+ /** the exact value behind the display (inches), and the text it was shown as: it's the value while that text stands */
17
+ exact?: { v: number; text: string };
16
18
  }
17
19
  const kps = sessionState(() => ({ cur: null as Kp | null }));
18
20
 
@@ -32,12 +34,24 @@ export const keypadOpen = (): boolean => !!kps.cur;
32
34
  export const keypadSpec = (): KeypadSpec | null => kps.cur?.spec ?? null;
33
35
  export const keypadText = (): string => kps.cur?.text ?? '';
34
36
  export const keypadFresh = (): boolean => !!kps.cur?.fresh;
35
- /** The fraction row shows for lengths in feet and inches, not for degrees or millimetres. */
36
- export const fractionRowShown = (): boolean => !(kps.cur?.spec.numeric || settings.unit === 'mm');
37
+ /** The fraction row shows for lengths read with fractions (feet and inches), not for degrees, metric or decimal units. */
38
+ export const fractionRowShown = (): boolean => !(kps.cur?.spec.numeric || !showFractions());
39
+
40
+ const isMetricUnit = (): boolean => settings.unit === 'mm' || settings.unit === 'cm' || settings.unit === 'm';
41
+ /** An example to type, in the person's units. */
42
+ const lengthExample = (): string => {
43
+ const u = settings.unit;
44
+ if (u === 'mm') return '2540 or 8\' 4"';
45
+ if (u === 'cm') return '254 or 2.5 m';
46
+ if (u === 'm') return '2.54 or 254 cm';
47
+ if (u === 'ft') return '8.5 or 10\' 6"';
48
+ return showFractions() ? '12\' 6" or 150.5' : '12\' 6.5" or 150.5';
49
+ };
37
50
 
38
51
  /** Open the keypad for `spec`; `host`: the host shows its own keypad for it (see react/hostKeypad.ts). */
39
52
  export function keypadStart(spec: KeypadSpec, host = false): void {
40
- kps.cur = { spec, text: spec.initial || '', fresh: !!spec.selectAll, host };
53
+ const text = spec.initial || '';
54
+ kps.cur = { spec, text, fresh: !!spec.selectAll, host, exact: spec.value !== undefined && text ? { v: spec.value, text } : undefined };
41
55
  }
42
56
 
43
57
  /** Whether the open keypad is the host's own. */
@@ -99,6 +113,7 @@ export function keypadDeleteLast(): void {
99
113
  export function keypadSetReading(v: number): void {
100
114
  if (!kps.cur) return;
101
115
  kps.cur.text = fmtLen(v);
116
+ kps.cur.exact = { v, text: kps.cur.text };
102
117
  kps.cur.fresh = true;
103
118
  kps.cur.error = undefined;
104
119
  }
@@ -120,7 +135,9 @@ export function keypadTakeLaser(v: number, capture?: unknown): boolean {
120
135
  /** The last reading's record, if the display still shows what it put there. */
121
136
  const readingCapture = (k: Kp): unknown => (k.capture && k.capture.text === k.text ? k.capture.of : undefined);
122
137
 
123
- const parse = (k: Kp): number | null => (k.spec.numeric ? parseNum(k.text) : parseLen(k.text));
138
+ // (a length shown rounded, left as it is, applies as the exact value it stands for)
139
+ const parse = (k: Kp): number | null =>
140
+ k.spec.numeric ? parseNum(k.text) : k.exact && k.exact.text === k.text ? k.exact.v : parseLen(k.text);
124
141
 
125
142
  /** The value currently typed, or null if none/unreadable (for live previews on the canvas). */
126
143
  export function keypadTyped(): number | null {
@@ -134,7 +151,7 @@ export function keypadPreview(): { text: string; bad: boolean } {
134
151
  const k = kps.cur;
135
152
  if (!k) return { text: '', bad: false };
136
153
  if (k.error) return { text: k.error, bad: true };
137
- if (!k.text.trim()) return { text: k.spec.numeric ? 'Type a number' : 'Try 12\' 6 1/2" or 150.5', bad: false };
154
+ if (!k.text.trim()) return { text: k.spec.numeric ? 'Type a number' : 'Try ' + (showFractions() && !isMetricUnit() ? '12\' 6 1/2" or 150.5' : lengthExample()), bad: false };
138
155
  const v = parse(k);
139
156
  if (v == null) return { text: 'Can’t read that yet', bad: true };
140
157
  return { text: '= ' + (k.spec.numeric ? fmtAng(v) : fmtLen(v)), bad: false };
@@ -143,7 +160,7 @@ export function keypadPreview(): { text: string; bad: boolean } {
143
160
  /** Apply: the value, or the message to show when it can't be read. The caller closes the keypad and runs onDone. */
144
161
  export function keypadValue(): { v: number } | { error: string } {
145
162
  const v = kps.cur ? parse(kps.cur) : null;
146
- return v == null ? { error: 'Enter a length like 12\' 6" or 150.5' } : { v };
163
+ return v == null ? { error: 'Enter a length like ' + lengthExample() } : { v };
147
164
  }
148
165
 
149
166
  /** A value from the host's own keypad (or a laser reading into it): close the keypad and hand it on, as Apply does. */
@@ -26,6 +26,8 @@ export interface KeypadSpec {
26
26
  title: string;
27
27
  sub?: string;
28
28
  initial?: string;
29
+ /** the exact value `initial` shows (inches): applied as it is while the text isn't changed, so a value shown rounded doesn't move */
30
+ value?: number;
29
31
  /** typing replaces the initial value */
30
32
  selectAll?: boolean;
31
33
  /** degrees keypad instead of lengths */