@issuegraph/editor 0.3.0 → 0.10.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 (87) hide show
  1. package/README.md +31 -6
  2. package/dist/a11y/baseline.d.ts +182 -0
  3. package/dist/a11y/baseline.d.ts.map +1 -0
  4. package/dist/a11y/baseline.js +430 -0
  5. package/dist/a11y/baseline.js.map +1 -0
  6. package/dist/audit/styles.d.ts +1 -1
  7. package/dist/audit/styles.d.ts.map +1 -1
  8. package/dist/audit/styles.js +1 -1
  9. package/dist/create/draft.d.ts +17 -0
  10. package/dist/create/draft.d.ts.map +1 -1
  11. package/dist/create/draft.js +19 -0
  12. package/dist/create/draft.js.map +1 -1
  13. package/dist/create/keys.d.ts +70 -5
  14. package/dist/create/keys.d.ts.map +1 -1
  15. package/dist/create/keys.js +78 -17
  16. package/dist/create/keys.js.map +1 -1
  17. package/dist/firstpass/candidates.d.ts +17 -1
  18. package/dist/firstpass/candidates.d.ts.map +1 -1
  19. package/dist/index.d.ts +6 -4
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +12 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/overlay/render.d.ts.map +1 -1
  24. package/dist/overlay/render.js +54 -14
  25. package/dist/overlay/render.js.map +1 -1
  26. package/dist/overlay/styles.d.ts +1 -1
  27. package/dist/overlay/styles.d.ts.map +1 -1
  28. package/dist/overlay/styles.js +40 -0
  29. package/dist/overlay/styles.js.map +1 -1
  30. package/dist/picker/render.d.ts +26 -16
  31. package/dist/picker/render.d.ts.map +1 -1
  32. package/dist/picker/render.js +25 -36
  33. package/dist/picker/render.js.map +1 -1
  34. package/dist/picker/styles.d.ts +7 -7
  35. package/dist/picker/styles.d.ts.map +1 -1
  36. package/dist/picker/styles.js +7 -36
  37. package/dist/picker/styles.js.map +1 -1
  38. package/dist/picker/view.d.ts +8 -4
  39. package/dist/picker/view.d.ts.map +1 -1
  40. package/dist/picker/view.js +4 -3
  41. package/dist/picker/view.js.map +1 -1
  42. package/dist/picker/words.d.ts +12 -10
  43. package/dist/picker/words.d.ts.map +1 -1
  44. package/dist/picker/words.js +12 -8
  45. package/dist/picker/words.js.map +1 -1
  46. package/dist/scale/ladder.d.ts.map +1 -1
  47. package/dist/scale/ladder.js +10 -0
  48. package/dist/scale/ladder.js.map +1 -1
  49. package/dist/scale/render.d.ts.map +1 -1
  50. package/dist/scale/render.js +9 -1
  51. package/dist/scale/render.js.map +1 -1
  52. package/dist/workspace/chrome.d.ts +1 -1
  53. package/dist/workspace/chrome.d.ts.map +1 -1
  54. package/dist/workspace/chrome.js +48 -0
  55. package/dist/workspace/chrome.js.map +1 -1
  56. package/dist/workspace/firstpass.d.ts +166 -0
  57. package/dist/workspace/firstpass.d.ts.map +1 -0
  58. package/dist/workspace/firstpass.js +151 -0
  59. package/dist/workspace/firstpass.js.map +1 -0
  60. package/dist/workspace/host.d.ts +212 -10
  61. package/dist/workspace/host.d.ts.map +1 -1
  62. package/dist/workspace/host.js +434 -42
  63. package/dist/workspace/host.js.map +1 -1
  64. package/dist/workspace/inspector.d.ts +45 -1
  65. package/dist/workspace/inspector.d.ts.map +1 -1
  66. package/dist/workspace/inspector.js +11 -0
  67. package/dist/workspace/inspector.js.map +1 -1
  68. package/dist/workspace/mount.d.ts +52 -5
  69. package/dist/workspace/mount.d.ts.map +1 -1
  70. package/dist/workspace/mount.js +1391 -56
  71. package/dist/workspace/mount.js.map +1 -1
  72. package/dist/workspace/rail.d.ts.map +1 -1
  73. package/dist/workspace/rail.js +12 -0
  74. package/dist/workspace/rail.js.map +1 -1
  75. package/dist/workspace/recovery.d.ts +155 -0
  76. package/dist/workspace/recovery.d.ts.map +1 -0
  77. package/dist/workspace/recovery.js +156 -0
  78. package/dist/workspace/recovery.js.map +1 -0
  79. package/dist/workspace/render.d.ts +402 -1
  80. package/dist/workspace/render.d.ts.map +1 -1
  81. package/dist/workspace/render.js +947 -36
  82. package/dist/workspace/render.js.map +1 -1
  83. package/dist/workspace/styles.d.ts +1 -1
  84. package/dist/workspace/styles.d.ts.map +1 -1
  85. package/dist/workspace/styles.js +554 -41
  86. package/dist/workspace/styles.js.map +1 -1
  87. package/package.json +3 -3
@@ -22,6 +22,12 @@
22
22
  * itself, a sixth field gets a `6` for free and the picker and the keyboard
23
23
  * cannot disagree about which digit means what.
24
24
  *
25
+ * A SURFACE THAT DRAWS THE DIGITS READS {@link KIND_KEYS}, which is the same
26
+ * table filtered rather than a second walk of `EDGE_FIELDS`. The renderer and
27
+ * the key map then cannot disagree about which digit means what either, which
28
+ * is the half the paragraph above did not cover and the half that had already
29
+ * drifted.
30
+ *
25
31
  * ## Retype opens the picker; it does not emit a retype
26
32
  *
27
33
  * `T` answers with the edge to open {@link ../picker/view.ts pickerView} on,
@@ -48,7 +54,7 @@
48
54
  * it, and gets one more entry every time a host grows a control.
49
55
  *
50
56
  * So the question is inverted. {@link CreateInteraction} enumerates OUR OWN
51
- * interaction, which §17b fixes at three states, and the host says which one it
57
+ * interaction, which §17b fixes at four states, and the host says which one it
52
58
  * is in. A fifth widget adds no code here: the host reports `elsewhere` and the
53
59
  * map is silent. What was an open-ended list of other people's claims became a
54
60
  * closed description of this design's own flow.
@@ -63,7 +69,7 @@
63
69
  * Which bindings reach the target search is DATA on the binding table, so no
64
70
  * call site decides it and a sixth binding cannot be added without answering.
65
71
  */
66
- import type { EdgeId, IssueRef, Proposal } from '@issuegraph/store';
72
+ import type { EdgeId, EdgeKind, IssueRef, Proposal } from '@issuegraph/store';
67
73
  import type { CreateCommand } from './draft.ts';
68
74
  /**
69
75
  * What the shell knows when a key arrives.
@@ -113,18 +119,26 @@ export interface KeyboardContext {
113
119
  * The host answers it because the host is the only one who can: this package
114
120
  * has no DOM, and which control holds focus is visible only to the shell.
115
121
  * Crucially, answering it needs no knowledge of THIS package — a host maps
116
- * its own world onto three states it already understands.
122
+ * its own world onto four states it already understands.
117
123
  */
118
124
  readonly interaction: CreateInteraction;
119
125
  }
120
126
  /**
121
127
  * Where the keyboard is, in terms of the create flow §17b specifies.
122
128
  *
123
- * Three states, and the set is closed by the DESIGN rather than by the host's
129
+ * Four states, and the set is closed by the DESIGN rather than by the host's
124
130
  * inventory of controls — which is the whole reason it replaced a growing list
125
131
  * of other owners.
126
132
  *
127
133
  * - `canvas` — the create vocabulary is live. Every binding reaches it.
134
+ * - `kind-chooser` — the draft has a source and no kind, and the reader is
135
+ * answering the chooser this package drew for it. The digits reach, and
136
+ * `Escape` withdraws. `⏎` DOES NOT, and it is the reason this state exists
137
+ * rather than folding into `canvas`: `commit-target` fires on
138
+ * {@link KeyboardContext.match }, which is derived from a target query that
139
+ * survives a second `begin` — so a reader who typed a query, restarted the
140
+ * draft, and pressed `⏎` at the kind step would commit a target with no kind
141
+ * chosen, while the press was also taken from the kind button under focus.
128
142
  * - `target-search` — the create flow's OWN search box has focus. Only the
129
143
  * bindings that must survive it reach: `⏎` commits the target and `Escape`
130
144
  * withdraws, which is precisely the middle of `R → digit → search → ⏎`. Its
@@ -138,8 +152,26 @@ export interface KeyboardContext {
138
152
  *
139
153
  * `elsewhere` is what makes the set closed. It is the state for everything not
140
154
  * named, so a host growing a fifth control changes nothing here.
155
+ *
156
+ * ## Why this grew to four, when the whole point was that it does not grow
157
+ *
158
+ * It grew because it was UNDER-COUNTED, not because the closure argument
159
+ * failed. The header's rule is that this enumerates OUR OWN flow; the kind
160
+ * chooser is a step in that flow, and it was folded into `canvas` on the
161
+ * assumption that focus stays on the row the draft was begun from. `#152` is
162
+ * the evidence that it does not: activating `add` REPLACES that control with
163
+ * the kind list, so the mount's focus restore lands on whatever command control
164
+ * is nearest, and where the audit filter has emptied the rail there is no row to
165
+ * land on at all. `canvas` answers only for a focused ROW, so every create
166
+ * binding — the chooser's own digits included — returned `none` at exactly the
167
+ * step whose whole purpose is to be answered with a digit.
168
+ *
169
+ * A HOST STILL ANSWERS IT WITHOUT KNOWING THIS PACKAGE: "my reader is choosing
170
+ * a relationship kind" is a fact about the host's own screen, the same shape as
171
+ * the other three. What did NOT change is the thing the closure protects — no
172
+ * state here names a host's widget, and a fifth control still adds no code.
141
173
  */
142
- export type CreateInteraction = 'canvas' | 'target-search' | 'elsewhere';
174
+ export type CreateInteraction = 'canvas' | 'kind-chooser' | 'target-search' | 'elsewhere';
143
175
  /**
144
176
  * What a key means. `none` leaves the key to the host.
145
177
  *
@@ -161,6 +193,39 @@ export type KeyIntent = {
161
193
  readonly kind: 'retype';
162
194
  readonly edgeId: EdgeId;
163
195
  };
196
+ /** A digit the reader can press, and the kind it chooses. */
197
+ export interface KindKey {
198
+ /** The key as {@link keyIntent} spells it — `'1'`, `'2'`, … */
199
+ readonly key: string;
200
+ readonly edgeKind: EdgeKind;
201
+ }
202
+ /**
203
+ * The numbered kind list, for a surface that DRAWS the digits this map reads.
204
+ *
205
+ * ONE CONSTRUCTION, FILTERED — not a second `EDGE_FIELDS.map((_, i) => …)`
206
+ * somewhere a renderer can see. `workspace/mount.ts` had exactly that second
207
+ * copy: its chooser built `${index + 1} ${word}` from a `KINDS` alias — since
208
+ * removed with it — while this table built the same digits from `EDGE_FIELDS`,
209
+ * and the two agreed only because both happened to walk the same array (the
210
+ * alias WAS `EDGE_FIELDS`). Nothing pinned them, so a change to
211
+ * either — a reordering, a skipped digit, a sixth field — would have left the
212
+ * chooser telling the reader to press a key the keyboard resolves differently.
213
+ * That is the drift this module's header rejects in terms, live in the package
214
+ * that reads this module.
215
+ *
216
+ * DERIVED FROM `BINDINGS`, which stays private. Exporting the map itself would
217
+ * publish `survives` and the five non-kind actions, leaving every
218
+ * consumer to work out which entries name a kind — the same "here is the whole
219
+ * table, sort it out" surface a decision table exists to remove. `Map`
220
+ * preserves insertion order and the digits are spread from `EDGE_FIELDS.map`,
221
+ * so this comes out in the format's own order without sorting it.
222
+ *
223
+ * `binding.kind === 'choose-type'` narrows through the intersection for the
224
+ * reason {@link Binding} records: it is written as an intersection precisely so
225
+ * the discriminated union still narrows, which is what lets `edgeKind` be read
226
+ * here without a cast.
227
+ */
228
+ export declare const KIND_KEYS: readonly KindKey[];
164
229
  /**
165
230
  * One key press. Structurally a subset of the DOM's `KeyboardEvent`, so a host
166
231
  * passes the event straight in rather than unpacking it.
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/create/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAY,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE;AAC3D,0EAA0E;GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA+DzD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AA0ED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CA+C9E"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/create/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE;AAC3D,0EAA0E;GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAyGzD,6DAA6D;AAC7D,MAAM,WAAW,OAAO;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAIvC,CAAC;AAIF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAiFD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CA+C9E"}
@@ -22,6 +22,12 @@
22
22
  * itself, a sixth field gets a `6` for free and the picker and the keyboard
23
23
  * cannot disagree about which digit means what.
24
24
  *
25
+ * A SURFACE THAT DRAWS THE DIGITS READS {@link KIND_KEYS}, which is the same
26
+ * table filtered rather than a second walk of `EDGE_FIELDS`. The renderer and
27
+ * the key map then cannot disagree about which digit means what either, which
28
+ * is the half the paragraph above did not cover and the half that had already
29
+ * drifted.
30
+ *
25
31
  * ## Retype opens the picker; it does not emit a retype
26
32
  *
27
33
  * `T` answers with the edge to open {@link ../picker/view.ts pickerView} on,
@@ -48,7 +54,7 @@
48
54
  * it, and gets one more entry every time a host grows a control.
49
55
  *
50
56
  * So the question is inverted. {@link CreateInteraction} enumerates OUR OWN
51
- * interaction, which §17b fixes at three states, and the host says which one it
57
+ * interaction, which §17b fixes at four states, and the host says which one it
52
58
  * is in. A fifth widget adds no code here: the host reports `elsewhere` and the
53
59
  * map is silent. What was an open-ended list of other people's claims became a
54
60
  * closed description of this design's own flow.
@@ -76,10 +82,18 @@ import { EDGE_FIELDS } from '@issuegraph/core';
76
82
  const BINDINGS = new Map([
77
83
  // `r`, the digits and `t` are PRINTABLE. While a text control has focus they
78
84
  // are that control's characters, so they do not survive editing.
79
- ['r', { kind: 'relate', reachesTargetSearch: false }],
85
+ // `r` SURVIVES THE CHOOSER because restarting is ordinary: `draft.ts` says on
86
+ // `begin` that the reader changing their mind about the subject is expected,
87
+ // and it already clears what a previous draft gathered. Withholding it would
88
+ // take the restart away from a reader whose focus is off the rail while
89
+ // leaving it for one whose focus is on it — a difference with no meaning.
90
+ ['r', { kind: 'relate', survives: ['kind-chooser'] }],
91
+ // THE DIGITS ARE WHAT THE CHOOSER IS FOR. `#152`: with focus anywhere but a
92
+ // keyed row the interaction read `elsewhere` and these returned `none` at the
93
+ // one step whose whole purpose is to be answered with a digit.
80
94
  ...EDGE_FIELDS.map((edgeKind, index) => [
81
95
  String(index + 1),
82
- { kind: 'choose-type', edgeKind, reachesTargetSearch: false },
96
+ { kind: 'choose-type', edgeKind, survives: ['kind-chooser'] },
83
97
  ]),
84
98
  // `⏎` and `Escape` SURVIVE, and they are the reason this is a per-binding flag
85
99
  // rather than one "printable" test: the flow §17b specifies is
@@ -88,7 +102,14 @@ const BINDINGS = new Map([
88
102
  // while editing would break the loop it exists to deliver. `Escape` survives
89
103
  // for the same reason it is always available: a draft you cannot abandon is
90
104
  // worse than one you cannot start.
91
- ['enter', { kind: 'commit-target', reachesTargetSearch: true }],
105
+ // NOT IN THE CHOOSER, which is the whole reason `kind-chooser` is a state of
106
+ // its own rather than an alias for `canvas`. `commit-target` fires on `match`,
107
+ // and `match` is derived from a target query the host clears on `cancel` only
108
+ // — so `R → 1 → type a query → R` leaves a kind-step draft whose `match` is
109
+ // still set, and `⏎` there would commit a target before a kind was chosen.
110
+ // It would also be `preventDefault()`ed away from the kind button under focus,
111
+ // so one press would do the wrong thing twice.
112
+ ['enter', { kind: 'commit-target', survives: ['target-search'] }],
92
113
  // BOTH SPELLINGS OF THE DELETE KEY. §17b writes it `⌫`, which is `Backspace`
93
114
  // on the keyboards that have it and `Delete` on those that do not — most
94
115
  // notably Apple's, where the key in that position reports `Backspace` and the
@@ -97,11 +118,44 @@ const BINDINGS = new Map([
97
118
  // NOT SURVIVING EDITING is the non-obvious half: in a focused text box `⌫`
98
119
  // deletes a CHARACTER, and a map that claimed it would delete the reader's
99
120
  // selected edge while they were correcting a typo in the search.
100
- ['backspace', { kind: 'delete-edge', reachesTargetSearch: false }],
101
- ['delete', { kind: 'delete-edge', reachesTargetSearch: false }],
102
- ['t', { kind: 'retype-edge', reachesTargetSearch: false }],
103
- ['escape', { kind: 'cancel', reachesTargetSearch: true }],
121
+ // NEITHER SURVIVES THE CHOOSER, and the reason is the design rather than the
122
+ // guard that happens to cover it today. `reduceHost` replaces the selection
123
+ // with the draft's source when `begin` reduces, so `selectedEdge` is null
124
+ // through the kind step and both of these would answer `none` anyway — but
125
+ // that is a fact about ANOTHER module's reducer, and a table that relied on it
126
+ // would silently start claiming presses the day the selection rule changed.
127
+ ['backspace', { kind: 'delete-edge', survives: [] }],
128
+ ['delete', { kind: 'delete-edge', survives: [] }],
129
+ ['t', { kind: 'retype-edge', survives: [] }],
130
+ ['escape', { kind: 'cancel', survives: ['target-search', 'kind-chooser'] }],
104
131
  ]);
132
+ /**
133
+ * The numbered kind list, for a surface that DRAWS the digits this map reads.
134
+ *
135
+ * ONE CONSTRUCTION, FILTERED — not a second `EDGE_FIELDS.map((_, i) => …)`
136
+ * somewhere a renderer can see. `workspace/mount.ts` had exactly that second
137
+ * copy: its chooser built `${index + 1} ${word}` from a `KINDS` alias — since
138
+ * removed with it — while this table built the same digits from `EDGE_FIELDS`,
139
+ * and the two agreed only because both happened to walk the same array (the
140
+ * alias WAS `EDGE_FIELDS`). Nothing pinned them, so a change to
141
+ * either — a reordering, a skipped digit, a sixth field — would have left the
142
+ * chooser telling the reader to press a key the keyboard resolves differently.
143
+ * That is the drift this module's header rejects in terms, live in the package
144
+ * that reads this module.
145
+ *
146
+ * DERIVED FROM `BINDINGS`, which stays private. Exporting the map itself would
147
+ * publish `survives` and the five non-kind actions, leaving every
148
+ * consumer to work out which entries name a kind — the same "here is the whole
149
+ * table, sort it out" surface a decision table exists to remove. `Map`
150
+ * preserves insertion order and the digits are spread from `EDGE_FIELDS.map`,
151
+ * so this comes out in the format's own order without sorting it.
152
+ *
153
+ * `binding.kind === 'choose-type'` narrows through the intersection for the
154
+ * reason {@link Binding} records: it is written as an intersection precisely so
155
+ * the discriminated union still narrows, which is what lets `edgeKind` be read
156
+ * here without a cast.
157
+ */
158
+ export const KIND_KEYS = Object.freeze([...BINDINGS].flatMap(([key, binding]) => binding.kind === 'choose-type' ? [{ key, edgeKind: binding.edgeKind }] : []));
105
159
  const NONE = Object.freeze({ kind: 'none' });
106
160
  /**
107
161
  * Whether this press is a chord that belongs to the platform, not to us.
@@ -141,19 +195,26 @@ function repeated(press) {
141
195
  /**
142
196
  * Whether a binding is live in the interaction the host reports.
143
197
  *
144
- * A DECISION TABLE OVER THE THREE STATES, exhaustive so a fourth interaction —
198
+ * A DECISION TABLE OVER THE FOUR STATES, exhaustive so a fifth interaction —
145
199
  * were the design ever to grow one — is a compile error here rather than a
146
- * silently permissive default. `elsewhere` returning `false` for EVERY binding
147
- * is the whole of the fix for an unrelated control's `Escape`: that control
148
- * needs `Escape` to cancel its own edit, and a create draft it knows nothing
149
- * about must not consume it.
200
+ * silently permissive default. This is the ONLY site a new interaction breaks:
201
+ * {@link Restricted } widens on its own and every existing `survives` list keeps
202
+ * compiling, so the answer for the bindings is decided here or not at all.
203
+ *
204
+ * `elsewhere` returning `false` for EVERY binding is the whole of the fix for an
205
+ * unrelated control's `Escape`: that control needs `Escape` to cancel its own
206
+ * edit, and a create draft it knows nothing about must not consume it. The two
207
+ * middle arms read the table rather than naming keys, so the vocabulary stays in
208
+ * one place.
150
209
  */
151
210
  function reaches(binding, interaction) {
152
211
  switch (interaction) {
153
212
  case 'canvas':
154
213
  return true;
214
+ case 'kind-chooser':
215
+ return binding.survives.includes('kind-chooser');
155
216
  case 'target-search':
156
- return binding.reachesTargetSearch;
217
+ return binding.survives.includes('target-search');
157
218
  case 'elsewhere':
158
219
  return false;
159
220
  }
@@ -187,9 +248,9 @@ export function keyIntent(press, context) {
187
248
  // whether it is a fresh ACT at all, which is a different thing and the reason
188
249
  // it is its own predicate.
189
250
  // COMPOSITION BITES THE TWO BINDINGS THAT REACH THE TARGET SEARCH, which is
190
- // why it cannot be folded into `reachesTargetSearch`: `⏎` and `Escape` are
191
- // exactly the two that reach a focused search box, and exactly the two an IME
192
- // needs while composing.
251
+ // why it cannot be folded into `survives`: `⏎` and `Escape` are exactly the
252
+ // two that reach a focused search box, and exactly the two an IME needs while
253
+ // composing.
193
254
  if (chorded(press) || composing(press) || repeated(press))
194
255
  return NONE;
195
256
  const binding = BINDINGS.get(normalize(press.key));
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/create/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/create/keys.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,23 @@
37
37
  */
38
38
  import type { EdgeKind, IssueRef } from '@issuegraph/store';
39
39
  /**
40
- * A candidate's identity, stable across a queue's life.
40
+ * A candidate's identity, stable across a queue's life — and across the SCANS of
41
+ * one host, which is a stronger requirement and a deliberate one.
42
+ *
43
+ * ## Why one queue's life is not enough
44
+ *
45
+ * A first pass is left and returned to. A shell that composes this surface has
46
+ * to know which questions the reader already decided, or a re-open re-asks every
47
+ * rejection — and the only thing it can compare across two scans is this id. So
48
+ * a host that reuses an id for a DIFFERENT finding on a later scan makes that
49
+ * question indistinguishable from one already answered, and it is silently
50
+ * dropped.
51
+ *
52
+ * The requirement is stated here rather than worked around downstream because
53
+ * the alternative deletes the feature: decisions scoped to a single scan mean
54
+ * every re-open starts from nothing. A host with no stable identity of its own
55
+ * should derive one from what it detected — the pair, the kind and the detector
56
+ * — rather than counting.
41
57
  *
42
58
  * OPAQUE TO THIS PACKAGE, and deliberately not derived from the relationship it
43
59
  * proposes. Two candidates can legitimately propose the same pair with the same
@@ -1 +1 @@
1
- {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../src/firstpass/candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;CAC9D"}
1
+ {"version":3,"file":"candidates.d.ts","sourceRoot":"","sources":["../../src/firstpass/candidates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;CAC9D"}
package/dist/index.d.ts CHANGED
@@ -128,7 +128,7 @@ export { type PickerWords } from './picker/words.ts';
128
128
  export { type PickerOptions, type PickerResult, renderPicker, } from './picker/render.ts';
129
129
  export { pickerStylesheet } from './picker/styles.ts';
130
130
  export { type CreateCommand, type CreateDraft, type CreateResult, IDLE_CREATE_DRAFT, createReducer, } from './create/draft.ts';
131
- export { type CreateInteraction, type KeyIntent, type KeyPress, type KeyboardContext, keyIntent, } from './create/keys.ts';
131
+ export { type CreateInteraction, type KeyIntent, type KeyPress, type KeyboardContext, type KindKey, KIND_KEYS, keyIntent, } from './create/keys.ts';
132
132
  export { type Bounds, type PickerPlacement, type Point, type Size, pickerPlacement, } from './create/placement.ts';
133
133
  export { type ChangeFacet, type ChangeSummary, type PlacedChip, type ReevaluateView, type SummaryPart, CHANGE_FACETS, reevaluateView, summaryOf, } from './reevaluate/view.ts';
134
134
  export { type ChangeWords } from './reevaluate/words.ts';
@@ -143,11 +143,13 @@ export { type FirstPassWords } from './firstpass/words.ts';
143
143
  export { ANSWERED_ATTRIBUTE, ANSWER_ATTRIBUTE, COMMAND_ATTRIBUTE, EVIDENCE_TOKEN_ATTRIBUTE, FOUND_ATTRIBUTE, type FirstPassOptions, type FirstPassResult, renderFirstPass, } from './firstpass/render.ts';
144
144
  export { firstPassStylesheet } from './firstpass/styles.ts';
145
145
  export { type SelectionCommand, type WorkspaceSelection, INITIAL_SELECTION, selectedEdgeId, selectedKey, selectionReducer, } from './workspace/selection.ts';
146
+ export { type FirstPassCommand, type FirstPassOutcome, type FirstPassPhase, type FirstPassState, INITIAL_FIRST_PASS, firstPassReducer, openQueueOf, } from './workspace/firstpass.ts';
146
147
  export { type RailWindow, type RailWindowOptions, RAIL_WINDOW, railWindow, } from './workspace/rail.ts';
147
148
  export { type InspectorPosition, type InspectorRelationship, type InspectorView, inspectorView, } from './workspace/inspector.ts';
148
- export { type Zone, type WorkspaceOptions, type WorkspaceResult, type WorkspaceView, type WorkspaceWords, ZONES, renderWorkspace, } from './workspace/render.ts';
149
+ export { type ConflictDiff, type ConflictIssueChange, conflictDiff, diffIsEmpty, diffWithin, } from './workspace/recovery.ts';
150
+ export { type Zone, type WorkspaceOptions, type WorkspaceRefusal, type WorkspaceRecovery, type WorkspaceResult, type WorkspaceView, type WorkspaceWords, type RecoveryWords, ZONES, renderWorkspace, } from './workspace/render.ts';
149
151
  export { workspaceStylesheet } from './workspace/styles.ts';
150
- export { type HostCommand, type HostEffect, type HostResult, type HostState, INITIAL_HOST_STATE, KINDS, RAIL_SLACK, railSlackFor, railWindowTarget, reconcileHost, reduceHost, targetMatches, } from './workspace/host.ts';
151
- export { type CanvasMode, type MountWords, type MountWorkspaceOptions, type WorkspaceHandle, type WorkspaceProjection, type WorkspaceUpdate, CANVAS_MODES, MOUNT_RAIL_COUNT, mountWorkspace, } from './workspace/mount.ts';
152
+ export { type HostCommand, type HostEffect, type HostResult, type HostState, INITIAL_HOST_STATE, RAIL_SLACK, editCarrier, railSlackFor, railWindowTarget, reconcileHost, reduceHost, targetMatches, } from './workspace/host.ts';
153
+ export { type CanvasMode, type FirstPassOption, type MountWords, type MountWorkspaceOptions, type WorkspaceHandle, type WorkspaceProjection, type WorkspaceUpdate, CANVAS_MODES, MOUNT_RAIL_COUNT, mountWorkspace, } from './workspace/mount.ts';
152
154
  export { mountStylesheet } from './workspace/chrome.ts';
153
155
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -126,7 +126,7 @@ export {} from "./picker/words.js";
126
126
  export { renderPicker, } from "./picker/render.js";
127
127
  export { pickerStylesheet } from "./picker/styles.js";
128
128
  export { IDLE_CREATE_DRAFT, createReducer, } from "./create/draft.js";
129
- export { keyIntent, } from "./create/keys.js";
129
+ export { KIND_KEYS, keyIntent, } from "./create/keys.js";
130
130
  export { pickerPlacement, } from "./create/placement.js";
131
131
  export { CHANGE_FACETS, reevaluateView, summaryOf, } from "./reevaluate/view.js";
132
132
  export {} from "./reevaluate/words.js";
@@ -140,11 +140,21 @@ export {} from "./firstpass/words.js";
140
140
  export { ANSWERED_ATTRIBUTE, ANSWER_ATTRIBUTE, COMMAND_ATTRIBUTE, EVIDENCE_TOKEN_ATTRIBUTE, FOUND_ATTRIBUTE, renderFirstPass, } from "./firstpass/render.js";
141
141
  export { firstPassStylesheet } from "./firstpass/styles.js";
142
142
  export { INITIAL_SELECTION, selectedEdgeId, selectedKey, selectionReducer, } from "./workspace/selection.js";
143
+ export { INITIAL_FIRST_PASS, firstPassReducer, openQueueOf, } from "./workspace/firstpass.js";
143
144
  export { RAIL_WINDOW, railWindow, } from "./workspace/rail.js";
144
145
  export { inspectorView, } from "./workspace/inspector.js";
146
+ export { conflictDiff, diffIsEmpty, diffWithin, } from "./workspace/recovery.js";
145
147
  export { ZONES, renderWorkspace, } from "./workspace/render.js";
146
148
  export { workspaceStylesheet } from "./workspace/styles.js";
147
- export { INITIAL_HOST_STATE, KINDS, RAIL_SLACK, railSlackFor, railWindowTarget, reconcileHost, reduceHost, targetMatches, } from "./workspace/host.js";
149
+ export { INITIAL_HOST_STATE, RAIL_SLACK,
150
+ // ON THE SURFACE BECAUSE `WorkspaceRefusal` REQUIRES WHAT IT ANSWERS. A host
151
+ // rendering without `mountWorkspace` has to say which issue each refusal is
152
+ // about, and working that out from the refused edge's endpoints is the exact
153
+ // derivation the `carrier` field exists to replace — so the answer ships
154
+ // beside the field that asks for it. ASK IT AS THE EDIT GOES OUT AND KEEP THE
155
+ // ANSWER: it reads the document, and by the time a refusal comes back the
156
+ // relationship it was about may be gone. See its own header.
157
+ editCarrier, railSlackFor, railWindowTarget, reconcileHost, reduceHost, targetMatches, } from "./workspace/host.js";
148
158
  export { CANVAS_MODES, MOUNT_RAIL_COUNT, mountWorkspace, } from "./workspace/mount.js";
149
159
  export { mountStylesheet } from "./workspace/chrome.js";
150
160
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHG;AAWH,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,mBAAmB,EAGnB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAUL,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAGL,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,kBAAkB,EAClB,eAAe,EAOf,UAAU,EACV,YAAY,EACZ,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EAGb,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAKL,UAAU,GACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAoB,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAGL,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAIL,iBAAiB,EACjB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAKL,SAAS,GACV,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAKL,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAML,aAAa,EACb,cAAc,EACd,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAoB,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAGL,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAOL,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAOL,SAAS,EACT,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAIL,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAuB,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EAGf,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAGL,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,WAAW,EACX,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAIL,aAAa,GACd,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAML,KAAK,EACL,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAKL,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAOL,YAAY,EACZ,gBAAgB,EAChB,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/overlay/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,KAAK,EAEV,KAAK,KAAK,EAIX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,eAAO,MAAM,aAAa,eAAe,CAAC;AAsB1C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;CAC7C;AAqRD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,OAAO,GAAE,cAAmB,GAC3B,YAAY,CAyCd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CAuDb"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/overlay/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,KAAK,EAEV,KAAK,KAAK,EAIX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAGL,KAAK,WAAW,EAGjB,MAAM,cAAc,CAAC;AAEtB,8EAA8E;AAC9E,eAAO,MAAM,aAAa,eAAe,CAAC;AA4B1C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAC;CAC7C;AA2TD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,OAAO,GAAE,cAAmB,GAC3B,YAAY,CAyCd;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAClC,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,CAuDb"}
@@ -91,15 +91,21 @@ const EDGE_CLASS = 'ig-edge';
91
91
  /** The class the viewer puts on a terminal marker. NEVER matched — see below. */
92
92
  const TERMINAL_CLASS = 'ig-terminal';
93
93
  /**
94
- * The class the viewer puts on a `together-with` connector.
94
+ * The class the viewer puts on a relationship BADGE.
95
95
  *
96
- * A `together-with` relationship is NOT drawn as an edge path — `graph.ts:657`
97
- * skips it outright, because it shares a rank rather than ordering anything —
98
- * so it is drawn as an enclosure plus this connector. Without matching it, one
99
- * of the five relationships could never be overlaid at all: every state on a
100
- * `together-with` came back `unattached`.
96
+ * A `together-with` relationship is NOT drawn as an edge path — it shares a
97
+ * rank rather than ordering anything, and layer 1's §16 pass draws the unit as
98
+ * ONE card with its members listed inside, so there is no line between two
99
+ * boxes left to overlay. What still carries the relationship, in every
100
+ * projection, is the badge that names it: it publishes the same
101
+ * `edgeIdentity(...)` on `data-ig-group` that the connector did.
102
+ *
103
+ * WITHOUT MATCHING IT, one of the five relationships could never be overlaid at
104
+ * all — every state on a `together-with` came back `unattached`, which is the
105
+ * exact defect the connector match was added to fix, returning by a different
106
+ * route when the connector went away.
101
107
  */
102
- const CONNECTOR_CLASS = 'ig-connector';
108
+ const BADGE_CLASS = 'ig-badge';
103
109
  /** The attribute the connector publishes its edge identity on. */
104
110
  const GROUP_ATTRIBUTE = 'data-ig-group';
105
111
  /** The accessible name the viewer gives an edge, reconstructed from its parts. */
@@ -111,8 +117,26 @@ function classesOf(attrs) {
111
117
  return typeof value === 'string' ? value.split(' ').filter((name) => name !== '') : [];
112
118
  }
113
119
  function isEdgePath(spec) {
114
- const names = classesOf(spec.attrs);
115
- return names.includes(EDGE_CLASS) || names.includes(CONNECTOR_CLASS);
120
+ return classesOf(spec.attrs).includes(EDGE_CLASS);
121
+ }
122
+ /**
123
+ * Whether this element is a relationship BADGE — the chip naming an edge.
124
+ *
125
+ * IT TAKES THE STATE ATTRIBUTES AND NONE OF THE DRAWN MARKS, and that split is
126
+ * the whole point of it being a separate test. Every mark this module draws is
127
+ * CLONED from the element it matched — a halo is a fatter copy of the stroke, a
128
+ * ghost is a dashed copy of it — and a copy of an HTML span is not a mark, it is
129
+ * a second chip. So a badge is an attachment point for what a state SAYS and
130
+ * never for what a state DRAWS.
131
+ *
132
+ * IT IS ALSO WHAT KEEPS `together-with` OVERLAYABLE. That relationship is drawn
133
+ * as no line at all — it shares a rank rather than ordering anything, and layer
134
+ * 1 draws the unit as one card with its members listed inside — so the badge is
135
+ * the only mark left that carries its identity. Without this, every state on one
136
+ * of the five relationships came back `unattached`.
137
+ */
138
+ function isEdgeBadge(spec) {
139
+ return classesOf(spec.attrs).includes(BADGE_CLASS);
116
140
  }
117
141
  /**
118
142
  * Which overlay this element carries, if any.
@@ -239,7 +263,16 @@ function overlayMarks(spec, overlay, edge, theme) {
239
263
  * from the edge every time makes a second attach a no-op, which is what a
240
264
  * caller re-rendering on every state change will do.
241
265
  */
242
- function edgeAttributes(base, overlay) {
266
+ function edgeAttributes(base, overlay,
267
+ /**
268
+ * Whether the element being written to is a drawn STROKE.
269
+ *
270
+ * `opacity` is an SVG presentation attribute. On a badge — an HTML span — it
271
+ * renders as an attribute no browser reads, so the state's dimming would
272
+ * silently not apply while the markup claimed it did. The chip is dimmed by
273
+ * the stylesheet's own state rule or not at all.
274
+ */
275
+ stroke) {
243
276
  const opacity = overlay.line?.opacity;
244
277
  return {
245
278
  [STATE_ATTRIBUTE]: overlay.attribute,
@@ -248,7 +281,7 @@ function edgeAttributes(base, overlay) {
248
281
  'aria-label': overlayLabel(base, overlay),
249
282
  // The table is the single source for this number; the stylesheet
250
283
  // deliberately carries no opacity rule for a state.
251
- ...(opacity === null || opacity === undefined ? {} : { opacity }),
284
+ ...(!stroke || opacity === null || opacity === undefined ? {} : { opacity }),
252
285
  };
253
286
  }
254
287
  /**
@@ -275,7 +308,7 @@ function overlayTree(spec, context) {
275
308
  next.push(child);
276
309
  continue;
277
310
  }
278
- if (!isEdgePath(child)) {
311
+ if (!isEdgePath(child) && !isEdgeBadge(child)) {
279
312
  next.push(overlayTree(child, context));
280
313
  continue;
281
314
  }
@@ -322,8 +355,15 @@ function overlayTree(spec, context) {
322
355
  // The marks that are genuinely per-edge — the chips, the ✕, the reason —
323
356
  // are not built here at all. They need a position this layer does not have,
324
357
  // so they travel as declared marks and are placed once by the composer.
325
- const { behind, front } = overlayMarks(child, match.overlay, edge, context.theme);
326
- next.push(...behind, { ...child, attrs: { ...child.attrs, ...edgeAttributes(edgeName(edge), match.overlay) } }, ...front);
358
+ // A BADGE TAKES THE WORDS AND NOT THE MARKS — see `isEdgeBadge`.
359
+ const stroke = isEdgePath(child);
360
+ const { behind, front } = stroke
361
+ ? overlayMarks(child, match.overlay, edge, context.theme)
362
+ : { behind: [], front: [] };
363
+ next.push(...behind, {
364
+ ...child,
365
+ attrs: { ...child.attrs, ...edgeAttributes(edgeName(edge), match.overlay, stroke) },
366
+ }, ...front);
327
367
  }
328
368
  return { ...spec, children: next };
329
369
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/overlay/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/overlay/render.ts"],"names":[],"mappings":"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"}