@issuegraph/editor 0.1.0 → 0.2.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.
- package/README.md +4 -2
- package/dist/audit/findings.d.ts +5 -2
- package/dist/audit/findings.d.ts.map +1 -1
- package/dist/audit/findings.js +33 -1
- package/dist/audit/findings.js.map +1 -1
- package/dist/firstpass/batch.d.ts +10 -0
- package/dist/firstpass/batch.d.ts.map +1 -1
- package/dist/firstpass/batch.js +26 -7
- package/dist/firstpass/batch.js.map +1 -1
- package/dist/scale/ladder.d.ts +6 -0
- package/dist/scale/ladder.d.ts.map +1 -1
- package/dist/scale/ladder.js +13 -0
- package/dist/scale/ladder.js.map +1 -1
- package/dist/workspace/rail.d.ts.map +1 -1
- package/dist/workspace/rail.js +11 -0
- package/dist/workspace/rail.js.map +1 -1
- package/dist/workspace/render.d.ts.map +1 -1
- package/dist/workspace/render.js +65 -5
- package/dist/workspace/render.js.map +1 -1
- package/dist/workspace/styles.d.ts +1 -1
- package/dist/workspace/styles.d.ts.map +1 -1
- package/dist/workspace/styles.js +20 -0
- package/dist/workspace/styles.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ The canvas is a **local** instrument — it answers "what surrounds this issue"
|
|
|
51
51
|
| Nodes | Behaviour |
|
|
52
52
|
|---|---|
|
|
53
53
|
| ≤ `GRAPH_NODE_BUDGET` | draw the neighbourhood |
|
|
54
|
-
| up to `CLUSTER_ONLY_BUDGET` | component **capsules** — size, `blocked-by` count, chain depth, cycle flag |
|
|
54
|
+
| up to `CLUSTER_ONLY_BUDGET` | component **capsules** — size, `blocked-by` count, chain depth, cycle flag (the host's `ViewerDocument.cycles`, the same reader answer the audit reads) |
|
|
55
55
|
| beyond it | capsules truncated, and **search leads** |
|
|
56
56
|
|
|
57
57
|
Both thresholds are the viewer's own exports, read rather than restated, so the ladder and the canvas cannot disagree about what "past budget" means.
|
|
@@ -193,7 +193,7 @@ Which bindings reach `target-search` is **data on the binding table**, so no cal
|
|
|
193
193
|
|
|
194
194
|
**A `together-with` edge needs no special case.** The viewer gives its connector an *edge* identity precisely because an enclosure has no line to click, so by the time a selection arrives here it is an ordinary edge id and `⌫` and `T` work on it unchanged.
|
|
195
195
|
|
|
196
|
-
**Validity stays in the store.** These modules emit intent; `structuralRefusal` owns `self-edge`, `duplicate-edge` and `
|
|
196
|
+
**Validity stays in the store.** These modules emit intent; `structuralRefusal` owns `self-edge`, `duplicate-edge`, `unknown-issue` and `cardinality`. A second validity rule out here is exactly what `picker/view.ts` refused, and for the same reason.
|
|
197
197
|
|
|
198
198
|
## The three-zone workspace
|
|
199
199
|
|
|
@@ -209,6 +209,8 @@ The window is an **offset**, not a rank, because a held slot has `rank: null` an
|
|
|
209
209
|
|
|
210
210
|
**The issues and edges are windowed alongside the slots**, down to exactly what the drawn rows need. Keeping the whole issue list is the obvious thing and it is wrong: the linear projection renders a count of the keys that appear in no slot and on no edge, so every edgeless issue outside the window was reported to the reader as *isolated* — the rail describing the reader's scroll position as though it were the document.
|
|
211
211
|
|
|
212
|
+
**A hold's holder is a control.** The inspector lists the selected issue's holds with `data-code` and `data-subject` mirroring layer 1's `holdLine`, and renders a `subject` — the open blocker, the claimed peer, the unready member, routinely not among the members drawn — as a `select-issue` button naming it — when the document carries that key; an unresolvable reference names an issue no document has, and gets the attribute but no control — so the holder becomes a deep link into the one selection below rather than a name in a sentence.
|
|
213
|
+
|
|
212
214
|
**Selection is one value, shared, never copied.** §17b makes `selected` the only edge state that also filters the inspector, so the workspace owns exactly one `WorkspaceSelection` and each zone reads it. It is a discriminated union rather than two nullable fields for a reason worth stating: `{ issue, edge }` can represent *both at once*, which is not a state this design has — every reader would need a rule for it, and the bug would surface as two zones disagreeing about what is selected rather than as a type error.
|
|
213
215
|
|
|
214
216
|
A selection naming a **member** of a `together-with` unit resolves to that unit's lead, because the unit is one row and `ViewerSlot.lead` is documented as the detail surface's subject — the projections canonicalize the same way before drawing, so all three zones name one issue for one selection.
|
package/dist/audit/findings.d.ts
CHANGED
|
@@ -123,8 +123,11 @@ export interface AuditFinding {
|
|
|
123
123
|
readonly keepAsHistory: boolean;
|
|
124
124
|
/**
|
|
125
125
|
* Every issue the finding is about: a SET, sorted, with no ref twice. A cycle
|
|
126
|
-
* names its whole component;
|
|
127
|
-
* of the edge that produced
|
|
126
|
+
* names its whole component; an encoding refusal names one issue; a stale
|
|
127
|
+
* blocker names the two ends of the edge that produced it; a dead duplicate
|
|
128
|
+
* ref names those two AND the closed canonical the chain resolves to, when
|
|
129
|
+
* that is a third issue — see {@link deadDuplicateFindings} for why the two
|
|
130
|
+
* edge classes differ here.
|
|
128
131
|
*
|
|
129
132
|
* Both properties are established where a finding is built, not merely
|
|
130
133
|
* expected — the row grammar counts an entry per member, so a repeated ref
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/audit/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,aAAa,+EAKf,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa;AACvB,8EAA8E;AAC5E,aAAa;AACf,0EAA0E;GACxE,WAAW;AACb,kEAAkE;GAChE,YAAY;AACd,qDAAqD;GACnD,kBAAkB,CAAC;AAEvB,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EASoC,CAAC;AAGnE,+EAA+E;AAC/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC
|
|
1
|
+
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/audit/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,aAAa,+EAKf,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa;AACvB,8EAA8E;AAC5E,aAAa;AACf,0EAA0E;GACxE,WAAW;AACb,kEAAkE;GAChE,YAAY;AACd,qDAAqD;GACnD,kBAAkB,CAAC;AAEvB,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EASoC,CAAC;AAGnE,+EAA+E;AAC/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,CAAC;CACnE;AAsbD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,YAAY,EAAE,CAUxE"}
|
package/dist/audit/findings.js
CHANGED
|
@@ -261,6 +261,17 @@ function staleBlockerFindings(document, graph, refused) {
|
|
|
261
261
|
continue;
|
|
262
262
|
const effective = verdict.effective;
|
|
263
263
|
const via = effective === edge.to ? '' : ` (via ${edge.to}, which duplicates it)`;
|
|
264
|
+
// THE TWO ENDS ONLY — the effective canonical is named in `detail` and
|
|
265
|
+
// deliberately NOT in `members`, which is the opposite of what
|
|
266
|
+
// `deadDuplicateFindings` does, and the asymmetry is decided rather than
|
|
267
|
+
// inherited. This finding's remedy sits on the DECLARER's edge — clear it,
|
|
268
|
+
// or keep it as history — so the row a reader acts on is `edge.from`, and
|
|
269
|
+
// `edge.to` is the ref they wrote. The canonical is where `edge.to`'s work
|
|
270
|
+
// went, not where this edge's bookkeeping is; marking its row would put a
|
|
271
|
+
// `misleading` bar on a closed issue with nothing to do there. And the
|
|
272
|
+
// spelling shape that forced the dead-duplicate change cannot reach here:
|
|
273
|
+
// a target the document does not carry is never resolved on the `'to'`
|
|
274
|
+
// side, so the finding is withheld as unknown rather than mis-membered.
|
|
264
275
|
findings.push(finding('stale-blocker', [edge.from, edge.to].sort(), `${edge.from} is blocked-by ${effective}${via}, which is closed; readiness is already satisfied`));
|
|
265
276
|
}
|
|
266
277
|
return findings.sort((a, b) => compareMembers(a.members, b.members));
|
|
@@ -281,6 +292,26 @@ function staleBlockerFindings(document, graph, refused) {
|
|
|
281
292
|
* The fallback to the immediate target covers a chain the model could not
|
|
282
293
|
* resolve, where `duplicateCanonical` answers `null`. Reporting on what the
|
|
283
294
|
* edge itself names is the fail-safe direction for a `dangerous` class.
|
|
295
|
+
*
|
|
296
|
+
* THE MEMBERS NAME THE CANONICAL AS WELL AS THE EDGE'S TWO ENDS. The closed
|
|
297
|
+
* canonical is the issue whose state this finding asserts — "its work is
|
|
298
|
+
* tracked nowhere" is a fact about where the chain ENDS — so it is what the
|
|
299
|
+
* finding is about, and the overlay can only mark a row it is handed. Naming
|
|
300
|
+
* the two ends alone left the closed target's row bare in the shape that
|
|
301
|
+
* matters most: the document carries the issue under its BARE ref while the
|
|
302
|
+
* edge names it QUALIFIED (`a duplicate-of acme/app#2`, carried as `2`). The
|
|
303
|
+
* host translates that correctly, so the finding fires — but `acme/app#2` is
|
|
304
|
+
* a spelling the overlay does not carry, it is dropped, and the one row the
|
|
305
|
+
* finding is centrally about carried no bar. The detector cannot tell a
|
|
306
|
+
* spelling from a hop, and does not need to: the canonical is a member in
|
|
307
|
+
* both, the immediate target stays a member because it is the ref the author
|
|
308
|
+
* wrote and the row they will look at, and a set collapses the ordinary
|
|
309
|
+
* same-spelling case back to two.
|
|
310
|
+
*
|
|
311
|
+
* In a resolved chain (`a -> b -> c`, `c` closed) this names `c` on `a`'s
|
|
312
|
+
* finding too. That row was already marked by `b`'s own finding, so nothing
|
|
313
|
+
* newly appears on the rail; what changes is that `a`'s finding now says
|
|
314
|
+
* on `c` what its `detail` already said. One rule, not a spelling special case.
|
|
284
315
|
*/
|
|
285
316
|
function deadDuplicateFindings(document, graph, refused) {
|
|
286
317
|
const closed = closedRefs(document);
|
|
@@ -295,7 +326,8 @@ function deadDuplicateFindings(document, graph, refused) {
|
|
|
295
326
|
continue;
|
|
296
327
|
const canonical = verdict.effective;
|
|
297
328
|
const via = canonical === edge.to ? '' : ` (through ${edge.to})`;
|
|
298
|
-
|
|
329
|
+
// `finding` deduplicates, so the same-spelling case stays two members.
|
|
330
|
+
findings.push(finding('dead-duplicate-ref', [edge.from, edge.to, canonical].sort(), `${edge.from} is duplicate-of ${canonical}${via}, which is closed; its work is excluded from the order and tracked nowhere`));
|
|
299
331
|
}
|
|
300
332
|
return findings.sort((a, b) => compareMembers(a.members, b.members));
|
|
301
333
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/audit/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,OAAO;IACP,eAAe;IACf,oBAAoB;IACpB,kBAAkB;CACV,CAAC,CAAC;AA6CZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAClF,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IAC/F,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC;QAChC,QAAQ,EAAE,kBAAkB;QAC5B,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,KAAK;KACrB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;CAClF,CAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/audit/findings.ts"],"names":[],"mappings":"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"}
|
|
@@ -107,6 +107,16 @@ export type BatchRefusal =
|
|
|
107
107
|
| {
|
|
108
108
|
readonly reason: 'direction-not-applicable';
|
|
109
109
|
readonly kind: EdgeKind;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A `from-anchor` star of a single-valued directed kind: the anchor would
|
|
113
|
+
* carry one reference per member, and the field holds one (§4.3). Decidable
|
|
114
|
+
* from the request alone — no document is consulted — which is what keeps
|
|
115
|
+
* it this module's rather than `structuralRefusal`'s.
|
|
116
|
+
*/
|
|
117
|
+
| {
|
|
118
|
+
readonly reason: 'anchor-cannot-carry';
|
|
119
|
+
readonly kind: EdgeKind;
|
|
110
120
|
};
|
|
111
121
|
/**
|
|
112
122
|
* THERE IS NO `unknown-kind` REFUSAL, and its absence is deliberate.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/firstpass/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;AAEzD,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY;AACtB,wDAAwD;AACtD;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACnC,0DAA0D;GACxD;IAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpE,iFAAiF;GAC/E;IAAE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/firstpass/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;AAEzD,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY;AACtB,wDAAwD;AACtD;IAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AACnC,0DAA0D;GACxD;IAAE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpE,iFAAiF;GAC/E;IAAE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE;AAC1E;;;;;GAKG;GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAC;IACxC,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAuB3D;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAsC7D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,SAAS,GAAG,IAAI,CAWlB"}
|
package/dist/firstpass/batch.js
CHANGED
|
@@ -58,14 +58,18 @@
|
|
|
58
58
|
* for the answer to drift. This module refuses only what it alone can see:
|
|
59
59
|
* whether the REQUEST names a batch at all.
|
|
60
60
|
*/
|
|
61
|
-
import { isSymmetricEdgeField } from '@issuegraph/core';
|
|
61
|
+
import { EDGE_CARDINALITY, isSymmetricEdgeField } from '@issuegraph/core';
|
|
62
62
|
/** One edge of the star, in the direction the request asked for. */
|
|
63
63
|
function edgeFor(anchor, member, kind, direction) {
|
|
64
64
|
// A SYMMETRIC KIND STILL LANDS AS AN ORDERED PAIR, which is not a
|
|
65
65
|
// contradiction: `create/draft.ts` records why the store keeps the pair for
|
|
66
66
|
// symmetric kinds too — an editor has to know which issue carries the field.
|
|
67
|
-
// `
|
|
68
|
-
//
|
|
67
|
+
// `to-anchor` is the arm a symmetric request takes: each MEMBER carries the
|
|
68
|
+
// field, pointing at the anchor, which is how a writer joins a group (§4.3.4,
|
|
69
|
+
// §4.3.7 — point at one existing member) and the only star the format can
|
|
70
|
+
// hold, because `serialize-with` and `together-with` are single-valued. An
|
|
71
|
+
// earlier revision put every arm on the anchor, and the store's `cardinality`
|
|
72
|
+
// refusal then admitted exactly one of them.
|
|
69
73
|
return direction === 'from-anchor'
|
|
70
74
|
? { op: 'create', kind, from: anchor, to: member }
|
|
71
75
|
: { op: 'create', kind, from: member, to: anchor };
|
|
@@ -87,11 +91,26 @@ export function planBatch(request) {
|
|
|
87
91
|
if (!symmetric && direction === undefined) {
|
|
88
92
|
return { ok: false, refusal: { reason: 'direction-required', kind } };
|
|
89
93
|
}
|
|
90
|
-
//
|
|
94
|
+
// A DIRECTED SINGLE-VALUED KIND CANNOT FAN OUT FROM THE ANCHOR. `duplicate-of`
|
|
95
|
+
// and `decomposed-from` hold one reference, so `from-anchor` asks the anchor
|
|
96
|
+
// to carry N of them — a star the format cannot hold, whatever the document
|
|
97
|
+
// says, so it is refused here as a request shape rather than left for the
|
|
98
|
+
// store to refuse one arm at a time after the first lands. `blocked-by` is
|
|
99
|
+
// the list and fans out either way. Read from the vocabulary, not listed:
|
|
100
|
+
// a sixth single-valued field is covered the day core learns about it.
|
|
101
|
+
// ONE DISTINCT MEMBER IS ONE REFERENCE, and that is legal — a batch of one
|
|
102
|
+
// is a batch the API accepts, so the refusal is keyed on the count the
|
|
103
|
+
// anchor would carry, not on the direction alone.
|
|
104
|
+
if (direction === 'from-anchor' &&
|
|
105
|
+
EDGE_CARDINALITY[kind] === 'single' &&
|
|
106
|
+
new Set(members).size > 1) {
|
|
107
|
+
return { ok: false, refusal: { reason: 'anchor-cannot-carry', kind } };
|
|
108
|
+
}
|
|
109
|
+
// `direction ?? 'to-anchor'` rather than a non-null assertion: the checks
|
|
91
110
|
// above make the fallback unreachable for a directed kind, and it is the
|
|
92
|
-
// arm a symmetric kind takes
|
|
93
|
-
// cast, which the strict-TypeScript rule forbids.
|
|
94
|
-
const pointing = direction ?? '
|
|
111
|
+
// arm a symmetric kind takes — see `edgeFor` — so the expression is total
|
|
112
|
+
// without a cast, which the strict-TypeScript rule forbids.
|
|
113
|
+
const pointing = direction ?? 'to-anchor';
|
|
95
114
|
const proposals = members.map((member) => edgeFor(anchor, member, kind, pointing));
|
|
96
115
|
return { ok: true, plan: { proposals, count: proposals.length, kind, anchor } };
|
|
97
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/firstpass/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/firstpass/batch.ts"],"names":[],"mappings":"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"}
|
package/dist/scale/ladder.d.ts
CHANGED
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
* input space drifts from the canvas it is describing — the exact failure the
|
|
27
27
|
* package split exists to prevent — and the two would eventually disagree about
|
|
28
28
|
* whether a component contains a cycle while both were rendered on one screen.
|
|
29
|
+
*
|
|
30
|
+
* The cycle flag goes one layer further down the same rule: the viewer does
|
|
31
|
+
* not derive it either. `clustersOf` reads `ViewerDocument.cycles`, which the
|
|
32
|
+
* host fills from its reader's `Model.cycles` — the same array the audit
|
|
33
|
+
* overlay on this screen reads — so a capsule's `cycle` badge and an audit's
|
|
34
|
+
* `cycle` finding are one answer rendered twice, not two answers.
|
|
29
35
|
*/
|
|
30
36
|
import { type ViewerDocument, type ViewerIssue } from '@issuegraph/viewer';
|
|
31
37
|
import { type ScaleState } from './commands.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"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"}
|
package/dist/scale/ladder.js
CHANGED
|
@@ -26,6 +26,12 @@
|
|
|
26
26
|
* input space drifts from the canvas it is describing — the exact failure the
|
|
27
27
|
* package split exists to prevent — and the two would eventually disagree about
|
|
28
28
|
* whether a component contains a cycle while both were rendered on one screen.
|
|
29
|
+
*
|
|
30
|
+
* The cycle flag goes one layer further down the same rule: the viewer does
|
|
31
|
+
* not derive it either. `clustersOf` reads `ViewerDocument.cycles`, which the
|
|
32
|
+
* host fills from its reader's `Model.cycles` — the same array the audit
|
|
33
|
+
* overlay on this screen reads — so a capsule's `cycle` badge and an audit's
|
|
34
|
+
* `cycle` finding are one answer rendered twice, not two answers.
|
|
29
35
|
*/
|
|
30
36
|
import { CLUSTER_ONLY_BUDGET, GRAPH_NODE_BUDGET, clustersOf, normalizeDocument, } from '@issuegraph/viewer';
|
|
31
37
|
import { INITIAL_SCALE_STATE } from "./commands.js";
|
|
@@ -88,6 +94,13 @@ function narrow(input, keep) {
|
|
|
88
94
|
slots: input.order.slots.filter((slot) => slot.members.every((member) => keep.has(member))),
|
|
89
95
|
excluded: input.order.excluded.filter((exclusion) => keep.has(exclusion.key)),
|
|
90
96
|
},
|
|
97
|
+
// NARROWED, NOT RE-DERIVED — as `normalizeDocument` narrows a cycle to the
|
|
98
|
+
// keys it carries. A cycle is the host's answer; a focus keeps the members
|
|
99
|
+
// it draws and drops the rest, and a partial cycle is still a stuck group
|
|
100
|
+
// (`ViewerCycle` says so), so `hasCycle` on the drawn component is unchanged.
|
|
101
|
+
cycles: input.cycles
|
|
102
|
+
.map((cycle) => cycle.filter((member) => keep.has(member)))
|
|
103
|
+
.filter((cycle) => cycle.length > 0),
|
|
91
104
|
};
|
|
92
105
|
}
|
|
93
106
|
/**
|
package/dist/scale/ladder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rail.d.ts","sourceRoot":"","sources":["../../src/workspace/rail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IAC7D,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACxD;AA4BD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,iBAAsB,GAC9B,UAAU,
|
|
1
|
+
{"version":3,"file":"rail.d.ts","sourceRoot":"","sources":["../../src/workspace/rail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;IAC7D,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACxD;AA4BD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,iBAAsB,GAC9B,UAAU,CA2IZ"}
|
package/dist/workspace/rail.js
CHANGED
|
@@ -193,6 +193,17 @@ export function railWindow(raw, options = {}) {
|
|
|
193
193
|
issues: input.issues.filter((issue) => keep.has(issue.key)),
|
|
194
194
|
edges,
|
|
195
195
|
order: { slots: rows, excluded: input.order.excluded },
|
|
196
|
+
// NARROWED TO THE WINDOW, exactly as the edges are. The viewer drops a cycle
|
|
197
|
+
// member it does not carry WITH A DIAGNOSTIC, and this document carries only
|
|
198
|
+
// the window — so relaying the host's cycles whole made every scroll
|
|
199
|
+
// position past a stuck group publish "malformed document" lines about rows
|
|
200
|
+
// nobody asked to see. Measured: a four-issue cycle outside a two-row
|
|
201
|
+
// window produced four diagnostics, and none with no window. Nothing is
|
|
202
|
+
// lost by narrowing: the rail's projection draws no capsule, so it reads no
|
|
203
|
+
// cycle at all; the answer stays whole in the document the ladder reads.
|
|
204
|
+
cycles: input.cycles
|
|
205
|
+
.map((cycle) => cycle.filter((member) => keep.has(member)))
|
|
206
|
+
.filter((cycle) => cycle.length > 0),
|
|
196
207
|
};
|
|
197
208
|
// BY IDENTITY, so a document carrying the same connector twice reports one
|
|
198
209
|
// drop rather than two — and counted over the edges that did NOT survive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rail.js","sourceRoot":"","sources":["../../src/workspace/rail.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rail.js","sourceRoot":"","sources":["../../src/workspace/rail.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAIL,KAAK,KAAK,EACV,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EAIL,KAAK,KAAK,EACV,KAAK,cAAc,EAUpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,sBAAsB,CAAC;AAI5E,OAAO,EAA8B,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAc,MAAM,WAAW,CAAC;AAChF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,gBAAgB,CAAC;AAGxB,iFAAiF;AACjF,eAAO,MAAM,KAAK,oDAAoE,CAAC;AAEvF,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,oCAAoC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACpD,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAoRD,0EAA0E;AAC1E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAqKjB"}
|
package/dist/workspace/render.js
CHANGED
|
@@ -178,7 +178,7 @@ function relationshipSpec(relationship) {
|
|
|
178
178
|
]),
|
|
179
179
|
]);
|
|
180
180
|
}
|
|
181
|
-
function inspectorSpec(view, words) {
|
|
181
|
+
function inspectorSpec(view, words, known, leadOf) {
|
|
182
182
|
const subject = view.subject;
|
|
183
183
|
return element('div', { class: 'ig-inspector', 'data-subject': subject.kind }, [
|
|
184
184
|
subject.kind === 'none'
|
|
@@ -200,9 +200,7 @@ function inspectorSpec(view, words) {
|
|
|
200
200
|
[subject.position.rank === null ? '—' : String(subject.position.rank)]),
|
|
201
201
|
subject.position === null || subject.position.holds.length === 0
|
|
202
202
|
? null
|
|
203
|
-
: element('ul', { class: 'ig-inspector-holds' }, subject.position.holds.map((hold) =>
|
|
204
|
-
hold.reason,
|
|
205
|
-
]))),
|
|
203
|
+
: element('ul', { class: 'ig-inspector-holds' }, subject.position.holds.map((hold) => holdRow(hold, known, (key) => leadOf.get(key) === leadOf.get(subject.issue.key)))),
|
|
206
204
|
])
|
|
207
205
|
: null,
|
|
208
206
|
element('div', { class: 'ig-inspector-relationships', 'data-filtered': view.filtered ? 'true' : 'false' }, [
|
|
@@ -216,6 +214,62 @@ function inspectorSpec(view, words) {
|
|
|
216
214
|
]),
|
|
217
215
|
]);
|
|
218
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* One hold in the inspector, with its cause and its subject on the markup.
|
|
219
|
+
*
|
|
220
|
+
* THE SUBJECT IS A CONTROL, NOT A SPAN. A held slot's holder is routinely not
|
|
221
|
+
* among the members drawn — an ordinary blocker never is, a claimed serialize
|
|
222
|
+
* peer sits in another component, an unresolvable reference is nowhere — so
|
|
223
|
+
* before this the sentence was the only place the holder was named, and a
|
|
224
|
+
* reader had to find it by hand. Publishing `select-issue` on it makes the
|
|
225
|
+
* holder a deep link into the ONE selection every zone shares: the rail and
|
|
226
|
+
* the canvas move to it, and the inspector re-renders on it. The same
|
|
227
|
+
* `data-ig-command` protocol the relationship rows use, and the same reducer
|
|
228
|
+
* (`selectionReducer`) answers it, so a host wires nothing new.
|
|
229
|
+
*
|
|
230
|
+
* ONLY FOR A SUBJECT THE DOCUMENT CARRIES. An unresolvable reference names an
|
|
231
|
+
* issue that is in no document by definition, and a serialize peer can be a
|
|
232
|
+
* weak node the host never listed; `inspectorView` answers `none` for a key it
|
|
233
|
+
* cannot find, so a control for one would discard the reader's selection and
|
|
234
|
+
* show nothing. The attribute is still published — the subject is a fact about
|
|
235
|
+
* the hold either way — and only the control is withheld.
|
|
236
|
+
*
|
|
237
|
+
* AND NEVER FOR A SUBJECT IN THE INSPECTED SLOT. Two shapes reach that, and
|
|
238
|
+
* the test is the SLOT rather than the key because the second one hides
|
|
239
|
+
* behind a key test. A node blocked by itself is a groomed-graph defect the
|
|
240
|
+
* reader still reports, as a hold whose subject is the issue being inspected —
|
|
241
|
+
* and `selectionReducer` toggles a re-selection of the selected issue to
|
|
242
|
+
* `none`, so a control there would close the inspector. And a
|
|
243
|
+
* `together-member-unready` hold names a PARTNER in the same unit, which
|
|
244
|
+
* `inspectorView` canonicalizes back to the lead already on show — the first
|
|
245
|
+
* click changes nothing visible and the second clears the selection. Withheld,
|
|
246
|
+
* on the same rule as above: the attribute stays, the control does not.
|
|
247
|
+
*
|
|
248
|
+
* `data-code` and `data-subject` mirror layer 1's `holdLine` exactly — same
|
|
249
|
+
* names, same omit-when-absent rule — so a rule written against
|
|
250
|
+
* `.ig-hold[data-subject]` on the rail has an exact twin in
|
|
251
|
+
* `.ig-inspector-hold[data-subject]` here. Class-qualified on purpose: the
|
|
252
|
+
* inspector's ROOT also carries a `data-subject` (`issue` / `edge`, what the
|
|
253
|
+
* selection resolved to), so a bare `[data-subject]` reads both.
|
|
254
|
+
*/
|
|
255
|
+
function holdRow(hold, known, inInspectedSlot) {
|
|
256
|
+
return element('li', {
|
|
257
|
+
class: 'ig-inspector-hold',
|
|
258
|
+
'data-family': hold.family,
|
|
259
|
+
'data-code': hold.code,
|
|
260
|
+
'data-subject': hold.subject,
|
|
261
|
+
}, [
|
|
262
|
+
hold.reason,
|
|
263
|
+
hold.subject === undefined || !known.has(hold.subject) || inInspectedSlot(hold.subject)
|
|
264
|
+
? null
|
|
265
|
+
: element('button', {
|
|
266
|
+
type: 'button',
|
|
267
|
+
class: 'ig-inspector-hold-subject',
|
|
268
|
+
'data-ig-command': 'select-issue',
|
|
269
|
+
'data-ig-target': hold.subject,
|
|
270
|
+
}, [hold.subject]),
|
|
271
|
+
]);
|
|
272
|
+
}
|
|
219
273
|
/** Render one document at one reader position, as the whole workspace. */
|
|
220
274
|
export function renderWorkspace(input, options) {
|
|
221
275
|
const selection = options.selection ?? INITIAL_SELECTION;
|
|
@@ -242,6 +296,12 @@ export function renderWorkspace(input, options) {
|
|
|
242
296
|
// left to drop, and this is the one place that reports what was dropped.
|
|
243
297
|
const sound = normalizeDocument(input);
|
|
244
298
|
const document = sound.document;
|
|
299
|
+
// The keys a hold's subject control may name — see `holdRow`.
|
|
300
|
+
const known = new Set(document.issues.map((issue) => issue.key));
|
|
301
|
+
// Which slot a key sits in, by lead — so a hold's subject that resolves to the
|
|
302
|
+
// inspected slot gets no control. The same canonicalization `inspectorView`
|
|
303
|
+
// applies, read off the same normalized slots.
|
|
304
|
+
const leadOf = new Map(document.order.slots.flatMap((slot) => slot.members.map((member) => [member, slot.lead])));
|
|
245
305
|
// THE FILTER NARROWS THE RAIL, AND ONLY THE RAIL. §17a gives the audit a
|
|
246
306
|
// filter for focus and deliberately no mode; the canvas answers "what
|
|
247
307
|
// surrounds this issue", which the filter says nothing about.
|
|
@@ -318,7 +378,7 @@ export function renderWorkspace(input, options) {
|
|
|
318
378
|
railSpacer(rail.after, 'after'),
|
|
319
379
|
].join('')),
|
|
320
380
|
zone('canvas', canvas.markup),
|
|
321
|
-
zone('inspector', renderMarkup(inspectorSpec(inspector, options.words))),
|
|
381
|
+
zone('inspector', renderMarkup(inspectorSpec(inspector, options.words, known, leadOf))),
|
|
322
382
|
`</div>`,
|
|
323
383
|
].join('');
|
|
324
384
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/workspace/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
* the next edit targets the wrong thing — and this is the file where both
|
|
36
36
|
* could creep back in without touching a line of TypeScript.
|
|
37
37
|
*/
|
|
38
|
-
export declare const workspaceStylesheet = "\n.ig-workspace {\n display: grid;\n /* HEADER SPANS, THE THREE ZONES SIT UNDER IT. The audit count is ambient: it\n belongs to the whole workspace rather than to one zone, and putting it in a\n zone's own track would make it move when that zone resized. */\n grid-template-areas:\n 'header header header'\n 'rail canvas inspector';\n /* The rail and the inspector are sized in TYPE, not in pixels: a host that\n scales the type scales the zones with it, which a fixed track would not.\n\n A LENGTH TIMES A UNITLESS COUNT, which is the viewer's own idiom\n (styles.ts writes min-width: calc(var(--ig-char-width) * 4)). An earlier\n version multiplied --ig-char-width by --ig-label-char-width, having read\n the second as \"how many characters wide a label is\". It is not: it is the\n average width OF one character, and themeCss renders every metric with px\n \u2014 so the expression was calc(7.8px * 6px), which is not a length. CSS\n discards a declaration it cannot parse, so the whole template went with it\n and all three zones fell back to auto columns: long content could then\n squeeze the canvas, which is the one thing fixed positions exist to stop.\n Nothing failed loudly, because an invalid declaration is simply absent.\n\n 40 is a reading measure for a title plus its id, in characters. */\n grid-template-columns:\n calc(var(--ig-char-width) * 40)\n 1fr\n calc(var(--ig-char-width) * 40);\n grid-template-rows: auto 1fr;\n gap: var(--ig-space);\n background: var(--ig-bg);\n color: var(--ig-text-body);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size);\n line-height: var(--ig-line-height);\n}\n\n.ig-zone {\n min-width: 0;\n /* Without this a long title in any zone sets that track's minimum width and\n the grid stops honouring its own template. */\n min-height: 0;\n}\n\n.ig-zone[data-zone='header'] {\n grid-area: header;\n}\n\n.ig-zone[data-zone='rail'] {\n grid-area: rail;\n /* The rail scrolls; the window slides underneath. */\n overflow-y: auto;\n border-right: var(--ig-stroke) solid var(--ig-line);\n}\n\n.ig-zone[data-zone='canvas'] {\n grid-area: canvas;\n overflow: auto;\n}\n\n.ig-zone[data-zone='inspector'] {\n grid-area: inspector;\n overflow-y: auto;\n border-left: var(--ig-stroke) solid var(--ig-line);\n}\n\n/* THE AMBIENT LEFT-BAR. A 2px gold rule on the affected row and nothing else \u2014\n no fill, no icon, no badge. \u00A717a's whole ask is that encoding errors stay\n visible while you work rather than pulling you out of it.\n\n An inset box-shadow rather than a border: a border changes the row's box and\n would shift every marked row against its neighbours, which is a layout jump\n the eye reads as movement. The width is the theme's spine, so the bar scales\n with the rest of the rail. */\n.ig-zone[data-zone='rail'] [data-ig-audit] {\n box-shadow: inset var(--ig-spine-width) 0 0 0 var(--ig-accent);\n}\n\n.ig-zone[data-zone='rail'] [data-ig-audit='misleading'] {\n box-shadow: inset var(--ig-spine-width) 0 0 0 var(--ig-state-invalid);\n}\n\n/* THE ROWS OUTSIDE THE WINDOW, AS HEIGHT. The rail scrolls, so without a spacer\n at each end the container is exactly as tall as the drawn rows and native\n scrolling stops at the end of the first window \u2014 leaving a host no offset to\n turn into the next start, and a reader no way to reach rank 287 of 312.\n\n NO BACKTICKS ANYWHERE IN THIS FILE'S COMMENTS. The stylesheet is a template\n literal, so a backtick closes it \u2014 and the failure is a parse error pages\n away from the character that caused it.\n\n THE PITCH IS THE OUTER BOX, NOT THE ROW HEIGHT. A .ig-slot is\n min-height: --ig-row-height PLUS margin-bottom: --ig-space-tight, so\n row-to-row is the sum of the two. Sized on --ig-row-height alone, this\n undercounted EVERY omitted row by the gap \u2014 44 of a 50px pitch on the default\n theme, so 300 omitted rows left the scroll extent 1,800px short and a host\n dividing its scroll position by the measured pitch could reach about offset\n 264 of 300. The tail of the order became unreachable by the very mechanism\n added to make it reachable.\n\n That is a SYSTEMATIC undercount, not the approximation below, which is why it\n is corrected exactly rather than tolerated: the gap is constant per row and\n both terms are theme metrics.\n\n --ig-rail-rows is the count, set inline by the renderer. What remains\n approximate is only VARIABLE row height \u2014 a row carrying holds is taller than\n a bare one \u2014 so the scrollbar stays proportional rather than exact. Measuring\n that needs a mount, which this package does not have. */\n.ig-rail-spacer {\n height: calc((var(--ig-row-height) + var(--ig-space-tight)) * var(--ig-rail-rows, 0));\n}\n\n.ig-inspector {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space);\n padding: var(--ig-space);\n}\n\n.ig-inspector-empty {\n margin: 0;\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n}\n\n.ig-inspector-issue {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-inspector-title {\n margin: 0;\n font-size: var(--ig-font-size);\n color: var(--ig-text);\n}\n\n.ig-inspector-key {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-position {\n margin: 0;\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-position[data-ready='true'] {\n color: var(--ig-station-ready);\n}\n\n.ig-inspector-holds {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n/* The two hold families never share a treatment \u2014 layer 1's rule, carried\n across so the inspector cannot contradict the rail it sits beside. */\n.ig-inspector-hold[data-family='graph'] {\n color: var(--ig-station-held);\n}\n\n.ig-inspector-hold[data-family='tracker'] {\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-relationships {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-inspector-heading {\n margin: 0;\n font-size: var(--ig-font-size-small);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-clear {\n align-self: flex-start;\n background: var(--ig-surface-2);\n color: var(--ig-text-body);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n padding: var(--ig-space-tight) var(--ig-space);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size-small);\n cursor: pointer;\n}\n\n.ig-inspector-clear:focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-relationship-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-relationship {\n display: flex;\n gap: var(--ig-space-tight);\n align-items: baseline;\n padding: var(--ig-space-tight);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n background: var(--ig-surface);\n}\n\n/* Hue by field, from the theme's own edge tokens \u2014 the same channel layer 1\n uses, so a relationship reads the same colour in the list as on the canvas. */\n.ig-relationship[data-edge='blocked-by'] {\n border-left-color: var(--ig-edge-blocked-by);\n}\n\n.ig-relationship[data-edge='duplicate-of'] {\n border-left-color: var(--ig-edge-duplicate-of);\n}\n\n.ig-relationship[data-edge='serialize-with'] {\n border-left-color: var(--ig-edge-serialize-with);\n}\n\n.ig-relationship[data-edge='together-with'] {\n border-left-color: var(--ig-edge-together-with);\n}\n\n.ig-relationship[data-edge='decomposed-from'] {\n border-left-color: var(--ig-edge-decomposed-from);\n}\n\n/* The button fills its row, so the whole relationship is the hit target rather\n than the words inside it. Transparent and borderless: the li already carries\n the border and the hue, and a second box around it would read as two\n controls. */\n.ig-relationship-select {\n flex: 1;\n display: flex;\n gap: var(--ig-space-tight);\n align-items: baseline;\n background: none;\n border: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.ig-relationship-select:focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-relationship-kind {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-body);\n}\n\n.ig-relationship-ref {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n";
|
|
38
|
+
export declare const workspaceStylesheet = "\n.ig-workspace {\n display: grid;\n /* HEADER SPANS, THE THREE ZONES SIT UNDER IT. The audit count is ambient: it\n belongs to the whole workspace rather than to one zone, and putting it in a\n zone's own track would make it move when that zone resized. */\n grid-template-areas:\n 'header header header'\n 'rail canvas inspector';\n /* The rail and the inspector are sized in TYPE, not in pixels: a host that\n scales the type scales the zones with it, which a fixed track would not.\n\n A LENGTH TIMES A UNITLESS COUNT, which is the viewer's own idiom\n (styles.ts writes min-width: calc(var(--ig-char-width) * 4)). An earlier\n version multiplied --ig-char-width by --ig-label-char-width, having read\n the second as \"how many characters wide a label is\". It is not: it is the\n average width OF one character, and themeCss renders every metric with px\n \u2014 so the expression was calc(7.8px * 6px), which is not a length. CSS\n discards a declaration it cannot parse, so the whole template went with it\n and all three zones fell back to auto columns: long content could then\n squeeze the canvas, which is the one thing fixed positions exist to stop.\n Nothing failed loudly, because an invalid declaration is simply absent.\n\n 40 is a reading measure for a title plus its id, in characters. */\n grid-template-columns:\n calc(var(--ig-char-width) * 40)\n 1fr\n calc(var(--ig-char-width) * 40);\n grid-template-rows: auto 1fr;\n gap: var(--ig-space);\n background: var(--ig-bg);\n color: var(--ig-text-body);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size);\n line-height: var(--ig-line-height);\n}\n\n.ig-zone {\n min-width: 0;\n /* Without this a long title in any zone sets that track's minimum width and\n the grid stops honouring its own template. */\n min-height: 0;\n}\n\n.ig-zone[data-zone='header'] {\n grid-area: header;\n}\n\n.ig-zone[data-zone='rail'] {\n grid-area: rail;\n /* The rail scrolls; the window slides underneath. */\n overflow-y: auto;\n border-right: var(--ig-stroke) solid var(--ig-line);\n}\n\n.ig-zone[data-zone='canvas'] {\n grid-area: canvas;\n overflow: auto;\n}\n\n.ig-zone[data-zone='inspector'] {\n grid-area: inspector;\n overflow-y: auto;\n border-left: var(--ig-stroke) solid var(--ig-line);\n}\n\n/* THE AMBIENT LEFT-BAR. A 2px gold rule on the affected row and nothing else \u2014\n no fill, no icon, no badge. \u00A717a's whole ask is that encoding errors stay\n visible while you work rather than pulling you out of it.\n\n An inset box-shadow rather than a border: a border changes the row's box and\n would shift every marked row against its neighbours, which is a layout jump\n the eye reads as movement. The width is the theme's spine, so the bar scales\n with the rest of the rail. */\n.ig-zone[data-zone='rail'] [data-ig-audit] {\n box-shadow: inset var(--ig-spine-width) 0 0 0 var(--ig-accent);\n}\n\n.ig-zone[data-zone='rail'] [data-ig-audit='misleading'] {\n box-shadow: inset var(--ig-spine-width) 0 0 0 var(--ig-state-invalid);\n}\n\n/* THE ROWS OUTSIDE THE WINDOW, AS HEIGHT. The rail scrolls, so without a spacer\n at each end the container is exactly as tall as the drawn rows and native\n scrolling stops at the end of the first window \u2014 leaving a host no offset to\n turn into the next start, and a reader no way to reach rank 287 of 312.\n\n NO BACKTICKS ANYWHERE IN THIS FILE'S COMMENTS. The stylesheet is a template\n literal, so a backtick closes it \u2014 and the failure is a parse error pages\n away from the character that caused it.\n\n THE PITCH IS THE OUTER BOX, NOT THE ROW HEIGHT. A .ig-slot is\n min-height: --ig-row-height PLUS margin-bottom: --ig-space-tight, so\n row-to-row is the sum of the two. Sized on --ig-row-height alone, this\n undercounted EVERY omitted row by the gap \u2014 44 of a 50px pitch on the default\n theme, so 300 omitted rows left the scroll extent 1,800px short and a host\n dividing its scroll position by the measured pitch could reach about offset\n 264 of 300. The tail of the order became unreachable by the very mechanism\n added to make it reachable.\n\n That is a SYSTEMATIC undercount, not the approximation below, which is why it\n is corrected exactly rather than tolerated: the gap is constant per row and\n both terms are theme metrics.\n\n --ig-rail-rows is the count, set inline by the renderer. What remains\n approximate is only VARIABLE row height \u2014 a row carrying holds is taller than\n a bare one \u2014 so the scrollbar stays proportional rather than exact. Measuring\n that needs a mount, which this package does not have. */\n.ig-rail-spacer {\n height: calc((var(--ig-row-height) + var(--ig-space-tight)) * var(--ig-rail-rows, 0));\n}\n\n.ig-inspector {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space);\n padding: var(--ig-space);\n}\n\n.ig-inspector-empty {\n margin: 0;\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n}\n\n.ig-inspector-issue {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-inspector-title {\n margin: 0;\n font-size: var(--ig-font-size);\n color: var(--ig-text);\n}\n\n.ig-inspector-key {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-position {\n margin: 0;\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-position[data-ready='true'] {\n color: var(--ig-station-ready);\n}\n\n.ig-inspector-holds {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n/* The two hold families never share a treatment \u2014 layer 1's rule, carried\n across so the inspector cannot contradict the rail it sits beside. */\n.ig-inspector-hold[data-family='graph'] {\n color: var(--ig-station-held);\n}\n\n.ig-inspector-hold[data-family='tracker'] {\n color: var(--ig-text-muted);\n}\n\n/* The holder, as a control: inline with the sentence that names it, drawn as\n the same kind of button the relationship rows use so a reader learns one\n affordance for \"take me to that issue\". */\n.ig-inspector-hold-subject {\n margin-left: var(--ig-space-tight);\n background: var(--ig-surface-2);\n color: inherit;\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n padding: 0 var(--ig-space-tight);\n font-family: var(--ig-font-mono);\n font-size: var(--ig-font-size-small);\n cursor: pointer;\n}\n\n.ig-inspector-hold-subject:focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-inspector-relationships {\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-inspector-heading {\n margin: 0;\n font-size: var(--ig-font-size-small);\n color: var(--ig-text-muted);\n}\n\n.ig-inspector-clear {\n align-self: flex-start;\n background: var(--ig-surface-2);\n color: var(--ig-text-body);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n padding: var(--ig-space-tight) var(--ig-space);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size-small);\n cursor: pointer;\n}\n\n.ig-inspector-clear:focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-relationship-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--ig-space-tight);\n}\n\n.ig-relationship {\n display: flex;\n gap: var(--ig-space-tight);\n align-items: baseline;\n padding: var(--ig-space-tight);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n background: var(--ig-surface);\n}\n\n/* Hue by field, from the theme's own edge tokens \u2014 the same channel layer 1\n uses, so a relationship reads the same colour in the list as on the canvas. */\n.ig-relationship[data-edge='blocked-by'] {\n border-left-color: var(--ig-edge-blocked-by);\n}\n\n.ig-relationship[data-edge='duplicate-of'] {\n border-left-color: var(--ig-edge-duplicate-of);\n}\n\n.ig-relationship[data-edge='serialize-with'] {\n border-left-color: var(--ig-edge-serialize-with);\n}\n\n.ig-relationship[data-edge='together-with'] {\n border-left-color: var(--ig-edge-together-with);\n}\n\n.ig-relationship[data-edge='decomposed-from'] {\n border-left-color: var(--ig-edge-decomposed-from);\n}\n\n/* The button fills its row, so the whole relationship is the hit target rather\n than the words inside it. Transparent and borderless: the li already carries\n the border and the hue, and a second box around it would read as two\n controls. */\n.ig-relationship-select {\n flex: 1;\n display: flex;\n gap: var(--ig-space-tight);\n align-items: baseline;\n background: none;\n border: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.ig-relationship-select:focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-relationship-kind {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-body);\n}\n\n.ig-relationship-ref {\n font-family: var(--ig-font-mono);\n color: var(--ig-text-muted);\n}\n";
|
|
39
39
|
//# sourceMappingURL=styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/workspace/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/workspace/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,eAAO,MAAM,mBAAmB,yvSAsS/B,CAAC"}
|
package/dist/workspace/styles.js
CHANGED
|
@@ -206,6 +206,26 @@ export const workspaceStylesheet = `
|
|
|
206
206
|
color: var(--ig-text-muted);
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
/* The holder, as a control: inline with the sentence that names it, drawn as
|
|
210
|
+
the same kind of button the relationship rows use so a reader learns one
|
|
211
|
+
affordance for "take me to that issue". */
|
|
212
|
+
.ig-inspector-hold-subject {
|
|
213
|
+
margin-left: var(--ig-space-tight);
|
|
214
|
+
background: var(--ig-surface-2);
|
|
215
|
+
color: inherit;
|
|
216
|
+
border: var(--ig-stroke) solid var(--ig-line);
|
|
217
|
+
border-radius: var(--ig-radius);
|
|
218
|
+
padding: 0 var(--ig-space-tight);
|
|
219
|
+
font-family: var(--ig-font-mono);
|
|
220
|
+
font-size: var(--ig-font-size-small);
|
|
221
|
+
cursor: pointer;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.ig-inspector-hold-subject:focus-visible {
|
|
225
|
+
outline: var(--ig-focus-ring) solid var(--ig-focus);
|
|
226
|
+
outline-offset: var(--ig-space-tight);
|
|
227
|
+
}
|
|
228
|
+
|
|
209
229
|
.ig-inspector-relationships {
|
|
210
230
|
display: flex;
|
|
211
231
|
flex-direction: column;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/workspace/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/workspace/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsSlC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@issuegraph/editor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Everything that mutates an Issuegraph document: edit affordances drawn as overlays on a viewer, dispatching through a store. Composes the viewer and the store through their public surfaces and performs no write itself.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"issuegraph",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@issuegraph/core": "^0.1.2",
|
|
45
|
-
"@issuegraph/store": "^0.
|
|
46
|
-
"@issuegraph/viewer": "^0.
|
|
45
|
+
"@issuegraph/store": "^0.2.0",
|
|
46
|
+
"@issuegraph/viewer": "^0.2.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/node": "^22.18.0",
|
|
50
50
|
"typescript": "^6.0.3",
|
|
51
|
-
"@issuegraph/reader": "^0.
|
|
51
|
+
"@issuegraph/reader": "^0.6.0"
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
54
|
"build": "tsc -p tsconfig.json",
|