@graview/primitives 0.1.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/LICENSE +96 -0
- package/README.md +25 -0
- package/dist/arrange-bar.d.ts +49 -0
- package/dist/arrange-bar.d.ts.map +1 -0
- package/dist/arrange-bar.js +264 -0
- package/dist/arrange-bar.js.map +1 -0
- package/dist/chat.d.ts +46 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +343 -0
- package/dist/chat.js.map +1 -0
- package/dist/companion.d.ts +58 -0
- package/dist/companion.d.ts.map +1 -0
- package/dist/companion.js +433 -0
- package/dist/companion.js.map +1 -0
- package/dist/connections.d.ts +23 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +100 -0
- package/dist/connections.js.map +1 -0
- package/dist/default-views.d.ts +35 -0
- package/dist/default-views.d.ts.map +1 -0
- package/dist/default-views.js +605 -0
- package/dist/default-views.js.map +1 -0
- package/dist/editable.d.ts +71 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +225 -0
- package/dist/editable.js.map +1 -0
- package/dist/figure.d.ts +30 -0
- package/dist/figure.d.ts.map +1 -0
- package/dist/figure.js +66 -0
- package/dist/figure.js.map +1 -0
- package/dist/find.d.ts +5 -0
- package/dist/find.d.ts.map +1 -0
- package/dist/find.js +252 -0
- package/dist/find.js.map +1 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/installation.d.ts +17 -0
- package/dist/installation.d.ts.map +1 -0
- package/dist/installation.js +37 -0
- package/dist/installation.js.map +1 -0
- package/dist/ladder.d.ts +2 -0
- package/dist/ladder.d.ts.map +1 -0
- package/dist/ladder.js +53 -0
- package/dist/ladder.js.map +1 -0
- package/dist/lens/arranging.d.ts +41 -0
- package/dist/lens/arranging.d.ts.map +1 -0
- package/dist/lens/arranging.js +38 -0
- package/dist/lens/arranging.js.map +1 -0
- package/dist/lens/board.d.ts +146 -0
- package/dist/lens/board.d.ts.map +1 -0
- package/dist/lens/board.js +658 -0
- package/dist/lens/board.js.map +1 -0
- package/dist/lens/calendar-dates.d.ts +19 -0
- package/dist/lens/calendar-dates.d.ts.map +1 -0
- package/dist/lens/calendar-dates.js +55 -0
- package/dist/lens/calendar-dates.js.map +1 -0
- package/dist/lens/calendar-drawing.d.ts +59 -0
- package/dist/lens/calendar-drawing.d.ts.map +1 -0
- package/dist/lens/calendar-drawing.js +229 -0
- package/dist/lens/calendar-drawing.js.map +1 -0
- package/dist/lens/calendar-options.d.ts +107 -0
- package/dist/lens/calendar-options.d.ts.map +1 -0
- package/dist/lens/calendar-options.js +19 -0
- package/dist/lens/calendar-options.js.map +1 -0
- package/dist/lens/calendar-placing.d.ts +35 -0
- package/dist/lens/calendar-placing.d.ts.map +1 -0
- package/dist/lens/calendar-placing.js +113 -0
- package/dist/lens/calendar-placing.js.map +1 -0
- package/dist/lens/calendar-spans.d.ts +48 -0
- package/dist/lens/calendar-spans.d.ts.map +1 -0
- package/dist/lens/calendar-spans.js +146 -0
- package/dist/lens/calendar-spans.js.map +1 -0
- package/dist/lens/calendar-view.d.ts +34 -0
- package/dist/lens/calendar-view.d.ts.map +1 -0
- package/dist/lens/calendar-view.js +228 -0
- package/dist/lens/calendar-view.js.map +1 -0
- package/dist/lens/calendar.d.ts +43 -0
- package/dist/lens/calendar.d.ts.map +1 -0
- package/dist/lens/calendar.js +43 -0
- package/dist/lens/calendar.js.map +1 -0
- package/dist/lens/coverage.d.ts +183 -0
- package/dist/lens/coverage.d.ts.map +1 -0
- package/dist/lens/coverage.js +732 -0
- package/dist/lens/coverage.js.map +1 -0
- package/dist/lens/horizon.d.ts +14 -0
- package/dist/lens/horizon.d.ts.map +1 -0
- package/dist/lens/horizon.js +20 -0
- package/dist/lens/horizon.js.map +1 -0
- package/dist/lens/more.d.ts +16 -0
- package/dist/lens/more.d.ts.map +1 -0
- package/dist/lens/more.js +17 -0
- package/dist/lens/more.js.map +1 -0
- package/dist/lens/plan-lens.d.ts +17 -0
- package/dist/lens/plan-lens.d.ts.map +1 -0
- package/dist/lens/plan-lens.js +24 -0
- package/dist/lens/plan-lens.js.map +1 -0
- package/dist/lens/plan-state.d.ts +122 -0
- package/dist/lens/plan-state.d.ts.map +1 -0
- package/dist/lens/plan-state.js +152 -0
- package/dist/lens/plan-state.js.map +1 -0
- package/dist/lens/plan-view.d.ts +10 -0
- package/dist/lens/plan-view.d.ts.map +1 -0
- package/dist/lens/plan-view.js +576 -0
- package/dist/lens/plan-view.js.map +1 -0
- package/dist/lens/plan.d.ts +25 -0
- package/dist/lens/plan.d.ts.map +1 -0
- package/dist/lens/plan.js +25 -0
- package/dist/lens/plan.js.map +1 -0
- package/dist/lens/reach.d.ts +47 -0
- package/dist/lens/reach.d.ts.map +1 -0
- package/dist/lens/reach.js +67 -0
- package/dist/lens/reach.js.map +1 -0
- package/dist/lens/timeline.d.ts +137 -0
- package/dist/lens/timeline.d.ts.map +1 -0
- package/dist/lens/timeline.js +426 -0
- package/dist/lens/timeline.js.map +1 -0
- package/dist/markup.d.ts +23 -0
- package/dist/markup.d.ts.map +1 -0
- package/dist/markup.js +24 -0
- package/dist/markup.js.map +1 -0
- package/dist/places.d.ts +24 -0
- package/dist/places.d.ts.map +1 -0
- package/dist/places.js +227 -0
- package/dist/places.js.map +1 -0
- package/dist/popover.d.ts +28 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +59 -0
- package/dist/popover.js.map +1 -0
- package/dist/primitives/index.d.ts +214 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +381 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/profile.d.ts +65 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +233 -0
- package/dist/profile.js.map +1 -0
- package/dist/quick-relations.d.ts +16 -0
- package/dist/quick-relations.d.ts.map +1 -0
- package/dist/quick-relations.js +183 -0
- package/dist/quick-relations.js.map +1 -0
- package/dist/relation-key.d.ts +44 -0
- package/dist/relation-key.d.ts.map +1 -0
- package/dist/relation-key.js +196 -0
- package/dist/relation-key.js.map +1 -0
- package/dist/seat.d.ts +137 -0
- package/dist/seat.d.ts.map +1 -0
- package/dist/seat.js +162 -0
- package/dist/seat.js.map +1 -0
- package/dist/seats.d.ts +21 -0
- package/dist/seats.d.ts.map +1 -0
- package/dist/seats.js +62 -0
- package/dist/seats.js.map +1 -0
- package/dist/seeding.d.ts +150 -0
- package/dist/seeding.d.ts.map +1 -0
- package/dist/seeding.js +538 -0
- package/dist/seeding.js.map +1 -0
- package/dist/shell.d.ts +74 -0
- package/dist/shell.d.ts.map +1 -0
- package/dist/shell.js +86 -0
- package/dist/shell.js.map +1 -0
- package/dist/theme.d.ts +50 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +1692 -0
- package/dist/theme.js.map +1 -0
- package/dist/wordmark.d.ts +15 -0
- package/dist/wordmark.d.ts.map +1 -0
- package/dist/wordmark.js +55 -0
- package/dist/wordmark.js.map +1 -0
- package/dist/workbench/activity.d.ts +75 -0
- package/dist/workbench/activity.d.ts.map +1 -0
- package/dist/workbench/activity.js +259 -0
- package/dist/workbench/activity.js.map +1 -0
- package/dist/workbench/agent-seat.d.ts +51 -0
- package/dist/workbench/agent-seat.d.ts.map +1 -0
- package/dist/workbench/agent-seat.js +112 -0
- package/dist/workbench/agent-seat.js.map +1 -0
- package/dist/workbench/answer-args.d.ts +31 -0
- package/dist/workbench/answer-args.d.ts.map +1 -0
- package/dist/workbench/answer-args.js +257 -0
- package/dist/workbench/answer-args.js.map +1 -0
- package/dist/workbench/back-out.d.ts +71 -0
- package/dist/workbench/back-out.d.ts.map +1 -0
- package/dist/workbench/back-out.js +238 -0
- package/dist/workbench/back-out.js.map +1 -0
- package/dist/workbench/following.d.ts +7 -0
- package/dist/workbench/following.d.ts.map +1 -0
- package/dist/workbench/following.js +26 -0
- package/dist/workbench/following.js.map +1 -0
- package/dist/workbench/index.d.ts +23 -0
- package/dist/workbench/index.d.ts.map +1 -0
- package/dist/workbench/index.js +23 -0
- package/dist/workbench/index.js.map +1 -0
- package/dist/workbench/inspector.d.ts +27 -0
- package/dist/workbench/inspector.d.ts.map +1 -0
- package/dist/workbench/inspector.js +745 -0
- package/dist/workbench/inspector.js.map +1 -0
- package/dist/workbench/standing.d.ts +16 -0
- package/dist/workbench/standing.d.ts.map +1 -0
- package/dist/workbench/standing.js +102 -0
- package/dist/workbench/standing.js.map +1 -0
- package/dist/workbench/trail.d.ts +35 -0
- package/dist/workbench/trail.d.ts.map +1 -0
- package/dist/workbench/trail.js +150 -0
- package/dist/workbench/trail.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { admitArrangement, arrange, arrangeable, } from "@graview/core";
|
|
3
|
+
import { useGraview, useNavigation } from "@graview/react";
|
|
4
|
+
import { ArrangeBar, arrangementOf, withArrangement } from "../arrange-bar.js";
|
|
5
|
+
const both = (a, b) => {
|
|
6
|
+
if (a === false || b === false)
|
|
7
|
+
return false;
|
|
8
|
+
const one = a === undefined || a === true ? {} : a;
|
|
9
|
+
const two = b === undefined || b === true ? {} : b;
|
|
10
|
+
return {
|
|
11
|
+
sort: one.sort !== false && two.sort !== false,
|
|
12
|
+
filter: one.filter !== false && two.filter !== false,
|
|
13
|
+
group: one.group !== false && two.group !== false,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
const ARRANGEMENT_WORDS = ["sort", "filter", "group", "q"];
|
|
17
|
+
export function useArranging(props, options = {}) {
|
|
18
|
+
const { store } = useGraview();
|
|
19
|
+
const { view, go } = useNavigation();
|
|
20
|
+
const all = props.nodes ?? [];
|
|
21
|
+
const subject = options.subject ?? (options.only ? all.filter(options.only) : all);
|
|
22
|
+
const rest = options.subject ? [] : options.only ? all.filter((node) => !options.only(node)) : [];
|
|
23
|
+
const kind = options.kind ?? subject[0]?.kind;
|
|
24
|
+
const allow = both(options.allow, options.lensAllows);
|
|
25
|
+
const said = ARRANGEMENT_WORDS.some((word) => view.within?.[word] !== undefined);
|
|
26
|
+
const asked = said ? arrangementOf(view) : (options.arrangedBy ?? {});
|
|
27
|
+
const offers = kind ? arrangeable(store.schema, String(kind)) : undefined;
|
|
28
|
+
const arrangement = offers ? admitArrangement(asked, offers).arrangement : {};
|
|
29
|
+
const arranged = arrange(subject, allow === false ? {} : arrangement, {
|
|
30
|
+
schema: store.schema,
|
|
31
|
+
graph: store.graph,
|
|
32
|
+
flagged: new Set(props.flagged ?? []),
|
|
33
|
+
});
|
|
34
|
+
// No row on a picture with a budget: a drive-in's thumbnail is a picture of the lens, with no controls.
|
|
35
|
+
const bar = kind && allow !== false && props.fidelity === "full" && props.budget === undefined && subject.length > 1 ? (_jsx(ArrangeBar, { schema: store.schema, graph: store.graph, kind: String(kind), arrangement: arrangement, allow: allow, query: options.query !== false, onChange: (next) => go(withArrangement(view, next)), kept: { shown: arranged.nodes.length, of: subject.length } })) : null;
|
|
36
|
+
return { nodes: [...rest, ...arranged.nodes], arranged, arrangement, bar };
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=arranging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arranging.js","sourceRoot":"","sources":["../../src/lens/arranging.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { type AnySchema, type ArrangeOption, type Arrangement, type NodeOfSchema } from "@graview/core";
|
|
2
|
+
import { type ViewProps } from "@graview/react";
|
|
3
|
+
import { type ReactElement } from "react";
|
|
4
|
+
/**
|
|
5
|
+
* The board lens: things arranged where the DOMAIN says they go.
|
|
6
|
+
*
|
|
7
|
+
* The third picture, and the first one whose geometry the framework does not
|
|
8
|
+
* own. A timeline places by time; a matrix places by two sets; a board places
|
|
9
|
+
* by coordinates the app declares on its own nodes — a formation on a pitch,
|
|
10
|
+
* desks in an office, a stage plot, seats at a table, bays in a warehouse.
|
|
11
|
+
*
|
|
12
|
+
* That distinction matters more than it looks. Everywhere else, layout is a
|
|
13
|
+
* pure function of (focus, relation, graph) and the framework decides where
|
|
14
|
+
* things sit. Here the arrangement is DATA: a left back is at the left back's
|
|
15
|
+
* place because the position node says so, and moving it is an ordinary
|
|
16
|
+
* mutation rather than a change to the layout engine.
|
|
17
|
+
*
|
|
18
|
+
* A slot with nothing in it is the point. On a pitch it is the hole in the
|
|
19
|
+
* team; on a seating plan it is the empty chair. That reads instantly in an
|
|
20
|
+
* arrangement and not at all in a list.
|
|
21
|
+
*/
|
|
22
|
+
export declare const BOARD_REQUIRED_ROLES: readonly ["slots", "x", "y", "fill"];
|
|
23
|
+
export interface BoardOptions {
|
|
24
|
+
/** Kind whose nodes are the slots. */
|
|
25
|
+
readonly slots: string;
|
|
26
|
+
/** Fields on a slot holding its place, each 0..1 across the board. */
|
|
27
|
+
readonly x: string;
|
|
28
|
+
readonly y: string;
|
|
29
|
+
/** Edge kind between a slot and whatever occupies it. */
|
|
30
|
+
readonly fill: string;
|
|
31
|
+
/**
|
|
32
|
+
* Which end of that edge is the slot. A seating plan says the seat is
|
|
33
|
+
* "taken-by" a guest; a garden says a planting "grows-in" a plot. Both are
|
|
34
|
+
* one edge from slot to occupant, read from opposite ends, and a lens that
|
|
35
|
+
* only knew one of them would make a domain redraw its edges to fit.
|
|
36
|
+
*/
|
|
37
|
+
readonly fillFrom?: "slot" | "occupant";
|
|
38
|
+
/**
|
|
39
|
+
* Field holding a short code for the slot, e.g. "LB".
|
|
40
|
+
*
|
|
41
|
+
* WHAT THE CODE IS DECIDES WHAT THE MARK IS. A board whose every code is
|
|
42
|
+
* three characters or fewer — "GK", "LB", "7" — draws discs, the pitch's
|
|
43
|
+
* own idiom. Any code longer than that is a WORD, and a word does not fit
|
|
44
|
+
* in a 34-pixel circle however the circle is drawn: "Outbound" spilled
|
|
45
|
+
* past its ring and "Prop-fin" wrapped at the hyphen inside it. So a board
|
|
46
|
+
* of words draws tokens — a pill sized to its code, the occupants inside
|
|
47
|
+
* it — and it decides once, for the whole board, because a picture that
|
|
48
|
+
* mixed discs and pills would be two pictures. Unbound, the code is the
|
|
49
|
+
* slot's label, which is nearly always a word.
|
|
50
|
+
*/
|
|
51
|
+
readonly slotCode?: string;
|
|
52
|
+
/** Bands drawn behind the slots, in the same 0..1 space. */
|
|
53
|
+
readonly zones?: readonly {
|
|
54
|
+
readonly label: string;
|
|
55
|
+
readonly from: number;
|
|
56
|
+
readonly to: number;
|
|
57
|
+
}[];
|
|
58
|
+
/** Width divided by height. A pitch is taller than it is wide, seen this way. */
|
|
59
|
+
readonly aspect?: number;
|
|
60
|
+
/** What an empty slot is called, in the app's words. */
|
|
61
|
+
readonly emptyLabel?: string;
|
|
62
|
+
/**
|
|
63
|
+
* What a chip click selects. Default `"occupant"`: a sole-filled slot's
|
|
64
|
+
* disc is that person (lineup / pitch). `"slot"` always selects the slot
|
|
65
|
+
* itself — Load map wants the component, not the sole owner.
|
|
66
|
+
*/
|
|
67
|
+
readonly pickTarget?: "slot" | "occupant";
|
|
68
|
+
/**
|
|
69
|
+
* Whether the occupants may be sorted and filtered from the picture.
|
|
70
|
+
* On unless declined; a board has no place to GROUP, so that part is
|
|
71
|
+
* never offered. `arrangedBy` is what it opens arranged by.
|
|
72
|
+
*/
|
|
73
|
+
readonly arranging?: ArrangeOption;
|
|
74
|
+
readonly arrangedBy?: Arrangement;
|
|
75
|
+
/**
|
|
76
|
+
* HOW THE SLOTS ARE LAID OUT. Default `"exact"`: each slot at the point
|
|
77
|
+
* its x and y name, which is a pitch, a seating plan, a warehouse floor —
|
|
78
|
+
* an arrangement whose geometry means something. `"shelf"`: the x and y
|
|
79
|
+
* are CATEGORIES, not coordinates — a load map whose rows are "still
|
|
80
|
+
* owns", "shared", "handoff" — so each zone becomes a band with its name
|
|
81
|
+
* as a heading, and its slots flow into rows in the domain's order, sized
|
|
82
|
+
* to what they hold. Nothing on a shelf can overlap anything, which on a
|
|
83
|
+
* load map with shared seats is the difference between a picture and a
|
|
84
|
+
* collision. The order is still the domain's; only the pixels are not.
|
|
85
|
+
*/
|
|
86
|
+
readonly arrange?: "exact" | "shelf";
|
|
87
|
+
}
|
|
88
|
+
export interface BoardSlot {
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly code: string;
|
|
91
|
+
readonly label: string;
|
|
92
|
+
readonly x: number;
|
|
93
|
+
readonly y: number;
|
|
94
|
+
/**
|
|
95
|
+
* Whoever is in it — none, one, or several. A plot with two plantings
|
|
96
|
+
* showed one and listed the other as "not in", which was a picture
|
|
97
|
+
* stating something untrue: the second planting was in the ground.
|
|
98
|
+
*/
|
|
99
|
+
readonly occupants: readonly {
|
|
100
|
+
readonly id: string;
|
|
101
|
+
readonly label: string;
|
|
102
|
+
}[];
|
|
103
|
+
}
|
|
104
|
+
export interface BoardState {
|
|
105
|
+
readonly slots: readonly BoardSlot[];
|
|
106
|
+
/** Slots with nothing in them. The reason the lens exists. */
|
|
107
|
+
readonly empty: readonly string[];
|
|
108
|
+
/** Candidates not placed in any slot — the bench. */
|
|
109
|
+
readonly spare: readonly {
|
|
110
|
+
readonly id: string;
|
|
111
|
+
readonly label: string;
|
|
112
|
+
}[];
|
|
113
|
+
}
|
|
114
|
+
export declare class BoardBindingError extends Error {
|
|
115
|
+
readonly hint: string;
|
|
116
|
+
constructor(message: string, hint: string);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Reads the arrangement out of the graph. Pure and exported, so a test can
|
|
120
|
+
* assert on the holes rather than on the drawing of them.
|
|
121
|
+
*/
|
|
122
|
+
export declare function buildBoard<S extends AnySchema>(nodes: readonly NodeOfSchema<S>[], edges: readonly {
|
|
123
|
+
kind: string;
|
|
124
|
+
from: string;
|
|
125
|
+
to: string;
|
|
126
|
+
}[], options: BoardOptions, schema?: S): BoardState;
|
|
127
|
+
export interface BoardViewProps<S extends AnySchema> extends ViewProps<S> {
|
|
128
|
+
readonly options: BoardOptions;
|
|
129
|
+
readonly schema?: S;
|
|
130
|
+
/** The occupants to draw, in the order to draw them. Everyone, when unsaid. */
|
|
131
|
+
readonly occupants?: readonly string[];
|
|
132
|
+
}
|
|
133
|
+
export declare function BoardView<S extends AnySchema>({ nodes, occupants, label, fidelity, mode, options, schema, implicated, flagged, }: BoardViewProps<S>): import("react").JSX.Element;
|
|
134
|
+
export interface BoardLens<S extends AnySchema> {
|
|
135
|
+
readonly name: "board";
|
|
136
|
+
readonly requiredRoles: readonly string[];
|
|
137
|
+
readonly options: BoardOptions;
|
|
138
|
+
View(props: ViewProps<S>): ReactElement | null;
|
|
139
|
+
build(nodes: readonly NodeOfSchema<S>[], edges: readonly {
|
|
140
|
+
kind: string;
|
|
141
|
+
from: string;
|
|
142
|
+
to: string;
|
|
143
|
+
}[], schema?: S): BoardState;
|
|
144
|
+
}
|
|
145
|
+
export declare function createBoardLens<S extends AnySchema>(options: BoardOptions): BoardLens<S>;
|
|
146
|
+
//# sourceMappingURL=board.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/lens/board.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjH,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,oBAAoB,sCAAuC,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IACxC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnG,iFAAiF;IACjF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5E;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM;CAInD;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,EAC5C,KAAK,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EACjC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAC5D,OAAO,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,CAAC,GACT,UAAU,CAyEZ;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,EAC7C,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,MAAM,EACN,UAAe,EACf,OAAY,GACb,EAAE,cAAc,CAAC,CAAC,CAAC,+BA+xBnB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,SAAS;IAC5C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;IAC/C,KAAK,CACH,KAAK,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,EACjC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,EAC5D,MAAM,CAAC,EAAE,CAAC,GACT,UAAU,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CA2ExF"}
|