@issuegraph/editor 0.10.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +38 -7
  2. package/dist/a11y/baseline.d.ts.map +1 -1
  3. package/dist/a11y/baseline.js +4 -0
  4. package/dist/a11y/baseline.js.map +1 -1
  5. package/dist/audit/findings.d.ts +107 -1
  6. package/dist/audit/findings.d.ts.map +1 -1
  7. package/dist/audit/findings.js +114 -7
  8. package/dist/audit/findings.js.map +1 -1
  9. package/dist/audit/panel.d.ts +277 -0
  10. package/dist/audit/panel.d.ts.map +1 -0
  11. package/dist/audit/panel.js +462 -0
  12. package/dist/audit/panel.js.map +1 -0
  13. package/dist/audit/refused.d.ts +99 -0
  14. package/dist/audit/refused.d.ts.map +1 -0
  15. package/dist/audit/refused.js +276 -0
  16. package/dist/audit/refused.js.map +1 -0
  17. package/dist/audit/styles.d.ts +1 -1
  18. package/dist/audit/styles.d.ts.map +1 -1
  19. package/dist/audit/styles.js +428 -0
  20. package/dist/audit/styles.js.map +1 -1
  21. package/dist/audit/surface.d.ts +54 -12
  22. package/dist/audit/surface.d.ts.map +1 -1
  23. package/dist/audit/surface.js +54 -14
  24. package/dist/audit/surface.js.map +1 -1
  25. package/dist/create/draft.d.ts +19 -0
  26. package/dist/create/draft.d.ts.map +1 -1
  27. package/dist/create/draft.js +21 -0
  28. package/dist/create/draft.js.map +1 -1
  29. package/dist/create/keys.d.ts +68 -8
  30. package/dist/create/keys.d.ts.map +1 -1
  31. package/dist/create/keys.js +43 -5
  32. package/dist/create/keys.js.map +1 -1
  33. package/dist/firstpass/render.d.ts.map +1 -1
  34. package/dist/firstpass/render.js +10 -9
  35. package/dist/firstpass/render.js.map +1 -1
  36. package/dist/index.d.ts +40 -15
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +35 -13
  39. package/dist/index.js.map +1 -1
  40. package/dist/overlay/render.d.ts +11 -3
  41. package/dist/overlay/render.d.ts.map +1 -1
  42. package/dist/overlay/render.js +24 -7
  43. package/dist/overlay/render.js.map +1 -1
  44. package/dist/overlay/request.d.ts +71 -0
  45. package/dist/overlay/request.d.ts.map +1 -0
  46. package/dist/overlay/request.js +129 -0
  47. package/dist/overlay/request.js.map +1 -0
  48. package/dist/overlay/styles.d.ts +1 -1
  49. package/dist/overlay/styles.d.ts.map +1 -1
  50. package/dist/overlay/styles.js +38 -7
  51. package/dist/overlay/styles.js.map +1 -1
  52. package/dist/reevaluate/parts.d.ts +130 -0
  53. package/dist/reevaluate/parts.d.ts.map +1 -0
  54. package/dist/reevaluate/parts.js +260 -0
  55. package/dist/reevaluate/parts.js.map +1 -0
  56. package/dist/reevaluate/render.d.ts +18 -11
  57. package/dist/reevaluate/render.d.ts.map +1 -1
  58. package/dist/reevaluate/render.js +21 -135
  59. package/dist/reevaluate/render.js.map +1 -1
  60. package/dist/reevaluate/styles.d.ts +1 -1
  61. package/dist/reevaluate/styles.d.ts.map +1 -1
  62. package/dist/reevaluate/styles.js +26 -0
  63. package/dist/reevaluate/styles.js.map +1 -1
  64. package/dist/reevaluate/view.d.ts +16 -1
  65. package/dist/reevaluate/view.d.ts.map +1 -1
  66. package/dist/reevaluate/view.js +21 -1
  67. package/dist/reevaluate/view.js.map +1 -1
  68. package/dist/reevaluate/words.d.ts +7 -0
  69. package/dist/reevaluate/words.d.ts.map +1 -1
  70. package/dist/scale/ladder.d.ts +62 -6
  71. package/dist/scale/ladder.d.ts.map +1 -1
  72. package/dist/scale/ladder.js +127 -16
  73. package/dist/scale/ladder.js.map +1 -1
  74. package/dist/scale/render.d.ts +44 -0
  75. package/dist/scale/render.d.ts.map +1 -1
  76. package/dist/scale/render.js +223 -30
  77. package/dist/scale/render.js.map +1 -1
  78. package/dist/scale/styles.d.ts +11 -5
  79. package/dist/scale/styles.d.ts.map +1 -1
  80. package/dist/scale/styles.js +185 -4
  81. package/dist/scale/styles.js.map +1 -1
  82. package/dist/workspace/host.d.ts +83 -1
  83. package/dist/workspace/host.d.ts.map +1 -1
  84. package/dist/workspace/host.js +197 -4
  85. package/dist/workspace/host.js.map +1 -1
  86. package/dist/workspace/inspector.d.ts +33 -7
  87. package/dist/workspace/inspector.d.ts.map +1 -1
  88. package/dist/workspace/inspector.js +15 -0
  89. package/dist/workspace/inspector.js.map +1 -1
  90. package/dist/workspace/mount.d.ts +23 -1
  91. package/dist/workspace/mount.d.ts.map +1 -1
  92. package/dist/workspace/mount.js +605 -20
  93. package/dist/workspace/mount.js.map +1 -1
  94. package/dist/workspace/rail.d.ts +5 -2
  95. package/dist/workspace/rail.d.ts.map +1 -1
  96. package/dist/workspace/rail.js.map +1 -1
  97. package/dist/workspace/render.d.ts +390 -3
  98. package/dist/workspace/render.d.ts.map +1 -1
  99. package/dist/workspace/render.js +924 -133
  100. package/dist/workspace/render.js.map +1 -1
  101. package/dist/workspace/selection.d.ts +11 -0
  102. package/dist/workspace/selection.d.ts.map +1 -1
  103. package/dist/workspace/selection.js +10 -0
  104. package/dist/workspace/selection.js.map +1 -1
  105. package/dist/workspace/skeleton.d.ts +33 -0
  106. package/dist/workspace/skeleton.d.ts.map +1 -0
  107. package/dist/workspace/skeleton.js +56 -0
  108. package/dist/workspace/skeleton.js.map +1 -0
  109. package/dist/workspace/styles.d.ts +1 -1
  110. package/dist/workspace/styles.d.ts.map +1 -1
  111. package/dist/workspace/styles.js +931 -19
  112. package/dist/workspace/styles.js.map +1 -1
  113. package/package.json +4 -4
@@ -9,7 +9,7 @@
9
9
  * |-----------|-------------------------------------------------------|
10
10
  * | header | `auditOverlay` + `renderAuditHeader` |
11
11
  * | rail | `renderViewer(…, { projection: 'linear' })`, windowed |
12
- * | canvas | `renderScaleLadder` |
12
+ * | canvas | `canvasToolbar` + `renderScaleLadder` |
13
13
  * | inspector | `inspectorView`, rendered here |
14
14
  *
15
15
  * ## The audit left-bar is applied to the rail's SPEC, never to its markup
@@ -49,10 +49,13 @@
49
49
  * `styles.ts` writes structure against its custom properties.
50
50
  */
51
51
  import { type Theme, type ViewerDocument } from '@issuegraph/viewer';
52
- import type { EdgeId, InvalidCode, MutationId, ProjectedEdge } from '@issuegraph/store';
52
+ import type { EdgeId, InvalidCode, MutationId, OrderChange, OrderStatus, ProjectedEdge } from '@issuegraph/store';
53
53
  import type { AuditInput } from '../audit/findings.ts';
54
+ import { type AuditWords } from '../audit/panel.ts';
55
+ import { type EncodingRefusedBlockOptions } from '../audit/refused.ts';
54
56
  import { type CreateDraft } from '../create/draft.ts';
55
57
  import type { Point } from '../create/placement.ts';
58
+ import type { ChangeWords } from '../reevaluate/words.ts';
56
59
  import { type AuditOverlay } from '../audit/surface.ts';
57
60
  import { type ScaleState } from '../scale/commands.ts';
58
61
  import { type InspectorView } from './inspector.ts';
@@ -63,6 +66,67 @@ import { type WorkspaceSelection } from './selection.ts';
63
66
  export declare const ZONES: readonly ["header", "rail", "canvas", "inspector"];
64
67
  export type Zone = (typeof ZONES)[number];
65
68
  export interface WorkspaceWords {
69
+ /**
70
+ * §17c's vocabulary — the change summary's facets, its dismiss control and
71
+ * its direction words.
72
+ *
73
+ * OPTIONAL, AND ITS ABSENCE DRAWS NOTHING rather than drawing a default.
74
+ * `ChangeWords` states the doctrine and this obeys it exactly: the store
75
+ * ships the change as COUNTS so a host writes the sentence in its own
76
+ * language, and a default supplied here would take that choice back one layer
77
+ * down. So a host that has not supplied these gets no summary and no chips —
78
+ * not an English summary it cannot translate.
79
+ *
80
+ * It is the one shape that also keeps this a non-breaking addition: every
81
+ * host built against 0.12 renders exactly as it did.
82
+ */
83
+ readonly change?: ChangeWords | undefined;
84
+ /**
85
+ * What the workspace says, to assistive technology, while its first read is
86
+ * in flight — "Loading your issues". The placeholder itself has no words;
87
+ * see `renderWorkspaceSkeleton`.
88
+ *
89
+ * OPTIONAL, AND ITS ABSENCE STILL DRAWS THE PLACEHOLDER. Unlike the words
90
+ * whose absence withholds a control, this one only names a region: without
91
+ * it the surface is marked busy and says nothing, which is honest, rather
92
+ * than saying an English sentence a host cannot translate.
93
+ */
94
+ readonly loading?: string | undefined;
95
+ /**
96
+ * Reads the freshness stamp in §17a's header — the frame's `as of 14:32 ↻`,
97
+ * minus the clock.
98
+ *
99
+ * THE NUMBER IS APPENDED, NOT INTERPOLATED, exactly as {@link whyRank}'s is
100
+ * and for the reason stated there: a `{n}` template makes every host
101
+ * reimplement the substitution, which is how a package that refuses to invent
102
+ * English ships a tiny template language instead. `Freshness.asOf` and
103
+ * `Freshness.age` are the host's own strings and are printed verbatim.
104
+ *
105
+ * THE STALE FLAG CARRIES NO WORD, unlike layer 1's stamp, which appends a
106
+ * literal ` · stale`. §17a's stamp is `as of 14:32 ↻` and says nothing more,
107
+ * so staleness rides on `data-stale` for the stylesheet to treat. A word here
108
+ * would be a fourth thing to translate for a state the frame draws silently.
109
+ */
110
+ readonly asOf: string;
111
+ /**
112
+ * The noun after the backlog's total — frame 17a's `312 open`.
113
+ *
114
+ * IT WORDS `Adoption.counts.total`, WHICH IS NOT `OrderCounts`. Two different
115
+ * pairs reach this surface and only one of them is §17a's header content: the
116
+ * adoption pair says how much of the backlog is encoded, and the order pair
117
+ * (`ranked` / `readyNow` / `held`) says how the order splits. The second stays
118
+ * in the rail, where it belongs to the order it describes.
119
+ */
120
+ readonly open: string;
121
+ /**
122
+ * The noun after the encoded count — frame 17a's `64 encoded`, wording
123
+ * `Adoption.counts.declaring`.
124
+ *
125
+ * SEPARATE FROM {@link open} RATHER THAN ONE PHRASE, because the two numbers
126
+ * are the package's and the two nouns are the host's; a single string would
127
+ * have to carry both figures and would be a template again.
128
+ */
129
+ readonly encoded: string;
66
130
  /**
67
131
  * The panel's own heading — frame 17a's `INSPECTOR`.
68
132
  *
@@ -85,6 +149,32 @@ export interface WorkspaceWords {
85
149
  * command it publishes is `clear`, and that is the whole of its behaviour.
86
150
  */
87
151
  readonly clearSelection: string;
152
+ /**
153
+ * §17k's strip control while the canvas is collapsed — "open the canvas".
154
+ *
155
+ * REQUIRED, UNLIKE {@link CanvasWords}, AND THAT IS THE WHOLE REASON IT IS
156
+ * NOT IN IT. The canvas caption is optional because a surface without it
157
+ * still draws every fact; this control is the only way back out of §17k's
158
+ * strip, and a host that omitted it would ship a layout with a zone the
159
+ * reader cannot reach below `1120`. An unreachable zone is not a degraded
160
+ * caption.
161
+ *
162
+ * IT NAMES THE ZONE, NOT A DIRECTION. The strip is drawn at the canvas's own
163
+ * track, so "open" and "show" both read as acting on what is beside the word;
164
+ * the fixture and the demo both say which zone out loud, because a strip four
165
+ * characters wide, turned on its side, carries no other label.
166
+ */
167
+ readonly showCanvas: string;
168
+ /**
169
+ * The same control while the canvas is open.
170
+ *
171
+ * ITS OWN MEMBER RATHER THAN REUSING {@link showCanvas}, on
172
+ * {@link RailWords.hide}'s reasoning exactly: the control carries
173
+ * `aria-expanded`, which flips, and a label that did not flip with it would
174
+ * tell a screen-reader user the canvas is open and offer to open it in one
175
+ * breath.
176
+ */
177
+ readonly hideCanvas: string;
88
178
  /** Names the relationships list. */
89
179
  readonly relationships: string;
90
180
  /**
@@ -106,6 +196,40 @@ export interface WorkspaceWords {
106
196
  * a held unit prints the em dash rather than a number.
107
197
  */
108
198
  readonly whyHeld: string;
199
+ /**
200
+ * What the rail says when the audit filter is on and NOTHING matched it:
201
+ * §17's *"No flagged rows match."*
202
+ *
203
+ * A SEPARATE STRING FROM EVERY OTHER EMPTY SENTENCE, because it is about a
204
+ * different world. The others say the order is short; this one says the order
205
+ * is intact and the view is narrow.
206
+ */
207
+ readonly filteredEmpty: string;
208
+ /**
209
+ * The count that makes the sentence above unmisreadable: *"8 issues are
210
+ * ranked"*.
211
+ *
212
+ * A FUNCTION, WHICH IS THE ONE PLACE THIS FILE TAKES ONE, and the reason is
213
+ * the reason `whyRank` refuses to: there the number is APPENDED to a fixed
214
+ * phrase and a host can write the phrase; here the number sits INSIDE the
215
+ * sentence and its grammar moves with it — *"1 issue is ranked"* against
216
+ * *"8 issues are ranked"*. A fixed string plus a number cannot say both, and
217
+ * a `{n}` placeholder would make every host implement the substitution. So
218
+ * the host is handed the count and writes its own sentence, in its own
219
+ * language, with its own plural rule.
220
+ */
221
+ readonly filteredDenominator: (ranked: number) => string;
222
+ /** The way back out, which §17d requires be one click: *"clear the filter"*. */
223
+ readonly filteredClear: string;
224
+ /**
225
+ * What the rail says while the filter is on AND some rows still match.
226
+ *
227
+ * A SECOND HEADLINE RATHER THAN A REUSE OF `filteredEmpty`, because they are
228
+ * opposite statements: that one says nothing matched, this one says the list
229
+ * is narrowed. Saying "no flagged rows match" above three flagged rows is the
230
+ * false statement §2 wrote its ruling about.
231
+ */
232
+ readonly filteredActive: string;
109
233
  /**
110
234
  * Joins the rest of a together unit: §17a ends *"then worked with #514 as one
111
235
  * unit"*, and this is that phrase minus the members, which the package names.
@@ -132,6 +256,25 @@ export interface WorkspaceWords {
132
256
  * still reads the same field and no host supplies two.
133
257
  */
134
258
  readonly addRelationship: string;
259
+ /**
260
+ * §17a's `ADD RELATIONSHIP` heading, over the numbered kinds.
261
+ *
262
+ * NOT {@link WorkspaceWords.addRelationship}, AND THE FRAME IS WHY. That
263
+ * field is the CONTROL's label — frame 17a writes it `+ add`, on the
264
+ * relationships header row — and this is the HEADING over the five numbered
265
+ * choices, which the frame writes in full. They are two strings in the frame
266
+ * and reusing one for both would put a control's label where a section name
267
+ * belongs, in a panel whose other two headings are already section names.
268
+ *
269
+ * REQUIRED, on the same rule the three header nouns took. An optional field
270
+ * would draw the heading only for a host that opted in, leaving every other
271
+ * host with the frame's two moved placements and not its third — a panel that
272
+ * half-applies the pass this exists to complete. The usual argument for
273
+ * optional, that a host built against the previous version renders
274
+ * byte-identically, has nothing to preserve here: this release moves `+ add`
275
+ * and the kind digits for every host regardless of what it passes.
276
+ */
277
+ readonly addRelationshipHeading: string;
135
278
  /**
136
279
  * The control that abandons a draft — frame 17b's escape hatch beside the
137
280
  * numbered kind list, publishing `cancel`.
@@ -149,7 +292,7 @@ export interface WorkspaceWords {
149
292
  * subject — "relating from", read before the reference the package supplies.
150
293
  *
151
294
  * IT EXISTS BECAUSE THE TWO CAN DIVERGE AND THE DRAFT MUST STILL BE
152
- * CANCELLABLE. See {@link addStepSpec}: a draft begun by `R` on a together
295
+ * CANCELLABLE. See {@link createStep}: a draft begun by `R` on a together
153
296
  * unit's non-lead member, or one outlived by a change of selection, leaves
154
297
  * the kind step live under a panel headed by a different issue. The step is
155
298
  * drawn anyway — it carries the only pointer cancel there is — so it has to
@@ -226,6 +369,134 @@ export interface WorkspaceWords {
226
369
  * whose consequence most needs stating.
227
370
  */
228
371
  readonly recovery: RecoveryWords;
372
+ /**
373
+ * §17d's findings panel, in the host's own words.
374
+ *
375
+ * NESTED, like `recovery` and `refusals` beside it, because it is a record
376
+ * over a closed class table rather than a loose string — flattening four
377
+ * chips and four titles into this interface would put eight members here
378
+ * whose relationship to each other is only legible from their names.
379
+ */
380
+ readonly audit: AuditWords;
381
+ /**
382
+ * The canvas toolbar's words — frame 17a's caption over the graph.
383
+ *
384
+ * OPTIONAL, AND ITS ABSENCE DRAWS NO TOOLBAR, on `change`'s reasoning
385
+ * exactly: a required member here would break every host built against the
386
+ * current version, and a default supplied here would be this package writing
387
+ * an English caption for a host that may not speak English. So a host that
388
+ * has not worded the row gets the canvas it already had.
389
+ */
390
+ readonly canvas?: CanvasWords | undefined;
391
+ /**
392
+ * The order rail's footer — frame 17a's `248 with no relationships · show`.
393
+ *
394
+ * OPTIONAL, AND ITS ABSENCE DRAWS NO FOOTER, on `canvas`'s reasoning exactly:
395
+ * a required member here would break every host built against the current
396
+ * version, and a default supplied here would be this package writing English
397
+ * for a host that may not speak it.
398
+ *
399
+ * IT IS ALSO THE ONE WORDS MEMBER WHOSE PRESENCE MOVES SOMETHING IN ANOTHER
400
+ * ZONE, and that is worth stating where a host reads it. Supplying this draws
401
+ * the count and its control at the foot of the rail and turns the canvas
402
+ * ladder's own chip off, so the surface offers one control rather than two.
403
+ * The list the control opens is drawn in the CANVAS either way — the rail is
404
+ * virtualized and cannot hold it; `railFooter` records the arithmetic. The
405
+ * `isolatedChip` argument at the ladder call records why the two conditions
406
+ * are safely the same.
407
+ */
408
+ readonly rail?: RailWords | undefined;
409
+ }
410
+ /**
411
+ * Frame 17a's canvas toolbar reads `focus: #512 · 1 hop · 6 of 312 shown`, and
412
+ * every word in it is the host's.
413
+ *
414
+ * NUMBERS ARE APPENDED, NEVER INTERPOLATED, which is why this is four words
415
+ * rather than one sentence with two `{n}` holes in it. {@link
416
+ * WorkspaceWords.whyRank} states the doctrine and the reason: a template makes
417
+ * every host reimplement the substitution. The row is assembled as spans —
418
+ * `<focus> <key> · <n> <of> <total> <shown>` — so a host whose language orders
419
+ * those differently is no worse off than it is with `whyRank`, and no host has
420
+ * to parse a format string.
421
+ *
422
+ * THE DOCTRINE IS THIS INTERFACE'S, NOT THE WHOLE PACKAGE'S, and saying
423
+ * otherwise would be refuted by the markup directly beneath this row. The scale
424
+ * module writes English with numbers in it — the refusal sentence
425
+ * (`scale/ladder.ts`), the isolated chip's label, and a literal button label in
426
+ * `scale/render.ts`. That is a pre-existing inconsistency; the row follows
427
+ * `WorkspaceWords`' rule because the row is composed in the workspace, and it
428
+ * neither resolves nor extends the other one.
429
+ *
430
+ * THE FRAME'S `1 hop` IS NOT HERE, and its absence is a decision rather than an
431
+ * omission. `scaleLadder` narrows the canvas to a whole CONNECTED COMPONENT,
432
+ * not to an n-hop ball around the focus: there is no hop radius in
433
+ * `ScaleState`, in `ScaleLadder`, or in the viewer's graph projection, and a
434
+ * component can be ten hops deep. Printing `1 hop` would state a bound the
435
+ * canvas does not honour — the same defect as a rank the rail is not sure of —
436
+ * so the row prints what the ladder computed and nothing else.
437
+ */
438
+ export interface CanvasWords {
439
+ /**
440
+ * Leads the focus clause — the frame's `focus:`, minus the colon, which is
441
+ * punctuation this package draws rather than a word a host translates.
442
+ */
443
+ readonly focus: string;
444
+ /**
445
+ * Sits between the two counts: the frame's `6 OF 312`.
446
+ *
447
+ * ITS OWN MEMBER RATHER THAN PART OF `shown`, because the two numbers
448
+ * straddle it. Folding it into either neighbour would put a number in the
449
+ * middle of a host's string, which is the interpolation this interface's
450
+ * whole shape exists to avoid.
451
+ */
452
+ readonly of: string;
453
+ /** Trails the counts — the frame's `6 of 312 SHOWN`. */
454
+ readonly shown: string;
455
+ /**
456
+ * The trailing pill — the frame's `edit mode`.
457
+ *
458
+ * A STATE, NOT A CONTROL. The workspace is the editing surface and there is
459
+ * no read-only workspace to toggle into, so this names what the reader is
460
+ * looking at rather than offering to change it. It is drawn as text, never as
461
+ * a button, because a pill that looked pressable and did nothing is the dead
462
+ * control `headerControls` refuses to draw.
463
+ *
464
+ * OPTIONAL AND SEPARATELY SO, on `headerControls`' own reasoning rather than
465
+ * on this group's. `renderWorkspace` returns markup, and markup can be served
466
+ * without `mountWorkspace` — nothing on such a surface is editable, so a pill
467
+ * asserting that it is would be a claim the render layer cannot honour. The
468
+ * host knows which it built, so the host says: supply this only where the
469
+ * surface was mounted. Absent, the caption still draws and the pill does not.
470
+ */
471
+ readonly editMode?: string | undefined;
472
+ }
473
+ /**
474
+ * Frame 17a's rail footer reads `248 with no relationships · show`, and every
475
+ * word in it is the host's.
476
+ *
477
+ * NUMBERS ARE APPENDED, NEVER INTERPOLATED — {@link CanvasWords} states the
478
+ * doctrine and {@link WorkspaceWords.whyRank} the reason. The row is assembled
479
+ * as spans, `<count> <isolated>`, so a host is never handed a format string.
480
+ *
481
+ * `IsolatedChip.label` IS NOT REUSED, and the reason is the one `CanvasWords`
482
+ * already records: the scale module writes English with numbers in it, that is
483
+ * a pre-existing inconsistency, and a row composed in the workspace follows the
484
+ * workspace's rule rather than inheriting it. Reusing the label here would have
485
+ * been the cheaper line and would have imported the defect.
486
+ */
487
+ export interface RailWords {
488
+ /** Trails the count — the frame's `248 WITH NO RELATIONSHIPS`. */
489
+ readonly isolated: string;
490
+ /** The toggle while the list is closed — the frame's `show`. */
491
+ readonly show: string;
492
+ /**
493
+ * The toggle while the list is open.
494
+ *
495
+ * ITS OWN MEMBER RATHER THAN REUSING `show`. The control carries
496
+ * `aria-expanded`, which flips; a label that did not flip with it would tell
497
+ * a screen-reader user the list is open and offer to open it in one breath.
498
+ */
499
+ readonly hide: string;
229
500
  }
230
501
  export interface RecoveryWords {
231
502
  /** Names the state on a failed card. */
@@ -411,11 +682,43 @@ export interface WorkspaceOptions {
411
682
  * not invent an English sentence, and a default would be one.
412
683
  */
413
684
  readonly words: WorkspaceWords;
685
+ /**
686
+ * The store's `lastChange` — what the last landed edit did to the order.
687
+ *
688
+ * ABSENT MEANS NO EDIT HAS LANDED TO REPORT, which is not the same as an edit
689
+ * that landed and moved nothing. The second is a `change` whose summary is
690
+ * `unchanged`, and §17c draws it in the summary's own place because "landed
691
+ * and moved nothing" is the finding an owner auditing an encoding most needs.
692
+ */
693
+ readonly change?: OrderChange | null | undefined;
694
+ /**
695
+ * The store's `order.status`. `held` labels the rail and greys it one step.
696
+ *
697
+ * THE RANKS DRAWN ARE STILL THE ONES THE CALLER VOUCHED FOR. This says the
698
+ * order is being re-evaluated; it does not re-rank anything, and nothing in
699
+ * this render moves a row because a write is in flight. §122's rule —
700
+ * optimistic rendering yes, optimistic re-ORDERING no — is held by there
701
+ * being no code path here that reorders at all.
702
+ */
703
+ readonly orderStatus?: OrderStatus | undefined;
414
704
  readonly selection?: WorkspaceSelection | undefined;
415
705
  /** The ladder's reader position — search, focus, opened isolates. */
416
706
  readonly scale?: ScaleState | undefined;
417
707
  /** Which slice of the order the rail draws. See {@link railWindow}. */
418
708
  readonly rail?: RailWindowOptions | undefined;
709
+ /**
710
+ * The rail rows whose provenance is open, by lead key.
711
+ *
712
+ * §16f's `→ expands provenance` names a per-row state, and the VIEWER CANNOT
713
+ * HOLD ONE: it is a pure renderer, re-run from scratch on every change. So
714
+ * the host owns the set and hands it back in, exactly as `selection` is.
715
+ *
716
+ * ONLY THE RAIL READS IT. The canvas draws stations rather than rows and has
717
+ * no provenance to open, and §17j already shows provenance inline on the wide
718
+ * panel — where the expand affordance would be a control for something
719
+ * already visible.
720
+ */
721
+ readonly expanded?: readonly string[] | undefined;
419
722
  /**
420
723
  * The audit's input, when the host has one.
421
724
  *
@@ -438,6 +741,73 @@ export interface WorkspaceOptions {
438
741
  * Ignored with no audit, because there is nothing to filter by.
439
742
  */
440
743
  readonly auditFiltered?: boolean | undefined;
744
+ /**
745
+ * Whether §17d's audit overlay is open.
746
+ *
747
+ * SEPARATE FROM `auditFiltered`, and they used to be one thing. The header
748
+ * count was the filter toggle; `RULINGS.md` §3 makes it this overlay's anchor
749
+ * and moves the filter into the panel head, so the two states are now two
750
+ * questions: which rows the rail shows, and whether the panel is on screen.
751
+ *
752
+ * Ignored with no audit, because there is no panel to open.
753
+ */
754
+ readonly auditOpen?: boolean | undefined;
755
+ /**
756
+ * Whether §17k's collapsed canvas has been opened — `HostState.canvasOpen`.
757
+ *
758
+ * PUBLISHED AS AN ATTRIBUTE ON THE SURFACE ROOT, and read only by the
759
+ * stylesheet's narrow block. Nothing here decides whether the canvas IS a
760
+ * strip: that is a question about the box the surface was given, the
761
+ * container query is the only party that can answer it, and §17k's
762
+ * implementation note is explicit that the package must not ask the window
763
+ * instead. So this says what the reader asked for and the sheet says whether
764
+ * it is currently drawn.
765
+ *
766
+ * Absent means shut, which is §17k's resting state for the strip.
767
+ */
768
+ readonly canvasOpen?: boolean | undefined;
769
+ /**
770
+ * Whether the reader has dismissed §17k's lifted inspector —
771
+ * `HostState.inspectorDismissed`.
772
+ *
773
+ * COMBINED WITH THE SELECTION, NEVER READ ALONE. §17k opens the lifted panel
774
+ * "by selection", so the attribute this becomes is `lifted` only when
775
+ * something is selected AND the reader has not pressed Escape since. A render
776
+ * with nothing selected draws the panel dismissed however this is set, which
777
+ * is what keeps an empty "nothing selected" card from floating over the
778
+ * canvas at the middle width.
779
+ *
780
+ * Ignored at the two other widths, where the inspector is a zone.
781
+ */
782
+ readonly inspectorDismissed?: boolean | undefined;
783
+ /**
784
+ * Take over §17j's rail density, instead of letting the rail's own box decide.
785
+ *
786
+ * FORWARDED, NOT INVENTED. `@issuegraph/viewer` owns the rule and the
787
+ * default: the rail reads its density off the column it was given, and the
788
+ * crossover it uses — `430px` — is that package's default rather than a
789
+ * figure Design published. This exists so a consumer of the EDITOR can reach
790
+ * the same escape hatch without rendering the rail themselves.
791
+ *
792
+ * THE WORKSPACE ITSELF NEEDS IT FOR NOTHING. §17k holds the rail at one
793
+ * measure now — 390 at every width, which is the rule §17k states outright —
794
+ * so this surface never crosses the threshold and never has an opinion. It is
795
+ * threaded for the host's sake, and absent it changes nothing.
796
+ */
797
+ readonly railDensity?: 'dense' | 'wide' | undefined;
798
+ /**
799
+ * Where an issue lives in the host's own world, for §17d's refused block.
800
+ *
801
+ * THE HOST'S ANSWER BECAUSE IT IS THE ONLY PARTY THAT HAS ONE. A store ref is
802
+ * opaque in here and this package holds no repository identity, so a URL is
803
+ * supplied rather than derived. Absent, `null`, or a scheme the viewer's
804
+ * allowlist refuses all mean the same thing — no link is drawn. See
805
+ * {@link EncodingRefusedBlockOptions.issueUrl}, which owns that rule and the
806
+ * reason an `href` cannot be trusted to escaping alone.
807
+ *
808
+ * Ignored with no audit, because a refusal arrives on the audit's input.
809
+ */
810
+ readonly issueUrl?: EncodingRefusedBlockOptions['issueUrl'];
441
811
  readonly theme?: Theme | undefined;
442
812
  /** The selector the theme's custom properties are written onto. */
443
813
  readonly themeSelector?: string | undefined;
@@ -518,6 +888,23 @@ export interface WorkspaceOptions {
518
888
  * answers "closed" and the control cannot complete what it advertises.
519
889
  */
520
890
  readonly diffOpen?: MutationId | null | undefined;
891
+ /**
892
+ * A value unique to this surface, used to bind §17a's rail footer to the
893
+ * isolated list the canvas draws.
894
+ *
895
+ * SUPPLIED BY WHOEVER KNOWS THE PAGE. The footer's toggle and the list are in
896
+ * different zones, so the toggle names the list with `aria-controls` — and an
897
+ * id invented in here would be emitted twice by a host rendering two
898
+ * workspaces, leaving the second toggle pointing at the first surface's list.
899
+ * `scale/render.ts`'s `searchSpec` records the same hazard for its own label.
900
+ *
901
+ * ABSENT, NO ASSOCIATION IS DRAWN, and that is the honest default rather than
902
+ * a degraded one: `mountWorkspace` mints a value per mount, and markup served
903
+ * WITHOUT a mount is not operable anyway — the same argument
904
+ * `CanvasWords.editMode` is optional under. A toggle nobody can press needs no
905
+ * `aria-controls`.
906
+ */
907
+ readonly surfaceId?: string | undefined;
521
908
  }
522
909
  export interface WorkspaceView {
523
910
  readonly selection: WorkspaceSelection;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"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"}