@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
@@ -13,7 +13,7 @@
13
13
  * the work, earns no rank slot, and collapses into the footer with duplicates.
14
14
  */
15
15
  import { element } from "../element.js";
16
- import { caveatLines, edgeBadges, emptyState, footerLabels, holdLine, hostHeader, identity, legend, nowRows, provenanceLine, slotLabel, slotTitle, station, stationFill, stationsOf, atStations, } from "../parts.js";
16
+ import { adoptionNote, caveatBadges, caveatLines, conditionKind, conditionNotice, edgeBadgeList, edgeBadges, emptyState, evidenceBadge, footerLabels, holdLine, hostHeader, identity, legend, notReadyBadge, nowRows, priorityBadge, provenanceLine, slotLabel, slotTitle, station, statesItsOwnCause, stationFill, stationsOf, unitBlock, unitMark, atStations, } from "../parts.js";
17
17
  import { resolveFocusKey } from "../scene.js";
18
18
  import { treatmentFor } from "../vocabulary.js";
19
19
  /**
@@ -24,41 +24,196 @@ import { treatmentFor } from "../vocabulary.js";
24
24
  * the graph in any sense a rank could express, so giving it a position would
25
25
  * claim work is queued that nothing can start.
26
26
  */
27
+ /**
28
+ * What the footer group calls itself.
29
+ *
30
+ * IT COVERS TWO FAMILIES, AND SAYING "held by the runner" COVERED ONE. §16a's
31
+ * own group lists a duplicate under that heading, but §16d's table is explicit
32
+ * that a duplicate is a different fact — "canonical elsewhere, never worked" —
33
+ * from a claim or a park. A document with one duplicate and no tracker hold
34
+ * therefore read "1 held by the runner" about an issue no runner has touched.
35
+ * Shared by both projections, so the two cannot word one group two ways.
36
+ */
37
+ export function footerHeading(count, kinds) {
38
+ const reasons = [
39
+ kinds.runner ? 'held by the runner' : null,
40
+ kinds.neverWorked ? 'never worked' : null,
41
+ kinds.undrawn ? 'not drawn at this width' : null,
42
+ ].filter((reason) => reason !== null);
43
+ const tail = reasons.length === 0
44
+ ? ''
45
+ : ` — ${reasons.slice(0, -1).join(', ')}${reasons.length > 1 ? ', or ' : ''}${reasons[reasons.length - 1] ?? ''}`;
46
+ return `${String(count)} outside the order${tail}`;
47
+ }
27
48
  export function isFooterSlot(slot) {
28
49
  return slot.holds.some((hold) => hold.family === 'tracker');
29
50
  }
30
- function slotRow(document, slot, options, showRank) {
51
+ /**
52
+ * One ranked row: the rank track, then everything else in one body column.
53
+ *
54
+ * TWO CHILDREN, WHICH IS THE FRAME'S GRID EXACTLY. The row that shipped was a
55
+ * four-column grid with more than four children, so the extras auto-placed into
56
+ * column one — the rank track — and a single relationship badge set that
57
+ * column's width for the whole list, pushing every title across to pay for it.
58
+ * A rank cell and a body cell cannot do that: there is no third column for a
59
+ * child to fall into, and the alignment grid the rows hang off is therefore a
60
+ * property of the markup rather than of remembering to place each new child.
61
+ */
62
+ export function slotRow(document, slot, options, showRank) {
31
63
  const held = !slot.ready;
32
64
  const lead = document.byKey.get(slot.lead);
33
65
  const selected = options.selected === slot.lead;
34
66
  const focused = options.focused === slot.lead;
35
- const rank = showRank
36
- ? element('span', { class: 'ig-rank', 'data-held': held ? 'true' : 'false', 'aria-hidden': 'true' },
37
- // A held slot never prints a number: it has no position in the
38
- // sequence, and printing one would claim work is queued that nothing
39
- // can start.
40
- [slot.rank === null ? '—' : String(slot.rank)])
41
- : null;
42
- const children = [
43
- rank,
67
+ const unit = slot.members.length > 1;
68
+ const expanded = options.expanded?.includes(slot.lead) ?? false;
69
+ const rankCell = element('div', { class: 'ig-rank-cell', 'aria-hidden': 'true' }, [
70
+ showRank
71
+ ? element('span', { class: 'ig-rank', 'data-held': held ? 'true' : 'false' },
72
+ // The em dash is for a slot the host could not PLACE, which since
73
+ // `RULINGS.md` §1 is narrower than "held": a held slot whose blocker
74
+ // is inside the previewed order carries a number, and the `data-held`
75
+ // channel beside it is what says the work cannot start.
76
+ [slot.rank === null ? '—' : String(slot.rank)])
77
+ : null,
44
78
  station(stationFill(slot)),
45
- element('span', { class: 'ig-title' }, [slotTitle(document, slot)]),
46
- lead === undefined ? null : identity(lead),
47
- edgeBadges(document, slot.members),
79
+ ]);
80
+ // A UNIT'S HEAD IS ITS ENCLOSURE, not a joined title. Every other row keeps
81
+ // the frame's two-line pair: the title, and the identity 2px beneath it.
82
+ const badges = [
83
+ priorityBadge(lead?.provenance),
84
+ evidenceBadge(lead),
85
+ notReadyBadge(slot),
86
+ ...caveatBadges(lead),
87
+ ].filter((badge) => badge !== null);
88
+ // ONE BADGE ROW, FED BY FOUR SOURCES. §16a draws the tier, the evidence, the
89
+ // readiness and the relationships as one wrapping row of chips, in that
90
+ // order — the facts a reader scans for before they read a word of the
91
+ // sentence beneath.
92
+ const badgeRow = [...badges, ...edgeBadgeList(document, slot.members)];
93
+ // THE IDENTITY AND THE BADGES ARE ONE LINE, NOT TWO BLOCKS — which is what
94
+ // §17j's row anatomy asks for and what the old markup could not express.
95
+ //
96
+ // `17j` draws line 2 as a single mono run: `#512 · P0 · ⊘ #488`. The identity
97
+ // used to sit inside the head and the chips in a sibling block beneath it, so
98
+ // the two could never share a line however they were styled, and a row that
99
+ // should be 53px stacked to 5-11 lines. Nesting them in one `.ig-row-meta`
100
+ // makes the frame's line a property of the markup rather than of a CSS trick.
101
+ //
102
+ // IT SERVES BOTH DENSITIES, which is why this is a restructure and not a
103
+ // rail-only branch. §16a's row is the same sequence — title, identity, chips,
104
+ // then the provenance turnstile — and at that panel's width the line simply
105
+ // wraps and the provenance stays inline. `17j`: *"Same row, two densities."*
106
+ const meta = lead === undefined && badgeRow.length === 0
107
+ ? null
108
+ : element('div', { class: 'ig-row-meta' }, [
109
+ lead === undefined ? null : identity(lead),
110
+ badgeRow.length === 0 ? null : element('div', { class: 'ig-badges' }, badgeRow),
111
+ ]);
112
+ // A TOGETHER UNIT IS ONE ROW AND ONE RANK, IN BOTH DENSITIES — and the two
113
+ // densities draw it differently, so the markup carries both and the container
114
+ // query picks.
115
+ //
116
+ // `RULINGS.md` §1: *"A together-unit is one row, one rank, containing a box.
117
+ // Not two rows, not a box spanning ranks."* §16a's wide panel IS that box —
118
+ // the `⧉ ONE UNIT · 2 ISSUES` pill, the note, and a member list. But `17j`
119
+ // draws the same unit in the 390px rail as `⧉ 2` inline with an ORDINARY
120
+ // title and an ordinary meta line, at the same 53px as every other row,
121
+ // because a box of member cards cannot be 53px and the rail's row height is
122
+ // not negotiable.
123
+ //
124
+ // So a unit row now carries an ordinary head as well as its enclosure, and
125
+ // each density hides the other's. The lead's title is what the rail shows;
126
+ // `slotTitle` joins every member and stays the ACCESSIBLE name through
127
+ // `slotLabel`, so what a screen reader hears still names both issues while
128
+ // the 53px row shows the one it has room for.
129
+ const unitCount = unit
130
+ ? element('span', { class: 'ig-unit-count' }, [`⧉ ${String(slot.members.length)}`])
131
+ : null;
132
+ const railTitle = unit ? (lead?.title ?? slot.lead) : slotTitle(document, slot);
133
+ const head = [
134
+ element('div', { class: 'ig-row-head' }, [
135
+ element('span', { class: 'ig-title' }, [unitCount, railTitle]),
136
+ meta,
137
+ ]),
138
+ ...(unit ? [unitMark(slot), unitBlock(document, slot)] : []),
139
+ ];
140
+ const body = element('div', { class: 'ig-row-body' }, [
141
+ ...head,
48
142
  provenanceLine(lead?.provenance),
49
143
  // THE LEAD'S CAVEATS, like the lead's provenance: a together unit is one
50
144
  // row and one rank, and the host facts about that rank ride on its lead.
51
145
  ...caveatLines(lead),
52
146
  ...slot.holds.map(holdLine),
53
- ];
147
+ ]);
54
148
  return element('li', {
55
149
  class: 'ig-slot',
56
150
  'data-ig-key': slot.lead,
57
151
  'data-held': held ? 'true' : 'false',
152
+ 'data-unit': unit ? 'true' : 'false',
58
153
  'aria-current': selected ? 'true' : 'false',
59
154
  'aria-label': slotLabel(document, slot),
155
+ // ONLY WHEN THERE IS SOMETHING TO EXPAND. `aria-expanded` on a row with
156
+ // no provenance line would advertise a disclosure that cannot open, which
157
+ // is the "control that cannot complete its own action" class this package
158
+ // refuses elsewhere. A row whose host stated no provenance carries no
159
+ // attribute at all.
160
+ ...(lead?.provenance === undefined
161
+ ? {}
162
+ : { 'aria-expanded': expanded ? 'true' : 'false' }),
60
163
  tabindex: focused ? 0 : -1,
61
- }, children);
164
+ }, [rankCell, body]);
165
+ }
166
+ /**
167
+ * One footer entry: a label chip, a title and an identity, on one line.
168
+ *
169
+ * THESE ARE NOT FACTS ABOUT THE WORK, which is the whole reason they are down
170
+ * here rather than in the order — so they get no rank, no station and no
171
+ * explanation block. Drawing them as full rows, which is what shipped, claimed
172
+ * the opposite: a reader saw a claimed issue laid out exactly like a queued
173
+ * one and had only the heading to tell them apart.
174
+ */
175
+ export function footerRow(document, slot, options) {
176
+ const lead = document.byKey.get(slot.lead);
177
+ // THE REASON RIDES THE NAME. A footer entry is one line — a chip, a title and
178
+ // an identity — because it is not a fact about the work; but the host still
179
+ // said WHY, and dropping the sentence entirely would lose it from the panel.
180
+ // The same channel the graph's cards use for the same reason: sighted readers
181
+ // hover, screen readers hear it, and the one-line row is untouched.
182
+ const because = slot.holds.map((hold) => hold.reason).join(' · ');
183
+ // NARROWED THROUGH THE FAMILY, because the union is what carries the label:
184
+ // a graph hold has none to read, and reaching for one on the union is a
185
+ // compile error rather than a silent undefined.
186
+ const labelled = slot.holds.find((hold) => hold.family === 'tracker' && hold.label !== undefined && hold.label !== '');
187
+ return element('li', {
188
+ class: 'ig-footer-row',
189
+ 'data-ig-key': slot.lead,
190
+ 'aria-current': options.selected === slot.lead ? 'true' : 'false',
191
+ 'aria-label': because === '' ? slotLabel(document, slot) : `${slotLabel(document, slot)} — ${because}`,
192
+ title: because === '' ? null : because,
193
+ tabindex: options.focused === slot.lead ? 0 : -1,
194
+ }, [
195
+ labelled === undefined
196
+ ? null
197
+ : element('span', { class: 'ig-badge', 'data-hold': labelled.label }, [labelled.label]),
198
+ element('span', { class: 'ig-title' }, [slotTitle(document, slot)]),
199
+ lead === undefined ? null : identity(lead),
200
+ footerRelationships(document, slot.members),
201
+ ]);
202
+ }
203
+ /**
204
+ * The relationships of the keys a footer row stands for.
205
+ *
206
+ * EVERY FOOTER SHAPE CARRIES THEM, and that is the rule rather than three
207
+ * places to remember. A footer row is the ONLY mark either projection makes for
208
+ * its issue — the list draws no arc at all, and the graph draws no node for
209
+ * anything down here — so an edge whose ends are both in this group had nothing
210
+ * left to represent it and disappeared entirely while both issues stayed
211
+ * visible. That is a picture that lies about the document rather than one that
212
+ * shows less of it, and it arrived once per row shape: the aside row, then this
213
+ * one. One helper, called by all three.
214
+ */
215
+ function footerRelationships(document, keys) {
216
+ return edgeBadges(document, keys);
62
217
  }
63
218
  // EXPORTED FOR THE GRAPH'S REFUSAL, which is the only other place an exclusion
64
219
  // has to be drawn: when the graph refuses, its rail is the whole order UI and
@@ -66,10 +221,13 @@ function slotRow(document, slot, options, showRank) {
66
221
  // false. One row shape for both projections rather than a second that can drift.
67
222
  export function excludedRow(document, key, canonical, options) {
68
223
  const issue = document.byKey.get(key);
224
+ // THE SAME ONE-LINE SHAPE THE OTHER FOOTER ENTRIES TAKE. A duplicate is the
225
+ // clearest case of "not a fact about the work": it is never worked at all, so
226
+ // giving it a station, a badge row and a hold paragraph drew it as heavier
227
+ // than the ranked rows it is excluded from.
69
228
  return element('li', {
70
- class: 'ig-slot',
229
+ class: 'ig-footer-row',
71
230
  'data-ig-key': key,
72
- 'data-held': 'true',
73
231
  'aria-current': options.selected === key ? 'true' : 'false',
74
232
  'aria-label': `${issue?.title ?? key} — ${treatmentFor('duplicate-of').label} ${canonical}, never worked`,
75
233
  // A HARDCODED -1 HERE MEANT THE VIEWER LOST ITS TAB STOP ENTIRELY. An
@@ -78,13 +236,37 @@ export function excludedRow(document, key, canonical, options) {
78
236
  // viewer at all. Every row that can hold focus renders the roving stop.
79
237
  tabindex: options.focused === key ? 0 : -1,
80
238
  }, [
81
- station('dashed'),
239
+ element('span', { class: 'ig-badge', 'data-edge': 'duplicate-of' }, ['duplicate']),
82
240
  element('span', { class: 'ig-title' }, [issue?.title ?? key]),
83
241
  issue === undefined ? null : identity(issue),
84
- edgeBadges(document, [key]),
85
- element('p', { class: 'ig-hold', 'data-family': 'tracker' }, [
86
- `${treatmentFor('duplicate-of').label} ${canonical} — never worked`,
87
- ]),
242
+ element('span', { class: 'ig-id' }, [`→ ${canonical}`]),
243
+ footerRelationships(document, [key]),
244
+ ]);
245
+ }
246
+ /**
247
+ * A footer entry that is neither a slot nor an exclusion: an ordinary issue the
248
+ * canvas had no column for.
249
+ *
250
+ * ONLY THE COMPACT GRAPH PRODUCES ONE. It draws no gutters, so an off-order
251
+ * relationship endpoint — an open blocker, a closed split origin — has nowhere
252
+ * on the picture to be, and vanishing is not an option: a smaller view must not
253
+ * be a lying one. It takes the same one-line shape as every other footer entry,
254
+ * because the reason it is down here is the same one — it is not a fact about
255
+ * the order.
256
+ */
257
+ export function asideRow(document, key, options) {
258
+ const issue = document.byKey.get(key);
259
+ return element('li', {
260
+ class: 'ig-footer-row',
261
+ 'data-ig-key': key,
262
+ 'aria-current': options.selected === key ? 'true' : 'false',
263
+ 'aria-label': `${issue?.title ?? key} — ${key} — outside the order`,
264
+ tabindex: options.focused === key ? 0 : -1,
265
+ }, [
266
+ element('span', { class: 'ig-badge' }, ['outside the order']),
267
+ element('span', { class: 'ig-title' }, [issue?.title ?? key]),
268
+ issue === undefined ? null : identity(issue),
269
+ footerRelationships(document, [key]),
88
270
  ]);
89
271
  }
90
272
  /** The one count chip isolated issues collapse into (they carry no information as rows). */
@@ -119,7 +301,15 @@ export function linearScene(document, rawOptions = {}) {
119
301
  focused: resolveFocusKey(focusOrder, options.focused, options.selected),
120
302
  };
121
303
  const body = inline.length === 0
122
- ? emptyState('Nothing is in the order right now.')
304
+ ? // A CONDITION IS THE PANEL'S ONE CAUSE STATEMENT. This sentence is
305
+ // DERIVED — it is what an empty slot list looks like from in here — and
306
+ // the host's notice is RECORDED, so when both are drawn the panel says
307
+ // two things about one state and the derived one can be flatly wrong
308
+ // ("nothing is in the order" beside "your import is still running").
309
+ // The recorded fact wins and the derivation is not drawn.
310
+ statesItsOwnCause(document)
311
+ ? null
312
+ : emptyState('Nothing is in the order right now.')
123
313
  : element('ol',
124
314
  // A PLAIN LIST, not a listbox. Every row carries a deep-link chip, and
125
315
  // an interactive descendant inside `role="option"` is a pattern
@@ -127,25 +317,70 @@ export function linearScene(document, rawOptions = {}) {
127
317
  // is announced with `aria-current`, which any element may carry.
128
318
  { class: 'ig-list', 'aria-label': 'work order' }, inline.map((slot) => slotRow(document, slot, withFocus, true)));
129
319
  const footerEntries = [
130
- ...footerSlots.map((slot) => slotRow(document, slot, withFocus, false)),
320
+ ...footerSlots.map((slot) => footerRow(document, slot, withFocus)),
131
321
  ...document.order.excluded.map((exclusion) => excludedRow(document, exclusion.key, exclusion.canonical, withFocus)),
132
322
  ];
133
- // The runner's own words, when the host supplied them, after the title the
134
- // footer has always had — so a document with unlabelled holds reads as before.
323
+ // The runner's own words, when the host supplied them, to the RIGHT of the
324
+ // count — which is where §16a puts them, and it is the difference between a
325
+ // heading that says what this group is and one that also has to list the
326
+ // reasons inside it.
135
327
  const labels = footerLabels(footerSlots);
136
328
  const footer = footerEntries.length === 0
137
329
  ? null
138
330
  : element('section', { class: 'ig-footer' }, [
139
- element('p', { class: 'ig-footer-title' }, [
140
- `Held outside the order — claimed, parked, or never worked${labels === '' ? '' : ` · ${labels}`}`,
331
+ element('div', { class: 'ig-footer-head' }, [
332
+ element('p', { class: 'ig-footer-title' }, [
333
+ footerHeading(footerEntries.length, {
334
+ runner: footerSlots.length > 0,
335
+ neverWorked: document.order.excluded.length > 0,
336
+ // The list draws every column it has, so it never withholds one.
337
+ undrawn: false,
338
+ }),
339
+ ]),
340
+ labels === '' ? null : element('span', { class: 'ig-footer-labels' }, [labels]),
141
341
  ]),
142
342
  element('ol', { class: 'ig-list', 'aria-label': 'held outside the order' }, footerEntries),
143
343
  ]);
144
- const root = element('section', { class: 'ig-viewer ig-linear', 'data-projection': 'linear', 'aria-label': 'issue order' },
344
+ const root = element('section', {
345
+ class: 'ig-viewer ig-linear',
346
+ 'data-projection': 'linear',
347
+ // §17j'S DENSITY, WHERE THE HOST TOOK IT OVER. Absent is the whole
348
+ // default: the stylesheet keys the density block off this attribute's
349
+ // PRESENCE, so a viewer that renders none is decided by the container
350
+ // exactly as §17j asks. See `SceneOptions.density`.
351
+ 'data-density': options.density,
352
+ 'data-ig-condition': conditionKind(document, options.chrome),
353
+ 'aria-label': 'issue order',
354
+ },
145
355
  // The host facts first: what the runner is doing and how fresh the mirror
146
356
  // is frame the order beneath them. Both are `null` for a host that stated
147
357
  // nothing, and the section then begins at the legend exactly as before.
148
- [hostHeader(document), legend(), nowRows(document), body, footer, isolatedChip(document.isolated.length)]);
358
+ // THE LEGEND IS A FOOTER BAR, WHERE §16b PUTS IT, and it comes last. Above
359
+ // the rows it was the first thing a reader met — a table of five symbols
360
+ // before a single row of the thing they came for — and §16a draws no
361
+ // legend at that position at all.
362
+ [
363
+ options.chrome === false
364
+ ? null
365
+ : hostHeader(document, { projection: 'linear', switchable: options.switchable === true }),
366
+ nowRows(document),
367
+ // BELOW THE NOW ROW, ABOVE THE ORDER. §16a puts what the runner is doing
368
+ // directly under the header as the first thing a reader meets, and under
369
+ // an `error` or `importing` notice the running job is exactly the
370
+ // reassurance the notice points at — demoting it would contradict the
371
+ // sentence beside it. Here the notice sits over the order it qualifies.
372
+ //
373
+ // CHROME, so it carries the same flag the header does — the rule lives in
374
+ // `conditionNotice` rather than being restated at each of the three roots.
375
+ conditionNotice(document, options.chrome),
376
+ body,
377
+ footer,
378
+ isolatedChip(document.isolated.length),
379
+ legend(),
380
+ // LAST, because §16h calls it the panel FOOTER and the legend is a footer
381
+ // bar. Above it, the line was not the last thing on the panel.
382
+ adoptionNote(document, options.chrome),
383
+ ]);
149
384
  // The linear projection has one column, so nothing sits left or right of
150
385
  // anything. An empty map is the honest answer; a self-referencing one would
151
386
  // make a lateral key press look handled.
@@ -1 +1 @@
1
- {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/projections/linear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/projections/linear.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,EAA0B,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA4MhD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,YAAiB,GAAG,KAAK,CA0CzF"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAezD,OAAO,EAA0B,KAAK,KAAK,EAAmB,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA4MhD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,YAAiB,GAAG,KAAK,CAmEzF"}
@@ -11,7 +11,7 @@
11
11
  * list, announced as one, with each level stating what it is.
12
12
  */
13
13
  import { element } from "../element.js";
14
- import { caveatLines, edgeBadges, emptyState, hostHeader, identity, legend, provenanceLine } from "../parts.js";
14
+ import { adoptionNote, caveatLines, conditionKind, conditionNotice, edgeBadges, emptyState, hostHeader, identity, legend, provenanceLine, statesItsOwnCause, } from "../parts.js";
15
15
  import { resolveFocusKey } from "../scene.js";
16
16
  /**
17
17
  * Build the forest.
@@ -189,9 +189,35 @@ export function treeScene(document, options = {}) {
189
189
  // `reconcile` so the markup and the reported state cannot disagree.
190
190
  const focused = resolveFocusKey(focusOrder, options.focused, options.selected);
191
191
  const body = forest.roots.length === 0
192
- ? emptyState('This document declares no issues, so there is nothing to trace.')
192
+ ? // THE HOST'S NOTICE IS THE PANEL'S ONE CAUSE STATEMENT — see `linear.ts`.
193
+ statesItsOwnCause(document)
194
+ ? null
195
+ : emptyState('This document declares no issues, so there is nothing to trace.')
193
196
  : element('ul', { class: 'ig-tree ig-list', 'aria-label': 'decomposition' }, buildForestElements(document, forest, options, focused));
194
- const root = element('section', { class: 'ig-viewer ig-tree-view', 'data-projection': 'tree', 'aria-label': 'issue decomposition' }, [hostHeader(document), legend(), body]);
197
+ const root = element('section', {
198
+ class: 'ig-viewer ig-tree-view',
199
+ 'data-projection': 'tree',
200
+ // See `SceneOptions.density`; stamped on all three roots so a
201
+ // projection toggle cannot drop the host's decision.
202
+ 'data-density': options.density,
203
+ 'data-ig-condition': conditionKind(document, options.chrome),
204
+ 'aria-label': 'issue decomposition',
205
+ },
206
+ // The legend last, as a footer bar, the way §16b draws it — one placement
207
+ // for all three projections, so a reader meets the grammar in one place.
208
+ [
209
+ options.chrome === false
210
+ ? null
211
+ : hostHeader(document, { projection: 'tree', switchable: options.switchable === true }),
212
+ // This projection draws no NOW row, so the notice follows the header
213
+ // directly — the same position relative to the order it qualifies.
214
+ conditionNotice(document, options.chrome),
215
+ body,
216
+ legend(),
217
+ // LAST, because §16h calls it the panel FOOTER and the legend is a footer
218
+ // bar. Above it, the line was not the last thing on the panel.
219
+ adoptionNote(document, options.chrome),
220
+ ]);
195
221
  // A tree's lateral axis is its nesting, which the vertical keys already walk,
196
222
  // so there is nothing beside a node to move to.
197
223
  const lateral = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"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"}
package/dist/styles.d.ts CHANGED
@@ -12,6 +12,15 @@
12
12
  * loaded by a bare Node runtime (`ERR_UNKNOWN_FILE_EXTENSION`), and this
13
13
  * package's floor is checked by a smoke test that imports the built entry. A
14
14
  * string also means no consumer needs a bundler to use it.
15
+ *
16
+ * THE VIEWER DRAWS THE PANEL, and that is a decision this file records rather
17
+ * than a detail. §16a is one bordered surface with a header bar, hairline-
18
+ * separated rows and a footer group on a second ground; §9097's done-when read
19
+ * "§16 IS that test — the viewer with no editor attached", so the thing a host
20
+ * mounts with no chrome of its own has to BE the frame. Rows therefore carry no
21
+ * border and no radius of their own — they are separated by the panel's own
22
+ * hairlines — and a host that wants the panel suppressed overrides the four
23
+ * properties on `.ig-viewer`.
15
24
  */
16
- export declare const viewerStylesheet = "\n.ig-viewer {\n background: var(--ig-bg);\n color: var(--ig-text-body);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size);\n line-height: var(--ig-line-height);\n position: relative;\n}\n\n.ig-viewer *,\n.ig-viewer *::before,\n.ig-viewer *::after {\n box-sizing: border-box;\n}\n\n.ig-viewer :focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/* \u2500\u2500 the spine \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-slot {\n align-items: center;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n column-gap: var(--ig-space);\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n margin-bottom: var(--ig-space-tight);\n min-height: var(--ig-row-height);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-slot[data-held='true'] {\n background: var(--ig-surface-2);\n border-style: dashed;\n}\n\n.ig-slot[aria-current='true'] {\n border-color: var(--ig-accent);\n}\n\n/* A CANVAS-OWNED NODE IS SELECTABLE TOO, and only the rail rows had a selected\n look \u2014 so clicking a gutter, excluded or tracker-held node set aria-current on\n the group and changed nothing a reader could see. A pointer does not normally\n raise :focus-visible either, so those selections had no visible state at all\n on the channel most likely to make them. Same accent the rail uses, so one\n selection reads the same whichever surface drew it. */\n.ig-node-group[aria-current='true'] .ig-node {\n stroke: var(--ig-accent);\n stroke-width: calc(var(--ig-stroke) * 2);\n}\n\n.ig-rank {\n color: var(--ig-text);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n min-width: calc(var(--ig-char-width) * 4);\n text-align: right;\n}\n\n.ig-rank[data-held='true'] {\n color: var(--ig-text-muted);\n}\n\n/* \u2500\u2500 readiness stations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-station {\n block-size: var(--ig-station-size);\n border: var(--ig-stroke) solid var(--ig-station-held);\n border-radius: 50%;\n box-shadow: 0 0 0 var(--ig-station-halo) var(--ig-bg);\n display: inline-block;\n inline-size: var(--ig-station-size);\n}\n\n.ig-station[data-fill='filled'] {\n background: var(--ig-station-ready);\n border-color: var(--ig-station-ready);\n}\n\n.ig-station[data-fill='hollow'] {\n background: transparent;\n border-color: var(--ig-station-pending);\n}\n\n.ig-station[data-fill='dashed'] {\n background: transparent;\n border-style: dashed;\n border-color: var(--ig-station-held);\n}\n\n/* \u2500\u2500 titles, identity, provenance \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-title {\n color: var(--ig-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ig-id,\n.ig-count {\n color: var(--ig-text-muted);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n}\n\n.ig-link {\n color: var(--ig-accent);\n text-decoration: none;\n}\n\n.ig-link:hover {\n text-decoration: underline;\n}\n\n.ig-provenance,\n.ig-hold,\n.ig-caveat {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n grid-column: 3 / -1;\n}\n\n.ig-strike {\n text-decoration: line-through;\n}\n\n/* \u2500\u2500 edge badges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* SPANNED FROM THE TITLE COLUMN, LIKE EVERY OTHER FULL-WIDTH ROW MEMBER. Left\n unplaced this was the fifth child of a four-column grid, so it auto-placed\n into column ONE of a second row \u2014 the rank track, an auto-sized column that\n takes the width of its widest item. One relationship badge then set the width\n of the rank column for the whole row, pushing the station and title across\n and squeezing the title to pay for it. Badges belong with the row's other\n metadata, which is what 3 / -1 already means here for provenance and holds.\n (No backticks in this file: the stylesheet is a template literal.) */\n.ig-badges {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space-tight);\n grid-column: 3 / -1;\n}\n\n.ig-badge {\n align-items: center;\n /* Not currentColor any more: the label and the border now carry DIFFERENT\n colours deliberately \u2014 see below. Left as currentColor the border would\n follow the text to --ig-text and the hue channel would vanish from the\n badge entirely, which is the opposite of the fix. */\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text);\n display: inline-flex;\n font-size: var(--ig-font-size-small);\n gap: var(--ig-space-tight);\n padding: 0 var(--ig-space-tight);\n}\n\n/* THE HUE IS A BORDER COLOUR HERE, NOT A TEXT COLOUR \u2014 the theme holds the\n edge hues to the 3:1 NON-TEXT bar, and says so where it defines them, so\n painting badge LABELS with them contradicted the palette's own claim. It was\n not merely theoretical: at this size duplicate-of measured 3.98:1 on\n --ig-surface and decomposed-from 4.37:1, both under the 4.5:1 the text test\n asserts for every text colour. The label now takes --ig-text, which that\n test already proves on all three surfaces, and the hue keeps the non-text\n use it was measured for.\n NO CHANNEL IS LOST. Hue is one of four redundant channels and it is still\n carried by the border; the dash pattern and the glyph are untouched; and the\n vocabulary test independently proves all five stay distinguishable with hue\n removed ENTIRELY, which is the stronger claim. */\n.ig-badge[data-edge='blocked-by'] { border-color: var(--ig-edge-blocked-by); border-style: solid; }\n.ig-badge[data-edge='serialize-with'] { border-color: var(--ig-edge-serialize-with); border-style: double; }\n.ig-badge[data-edge='together-with'] { border-color: var(--ig-edge-together-with); border-style: solid; }\n.ig-badge[data-edge='duplicate-of'] { border-color: var(--ig-edge-duplicate-of); border-style: dotted; }\n.ig-badge[data-edge='decomposed-from'] { border-color: var(--ig-edge-decomposed-from); border-style: dashed; }\n\n.ig-glyph {\n font-family: var(--ig-font-mono);\n}\n\n/* \u2500\u2500 the footer group: holds that earn no rank slot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-footer {\n border-top: var(--ig-stroke) solid var(--ig-line);\n margin-top: var(--ig-space);\n padding-top: var(--ig-space);\n}\n\n.ig-footer-title {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: 0 0 var(--ig-space-tight);\n}\n\n/* \u2500\u2500 the host facts: what the graph cannot say \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Present only when the host stated a fact; a document with none draws no\n header at all, which is what keeps the pure-graph markup unchanged. */\n.ig-header {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space);\n margin: 0 0 var(--ig-space);\n}\n\n.ig-summary,\n.ig-freshness {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n font-variant-numeric: tabular-nums;\n margin: 0;\n}\n\n/* STALE GOES GOLD, as the design draws it. The gold this palette already holds\n is the conflict state's \u2014 \"the document moved upstream\" \u2014 and a stale mirror\n is that fact about the whole document, so the state hue is reused rather\n than a token added for one word. No new token: the theme's token list is\n the contract every host theme has to fill. */\n.ig-freshness[data-stale='true'] {\n color: var(--ig-state-conflict);\n}\n\n/* A control the viewer publishes and does not wire: the UA button reset, so it\n reads as the inline link it sits beside. */\n.ig-refresh {\n background: none;\n border: 0;\n color: var(--ig-accent);\n cursor: pointer;\n font: inherit;\n margin-left: var(--ig-space-tight);\n padding: 0;\n}\n\n.ig-refresh:hover {\n text-decoration: underline;\n}\n\n.ig-now {\n list-style: none;\n margin: 0 0 var(--ig-space);\n padding: 0;\n}\n\n/* The same row grammar as a slot, minus the rank track: the marker takes its\n place, so the title column lines up with the order beneath it. */\n.ig-now-row {\n align-items: center;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-accent);\n border-radius: var(--ig-radius);\n column-gap: var(--ig-space);\n display: grid;\n grid-template-columns: auto 1fr auto auto;\n min-height: var(--ig-row-height);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-now-mark {\n color: var(--ig-accent);\n font-family: var(--ig-font-mono);\n font-size: var(--ig-font-size-small);\n text-transform: uppercase;\n}\n\n.ig-now-phase {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n white-space: nowrap;\n}\n\n/* A caveat or hold-label chip carries no relationship hue: it is a word, not\n an edge, so it keeps the line colour the plain badge has. */\n.ig-badge[data-caveat],\n.ig-badge[data-hold] {\n color: var(--ig-text-muted);\n}\n\n/* \u2500\u2500 the graph canvas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* The stage carries the LAYOUT's own size, so one SVG unit is one CSS pixel\n and an absolutely-positioned rail row lands on the node it names. A\n percentage-width canvas would rescale under the rail and drift. It scrolls\n rather than shrinking, because shrinking would silently break that. */\n.ig-stage {\n block-size: var(--ig-stage-h);\n inline-size: var(--ig-stage-w);\n max-inline-size: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n position: relative;\n}\n\n.ig-canvas {\n block-size: var(--ig-stage-h);\n display: block;\n inline-size: var(--ig-stage-w);\n}\n\n/* The ranks and stations FOR the spine nodes, sitting on them. */\n.ig-rail {\n inset: 0;\n pointer-events: none;\n position: absolute;\n}\n\n.ig-rail-row {\n block-size: var(--ig-row-h);\n inline-size: var(--ig-row-w);\n inset-block-start: var(--ig-row-y);\n inset-inline-start: var(--ig-row-x);\n margin-bottom: 0;\n min-block-size: 0;\n pointer-events: auto;\n position: absolute;\n}\n\n.ig-node {\n fill: var(--ig-surface);\n stroke: var(--ig-line);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-node[data-held='true'] {\n fill: var(--ig-surface-2);\n stroke-dasharray: 4 3;\n}\n\n.ig-node-label {\n fill: var(--ig-text);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size-small);\n}\n\n.ig-edge {\n fill: none;\n stroke-width: var(--ig-stroke);\n}\n\n.ig-edge[data-edge='blocked-by'] { stroke: var(--ig-edge-blocked-by); }\n.ig-edge[data-edge='serialize-with'] { stroke: var(--ig-edge-serialize-with); }\n.ig-edge[data-edge='together-with'] { stroke: var(--ig-edge-together-with); }\n.ig-edge[data-edge='duplicate-of'] { stroke: var(--ig-edge-duplicate-of); }\n.ig-edge[data-edge='decomposed-from'] { stroke: var(--ig-edge-decomposed-from); }\n\n/* The dash pattern is set per element from the edge vocabulary, never here \u2014\n one source for the channel the colour-blind-safety claim rests on. */\n.ig-enclosure {\n fill: none;\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-connector {\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke-connector);\n}\n\n/* currentColor on the marker resolves to the inherited text colour, not to the\n edge's stroke \u2014 so a terminal has to be given the hue explicitly or it renders\n in body text and the fourth channel silently collapses. */\n.ig-terminal {\n color: var(--ig-text-body);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-terminal[data-edge='blocked-by'] { color: var(--ig-edge-blocked-by); }\n.ig-terminal[data-edge='serialize-with'] { color: var(--ig-edge-serialize-with); }\n.ig-terminal[data-edge='together-with'] { color: var(--ig-edge-together-with); }\n.ig-terminal[data-edge='duplicate-of'] { color: var(--ig-edge-duplicate-of); }\n.ig-terminal[data-edge='decomposed-from'] { color: var(--ig-edge-decomposed-from); }\n\n/* \u2500\u2500 refusals and empty states \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-refusal,\n.ig-empty {\n background: var(--ig-surface-2);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text-body);\n padding: var(--ig-space);\n}\n\n.ig-refusal-next {\n color: var(--ig-text);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* The capsule is INFORMATIONAL \u2014 a plain list item again. It was briefly a\n button, to make the refusal's advertised action keyboard-reachable; the\n action itself has since gone, because this package cannot narrow a document\n and so could never complete it. With the control removed the UA button reset\n goes too: there is no button look left to undo. */\n.ig-capsule {\n align-items: baseline;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n display: flex;\n gap: var(--ig-space);\n margin-top: var(--ig-space-tight);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-refusal-omitted {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* \u2500\u2500 the decomposition tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-tree,\n.ig-tree .ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.ig-tree .ig-list {\n border-left: var(--ig-stroke) dashed var(--ig-edge-decomposed-from);\n margin-left: var(--ig-space);\n padding-left: var(--ig-space);\n}\n\n.ig-tree-item {\n padding: var(--ig-space-tight) 0;\n}\n\n/* \u2500\u2500 legend \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-legend {\n border: 0;\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space);\n margin: 0 0 var(--ig-space);\n padding: 0;\n}\n\n.ig-legend-caption {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n padding: 0;\n}\n";
25
+ export declare const viewerStylesheet: string;
17
26
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,u8fA0c5B,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA0RH,eAAO,MAAM,gBAAgB,QAiyC5B,CAAC"}