@faicad/sheetmetal 0.13.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 (113) hide show
  1. package/dist/allowanceFns.d.ts +42 -0
  2. package/dist/allowanceFns.d.ts.map +1 -0
  3. package/dist/allowanceFns.js +63 -0
  4. package/dist/allowanceFns.js.map +1 -0
  5. package/dist/api.d.ts +312 -0
  6. package/dist/api.d.ts.map +1 -0
  7. package/dist/api.js +367 -0
  8. package/dist/api.js.map +1 -0
  9. package/dist/authorFns.d.ts +118 -0
  10. package/dist/authorFns.d.ts.map +1 -0
  11. package/dist/authorFns.js +562 -0
  12. package/dist/authorFns.js.map +1 -0
  13. package/dist/bendTableFns.d.ts +87 -0
  14. package/dist/bendTableFns.d.ts.map +1 -0
  15. package/dist/bendTableFns.js +345 -0
  16. package/dist/bendTableFns.js.map +1 -0
  17. package/dist/compat.d.ts +90 -0
  18. package/dist/compat.d.ts.map +1 -0
  19. package/dist/compat.js +99 -0
  20. package/dist/compat.js.map +1 -0
  21. package/dist/contourFlangeFns.d.ts +122 -0
  22. package/dist/contourFlangeFns.d.ts.map +1 -0
  23. package/dist/contourFlangeFns.js +403 -0
  24. package/dist/contourFlangeFns.js.map +1 -0
  25. package/dist/cutoutFns.d.ts +95 -0
  26. package/dist/cutoutFns.d.ts.map +1 -0
  27. package/dist/cutoutFns.js +300 -0
  28. package/dist/cutoutFns.js.map +1 -0
  29. package/dist/dxfFns.d.ts +48 -0
  30. package/dist/dxfFns.d.ts.map +1 -0
  31. package/dist/dxfFns.js +236 -0
  32. package/dist/dxfFns.js.map +1 -0
  33. package/dist/facade.d.ts +449 -0
  34. package/dist/facade.d.ts.map +1 -0
  35. package/dist/facade.js +535 -0
  36. package/dist/facade.js.map +1 -0
  37. package/dist/featureTreeFns.d.ts +76 -0
  38. package/dist/featureTreeFns.d.ts.map +1 -0
  39. package/dist/featureTreeFns.js +190 -0
  40. package/dist/featureTreeFns.js.map +1 -0
  41. package/dist/foldFns.d.ts +83 -0
  42. package/dist/foldFns.d.ts.map +1 -0
  43. package/dist/foldFns.js +744 -0
  44. package/dist/foldFns.js.map +1 -0
  45. package/dist/foreignUnfoldFns.d.ts +62 -0
  46. package/dist/foreignUnfoldFns.d.ts.map +1 -0
  47. package/dist/foreignUnfoldFns.js +854 -0
  48. package/dist/foreignUnfoldFns.js.map +1 -0
  49. package/dist/formFns.d.ts +58 -0
  50. package/dist/formFns.d.ts.map +1 -0
  51. package/dist/formFns.js +300 -0
  52. package/dist/formFns.js.map +1 -0
  53. package/dist/hemFns.d.ts +17 -0
  54. package/dist/hemFns.d.ts.map +1 -0
  55. package/dist/hemFns.js +212 -0
  56. package/dist/hemFns.js.map +1 -0
  57. package/dist/index.d.ts +43 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +32 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/internal.d.ts +27 -0
  62. package/dist/internal.d.ts.map +1 -0
  63. package/dist/internal.js +38 -0
  64. package/dist/internal.js.map +1 -0
  65. package/dist/jogFns.d.ts +18 -0
  66. package/dist/jogFns.d.ts.map +1 -0
  67. package/dist/jogFns.js +180 -0
  68. package/dist/jogFns.js.map +1 -0
  69. package/dist/loftedFlangeFns.d.ts +23 -0
  70. package/dist/loftedFlangeFns.d.ts.map +1 -0
  71. package/dist/loftedFlangeFns.js +306 -0
  72. package/dist/loftedFlangeFns.js.map +1 -0
  73. package/dist/materials.d.ts +16 -0
  74. package/dist/materials.d.ts.map +1 -0
  75. package/dist/materials.js +44 -0
  76. package/dist/materials.js.map +1 -0
  77. package/dist/miterFns.d.ts +31 -0
  78. package/dist/miterFns.d.ts.map +1 -0
  79. package/dist/miterFns.js +128 -0
  80. package/dist/miterFns.js.map +1 -0
  81. package/dist/nestFns.d.ts +116 -0
  82. package/dist/nestFns.d.ts.map +1 -0
  83. package/dist/nestFns.js +517 -0
  84. package/dist/nestFns.js.map +1 -0
  85. package/dist/polygonFns.d.ts +144 -0
  86. package/dist/polygonFns.d.ts.map +1 -0
  87. package/dist/polygonFns.js +324 -0
  88. package/dist/polygonFns.js.map +1 -0
  89. package/dist/reliefFns.d.ts +44 -0
  90. package/dist/reliefFns.d.ts.map +1 -0
  91. package/dist/reliefFns.js +367 -0
  92. package/dist/reliefFns.js.map +1 -0
  93. package/dist/reportFns.d.ts +33 -0
  94. package/dist/reportFns.d.ts.map +1 -0
  95. package/dist/reportFns.js +71 -0
  96. package/dist/reportFns.js.map +1 -0
  97. package/dist/tabFns.d.ts +43 -0
  98. package/dist/tabFns.d.ts.map +1 -0
  99. package/dist/tabFns.js +179 -0
  100. package/dist/tabFns.js.map +1 -0
  101. package/dist/types.d.ts +629 -0
  102. package/dist/types.d.ts.map +1 -0
  103. package/dist/types.js +2 -0
  104. package/dist/types.js.map +1 -0
  105. package/dist/unfoldFns.d.ts +120 -0
  106. package/dist/unfoldFns.d.ts.map +1 -0
  107. package/dist/unfoldFns.js +766 -0
  108. package/dist/unfoldFns.js.map +1 -0
  109. package/dist/validateFns.d.ts +18 -0
  110. package/dist/validateFns.d.ts.map +1 -0
  111. package/dist/validateFns.js +196 -0
  112. package/dist/validateFns.js.map +1 -0
  113. package/package.json +45 -0
@@ -0,0 +1,629 @@
1
+ import type { Solid, Wire, Edge, Bounds3D } from '@faicad/faijs/brepjs-compat';
2
+ /** Which edge of a flat a child flange folds off. */
3
+ export type FlatSide = 'xmin' | 'xmax' | 'ymin' | 'ymax';
4
+ /**
5
+ * Reference to the parent edge a flange folds from. `faceIndex` keeps the legacy
6
+ * construction-order scheme (`face-0` = base flat). `parentId` names the parent
7
+ * flat directly (a flange id for chained flanges, or undefined for the base) and
8
+ * `side`/`offset`/`extent` locate the flange along that parent edge — the data
9
+ * the recursive unfold walk and the feature tree consume.
10
+ */
11
+ export type EdgeRef = {
12
+ kind: 'index';
13
+ faceIndex: number;
14
+ edgeIndex: number;
15
+ parentId?: string | undefined;
16
+ side?: FlatSide | undefined;
17
+ offset?: number | undefined;
18
+ extent?: number | undefined;
19
+ };
20
+ /** Bend-deduction rule: a bend's inner radius plus its K-factor, with an optional
21
+ * allowance, deduction, or bend-table reference as the length-compensation basis. */
22
+ export interface BendRule {
23
+ innerRadius: number;
24
+ kFactor: number;
25
+ allowance?: number | undefined;
26
+ deduction?: number | undefined;
27
+ bendTableRef?: string | undefined;
28
+ }
29
+ /** A stock material: a name and thickness, plus the default {@link BendRule} applied
30
+ * to bends made from it. */
31
+ export interface MaterialSpec {
32
+ name: string;
33
+ thickness: number;
34
+ defaultRule: BendRule;
35
+ }
36
+ /** Miter between two adjacent flange ends: a cut gap, with `style` currently always
37
+ * `'auto'` (the corner geometry is derived automatically). */
38
+ export interface MiterSpec {
39
+ gap: number;
40
+ style: 'auto';
41
+ }
42
+ /** A single bend in the folded part: a 3D fold axis (origin + direction), the bend
43
+ * angle and direction, and the {@link BendRule} used to develop it. */
44
+ export interface BendFeature {
45
+ id: string;
46
+ axisOrigin: [number, number, number];
47
+ axisDir: [number, number, number];
48
+ angleDeg: number;
49
+ direction: 'up' | 'down';
50
+ rule: BendRule;
51
+ }
52
+ /** A flange folded up from an edge of a parent flat (the base or another flange):
53
+ * length, span, angle, optional miter, and the {@link BendRule} it folds with. */
54
+ export interface FlangeFeature {
55
+ id: string;
56
+ baseEdge: EdgeRef;
57
+ length: number;
58
+ /** Extent along the bend axis — the flange's cross-width in the developed strip. */
59
+ span: number;
60
+ /** Start position of the flange measured along the parent edge (0 = edge start). */
61
+ offset?: number | undefined;
62
+ angleDeg: number;
63
+ direction?: 'up' | 'down' | undefined;
64
+ rule: BendRule;
65
+ /** World-space AABB of the folded flange, recorded by {@link authorPart} from the
66
+ * real placed geometry. The collision check prefers this over an analytic re-fold,
67
+ * which is only correct for root flanges (chained flanges fold off an off-plane edge). */
68
+ foldedBounds?: Bounds3D | undefined;
69
+ miter?: MiterSpec | undefined;
70
+ }
71
+ /** A recorded corner miter between two perpendicular flanges. */
72
+ export interface CornerMiter {
73
+ flangeA: string;
74
+ flangeB: string;
75
+ gap: number;
76
+ }
77
+ /**
78
+ * A relief cut to make a multi-bend part manufacturable. `shape` records the intent:
79
+ * `rectangular` is a plain slot, `obround` the rounded-slot (semicircular-ended,
80
+ * lower-stress) standard relief. In this version both produce rectangular geometry —
81
+ * `obround` only carries the rounded-end intent onto the recorded feature; the
82
+ * developed notch and 3D cut are rectangular for both. `width` runs along the parent
83
+ * edge (the slot's narrow extent, default ≈ material thickness); `depth` cuts
84
+ * perpendicular into the parent flat (default ≈ the bend's developed length plus a
85
+ * small clearance). For a corner relief, `width` sets the square notch side (default
86
+ * ≈ depth).
87
+ */
88
+ export interface ReliefSpec {
89
+ shape: 'rectangular' | 'obround';
90
+ width?: number | undefined;
91
+ depth?: number | undefined;
92
+ }
93
+ /**
94
+ * A recorded relief, mirroring {@link CornerMiter}: enough information for the
95
+ * unfold to replay the 2D notch without reparsing geometry. `kind` distinguishes a
96
+ * bend relief (a slot at each end of a partial bend line, into the parent flat)
97
+ * from a corner relief (a notch at the shared corner of two flanges). `notches`
98
+ * are the developed-plane (flat-pattern) rectangles to subtract from the outline;
99
+ * each is also cut from the 3D solid. `shape` carries the rounded-end option onto
100
+ * the developed outline.
101
+ */
102
+ export interface ReliefFeature {
103
+ kind: 'bend' | 'corner';
104
+ shape: 'rectangular' | 'obround';
105
+ /** The flange the relief was applied to (bend relief) or the first flange (corner relief). */
106
+ flangeA: string;
107
+ /** The second flange of a corner relief; undefined for a bend relief. */
108
+ flangeB?: string | undefined;
109
+ width: number;
110
+ depth: number;
111
+ /** Developed-plane notch rectangles `[x0, y0, x1, y1]` subtracted from the outline. */
112
+ notches: [number, number, number, number][];
113
+ }
114
+ /**
115
+ * A 2D feature punched through a named flat region's thickness, in that region's
116
+ * LOCAL frame: the origin is the region frame origin, `+x` runs along the region's
117
+ * `u` axis and `+y` along its `v` axis (so `(0,0)` is the region's near corner).
118
+ * `region` is a flange id, or `'root'`/`'base'` for the base flat.
119
+ *
120
+ * - `hole` — a circular hole centred at `(x, y)`.
121
+ * - `slot` — a slot centred at `(x, y)`, `length` along the slot axis by `width`
122
+ * across; `angleDeg` rotates the slot in-plane (CCW about its centre);
123
+ * `round` makes the ends semicircular (obround) rather than square.
124
+ * - `polygon`— an arbitrary closed polygon given by its local `points` (≥ 3).
125
+ *
126
+ * `region` names the flat the cutout sits on: a flange id, or `'root'`/`'base'`/
127
+ * `'face-0'` for the base flat (the three base aliases the rest of the package
128
+ * accepts). Coordinates are region-local: `+x` along the bend axis, `+y` along the
129
+ * run, origin at the region's frame origin.
130
+ */
131
+ export type CutoutSpec = {
132
+ kind: 'hole';
133
+ region: string;
134
+ x: number;
135
+ y: number;
136
+ diameter: number;
137
+ } | {
138
+ kind: 'slot';
139
+ region: string;
140
+ x: number;
141
+ y: number;
142
+ length: number;
143
+ width: number;
144
+ angleDeg?: number | undefined;
145
+ round?: boolean | undefined;
146
+ } | {
147
+ kind: 'polygon';
148
+ region: string;
149
+ points: [number, number][];
150
+ };
151
+ /**
152
+ * A recorded cutout, mirroring {@link ReliefFeature}: enough to replay the 2D loop
153
+ * in the developed pattern without re-deriving geometry. `spec` is the original
154
+ * region-local feature (so {@link FoldRegion} can re-apply it on a re-fold); `loop`
155
+ * is the closed cutout boundary already mapped into developed-plane coordinates via
156
+ * the region's unfold frame; `area` is the loop's enclosed area, subtracted from the
157
+ * developed area.
158
+ */
159
+ export interface CutoutFeature {
160
+ spec: CutoutSpec;
161
+ /** The region (flange id, or `'root'`) the cutout was applied to. */
162
+ region: string;
163
+ /** Closed cutout boundary `[x, y]` in the developed (flat-pattern) plane. */
164
+ loop: [number, number][];
165
+ /** Enclosed area of the loop. */
166
+ area: number;
167
+ }
168
+ /**
169
+ * A rectangular tab: additive material extending OUTWARD from a flat region's edge
170
+ * (the additive counterpart of a cutout). `region` names the flat (a flange id, or
171
+ * `'base'`/`'root'` for the base); `side` is the region-local edge it protrudes
172
+ * from; `offset` is its start position along that edge and `width` its extent along
173
+ * it; `length` is how far it sticks out past the edge. The tab is full thickness.
174
+ */
175
+ export interface TabSpec {
176
+ region: string;
177
+ side: FlatSide;
178
+ offset: number;
179
+ width: number;
180
+ length: number;
181
+ }
182
+ /**
183
+ * A recorded tab, mirroring {@link CutoutFeature}: enough to replay the developed
184
+ * protrusion and re-fuse the 3D material on a re-fold. `rect` is the developed-plane
185
+ * rectangle `[x0, y0, x1, y1]` added to the outer outline; `area` is its area, added
186
+ * to the developed area.
187
+ */
188
+ export interface TabFeature {
189
+ spec: TabSpec;
190
+ /** The region (flange id, or `'root'`) the tab protrudes from. */
191
+ region: string;
192
+ /** Developed-plane protrusion rectangle `[x0, y0, x1, y1]`. */
193
+ rect: [number, number, number, number];
194
+ /** Area of the protrusion rectangle (`width · length`). */
195
+ area: number;
196
+ }
197
+ /**
198
+ * A form feature: a louver (vent flap) or an emboss/dimple (round bump), formed
199
+ * locally on a flat region's face. Forms do not remove or add net material, so the
200
+ * developed outline is unchanged; the flat pattern carries the fabrication markers
201
+ * (the louver U-cut + hinge line, the emboss footprint circle) on a FORM layer.
202
+ *
203
+ * - `louver` — a vent cut on three sides with the flap formed up along the hinge.
204
+ * `length` runs along the hinge, `width` is the flap depth (perpendicular), and
205
+ * `height` is how far the flap rises. `direction` picks the formed face (`up` =
206
+ * +n, the default).
207
+ * - `emboss` / `dimple` — a round local form of `diameter` rising (`emboss`) or
208
+ * recessed (`dimple`) by `height`.
209
+ *
210
+ * Coordinates are region-local: `(x, y)` is the form centre, `+x` along the region
211
+ * `u` axis, `+y` along `v`.
212
+ */
213
+ export type FormSpec = {
214
+ kind: 'louver';
215
+ region: string;
216
+ x: number;
217
+ y: number;
218
+ length: number;
219
+ width: number;
220
+ height: number;
221
+ direction?: 'up' | 'down' | undefined;
222
+ } | {
223
+ kind: 'emboss';
224
+ region: string;
225
+ x: number;
226
+ y: number;
227
+ diameter: number;
228
+ height: number;
229
+ form: 'dimple' | 'emboss';
230
+ };
231
+ /**
232
+ * A recorded form feature, mirroring {@link CutoutFeature}. `spec` is the original
233
+ * region-local feature (so {@link FoldRegion} can re-apply it on a re-fold). `cuts`
234
+ * are OPEN developed-plane cut paths: the louver's three cut sides — all but the
235
+ * {@link FormFeature.hinge} side — as an open polyline the fabricator cuts to free
236
+ * the flap; empty for an emboss/dimple, which removes no material. `markers` are
237
+ * closed developed-plane marker loops (the emboss/dimple footprint circle; empty for
238
+ * a louver). `hinge` is the developed-plane fold segment of a louver — the one
239
+ * footprint side NOT cut — and is `undefined` for an emboss/dimple.
240
+ */
241
+ export interface FormFeature {
242
+ spec: FormSpec;
243
+ /** The region (flange id, or `'root'`) the form sits on. */
244
+ region: string;
245
+ /** Developed-plane cut paths (open) a fabricator cuts; empty for embosses. */
246
+ cuts: [number, number][][];
247
+ /** Developed-plane marker loops (closed) for the FORM layer. */
248
+ markers: [number, number][][];
249
+ /** Developed-plane hinge segment `[a, b]` for a louver; undefined otherwise. */
250
+ hinge?: [[number, number], [number, number]] | undefined;
251
+ }
252
+ /**
253
+ * One segment of a contour-flange profile: an open 2D polyline of straight `line`
254
+ * runs joined by circular-`arc` bends, swept along a straight base edge. A `line`
255
+ * is a flat leg of `length`; an `arc` is a bend of `radius` turning `angleDeg`
256
+ * either `up` (toward the parent normal) or `down`. Each arc becomes a recorded
257
+ * {@link BendFeature}; each line a flat leg of the developed strip.
258
+ */
259
+ export type ProfileSegment = {
260
+ kind: 'line';
261
+ length: number;
262
+ } | {
263
+ kind: 'arc';
264
+ radius: number;
265
+ angleDeg: number;
266
+ direction: 'up' | 'down';
267
+ };
268
+ /**
269
+ * A contour flange: an OPEN 2D profile (alternating line/arc {@link ProfileSegment}s)
270
+ * swept along a straight edge of the base flat (`side`). Unlike a plain flange (one
271
+ * bend + one flat) this chains an arbitrary multi-bend cross-section — a return, a
272
+ * hat/top-hat, a J — in one feature. The development is EXACT: the developed strip
273
+ * length is the sum of each segment's developed length (lines: `length`; arcs: the
274
+ * canonical {@link bendAllowance}).
275
+ */
276
+ export interface ContourFlangeSpec {
277
+ id: string;
278
+ side: FlatSide;
279
+ profile: ProfileSegment[];
280
+ rule?: BendRule | undefined;
281
+ /** Extent along the base edge (the bend-axis width). Default = full edge length. */
282
+ width?: number | undefined;
283
+ /** Start position along the base edge. Default `0`. */
284
+ offset?: number | undefined;
285
+ }
286
+ /**
287
+ * A recorded contour flange, mirroring {@link FlangeFeature}: enough for the unfold
288
+ * to lay the developed strip out straight along the base edge without re-deriving
289
+ * the 3D geometry. `segments` carries each developed segment in order (a flat leg or
290
+ * a developed bend arc); `developedLength` is their exact sum (the strip length out
291
+ * from the base edge); `span`/`offset` locate the strip along the base edge.
292
+ */
293
+ export interface ContourFlangeFeature {
294
+ id: string;
295
+ side: FlatSide;
296
+ /** Start position along the base edge. */
297
+ offset: number;
298
+ /** Extent along the base edge (the developed strip width). */
299
+ span: number;
300
+ /** Exact developed length out from the base edge (Σ segment developed lengths). */
301
+ developedLength: number;
302
+ segments: {
303
+ kind: 'line' | 'arc';
304
+ /** Developed length of this segment along the strip. */
305
+ dev: number;
306
+ angleDeg?: number | undefined;
307
+ direction?: 'up' | 'down' | undefined;
308
+ /** Id of the recorded {@link BendFeature} for an arc segment. */
309
+ bendId?: string | undefined;
310
+ }[];
311
+ }
312
+ /**
313
+ * A lofted / ruled transition flange: a ruled surface lofted between two parallel
314
+ * OPEN profiles (`profileA`, `profileB`) separated by `height` along +Z, thickened
315
+ * to a valid solid. The development is by TRIANGULATION — the standard sheet-metal
316
+ * transition development pairing profile vertices into triangles laid flat
317
+ * preserving edge lengths. Exact to tolerance for a genuinely developable (single-
318
+ * curvature, straight-generator) transition; an approximation otherwise, in which
319
+ * case the unfold emits a {@link SheetMetalWarning} `DEVELOPMENT_APPROXIMATE`.
320
+ */
321
+ export interface LoftedFlangeSpec {
322
+ id: string;
323
+ /** Open polyline of the near profile, in the base plane (z = 0). */
324
+ profileA: [number, number][];
325
+ /** Open polyline of the far profile (its z is `height`). */
326
+ profileB: [number, number][];
327
+ height: number;
328
+ thickness?: number | undefined;
329
+ }
330
+ /**
331
+ * A recorded lofted flange, mirroring {@link ContourFlangeFeature}. `developedLoop`
332
+ * is the triangulated flat boundary (a closed developed-plane polygon); `developedArea`
333
+ * the summed triangle areas; `approximate` flags a non-developable transition the
334
+ * triangulated development only approximates (the unfold emits the warning).
335
+ */
336
+ export interface LoftedFlangeFeature {
337
+ id: string;
338
+ /** Triangulated developed boundary `[x, y]` (closed) in the developed plane. */
339
+ developedLoop: [number, number][];
340
+ /** Summed area of the triangulated development. */
341
+ developedArea: number;
342
+ /** True when the transition is not developable; the development is an approximation. */
343
+ approximate: boolean;
344
+ }
345
+ /**
346
+ * A hem: an edge folded back ~180°+ onto its parent flat, then running a short
347
+ * return leg. `region` names the flat the hem folds off (a flange id, or
348
+ * `'base'`/`'root'` for the base flat); `side` is that region's local edge. The
349
+ * four `type`s set the curl angle and the gap between the return and the parent:
350
+ *
351
+ * - `closed` — a tight ~180° fold, the return runs flat against the parent
352
+ * (`gap ≈ 0`; a HAIR clearance keeps the fused solid valid). `length` is the
353
+ * return-leg length out along the parent.
354
+ * - `open` — a ~180° fold with a `gap` (defaults to `radius`) between the
355
+ * return and the parent, the return running parallel offset by the gap.
356
+ * - `teardrop` — a >180° curl leaving a small teardrop opening, then a short
357
+ * return tangent to the curl.
358
+ * - `rolled` — a full ~270° circular roll (a curled edge / safe edge), no return.
359
+ *
360
+ * `radius` is the inner bend radius (defaults to one material thickness). `gap`
361
+ * applies to `open` only. `rule` overrides the part's per-bend allowance rule.
362
+ */
363
+ export interface HemSpec {
364
+ region: string;
365
+ side: FlatSide;
366
+ type: 'closed' | 'open' | 'teardrop' | 'rolled';
367
+ /** Optional unique id; defaults to `hem-<region>-<side>-<type>`. Set this to
368
+ * place more than one hem of the same type on the same region edge (e.g. at
369
+ * different offsets). Must not contain `::`. */
370
+ id?: string | undefined;
371
+ /** Return-leg length out along the parent. Required for closed/open/teardrop. */
372
+ length?: number | undefined;
373
+ /** Inner bend radius. Default = one thickness (closed defaults to ≈0, just the
374
+ * HAIR clearance, so it folds flat). */
375
+ radius?: number | undefined;
376
+ /** Open-hem physical clear distance between the return and the parent (the inner
377
+ * radius is set to gap/2). Default = one thickness. */
378
+ gap?: number | undefined;
379
+ /** Start position along the region edge. Default `0`. */
380
+ offset?: number | undefined;
381
+ /** Extent along the region edge. Default = full edge length. */
382
+ width?: number | undefined;
383
+ rule?: BendRule | undefined;
384
+ }
385
+ /**
386
+ * A recorded hem, mirroring {@link ContourFlangeFeature}: enough for the unfold to
387
+ * lay its developed strip out straight along the parent edge. `subBends` are the
388
+ * `hem::<id>::<n>` curl bends (one per ≤180° sub-arc); `returnLength` is the flat
389
+ * return leg past the curl. `developedLength` is the EXACT strip length out from
390
+ * the edge: Σ curl bend allowances + `returnLength`. `segments` mirrors the
391
+ * contour-flange developed segment list (a flat leg or a developed bend arc), so
392
+ * the unfold lays bend lines at their exact cumulative developed offsets.
393
+ */
394
+ export interface HemFeature {
395
+ id: string;
396
+ type: HemSpec['type'];
397
+ /** The flat region the hem folds off (a flange id, or `'root'` for the base). */
398
+ region: string;
399
+ side: FlatSide;
400
+ /** Start position along the parent edge. */
401
+ offset: number;
402
+ /** Extent along the parent edge (the developed strip width). */
403
+ span: number;
404
+ /** Flat return-leg length past the curl (0 for a rolled hem). */
405
+ returnLength: number;
406
+ /** Exact developed length out from the parent edge (Σ curl allowances + return). */
407
+ developedLength: number;
408
+ subBends: string[];
409
+ segments: {
410
+ kind: 'line' | 'arc';
411
+ /** Developed length of this segment along the strip. */
412
+ dev: number;
413
+ angleDeg?: number | undefined;
414
+ direction?: 'up' | 'down' | undefined;
415
+ /** Id of the recorded {@link BendFeature} for an arc segment. */
416
+ bendId?: string | undefined;
417
+ }[];
418
+ }
419
+ /**
420
+ * A jog (joggle): two opposite bends (`+θ` then `−θ`) that step a flat by
421
+ * `offsetHeight` perpendicular to its plane, then continue parallel past the step.
422
+ * `region` names the flat the jog runs across (a flange id, or `'base'`/`'root'`);
423
+ * `side` is the region edge the jog develops out from; `position` is how far out
424
+ * along the run the jog sits; `offsetHeight` is the Z-step the two bends produce.
425
+ * `angle` (default 45°) is the magnitude of each bend — a shallower angle gives a
426
+ * longer, gentler step; the connecting step run is `offsetHeight / sin(angle)`.
427
+ * `runOut` is the flat leg continuing past the second bend. `rule` overrides the
428
+ * per-bend allowance rule.
429
+ */
430
+ export interface JogSpec {
431
+ region: string;
432
+ side: FlatSide;
433
+ /** Optional unique id; defaults to `jog-<region>-<side>`. Set this to place more
434
+ * than one jog on the same region edge (e.g. at different positions). Must not
435
+ * contain `::`. */
436
+ id?: string | undefined;
437
+ /** Distance out along the run from the region edge to the first bend. */
438
+ position: number;
439
+ /** The perpendicular step the two opposite bends produce. Must be > 0. */
440
+ offsetHeight: number;
441
+ /** Magnitude of each opposite bend, in degrees (0, 90). Default `45`. */
442
+ angle?: number | undefined;
443
+ /** Flat leg continuing past the second bend. Default = `position`. */
444
+ runOut?: number | undefined;
445
+ /** Inner bend radius. Default = one material thickness. */
446
+ radius?: number | undefined;
447
+ /** Start position along the region edge. Default `0`. */
448
+ offset?: number | undefined;
449
+ /** Extent along the region edge. Default = full edge length. */
450
+ width?: number | undefined;
451
+ rule?: BendRule | undefined;
452
+ }
453
+ /**
454
+ * A recorded jog, mirroring {@link HemFeature}. `bends` are the two opposite curl
455
+ * bends (`jog::<id>::0` up, `jog::<id>::1` down); `offsetHeight` is the requested
456
+ * perpendicular step; `segments` is the developed leg/arc list (position leg →
457
+ * up bend → step run → down bend → runOut leg). `developedLength` is the exact
458
+ * strip length out from the edge (Σ legs + Σ bend allowances).
459
+ */
460
+ export interface JogFeature {
461
+ id: string;
462
+ /** The flat region the jog runs across (a flange id, or `'root'` for the base). */
463
+ region: string;
464
+ side: FlatSide;
465
+ offset: number;
466
+ span: number;
467
+ offsetHeight: number;
468
+ angleDeg: number;
469
+ developedLength: number;
470
+ bends: string[];
471
+ segments: {
472
+ kind: 'line' | 'arc';
473
+ dev: number;
474
+ angleDeg?: number | undefined;
475
+ direction?: 'up' | 'down' | undefined;
476
+ bendId?: string | undefined;
477
+ }[];
478
+ }
479
+ /** A fully-defined sheet-metal part: thickness, base-flat extents, material, and the
480
+ * feature lists (flanges, bends, reliefs, cutouts, tabs, forms, …) that build it. */
481
+ export interface SheetMetalPart {
482
+ thickness: number;
483
+ /** Base flat extent along +X (x∈[0, baseLength]); the east-run length. */
484
+ baseLength: number;
485
+ /** Base flat cross-width (extent perpendicular to the run); the developed-strip width. */
486
+ width: number;
487
+ material?: MaterialSpec | undefined;
488
+ flanges: FlangeFeature[];
489
+ bends: BendFeature[];
490
+ solid?: Solid | undefined;
491
+ miters?: CornerMiter[] | undefined;
492
+ reliefs?: ReliefFeature[] | undefined;
493
+ cutouts?: CutoutFeature[] | undefined;
494
+ tabs?: TabFeature[] | undefined;
495
+ forms?: FormFeature[] | undefined;
496
+ contourFlanges?: ContourFlangeFeature[] | undefined;
497
+ loftedFlanges?: LoftedFlangeFeature[] | undefined;
498
+ hems?: HemFeature[] | undefined;
499
+ jogs?: JogFeature[] | undefined;
500
+ }
501
+ /** The developed 2D flat of a part: the outer outline, fold bend-lines, interior
502
+ * cutouts, form cut/marker/hinge annotations, lofted developments, and area. */
503
+ export interface FlatPattern {
504
+ outline: Wire;
505
+ bendLines: {
506
+ id: string;
507
+ line: Edge;
508
+ angleDeg: number;
509
+ direction: 'up' | 'down';
510
+ /** Unit direction in the developed plane pointing into the parent flat (the
511
+ * side a bend relief notches), opposite the develop-out direction. */
512
+ inward: [number, number];
513
+ }[];
514
+ /** Interior cutout loops (holes/slots/polygons) as closed wires in the developed plane. */
515
+ holes: Wire[];
516
+ /** Form cut paths (louver U-cuts) a fabricator cuts before forming, as open wires
517
+ * (the three non-hinge sides; the hinge rides in {@link FlatPattern.formHinges}). */
518
+ formCuts: Wire[];
519
+ /** Form marker loops (emboss/dimple footprints) for annotation, as closed wires. */
520
+ formMarkers: Wire[];
521
+ /** Form hinge lines (louver fold lines) for annotation, as edges. */
522
+ formHinges: Edge[];
523
+ /**
524
+ * Lofted/ruled transition developed boundaries, as closed wires in the developed
525
+ * plane (one per recorded {@link LoftedFlangeFeature}). The outline laid out by the
526
+ * rectilinear union covers the base + straight flanges; a ruled transition's
527
+ * triangulated development is non-rectilinear and rides here instead.
528
+ */
529
+ loftedDevelopments: Wire[];
530
+ developedArea: number;
531
+ }
532
+ /** Per-bend summary of a development: each bend's radius, allowance and flat length,
533
+ * plus the overall flat-pattern size. */
534
+ export interface BendReport {
535
+ bends: {
536
+ id: string;
537
+ angleDeg: number;
538
+ radius: number;
539
+ allowance: number;
540
+ flatLength: number;
541
+ direction: 'up' | 'down';
542
+ }[];
543
+ totalFlatSize: [number, number];
544
+ }
545
+ /** A non-fatal problem encountered while unfolding or nesting a part: a
546
+ * machine-readable code, a human message, and an optional offending feature id. */
547
+ export type SheetMetalWarning = {
548
+ code: 'COLLISION' | 'SEAM_CUT' | 'MIN_RADIUS' | 'INVALID_SOLID' | 'MITER_NOT_DEVELOPED' | 'DEVELOPMENT_APPROXIMATE'
549
+ /** Foreign unfold: a face is outside the supported planar/cylindrical class
550
+ * (unknown surface type, or a cylinder that didn't fit) and was ignored. */
551
+ | 'UNSUPPORTED_FACE'
552
+ /** Foreign unfold: the part is a valid solid but its detected structure is
553
+ * incomplete (non-uniform thickness, a dropped panel, or a bend not joining
554
+ * exactly two flats), so the flat pattern may be partial. */
555
+ | 'DETECTION_INCOMPLETE'
556
+ /** A bend-table query fell outside the tabulated (thickness, radius, angle)
557
+ * range and was clamped to the nearest entry (no extrapolation). Distinct from
558
+ * MIN_RADIUS, which means a bend's inner radius is below one thickness. */
559
+ | 'TABLE_CLAMP'
560
+ /** Nesting: a flat pattern's outline bounding box does not fit the usable stock
561
+ * sheet (sheet minus margin) even rotated 90°, so it was left unplaced. */
562
+ | 'PART_TOO_LARGE';
563
+ message: string;
564
+ featureId?: string | undefined;
565
+ };
566
+ /** The outcome of unfolding a part: the {@link FlatPattern}, its {@link BendReport},
567
+ * and any {@link SheetMetalWarning}s raised along the way. */
568
+ export interface UnfoldResult {
569
+ pattern: FlatPattern;
570
+ report: BendReport;
571
+ warnings: SheetMetalWarning[];
572
+ }
573
+ /**
574
+ * One fold-up region in a {@link FlatInput}: a rectangle in the flat pattern that
575
+ * folds about a fold line off its parent region (the base by default, or another
576
+ * region via `parent`). The region-tree is the inverse of the unfold layout, and is
577
+ * recovered purely from the 2D flat-pattern geometry by `patternToFlatInput` — so
578
+ * folding it up just re-runs the forward author geometry. `side`/`offset`/`width`
579
+ * locate the fold line along the parent edge exactly as the authoring `FlangeSpec`
580
+ * does (`side` is expressed in the parent region's local frame).
581
+ */
582
+ export interface FoldRegion {
583
+ id: string;
584
+ /** Flat extent of the region away from the fold line (becomes the flange length). */
585
+ length: number;
586
+ angleDeg: number;
587
+ direction: 'up' | 'down';
588
+ rule: BendRule;
589
+ /** Which edge of the parent region this region folds off. Default `'xmax'`. */
590
+ side?: FlatSide | undefined;
591
+ /** Id of another fold region this one chains off. Default = base region. */
592
+ parent?: string | undefined;
593
+ /** Start position along the parent edge. Default `0`. */
594
+ offset?: number | undefined;
595
+ /** Extent along the parent edge. Default = full parent-edge length. */
596
+ width?: number | undefined;
597
+ miter?: MiterSpec | undefined;
598
+ /** Bend relief to add at this region's partial-span fold-line ends after folding. */
599
+ bendRelief?: ReliefSpec | undefined;
600
+ /** Cutouts to punch into this region (in region-local coords) after folding. */
601
+ cutouts?: CutoutSpec[] | undefined;
602
+ /** Tabs to fuse onto this region's edges (in region-local coords) after folding. */
603
+ tabs?: TabSpec[] | undefined;
604
+ /** Form features (louvers / embosses) on this region (region-local) after folding. */
605
+ forms?: FormSpec[] | undefined;
606
+ }
607
+ /**
608
+ * A flat pattern to fold up into a 3D part: the base region (a rectangle) plus a
609
+ * tree of {@link FoldRegion}s, each folding off its parent about a fold line. This
610
+ * is the inverse of {@link unfold}: a region-tree rather than a 2D outline, which
611
+ * avoids fragile auto-partitioning of an arbitrary developed polygon and maps
612
+ * one-to-one onto the authored feature tree.
613
+ */
614
+ export interface FlatInput {
615
+ thickness: number;
616
+ /** Base region extent along +X (the run). */
617
+ baseLength: number;
618
+ /** Base region extent along +Y (the developed-strip width). */
619
+ width: number;
620
+ material?: MaterialSpec | undefined;
621
+ regions: FoldRegion[];
622
+ /** Cutouts to punch into the base region (in base-local coords) after folding. */
623
+ baseCutouts?: CutoutSpec[] | undefined;
624
+ /** Tabs to fuse onto the base region's edges (in base-local coords) after folding. */
625
+ baseTabs?: TabSpec[] | undefined;
626
+ /** Form features on the base region (base-local coords) after folding. */
627
+ baseForms?: FormSpec[] | undefined;
628
+ }
629
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE/E,qDAAqD;AACrD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF;qFACqF;AACrF,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;4BAC4B;AAC5B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED;8DAC8D;AAC9D,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;uEACuE;AACvE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED;kFACkF;AAClF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf;;8FAE0F;IAC1F,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC/B;AAED,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxE;IACE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CAAE,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,QAAQ,GAChB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;CACvC,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3B,CAAC;AAEN;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC3B,gEAAgE;IAChE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC9B,gFAAgF;IAChF,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CAC1D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QACrB,wDAAwD;QACxD,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,iEAAiE;QACjE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,EAAE,CAAC;CACL;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAClC,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChD;;oDAEgD;IAChD,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;4CACwC;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;2DACuD;IACvD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QACrB,wDAAwD;QACxD,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,iEAAiE;QACjE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,EAAE,CAAC;CACL;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf;;uBAEmB;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;QACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,EAAE,CAAC;CACL;AAED;qFACqF;AACrF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACnC,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACtC,OAAO,CAAC,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC,cAAc,CAAC,EAAE,oBAAoB,EAAE,GAAG,SAAS,CAAC;IACpD,aAAa,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAClD,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CACjC;AAED;gFACgF;AAChF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,IAAI,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QACzB;8EACsE;QACtE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1B,EAAE,CAAC;IACJ,2FAA2F;IAC3F,KAAK,EAAE,IAAI,EAAE,CAAC;IACd;yFACqF;IACrF,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,oFAAoF;IACpF,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,qEAAqE;IACrE,UAAU,EAAE,IAAI,EAAE,CAAC;IACnB;;;;;OAKG;IACH,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;yCACyC;AACzC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED;mFACmF;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EACA,WAAW,GACX,UAAU,GACV,YAAY,GACZ,eAAe,GACf,qBAAqB,GACrB,yBAAyB;IAC3B;gFAC4E;OAC1E,kBAAkB;IACpB;;iEAE6D;OAC3D,sBAAsB;IACxB;;+EAE2E;OACzE,aAAa;IACf;+EAC2E;OACzE,gBAAgB,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF;8DAC8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,+EAA+E;IAC/E,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,qFAAqF;IACrF,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,gFAAgF;IAChF,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACnC,oFAAoF;IACpF,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAC7B,sFAAsF;IACtF,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,kFAAkF;IAClF,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACvC,sFAAsF;IACtF,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACjC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;CACpC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map