@issuegraph/viewer 0.3.0 → 0.9.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 (59) hide show
  1. package/dist/clusters.d.ts +116 -0
  2. package/dist/clusters.d.ts.map +1 -1
  3. package/dist/clusters.js +85 -2
  4. package/dist/clusters.js.map +1 -1
  5. package/dist/document.d.ts +228 -5
  6. package/dist/document.d.ts.map +1 -1
  7. package/dist/document.js +204 -3
  8. package/dist/document.js.map +1 -1
  9. package/dist/element.d.ts +11 -0
  10. package/dist/element.d.ts.map +1 -1
  11. package/dist/element.js.map +1 -1
  12. package/dist/index.d.ts +17 -6
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +31 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/layout.d.ts +79 -50
  17. package/dist/layout.d.ts.map +1 -1
  18. package/dist/layout.js +371 -170
  19. package/dist/layout.js.map +1 -1
  20. package/dist/marks.d.ts +105 -0
  21. package/dist/marks.d.ts.map +1 -0
  22. package/dist/marks.js +430 -0
  23. package/dist/marks.js.map +1 -0
  24. package/dist/mount.d.ts +13 -0
  25. package/dist/mount.d.ts.map +1 -1
  26. package/dist/mount.js +69 -1
  27. package/dist/mount.js.map +1 -1
  28. package/dist/navigation.d.ts +14 -0
  29. package/dist/navigation.d.ts.map +1 -1
  30. package/dist/navigation.js +51 -0
  31. package/dist/navigation.js.map +1 -1
  32. package/dist/parts.d.ts +308 -2
  33. package/dist/parts.d.ts.map +1 -1
  34. package/dist/parts.js +845 -65
  35. package/dist/parts.js.map +1 -1
  36. package/dist/projections/graph.d.ts +25 -0
  37. package/dist/projections/graph.d.ts.map +1 -1
  38. package/dist/projections/graph.js +476 -335
  39. package/dist/projections/graph.js.map +1 -1
  40. package/dist/projections/linear.d.ts +135 -0
  41. package/dist/projections/linear.d.ts.map +1 -1
  42. package/dist/projections/linear.js +266 -31
  43. package/dist/projections/linear.js.map +1 -1
  44. package/dist/projections/tree.d.ts.map +1 -1
  45. package/dist/projections/tree.js +29 -3
  46. package/dist/projections/tree.js.map +1 -1
  47. package/dist/styles.d.ts +10 -1
  48. package/dist/styles.d.ts.map +1 -1
  49. package/dist/styles.js +1275 -132
  50. package/dist/styles.js.map +1 -1
  51. package/dist/theme.d.ts +5 -6
  52. package/dist/theme.d.ts.map +1 -1
  53. package/dist/theme.js +119 -7
  54. package/dist/theme.js.map +1 -1
  55. package/dist/vocabulary.d.ts +39 -0
  56. package/dist/vocabulary.d.ts.map +1 -1
  57. package/dist/vocabulary.js +27 -0
  58. package/dist/vocabulary.js.map +1 -1
  59. package/package.json +2 -2
package/dist/parts.d.ts CHANGED
@@ -15,6 +15,40 @@ import { type ElementSpec } from './element.ts';
15
15
  * listener.
16
16
  */
17
17
  export declare const COMMAND_ATTRIBUTE = "data-ig-command";
18
+ /**
19
+ * A mark for the eye and for nothing else.
20
+ *
21
+ * FOUR CHANNELS SEPARATE A RELATIONSHIP AND ONLY ONE OF THEM IS AUDIBLE. The
22
+ * glyph is `aria-hidden` because `⊘` announces as whatever a given screen
23
+ * reader's character table calls it — "circle with slash", or nothing at all —
24
+ * which is a description of the mark rather than of the relationship. Whatever
25
+ * carries the NAME has to be something else: the word beside it, or an
26
+ * `aria-label` on the control the mark sits inside.
27
+ *
28
+ * IT IS ITS OWN FUNCTION BECAUSE THE PAIRING IS NOT ITS ONLY CONSUMER. A word
29
+ * beside the glyph is the common shape and {@link glyphAndLabel} is it, but a
30
+ * glyph-only control — §17a's `✕` in a relationship row's slot, whose name is
31
+ * on the button — genuinely needs the hidden mark with no visible word. Given
32
+ * only the pairing, that call site writes the class and the `aria-hidden` out
33
+ * by hand, which is the copy the pairing exists to prevent wearing a different
34
+ * shape. Two published pieces, one rule.
35
+ */
36
+ export declare function hiddenGlyph(glyph: string): ElementSpec;
37
+ /**
38
+ * A badge's inner pair — the glyph a reader can see and the word a reader can
39
+ * hear.
40
+ *
41
+ * THE WORD IS THE ACCESSIBLE NAME, and it is the vocabulary's own. The mark
42
+ * beside it is {@link hiddenGlyph}, so the `aria-hidden` that makes this pair
43
+ * work at all is written in one place for every surface that draws one.
44
+ *
45
+ * EXPORTED FOR THE EDITOR, which draws the same pair in §17a's inspector rows
46
+ * and its numbered kind list. A second spelling of the pairing there would be
47
+ * free to drop the `aria-hidden` — the failure it exists to prevent — and would
48
+ * put the same relationship on screen in two shapes one zone apart from the
49
+ * §16 badge this already draws.
50
+ */
51
+ export declare function glyphAndLabel(glyph: string, label: string): readonly ElementSpec[];
18
52
  /** How a readiness station is filled — the parallelism channel. */
19
53
  export type StationFill = 'filled' | 'hollow' | 'dashed';
20
54
  /**
@@ -32,12 +66,54 @@ export declare function station(fill: StationFill): ElementSpec;
32
66
  * kind of knowledge this layer exists not to have.
33
67
  */
34
68
  export declare function identity(issue: ViewerIssue): ElementSpec;
69
+ /**
70
+ * The provenance SENTENCE, without the line it normally sits on.
71
+ *
72
+ * ONE WORDING, TWO PLACEMENTS. §16 hangs this sentence off a turnstile as a
73
+ * subordinate rail line; §17a's inspector needs the same sentence inside its
74
+ * own "why rank" paragraph, where a `↳` would be rail furniture imported into
75
+ * a panel. So the wording lives here and the furniture lives in
76
+ * {@link provenanceLine}, which is the only difference between the two.
77
+ *
78
+ * IT IS ON THE PUBLIC SURFACE FOR THE EDITOR, and that is the whole reason it
79
+ * exists separately. Layer 2 composing this is layer 2 reading layer 1's
80
+ * wording; layer 2 switching on `RankProvenance` itself would be a second
81
+ * wording of one fact, free to drift from the rail's. The seam permits adding
82
+ * to this layer's surface — what it forbids is reaching past it.
83
+ *
84
+ * NO TURNSTILE HERE, DELIBERATELY. `provenanceLine` adds it. A caller that
85
+ * wants the §16 line calls that; a caller that wants the sentence calls this.
86
+ */
87
+ export declare function provenanceClause(provenance: RankProvenance | undefined): ElementSpec | null;
35
88
  /**
36
89
  * The provenance line, in the three forms the design fixes: a matched ordering
37
90
  * query, the declared tier, and an effective-priority promotion that names the
38
91
  * dependent the urgency arrived through.
92
+ *
93
+ * The wording is {@link provenanceClause}'s; this adds only §16's turnstile and
94
+ * the paragraph it hangs on, so the rail and the inspector cannot come to
95
+ * disagree about how one fact reads.
39
96
  */
40
97
  export declare function provenanceLine(provenance: RankProvenance | undefined): ElementSpec | null;
98
+ /**
99
+ * The priority chip a row wears on its badge row, derived from the same
100
+ * provenance the sentence beneath it explains.
101
+ *
102
+ * ONE FACT, TWO READS, and the frame draws both on purpose: the chip is what a
103
+ * reader scanning a column of rows sees, and the sentence is what they read
104
+ * when the chip surprises them. A promotion is the one chip the design accents,
105
+ * because a low tier pulled to the top because it blocks a high one is the most
106
+ * interesting thing the panel can say.
107
+ */
108
+ export declare function priorityBadge(provenance: RankProvenance | undefined): ElementSpec | null;
109
+ /**
110
+ * The evidence chip: `✓ verified`, or nothing.
111
+ *
112
+ * ABSENT READS `asserted`, which §16d states in those words, so an absent field
113
+ * draws no chip rather than a muted one — a panel that prints "asserted" on
114
+ * every row has spent a chip slot on the default.
115
+ */
116
+ export declare function evidenceBadge(issue: ViewerIssue | undefined): ElementSpec | null;
41
117
  /**
42
118
  * One hold, rendered with the family it belongs to visible in the markup — and
43
119
  * its cause and subject beside it when the host supplied them, so a host reads
@@ -61,7 +137,78 @@ export declare function footerLabels(slots: readonly ViewerSlot[]): string;
61
137
  * count over a window), and the stamp is text the host formatted. `null` when
62
138
  * the host stated neither, so a document with no host facts draws no header.
63
139
  */
64
- export declare function hostHeader(document: NormalizedDocument): ElementSpec | null;
140
+ export interface HeaderControls {
141
+ /** Which projection is drawn now, so the toggle can mark it. */
142
+ readonly projection: 'linear' | 'graph' | 'tree';
143
+ /**
144
+ * Whether the host wired the view commands — `projection:*`, `expand` and
145
+ * `collapse`. See `SceneOptions.switchable`.
146
+ */
147
+ readonly switchable: boolean;
148
+ /**
149
+ * Whether the graph is drawn in a column or at full width. Absent for the
150
+ * projections where the question does not arise.
151
+ */
152
+ readonly compact?: boolean | undefined;
153
+ }
154
+ export declare function hostHeader(document: NormalizedDocument, controls?: HeaderControls): ElementSpec | null;
155
+ /**
156
+ * The kind of condition the host stated, or nothing.
157
+ *
158
+ * Exported so each projection root can put it on the panel element as
159
+ * `data-ig-condition` and let the STYLESHEET decide what a condition looks
160
+ * like. `renderAttrs` omits a `null` attribute, so a host that stated none
161
+ * emits exactly the markup it emitted before this existed — which is what keeps
162
+ * the pure-graph promise a promise rather than an aspiration.
163
+ */
164
+ export declare function conditionKind(document: NormalizedDocument, chrome: boolean | undefined): string | null;
165
+ /**
166
+ * Whether the host has said why this panel is short, so no projection may say
167
+ * why itself.
168
+ *
169
+ * NOT CHROME, AND THIS IS THE DISTINCTION THE TWO HELPERS EXIST TO KEEP. What
170
+ * to DRAW is a rendering question, and a host composing two views of one
171
+ * document wants the notice and its outline once — that is `conditionKind`.
172
+ * What is TRUE is not: a chrome-less canvas beside an explained rail is still a
173
+ * view of a document whose emptiness the host has accounted for, and its own
174
+ * derived sentence is not a fallback explanation but a false one. The graph's
175
+ * reads "no issue in this document declares a relationship", which under a
176
+ * stated `error` is a claim about something else entirely, contradicting the
177
+ * panel beside it. Drawing nothing there is right; explaining it wrongly is not.
178
+ */
179
+ export declare function statesItsOwnCause(document: NormalizedDocument): boolean;
180
+ /**
181
+ * The panel-level notice: what the host says is true of the whole panel.
182
+ *
183
+ * CHROME, like the header beside it, and it takes the flag rather than leaving
184
+ * each projection to apply it: the rule is that a host composing two views of
185
+ * one document owns ONE notice for the same reason it owns one header, and a
186
+ * rule restated at three call sites is three places to forget it. The same
187
+ * argument that gave `hostHeader` its gate gives this one its parameter.
188
+ *
189
+ * `role="status"` SITS ON THE TEXT, NOT THE CONTAINER. A polite live region
190
+ * holding an interactive control re-announces the button every time the host
191
+ * re-renders, which turns a reassurance into a nag.
192
+ *
193
+ * A CONTROL IS DRAWN ONLY FOR A HOST THAT NAMED ONE, exactly as the refresh
194
+ * button beside the stamp is. An `href` makes it a link instead of a command —
195
+ * some hosts route rather than act — and the scheme was already refused or
196
+ * kept by `normalizeDocument`, so nothing is checked a second time here.
197
+ */
198
+ export declare function conditionNotice(document: NormalizedDocument, chrome: boolean | undefined): ElementSpec | null;
199
+ /**
200
+ * §16h's one quiet line: why this panel shows no relationships at all.
201
+ *
202
+ * THE SENTENCE IS THE HOST'S, and it has to be: the cause names a host's own
203
+ * configuration, and a package that has never heard of a pick order cannot
204
+ * write it. The line, the link and the dismiss control are this package's.
205
+ *
206
+ * THE VIEWER NEVER HIDES ITS OWN LINE. Dismiss is published like every other
207
+ * command; the host re-renders without the note. A package that removed the
208
+ * element itself would be holding state, which is the one thing this layer
209
+ * promises it does not do.
210
+ */
211
+ export declare function adoptionNote(document: NormalizedDocument, chrome: boolean | undefined): ElementSpec | null;
65
212
  /**
66
213
  * The NOW rows: what the runner is working this moment, drawn above the order.
67
214
  *
@@ -75,6 +222,19 @@ export declare function hostHeader(document: NormalizedDocument): ElementSpec |
75
222
  * words, because only the host has the clock.
76
223
  */
77
224
  export declare function nowRows(document: NormalizedDocument): ElementSpec | null;
225
+ /**
226
+ * A together unit's members, one line each.
227
+ *
228
+ * THE UNIT IS THE ONE PLACE THE DESIGN DRAWS AN ENCLOSURE, and it draws it to
229
+ * say that two distinct issues are one unit of work. Joining their titles with
230
+ * a separator — which is what shipped — says the opposite: a reader sees one
231
+ * issue with an unusually long name, and the second issue's own identity and
232
+ * tier vanish. Returns `null` for a single-member slot, so an ordinary row is
233
+ * unchanged by construction.
234
+ */
235
+ export declare function unitBlock(document: NormalizedDocument, slot: ViewerSlot): ElementSpec | null;
236
+ /** The unit's own pill, above the enclosure: what it is, and how many. */
237
+ export declare function unitMark(slot: ViewerSlot): ElementSpec | null;
78
238
  /**
79
239
  * The two caveats a host can put on a row, each ONE row child so the slot grid
80
240
  * places it like provenance.
@@ -86,6 +246,23 @@ export declare function nowRows(document: NormalizedDocument): ElementSpec | nul
86
246
  * whose job is explaining the order cannot silently pick a winner.
87
247
  */
88
248
  export declare function caveatLines(issue: ViewerIssue | undefined): ElementSpec[];
249
+ /**
250
+ * The caveat CHIPS, which sit on the badge row rather than in front of the note.
251
+ *
252
+ * §16a treats a caveat exactly like a relationship: a chip a scanner sees, and
253
+ * a sentence a reader reads. Leaving the chip inline in the sentence made the
254
+ * badge row incomplete and the sentence lumpy — the chip is a fact ABOUT the
255
+ * row, not the first two words of an explanation.
256
+ */
257
+ export declare function caveatBadges(issue: ViewerIssue | undefined): readonly ElementSpec[];
258
+ /**
259
+ * The `⊘ not ready` chip a graph-held row wears.
260
+ *
261
+ * The frame puts it on the badge row beside the tier, so "held" is legible in
262
+ * the same scan as "P1" rather than only from the hatched ground or the
263
+ * sentence underneath.
264
+ */
265
+ export declare function notReadyBadge(slot: ViewerSlot): ElementSpec | null;
89
266
  /**
90
267
  * The caveats as one sentence, for a row that has no room for a block — the
91
268
  * graph rail positions its rows onto layout boxes, so it carries text on the
@@ -129,7 +306,113 @@ export declare const ROW_BADGE_BUDGET = 12;
129
306
  * key — a single-key row is unchanged by construction.
130
307
  */
131
308
  export declare function edgeBadges(document: NormalizedDocument, keys: readonly string[]): ElementSpec | null;
132
- /** The legend. Rendered once per scene so the grammar is readable cold. */
309
+ /**
310
+ * The same badges, unwrapped, for a row that builds ONE badge row out of
311
+ * several sources — a priority chip, an evidence chip, a caveat chip and the
312
+ * relationships — which is what §16a draws. Returning the wrapper to such a
313
+ * caller left it either nesting one flex row inside another or reaching into
314
+ * the spec's children, and the second is how markup and its published
315
+ * behaviour drift.
316
+ */
317
+ export declare function edgeBadgeList(document: NormalizedDocument, keys: readonly string[]): readonly ElementSpec[];
318
+ /**
319
+ * The VISIBLE TEXT of every chip a row's badge row draws, in order.
320
+ *
321
+ * EXPORTED FOR THE LAYOUT, which has to know how tall a card is before anything
322
+ * is rendered and cannot measure the DOM — this package is pure and its
323
+ * coordinates have to be the same on a server with no fonts as in a browser
324
+ * with them. Deriving the strings here rather than re-deriving them there is
325
+ * what keeps the reserved height and the drawn height about the same thing: a
326
+ * badge whose wording changes moves the geometry with it.
327
+ */
328
+ export declare function badgeTexts(document: NormalizedDocument, slot: ViewerSlot | undefined, issue: ViewerIssue | undefined, keys: readonly string[]): readonly string[];
329
+ /**
330
+ * One block of a canvas card, described rather than drawn.
331
+ *
332
+ * THIS EXISTS BECAUSE THE SAME DEFECT ARRIVED FOUR TIMES. A card's height is
333
+ * COUNTED by the layout before anything renders — the projection is pure and
334
+ * positions every card absolutely — while the card's contents are BUILT by the
335
+ * projection. Two functions, one shape, and nothing tying them together: every
336
+ * block added to the card had to be remembered in the height rule, and four
337
+ * times running it was not. The badge row wrapped and was charged one line; a
338
+ * unit in the gutter was sized as a single issue; the unit branch returned
339
+ * before the notes; the NOW banner was added with no allowance at all. Each
340
+ * time the card overran its box, the next card was drawn over the overflow, and
341
+ * the arcs stayed anchored to geometry nobody drew.
342
+ *
343
+ * So the CARD IS DESCRIBED ONCE, here, and both readers consume the
344
+ * description: {@link cardText} counts it, and the graph projection renders it.
345
+ * A block added to this list reaches the height rule by construction. That is
346
+ * the property, and it is why this is a shape and not a second helper.
347
+ */
348
+ export type CardBlock =
349
+ /** §16b's NOW banner, or a unit's own pill: one line of chips. */
350
+ {
351
+ readonly kind: 'banner';
352
+ readonly mark: string;
353
+ readonly note: string;
354
+ }
355
+ /** A title over its identity — the two-line pair every row draws. */
356
+ | {
357
+ readonly kind: 'head';
358
+ readonly key: string;
359
+ }
360
+ /** A unit's enclosure: one title-and-identity pair per member. */
361
+ | {
362
+ readonly kind: 'unit';
363
+ readonly members: readonly string[];
364
+ }
365
+ /** The wrapping row of chips. */
366
+ | {
367
+ readonly kind: 'badges';
368
+ readonly texts: readonly string[];
369
+ }
370
+ /** A sentence the card prints because nothing else draws it. */
371
+ | {
372
+ readonly kind: 'note';
373
+ readonly text: string;
374
+ };
375
+ /**
376
+ * Everything one canvas card draws, in the order it draws it.
377
+ *
378
+ * `onSpine` decides the notes and nothing else: a spine card keeps its hold on
379
+ * a chip and a tooltip, because the list beside it prints the sentence, while a
380
+ * gutter card is the only mark the projection makes for its issue and §16b
381
+ * prints "open · not eligible" on it in as many words.
382
+ */
383
+ export declare function cardBlocks(document: NormalizedDocument, key: string, members: readonly string[], onSpine: boolean, now: boolean): readonly CardBlock[];
384
+ /**
385
+ * The sentences a card off the spine prints: why it is held, and what it
386
+ * duplicates.
387
+ *
388
+ * Lives here rather than in the layout for the reason {@link cardBlocks} gives:
389
+ * one description, two readers.
390
+ */
391
+ export declare function noteText(document: NormalizedDocument, key: string): readonly string[];
392
+ /**
393
+ * The text runs one block puts on the card, each of which the layout wraps and
394
+ * counts as one or more lines.
395
+ *
396
+ * A `head` is a title AND an identity, and a `unit` is that pair per member —
397
+ * so the count is per RUN rather than per block, which is what lets the layout
398
+ * charge a wrapped title what it costs.
399
+ */
400
+ export declare function cardText(document: NormalizedDocument, block: CardBlock): readonly string[];
401
+ /**
402
+ * The legend: a footer bar under the drawing it explains.
403
+ *
404
+ * IT DRAWS THE LINE, NOT A CHIP OF IT. The claim this package makes about
405
+ * colour-blind safety is that each relationship is separable by dash pattern,
406
+ * terminal marker and glyph as well as hue — and a legend of five outlined
407
+ * chips shows none of the first two, so a reader meeting a dotted arc has
408
+ * nothing to match it against. Each sample is the same stroke and the same
409
+ * dash array the canvas uses, taken from `vocabulary.ts` rather than restated,
410
+ * and the terminal is the marker that edge actually ends in.
411
+ *
412
+ * THE READINESS KEY RIDES ALONG. The station fill is the parallelism channel —
413
+ * filled, hollow, dashed — and it is the one part of the grammar the edge table
414
+ * cannot explain, so §16b keys it at the far end of the same bar.
415
+ */
133
416
  export declare function legend(): ElementSpec;
134
417
  /**
135
418
  * Every key a projection draws under some OTHER key's station, mapped to it.
@@ -164,6 +447,29 @@ export declare function atStations<T extends {
164
447
  }>(options: T, stations: ReadonlyMap<string, string>): T;
165
448
  /** The title of a slot, naming every member — a together unit is one row. */
166
449
  export declare function slotTitle(document: NormalizedDocument, slot: ViewerSlot): string;
450
+ /**
451
+ * Where a slot sits and whether anything may start it, as one spoken phrase.
452
+ *
453
+ * TWO FACTS, READ FROM TWO FIELDS, and that is the whole point of this
454
+ * function existing. It used to be one expression — `rank === null ? 'held, no
455
+ * rank' : 'rank N'` — which inferred HELD from the ABSENCE OF A RANK. That
456
+ * inference was sound while `@issuegraph/derive` assigned `ready ? rank : null`
457
+ * and is wrong since `RULINGS.md` §1: a held slot whose blocker is inside the
458
+ * previewed order carries a number, so the old expression announced it as
459
+ * plain `rank 2` and DROPPED the word held. A sighted reader still saw the
460
+ * hatched row and the `⊘ blocked-by #488` chip; a screen-reader user lost the
461
+ * single most important fact about the row, silently, on the exact case the
462
+ * ruling exists to draw.
463
+ *
464
+ * So `ready` is read on its own, never through `rank`. §16a's row says both
465
+ * things at once — `⊘ blocked-by #488` beside `rank 2` — and the accessible
466
+ * name says both too.
467
+ *
468
+ * ONE FUNCTION FOR EVERY SURFACE. The linear row's `aria-label`, the graph
469
+ * node's and the graph station's all phrase this, and three copies of a
470
+ * two-field rule is three chances to reintroduce the one-field one.
471
+ */
472
+ export declare function slotPosition(slot: ViewerSlot): string;
167
473
  /** A slot's accessible name: what it is, where it sits, and whether it is held. */
168
474
  export declare function slotLabel(document: NormalizedDocument, slot: ViewerSlot): string;
169
475
  /** The empty state. A container with nothing in it reads as a bug. */
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,WAAW,EAAW,MAAM,cAAc,CAAC;AAIzD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAUnD,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAIzD;AAQD,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAOtD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAgBxD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAuBzF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAmBtD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CASjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,WAAW,GAAG,IAAI,CAgC3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,WAAW,GAAG,IAAI,CA0BxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,EAAE,CAsBzE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CASjE;AA6CD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AA0BnC;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAkDpG;AAED,2EAA2E;AAC3E,wBAAgB,MAAM,IAAI,WAAW,CAQpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAQpF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,EAChH,OAAO,EAAE,CAAC,EACV,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,CAAC,CAKH;AAED,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAIhF;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAGhF;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAEvD"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../src/parts.ts"],"names":[],"mappings":"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"}