@issuegraph/viewer 0.3.0 → 0.9.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/dist/clusters.d.ts +116 -0
- package/dist/clusters.d.ts.map +1 -1
- package/dist/clusters.js +85 -2
- package/dist/clusters.js.map +1 -1
- package/dist/document.d.ts +228 -5
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +204 -3
- package/dist/document.js.map +1 -1
- package/dist/element.d.ts +11 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js.map +1 -1
- package/dist/index.d.ts +17 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -4
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +79 -50
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +371 -170
- package/dist/layout.js.map +1 -1
- package/dist/marks.d.ts +105 -0
- package/dist/marks.d.ts.map +1 -0
- package/dist/marks.js +430 -0
- package/dist/marks.js.map +1 -0
- package/dist/mount.d.ts +13 -0
- package/dist/mount.d.ts.map +1 -1
- package/dist/mount.js +69 -1
- package/dist/mount.js.map +1 -1
- package/dist/navigation.d.ts +14 -0
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +51 -0
- package/dist/navigation.js.map +1 -1
- package/dist/parts.d.ts +308 -2
- package/dist/parts.d.ts.map +1 -1
- package/dist/parts.js +845 -65
- package/dist/parts.js.map +1 -1
- package/dist/projections/graph.d.ts +25 -0
- package/dist/projections/graph.d.ts.map +1 -1
- package/dist/projections/graph.js +476 -335
- package/dist/projections/graph.js.map +1 -1
- package/dist/projections/linear.d.ts +135 -0
- package/dist/projections/linear.d.ts.map +1 -1
- package/dist/projections/linear.js +266 -31
- package/dist/projections/linear.js.map +1 -1
- package/dist/projections/tree.d.ts.map +1 -1
- package/dist/projections/tree.js +29 -3
- package/dist/projections/tree.js.map +1 -1
- package/dist/styles.d.ts +10 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +1275 -132
- package/dist/styles.js.map +1 -1
- package/dist/theme.d.ts +5 -6
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +119 -7
- package/dist/theme.js.map +1 -1
- package/dist/vocabulary.d.ts +39 -0
- package/dist/vocabulary.d.ts.map +1 -1
- package/dist/vocabulary.js +27 -0
- package/dist/vocabulary.js.map +1 -1
- package/package.json +2 -2
package/dist/clusters.d.ts
CHANGED
|
@@ -30,9 +30,125 @@ export interface Cluster {
|
|
|
30
30
|
* answer, relayed — never derived from the edges here.
|
|
31
31
|
*/
|
|
32
32
|
readonly hasCycle: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* How many members the host names in a cycle — never the whole component.
|
|
35
|
+
*
|
|
36
|
+
* A COMPONENT IS UNDIRECTED AND A CYCLE IS NOT. `connectedComponents` joins
|
|
37
|
+
* members across EVERY relationship, so a component holding a two-issue cycle
|
|
38
|
+
* can also hold fifty issues that merely touch it, and SPEC §6.6 is narrow
|
|
39
|
+
* about the consequence: "Issues in a cycle are not ready" — the issues, not
|
|
40
|
+
* the component. `hasCycle` alone cannot tell "three of three are stuck" from
|
|
41
|
+
* "two of fifty-two are", and a surface reading it as the former says
|
|
42
|
+
* something false about the other fifty.
|
|
43
|
+
*/
|
|
44
|
+
readonly stuckMembers: number;
|
|
33
45
|
/** The longest `blocked-by` chain, in edges. `0` when nothing blocks. */
|
|
34
46
|
readonly chainDepth: number;
|
|
35
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* What a component says about how the work inside it runs — the ONE fact a
|
|
50
|
+
* capsule prints under its name, resolved here so every surface prints the
|
|
51
|
+
* same one.
|
|
52
|
+
*
|
|
53
|
+
* IT IS A UNION BECAUSE THE THREE CASES ARE NOT VARIANTS OF ONE SENTENCE, and
|
|
54
|
+
* a capsule that could hold two of them printed something untrue. `chainDepth`
|
|
55
|
+
* is the longest ACYCLIC chain (`chainDepthOf` says so, and a prior round fixed
|
|
56
|
+
* it to be exactly that), so on a component the host reports as stuck the
|
|
57
|
+
* number is right about its own question and wrong about the reader's: a small
|
|
58
|
+
* finite depth beside a `cycle` badge reads as a work estimate — *four issues,
|
|
59
|
+
* two deep, get going* — when none of the members can ever be ready at all.
|
|
60
|
+
* §17d calls a cycle "the only finding that stops work outright", and frame
|
|
61
|
+
* `17f` draws the consequence where every other capsule draws its depth.
|
|
62
|
+
*
|
|
63
|
+
* So the depth is not suppressed at the point of drawing, which would leave two
|
|
64
|
+
* renderers each remembering to. There is no value to suppress: a stuck
|
|
65
|
+
* component has no `depth` field to print.
|
|
66
|
+
*/
|
|
67
|
+
export type ClusterReach =
|
|
68
|
+
/**
|
|
69
|
+
* The host reports a cycle through this component.
|
|
70
|
+
*
|
|
71
|
+
* NAMED FOR WHAT IT CONTAINS, NOT FOR A CONSEQUENCE. This arm was `stuck`,
|
|
72
|
+
* and that name is only true on the `held === of` leg — a two-issue loop
|
|
73
|
+
* inside a fifty-two-issue component makes the component cyclic, not stuck,
|
|
74
|
+
* which is the whole reason the two counts are here and the label stops
|
|
75
|
+
* short of a readiness claim. A discriminant an exhaustive consumer reads as
|
|
76
|
+
* "none of this can be worked" then contradicts the sentence rendered
|
|
77
|
+
* beside it. Same correction as `no-chain` below, on the arm that prompted
|
|
78
|
+
* it.
|
|
79
|
+
*
|
|
80
|
+
* BOTH NUMBERS, because "how much of this is a loop" is the question and the
|
|
81
|
+
* two answers read completely differently: `held === of` is a component that
|
|
82
|
+
* is entirely a loop and can never produce anything, while `held < of` is a
|
|
83
|
+
* loop sitting inside a larger component. Saying the first about the second is
|
|
84
|
+
* the overreach SPEC §6.6 rules out.
|
|
85
|
+
*
|
|
86
|
+
* NEITHER NUMBER IS A READINESS COUNT, and `held` in particular is not "how
|
|
87
|
+
* many cannot start". An issue blocked by a cycle member never becomes ready
|
|
88
|
+
* either, so the stuck set is the cycle plus everything transitively behind
|
|
89
|
+
* it — and deriving that here would be deriving readiness inside a package
|
|
90
|
+
* that takes the host's answer for it. `clusterReachLabel` words the
|
|
91
|
+
* `held < of` arm accordingly: what the component contains, not what can run.
|
|
92
|
+
*/
|
|
93
|
+
{
|
|
94
|
+
readonly kind: 'cyclic';
|
|
95
|
+
readonly held: number;
|
|
96
|
+
readonly of: number;
|
|
97
|
+
}
|
|
98
|
+
/** The longest `blocked-by` chain, in edges. At least one. */
|
|
99
|
+
| {
|
|
100
|
+
readonly kind: 'chain';
|
|
101
|
+
readonly depth: number;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* It carries `blocked-by` edges, and none of them orders anything: the chain
|
|
105
|
+
* walk stepped over every one, so there is no chain to report.
|
|
106
|
+
*
|
|
107
|
+
* NAMED AFTER ITS PREDICATE, NOT AFTER WHAT THE PREDICATE IMPLIES. An earlier
|
|
108
|
+
* revision called this `looped`, and the inference behind that name is sound
|
|
109
|
+
* — a skipped edge is a back-edge, and a back-edge closes a directed loop. It
|
|
110
|
+
* was still the wrong name, for the reason this module's header already
|
|
111
|
+
* gives: **the cycle question is not asked here at all**, it is the host's
|
|
112
|
+
* answer relayed through `stuck`. A discriminant reading `looped` is one an
|
|
113
|
+
* exhaustive consumer can reasonably take as evidence of a cycle, which would
|
|
114
|
+
* make this package assert from a local walk exactly what it refuses to
|
|
115
|
+
* derive. So it says only what it saw: blocking edges, no ordering.
|
|
116
|
+
*
|
|
117
|
+
* UNREACHABLE THROUGH `normalizeDocument`, WHICH DROPS A SELF-EDGE, and
|
|
118
|
+
* encoded anyway. A loop of two or more always leaves at least one edge the
|
|
119
|
+
* walk can follow, so the only way every edge is skipped is a self-loop — and
|
|
120
|
+
* `clustersOf` is a public export taking a plain `NormalizedDocument` a
|
|
121
|
+
* consumer can build by hand. The case is here because the alternative was
|
|
122
|
+
* `unblocked` covering it, which is a claim about a component with a blocking
|
|
123
|
+
* count printed beside it.
|
|
124
|
+
*/
|
|
125
|
+
| {
|
|
126
|
+
readonly kind: 'no-chain';
|
|
127
|
+
readonly edges: number;
|
|
128
|
+
}
|
|
129
|
+
/** No `blocked-by` edge at all, so nothing in the component waits on anything. */
|
|
130
|
+
| {
|
|
131
|
+
readonly kind: 'unblocked';
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* The reach of one component.
|
|
135
|
+
*
|
|
136
|
+
* Derived rather than stored, so `Cluster` keeps carrying both raw facts for a
|
|
137
|
+
* caller asking a different question, and the two cannot disagree.
|
|
138
|
+
*/
|
|
139
|
+
export declare function clusterReach(cluster: Cluster): ClusterReach;
|
|
140
|
+
/**
|
|
141
|
+
* The reach as the capsule prints it — frame `17f`'s own words.
|
|
142
|
+
*
|
|
143
|
+
* THE WORDING LIVES BESIDE THE FACT, for the reason `why-rank` already
|
|
144
|
+
* establishes on this surface: two renderers drawing one fact must not each
|
|
145
|
+
* hold their own sentence for it, or the §16 capsule and the §17f capsule
|
|
146
|
+
* describe the same component differently on one screen.
|
|
147
|
+
*
|
|
148
|
+
* Total over the union, so a fourth case cannot be added without a compiler
|
|
149
|
+
* error here.
|
|
150
|
+
*/
|
|
151
|
+
export declare function clusterReachLabel(reach: ClusterReach): string;
|
|
36
152
|
/** Every component the document declares, largest first, then by first member. */
|
|
37
153
|
export declare function clustersOf(document: NormalizedDocument,
|
|
38
154
|
/**
|
package/dist/clusters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../src/clusters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,OAAO;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAuID,kFAAkF;AAClF,wBAAgB,UAAU,CACxB,QAAQ,EAAE,kBAAkB;AAC5B;;;;;;;GAOG;AACH,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,SAAS,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clusters.d.ts","sourceRoot":"","sources":["../src/clusters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,OAAO;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,YAAY;AACtB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE;AACzE,8DAA8D;GAC5D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACpD;;;;;;;;;;;;;;;;;;;;;GAqBG;GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACvD,kFAAkF;GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAEnC;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAc3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAoC7D;AAuID,kFAAkF;AAClF,wBAAgB,UAAU,CACxB,QAAQ,EAAE,kBAAkB;AAC5B;;;;;;;GAOG;AACH,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,SAAS,OAAO,EAAE,CA2DpB"}
|
package/dist/clusters.js
CHANGED
|
@@ -20,6 +20,77 @@
|
|
|
20
20
|
* differ, and both were on one screen. One answer, given, is the rule this
|
|
21
21
|
* package already applies to the order; the cycle badge follows it.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* The reach of one component.
|
|
25
|
+
*
|
|
26
|
+
* Derived rather than stored, so `Cluster` keeps carrying both raw facts for a
|
|
27
|
+
* caller asking a different question, and the two cannot disagree.
|
|
28
|
+
*/
|
|
29
|
+
export function clusterReach(cluster) {
|
|
30
|
+
if (cluster.stuckMembers > 0) {
|
|
31
|
+
return { kind: 'cyclic', held: cluster.stuckMembers, of: cluster.members.length };
|
|
32
|
+
}
|
|
33
|
+
// ASKED OF THE EDGES, NOT OF THE WALK'S ANSWER. `chainDepth === 0` and "has
|
|
34
|
+
// no blocking edge" agree on every document `normalizeDocument` can produce,
|
|
35
|
+
// and they are not the same claim: the depth is what the walk COULD FOLLOW,
|
|
36
|
+
// and it skips a back-edge. Reading `unblocked` off it would render "no
|
|
37
|
+
// blocking chain" beside a non-zero blocking count on the same card — the
|
|
38
|
+
// exact shape of contradiction `ClusterReach` exists to make unrepresentable,
|
|
39
|
+
// rebuilt one predicate down.
|
|
40
|
+
if (cluster.blockedByEdges === 0)
|
|
41
|
+
return { kind: 'unblocked' };
|
|
42
|
+
if (cluster.chainDepth === 0)
|
|
43
|
+
return { kind: 'no-chain', edges: cluster.blockedByEdges };
|
|
44
|
+
return { kind: 'chain', depth: cluster.chainDepth };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The reach as the capsule prints it — frame `17f`'s own words.
|
|
48
|
+
*
|
|
49
|
+
* THE WORDING LIVES BESIDE THE FACT, for the reason `why-rank` already
|
|
50
|
+
* establishes on this surface: two renderers drawing one fact must not each
|
|
51
|
+
* hold their own sentence for it, or the §16 capsule and the §17f capsule
|
|
52
|
+
* describe the same component differently on one screen.
|
|
53
|
+
*
|
|
54
|
+
* Total over the union, so a fourth case cannot be added without a compiler
|
|
55
|
+
* error here.
|
|
56
|
+
*/
|
|
57
|
+
export function clusterReachLabel(reach) {
|
|
58
|
+
switch (reach.kind) {
|
|
59
|
+
// ONE ARM MAKES A READINESS CLAIM, AND ONLY BECAUSE IT CANNOT BE WRONG.
|
|
60
|
+
//
|
|
61
|
+
// `held === of` is a component that is entirely a loop: SPEC §6.6 says
|
|
62
|
+
// issues in a cycle are not ready, so "nothing can start" follows for every
|
|
63
|
+
// member with nothing to derive. That is the frame's own capsule — three
|
|
64
|
+
// issues, all of them the loop — and its words are kept.
|
|
65
|
+
//
|
|
66
|
+
// `held < of` says what the component CONTAINS and stops there. The obvious
|
|
67
|
+
// reading, "the other members are fine", is false: an issue blocked by a
|
|
68
|
+
// cycle member never becomes ready either, so the truly-stuck set is the
|
|
69
|
+
// cycle plus everything transitively behind it. Computing that here would
|
|
70
|
+
// mean deriving READINESS inside the viewer — the one thing this package
|
|
71
|
+
// refuses, because the host's model already answers it and two answers to
|
|
72
|
+
// one question on one screen is the defect the cycle badge itself was
|
|
73
|
+
// rewritten to remove. The rail beside this canvas is the surface that
|
|
74
|
+
// holds that answer, and it is complete at any size.
|
|
75
|
+
//
|
|
76
|
+
// NEITHER ARM PRINTS A DEPTH. A partly-stuck component has a real chain
|
|
77
|
+
// among its reachable members, but this slot answers "what is in here that
|
|
78
|
+
// changes how it runs", and a loop outranks how deep the rest goes.
|
|
79
|
+
case 'cyclic':
|
|
80
|
+
return reach.held === reach.of
|
|
81
|
+
? 'nothing can start'
|
|
82
|
+
: `${String(reach.held)} of ${String(reach.of)} in a cycle`;
|
|
83
|
+
case 'chain':
|
|
84
|
+
return `deepest chain ${String(reach.depth)}`;
|
|
85
|
+
// NAMES THE EDGES, so the sentence cannot contradict the count drawn beside
|
|
86
|
+
// it: something blocks, and none of it puts the work in an order. It does
|
|
87
|
+
// not name a loop either, for the reason the arm's own note gives.
|
|
88
|
+
case 'no-chain':
|
|
89
|
+
return `${String(reach.edges)} blocking ${reach.edges === 1 ? 'edge' : 'edges'}, none ordering`;
|
|
90
|
+
case 'unblocked':
|
|
91
|
+
return 'no blocking chain';
|
|
92
|
+
}
|
|
93
|
+
}
|
|
23
94
|
function connectedComponents(document, drawn) {
|
|
24
95
|
const adjacency = new Map();
|
|
25
96
|
const touch = (key) => {
|
|
@@ -197,8 +268,20 @@ drawn) {
|
|
|
197
268
|
// THE HOST'S ANSWER, LOOKED UP — never re-derived. A cycle the reader
|
|
198
269
|
// found touches this component when any member of it is a member here; the
|
|
199
270
|
// set is built once above, so the whole pass stays linear.
|
|
200
|
-
|
|
201
|
-
|
|
271
|
+
// COUNTED, NOT JUST TESTED. `some` answers whether the component touches a
|
|
272
|
+
// cycle; how MUCH of it the cycle holds is a different question, and the
|
|
273
|
+
// one a reader acts on. Same single pass over the members either way.
|
|
274
|
+
let stuckMembers = 0;
|
|
275
|
+
for (const member of members)
|
|
276
|
+
if (stuck.has(member))
|
|
277
|
+
stuckMembers += 1;
|
|
278
|
+
return {
|
|
279
|
+
members,
|
|
280
|
+
blockedByEdges,
|
|
281
|
+
hasCycle: stuckMembers > 0,
|
|
282
|
+
stuckMembers,
|
|
283
|
+
chainDepth: chainDepthOf(members, blockedBy),
|
|
284
|
+
};
|
|
202
285
|
});
|
|
203
286
|
// CODE UNITS, NOT `localeCompare`. This package promises deterministic
|
|
204
287
|
// rendering, and `localeCompare` without an explicit locale uses the RUNTIME's
|
package/dist/clusters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clusters.js","sourceRoot":"","sources":["../src/clusters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"clusters.js","sourceRoot":"","sources":["../src/clusters.ts"],"names":[],"mappings":"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"}
|
package/dist/document.d.ts
CHANGED
|
@@ -161,6 +161,16 @@ export interface ViewerIssue {
|
|
|
161
161
|
readonly previewOnly?: PreviewOnly | undefined;
|
|
162
162
|
/** Set when two host signals disagreed about this row. Absent means they agreed, or there was one. */
|
|
163
163
|
readonly disagreement?: Disagreement | undefined;
|
|
164
|
+
/**
|
|
165
|
+
* The block's `evidence` field, when the host read one.
|
|
166
|
+
*
|
|
167
|
+
* ABSENT READS `asserted`, which §16d states in those words — so the type is
|
|
168
|
+
* optional rather than defaulted, and the row draws a chip only for
|
|
169
|
+
* `verified`. A panel that printed "asserted" on every row would spend a chip
|
|
170
|
+
* slot saying nothing, and defaulting the value here would make an absent
|
|
171
|
+
* field indistinguishable from a stated one.
|
|
172
|
+
*/
|
|
173
|
+
readonly evidence?: 'asserted' | 'verified' | undefined;
|
|
164
174
|
}
|
|
165
175
|
/** One relationship, exactly as the format declares it. */
|
|
166
176
|
export interface ViewerEdge {
|
|
@@ -175,9 +185,14 @@ export interface ViewerEdge {
|
|
|
175
185
|
*/
|
|
176
186
|
export interface ViewerSlot {
|
|
177
187
|
/**
|
|
178
|
-
* The 1-based rank, or `null` when the
|
|
179
|
-
*
|
|
180
|
-
*
|
|
188
|
+
* The 1-based rank, or `null` when the host's order cannot place the slot.
|
|
189
|
+
*
|
|
190
|
+
* NOT THE SAME AS "HELD". `RULINGS.md` §1 (Claude Design, 2026-09-20) draws
|
|
191
|
+
* both arms: a held slot whose blocker is *inside* the previewed order keeps
|
|
192
|
+
* its rank — `#512 ⊘ blocked-by #488` sits at rank 2 while #488 sits at 1 —
|
|
193
|
+
* and one whose blocker is outside it renders `—` and names a
|
|
194
|
+
* {@link wouldBeRank} instead. `ready` is the field that answers whether
|
|
195
|
+
* anything may start; this one answers where the row sits.
|
|
181
196
|
*/
|
|
182
197
|
readonly rank: number | null;
|
|
183
198
|
/** The member that placed the slot — the detail surface's subject. */
|
|
@@ -193,6 +208,25 @@ export interface ViewerSlot {
|
|
|
193
208
|
* dashed one when held.
|
|
194
209
|
*/
|
|
195
210
|
readonly readyAfterRank?: number | null | undefined;
|
|
211
|
+
/**
|
|
212
|
+
* The position this slot WOULD take, for a slot the order could not place.
|
|
213
|
+
*
|
|
214
|
+
* §16a prints it beside the id — `#530 · would be rank 4` — so a row that
|
|
215
|
+
* shows `—` still answers *where would this have been*. Absent or `null`
|
|
216
|
+
* whenever {@link rank} carries a number, and a host that does not compute
|
|
217
|
+
* one omits it: the slot then reads exactly as it did before this field.
|
|
218
|
+
*
|
|
219
|
+
* NOT A COLLISION with the rank of the same number. §16a draws `#503` at
|
|
220
|
+
* rank 4 and `#530` as *would be rank 4* at once, because a would-be rank is
|
|
221
|
+
* the position the slot would TAKE — #530 arriving among the P1s lands at 4
|
|
222
|
+
* and pushes #503 to 5. It consumes nothing, so the numbers below it are
|
|
223
|
+
* unchanged, which is the whole reason the two can read alike.
|
|
224
|
+
*
|
|
225
|
+
* THE VIEWER NEVER COMPUTES IT. The order is the host's, and counting a
|
|
226
|
+
* position here would state the reader's slice as a fact about the order —
|
|
227
|
+
* the same rule that keeps {@link OrderCounts} supplied.
|
|
228
|
+
*/
|
|
229
|
+
readonly wouldBeRank?: number | null | undefined;
|
|
196
230
|
}
|
|
197
231
|
/** An issue the order deliberately never works. */
|
|
198
232
|
export interface ViewerExclusion {
|
|
@@ -205,8 +239,8 @@ export interface ViewerExclusion {
|
|
|
205
239
|
export interface ViewerOrder {
|
|
206
240
|
/**
|
|
207
241
|
* Every slot in derivation order. A HELD slot keeps its position — it is
|
|
208
|
-
* never moved to the end — so
|
|
209
|
-
* work would have sat.
|
|
242
|
+
* never moved to the end — so the row that explains why the work is not
|
|
243
|
+
* running sits exactly where the work would have sat.
|
|
210
244
|
*/
|
|
211
245
|
readonly slots: readonly ViewerSlot[];
|
|
212
246
|
readonly excluded: readonly ViewerExclusion[];
|
|
@@ -265,6 +299,154 @@ export interface Freshness {
|
|
|
265
299
|
*/
|
|
266
300
|
readonly refresh?: string | undefined;
|
|
267
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* A control the host will perform, offered beside a condition.
|
|
304
|
+
*
|
|
305
|
+
* The same rule the refresh button already follows: the viewer draws it only
|
|
306
|
+
* because a host supplied a word for it, publishes the command, and wires
|
|
307
|
+
* nothing. `href` turns it into a link instead — some hosts route rather than
|
|
308
|
+
* act — and is validated against the same scheme allowlist a deep link is,
|
|
309
|
+
* because it becomes the same executable surface when it reaches the DOM.
|
|
310
|
+
*/
|
|
311
|
+
export interface ConditionAction {
|
|
312
|
+
readonly label: string;
|
|
313
|
+
readonly href?: string | undefined;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* What the host says is true of the panel as a whole, in the three shapes the
|
|
317
|
+
* design names beyond a populated order.
|
|
318
|
+
*
|
|
319
|
+
* A HOST FACT, LIKE EVERY OTHER FIELD HERE. Whether an import is in flight,
|
|
320
|
+
* whether the index could be read, and why nothing is eligible are answers only
|
|
321
|
+
* the host holds — the viewer holds a document, and a document cannot say why
|
|
322
|
+
* it is short. Deriving `empty` from an order with no slots would be the same
|
|
323
|
+
* mistake `OrderCounts` exists to avoid: a fact about the reader's slice stated
|
|
324
|
+
* as a fact about the world.
|
|
325
|
+
*
|
|
326
|
+
* EVERY STRING IS THE HOST'S WORDS, none of them the package's. The sentences
|
|
327
|
+
* this state needs are claims about a host's own runner — that it stays armed,
|
|
328
|
+
* that it continues on its last known order — and a rendering package has no
|
|
329
|
+
* standing to make them.
|
|
330
|
+
*
|
|
331
|
+
* ONE KIND AT A TIME, AND THAT IS A NARROWING RATHER THAN A CLAIM ABOUT THE
|
|
332
|
+
* WORLD. A repository can be importing AND have nothing eligible; a host in
|
|
333
|
+
* that position states `importing`, and because a stated condition replaces the
|
|
334
|
+
* projection's own empty sentence, the reader is told one thing rather than
|
|
335
|
+
* two. A union is used over a list because this type is published: widening a
|
|
336
|
+
* union later is additive, and narrowing a list is not.
|
|
337
|
+
*/
|
|
338
|
+
export type ViewerCondition =
|
|
339
|
+
/** The first import is still running. The order below is real and incomplete. */
|
|
340
|
+
{
|
|
341
|
+
readonly kind: 'importing';
|
|
342
|
+
readonly headline: string;
|
|
343
|
+
/** That ranks will change as the rest arrive. */
|
|
344
|
+
readonly caution: string;
|
|
345
|
+
/** Honest progress, as the host counts it: `412 of ~1,200 issues`. */
|
|
346
|
+
readonly progress: string;
|
|
347
|
+
readonly glyph?: string | undefined;
|
|
348
|
+
}
|
|
349
|
+
/** Nothing is eligible. The host says why, and that its pipeline stays armed. */
|
|
350
|
+
| {
|
|
351
|
+
readonly kind: 'empty';
|
|
352
|
+
readonly headline: string;
|
|
353
|
+
readonly reason: string;
|
|
354
|
+
readonly assurance: string;
|
|
355
|
+
readonly action?: ConditionAction | undefined;
|
|
356
|
+
readonly glyph?: string | undefined;
|
|
357
|
+
}
|
|
358
|
+
/** The index could not be read. The order shown is the last one that could. */
|
|
359
|
+
| {
|
|
360
|
+
readonly kind: 'error';
|
|
361
|
+
readonly headline: string;
|
|
362
|
+
readonly assurance: string;
|
|
363
|
+
/**
|
|
364
|
+
* The label of a retry control. WHEN PRESENT, AND ONLY THEN, the viewer
|
|
365
|
+
* publishes `retry:index` and wires nothing — re-reading an index is
|
|
366
|
+
* fetching, which this layer never does.
|
|
367
|
+
*
|
|
368
|
+
* NAMESPACED, AND NOT THE BARE WORD. `data-ig-command` is one namespace
|
|
369
|
+
* shared with `@issuegraph/editor` and with whatever the host publishes
|
|
370
|
+
* beside it, and a bare `retry` already means "retry that write" to the
|
|
371
|
+
* editor's own reducer. Two meanings on one name is a control that looks
|
|
372
|
+
* wired and does the wrong thing, or nothing.
|
|
373
|
+
*/
|
|
374
|
+
readonly retry?: string | undefined;
|
|
375
|
+
readonly glyph?: string | undefined;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* A FILTER IS ON AND NOTHING MATCHED IT. The order is intact; the host is
|
|
379
|
+
* only declining to draw part of it.
|
|
380
|
+
*
|
|
381
|
+
* THIS IS NOT A ZERO, AND THAT IS THE WHOLE REASON THE KIND EXISTS. §16i
|
|
382
|
+
* enumerates four zeros and **none of them is "a filter is on"** — so a
|
|
383
|
+
* narrowed document with no rows left was falling through to the projection's
|
|
384
|
+
* own derived sentence, *"Nothing is in the order right now"*, while the
|
|
385
|
+
* order it describes still held every one of its ranks. `RULINGS.md` §2:
|
|
386
|
+
* that is *"a false statement about the data, and it is the one thing this
|
|
387
|
+
* panel exists not to make."*
|
|
388
|
+
*
|
|
389
|
+
* It is the same defect {@link statesItsOwnCause} already names one input
|
|
390
|
+
* over — *"its own derived sentence is not a fallback explanation but a false
|
|
391
|
+
* one"* — reached by narrowing rather than by a host condition, which is why
|
|
392
|
+
* the remedy is the same: the host RECORDS what it did, and the projection
|
|
393
|
+
* stops deriving.
|
|
394
|
+
*
|
|
395
|
+
* THE DENOMINATOR IS REQUIRED, not optional, because it is the half that
|
|
396
|
+
* does the work. *"No flagged rows match"* alone still reads as absence;
|
|
397
|
+
* *"8 issues are ranked"* beside it cannot. A kind that let a host omit it
|
|
398
|
+
* would let the lie back in through a missing field.
|
|
399
|
+
*/
|
|
400
|
+
| {
|
|
401
|
+
readonly kind: 'filtered';
|
|
402
|
+
/** What did not match: `No flagged rows match.` */
|
|
403
|
+
readonly headline: string;
|
|
404
|
+
/** What still exists regardless: `8 issues are ranked`. */
|
|
405
|
+
readonly denominator: string;
|
|
406
|
+
/** The way back, which §17d requires be one click: `clear the filter`. */
|
|
407
|
+
readonly action?: ConditionAction | undefined;
|
|
408
|
+
readonly glyph?: string | undefined;
|
|
409
|
+
};
|
|
410
|
+
/**
|
|
411
|
+
* How much of the host's backlog declares Issuegraph relationships at all.
|
|
412
|
+
*
|
|
413
|
+
* THE DAY-ONE FACT, and it is the host's for the same reason `OrderCounts` is:
|
|
414
|
+
* the document here may be a window or a slice, so a count taken over it would
|
|
415
|
+
* state the reader's scroll position as a fact about the repository. The host
|
|
416
|
+
* has the whole backlog; the host counts.
|
|
417
|
+
*
|
|
418
|
+
* TWO INDEPENDENT FIELDS, and which of them to supply is the host's call. The
|
|
419
|
+
* design draws a header count where adoption is partial and a footer line where
|
|
420
|
+
* it is absent; a viewer that picked between them from `declaring === 0` would
|
|
421
|
+
* be deriving a state from a number, which is the thing this port exists to
|
|
422
|
+
* stop. So both are optional and neither implies the other.
|
|
423
|
+
*/
|
|
424
|
+
export interface Adoption {
|
|
425
|
+
/** `12 of 48 declare relationships`. Both non-negative integers. */
|
|
426
|
+
readonly counts?: {
|
|
427
|
+
readonly declaring: number;
|
|
428
|
+
readonly total: number;
|
|
429
|
+
} | undefined;
|
|
430
|
+
/** One quiet line for the panel footer. The host's sentence, link and dismiss word. */
|
|
431
|
+
readonly note?: {
|
|
432
|
+
readonly text: string;
|
|
433
|
+
/**
|
|
434
|
+
* A SHORT LINK BESIDE THE SENTENCE, never the sentence itself.
|
|
435
|
+
*
|
|
436
|
+
* The design asks this line to read quiet — it is the day-one panel's
|
|
437
|
+
* only commentary, on a state that has to feel complete rather than
|
|
438
|
+
* lacking. Hanging the href on `text` made the whole sentence one
|
|
439
|
+
* underlined anchor, which is the loudest element on the panel and the
|
|
440
|
+
* opposite of what was asked for. So the label is its own field.
|
|
441
|
+
*/
|
|
442
|
+
readonly link?: {
|
|
443
|
+
readonly text: string;
|
|
444
|
+
readonly href: string;
|
|
445
|
+
} | undefined;
|
|
446
|
+
/** The label of a dismiss control. Absent draws none; the viewer never hides its own line. */
|
|
447
|
+
readonly dismiss?: string | undefined;
|
|
448
|
+
} | undefined;
|
|
449
|
+
}
|
|
268
450
|
/**
|
|
269
451
|
* THE HOST-FACTS PORT: the half of the design the graph cannot derive.
|
|
270
452
|
*
|
|
@@ -275,11 +457,34 @@ export interface Freshness {
|
|
|
275
457
|
* viewer constant: no cap, no clock, no repository name.
|
|
276
458
|
*/
|
|
277
459
|
export interface HostFacts {
|
|
460
|
+
/**
|
|
461
|
+
* What backlog this is — the qualified repository, beside the surface name.
|
|
462
|
+
*
|
|
463
|
+
* ADDED FOR §17, and on this port rather than a second one for the reason
|
|
464
|
+
* every other fact here is on it: a workspace that took its identity from
|
|
465
|
+
* one place and its freshness from another could name one repository while
|
|
466
|
+
* stamping another's read. The viewer draws no link for it — that would mean
|
|
467
|
+
* knowing a tracker's URL shape, which is the knowledge this layer exists
|
|
468
|
+
* not to have.
|
|
469
|
+
*/
|
|
470
|
+
readonly identity?: string | undefined;
|
|
471
|
+
/**
|
|
472
|
+
* The label of §17a's `First pass →` entry.
|
|
473
|
+
*
|
|
474
|
+
* PRESENT MEANS THE HOST OFFERS ONE, absent means it does not — the same
|
|
475
|
+
* shape as `Freshness.refresh`, and for the same reason: the control is
|
|
476
|
+
* drawn with `data-ig-command` and wired to nothing, because whether a
|
|
477
|
+
* backlog has a first pass to run is the host's answer and running it is the
|
|
478
|
+
* host's job.
|
|
479
|
+
*/
|
|
480
|
+
readonly firstPass?: string | undefined;
|
|
278
481
|
/** How many ready slots may run at once. A non-negative integer. */
|
|
279
482
|
readonly concurrencyCap?: number | undefined;
|
|
280
483
|
readonly counts?: OrderCounts | undefined;
|
|
281
484
|
readonly running?: readonly RunningJob[] | undefined;
|
|
282
485
|
readonly freshness?: Freshness | undefined;
|
|
486
|
+
readonly condition?: ViewerCondition | undefined;
|
|
487
|
+
readonly adoption?: Adoption | undefined;
|
|
283
488
|
}
|
|
284
489
|
/** Everything the viewer draws. */
|
|
285
490
|
export interface ViewerDocument {
|
|
@@ -308,10 +513,14 @@ export interface ViewerDocument {
|
|
|
308
513
|
}
|
|
309
514
|
/** The host facts after normalisation: `running` always a list, the rest present only when the host stated them. */
|
|
310
515
|
export interface NormalizedHostFacts {
|
|
516
|
+
readonly identity?: string | undefined;
|
|
517
|
+
readonly firstPass?: string | undefined;
|
|
311
518
|
readonly concurrencyCap?: number | undefined;
|
|
312
519
|
readonly counts?: OrderCounts | undefined;
|
|
313
520
|
readonly running: readonly RunningJob[];
|
|
314
521
|
readonly freshness?: Freshness | undefined;
|
|
522
|
+
readonly condition?: ViewerCondition | undefined;
|
|
523
|
+
readonly adoption?: Adoption | undefined;
|
|
315
524
|
}
|
|
316
525
|
/**
|
|
317
526
|
* A normalised document plus an index over it. The index exists so no
|
|
@@ -358,6 +567,20 @@ export interface NormalizeResult {
|
|
|
358
567
|
*/
|
|
359
568
|
readonly diagnostics: readonly string[];
|
|
360
569
|
}
|
|
570
|
+
/**
|
|
571
|
+
* Whether a URL may be put in an `href` at all.
|
|
572
|
+
*
|
|
573
|
+
* EXPORTED BECAUSE A SIBLING OWES IT. `@issuegraph/editor` draws §17d's
|
|
574
|
+
* `Open in GitHub` link from a URL its HOST resolves, and an `href` is a
|
|
575
|
+
* script-execution sink that escaping does not close — `renderMarkup` escapes
|
|
576
|
+
* attribute TEXT and has no opinion about schemes. The alternative was a second
|
|
577
|
+
* allowlist out there, which is precisely the "second implementation whose
|
|
578
|
+
* input space drifts" this package's barrel exists to prevent, and it would
|
|
579
|
+
* have had to re-derive the canonicalization below rather than the easy part.
|
|
580
|
+
*
|
|
581
|
+
* The rule this package already applies to its own document links, unchanged.
|
|
582
|
+
*/
|
|
583
|
+
export declare function isLinkable(url: string): boolean;
|
|
361
584
|
/**
|
|
362
585
|
* Read a document into the shape every projection consumes.
|
|
363
586
|
*
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,kBAAkB,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,cAAc;AACxB,iFAAiF;AAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACpF,sEAAsE;GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC/D;;;;GAIG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC,CAAC;AAEN,wEAAwE;AACxE,MAAM,MAAM,UAAU;AACpB;;;;;GAKG;AACD,OAAO;AACT;;;;GAIG;GACD,SAAS,CAAC;AAEd,4DAA4D;AAC5D,UAAU,QAAQ;IAChB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,2FAA2F;AAC3F,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,oGAAoG;IACpG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAChB,oDAAoD;QACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,8DAA8D;QAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,kGAAkG;IAClG,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,sGAAsG;IACtG,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,kBAAkB,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,MAAM,cAAc;AACxB,iFAAiF;AAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACpF,sEAAsE;GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC/D;;;;GAIG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC,CAAC;AAEN,wEAAwE;AACxE,MAAM,MAAM,UAAU;AACpB;;;;;GAKG;AACD,OAAO;AACT;;;;GAIG;GACD,SAAS,CAAC;AAEd,4DAA4D;AAC5D,UAAU,QAAQ;IAChB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,2FAA2F;AAC3F,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,oGAAoG;IACpG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAChB,oDAAoD;QACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,8DAA8D;QAC9D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACjD,kGAAkG;IAClG,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/C,sGAAsG;IACtG,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACjD;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;CACzD;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClD;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;CAC/C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,MAAM,EAAE,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,eAAe;AACzB,iFAAiF;AAC/E;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AACH,iFAAiF;GAC/E;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AACH,+EAA+E;GAC7E;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AACH;;;;;;;;;;;;;;;;;;;;;;GAsBG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEN;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EACZ;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,GACD,SAAS,CAAC;IACd,uFAAuF;IACvF,QAAQ,CAAC,IAAI,CAAC,EACV;QACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB;;;;;;;;WAQG;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;QAC7E,8FAA8F;QAC9F,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,GACD,SAAS,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC1C;AAED,mCAAmC;AACnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC;AAED,oHAAoH;AACpH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;IAC7D,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,wGAAwG;IACxG,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAiB/C;AAkiBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA4ExE"}
|