@issuegraph/editor 0.10.0 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -7
- package/dist/a11y/baseline.d.ts.map +1 -1
- package/dist/a11y/baseline.js +4 -0
- package/dist/a11y/baseline.js.map +1 -1
- package/dist/audit/findings.d.ts +107 -1
- package/dist/audit/findings.d.ts.map +1 -1
- package/dist/audit/findings.js +113 -6
- package/dist/audit/findings.js.map +1 -1
- package/dist/audit/panel.d.ts +277 -0
- package/dist/audit/panel.d.ts.map +1 -0
- package/dist/audit/panel.js +462 -0
- package/dist/audit/panel.js.map +1 -0
- package/dist/audit/refused.d.ts +99 -0
- package/dist/audit/refused.d.ts.map +1 -0
- package/dist/audit/refused.js +276 -0
- package/dist/audit/refused.js.map +1 -0
- package/dist/audit/styles.d.ts +1 -1
- package/dist/audit/styles.d.ts.map +1 -1
- package/dist/audit/styles.js +428 -0
- package/dist/audit/styles.js.map +1 -1
- package/dist/audit/surface.d.ts +54 -12
- package/dist/audit/surface.d.ts.map +1 -1
- package/dist/audit/surface.js +53 -13
- package/dist/audit/surface.js.map +1 -1
- package/dist/create/draft.d.ts +19 -0
- package/dist/create/draft.d.ts.map +1 -1
- package/dist/create/draft.js +21 -0
- package/dist/create/draft.js.map +1 -1
- package/dist/create/keys.d.ts +68 -8
- package/dist/create/keys.d.ts.map +1 -1
- package/dist/create/keys.js +43 -5
- package/dist/create/keys.js.map +1 -1
- package/dist/index.d.ts +38 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -13
- package/dist/index.js.map +1 -1
- package/dist/overlay/render.d.ts +11 -3
- package/dist/overlay/render.d.ts.map +1 -1
- package/dist/overlay/render.js +22 -6
- package/dist/overlay/render.js.map +1 -1
- package/dist/overlay/request.d.ts +71 -0
- package/dist/overlay/request.d.ts.map +1 -0
- package/dist/overlay/request.js +129 -0
- package/dist/overlay/request.js.map +1 -0
- package/dist/overlay/styles.d.ts +1 -1
- package/dist/overlay/styles.d.ts.map +1 -1
- package/dist/overlay/styles.js +38 -7
- package/dist/overlay/styles.js.map +1 -1
- package/dist/reevaluate/parts.d.ts +130 -0
- package/dist/reevaluate/parts.d.ts.map +1 -0
- package/dist/reevaluate/parts.js +260 -0
- package/dist/reevaluate/parts.js.map +1 -0
- package/dist/reevaluate/render.d.ts +18 -11
- package/dist/reevaluate/render.d.ts.map +1 -1
- package/dist/reevaluate/render.js +21 -135
- package/dist/reevaluate/render.js.map +1 -1
- package/dist/reevaluate/styles.d.ts +1 -1
- package/dist/reevaluate/styles.d.ts.map +1 -1
- package/dist/reevaluate/styles.js +26 -0
- package/dist/reevaluate/styles.js.map +1 -1
- package/dist/reevaluate/view.d.ts +16 -1
- package/dist/reevaluate/view.d.ts.map +1 -1
- package/dist/reevaluate/view.js +21 -1
- package/dist/reevaluate/view.js.map +1 -1
- package/dist/reevaluate/words.d.ts +7 -0
- package/dist/reevaluate/words.d.ts.map +1 -1
- package/dist/scale/ladder.d.ts +62 -6
- package/dist/scale/ladder.d.ts.map +1 -1
- package/dist/scale/ladder.js +119 -8
- package/dist/scale/ladder.js.map +1 -1
- package/dist/scale/render.d.ts +44 -0
- package/dist/scale/render.d.ts.map +1 -1
- package/dist/scale/render.js +197 -27
- package/dist/scale/render.js.map +1 -1
- package/dist/scale/styles.d.ts +11 -5
- package/dist/scale/styles.d.ts.map +1 -1
- package/dist/scale/styles.js +133 -4
- package/dist/scale/styles.js.map +1 -1
- package/dist/workspace/host.d.ts +83 -1
- package/dist/workspace/host.d.ts.map +1 -1
- package/dist/workspace/host.js +197 -4
- package/dist/workspace/host.js.map +1 -1
- package/dist/workspace/inspector.d.ts +33 -7
- package/dist/workspace/inspector.d.ts.map +1 -1
- package/dist/workspace/inspector.js +15 -0
- package/dist/workspace/inspector.js.map +1 -1
- package/dist/workspace/mount.d.ts +23 -1
- package/dist/workspace/mount.d.ts.map +1 -1
- package/dist/workspace/mount.js +500 -17
- package/dist/workspace/mount.js.map +1 -1
- package/dist/workspace/rail.d.ts +5 -2
- package/dist/workspace/rail.d.ts.map +1 -1
- package/dist/workspace/rail.js.map +1 -1
- package/dist/workspace/render.d.ts +379 -3
- package/dist/workspace/render.d.ts.map +1 -1
- package/dist/workspace/render.js +893 -133
- package/dist/workspace/render.js.map +1 -1
- package/dist/workspace/selection.d.ts +11 -0
- package/dist/workspace/selection.d.ts.map +1 -1
- package/dist/workspace/selection.js +10 -0
- package/dist/workspace/selection.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 +868 -18
- package/dist/workspace/styles.js.map +1 -1
- package/package.json +3 -3
package/dist/reevaluate/view.js
CHANGED
|
@@ -79,7 +79,22 @@ export function summaryOf(change) {
|
|
|
79
79
|
* report — NOT that nothing happened, which is what {@link ChangeSummary.unchanged}
|
|
80
80
|
* says.
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Refs the CALLER knows are in the order but not in this scene.
|
|
84
|
+
*
|
|
85
|
+
* WITHOUT IT A DIAGNOSTIC CANNOT TELL TWO THINGS APART, and they are opposite
|
|
86
|
+
* facts: a projection that disagrees with the change — the defect worth
|
|
87
|
+
* reporting — and a surface that deliberately drew fewer rows than the order
|
|
88
|
+
* has. The workspace does the second on every render: its rail is windowed, and
|
|
89
|
+
* its audit filter narrows it further. Both are ordinary, and a diagnostic for
|
|
90
|
+
* either is noise that trains a host to ignore the ones that matter.
|
|
91
|
+
*
|
|
92
|
+
* A SET OF REFS RATHER THAN A BOOLEAN, because "this surface windows" is not
|
|
93
|
+
* the question. A ref in the order but off-window is expected; a ref in NO row
|
|
94
|
+
* of the order at all is the inconsistency, and only the caller holding the
|
|
95
|
+
* unwindowed order can tell which one it has.
|
|
96
|
+
*/
|
|
97
|
+
export function reevaluateView(change, scene, status, expected = new Set()) {
|
|
83
98
|
const held = status === 'held';
|
|
84
99
|
if (change === null || change === undefined) {
|
|
85
100
|
return { summary: null, chips: [], held, diagnostics: [] };
|
|
@@ -103,6 +118,11 @@ export function reevaluateView(change, scene, status) {
|
|
|
103
118
|
// renders the order it left. Its count still reaches the summary.
|
|
104
119
|
if (delta.presence === 'left')
|
|
105
120
|
continue;
|
|
121
|
+
// The caller narrowed its own rail and said so. Its chip has nowhere to
|
|
122
|
+
// attach here, which is a fact about the window rather than about the
|
|
123
|
+
// change, and the summary still counts the row.
|
|
124
|
+
if (expected.has(delta.ref) || expected.has(key))
|
|
125
|
+
continue;
|
|
106
126
|
diagnostics.push(`${delta.ref} changed, but no row draws it; its chip has nowhere to attach`);
|
|
107
127
|
}
|
|
108
128
|
const chips = [...byKey].map(([key, deltas]) => ({ key, deltas }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/reevaluate/view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAKH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,OAAO;IACP,UAAU;IACV,YAAY;IACZ,SAAS;IACT,MAAM;CACE,CAAC,CAAC;AAIZ;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAoE,MAAM,CAAC,MAAM,CAAC;IAC9F,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ;IACrC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS;IAC1C,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;CAC9B,CAAC,CAAC;AAuDH,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,KAAK;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;KACtC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;QACtC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;QACtB,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,MAAM,KAAK,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAsC,EACtC,KAAY,EACZ,MAAmB;
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/reevaluate/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,13 @@ export interface ChangeWords {
|
|
|
44
44
|
/**
|
|
45
45
|
* Labels the order while a write is in flight and the rows are the ones from
|
|
46
46
|
* before it. The rail is greyed a step; this says why.
|
|
47
|
+
*
|
|
48
|
+
* IN FLIGHT MEANS PENDING, NOT LANDED, and a host wording this should know
|
|
49
|
+
* which. `OrderStatus` is `held` while `anyPending(records)`, and the store
|
|
50
|
+
* reserves a record as `pending` and publishes before it drains — so this
|
|
51
|
+
* word is on screen while the write can still be rejected, throw, or come
|
|
52
|
+
* back as a conflict. A host promising the edit is saved here would be
|
|
53
|
+
* followed by a §17b failure card contradicting it.
|
|
47
54
|
*/
|
|
48
55
|
readonly computing: string;
|
|
49
56
|
/** The dismiss control. The only thing besides the next edit that clears the summary. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../src/reevaluate/words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B
|
|
1
|
+
{"version":3,"file":"words.d.ts","sourceRoot":"","sources":["../../src/reevaluate/words.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7D"}
|
package/dist/scale/ladder.d.ts
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* overlay on this screen reads — so a capsule's `cycle` badge and an audit's
|
|
34
34
|
* `cycle` finding are one answer rendered twice, not two answers.
|
|
35
35
|
*/
|
|
36
|
-
import { type ViewerDocument, type ViewerIssue } from '@issuegraph/viewer';
|
|
36
|
+
import { type ClusterReach, type ViewerDocument, type ViewerIssue } from '@issuegraph/viewer';
|
|
37
37
|
import { type ScaleState } from './commands.ts';
|
|
38
38
|
/** Which of the design's three scale states the canvas is in. */
|
|
39
39
|
export type ScaleTier =
|
|
@@ -46,15 +46,45 @@ export type ScaleTier =
|
|
|
46
46
|
/** One connected component, as the refusal presents it. */
|
|
47
47
|
export interface ScaleCapsule {
|
|
48
48
|
/**
|
|
49
|
-
* The
|
|
50
|
-
*
|
|
51
|
-
*
|
|
49
|
+
* The ANCHOR: the highest-ranked member, which is the member a `focus`
|
|
50
|
+
* command names to draw this component.
|
|
51
|
+
*
|
|
52
|
+
* `RULINGS.md` §4 settles what this is. It was the component's first member
|
|
53
|
+
* in key order, which is deterministic and means nothing — a seventy-two
|
|
54
|
+
* issue component was fronted by whichever key sorted first. The anchor is
|
|
55
|
+
* the member a reader would reach the component THROUGH, so a component with
|
|
56
|
+
* any ready work is entered at that work.
|
|
52
57
|
*/
|
|
53
58
|
readonly lead: string;
|
|
59
|
+
/**
|
|
60
|
+
* The anchor's title. Rendered as `around #488 · Extract session store
|
|
61
|
+
* adapter` — never alone.
|
|
62
|
+
*
|
|
63
|
+
* FRAME `17f` NAMES EVERY CAPSULE — "auth & session", "replay guards" — and
|
|
64
|
+
* the shipped one listed raw keys. This package's earlier reading was right
|
|
65
|
+
* that a component has no name of its own to read anywhere, and Design
|
|
66
|
+
* confirmed it: *"A connected component has no name and one must not be
|
|
67
|
+
* invented. `auth & session` is placeholder copy, not a field."*
|
|
68
|
+
*
|
|
69
|
+
* WHAT CHANGED IS THE FORM, AND IT IS THE HALF THAT WAS WRONG. A bare title
|
|
70
|
+
* reads as the component's NAME — as though that issue were the group — and
|
|
71
|
+
* the anchor wording says what it actually is: the issue this component is
|
|
72
|
+
* entered around. Same string, a claim it can support.
|
|
73
|
+
*/
|
|
74
|
+
readonly name: string;
|
|
54
75
|
readonly size: number;
|
|
55
76
|
readonly blockedByEdges: number;
|
|
56
77
|
readonly chainDepth: number;
|
|
57
78
|
readonly hasCycle: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* The one fact printed under the name, resolved by layer 1.
|
|
81
|
+
*
|
|
82
|
+
* IT IS NOT A THIRD COPY of the two fields above; it is what stops a capsule
|
|
83
|
+
* printing both of them at once. See `clusterReach`: a stuck component has no
|
|
84
|
+
* depth to print, because a depth beside a cycle reads as a work estimate for
|
|
85
|
+
* work that can never start.
|
|
86
|
+
*/
|
|
87
|
+
readonly reach: ClusterReach;
|
|
58
88
|
readonly members: readonly string[];
|
|
59
89
|
}
|
|
60
90
|
/**
|
|
@@ -108,6 +138,24 @@ export interface ScaleSearch {
|
|
|
108
138
|
/** Matches found beyond the ones listed. */
|
|
109
139
|
readonly omitted: number;
|
|
110
140
|
}
|
|
141
|
+
/** The size range of a set of components. Both bounds are at least one. */
|
|
142
|
+
export interface SizeRange {
|
|
143
|
+
readonly smallest: number;
|
|
144
|
+
readonly largest: number;
|
|
145
|
+
}
|
|
146
|
+
/** What the capsule list left out, and the size range it spans. */
|
|
147
|
+
export interface OmittedComponents {
|
|
148
|
+
readonly count: number;
|
|
149
|
+
/**
|
|
150
|
+
* The range, or `null` when nothing omitted has a member to measure.
|
|
151
|
+
*
|
|
152
|
+
* NULLABLE RATHER THAN ZEROED, for the reason `capsulesOmitted` is itself
|
|
153
|
+
* nullable: `0` here would report a component of no issues, and the count is
|
|
154
|
+
* still true when the range is not. Unreachable while `clustersOf` emits no
|
|
155
|
+
* memberless component; it is the shape that keeps it unreachable.
|
|
156
|
+
*/
|
|
157
|
+
readonly range: SizeRange | null;
|
|
158
|
+
}
|
|
111
159
|
export interface ScaleLadder {
|
|
112
160
|
readonly tier: ScaleTier;
|
|
113
161
|
/** The nodes the canvas would draw: the focused component, or all of them. */
|
|
@@ -120,8 +168,16 @@ export interface ScaleLadder {
|
|
|
120
168
|
readonly focus: string | null;
|
|
121
169
|
readonly refusal: ScaleRefusal | null;
|
|
122
170
|
readonly capsules: readonly ScaleCapsule[];
|
|
123
|
-
/**
|
|
124
|
-
|
|
171
|
+
/**
|
|
172
|
+
* The components beyond the capsules listed, and how big they are.
|
|
173
|
+
*
|
|
174
|
+
* A BARE COUNT DOES NOT SAY WHETHER THE TAIL MATTERS. Frame `17f` draws
|
|
175
|
+
* "+ 5 more" over "2-7 issues each" for exactly that reason: five components
|
|
176
|
+
* of two to seven is noise a reader can leave alone, and five of forty to
|
|
177
|
+
* ninety is most of the backlog. `null` when nothing was omitted, so the
|
|
178
|
+
* absent case has no zeroed sizes to misread.
|
|
179
|
+
*/
|
|
180
|
+
readonly capsulesOmitted: OmittedComponents | null;
|
|
125
181
|
readonly isolated: IsolatedChip;
|
|
126
182
|
/** The affordance, present exactly when the canvas refuses. */
|
|
127
183
|
readonly search: ScaleSearch | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.d.ts","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,
|
|
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
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* overlay on this screen reads — so a capsule's `cycle` badge and an audit's
|
|
34
34
|
* `cycle` finding are one answer rendered twice, not two answers.
|
|
35
35
|
*/
|
|
36
|
-
import { CLUSTER_ONLY_BUDGET, GRAPH_NODE_BUDGET, clustersOf, normalizeDocument, } from '@issuegraph/viewer';
|
|
36
|
+
import { CLUSTER_ONLY_BUDGET, GRAPH_NODE_BUDGET, clusterReach, clustersOf, normalizeDocument, } from '@issuegraph/viewer';
|
|
37
37
|
import { INITIAL_SCALE_STATE } from "./commands.js";
|
|
38
38
|
/**
|
|
39
39
|
* The ladder, as the design's table rather than as branches — and pinned to the
|
|
@@ -122,21 +122,106 @@ function narrow(input, keep) {
|
|
|
122
122
|
* `clustersOf` never returns one today; this is what keeps that from becoming a
|
|
123
123
|
* silent contract.
|
|
124
124
|
*/
|
|
125
|
-
function capsuleOf(cluster) {
|
|
126
|
-
//
|
|
127
|
-
//
|
|
128
|
-
|
|
125
|
+
function capsuleOf(cluster, titleOf, rankOf) {
|
|
126
|
+
// THE ANCHOR IS THE HIGHEST-RANKED MEMBER, WHICH IS NOT WHAT THIS PICKED.
|
|
127
|
+
//
|
|
128
|
+
// `clustersOf` ends with `members.sort()` — a plain lexicographic sort of
|
|
129
|
+
// KEYS — so `members[0]` was the alphabetically first key and nothing else.
|
|
130
|
+
// The old comment called that "the viewer's deterministic order", which is
|
|
131
|
+
// true and irrelevant: deterministic is not the same as meaningful, and on
|
|
132
|
+
// the demo it fronted a seventy-two issue component with whichever key sorted
|
|
133
|
+
// first.
|
|
134
|
+
//
|
|
135
|
+
// `RULINGS.md` §4: a capsule is identified by its ANCHOR, *"the
|
|
136
|
+
// highest-ranked member"*. That is the member a reader would reach this
|
|
137
|
+
// component through, and it is the one the focus control should name.
|
|
138
|
+
//
|
|
139
|
+
// TIES AND UNRANKED MEMBERS FALL BACK TO THE OLD HANDLE, deliberately: a
|
|
140
|
+
// component can be entirely unplaced, in which case no member has a rank and
|
|
141
|
+
// the sorted key is as good an answer as exists. What matters is that a
|
|
142
|
+
// RANKED member always wins over an unranked one, so a component is entered
|
|
143
|
+
// through the earliest position the order states for it.
|
|
144
|
+
//
|
|
145
|
+
// THAT POSITION NEED NOT BE READY WORK, and since `RULINGS.md` §1 it often
|
|
146
|
+
// is not: a held slot whose blocker is inside the order carries a rank, so a
|
|
147
|
+
// held issue can be the anchor. This comment used to promise ready work and
|
|
148
|
+
// that promise is now false. The anchor is still right, and deliberately
|
|
149
|
+
// unchanged — §4 defines it as the highest-RANKED member, not the highest
|
|
150
|
+
// ready one, and nothing downstream needs readiness: selection minimises
|
|
151
|
+
// rank, activation moves the focus key, focus keeps the whole component, and
|
|
152
|
+
// no consumer here starts work. An anchor is where you ENTER a component,
|
|
153
|
+
// not a claim that the component can run.
|
|
154
|
+
let lead = cluster.members[0];
|
|
155
|
+
let best = Number.POSITIVE_INFINITY;
|
|
156
|
+
for (const member of cluster.members) {
|
|
157
|
+
const rank = rankOf.get(member);
|
|
158
|
+
if (rank === undefined)
|
|
159
|
+
continue;
|
|
160
|
+
if (rank < best) {
|
|
161
|
+
best = rank;
|
|
162
|
+
lead = member;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
129
165
|
if (lead === undefined)
|
|
130
166
|
return null;
|
|
131
167
|
return {
|
|
132
168
|
lead,
|
|
169
|
+
// THE KEY IS THE FALLBACK, NOT AN EMPTY NAME. Every member came out of the
|
|
170
|
+
// normalized document so a title is always there; the `??` keeps a capsule
|
|
171
|
+
// named rather than blank if that ever stops being true.
|
|
172
|
+
name: titleOf.get(lead) ?? lead,
|
|
133
173
|
size: cluster.members.length,
|
|
134
174
|
blockedByEdges: cluster.blockedByEdges,
|
|
135
175
|
chainDepth: cluster.chainDepth,
|
|
136
176
|
hasCycle: cluster.hasCycle,
|
|
177
|
+
reach: clusterReach(cluster),
|
|
137
178
|
members: cluster.members,
|
|
138
179
|
};
|
|
139
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* The omitted components, summarised.
|
|
183
|
+
*
|
|
184
|
+
* COMPUTED FROM THE COMPONENTS THEMSELVES rather than from the two list
|
|
185
|
+
* lengths, because the omitted set is not only the slice past the limit: a
|
|
186
|
+
* component `capsuleOf` refuses also leaves the list, and a count derived by
|
|
187
|
+
* subtraction cannot say how big either kind was.
|
|
188
|
+
*/
|
|
189
|
+
function omittedFrom(listable, shown) {
|
|
190
|
+
const drawn = new Set(shown.map((capsule) => capsule.lead));
|
|
191
|
+
// A COMPONENT OF NO ISSUES IS NOT A SIZE. `capsuleOf` refuses exactly the
|
|
192
|
+
// memberless cluster, so the very components this function exists to count
|
|
193
|
+
// separately are the ones that would contribute `0` — and "2 further
|
|
194
|
+
// components are not listed · 0–7 issues each" reports a component of no
|
|
195
|
+
// issues, which is the state `capsulesOmitted`'s own `null` exists to refuse.
|
|
196
|
+
// They are still counted; they just do not stretch the range.
|
|
197
|
+
const omitted = listable.filter((cluster) => {
|
|
198
|
+
const lead = cluster.members[0];
|
|
199
|
+
return lead === undefined || !drawn.has(lead);
|
|
200
|
+
});
|
|
201
|
+
// FOLDED, NOT SPREAD. `Math.min(...sizes)` passes one argument per component,
|
|
202
|
+
// and this runs on the refusal path — reached BECAUSE the document is large,
|
|
203
|
+
// whose worst case `clustersOf` names as "10,000 disconnected pairs". Node
|
|
204
|
+
// throws `RangeError: Maximum call stack size exceeded` somewhere past
|
|
205
|
+
// ~100,000 arguments, so a spread turns the surface that exists to survive a
|
|
206
|
+
// huge backlog into the one that crashes on it.
|
|
207
|
+
let count = 0;
|
|
208
|
+
let smallest = Number.POSITIVE_INFINITY;
|
|
209
|
+
let largest = 0;
|
|
210
|
+
for (const cluster of omitted) {
|
|
211
|
+
count += 1;
|
|
212
|
+
const size = cluster.members.length;
|
|
213
|
+
if (size === 0)
|
|
214
|
+
continue;
|
|
215
|
+
if (size < smallest)
|
|
216
|
+
smallest = size;
|
|
217
|
+
if (size > largest)
|
|
218
|
+
largest = size;
|
|
219
|
+
}
|
|
220
|
+
if (count === 0)
|
|
221
|
+
return null;
|
|
222
|
+
// Every omitted component was memberless: counted, with no range to state.
|
|
223
|
+
return { count, range: largest === 0 ? null : { smallest, largest } };
|
|
224
|
+
}
|
|
140
225
|
/** Why the canvas declined, in the reader's terms. One sentence, three cases. */
|
|
141
226
|
function reasonFor(tier, nodeCount, focused) {
|
|
142
227
|
if (focused) {
|
|
@@ -184,7 +269,19 @@ function searchFor(query, document, leadOf) {
|
|
|
184
269
|
// ONLY ISSUES THAT SIT IN A COMPONENT. This search exists to focus one, and
|
|
185
270
|
// an issue with no relationship has none to focus — offering it would be a
|
|
186
271
|
// match that cannot be acted on. The issues it leaves out are the ones the
|
|
187
|
-
// isolated chip is for, which is why the
|
|
272
|
+
// isolated chip is for, which is why the ROUTE TO THEM IS NOT OPTIONAL.
|
|
273
|
+
//
|
|
274
|
+
// THE ROUTE IS THE INVARIANT; THE CHIP IS ONE DRAWING OF IT. This sentence
|
|
275
|
+
// read "the chip is not optional chrome" until a caller needed to draw the
|
|
276
|
+
// same route somewhere else, and the two claims are not the same: what may
|
|
277
|
+
// never be suppressed is a way to reach these issues, because this search
|
|
278
|
+
// will not offer them and nothing else on the ladder does either. So
|
|
279
|
+
// `ScaleLadderOptions.isolatedChip` lets a caller that draws the route
|
|
280
|
+
// ITSELF — the count, the toggle and the list — turn the ladder's own copy
|
|
281
|
+
// off, and forbids it to anyone who does not. `renderWorkspace` is that
|
|
282
|
+
// caller: §17a puts the count at the foot of the order rail, and two copies
|
|
283
|
+
// of one control would also give `mount.ts`'s focus restore two elements
|
|
284
|
+
// under its single `isolated` identity.
|
|
188
285
|
const lead = leadOf.get(issue.key);
|
|
189
286
|
if (lead === undefined)
|
|
190
287
|
continue;
|
|
@@ -236,9 +333,23 @@ export function scaleLadder(input, state = INITIAL_SCALE_STATE) {
|
|
|
236
333
|
// read as an offer to focus what is already focused.
|
|
237
334
|
const listable = focusedCluster === null ? clusters : [];
|
|
238
335
|
const shown = tier === 'clusters' ? listable.slice(0, CAPSULE_LIMIT) : listable;
|
|
336
|
+
const titleOf = new Map(document.issues.map((issue) => [issue.key, issue.title]));
|
|
337
|
+
// THE RANK OF EVERY MEMBER THAT HAS ONE, for the anchor. Built from the
|
|
338
|
+
// order's own slots rather than from the issues, because rank is a fact about
|
|
339
|
+
// a SLOT: a together unit is one rank over several members, and each of them
|
|
340
|
+
// is equally the rank the component would be entered at.
|
|
341
|
+
const rankOf = new Map();
|
|
342
|
+
for (const slot of document.order.slots) {
|
|
343
|
+
if (slot.rank === null)
|
|
344
|
+
continue;
|
|
345
|
+
for (const member of slot.members)
|
|
346
|
+
rankOf.set(member, slot.rank);
|
|
347
|
+
}
|
|
239
348
|
const capsules = tier === 'direct'
|
|
240
349
|
? []
|
|
241
|
-
: shown
|
|
350
|
+
: shown
|
|
351
|
+
.map((cluster) => capsuleOf(cluster, titleOf, rankOf))
|
|
352
|
+
.filter((capsule) => capsule !== null);
|
|
242
353
|
const isolatedIssues = document.issues.filter((issue) => !related.has(issue.key));
|
|
243
354
|
const isolated = {
|
|
244
355
|
count: isolatedIssues.length,
|
|
@@ -256,7 +367,7 @@ export function scaleLadder(input, state = INITIAL_SCALE_STATE) {
|
|
|
256
367
|
// COUNTED AGAINST WHAT WAS LISTED, not against what was sliced. A component
|
|
257
368
|
// dropped for having no members is as absent from the list as one past the
|
|
258
369
|
// limit, and reporting only the slice would under-count it.
|
|
259
|
-
capsulesOmitted: tier === 'direct' ?
|
|
370
|
+
capsulesOmitted: tier === 'direct' ? null : omittedFrom(listable, capsules),
|
|
260
371
|
isolated,
|
|
261
372
|
search: tier === 'direct' ? null : searchFor(state.query, document, leadOf),
|
|
262
373
|
canvas,
|
package/dist/scale/ladder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACL,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ladder.js","sourceRoot":"","sources":["../../src/scale/ladder.ts"],"names":[],"mappings":"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"}
|
package/dist/scale/render.d.ts
CHANGED
|
@@ -90,6 +90,50 @@ export interface ScaleLadderOptions {
|
|
|
90
90
|
* because `overlayFor` reads a list of states.
|
|
91
91
|
*/
|
|
92
92
|
readonly projected?: readonly ProjectedEdge[] | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Whether this ladder draws its own isolated CHIP. Default `true`.
|
|
95
|
+
*
|
|
96
|
+
* SUPPRESS THIS ONLY IF YOU DRAW THE CONTROL YOURSELF. `searchFor`
|
|
97
|
+
* deliberately omits every issue with no component (`ladder.ts`, and the
|
|
98
|
+
* reasoning is recorded there), so this is the only way these issues are
|
|
99
|
+
* reachable from the ladder's own surface. What may never be optional is a
|
|
100
|
+
* route to them; this option says who draws its control, not whether it
|
|
101
|
+
* exists.
|
|
102
|
+
*
|
|
103
|
+
* THE LIST IS NOT OPTIONAL AND IS NOT PART OF THIS. `isolatedSpec` keeps
|
|
104
|
+
* drawing it whatever this says, because the caller that wants the control
|
|
105
|
+
* has nowhere better to put the rows: `renderWorkspace`'s rail is virtualized
|
|
106
|
+
* on a fixed row pitch, and content of arbitrary height inside that scroll
|
|
107
|
+
* track breaks the offset-to-row arithmetic the window is re-cut from. This
|
|
108
|
+
* zone has no such constraint.
|
|
109
|
+
*
|
|
110
|
+
* A BOOLEAN AMONG DATA-SHAPED OPTIONS, and it is one deliberately. Its three
|
|
111
|
+
* siblings hand this renderer a VALUE it could not otherwise know — what is
|
|
112
|
+
* selected, which edges are in flight. This one answers a different question:
|
|
113
|
+
* whether a caller has already drawn a control this renderer would otherwise
|
|
114
|
+
* draw. There is no value that carries that fact, because it is a fact about
|
|
115
|
+
* the caller's own markup.
|
|
116
|
+
*
|
|
117
|
+
* DEFAULT `true`, so a standalone ladder is unchanged. It has no rail to put
|
|
118
|
+
* a footer at the foot of, which is why the control lives in its chrome by
|
|
119
|
+
* default rather than by accident; `renderWorkspace` is the caller that has
|
|
120
|
+
* one, and §17a puts the count there.
|
|
121
|
+
*/
|
|
122
|
+
readonly isolatedChip?: boolean | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* The id to put on the isolated list, for a caller whose control is elsewhere.
|
|
125
|
+
*
|
|
126
|
+
* MINTED BY THE CALLER, BECAUSE ONLY THE CALLER KNOWS THE PAGE. `searchSpec`
|
|
127
|
+
* records why this renderer must not invent one: a host rendering two
|
|
128
|
+
* documents side by side emits the markup twice, and a duplicated `id` makes
|
|
129
|
+
* the second surface's reference resolve to the first surface's element. The
|
|
130
|
+
* caller drawing the remote control is the one that can make the value unique
|
|
131
|
+
* and use the same string on both halves.
|
|
132
|
+
*
|
|
133
|
+
* Absent, the list carries no `id` and no control names it — which is right
|
|
134
|
+
* for the adjacent chip, whose list is already its next sibling.
|
|
135
|
+
*/
|
|
136
|
+
readonly isolatedListId?: string | undefined;
|
|
93
137
|
}
|
|
94
138
|
export interface ScaleLadderResult {
|
|
95
139
|
readonly ladder: ScaleLadder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/scale/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/scale/render.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EAQpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAMvD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAIL,KAAK,WAAW,EAIjB,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AA0RD,kDAAkD;AAClD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAoFnB"}
|