@speleotica/frcsdata 4.2.0 → 4.3.1

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 (81) hide show
  1. package/FrcsPlotFile.d.ts +1 -0
  2. package/FrcsPlotFile.d.ts.map +1 -0
  3. package/FrcsPlotFile.js +2 -1
  4. package/FrcsPlotFile.js.map +1 -0
  5. package/FrcsPlotShot.d.ts +1 -0
  6. package/FrcsPlotShot.d.ts.map +1 -0
  7. package/FrcsPlotShot.js +2 -1
  8. package/FrcsPlotShot.js.map +1 -0
  9. package/FrcsShot.d.ts +1 -0
  10. package/FrcsShot.d.ts.map +1 -0
  11. package/FrcsShot.js +2 -1
  12. package/FrcsShot.js.map +1 -0
  13. package/FrcsSurveyFile.d.ts +20 -0
  14. package/FrcsSurveyFile.d.ts.map +1 -0
  15. package/FrcsSurveyFile.js +20 -1
  16. package/FrcsSurveyFile.js.map +1 -0
  17. package/FrcsTrip.d.ts +1 -0
  18. package/FrcsTrip.d.ts.map +1 -0
  19. package/FrcsTrip.js +2 -1
  20. package/FrcsTrip.js.map +1 -0
  21. package/FrcsTripSummary.d.ts +1 -0
  22. package/FrcsTripSummary.d.ts.map +1 -0
  23. package/FrcsTripSummary.js +2 -1
  24. package/FrcsTripSummary.js.map +1 -0
  25. package/FrcsTripSummaryFile.d.ts +1 -0
  26. package/FrcsTripSummaryFile.d.ts.map +1 -0
  27. package/FrcsTripSummaryFile.js +2 -1
  28. package/FrcsTripSummaryFile.js.map +1 -0
  29. package/formatFrcsShot.d.ts +8 -2
  30. package/formatFrcsShot.d.ts.map +1 -0
  31. package/formatFrcsShot.js +85 -62
  32. package/formatFrcsShot.js.map +1 -0
  33. package/formatFrcsSurveyFile.d.ts +3 -0
  34. package/formatFrcsSurveyFile.d.ts.map +1 -0
  35. package/formatFrcsSurveyFile.js +165 -0
  36. package/formatFrcsSurveyFile.js.map +1 -0
  37. package/index.d.ts +3 -1
  38. package/index.d.ts.map +1 -0
  39. package/index.js +9 -1
  40. package/index.js.map +1 -0
  41. package/node/index.d.ts +2 -1
  42. package/node/index.d.ts.map +1 -0
  43. package/node/index.js +6 -2
  44. package/node/index.js.map +1 -0
  45. package/package.json +6 -3
  46. package/parseFrcsPlotFile.d.ts +1 -0
  47. package/parseFrcsPlotFile.d.ts.map +1 -0
  48. package/parseFrcsPlotFile.js +2 -1
  49. package/parseFrcsPlotFile.js.map +1 -0
  50. package/parseFrcsSurveyFile.d.ts +50 -46
  51. package/parseFrcsSurveyFile.d.ts.map +1 -0
  52. package/parseFrcsSurveyFile.js +281 -172
  53. package/parseFrcsSurveyFile.js.map +1 -0
  54. package/parseFrcsTripSummaryFile.d.ts +1 -0
  55. package/parseFrcsTripSummaryFile.d.ts.map +1 -0
  56. package/parseFrcsTripSummaryFile.js +2 -1
  57. package/parseFrcsTripSummaryFile.js.map +1 -0
  58. package/src/FrcsPlotFile.ts +9 -0
  59. package/src/FrcsPlotShot.ts +18 -0
  60. package/src/FrcsShot.ts +56 -0
  61. package/src/FrcsSurveyFile.ts +47 -0
  62. package/src/FrcsTrip.ts +25 -0
  63. package/src/FrcsTripSummary.ts +14 -0
  64. package/src/FrcsTripSummaryFile.ts +7 -0
  65. package/src/formatFrcsShot.ts +168 -0
  66. package/src/formatFrcsSurveyFile.ts +97 -0
  67. package/src/index.ts +29 -0
  68. package/src/node/index.ts +20 -0
  69. package/src/parseFrcsPlotFile.ts +168 -0
  70. package/src/parseFrcsSurveyFile.ts +788 -0
  71. package/src/parseFrcsTripSummaryFile.ts +76 -0
  72. package/src/string/index.ts +21 -0
  73. package/src/web/index.ts +119 -0
  74. package/string/index.d.ts +2 -1
  75. package/string/index.d.ts.map +1 -0
  76. package/string/index.js +6 -2
  77. package/string/index.js.map +1 -0
  78. package/web/index.d.ts +5 -4
  79. package/web/index.d.ts.map +1 -0
  80. package/web/index.js +15 -6
  81. package/web/index.js.map +1 -0
package/FrcsPlotFile.d.ts CHANGED
@@ -6,3 +6,4 @@ export type FrcsPlotFile = {
6
6
  shots: Array<FrcsPlotShot>;
7
7
  errors?: Array<SegmentParseError> | null;
8
8
  };
9
+ //# sourceMappingURL=FrcsPlotFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsPlotFile.d.ts","sourceRoot":"","sources":["src/FrcsPlotFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACnC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;CACzC,CAAA"}
package/FrcsPlotFile.js CHANGED
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ //# sourceMappingURL=FrcsPlotFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsPlotFile.js","names":[],"sources":["src/FrcsPlotFile.ts"],"sourcesContent":["import { UnitizedNumber, Length } from '@speleotica/unitized'\nimport { FrcsPlotShot } from './FrcsPlotShot'\nimport { SegmentParseError } from 'parse-segment'\n\nexport type FrcsPlotFile = {\n totalLength: UnitizedNumber<Length>\n shots: Array<FrcsPlotShot>\n errors?: Array<SegmentParseError> | null\n}\n"],"mappings":"","ignoreList":[]}
package/FrcsPlotShot.d.ts CHANGED
@@ -15,3 +15,4 @@ export type FrcsPlotShot = {
15
15
  down: UnitizedNumber<Length>;
16
16
  tripNumber?: number | null;
17
17
  };
18
+ //# sourceMappingURL=FrcsPlotShot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsPlotShot.d.ts","sourceRoot":"","sources":["src/FrcsPlotShot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7D,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAChC,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACjC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACnC,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACpC,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACpC,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACrC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC1B,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA"}
package/FrcsPlotShot.js CHANGED
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ //# sourceMappingURL=FrcsPlotShot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsPlotShot.js","names":[],"sources":["src/FrcsPlotShot.ts"],"sourcesContent":["import { UnitizedNumber, Length } from '@speleotica/unitized'\n\nexport type FrcsPlotShot = {\n toName: string\n isSurface?: boolean | null\n fromNumber: number\n toNumber: number\n easting: UnitizedNumber<Length>\n northing: UnitizedNumber<Length>\n elevation: UnitizedNumber<Length>\n leftEasting: UnitizedNumber<Length>\n leftNorthing: UnitizedNumber<Length>\n rightEasting: UnitizedNumber<Length>\n rightNorthing: UnitizedNumber<Length>\n up: UnitizedNumber<Length>\n down: UnitizedNumber<Length>\n tripNumber?: number | null\n}\n"],"mappings":"","ignoreList":[]}
package/FrcsShot.d.ts CHANGED
@@ -54,3 +54,4 @@ export type FrcsShot = {
54
54
  units?: FrcsUnits;
55
55
  };
56
56
  };
57
+ //# sourceMappingURL=FrcsShot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsShot.d.ts","sourceRoot":"","sources":["src/FrcsShot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtC,oBAAY,YAAY;IACtB,MAAM,MAAM;IACZ,UAAU,MAAM;IAChB,QAAQ,MAAM;CACf;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAChC,kBAAkB,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAClD,gBAAgB,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAChD,iBAAiB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAChD,qBAAqB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACpD,gBAAgB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IAC/C,oBAAoB,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QACpC,KAAK,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QACrC,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QAClC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KACrC,CAAA;IACD;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QACpC,KAAK,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QACrC,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QAClC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;KACrC,CAAA;IACD,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG;QAAE,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CAAA;CAC5C,CAAA"}
package/FrcsShot.js CHANGED
@@ -9,4 +9,5 @@ var FrcsShotKind = exports.FrcsShotKind = /*#__PURE__*/function (FrcsShotKind) {
9
9
  FrcsShotKind["Horizontal"] = "H";
10
10
  FrcsShotKind["Diagonal"] = "D";
11
11
  return FrcsShotKind;
12
- }({});
12
+ }({});
13
+ //# sourceMappingURL=FrcsShot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsShot.js","names":["FrcsShotKind","exports"],"sources":["src/FrcsShot.ts"],"sourcesContent":["import { UnitizedNumber, Length, Angle } from '@speleotica/unitized'\nimport { FrcsUnits } from './FrcsTrip'\n\nexport enum FrcsShotKind {\n Normal = ' ',\n Horizontal = 'H',\n Diagonal = 'D',\n}\n\nexport type FrcsShot = {\n /**\n * Name of from station\n */\n from: string\n /**\n * Name of to station\n */\n to?: string | null\n kind: FrcsShotKind\n distance: UnitizedNumber<Length>\n horizontalDistance?: UnitizedNumber<Length> | null\n verticalDistance?: UnitizedNumber<Length> | null\n frontsightAzimuth?: UnitizedNumber<Angle> | null\n frontsightInclination?: UnitizedNumber<Angle> | null\n backsightAzimuth?: UnitizedNumber<Angle> | null\n backsightInclination?: UnitizedNumber<Angle> | null\n /**\n * LRUDs at from station\n */\n fromLruds?: {\n left?: UnitizedNumber<Length> | null\n right?: UnitizedNumber<Length> | null\n up?: UnitizedNumber<Length> | null\n down?: UnitizedNumber<Length> | null\n }\n /**\n * LRUDs at to station\n */\n toLruds?: {\n left?: UnitizedNumber<Length> | null\n right?: UnitizedNumber<Length> | null\n up?: UnitizedNumber<Length> | null\n down?: UnitizedNumber<Length> | null\n }\n excludeDistance?: boolean | null\n isSplay?: boolean | null\n comment?: string | null\n /**\n * In the edge case that the surveyors changed measurement units or\n * corrected/uncorrected backsights in the middle of a trip, the measurements\n * will be normalized to the initial trip settings, and this field will contain\n * the actual values recorded, verbatim. The first shot of the group with\n * changed units will include the changed units.\n */\n recorded?: FrcsShot & { units?: FrcsUnits }\n}\n"],"mappings":";;;;;;IAGYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}
@@ -2,8 +2,28 @@ import { FrcsTrip } from './FrcsTrip';
2
2
  import { SegmentParseError } from 'parse-segment';
3
3
  export type FrcsSurveyFile = {
4
4
  cave?: string | null;
5
+ columns?: FrcsShotColumnConfig;
5
6
  location?: string | null;
6
7
  comment?: string | null;
7
8
  trips: Array<FrcsTrip>;
8
9
  errors?: Array<SegmentParseError> | null;
9
10
  };
11
+ export type FrcsShotColumnConfig = {
12
+ toStation: number;
13
+ fromStation: number;
14
+ distance: number;
15
+ distanceFeet: number;
16
+ distanceInches: number;
17
+ kind: number;
18
+ exclude: number;
19
+ frontsightAzimuth: number;
20
+ backsightAzimuth: number;
21
+ frontsightInclination: number;
22
+ backsightInclination: number;
23
+ left: number;
24
+ right: number;
25
+ up: number;
26
+ down: number;
27
+ };
28
+ export declare const defaultFrcsShotColumnConfig: FrcsShotColumnConfig;
29
+ //# sourceMappingURL=FrcsSurveyFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsSurveyFile.d.ts","sourceRoot":"","sources":["src/FrcsSurveyFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,oBAgBzC,CAAA"}
package/FrcsSurveyFile.js CHANGED
@@ -2,4 +2,23 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.defaultFrcsShotColumnConfig = void 0;
7
+ var defaultFrcsShotColumnConfig = exports.defaultFrcsShotColumnConfig = {
8
+ toStation: 5,
9
+ fromStation: 5,
10
+ distance: 6,
11
+ distanceFeet: 4,
12
+ distanceInches: 3,
13
+ kind: 1,
14
+ exclude: 1,
15
+ frontsightAzimuth: 6,
16
+ backsightAzimuth: 6,
17
+ frontsightInclination: 5,
18
+ backsightInclination: 5,
19
+ left: 3,
20
+ right: 3,
21
+ up: 3,
22
+ down: 3
23
+ };
24
+ //# sourceMappingURL=FrcsSurveyFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsSurveyFile.js","names":["defaultFrcsShotColumnConfig","exports","toStation","fromStation","distance","distanceFeet","distanceInches","kind","exclude","frontsightAzimuth","backsightAzimuth","frontsightInclination","backsightInclination","left","right","up","down"],"sources":["src/FrcsSurveyFile.ts"],"sourcesContent":["import { FrcsTrip } from './FrcsTrip'\nimport { SegmentParseError } from 'parse-segment'\n\nexport type FrcsSurveyFile = {\n cave?: string | null\n columns?: FrcsShotColumnConfig\n location?: string | null\n comment?: string | null\n trips: Array<FrcsTrip>\n errors?: Array<SegmentParseError> | null\n}\n\nexport type FrcsShotColumnConfig = {\n toStation: number\n fromStation: number\n distance: number\n distanceFeet: number\n distanceInches: number\n kind: number\n exclude: number\n frontsightAzimuth: number\n backsightAzimuth: number\n frontsightInclination: number\n backsightInclination: number\n left: number\n right: number\n up: number\n down: number\n}\n\nexport const defaultFrcsShotColumnConfig: FrcsShotColumnConfig = {\n toStation: 5,\n fromStation: 5,\n distance: 6,\n distanceFeet: 4,\n distanceInches: 3,\n kind: 1,\n exclude: 1,\n frontsightAzimuth: 6,\n backsightAzimuth: 6,\n frontsightInclination: 5,\n backsightInclination: 5,\n left: 3,\n right: 3,\n up: 3,\n down: 3,\n}\n"],"mappings":";;;;;;AA8BO,IAAMA,2BAAiD,GAAAC,OAAA,CAAAD,2BAAA,GAAG;EAC/DE,SAAS,EAAE,CAAC;EACZC,WAAW,EAAE,CAAC;EACdC,QAAQ,EAAE,CAAC;EACXC,YAAY,EAAE,CAAC;EACfC,cAAc,EAAE,CAAC;EACjBC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,iBAAiB,EAAE,CAAC;EACpBC,gBAAgB,EAAE,CAAC;EACnBC,qBAAqB,EAAE,CAAC;EACxBC,oBAAoB,EAAE,CAAC;EACvBC,IAAI,EAAE,CAAC;EACPC,KAAK,EAAE,CAAC;EACRC,EAAE,EAAE,CAAC;EACLC,IAAI,EAAE;AACR,CAAC","ignoreList":[]}
package/FrcsTrip.d.ts CHANGED
@@ -20,3 +20,4 @@ export type FrcsTrip = {
20
20
  header: FrcsTripHeader;
21
21
  shots: Array<FrcsShot>;
22
22
  };
23
+ //# sourceMappingURL=FrcsTrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTrip.d.ts","sourceRoot":"","sources":["src/FrcsTrip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,yBAAyB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC1C,6BAA6B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9C,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACpC,uBAAuB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;CACvB,CAAA"}
package/FrcsTrip.js CHANGED
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ //# sourceMappingURL=FrcsTrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTrip.js","names":[],"sources":["src/FrcsTrip.ts"],"sourcesContent":["import { Unit, Length, Angle } from '@speleotica/unitized'\nimport { FrcsShot } from './FrcsShot'\n\nexport type FrcsUnits = {\n distanceUnit: Unit<Length>\n azimuthUnit: Unit<Angle>\n inclinationUnit: Unit<Angle>\n backsightAzimuthCorrected?: boolean | null\n backsightInclinationCorrected?: boolean | null\n hasBacksightAzimuth?: boolean | null\n hasBacksightInclination?: boolean | null\n}\n\nexport type FrcsTripHeader = FrcsUnits & {\n name: string\n comment?: string | null\n section?: string | null\n date?: Date | null\n team?: Array<string> | null\n}\n\nexport type FrcsTrip = {\n header: FrcsTripHeader\n shots: Array<FrcsShot>\n}\n"],"mappings":"","ignoreList":[]}
@@ -11,3 +11,4 @@ export type FrcsTripSummary = {
11
11
  team: Array<string>;
12
12
  shots: Array<string>;
13
13
  };
14
+ //# sourceMappingURL=FrcsTripSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTripSummary.d.ts","sourceRoot":"","sources":["src/FrcsTripSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7D,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,IAAI,CAAA;IACV,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IACtC,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACrB,CAAA"}
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ //# sourceMappingURL=FrcsTripSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTripSummary.js","names":[],"sources":["src/FrcsTripSummary.ts"],"sourcesContent":["import { UnitizedNumber, Length } from '@speleotica/unitized'\n\nexport type FrcsTripSummary = {\n tripNumber: number\n tripIndex: number\n date: Date\n totalLength: UnitizedNumber<Length>\n numShots: number\n name: string\n excludedLength: UnitizedNumber<Length>\n numExcludedShots: number\n team: Array<string>\n shots: Array<string>\n}\n"],"mappings":"","ignoreList":[]}
@@ -4,3 +4,4 @@ export type FrcsTripSummaryFile = {
4
4
  errors?: Array<SegmentParseError> | null;
5
5
  tripSummaries: Array<FrcsTripSummary | undefined>;
6
6
  };
7
+ //# sourceMappingURL=FrcsTripSummaryFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTripSummaryFile.d.ts","sourceRoot":"","sources":["src/FrcsTripSummaryFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;IACxC,aAAa,EAAE,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA;CAClD,CAAA"}
@@ -2,4 +2,5 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ //# sourceMappingURL=FrcsTripSummaryFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrcsTripSummaryFile.js","names":[],"sources":["src/FrcsTripSummaryFile.ts"],"sourcesContent":["import { FrcsTripSummary } from './FrcsTripSummary'\nimport { SegmentParseError } from 'parse-segment'\n\nexport type FrcsTripSummaryFile = {\n errors?: Array<SegmentParseError> | null\n tripSummaries: Array<FrcsTripSummary | undefined>\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,3 +1,9 @@
1
- import { FrcsTripHeader } from './FrcsTrip';
1
+ import { FrcsUnits } from './FrcsTrip';
2
2
  import { FrcsShot } from './FrcsShot';
3
- export default function formatFrcsShot(shot: FrcsShot, header: FrcsTripHeader): string;
3
+ import { FrcsShotColumnConfig } from './FrcsSurveyFile';
4
+ export declare function makeFormatFrcsShot({ columns, }?: {
5
+ columns?: FrcsShotColumnConfig;
6
+ }): (shot: FrcsShot, header: FrcsUnits) => string;
7
+ declare const _default: (shot: FrcsShot, header: FrcsUnits) => string;
8
+ export default _default;
9
+ //# sourceMappingURL=formatFrcsShot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFrcsShot.d.ts","sourceRoot":"","sources":["src/formatFrcsShot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,oBAAoB,EAErB,MAAM,kBAAkB,CAAA;AAEzB,wBAAgB,kBAAkB,CAAC,EACjC,OAAqC,GACtC,GAAE;IAAE,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAAO,UAuFH,QAAQ,UAAU,SAAS,KAAG,MAAM,CAoE1E;;AAED,wBAAmC"}
package/formatFrcsShot.js CHANGED
@@ -3,71 +3,94 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = formatFrcsShot;
6
+ exports["default"] = void 0;
7
+ exports.makeFormatFrcsShot = makeFormatFrcsShot;
7
8
  var _FrcsShot = require("./FrcsShot.js");
8
9
  var _unitized = require("@speleotica/unitized");
9
- var STATION_WIDTH = 5;
10
- var EMPTY_STATION = ' '.repeat(STATION_WIDTH);
11
- function formatStation(station) {
12
- if (station.length > STATION_WIDTH) {
13
- throw new Error("station is too long: ".concat(station));
10
+ var _FrcsSurveyFile = require("./FrcsSurveyFile.js");
11
+ function makeFormatFrcsShot() {
12
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13
+ _ref$columns = _ref.columns,
14
+ columns = _ref$columns === void 0 ? _FrcsSurveyFile.defaultFrcsShotColumnConfig : _ref$columns;
15
+ var EMPTY_TO_STATION = ' '.repeat(columns.toStation);
16
+ function formatFromStation(station) {
17
+ if (station.length > columns.fromStation) {
18
+ throw new Error("station is too long: ".concat(station));
19
+ }
20
+ return station.padStart(columns.fromStation, ' ');
14
21
  }
15
- return station.padStart(STATION_WIDTH, ' ');
16
- }
17
- function trimZeroes(str) {
18
- var match = /(-?\d+)(\.[1-9]*)0+$/.exec(str);
19
- if (!match) return str;
20
- return match[2].length > 1 ? match[1] + match[2] : match[1];
21
- }
22
- var formatNumber = function formatNumber(width) {
23
- return function (num) {
24
- if (num == null || !Number.isFinite(num)) return ' '.repeat(width);
25
- var formatted = trimZeroes(num.toFixed(2));
26
- if (formatted.length <= width) return formatted.padStart(width, ' ');
27
- if (formatted.length > width + 2) return formatted.substring(0, width);
28
- return trimZeroes(num.toFixed(2 - formatted.length + width)).padStart(width, ' ');
22
+ function formatToStation(station) {
23
+ if (station.length > columns.toStation) {
24
+ throw new Error("station is too long: ".concat(station));
25
+ }
26
+ return station.padStart(columns.toStation, ' ');
27
+ }
28
+ function trimZeroes(str) {
29
+ var match = /(-?\d+)(\.[1-9]*)0+$/.exec(str);
30
+ if (!match) return str;
31
+ return match[2].length > 1 ? match[1] + match[2] : match[1];
32
+ }
33
+ var formatNumber = function formatNumber(width) {
34
+ function formatNum(num, unit, verbatim) {
35
+ if (num instanceof _unitized.UnitizedNumber) {
36
+ return formatNum(num.get(verbatim ? num.unit : unit || num.unit));
37
+ }
38
+ if (num == null || !Number.isFinite(num)) return ' '.repeat(width);
39
+ var precision = Math.max(0, width - String(Math.trunc(num)).length - 1);
40
+ var formatted = trimZeroes(num.toFixed(precision));
41
+ return formatted.length <= width ? formatted.padStart(width, ' ') : formatted.substring(0, width);
42
+ }
43
+ return formatNum;
29
44
  };
30
- };
31
- var LRUD_WIDTH = 3;
32
- var formatLrud = formatNumber(LRUD_WIDTH);
33
- var DISTANCE_WIDTH = 6;
34
- var EMPTY_DISTANCE = ' '.repeat(DISTANCE_WIDTH);
35
- var formatDistance = formatNumber(DISTANCE_WIDTH);
36
- var AZIMUTH_WIDTH = 6;
37
- var EMPTY_AZIMUTH = ' '.repeat(AZIMUTH_WIDTH);
38
- var formatAzimuth = formatNumber(AZIMUTH_WIDTH);
39
- var INCLINATION_WIDTH = 5;
40
- var EMPTY_INCLINATION = ' '.repeat(INCLINATION_WIDTH);
41
- var formatInclination = formatNumber(INCLINATION_WIDTH);
42
- var formatVerticalDistance = formatNumber(INCLINATION_WIDTH);
43
- var FEET_WIDTH = 4;
44
- var EMPTY_FEET = ' '.repeat(FEET_WIDTH);
45
- function formatFeet(distance) {
46
- if (!distance) return EMPTY_FEET;
47
- return formatNumber(FEET_WIDTH)(Math.trunc(distance.get(_unitized.Length.feet)));
48
- }
49
- var INCHES_WIDTH = 3;
50
- var EMPTY_INCHES = ' '.repeat(INCHES_WIDTH);
51
- function formatInches(distance) {
52
- if (!distance) return EMPTY_INCHES;
53
- return formatNumber(INCHES_WIDTH)(Math.round(distance.get(_unitized.Length.inches) % 12));
54
- }
55
- function formatFrcsShot(shot, header) {
56
- var _shot$frontsightAzimu, _shot$backsightAzimut, _shot$frontsightIncli, _shot$verticalDistanc, _shot$backsightInclin, _shot$toLruds, _shot$toLruds2, _shot$toLruds3, _shot$toLruds4;
57
- var azimuthUnit = header.azimuthUnit,
58
- inclinationUnit = header.inclinationUnit;
59
- var distanceUnit = header.distanceUnit;
60
- var inches = distanceUnit === _unitized.Length.inches;
61
- if (inches) distanceUnit = _unitized.Length.feet;
62
- if (!shot.to) {
63
- var _shot$fromLruds, _shot$fromLruds2, _shot$fromLruds3, _shot$fromLruds4;
64
- return [formatStation(shot.from), EMPTY_STATION, EMPTY_DISTANCE, ' ',
65
- // kind
66
- ' ',
67
- // exclude
68
- EMPTY_AZIMUTH, EMPTY_AZIMUTH, EMPTY_INCLINATION, EMPTY_INCLINATION, formatLrud((_shot$fromLruds = shot.fromLruds) === null || _shot$fromLruds === void 0 || (_shot$fromLruds = _shot$fromLruds.left) === null || _shot$fromLruds === void 0 ? void 0 : _shot$fromLruds.get(distanceUnit)), formatLrud((_shot$fromLruds2 = shot.fromLruds) === null || _shot$fromLruds2 === void 0 || (_shot$fromLruds2 = _shot$fromLruds2.right) === null || _shot$fromLruds2 === void 0 ? void 0 : _shot$fromLruds2.get(distanceUnit)), formatLrud((_shot$fromLruds3 = shot.fromLruds) === null || _shot$fromLruds3 === void 0 || (_shot$fromLruds3 = _shot$fromLruds3.up) === null || _shot$fromLruds3 === void 0 ? void 0 : _shot$fromLruds3.get(distanceUnit)), formatLrud((_shot$fromLruds4 = shot.fromLruds) === null || _shot$fromLruds4 === void 0 || (_shot$fromLruds4 = _shot$fromLruds4.down) === null || _shot$fromLruds4 === void 0 ? void 0 : _shot$fromLruds4.get(distanceUnit))].join('');
45
+ var formatLeft = formatNumber(columns.left);
46
+ var formatRight = formatNumber(columns.right);
47
+ var formatUp = formatNumber(columns.up);
48
+ var formatDown = formatNumber(columns.down);
49
+ var EMPTY_DISTANCE = ' '.repeat(columns.distance);
50
+ var formatDistance = formatNumber(columns.distance);
51
+ var EMPTY_FS_AZIMUTH = ' '.repeat(columns.frontsightAzimuth);
52
+ var formatFsAzimuth = formatNumber(columns.frontsightAzimuth);
53
+ var EMPTY_BS_AZIMUTH = ' '.repeat(columns.backsightAzimuth);
54
+ var formatBsAzimuth = formatNumber(columns.backsightAzimuth);
55
+ var EMPTY_FS_INCLINATION = ' '.repeat(columns.frontsightInclination);
56
+ var formatFsInclination = formatNumber(columns.frontsightInclination);
57
+ var EMPTY_BS_INCLINATION = ' '.repeat(columns.backsightInclination);
58
+ var formatBsInclination = formatNumber(columns.backsightInclination);
59
+ var formatVerticalDistance = formatNumber(columns.frontsightInclination);
60
+ var EMPTY_FEET = ' '.repeat(columns.distanceFeet);
61
+ function formatFeet(distance) {
62
+ if (!distance) return EMPTY_FEET;
63
+ return formatNumber(columns.distanceFeet)(Math.trunc(distance.get(_unitized.Length.feet)));
69
64
  }
70
- var distColumnValue = shot.kind === _FrcsShot.FrcsShotKind.Horizontal ? shot.horizontalDistance : shot.distance;
71
- return [formatStation(shot.to), formatStation(shot.from), inches ? formatFeet(distColumnValue) : formatDistance(distColumnValue === null || distColumnValue === void 0 ? void 0 : distColumnValue.get(distanceUnit)), inches ? formatInches(distColumnValue) : shot.kind, inches ? shot.kind : shot.excludeDistance ? '*' : ' ', formatAzimuth((_shot$frontsightAzimu = shot.frontsightAzimuth) === null || _shot$frontsightAzimu === void 0 ? void 0 : _shot$frontsightAzimu.get(azimuthUnit)), formatAzimuth((_shot$backsightAzimut = shot.backsightAzimuth) === null || _shot$backsightAzimut === void 0 ? void 0 : _shot$backsightAzimut.get(azimuthUnit)), shot.kind === _FrcsShot.FrcsShotKind.Normal ? formatInclination((_shot$frontsightIncli = shot.frontsightInclination) === null || _shot$frontsightIncli === void 0 ? void 0 : _shot$frontsightIncli.get(inclinationUnit)) : formatVerticalDistance((_shot$verticalDistanc = shot.verticalDistance) === null || _shot$verticalDistanc === void 0 ? void 0 : _shot$verticalDistanc.get(distanceUnit)), shot.kind === _FrcsShot.FrcsShotKind.Normal ? formatInclination((_shot$backsightInclin = shot.backsightInclination) === null || _shot$backsightInclin === void 0 ? void 0 : _shot$backsightInclin.get(inclinationUnit)) : EMPTY_INCLINATION, formatLrud((_shot$toLruds = shot.toLruds) === null || _shot$toLruds === void 0 || (_shot$toLruds = _shot$toLruds.left) === null || _shot$toLruds === void 0 ? void 0 : _shot$toLruds.get(distanceUnit)), formatLrud((_shot$toLruds2 = shot.toLruds) === null || _shot$toLruds2 === void 0 || (_shot$toLruds2 = _shot$toLruds2.right) === null || _shot$toLruds2 === void 0 ? void 0 : _shot$toLruds2.get(distanceUnit)), formatLrud((_shot$toLruds3 = shot.toLruds) === null || _shot$toLruds3 === void 0 || (_shot$toLruds3 = _shot$toLruds3.up) === null || _shot$toLruds3 === void 0 ? void 0 : _shot$toLruds3.get(distanceUnit)), formatLrud((_shot$toLruds4 = shot.toLruds) === null || _shot$toLruds4 === void 0 || (_shot$toLruds4 = _shot$toLruds4.down) === null || _shot$toLruds4 === void 0 ? void 0 : _shot$toLruds4.get(distanceUnit))].join('');
65
+ var EMPTY_INCHES = ' '.repeat(columns.distanceInches);
66
+ function formatInches(distance) {
67
+ if (!distance) return EMPTY_INCHES;
68
+ return formatNumber(columns.distanceInches)(Math.round(distance.get(_unitized.Length.inches) % 12));
69
+ }
70
+ return function formatFrcsShot(shot, header) {
71
+ var _shot$toLruds, _shot$toLruds2, _shot$toLruds3, _shot$toLruds4;
72
+ var azimuthUnit = header.azimuthUnit,
73
+ inclinationUnit = header.inclinationUnit;
74
+ var distanceUnit = header.distanceUnit;
75
+ var inches = distanceUnit === _unitized.Length.inches;
76
+ if (inches) distanceUnit = _unitized.Length.feet;
77
+ var isRecorded = shot.recorded !== null;
78
+ if (!shot.to) {
79
+ var _shot$recorded;
80
+ var _ref2 = ((_shot$recorded = shot.recorded) === null || _shot$recorded === void 0 ? void 0 : _shot$recorded.fromLruds) || shot.fromLruds || {},
81
+ left = _ref2.left,
82
+ right = _ref2.right,
83
+ up = _ref2.up,
84
+ down = _ref2.down;
85
+ return [EMPTY_TO_STATION, formatFromStation(shot.from), EMPTY_DISTANCE, ' ',
86
+ // kind
87
+ ' ',
88
+ // exclude
89
+ EMPTY_FS_AZIMUTH, EMPTY_BS_AZIMUTH, EMPTY_FS_INCLINATION, EMPTY_BS_INCLINATION, formatLeft(left, distanceUnit, isRecorded), formatRight(right, distanceUnit, isRecorded), formatUp(up, distanceUnit, isRecorded), formatDown(down, distanceUnit, isRecorded)].join('');
90
+ }
91
+ var distColumnValue = shot.kind === _FrcsShot.FrcsShotKind.Horizontal ? shot.horizontalDistance : shot.distance;
92
+ return [formatToStation(shot.to), formatFromStation(shot.from), inches ? formatFeet(distColumnValue) : formatDistance(distColumnValue, distanceUnit, isRecorded), inches ? formatInches(distColumnValue) : shot.kind, inches ? shot.kind : shot.excludeDistance ? '*' : ' ', formatFsAzimuth(shot.frontsightAzimuth, azimuthUnit, isRecorded), formatBsAzimuth(shot.backsightAzimuth, azimuthUnit, isRecorded), shot.kind === _FrcsShot.FrcsShotKind.Normal ? formatFsInclination(shot.frontsightInclination, inclinationUnit, isRecorded) : formatVerticalDistance(shot.verticalDistance, distanceUnit, isRecorded), shot.kind === _FrcsShot.FrcsShotKind.Normal ? formatBsInclination(shot.backsightInclination, inclinationUnit, isRecorded) : EMPTY_BS_INCLINATION, formatLeft((_shot$toLruds = shot.toLruds) === null || _shot$toLruds === void 0 ? void 0 : _shot$toLruds.left, distanceUnit, isRecorded), formatRight((_shot$toLruds2 = shot.toLruds) === null || _shot$toLruds2 === void 0 ? void 0 : _shot$toLruds2.right, distanceUnit, isRecorded), formatUp((_shot$toLruds3 = shot.toLruds) === null || _shot$toLruds3 === void 0 ? void 0 : _shot$toLruds3.up, distanceUnit, isRecorded), formatDown((_shot$toLruds4 = shot.toLruds) === null || _shot$toLruds4 === void 0 ? void 0 : _shot$toLruds4.down, distanceUnit, isRecorded)].join('');
93
+ };
72
94
  }
73
- module.exports = exports.default;
95
+ var _default = exports["default"] = makeFormatFrcsShot();
96
+ //# sourceMappingURL=formatFrcsShot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFrcsShot.js","names":["_FrcsShot","require","_unitized","_FrcsSurveyFile","makeFormatFrcsShot","_ref","arguments","length","undefined","_ref$columns","columns","defaultFrcsShotColumnConfig","EMPTY_TO_STATION","repeat","toStation","formatFromStation","station","fromStation","Error","concat","padStart","formatToStation","trimZeroes","str","match","exec","formatNumber","width","formatNum","num","unit","verbatim","UnitizedNumber","get","Number","isFinite","precision","Math","max","String","trunc","formatted","toFixed","substring","formatLeft","left","formatRight","right","formatUp","up","formatDown","down","EMPTY_DISTANCE","distance","formatDistance","EMPTY_FS_AZIMUTH","frontsightAzimuth","formatFsAzimuth","EMPTY_BS_AZIMUTH","backsightAzimuth","formatBsAzimuth","EMPTY_FS_INCLINATION","frontsightInclination","formatFsInclination","EMPTY_BS_INCLINATION","backsightInclination","formatBsInclination","formatVerticalDistance","EMPTY_FEET","distanceFeet","formatFeet","Length","feet","EMPTY_INCHES","distanceInches","formatInches","round","inches","formatFrcsShot","shot","header","_shot$toLruds","_shot$toLruds2","_shot$toLruds3","_shot$toLruds4","azimuthUnit","inclinationUnit","distanceUnit","isRecorded","recorded","to","_shot$recorded","_ref2","fromLruds","from","join","distColumnValue","kind","FrcsShotKind","Horizontal","horizontalDistance","excludeDistance","Normal","verticalDistance","toLruds","_default","exports"],"sources":["src/formatFrcsShot.ts"],"sourcesContent":["import { FrcsUnits } from './FrcsTrip'\nimport { FrcsShot, FrcsShotKind } from './FrcsShot'\nimport { Length, Unit, UnitType, UnitizedNumber } from '@speleotica/unitized'\nimport {\n FrcsShotColumnConfig,\n defaultFrcsShotColumnConfig,\n} from './FrcsSurveyFile'\n\nexport function makeFormatFrcsShot({\n columns = defaultFrcsShotColumnConfig,\n}: { columns?: FrcsShotColumnConfig } = {}) {\n const EMPTY_TO_STATION = ' '.repeat(columns.toStation)\n\n function formatFromStation(station: string): string {\n if (station.length > columns.fromStation) {\n throw new Error(`station is too long: ${station}`)\n }\n return station.padStart(columns.fromStation, ' ')\n }\n function formatToStation(station: string): string {\n if (station.length > columns.toStation) {\n throw new Error(`station is too long: ${station}`)\n }\n return station.padStart(columns.toStation, ' ')\n }\n\n function trimZeroes(str: string): string {\n const match = /(-?\\d+)(\\.[1-9]*)0+$/.exec(str)\n if (!match) return str\n return match[2].length > 1 ? match[1] + match[2] : match[1]\n }\n\n const formatNumber = (width: number) => {\n function formatNum(num: number | null | undefined): string\n function formatNum<T extends UnitType<T>>(\n num: UnitizedNumber<T> | null | undefined,\n unit: Unit<T>,\n verbatim?: boolean\n ): string\n function formatNum<T extends UnitType<T>>(\n num: number | UnitizedNumber<T> | null | undefined,\n unit?: Unit<T>,\n verbatim?: boolean\n ): string {\n if (num instanceof UnitizedNumber) {\n return formatNum(num.get(verbatim ? num.unit : unit || num.unit))\n }\n if (num == null || !Number.isFinite(num)) return ' '.repeat(width)\n const precision = Math.max(0, width - String(Math.trunc(num)).length - 1)\n const formatted = trimZeroes(num.toFixed(precision))\n return formatted.length <= width\n ? formatted.padStart(width, ' ')\n : formatted.substring(0, width)\n }\n return formatNum\n }\n\n const formatLeft = formatNumber(columns.left)\n const formatRight = formatNumber(columns.right)\n const formatUp = formatNumber(columns.up)\n const formatDown = formatNumber(columns.down)\n\n const EMPTY_DISTANCE = ' '.repeat(columns.distance)\n const formatDistance = formatNumber(columns.distance)\n\n const EMPTY_FS_AZIMUTH = ' '.repeat(columns.frontsightAzimuth)\n const formatFsAzimuth = formatNumber(columns.frontsightAzimuth)\n const EMPTY_BS_AZIMUTH = ' '.repeat(columns.backsightAzimuth)\n const formatBsAzimuth = formatNumber(columns.backsightAzimuth)\n\n const EMPTY_FS_INCLINATION = ' '.repeat(columns.frontsightInclination)\n const formatFsInclination = formatNumber(columns.frontsightInclination)\n const EMPTY_BS_INCLINATION = ' '.repeat(columns.backsightInclination)\n const formatBsInclination = formatNumber(columns.backsightInclination)\n\n const formatVerticalDistance = formatNumber(columns.frontsightInclination)\n\n const EMPTY_FEET = ' '.repeat(columns.distanceFeet)\n\n function formatFeet(distance: UnitizedNumber<Length> | null | void): string {\n if (!distance) return EMPTY_FEET\n return formatNumber(columns.distanceFeet)(\n Math.trunc(distance.get(Length.feet))\n )\n }\n\n const EMPTY_INCHES = ' '.repeat(columns.distanceInches)\n\n function formatInches(\n distance: UnitizedNumber<Length> | null | void\n ): string {\n if (!distance) return EMPTY_INCHES\n return formatNumber(columns.distanceInches)(\n Math.round(distance.get(Length.inches) % 12)\n )\n }\n\n return function formatFrcsShot(shot: FrcsShot, header: FrcsUnits): string {\n const { azimuthUnit, inclinationUnit } = header\n let { distanceUnit } = header\n\n const inches = distanceUnit === Length.inches\n if (inches) distanceUnit = Length.feet\n\n const isRecorded = shot.recorded !== null\n\n if (!shot.to) {\n const { left, right, up, down } =\n shot.recorded?.fromLruds || shot.fromLruds || {}\n return [\n EMPTY_TO_STATION,\n formatFromStation(shot.from),\n EMPTY_DISTANCE,\n ' ', // kind\n ' ', // exclude\n EMPTY_FS_AZIMUTH,\n EMPTY_BS_AZIMUTH,\n EMPTY_FS_INCLINATION,\n EMPTY_BS_INCLINATION,\n formatLeft(left, distanceUnit, isRecorded),\n formatRight(right, distanceUnit, isRecorded),\n formatUp(up, distanceUnit, isRecorded),\n formatDown(down, distanceUnit, isRecorded),\n ].join('')\n }\n\n const distColumnValue =\n shot.kind === FrcsShotKind.Horizontal\n ? shot.horizontalDistance\n : shot.distance\n\n return [\n formatToStation(shot.to),\n formatFromStation(shot.from),\n inches\n ? formatFeet(distColumnValue)\n : formatDistance(distColumnValue, distanceUnit, isRecorded),\n inches ? formatInches(distColumnValue) : shot.kind,\n inches ? shot.kind : shot.excludeDistance ? '*' : ' ',\n formatFsAzimuth(shot.frontsightAzimuth, azimuthUnit, isRecorded),\n formatBsAzimuth(shot.backsightAzimuth, azimuthUnit, isRecorded),\n shot.kind === FrcsShotKind.Normal\n ? formatFsInclination(\n shot.frontsightInclination,\n inclinationUnit,\n isRecorded\n )\n : formatVerticalDistance(\n shot.verticalDistance,\n distanceUnit,\n isRecorded\n ),\n shot.kind === FrcsShotKind.Normal\n ? formatBsInclination(\n shot.backsightInclination,\n inclinationUnit,\n isRecorded\n )\n : EMPTY_BS_INCLINATION,\n formatLeft(shot.toLruds?.left, distanceUnit, isRecorded),\n formatRight(shot.toLruds?.right, distanceUnit, isRecorded),\n formatUp(shot.toLruds?.up, distanceUnit, isRecorded),\n formatDown(shot.toLruds?.down, distanceUnit, isRecorded),\n ].join('')\n }\n}\n\nexport default makeFormatFrcsShot()\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ import { FrcsSurveyFile } from './FrcsSurveyFile';
2
+ export declare function formatFrcsSurveyFile(file: FrcsSurveyFile): AsyncIterable<string>;
3
+ //# sourceMappingURL=formatFrcsSurveyFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFrcsSurveyFile.d.ts","sourceRoot":"","sources":["src/formatFrcsSurveyFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAIjD,wBAAuB,oBAAoB,CACzC,IAAI,EAAE,cAAc,GACnB,aAAa,CAAC,MAAM,CAAC,CA2CvB"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.formatFrcsSurveyFile = formatFrcsSurveyFile;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _awaitAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/awaitAsyncGenerator"));
11
+ var _wrapAsyncGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapAsyncGenerator"));
12
+ var _unitized = require("@speleotica/unitized");
13
+ var _formatFrcsShot = require("./formatFrcsShot.js");
14
+ function formatFrcsSurveyFile(_x) {
15
+ return _formatFrcsSurveyFile.apply(this, arguments);
16
+ }
17
+ function _formatFrcsSurveyFile() {
18
+ _formatFrcsSurveyFile = (0, _wrapAsyncGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(file) {
19
+ var formatFrcsShot, tripIndex, trip, shots, header, name, team, date, comment, line2, alternateUnits, i, _shot$recorded, shot, lines, _i;
20
+ return _regenerator["default"].wrap(function _callee$(_context) {
21
+ while (1) switch (_context.prev = _context.next) {
22
+ case 0:
23
+ formatFrcsShot = (0, _formatFrcsShot.makeFormatFrcsShot)(file);
24
+ if (!file.cave) {
25
+ _context.next = 4;
26
+ break;
27
+ }
28
+ _context.next = 4;
29
+ return " ".concat(file.cave).concat(file.location ? ", ".concat(file.location) : '', "\n");
30
+ case 4:
31
+ tripIndex = 0;
32
+ case 5:
33
+ if (!(tripIndex < file.trips.length)) {
34
+ _context.next = 56;
35
+ break;
36
+ }
37
+ trip = file.trips[tripIndex];
38
+ shots = trip.shots, header = trip.header;
39
+ name = header.name, team = header.team, date = header.date, comment = header.comment;
40
+ if (!(tripIndex > 0)) {
41
+ _context.next = 12;
42
+ break;
43
+ }
44
+ _context.next = 12;
45
+ return ' *\n';
46
+ case 12:
47
+ _context.next = 14;
48
+ return name.replace(/\n?$/, '\n');
49
+ case 14:
50
+ line2 = [].concat((0, _toConsumableArray2["default"])(team !== null && team !== void 0 && team.length ? [team.join(', ')] : []), (0, _toConsumableArray2["default"])(date ? [formatDate(date)] : [])).join('. ');
51
+ if (!line2) {
52
+ _context.next = 18;
53
+ break;
54
+ }
55
+ _context.next = 18;
56
+ return "".concat(line2, "\n");
57
+ case 18:
58
+ if (!comment) {
59
+ _context.next = 21;
60
+ break;
61
+ }
62
+ _context.next = 21;
63
+ return comment.replace(/\n?$/, '\n');
64
+ case 21:
65
+ _context.next = 23;
66
+ return ' *\n';
67
+ case 23:
68
+ _context.next = 25;
69
+ return formatUnits(header);
70
+ case 25:
71
+ alternateUnits = void 0;
72
+ i = 0;
73
+ case 27:
74
+ if (!(i < shots.length)) {
75
+ _context.next = 53;
76
+ break;
77
+ }
78
+ shot = shots[i];
79
+ if (!shot.comment) {
80
+ _context.next = 42;
81
+ break;
82
+ }
83
+ lines = shot.comment.split(/\n/gm);
84
+ _context.next = 33;
85
+ return '*\n';
86
+ case 33:
87
+ _i = 0;
88
+ case 34:
89
+ if (!(_i < lines.length - 1)) {
90
+ _context.next = 40;
91
+ break;
92
+ }
93
+ _context.next = 37;
94
+ return lines[_i].replace(/\n?$/, '\n');
95
+ case 37:
96
+ _i++;
97
+ _context.next = 34;
98
+ break;
99
+ case 40:
100
+ _context.next = 42;
101
+ return "* ".concat(lines[lines.length - 1].replace(/\n?$/, '\n'));
102
+ case 42:
103
+ if (!((_shot$recorded = shot.recorded) !== null && _shot$recorded !== void 0 && _shot$recorded.units)) {
104
+ _context.next = 48;
105
+ break;
106
+ }
107
+ alternateUnits = shot.recorded.units;
108
+ _context.next = 46;
109
+ return "* %NC\n";
110
+ case 46:
111
+ _context.next = 48;
112
+ return formatUnits(shot.recorded.units);
113
+ case 48:
114
+ _context.next = 50;
115
+ return formatFrcsShot(shot.recorded || shot, alternateUnits || header).replace(/\n?$/, '\n');
116
+ case 50:
117
+ i++;
118
+ _context.next = 27;
119
+ break;
120
+ case 53:
121
+ tripIndex++;
122
+ _context.next = 5;
123
+ break;
124
+ case 56:
125
+ case "end":
126
+ return _context.stop();
127
+ }
128
+ }, _callee);
129
+ }));
130
+ return _formatFrcsSurveyFile.apply(this, arguments);
131
+ }
132
+ function formatUnits(units) {
133
+ var distUnit = formatLengthUnit(units.distanceUnit);
134
+ var azmMode = units.hasBacksightAzimuth ? units.backsightAzimuthCorrected ? 'C' : 'B' : ' ';
135
+ var incMode = units.hasBacksightInclination ? units.backsightInclinationCorrected ? 'C' : 'B' : ' ';
136
+ var azmUnit = formatAngleUnit(units.azimuthUnit);
137
+ var incUnit = formatAngleUnit(units.inclinationUnit);
138
+ return "".concat(distUnit, " ").concat(azmMode).concat(incMode, " ").concat(azmUnit).concat(incUnit, "\n");
139
+ }
140
+ function formatDate(date) {
141
+ return "".concat(date.getMonth() + 1, "/").concat(date.getDate(), "/").concat(date.getFullYear() % 100);
142
+ }
143
+ function formatLengthUnit(unit) {
144
+ switch (unit) {
145
+ case _unitized.Length.meters:
146
+ return 'M ';
147
+ case _unitized.Length.feet:
148
+ return 'FT';
149
+ case _unitized.Length.inches:
150
+ return 'FI';
151
+ default:
152
+ throw new Error("invalid length unit: ".concat(unit));
153
+ }
154
+ }
155
+ function formatAngleUnit(unit) {
156
+ switch (unit) {
157
+ case _unitized.Angle.degrees:
158
+ return 'D';
159
+ case _unitized.Angle.gradians:
160
+ return 'G';
161
+ default:
162
+ throw new Error("invalid angle unit: ".concat(unit));
163
+ }
164
+ }
165
+ //# sourceMappingURL=formatFrcsSurveyFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFrcsSurveyFile.js","names":["_unitized","require","_formatFrcsShot","formatFrcsSurveyFile","_x","_formatFrcsSurveyFile","apply","arguments","_wrapAsyncGenerator2","_regenerator","mark","_callee","file","formatFrcsShot","tripIndex","trip","shots","header","name","team","date","comment","line2","alternateUnits","i","_shot$recorded","shot","lines","_i","wrap","_callee$","_context","prev","next","makeFormatFrcsShot","cave","concat","location","trips","length","replace","_toConsumableArray2","join","formatDate","formatUnits","split","recorded","units","stop","distUnit","formatLengthUnit","distanceUnit","azmMode","hasBacksightAzimuth","backsightAzimuthCorrected","incMode","hasBacksightInclination","backsightInclinationCorrected","azmUnit","formatAngleUnit","azimuthUnit","incUnit","inclinationUnit","getMonth","getDate","getFullYear","unit","Length","meters","feet","inches","Error","Angle","degrees","gradians"],"sources":["src/formatFrcsSurveyFile.ts"],"sourcesContent":["import { Angle, Length, Unit } from '@speleotica/unitized'\nimport { FrcsSurveyFile } from './FrcsSurveyFile'\nimport { FrcsUnits } from './FrcsTrip'\nimport { makeFormatFrcsShot } from './formatFrcsShot'\n\nexport async function* formatFrcsSurveyFile(\n file: FrcsSurveyFile\n): AsyncIterable<string> {\n const formatFrcsShot = makeFormatFrcsShot(file)\n if (file.cave) {\n yield ` ${file.cave}${file.location ? `, ${file.location}` : ''}\\n`\n }\n for (let tripIndex = 0; tripIndex < file.trips.length; tripIndex++) {\n const trip = file.trips[tripIndex]\n const { shots, header } = trip\n const { name, team, date, comment } = header\n if (tripIndex > 0) yield ' *\\n'\n yield name.replace(/\\n?$/, '\\n')\n const line2 = [\n ...(team?.length ? [team.join(', ')] : []),\n ...(date ? [formatDate(date)] : []),\n ].join('. ')\n if (line2) yield `${line2}\\n`\n if (comment) yield comment.replace(/\\n?$/, '\\n')\n yield ' *\\n'\n yield formatUnits(header)\n\n let alternateUnits: FrcsUnits | undefined\n\n for (let i = 0; i < shots.length; i++) {\n const shot = shots[i]\n if (shot.comment) {\n const lines = shot.comment.split(/\\n/gm)\n yield '*\\n'\n for (let i = 0; i < lines.length - 1; i++) {\n yield lines[i].replace(/\\n?$/, '\\n')\n }\n yield `* ${lines[lines.length - 1].replace(/\\n?$/, '\\n')}`\n }\n if (shot.recorded?.units) {\n alternateUnits = shot.recorded.units\n yield `* %NC\\n`\n yield formatUnits(shot.recorded.units)\n }\n yield formatFrcsShot(\n shot.recorded || shot,\n alternateUnits || header\n ).replace(/\\n?$/, '\\n')\n }\n }\n}\n\nfunction formatUnits(units: FrcsUnits): string {\n const distUnit = formatLengthUnit(units.distanceUnit)\n const azmMode = units.hasBacksightAzimuth\n ? units.backsightAzimuthCorrected\n ? 'C'\n : 'B'\n : ' '\n const incMode = units.hasBacksightInclination\n ? units.backsightInclinationCorrected\n ? 'C'\n : 'B'\n : ' '\n const azmUnit = formatAngleUnit(units.azimuthUnit)\n const incUnit = formatAngleUnit(units.inclinationUnit)\n\n return `${distUnit} ${azmMode}${incMode} ${azmUnit}${incUnit}\\n`\n}\n\nfunction formatDate(date: Date): string {\n return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear() % 100}`\n}\n\nfunction formatLengthUnit(unit: Unit<Length>): string {\n switch (unit) {\n case Length.meters:\n return 'M '\n case Length.feet:\n return 'FT'\n case Length.inches:\n return 'FI'\n default:\n throw new Error(`invalid length unit: ${unit}`)\n }\n}\n\nfunction formatAngleUnit(unit: Unit<Angle>): string {\n switch (unit) {\n case Angle.degrees:\n return 'D'\n case Angle.gradians:\n return 'G'\n default:\n throw new Error(`invalid angle unit: ${unit}`)\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAGA,IAAAC,eAAA,GAAAD,OAAA;AAAqD,SAE9BE,oBAAoBA,CAAAC,EAAA;EAAA,OAAAC,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,sBAAA;EAAAA,qBAAA,OAAAG,oBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAApC,SAAAC,QACLC,IAAoB;IAAA,IAAAC,cAAA,EAAAC,SAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,cAAA,EAAAC,CAAA,EAAAC,cAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,EAAA;IAAA,OAAAnB,YAAA,YAAAoB,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAEdpB,cAAc,GAAG,IAAAqB,kCAAkB,EAACtB,IAAI,CAAC;UAAA,KAC3CA,IAAI,CAACuB,IAAI;YAAAJ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UACX,gBAAAG,MAAA,CAAexB,IAAI,CAACuB,IAAI,EAAAC,MAAA,CAAGxB,IAAI,CAACyB,QAAQ,QAAAD,MAAA,CAAQxB,IAAI,CAACyB,QAAQ,IAAK,EAAE;QAAI;UAEjEvB,SAAS,GAAG,CAAC;QAAA;UAAA,MAAEA,SAAS,GAAGF,IAAI,CAAC0B,KAAK,CAACC,MAAM;YAAAR,QAAA,CAAAE,IAAA;YAAA;UAAA;UAC7ClB,IAAI,GAAGH,IAAI,CAAC0B,KAAK,CAACxB,SAAS,CAAC;UAC1BE,KAAK,GAAaD,IAAI,CAAtBC,KAAK,EAAEC,MAAM,GAAKF,IAAI,CAAfE,MAAM;UACbC,IAAI,GAA0BD,MAAM,CAApCC,IAAI,EAAEC,IAAI,GAAoBF,MAAM,CAA9BE,IAAI,EAAEC,IAAI,GAAcH,MAAM,CAAxBG,IAAI,EAAEC,OAAO,GAAKJ,MAAM,CAAlBI,OAAO;UAAA,MAC7BP,SAAS,GAAG,CAAC;YAAAiB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAE,OAAM,MAAM;QAAA;UAAAF,QAAA,CAAAE,IAAA;UAC/B,OAAMf,IAAI,CAACsB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAAA;UAC1BlB,KAAK,GAAG,GAAAc,MAAA,KAAAK,mBAAA,aACRtB,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEoB,MAAM,GAAG,CAACpB,IAAI,CAACuB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAAD,mBAAA,aACrCrB,IAAI,GAAG,CAACuB,UAAU,CAACvB,IAAI,CAAC,CAAC,GAAG,EAAE,GAClCsB,IAAI,CAAC,IAAI,CAAC;UAAA,KACRpB,KAAK;YAAAS,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAE,UAAAG,MAAA,CAASd,KAAK;QAAI;UAAA,KACzBD,OAAO;YAAAU,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAAE,OAAMZ,OAAO,CAACmB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAAA;UAAAT,QAAA,CAAAE,IAAA;UAChD,OAAM,MAAM;QAAA;UAAAF,QAAA,CAAAE,IAAA;UACZ,OAAMW,WAAW,CAAC3B,MAAM,CAAC;QAAA;UAErBM,cAAqC;UAEhCC,CAAC,GAAG,CAAC;QAAA;UAAA,MAAEA,CAAC,GAAGR,KAAK,CAACuB,MAAM;YAAAR,QAAA,CAAAE,IAAA;YAAA;UAAA;UACxBP,IAAI,GAAGV,KAAK,CAACQ,CAAC,CAAC;UAAA,KACjBE,IAAI,CAACL,OAAO;YAAAU,QAAA,CAAAE,IAAA;YAAA;UAAA;UACRN,KAAK,GAAGD,IAAI,CAACL,OAAO,CAACwB,KAAK,CAAC,MAAM,CAAC;UAAAd,QAAA,CAAAE,IAAA;UACxC,OAAM,KAAK;QAAA;UACFT,EAAC,GAAG,CAAC;QAAA;UAAA,MAAEA,EAAC,GAAGG,KAAK,CAACY,MAAM,GAAG,CAAC;YAAAR,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAAF,QAAA,CAAAE,IAAA;UAClC,OAAMN,KAAK,CAACH,EAAC,CAAC,CAACgB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAAA;UADAhB,EAAC,EAAE;UAAAO,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAE,IAAA;UAGzC,YAAAG,MAAA,CAAWT,KAAK,CAACA,KAAK,CAACY,MAAM,GAAG,CAAC,CAAC,CAACC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAAE;UAAA,OAAAf,cAAA,GAExDC,IAAI,CAACoB,QAAQ,cAAArB,cAAA,eAAbA,cAAA,CAAesB,KAAK;YAAAhB,QAAA,CAAAE,IAAA;YAAA;UAAA;UACtBV,cAAc,GAAGG,IAAI,CAACoB,QAAQ,CAACC,KAAK;UAAAhB,QAAA,CAAAE,IAAA;UACpC;QAAoB;UAAAF,QAAA,CAAAE,IAAA;UACpB,OAAMW,WAAW,CAAClB,IAAI,CAACoB,QAAQ,CAACC,KAAK,CAAC;QAAA;UAAAhB,QAAA,CAAAE,IAAA;UAExC,OAAMpB,cAAc,CAClBa,IAAI,CAACoB,QAAQ,IAAIpB,IAAI,EACrBH,cAAc,IAAIN,MACpB,CAAC,CAACuB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QAAA;UAlBShB,CAAC,EAAE;UAAAO,QAAA,CAAAE,IAAA;UAAA;QAAA;UAjBgBnB,SAAS,EAAE;UAAAiB,QAAA,CAAAE,IAAA;UAAA;QAAA;QAAA;UAAA,OAAAF,QAAA,CAAAiB,IAAA;MAAA;IAAA,GAAArC,OAAA;EAAA,CAsCnE;EAAA,OAAAN,qBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,SAASqC,WAAWA,CAACG,KAAgB,EAAU;EAC7C,IAAME,QAAQ,GAAGC,gBAAgB,CAACH,KAAK,CAACI,YAAY,CAAC;EACrD,IAAMC,OAAO,GAAGL,KAAK,CAACM,mBAAmB,GACrCN,KAAK,CAACO,yBAAyB,GAC7B,GAAG,GACH,GAAG,GACL,GAAG;EACP,IAAMC,OAAO,GAAGR,KAAK,CAACS,uBAAuB,GACzCT,KAAK,CAACU,6BAA6B,GACjC,GAAG,GACH,GAAG,GACL,GAAG;EACP,IAAMC,OAAO,GAAGC,eAAe,CAACZ,KAAK,CAACa,WAAW,CAAC;EAClD,IAAMC,OAAO,GAAGF,eAAe,CAACZ,KAAK,CAACe,eAAe,CAAC;EAEtD,UAAA1B,MAAA,CAAUa,QAAQ,OAAAb,MAAA,CAAIgB,OAAO,EAAAhB,MAAA,CAAGmB,OAAO,OAAAnB,MAAA,CAAIsB,OAAO,EAAAtB,MAAA,CAAGyB,OAAO;AAC9D;AAEA,SAASlB,UAAUA,CAACvB,IAAU,EAAU;EACtC,UAAAgB,MAAA,CAAUhB,IAAI,CAAC2C,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAA3B,MAAA,CAAIhB,IAAI,CAAC4C,OAAO,CAAC,CAAC,OAAA5B,MAAA,CAAIhB,IAAI,CAAC6C,WAAW,CAAC,CAAC,GAAG,GAAG;AAC7E;AAEA,SAASf,gBAAgBA,CAACgB,IAAkB,EAAU;EACpD,QAAQA,IAAI;IACV,KAAKC,gBAAM,CAACC,MAAM;MAChB,OAAO,IAAI;IACb,KAAKD,gBAAM,CAACE,IAAI;MACd,OAAO,IAAI;IACb,KAAKF,gBAAM,CAACG,MAAM;MAChB,OAAO,IAAI;IACb;MACE,MAAM,IAAIC,KAAK,yBAAAnC,MAAA,CAAyB8B,IAAI,CAAE,CAAC;EACnD;AACF;AAEA,SAASP,eAAeA,CAACO,IAAiB,EAAU;EAClD,QAAQA,IAAI;IACV,KAAKM,eAAK,CAACC,OAAO;MAChB,OAAO,GAAG;IACZ,KAAKD,eAAK,CAACE,QAAQ;MACjB,OAAO,GAAG;IACZ;MACE,MAAM,IAAIH,KAAK,wBAAAnC,MAAA,CAAwB8B,IAAI,CAAE,CAAC;EAClD;AACF","ignoreList":[]}