@reekon-tools/boldr-utils 1.0.0 → 1.0.2

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.
@@ -0,0 +1,4 @@
1
+ export declare const useParseMeasurement: () => {
2
+ parseMeasurementInput: (input: string, defaultUnit?: string) => number | null;
3
+ error: string | null;
4
+ };
@@ -0,0 +1,15 @@
1
+ import { useState } from 'react';
2
+ import { parseMeasurement } from '../utils/parseMeasurement';
3
+ export const useParseMeasurement = () => {
4
+ const [error, setError] = useState(null);
5
+ const parseMeasurementInput = (input, defaultUnit = 'mm') => {
6
+ setError(null);
7
+ const result = parseMeasurement(input, defaultUnit);
8
+ if (result === null) {
9
+ setError('Invalid measurement. Please provide a valid number and unit.');
10
+ }
11
+ return result;
12
+ };
13
+ return { parseMeasurementInput, error };
14
+ };
15
+ //# sourceMappingURL=useParseMeasurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParseMeasurement.js","sourceRoot":"","sources":["../../src/hooks/useParseMeasurement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,cAAsB,IAAI,EAAE,EAAE;QAC1E,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,QAAQ,CAAC,8DAA8D,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;AAC1C,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -48,11 +48,15 @@ export interface Section {
48
48
  name: string;
49
49
  tableConfig: ColumnConfig[];
50
50
  measurements: string[];
51
+ projectId: string;
52
+ jobId: string;
51
53
  }
52
54
  export interface Group {
53
55
  id: string;
54
56
  sectionId: string;
55
57
  columns: Record<string, any>;
58
+ jobId: string;
59
+ projectId: string;
56
60
  }
57
61
  export interface ColumnConfig {
58
62
  id: string;
@@ -80,7 +84,7 @@ export declare enum Units {
80
84
  FeetInchesDecimal = "ft_in_decimal",
81
85
  FeetInchesFractional = "ft_in_frac"
82
86
  }
83
- export declare const convertUnitsToReadable: (targetUnit: Units) => "cm" | "mm" | "m" | "in" | "ft" | "in (fractional)" | "ft-in (decimal)" | "ft-in (fractional)";
87
+ export declare const convertUnitsToReadable: (targetUnit: Units) => "cm" | "mm" | "m" | "in" | "ft" | "in (fractional)" | "ft-in (decimal)" | "ft-in (fractional)" | null;
84
88
  export interface Measurement {
85
89
  type: MeasurementType;
86
90
  id: string;
package/dist/index.js ADDED
@@ -0,0 +1,70 @@
1
+ export var OrganizationRole;
2
+ (function (OrganizationRole) {
3
+ OrganizationRole["Owner"] = "owner";
4
+ OrganizationRole["Editor"] = "editor";
5
+ })(OrganizationRole || (OrganizationRole = {}));
6
+ export var InvitationStatus;
7
+ (function (InvitationStatus) {
8
+ InvitationStatus["Pending"] = "pending";
9
+ InvitationStatus["Accepted"] = "accepted";
10
+ })(InvitationStatus || (InvitationStatus = {}));
11
+ export var ColumnType;
12
+ (function (ColumnType) {
13
+ ColumnType["Text"] = "text";
14
+ ColumnType["Number"] = "number";
15
+ ColumnType["Measurement"] = "measurement";
16
+ ColumnType["Boolean"] = "boolean";
17
+ })(ColumnType || (ColumnType = {}));
18
+ export var MeasurementType;
19
+ (function (MeasurementType) {
20
+ })(MeasurementType || (MeasurementType = {}));
21
+ export var Units;
22
+ (function (Units) {
23
+ Units["Centimeters"] = "cm";
24
+ Units["Millimeters"] = "mm";
25
+ Units["Meters"] = "m";
26
+ Units["Inches"] = "in";
27
+ Units["FractionalInches"] = "in_frac";
28
+ Units["Feet"] = "ft";
29
+ Units["FeetInchesDecimal"] = "ft_in_decimal";
30
+ Units["FeetInchesFractional"] = "ft_in_frac";
31
+ })(Units || (Units = {}));
32
+ export const convertUnitsToReadable = (targetUnit) => {
33
+ switch (targetUnit) {
34
+ case Units.Meters:
35
+ return 'm';
36
+ case Units.Millimeters:
37
+ return 'mm';
38
+ case Units.Centimeters:
39
+ return 'cm';
40
+ case Units.Feet:
41
+ return 'ft';
42
+ case Units.FractionalInches:
43
+ return 'in (fractional)';
44
+ case Units.Inches:
45
+ return 'in';
46
+ case Units.FeetInchesDecimal:
47
+ return 'ft-in (decimal)';
48
+ case Units.FeetInchesFractional:
49
+ return 'ft-in (fractional)';
50
+ default:
51
+ return null;
52
+ }
53
+ };
54
+ export var FractionalTolerance;
55
+ (function (FractionalTolerance) {
56
+ FractionalTolerance["Fourth"] = "4";
57
+ FractionalTolerance["Eighth"] = "8";
58
+ FractionalTolerance["Sixteenth"] = "16";
59
+ FractionalTolerance["ThirtySecond"] = "32";
60
+ FractionalTolerance["SixtyFourth"] = "64";
61
+ FractionalTolerance["OneTwentyEighth"] = "128";
62
+ })(FractionalTolerance || (FractionalTolerance = {}));
63
+ export var DecimalTolerance;
64
+ (function (DecimalTolerance) {
65
+ DecimalTolerance["Half"] = "0.5";
66
+ DecimalTolerance["Tenth"] = "0.1";
67
+ DecimalTolerance["Hundredth"] = "0.01";
68
+ DecimalTolerance["Thousandth"] = "0.001";
69
+ })(DecimalTolerance || (DecimalTolerance = {}));
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAME,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,yCAAqB,CAAA;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AA8DH,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,yCAA2B,CAAA;IAC3B,iCAAmB,CAAA;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAMD,MAAM,CAAN,IAAY,eAAkB;AAA9B,WAAY,eAAe;AAAE,CAAC,EAAlB,eAAe,KAAf,eAAe,QAAG;AAE9B,MAAM,CAAN,IAAY,KASX;AATD,WAAY,KAAK;IACf,2BAAkB,CAAA;IAClB,2BAAkB,CAAA;IAClB,qBAAY,CAAA;IACZ,sBAAa,CAAA;IACb,qCAA4B,CAAA;IAC5B,oBAAW,CAAA;IACX,4CAAmC,CAAA;IACnC,4CAAmC,CAAA;AACrC,CAAC,EATW,KAAK,KAAL,KAAK,QAShB;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAiB,EAAE,EAAE;IAC1D,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK,CAAC,MAAM;YACf,OAAO,GAAG,CAAC;QACb,KAAK,KAAK,CAAC,WAAW;YACpB,OAAO,IAAI,CAAC;QACd,KAAK,KAAK,CAAC,WAAW;YACpB,OAAO,IAAI,CAAC;QACd,KAAK,KAAK,CAAC,IAAI;YACb,OAAO,IAAI,CAAC;QACd,KAAK,KAAK,CAAC,gBAAgB;YACzB,OAAO,iBAAiB,CAAC;QAC3B,KAAK,KAAK,CAAC,MAAM;YACf,OAAO,IAAI,CAAC;QACd,KAAK,KAAK,CAAC,iBAAiB;YAC1B,OAAO,iBAAiB,CAAC;QAC3B,KAAK,KAAK,CAAC,oBAAoB;YAC7B,OAAO,oBAAoB,CAAC;QAC9B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAcF,MAAM,CAAN,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,mCAAY,CAAA;IACZ,mCAAY,CAAA;IACZ,uCAAgB,CAAA;IAChB,0CAAmB,CAAA;IACnB,yCAAkB,CAAA;IAClB,8CAAuB,CAAA;AACzB,CAAC,EAPW,mBAAmB,KAAnB,mBAAmB,QAO9B;AAED,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,gCAAY,CAAA;IACZ,iCAAa,CAAA;IACb,sCAAkB,CAAA;IAClB,wCAAoB,CAAA;AACtB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B"}
@@ -0,0 +1 @@
1
+ export declare const parseMeasurement: (input: string, defaultUnit?: string) => number | null;
@@ -0,0 +1,32 @@
1
+ import { all, create } from 'mathjs';
2
+ const math = create(all);
3
+ export const parseMeasurement = (input, defaultUnit = 'mm') => {
4
+ try {
5
+ // Trim and normalize spaces
6
+ const normalizedInput = input.trim().replace(/\s+/g, ' ');
7
+ // Preprocess mixed fractions (e.g., "12 1/2" -> "12 + 1/2")
8
+ const processedInput = normalizedInput.replace(/(\d+)\s+(\d+\/\d+)/g, '$1 + $2');
9
+ // Match numeric value and optional unit
10
+ const match = processedInput.match(/^([\d.+\-*/\s]+)\s*(\w+)?$/);
11
+ if (!match) {
12
+ throw new Error('Invalid input format');
13
+ }
14
+ const [_, value, unit] = match;
15
+ // Evaluate the numeric value (e.g., "12 + 1/2")
16
+ const numericValue = math.evaluate(value.trim());
17
+ // Use the provided unit or fallback to the default unit
18
+ const targetUnit = unit || defaultUnit;
19
+ // Convert to micrometers
20
+ return math.unit(numericValue, targetUnit).toNumber('um');
21
+ }
22
+ catch (err) {
23
+ if (err instanceof Error) {
24
+ console.error('Invalid measurement:', err.message);
25
+ }
26
+ else {
27
+ console.error('An unknown error occurred:', err);
28
+ }
29
+ return null;
30
+ }
31
+ };
32
+ //# sourceMappingURL=parseMeasurement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseMeasurement.js","sourceRoot":"","sources":["../../src/utils/parseMeasurement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAEzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAAa,EACb,cAAsB,IAAI,EACX,EAAE;IACjB,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE1D,4DAA4D;QAC5D,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAC5C,qBAAqB,EACrB,SAAS,CACV,CAAC;QAEF,wCAAwC;QACxC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAE/B,gDAAgD;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjD,wDAAwD;QACxD,MAAM,UAAU,GAAG,IAAI,IAAI,WAAW,CAAC;QAEvC,yBAAyB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reekon-tools/boldr-utils",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Shared utilities for Boldr projects in Reekon Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,7 +14,14 @@
14
14
  "author": "",
15
15
  "license": "ISC",
16
16
  "repository": "https://gitlab.com/reekon-tools/software/rock-pro/boldr-types#",
17
+ "dependencies": {
18
+ "mathjs": "^11.11.0"
19
+ },
20
+ "peerDependencies": {
21
+ "react": "^18.0.0"
22
+ },
17
23
  "devDependencies": {
24
+ "@types/react": "^19.0.8",
18
25
  "typescript": "^5.7.3"
19
26
  },
20
27
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"