@issuegraph/viewer 0.3.0 → 0.5.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 (51) hide show
  1. package/dist/document.d.ts +152 -0
  2. package/dist/document.d.ts.map +1 -1
  3. package/dist/document.js +185 -2
  4. package/dist/document.js.map +1 -1
  5. package/dist/element.d.ts +11 -0
  6. package/dist/element.d.ts.map +1 -1
  7. package/dist/element.js.map +1 -1
  8. package/dist/index.d.ts +3 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +28 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/layout.d.ts +51 -50
  13. package/dist/layout.d.ts.map +1 -1
  14. package/dist/layout.js +364 -168
  15. package/dist/layout.js.map +1 -1
  16. package/dist/mount.d.ts +13 -0
  17. package/dist/mount.d.ts.map +1 -1
  18. package/dist/mount.js +69 -1
  19. package/dist/mount.js.map +1 -1
  20. package/dist/navigation.d.ts +14 -0
  21. package/dist/navigation.d.ts.map +1 -1
  22. package/dist/navigation.js +20 -0
  23. package/dist/navigation.js.map +1 -1
  24. package/dist/parts.d.ts +285 -2
  25. package/dist/parts.d.ts.map +1 -1
  26. package/dist/parts.js +781 -63
  27. package/dist/parts.js.map +1 -1
  28. package/dist/projections/graph.d.ts +10 -0
  29. package/dist/projections/graph.d.ts.map +1 -1
  30. package/dist/projections/graph.js +413 -326
  31. package/dist/projections/graph.js.map +1 -1
  32. package/dist/projections/linear.d.ts +90 -0
  33. package/dist/projections/linear.d.ts.map +1 -1
  34. package/dist/projections/linear.js +213 -31
  35. package/dist/projections/linear.js.map +1 -1
  36. package/dist/projections/tree.d.ts.map +1 -1
  37. package/dist/projections/tree.js +26 -3
  38. package/dist/projections/tree.js.map +1 -1
  39. package/dist/styles.d.ts +10 -1
  40. package/dist/styles.d.ts.map +1 -1
  41. package/dist/styles.js +803 -132
  42. package/dist/styles.js.map +1 -1
  43. package/dist/theme.d.ts +5 -6
  44. package/dist/theme.d.ts.map +1 -1
  45. package/dist/theme.js +72 -7
  46. package/dist/theme.js.map +1 -1
  47. package/dist/vocabulary.d.ts +39 -0
  48. package/dist/vocabulary.d.ts.map +1 -1
  49. package/dist/vocabulary.js +27 -0
  50. package/dist/vocabulary.js.map +1 -1
  51. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0c/B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgmC/B,CAAC"}
package/dist/theme.d.ts CHANGED
@@ -31,10 +31,10 @@ export type ColorToken = (typeof COLOR_TOKENS)[number];
31
31
  * and {@link METRIC_TOKENS} would give both a `px` unit and silently void the
32
32
  * declaration.
33
33
  */
34
- export declare const TYPE_TOKENS: readonly ["--ig-font-ui", "--ig-font-mono", "--ig-font-size", "--ig-font-size-small", "--ig-line-height", "--ig-font-size-micro", "--ig-font-size-pill", "--ig-weight-regular", "--ig-weight-medium", "--ig-weight-strong", "--ig-weight-heavy", "--ig-tracking-label", "--ig-tracking-group", "--ig-tracking-pill", "--ig-tracking-badge"];
34
+ export declare const TYPE_TOKENS: readonly ["--ig-font-ui", "--ig-font-mono", "--ig-font-size", "--ig-font-size-small", "--ig-line-height", "--ig-font-size-micro", "--ig-font-size-pill", "--ig-weight-regular", "--ig-weight-medium", "--ig-weight-strong", "--ig-weight-heavy", "--ig-tracking-label", "--ig-tracking-group", "--ig-tracking-pill", "--ig-tracking-badge", "--ig-font-size-meta", "--ig-font-size-compact", "--ig-font-size-row", "--ig-font-size-rank"];
35
35
  export type TypeToken = (typeof TYPE_TOKENS)[number];
36
36
  /** Geometry tokens. Every value is a number of CSS pixels. */
37
- export declare const METRIC_TOKENS: readonly ["--ig-space", "--ig-space-tight", "--ig-radius", "--ig-row-height", "--ig-station-size", "--ig-station-halo", "--ig-stroke", "--ig-stroke-connector", "--ig-terminal-length", "--ig-terminal-width", "--ig-gutter-width", "--ig-spine-width", "--ig-char-width", "--ig-label-char-width", "--ig-focus-ring", "--ig-space-micro", "--ig-space-snug", "--ig-space-loose", "--ig-space-wide", "--ig-radius-small", "--ig-radius-large", "--ig-row-min-height", "--ig-row-padding-block", "--ig-band-rail"];
37
+ export declare const METRIC_TOKENS: readonly ["--ig-space", "--ig-space-tight", "--ig-radius", "--ig-row-height", "--ig-station-size", "--ig-station-halo", "--ig-stroke", "--ig-stroke-connector", "--ig-stroke-audit", "--ig-terminal-length", "--ig-terminal-width", "--ig-gutter-width", "--ig-spine-width", "--ig-char-width", "--ig-label-char-width", "--ig-focus-ring", "--ig-space-micro", "--ig-space-snug", "--ig-space-loose", "--ig-space-wide", "--ig-radius-small", "--ig-radius-large", "--ig-row-min-height", "--ig-row-padding-block", "--ig-band-rail", "--ig-rank-column", "--ig-station-box", "--ig-card-line"];
38
38
  export type MetricToken = (typeof METRIC_TOKENS)[number];
39
39
  /**
40
40
  * Surface-treatment tokens: values that are none of a colour, a type value or
@@ -100,10 +100,9 @@ export declare function extendTheme(base: Theme, override: ThemeOverride): Theme
100
100
  * package and stored. Adding a token then puts a hole in it, and the hole does
101
101
  * not fail loudly: a missing metric reads `undefined`, arithmetic on it yields
102
102
  * `NaN`, and every comparison against `NaN` is false. Measured when
103
- * `--ig-label-char-width` was added — a 0.1.0 theme made `fitLabel` return a
104
- * 60-character title with an ellipsis APPENDED, which is worse overflow than
105
- * the defect that token was added to fix, and `themeCss` emitted
106
- * `undefinedpx`.
103
+ * `--ig-label-char-width` was added — a 0.1.0 theme made every measured width
104
+ * `NaN`, so a card's height came out `NaN` and every station stacked at the
105
+ * same y, and `themeCss` emitted `undefinedpx`.
107
106
  *
108
107
  * A TypeScript caller is told about a new token by the compiler; a JavaScript
109
108
  * one is not, and neither is a theme deserialized from storage. This is the
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,+ZAgCd,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,6UAmCb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,mfA6Cf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,wIAsBf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAKxC,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KAkKzB,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAOvE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAU,GAAG,MAAM,CAWjE"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,+ZAgCd,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,2aAgDb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,kkBAyDf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,wIAsBf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAKxC,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KA2MzB,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAOvE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAU,GAAG,MAAM,CAWjE"}
package/dist/theme.js CHANGED
@@ -97,6 +97,19 @@ export const TYPE_TOKENS = Object.freeze([
97
97
  '--ig-tracking-group',
98
98
  '--ig-tracking-pill',
99
99
  '--ig-tracking-badge',
100
+ // THE FOUR STEPS BETWEEN `--ig-font-size-micro` AND `--ig-font-size`, for the
101
+ // same reason the two below `small` were added: the frames draw them and this
102
+ // file named none of them, so every one had to be approximated by 11px or
103
+ // 13px. §16a alone spends 10.5 (a footer row's id), 12.5 (a footer row's
104
+ // title and §16b's node title), 13.5 (a rank row's title) and 14 (the rank
105
+ // number itself) — four values in one frame, none of them derivable from the
106
+ // two that shipped. Approximating them is what made a rank row read as one
107
+ // undifferentiated block of body copy: with title, id and provenance all at
108
+ // 11-13px, the row had no type hierarchy to see.
109
+ '--ig-font-size-meta',
110
+ '--ig-font-size-compact',
111
+ '--ig-font-size-row',
112
+ '--ig-font-size-rank',
100
113
  ]);
101
114
  /** Geometry tokens. Every value is a number of CSS pixels. */
102
115
  export const METRIC_TOKENS = Object.freeze([
@@ -108,6 +121,7 @@ export const METRIC_TOKENS = Object.freeze([
108
121
  '--ig-station-halo',
109
122
  '--ig-stroke',
110
123
  '--ig-stroke-connector',
124
+ '--ig-stroke-audit',
111
125
  '--ig-terminal-length',
112
126
  '--ig-terminal-width',
113
127
  '--ig-gutter-width',
@@ -144,6 +158,17 @@ export const METRIC_TOKENS = Object.freeze([
144
158
  // WORKING NOW band, `inset 3px 0 0`). It pairs with `--ig-tint-wash`: the
145
159
  // wash is the band's fill and this is its edge.
146
160
  '--ig-band-rail',
161
+ // §16a's rank TRACK, `grid-template-columns: 34px 1fr`. It is a column width
162
+ // rather than a derived one because the frame fixes it: the rank figure and
163
+ // the readiness dot stack inside it and the title column starts at the same
164
+ // x on every row, held or not. Deriving it from the station size and a gap
165
+ // would make the alignment grid move whenever either did, which is the one
166
+ // thing this column exists to prevent.
167
+ '--ig-rank-column',
168
+ // §16b's spine furniture: the station disc that sits ON the spine line, and
169
+ // the line height a card's own height is counted in.
170
+ '--ig-station-box',
171
+ '--ig-card-line',
147
172
  ]);
148
173
  /**
149
174
  * Surface-treatment tokens: values that are none of a colour, a type value or
@@ -274,6 +299,16 @@ export const defaultTheme = Object.freeze({
274
299
  // derived from the size, because these two share one.
275
300
  '--ig-tracking-pill': '0.08em',
276
301
  '--ig-tracking-badge': '0.06em',
302
+ // Read values, in the same sense as `micro` and `pill`: §16a's footer row
303
+ // prints its id at 10.5 and its title at 12.5, its rank rows print titles
304
+ // at 13.5, and the rank figure itself is 14. §16b reuses `compact` for a
305
+ // node title and `meta` for a node id, which is why they are named for
306
+ // their ROLE rather than for a position in a scale — there is no scale
307
+ // here to be a position in.
308
+ '--ig-font-size-meta': '10.5px',
309
+ '--ig-font-size-compact': '12.5px',
310
+ '--ig-font-size-row': '13.5px',
311
+ '--ig-font-size-rank': '14px',
277
312
  }),
278
313
  metrics: Object.freeze({
279
314
  '--ig-space': 12,
@@ -288,13 +323,32 @@ export const defaultTheme = Object.freeze({
288
323
  // The `together-with` hairline connector, which is deliberately finer than
289
324
  // an ordinary edge so the enclosure stays the primary read.
290
325
  '--ig-stroke-connector': 1.6,
326
+ // §17d's ambient audit bar, which the design fixes at 2px in those words —
327
+ // heavier than an edge stroke because it has to be findable while the
328
+ // reader is scrolling past it doing something else, and no heavier because
329
+ // §17d's whole argument is attention without nagging.
330
+ //
331
+ // IT LIVES IN THIS THEME, NOT THE AUDIT'S. `editor/src/audit/styles.ts`
332
+ // records shipping an `--ig-audit-bar` of its own behind a second theme
333
+ // function and reversing it: a host that installed the viewer's theme and
334
+ // forgot the second got a `var()` resolving to nothing, and the bar
335
+ // silently stopped drawing. A token here has no such state — every host
336
+ // installs this theme — so the value stays retunable without the failure
337
+ // that reversal was paid for.
338
+ '--ig-stroke-audit': 2,
291
339
  // The terminal marker's own box. It is theme data rather than a constant
292
340
  // in the drawing code because it is a SIZE, and R5 admits no exceptions:
293
341
  // a host scaling the type up needs the arrowheads to follow.
294
342
  '--ig-terminal-length': 9,
295
343
  '--ig-terminal-width': 8,
296
- '--ig-gutter-width': 208,
297
- '--ig-spine-width': 360,
344
+ // §16b's own column widths: a 250px left gutter, a 330px spine card and a
345
+ // 270px right gutter, inside an 1180px panel. One gutter token serves both
346
+ // sides — the frame's 20px difference between them carries no stated
347
+ // meaning, and two tokens would ask a host to reproduce an asymmetry it
348
+ // cannot read a reason for. The sum lands the canvas at 1164, which is the
349
+ // frame's panel less its own border and scroll allowance.
350
+ '--ig-gutter-width': 260,
351
+ '--ig-spine-width': 330,
298
352
  // The advance width of one character at `--ig-font-size` in the mono face.
299
353
  // Layout measures text with it, so a host changing the type scale changes
300
354
  // this too and the boxes stay around their contents.
@@ -306,7 +360,7 @@ export const defaultTheme = Object.freeze({
306
360
  // title overflow its node: 24 all-capital characters "fitted" 187.2px of
307
361
  // room and drew about 240px, straight across the routing channel.
308
362
  //
309
- // AN AVERAGE, because `fitLabel` scales it per character class rather than
363
+ // AN AVERAGE, because `labelWidth` scales it per character class rather than
310
364
  // assuming every glyph is the same width — see `labelWidth` there. A flat
311
365
  // CEILING was tried and is wrong in the other direction: at the widest
312
366
  // glyph's advance, ordinary titles truncate at roughly half their length,
@@ -334,6 +388,18 @@ export const defaultTheme = Object.freeze({
334
388
  '--ig-row-padding-block': 13,
335
389
  // §16a's WORKING NOW band, `box-shadow: inset 3px 0 0 var(--cyan)`.
336
390
  '--ig-band-rail': 3,
391
+ // §16a's rank track, read straight off `grid-template-columns: 34px 1fr`.
392
+ '--ig-rank-column': 34,
393
+ // §16b's station disc, 26px across on the spine.
394
+ '--ig-station-box': 26,
395
+ // One line of text inside a §16b node card, which is what lets the layout
396
+ // give a card a height WITHOUT measuring one. A card's contents are known
397
+ // — a title that may wrap, an identity, a badge row — so its height is a
398
+ // count of lines times this. Chosen as a CEILING on the compact size times
399
+ // the line height (12.5 x 1.45 = 18.1), for the reason `measureLabel` gives
400
+ // about its own metric: a card that reserves slightly too much leaves a
401
+ // gap, and one that reserves too little overlaps the row beneath it.
402
+ '--ig-card-line': 18,
337
403
  }),
338
404
  effects: Object.freeze({
339
405
  // ONE PAIR FOR ALL FIVE RELATIONSHIP CHIPS, at the value §16a draws most
@@ -389,10 +455,9 @@ export function extendTheme(base, override) {
389
455
  * package and stored. Adding a token then puts a hole in it, and the hole does
390
456
  * not fail loudly: a missing metric reads `undefined`, arithmetic on it yields
391
457
  * `NaN`, and every comparison against `NaN` is false. Measured when
392
- * `--ig-label-char-width` was added — a 0.1.0 theme made `fitLabel` return a
393
- * 60-character title with an ellipsis APPENDED, which is worse overflow than
394
- * the defect that token was added to fix, and `themeCss` emitted
395
- * `undefinedpx`.
458
+ * `--ig-label-char-width` was added — a 0.1.0 theme made every measured width
459
+ * `NaN`, so a card's height came out `NaN` and every station stacked at the
460
+ * same y, and `themeCss` emitted `undefinedpx`.
396
461
  *
397
462
  * A TypeScript caller is told about a new token by the compiler; a JavaScript
398
463
  * one is not, and neither is a theme deserialized from storage. This is the
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,20 @@ export interface EdgeTreatment {
27
27
  readonly hueToken: string;
28
28
  /** Announced to a screen reader, and used as the badge's accessible name. */
29
29
  readonly label: string;
30
+ /**
31
+ * The same relationship read from the OTHER end.
32
+ *
33
+ * A directed edge states one fact, and which end you stand at decides the
34
+ * verb: #488 is what #512 is blocked by, and #512 is what #488 BLOCKS. The
35
+ * badge that shipped said "blocked by #512 (incoming)" on #488's row —
36
+ * technically true, and it asks a reader to invert a sentence in their head
37
+ * on the row where the plain reading was available. §16a draws the plain
38
+ * reading, so the vocabulary carries it.
39
+ *
40
+ * A symmetric edge reads the same both ways and carries none: `undefined`
41
+ * here is what says so, rather than a duplicate of {@link label}.
42
+ */
43
+ readonly reverseLabel?: string;
30
44
  readonly ordering: OrderingEffect;
31
45
  /**
32
46
  * Whether the edge reads the same both ways. A symmetric edge is drawn once
@@ -47,6 +61,7 @@ export declare const EDGE_TREATMENTS: Readonly<{
47
61
  readonly glyph: "⊘";
48
62
  readonly hueToken: "--ig-edge-blocked-by";
49
63
  readonly label: "blocked by";
64
+ readonly reverseLabel: "blocks";
50
65
  readonly ordering: "strict-directed";
51
66
  readonly symmetric: false;
52
67
  };
@@ -74,6 +89,7 @@ export declare const EDGE_TREATMENTS: Readonly<{
74
89
  readonly glyph: "≡";
75
90
  readonly hueToken: "--ig-edge-duplicate-of";
76
91
  readonly label: "duplicate of";
92
+ readonly reverseLabel: "duplicated by";
77
93
  readonly ordering: "never-worked";
78
94
  readonly symmetric: false;
79
95
  };
@@ -83,12 +99,35 @@ export declare const EDGE_TREATMENTS: Readonly<{
83
99
  readonly glyph: "⑃";
84
100
  readonly hueToken: "--ig-edge-decomposed-from";
85
101
  readonly label: "decomposed from";
102
+ readonly reverseLabel: "decomposed into";
86
103
  readonly ordering: "provenance-only";
87
104
  readonly symmetric: false;
88
105
  };
89
106
  }>;
90
107
  /** The treatment for a relationship. Total over the format's fields. */
91
108
  export declare function treatmentFor(field: EdgeField): EdgeTreatment;
109
+ /**
110
+ * A relationship's word, read from the end the reader is standing at.
111
+ *
112
+ * THE VERB CHANGES, NOT THE NOUN. Read from the far end an asymmetric edge has
113
+ * its own plain wording and the vocabulary carries it, so a surface never has
114
+ * to say "(incoming)" and leave the reader to invert a sentence in their head.
115
+ *
116
+ * IT IS A FUNCTION HERE RATHER THAN A TEST AT EACH CALL SITE, and that is the
117
+ * whole reason it exists: the badge row in `parts.ts` and §17a's inspector row
118
+ * in `@issuegraph/editor` draw the SAME edge one zone apart on one screen, and
119
+ * two copies of this expression would be free to disagree the moment either was
120
+ * edited. They were, briefly, and a comment at one of them claimed to be "layer
121
+ * 1's own expression" while being a second copy of it — which is the failure
122
+ * this package names everywhere else: not a wrong answer, a second answer.
123
+ *
124
+ * A symmetric kind takes {@link EdgeTreatment.label} at either end, because
125
+ * `serialize-with` and `together-with` state one fact whichever way round they
126
+ * are stored; `reverseLabel` is `undefined` on them for that reason rather than
127
+ * by omission. The `??` is not a second answer to that question — it is what
128
+ * the optional field's type requires, and it lands on the same string.
129
+ */
130
+ export declare function labelFrom(treatment: EdgeTreatment, outgoing: boolean): string;
92
131
  /**
93
132
  * The dash patterns, as SVG `stroke-dasharray` values keyed by dash name.
94
133
  *
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,kFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9E,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,KAAK,CAAC;AAEpF,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,qBAAqB,GACrB,aAAa,GACb,cAAc,GACd,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8C0B,CAAC;AAEvD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAE5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAY1D;AAED,0FAA0F;AAC1F,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAgB,CAAC"}
1
+ {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,kFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9E,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,KAAK,CAAC;AAEpF,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,qBAAqB,GACrB,aAAa,GACb,cAAc,GACd,iBAAiB,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiD0B,CAAC;AAEvD,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAE5D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAY1D;AAED,0FAA0F;AAC1F,eAAO,MAAM,UAAU,EAAE,SAAS,SAAS,EAAgB,CAAC"}
@@ -24,6 +24,7 @@ export const EDGE_TREATMENTS = Object.freeze({
24
24
  glyph: '⊘',
25
25
  hueToken: '--ig-edge-blocked-by',
26
26
  label: 'blocked by',
27
+ reverseLabel: 'blocks',
27
28
  ordering: 'strict-directed',
28
29
  symmetric: false,
29
30
  },
@@ -51,6 +52,7 @@ export const EDGE_TREATMENTS = Object.freeze({
51
52
  glyph: '≡',
52
53
  hueToken: '--ig-edge-duplicate-of',
53
54
  label: 'duplicate of',
55
+ reverseLabel: 'duplicated by',
54
56
  ordering: 'never-worked',
55
57
  symmetric: false,
56
58
  },
@@ -60,6 +62,7 @@ export const EDGE_TREATMENTS = Object.freeze({
60
62
  glyph: '⑃',
61
63
  hueToken: '--ig-edge-decomposed-from',
62
64
  label: 'decomposed from',
65
+ reverseLabel: 'decomposed into',
63
66
  ordering: 'provenance-only',
64
67
  symmetric: false,
65
68
  },
@@ -68,6 +71,30 @@ export const EDGE_TREATMENTS = Object.freeze({
68
71
  export function treatmentFor(field) {
69
72
  return EDGE_TREATMENTS[field];
70
73
  }
74
+ /**
75
+ * A relationship's word, read from the end the reader is standing at.
76
+ *
77
+ * THE VERB CHANGES, NOT THE NOUN. Read from the far end an asymmetric edge has
78
+ * its own plain wording and the vocabulary carries it, so a surface never has
79
+ * to say "(incoming)" and leave the reader to invert a sentence in their head.
80
+ *
81
+ * IT IS A FUNCTION HERE RATHER THAN A TEST AT EACH CALL SITE, and that is the
82
+ * whole reason it exists: the badge row in `parts.ts` and §17a's inspector row
83
+ * in `@issuegraph/editor` draw the SAME edge one zone apart on one screen, and
84
+ * two copies of this expression would be free to disagree the moment either was
85
+ * edited. They were, briefly, and a comment at one of them claimed to be "layer
86
+ * 1's own expression" while being a second copy of it — which is the failure
87
+ * this package names everywhere else: not a wrong answer, a second answer.
88
+ *
89
+ * A symmetric kind takes {@link EdgeTreatment.label} at either end, because
90
+ * `serialize-with` and `together-with` state one fact whichever way round they
91
+ * are stored; `reverseLabel` is `undefined` on them for that reason rather than
92
+ * by omission. The `??` is not a second answer to that question — it is what
93
+ * the optional field's type requires, and it lands on the same string.
94
+ */
95
+ export function labelFrom(treatment, outgoing) {
96
+ return outgoing || treatment.symmetric ? treatment.label : (treatment.reverseLabel ?? treatment.label);
97
+ }
71
98
  /**
72
99
  * The dash patterns, as SVG `stroke-dasharray` values keyed by dash name.
73
100
  *
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAkC/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,KAAK;KACjB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,0BAA0B;QACpC,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,yBAAyB;QACnC,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,IAAI;KAChB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,wBAAwB;QAClC,KAAK,EAAE,cAAc;QACrB,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,KAAK;KACjB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,2BAA2B;QACrC,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,KAAK;KACjB;CACkD,CAAC,CAAC;AAEvD,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,UAAU,GAAyB,WAAW,CAAC"}
1
+ {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAgD/D;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,YAAY,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,sBAAsB;QAChC,KAAK,EAAE,YAAY;QACnB,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,KAAK;KACjB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,0BAA0B;QACpC,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,IAAI;KAChB;IACD,eAAe,EAAE;QACf,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,yBAAyB;QACnC,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,IAAI;KAChB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,wBAAwB;QAClC,KAAK,EAAE,cAAc;QACrB,YAAY,EAAE,eAAe;QAC7B,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,KAAK;KACjB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,2BAA2B;QACrC,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE,iBAAiB;QAC/B,QAAQ,EAAE,iBAAiB;QAC3B,SAAS,EAAE,KAAK;KACjB;CACkD,CAAC,CAAC;AAEvD,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,SAAS,CAAC,SAAwB,EAAE,QAAiB;IACnE,OAAO,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACzG,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,MAAM,UAAU,GAAyB,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@issuegraph/viewer",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Render an Issuegraph document as a work order — the ordered spine with readiness stations, the five edge treatments, and three projections. Rendering only: no fetching, no mutation, no auth, and every value themeable through CSS custom properties.",
5
5
  "keywords": [
6
6
  "issuegraph",
@@ -42,7 +42,7 @@
42
42
  "node": ">=18"
43
43
  },
44
44
  "dependencies": {
45
- "@issuegraph/core": "^0.1.2"
45
+ "@issuegraph/core": "^0.1.3"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/node": "^22.18.0",