@flyingrobots/bijou 4.4.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -1
- package/dist/adapters/test/index.d.ts.map +1 -1
- package/dist/adapters/test/index.js +1 -3
- package/dist/adapters/test/index.js.map +1 -1
- package/dist/adapters/test/runtime.d.ts.map +1 -1
- package/dist/adapters/test/runtime.js +4 -3
- package/dist/adapters/test/runtime.js.map +1 -1
- package/dist/context-theme.d.ts +25 -0
- package/dist/context-theme.d.ts.map +1 -1
- package/dist/context-theme.js +19 -0
- package/dist/context-theme.js.map +1 -1
- package/dist/context.d.ts +13 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +24 -3
- package/dist/context.js.map +1 -1
- package/dist/core/active-binding-collection.d.ts +49 -0
- package/dist/core/active-binding-collection.d.ts.map +1 -0
- package/dist/core/active-binding-collection.js +264 -0
- package/dist/core/active-binding-collection.js.map +1 -0
- package/dist/core/app-shell-composition.d.ts +44 -0
- package/dist/core/app-shell-composition.d.ts.map +1 -0
- package/dist/core/app-shell-composition.js +123 -0
- package/dist/core/app-shell-composition.js.map +1 -0
- package/dist/core/binding-frame-update.d.ts +18 -0
- package/dist/core/binding-frame-update.d.ts.map +1 -0
- package/dist/core/binding-frame-update.js +133 -0
- package/dist/core/binding-frame-update.js.map +1 -0
- package/dist/core/binding-lifecycle.d.ts +65 -0
- package/dist/core/binding-lifecycle.d.ts.map +1 -0
- package/dist/core/binding-lifecycle.js +357 -0
- package/dist/core/binding-lifecycle.js.map +1 -0
- package/dist/core/binding.d.ts +192 -0
- package/dist/core/binding.d.ts.map +1 -0
- package/dist/core/binding.js +587 -0
- package/dist/core/binding.js.map +1 -0
- package/dist/core/block-metadata.d.ts +113 -0
- package/dist/core/block-metadata.d.ts.map +1 -0
- package/dist/core/block-metadata.js +376 -0
- package/dist/core/block-metadata.js.map +1 -0
- package/dist/core/block-tree-render.d.ts +17 -0
- package/dist/core/block-tree-render.d.ts.map +1 -0
- package/dist/core/block-tree-render.js +186 -0
- package/dist/core/block-tree-render.js.map +1 -0
- package/dist/core/component-metadata.d.ts +63 -0
- package/dist/core/component-metadata.d.ts.map +1 -0
- package/dist/core/component-metadata.js +158 -0
- package/dist/core/component-metadata.js.map +1 -0
- package/dist/core/components/alert-v3.d.ts.map +1 -1
- package/dist/core/components/alert-v3.js +5 -4
- package/dist/core/components/alert-v3.js.map +1 -1
- package/dist/core/components/alert.d.ts.map +1 -1
- package/dist/core/components/alert.js +7 -8
- package/dist/core/components/alert.js.map +1 -1
- package/dist/core/components/badge.d.ts.map +1 -1
- package/dist/core/components/badge.js +19 -18
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/box-v3.d.ts.map +1 -1
- package/dist/core/components/box-v3.js +29 -29
- package/dist/core/components/box-v3.js.map +1 -1
- package/dist/core/components/dag-edges.d.ts +28 -5
- package/dist/core/components/dag-edges.d.ts.map +1 -1
- package/dist/core/components/dag-edges.js +116 -22
- package/dist/core/components/dag-edges.js.map +1 -1
- package/dist/core/components/dag-layout.d.ts +3 -4
- package/dist/core/components/dag-layout.d.ts.map +1 -1
- package/dist/core/components/dag-layout.js +42 -9
- package/dist/core/components/dag-layout.js.map +1 -1
- package/dist/core/components/dag-render.d.ts +4 -3
- package/dist/core/components/dag-render.d.ts.map +1 -1
- package/dist/core/components/dag-render.js +209 -105
- package/dist/core/components/dag-render.js.map +1 -1
- package/dist/core/components/dag-source.d.ts +4 -0
- package/dist/core/components/dag-source.d.ts.map +1 -1
- package/dist/core/components/dag-source.js +10 -0
- package/dist/core/components/dag-source.js.map +1 -1
- package/dist/core/components/dag.d.ts +20 -4
- package/dist/core/components/dag.d.ts.map +1 -1
- package/dist/core/components/dag.js.map +1 -1
- package/dist/core/components/explainability.d.ts.map +1 -1
- package/dist/core/components/explainability.js +30 -87
- package/dist/core/components/explainability.js.map +1 -1
- package/dist/core/components/guided-flow.d.ts +32 -0
- package/dist/core/components/guided-flow.d.ts.map +1 -0
- package/dist/core/components/guided-flow.js +131 -0
- package/dist/core/components/guided-flow.js.map +1 -0
- package/dist/core/components/hyperlink.d.ts.map +1 -1
- package/dist/core/components/hyperlink.js +7 -4
- package/dist/core/components/hyperlink.js.map +1 -1
- package/dist/core/components/index.d.ts +5 -3
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +1 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/markdown-parse.d.ts +4 -0
- package/dist/core/components/markdown-parse.d.ts.map +1 -1
- package/dist/core/components/markdown-parse.js +66 -2
- package/dist/core/components/markdown-parse.js.map +1 -1
- package/dist/core/components/markdown-render.d.ts.map +1 -1
- package/dist/core/components/markdown-render.js +220 -14
- package/dist/core/components/markdown-render.js.map +1 -1
- package/dist/core/components/markdown.d.ts +4 -3
- package/dist/core/components/markdown.d.ts.map +1 -1
- package/dist/core/components/markdown.js +6 -5
- package/dist/core/components/markdown.js.map +1 -1
- package/dist/core/components/paginator.d.ts.map +1 -1
- package/dist/core/components/paginator.js +5 -3
- package/dist/core/components/paginator.js.map +1 -1
- package/dist/core/components/perf-overlay.d.ts.map +1 -1
- package/dist/core/components/perf-overlay.js +3 -2
- package/dist/core/components/perf-overlay.js.map +1 -1
- package/dist/core/components/preference-list.d.ts.map +1 -1
- package/dist/core/components/preference-list.js +75 -37
- package/dist/core/components/preference-list.js.map +1 -1
- package/dist/core/components/progress.d.ts.map +1 -1
- package/dist/core/components/progress.js +4 -3
- package/dist/core/components/progress.js.map +1 -1
- package/dist/core/components/separator-v3.d.ts.map +1 -1
- package/dist/core/components/separator-v3.js +11 -11
- package/dist/core/components/separator-v3.js.map +1 -1
- package/dist/core/components/separator.d.ts.map +1 -1
- package/dist/core/components/separator.js +4 -1
- package/dist/core/components/separator.js.map +1 -1
- package/dist/core/components/skeleton.d.ts.map +1 -1
- package/dist/core/components/skeleton.js +3 -2
- package/dist/core/components/skeleton.js.map +1 -1
- package/dist/core/components/surface-text.d.ts +7 -0
- package/dist/core/components/surface-text.d.ts.map +1 -1
- package/dist/core/components/surface-text.js +33 -25
- package/dist/core/components/surface-text.js.map +1 -1
- package/dist/core/components/table-v3.d.ts +5 -2
- package/dist/core/components/table-v3.d.ts.map +1 -1
- package/dist/core/components/table-v3.js +162 -37
- package/dist/core/components/table-v3.js.map +1 -1
- package/dist/core/components/table.d.ts +51 -7
- package/dist/core/components/table.d.ts.map +1 -1
- package/dist/core/components/table.js +655 -81
- package/dist/core/components/table.js.map +1 -1
- package/dist/core/fixture-promotion.d.ts +33 -0
- package/dist/core/fixture-promotion.d.ts.map +1 -0
- package/dist/core/fixture-promotion.js +62 -0
- package/dist/core/fixture-promotion.js.map +1 -0
- package/dist/core/forms/filter-interactive.d.ts.map +1 -1
- package/dist/core/forms/filter-interactive.js +2 -4
- package/dist/core/forms/filter-interactive.js.map +1 -1
- package/dist/core/forms/multiselect.d.ts.map +1 -1
- package/dist/core/forms/multiselect.js +2 -4
- package/dist/core/forms/multiselect.js.map +1 -1
- package/dist/core/forms/note.d.ts.map +1 -1
- package/dist/core/forms/note.js +2 -1
- package/dist/core/forms/note.js.map +1 -1
- package/dist/core/forms/select.d.ts.map +1 -1
- package/dist/core/forms/select.js +2 -4
- package/dist/core/forms/select.js.map +1 -1
- package/dist/core/forms/textarea-editor.d.ts.map +1 -1
- package/dist/core/forms/textarea-editor.js +7 -5
- package/dist/core/forms/textarea-editor.js.map +1 -1
- package/dist/core/layout/envelope.d.ts +174 -0
- package/dist/core/layout/envelope.d.ts.map +1 -0
- package/dist/core/layout/envelope.js +336 -0
- package/dist/core/layout/envelope.js.map +1 -0
- package/dist/core/layout/geometry.d.ts +39 -0
- package/dist/core/layout/geometry.d.ts.map +1 -0
- package/dist/core/layout/geometry.js +201 -0
- package/dist/core/layout/geometry.js.map +1 -0
- package/dist/core/mode-lowering.d.ts +48 -0
- package/dist/core/mode-lowering.d.ts.map +1 -0
- package/dist/core/mode-lowering.js +176 -0
- package/dist/core/mode-lowering.js.map +1 -0
- package/dist/core/numeric.d.ts +16 -0
- package/dist/core/numeric.d.ts.map +1 -0
- package/dist/core/numeric.js +37 -0
- package/dist/core/numeric.js.map +1 -0
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +15 -13
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/runtime-viewport.d.ts.map +1 -1
- package/dist/core/runtime-viewport.js +2 -3
- package/dist/core/runtime-viewport.js.map +1 -1
- package/dist/core/schema-block.d.ts +63 -0
- package/dist/core/schema-block.d.ts.map +1 -0
- package/dist/core/schema-block.js +361 -0
- package/dist/core/schema-block.js.map +1 -0
- package/dist/core/selection.d.ts +127 -0
- package/dist/core/selection.d.ts.map +1 -0
- package/dist/core/selection.js +350 -0
- package/dist/core/selection.js.map +1 -0
- package/dist/core/standard-blocks.d.ts +264 -0
- package/dist/core/standard-blocks.d.ts.map +1 -0
- package/dist/core/standard-blocks.js +2518 -0
- package/dist/core/standard-blocks.js.map +1 -0
- package/dist/core/story-capture.d.ts +48 -0
- package/dist/core/story-capture.d.ts.map +1 -0
- package/dist/core/story-capture.js +64 -0
- package/dist/core/story-capture.js.map +1 -0
- package/dist/core/text/grapheme.d.ts +51 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +68 -0
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/text/icon-presentation.d.ts +10 -0
- package/dist/core/text/icon-presentation.d.ts.map +1 -0
- package/dist/core/text/icon-presentation.js +12 -0
- package/dist/core/text/icon-presentation.js.map +1 -0
- package/dist/core/text/index.d.ts +2 -1
- package/dist/core/text/index.d.ts.map +1 -1
- package/dist/core/text/index.js +2 -1
- package/dist/core/text/index.js.map +1 -1
- package/dist/core/text/wrap.d.ts.map +1 -1
- package/dist/core/text/wrap.js +37 -20
- package/dist/core/text/wrap.js.map +1 -1
- package/dist/core/theme/color.d.ts +32 -0
- package/dist/core/theme/color.d.ts.map +1 -1
- package/dist/core/theme/color.js +68 -0
- package/dist/core/theme/color.js.map +1 -1
- package/dist/core/theme/doctor.d.ts +37 -0
- package/dist/core/theme/doctor.d.ts.map +1 -0
- package/dist/core/theme/doctor.js +175 -0
- package/dist/core/theme/doctor.js.map +1 -0
- package/dist/core/theme/dtcg.d.ts.map +1 -1
- package/dist/core/theme/dtcg.js +10 -1
- package/dist/core/theme/dtcg.js.map +1 -1
- package/dist/core/theme/graph-types.d.ts +5 -0
- package/dist/core/theme/graph-types.d.ts.map +1 -1
- package/dist/core/theme/graph.d.ts.map +1 -1
- package/dist/core/theme/graph.js +52 -5
- package/dist/core/theme/graph.js.map +1 -1
- package/dist/core/theme/index.d.ts +4 -1
- package/dist/core/theme/index.d.ts.map +1 -1
- package/dist/core/theme/index.js +3 -1
- package/dist/core/theme/index.js.map +1 -1
- package/dist/core/theme/presets.d.ts +3 -2
- package/dist/core/theme/presets.d.ts.map +1 -1
- package/dist/core/theme/presets.js +22 -29
- package/dist/core/theme/presets.js.map +1 -1
- package/dist/core/theme/tokens.d.ts +1 -1
- package/dist/core/theme/tokens.d.ts.map +1 -1
- package/dist/factory.d.ts +3 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +4 -6
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +23 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -6
- package/dist/index.js.map +1 -1
- package/dist/ports/context.d.ts +6 -1
- package/dist/ports/context.d.ts.map +1 -1
- package/dist/ports/surface.d.ts +6 -4
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +40 -23
- package/dist/ports/surface.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { LayoutRect } from '../ports/surface.js';
|
|
2
|
+
declare const SELECTION_OWNER_BRAND: unique symbol;
|
|
3
|
+
export type SelectionDragSource = 'mouse' | 'touch' | 'keyboard' | 'unknown';
|
|
4
|
+
export type SelectionDirection = 'forward' | 'backward';
|
|
5
|
+
export type SelectionPolicy = 'selectable' | 'disabled';
|
|
6
|
+
export type SelectionBlockerReason = 'overlay' | 'drag-handle' | 'component-handler' | 'terminal-native';
|
|
7
|
+
export interface SelectionPoint {
|
|
8
|
+
readonly x: number;
|
|
9
|
+
readonly y: number;
|
|
10
|
+
}
|
|
11
|
+
export interface SelectionViewportTransform {
|
|
12
|
+
readonly scrollX?: number;
|
|
13
|
+
readonly scrollY?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ProseSelectionContentModel {
|
|
16
|
+
readonly kind: 'prose';
|
|
17
|
+
readonly paragraphs: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
export interface SurfaceSelectionContentModel {
|
|
20
|
+
readonly kind: 'surface';
|
|
21
|
+
readonly lines: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
export interface TableSelectionContentModel {
|
|
24
|
+
readonly kind: 'table';
|
|
25
|
+
readonly rows: readonly (readonly string[])[];
|
|
26
|
+
readonly delimiter?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface MixedSelectionContentRegion {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly rect: LayoutRect;
|
|
31
|
+
readonly content: SelectionContentModel;
|
|
32
|
+
}
|
|
33
|
+
export interface MixedSelectionContentModel {
|
|
34
|
+
readonly kind: 'mixed';
|
|
35
|
+
readonly regions: readonly MixedSelectionContentRegion[];
|
|
36
|
+
readonly separator?: string;
|
|
37
|
+
}
|
|
38
|
+
export type SelectionContentModel = ProseSelectionContentModel | SurfaceSelectionContentModel | TableSelectionContentModel | MixedSelectionContentModel;
|
|
39
|
+
export interface SelectionOwnerInput {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly layoutNodeId: string;
|
|
42
|
+
readonly rect: LayoutRect;
|
|
43
|
+
readonly viewport?: SelectionViewportTransform;
|
|
44
|
+
readonly policy?: SelectionPolicy;
|
|
45
|
+
readonly zIndex?: number;
|
|
46
|
+
readonly content: SelectionContentModel;
|
|
47
|
+
}
|
|
48
|
+
export interface SelectionOwner {
|
|
49
|
+
readonly [SELECTION_OWNER_BRAND]: true;
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly layoutNodeId: string;
|
|
52
|
+
readonly rect: LayoutRect;
|
|
53
|
+
readonly viewport: Required<SelectionViewportTransform>;
|
|
54
|
+
readonly policy: SelectionPolicy;
|
|
55
|
+
readonly zIndex: number;
|
|
56
|
+
readonly content: SelectionContentModel;
|
|
57
|
+
}
|
|
58
|
+
export interface SelectionRegion {
|
|
59
|
+
readonly ownerId: string;
|
|
60
|
+
readonly layoutNodeId: string;
|
|
61
|
+
readonly screenRect: LayoutRect;
|
|
62
|
+
readonly contentRect: LayoutRect;
|
|
63
|
+
readonly clippingRect: LayoutRect;
|
|
64
|
+
readonly zIndex: number;
|
|
65
|
+
readonly enabled: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface SelectionRangeInput {
|
|
68
|
+
readonly anchor: SelectionPoint;
|
|
69
|
+
readonly focus: SelectionPoint;
|
|
70
|
+
readonly dragSource?: SelectionDragSource;
|
|
71
|
+
}
|
|
72
|
+
export interface SelectionRange {
|
|
73
|
+
readonly ownerId: string;
|
|
74
|
+
readonly anchor: SelectionPoint;
|
|
75
|
+
readonly focus: SelectionPoint;
|
|
76
|
+
readonly start: SelectionPoint;
|
|
77
|
+
readonly end: SelectionPoint;
|
|
78
|
+
readonly contentRect: LayoutRect;
|
|
79
|
+
readonly direction: SelectionDirection;
|
|
80
|
+
readonly dragSource: SelectionDragSource;
|
|
81
|
+
}
|
|
82
|
+
export interface SelectionBlocker {
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly reason: SelectionBlockerReason;
|
|
85
|
+
readonly rect: LayoutRect;
|
|
86
|
+
}
|
|
87
|
+
export interface CoordinateSelectionInput {
|
|
88
|
+
readonly owners: readonly SelectionOwner[];
|
|
89
|
+
readonly blockers?: readonly SelectionBlocker[];
|
|
90
|
+
readonly anchor: SelectionPoint;
|
|
91
|
+
readonly focus: SelectionPoint;
|
|
92
|
+
readonly dragSource?: SelectionDragSource;
|
|
93
|
+
}
|
|
94
|
+
export interface SelectionFact {
|
|
95
|
+
readonly kind: string;
|
|
96
|
+
readonly key: string;
|
|
97
|
+
readonly value: string | number | boolean;
|
|
98
|
+
}
|
|
99
|
+
export interface SelectionClipboardEffect {
|
|
100
|
+
readonly kind: 'clipboard.write';
|
|
101
|
+
readonly ownerId: string;
|
|
102
|
+
readonly text: string;
|
|
103
|
+
readonly facts: readonly SelectionFact[];
|
|
104
|
+
}
|
|
105
|
+
export type CoordinateSelectionResult = {
|
|
106
|
+
readonly status: 'selected';
|
|
107
|
+
readonly owner: SelectionOwner;
|
|
108
|
+
readonly range: SelectionRange;
|
|
109
|
+
readonly text: string;
|
|
110
|
+
readonly effect: SelectionClipboardEffect;
|
|
111
|
+
} | {
|
|
112
|
+
readonly status: 'blocked';
|
|
113
|
+
readonly reason: SelectionBlockerReason;
|
|
114
|
+
readonly blockerId: string;
|
|
115
|
+
} | {
|
|
116
|
+
readonly status: 'fallback';
|
|
117
|
+
readonly reason: 'terminal-native';
|
|
118
|
+
};
|
|
119
|
+
export declare function defineSelectionOwner(input: SelectionOwnerInput): SelectionOwner;
|
|
120
|
+
export declare function isSelectionOwner(value: unknown): value is SelectionOwner;
|
|
121
|
+
export declare function selectionRegion(owner: SelectionOwner): SelectionRegion;
|
|
122
|
+
export declare function selectionRange(owner: SelectionOwner, input: SelectionRangeInput): SelectionRange;
|
|
123
|
+
export declare function extractSelectionText(content: SelectionContentModel, range: SelectionRange): string;
|
|
124
|
+
export declare function selectionClipboardEffect(range: SelectionRange, text: string): SelectionClipboardEffect;
|
|
125
|
+
export declare function coordinateSelection(input: CoordinateSelectionInput): CoordinateSelectionResult;
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/core/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { sanitizeNonNegativeInt, sanitizePositiveInt } from './numeric.js';
|
|
2
|
+
const SELECTION_OWNER_BRAND = Symbol('SelectionOwner');
|
|
3
|
+
export function defineSelectionOwner(input) {
|
|
4
|
+
const id = normalizeRequiredText({
|
|
5
|
+
scope: 'selection owner',
|
|
6
|
+
field: 'id',
|
|
7
|
+
value: input.id,
|
|
8
|
+
});
|
|
9
|
+
const layoutNodeId = normalizeRequiredText({
|
|
10
|
+
scope: 'selection owner',
|
|
11
|
+
field: 'layoutNodeId',
|
|
12
|
+
value: input.layoutNodeId,
|
|
13
|
+
});
|
|
14
|
+
const rect = freezeRect(normalizeRect(input.rect));
|
|
15
|
+
const viewport = Object.freeze({
|
|
16
|
+
scrollX: sanitizeNonNegativeInt(input.viewport?.scrollX),
|
|
17
|
+
scrollY: sanitizeNonNegativeInt(input.viewport?.scrollY),
|
|
18
|
+
});
|
|
19
|
+
const policy = input.policy ?? 'selectable';
|
|
20
|
+
if (policy !== 'selectable' && policy !== 'disabled') {
|
|
21
|
+
throw new Error(`selection owner ${id}: unsupported policy ${String(policy)}`);
|
|
22
|
+
}
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
[SELECTION_OWNER_BRAND]: true,
|
|
25
|
+
id,
|
|
26
|
+
layoutNodeId,
|
|
27
|
+
rect,
|
|
28
|
+
viewport,
|
|
29
|
+
policy,
|
|
30
|
+
zIndex: normalizeInt(input.zIndex, 0),
|
|
31
|
+
content: freezeContentModel(input.content),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export function isSelectionOwner(value) {
|
|
35
|
+
return (typeof value === 'object'
|
|
36
|
+
&& value !== null
|
|
37
|
+
&& value[SELECTION_OWNER_BRAND] === true);
|
|
38
|
+
}
|
|
39
|
+
export function selectionRegion(owner) {
|
|
40
|
+
assertSelectionOwner(owner, 'selection region');
|
|
41
|
+
const contentRect = Object.freeze({
|
|
42
|
+
x: owner.viewport.scrollX,
|
|
43
|
+
y: owner.viewport.scrollY,
|
|
44
|
+
width: owner.rect.width,
|
|
45
|
+
height: owner.rect.height,
|
|
46
|
+
});
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
ownerId: owner.id,
|
|
49
|
+
layoutNodeId: owner.layoutNodeId,
|
|
50
|
+
screenRect: owner.rect,
|
|
51
|
+
contentRect,
|
|
52
|
+
clippingRect: owner.rect,
|
|
53
|
+
zIndex: owner.zIndex,
|
|
54
|
+
enabled: owner.policy === 'selectable',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export function selectionRange(owner, input) {
|
|
58
|
+
assertSelectionOwner(owner, 'selection range');
|
|
59
|
+
const anchor = screenPointToContentPoint(owner, input.anchor);
|
|
60
|
+
const focus = screenPointToContentPoint(owner, input.focus);
|
|
61
|
+
const direction = comparePoints(anchor, focus) <= 0 ? 'forward' : 'backward';
|
|
62
|
+
const start = direction === 'forward' ? anchor : focus;
|
|
63
|
+
const end = direction === 'forward' ? focus : anchor;
|
|
64
|
+
return Object.freeze({
|
|
65
|
+
ownerId: owner.id,
|
|
66
|
+
anchor,
|
|
67
|
+
focus,
|
|
68
|
+
start,
|
|
69
|
+
end,
|
|
70
|
+
contentRect: selectionRegion(owner).contentRect,
|
|
71
|
+
direction,
|
|
72
|
+
dragSource: input.dragSource ?? 'unknown',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function extractSelectionText(content, range) {
|
|
76
|
+
if (content.kind === 'table') {
|
|
77
|
+
return extractTableSelection(content, range);
|
|
78
|
+
}
|
|
79
|
+
if (content.kind === 'mixed') {
|
|
80
|
+
return extractMixedSelection(content, range);
|
|
81
|
+
}
|
|
82
|
+
const lines = content.kind === 'prose' ? content.paragraphs : content.lines;
|
|
83
|
+
return extractLineSelection(lines, range);
|
|
84
|
+
}
|
|
85
|
+
export function selectionClipboardEffect(range, text) {
|
|
86
|
+
return Object.freeze({
|
|
87
|
+
kind: 'clipboard.write',
|
|
88
|
+
ownerId: range.ownerId,
|
|
89
|
+
text,
|
|
90
|
+
facts: Object.freeze([
|
|
91
|
+
Object.freeze({ kind: 'entity', key: 'selection.owner', value: range.ownerId }),
|
|
92
|
+
Object.freeze({ kind: 'state', key: 'clipboard.effect', value: 'pending' }),
|
|
93
|
+
]),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
export function coordinateSelection(input) {
|
|
97
|
+
const normalizedAnchor = normalizePoint(input.anchor);
|
|
98
|
+
const normalizedFocus = normalizePoint(input.focus);
|
|
99
|
+
const blocker = input.blockers?.find((candidate) => rectContainsPoint(candidate.rect, normalizedAnchor));
|
|
100
|
+
if (blocker !== undefined) {
|
|
101
|
+
return Object.freeze({
|
|
102
|
+
status: 'blocked',
|
|
103
|
+
reason: blocker.reason,
|
|
104
|
+
blockerId: blocker.id,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const owner = pickSelectionOwner(input.owners, normalizedAnchor);
|
|
108
|
+
if (owner === undefined) {
|
|
109
|
+
return Object.freeze({
|
|
110
|
+
status: 'fallback',
|
|
111
|
+
reason: 'terminal-native',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const range = selectionRange(owner, {
|
|
115
|
+
anchor: normalizedAnchor,
|
|
116
|
+
focus: normalizedFocus,
|
|
117
|
+
dragSource: input.dragSource,
|
|
118
|
+
});
|
|
119
|
+
const text = extractSelectionText(owner.content, range);
|
|
120
|
+
return Object.freeze({
|
|
121
|
+
status: 'selected',
|
|
122
|
+
owner,
|
|
123
|
+
range,
|
|
124
|
+
text,
|
|
125
|
+
effect: selectionClipboardEffect(range, text),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function pickSelectionOwner(owners, anchor) {
|
|
129
|
+
let selectedOwner;
|
|
130
|
+
let selectedIndex = -1;
|
|
131
|
+
owners.forEach((owner, index) => {
|
|
132
|
+
assertSelectionOwner(owner, 'selection coordinator');
|
|
133
|
+
if (owner.policy !== 'selectable' || !rectContainsPoint(owner.rect, anchor)) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (selectedOwner === undefined
|
|
137
|
+
|| owner.zIndex > selectedOwner.zIndex
|
|
138
|
+
|| (owner.zIndex === selectedOwner.zIndex && index > selectedIndex)) {
|
|
139
|
+
selectedOwner = owner;
|
|
140
|
+
selectedIndex = index;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return selectedOwner;
|
|
144
|
+
}
|
|
145
|
+
function extractLineSelection(lines, range) {
|
|
146
|
+
if (lines.length === 0) {
|
|
147
|
+
return '';
|
|
148
|
+
}
|
|
149
|
+
const startY = Math.max(range.start.y, 0);
|
|
150
|
+
const endY = Math.min(range.end.y, lines.length - 1);
|
|
151
|
+
if (startY > endY) {
|
|
152
|
+
return '';
|
|
153
|
+
}
|
|
154
|
+
const selected = [];
|
|
155
|
+
for (let y = startY; y <= endY; y += 1) {
|
|
156
|
+
const line = lines[y] ?? '';
|
|
157
|
+
const startX = y === startY ? range.start.x : range.contentRect.x;
|
|
158
|
+
const endX = y === endY
|
|
159
|
+
? range.end.x
|
|
160
|
+
: range.contentRect.x + range.contentRect.width - 1;
|
|
161
|
+
selected.push(sliceInclusive(line, startX, endX));
|
|
162
|
+
}
|
|
163
|
+
return selected.join('\n');
|
|
164
|
+
}
|
|
165
|
+
function extractTableSelection(content, range) {
|
|
166
|
+
const rowCount = content.rows.length;
|
|
167
|
+
if (rowCount === 0) {
|
|
168
|
+
return '';
|
|
169
|
+
}
|
|
170
|
+
const delimiter = content.delimiter ?? '\t';
|
|
171
|
+
const startRow = clamp(range.start.y, 0, rowCount - 1);
|
|
172
|
+
const endRow = clamp(range.end.y, 0, rowCount - 1);
|
|
173
|
+
const selectedRows = [];
|
|
174
|
+
const startColumn = Math.min(range.start.x, range.end.x);
|
|
175
|
+
const endColumn = Math.max(range.start.x, range.end.x);
|
|
176
|
+
for (let rowIndex = startRow; rowIndex <= endRow; rowIndex += 1) {
|
|
177
|
+
const row = content.rows[rowIndex] ?? [];
|
|
178
|
+
if (row.length === 0) {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const rowStartColumn = Math.max(startColumn, 0);
|
|
182
|
+
const rowEndColumn = Math.min(endColumn, row.length - 1);
|
|
183
|
+
if (rowStartColumn > rowEndColumn) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
selectedRows.push(row.slice(rowStartColumn, rowEndColumn + 1).join(delimiter));
|
|
187
|
+
}
|
|
188
|
+
return selectedRows.join('\n');
|
|
189
|
+
}
|
|
190
|
+
function extractMixedSelection(content, range) {
|
|
191
|
+
const selectedText = content.regions.flatMap((region) => {
|
|
192
|
+
const childRange = childRangeForRegion(range, region);
|
|
193
|
+
if (childRange === undefined) {
|
|
194
|
+
return [];
|
|
195
|
+
}
|
|
196
|
+
const text = extractSelectionText(region.content, childRange);
|
|
197
|
+
return text.length === 0 ? [] : [text];
|
|
198
|
+
});
|
|
199
|
+
return selectedText.join(content.separator ?? '\n');
|
|
200
|
+
}
|
|
201
|
+
function screenPointToContentPoint(owner, point) {
|
|
202
|
+
const normalizedPoint = normalizePoint(point);
|
|
203
|
+
const clampedScreenX = clamp(normalizedPoint.x, owner.rect.x, owner.rect.x + owner.rect.width - 1);
|
|
204
|
+
const clampedScreenY = clamp(normalizedPoint.y, owner.rect.y, owner.rect.y + owner.rect.height - 1);
|
|
205
|
+
return Object.freeze({
|
|
206
|
+
x: clampedScreenX - owner.rect.x + owner.viewport.scrollX,
|
|
207
|
+
y: clampedScreenY - owner.rect.y + owner.viewport.scrollY,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function freezeContentModel(content) {
|
|
211
|
+
if (content.kind === 'prose') {
|
|
212
|
+
return Object.freeze({
|
|
213
|
+
kind: 'prose',
|
|
214
|
+
paragraphs: Object.freeze([...content.paragraphs]),
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
if (content.kind === 'surface') {
|
|
218
|
+
return Object.freeze({
|
|
219
|
+
kind: 'surface',
|
|
220
|
+
lines: Object.freeze([...content.lines]),
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (content.kind === 'table') {
|
|
224
|
+
return Object.freeze({
|
|
225
|
+
kind: 'table',
|
|
226
|
+
rows: Object.freeze(content.rows.map((row) => Object.freeze([...row]))),
|
|
227
|
+
delimiter: content.delimiter,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (content.kind === 'mixed') {
|
|
231
|
+
return Object.freeze({
|
|
232
|
+
kind: 'mixed',
|
|
233
|
+
regions: Object.freeze(content.regions.map((region) => Object.freeze({
|
|
234
|
+
id: normalizeRequiredText({
|
|
235
|
+
scope: 'selection content region',
|
|
236
|
+
field: 'id',
|
|
237
|
+
value: region.id,
|
|
238
|
+
}),
|
|
239
|
+
rect: freezeRect(normalizeRect(region.rect)),
|
|
240
|
+
content: freezeContentModel(region.content),
|
|
241
|
+
}))),
|
|
242
|
+
separator: content.separator,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
throw new Error('selection owner: unsupported content model');
|
|
246
|
+
}
|
|
247
|
+
function childRangeForRegion(range, region) {
|
|
248
|
+
const childEndY = region.rect.y + region.rect.height - 1;
|
|
249
|
+
const childEndX = region.rect.x + region.rect.width - 1;
|
|
250
|
+
const startY = Math.max(range.start.y, region.rect.y);
|
|
251
|
+
const endY = Math.min(range.end.y, childEndY);
|
|
252
|
+
if (startY > endY) {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
const startX = startY === range.start.y
|
|
256
|
+
? Math.max(range.start.x, region.rect.x)
|
|
257
|
+
: region.rect.x;
|
|
258
|
+
const endX = endY === range.end.y
|
|
259
|
+
? Math.min(range.end.x, childEndX)
|
|
260
|
+
: childEndX;
|
|
261
|
+
if (startX > childEndX || endX < region.rect.x) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
const start = Object.freeze({
|
|
265
|
+
x: Math.max(startX, region.rect.x) - region.rect.x,
|
|
266
|
+
y: startY - region.rect.y,
|
|
267
|
+
});
|
|
268
|
+
const end = Object.freeze({
|
|
269
|
+
x: Math.min(endX, childEndX) - region.rect.x,
|
|
270
|
+
y: endY - region.rect.y,
|
|
271
|
+
});
|
|
272
|
+
return Object.freeze({
|
|
273
|
+
ownerId: `${range.ownerId}:${region.id}`,
|
|
274
|
+
anchor: start,
|
|
275
|
+
focus: end,
|
|
276
|
+
start,
|
|
277
|
+
end,
|
|
278
|
+
contentRect: Object.freeze({
|
|
279
|
+
x: 0,
|
|
280
|
+
y: 0,
|
|
281
|
+
width: region.rect.width,
|
|
282
|
+
height: region.rect.height,
|
|
283
|
+
}),
|
|
284
|
+
direction: 'forward',
|
|
285
|
+
dragSource: range.dragSource,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
function assertSelectionOwner(owner, scope) {
|
|
289
|
+
if (!isSelectionOwner(owner)) {
|
|
290
|
+
throw new Error(`${scope}: owner was not created by defineSelectionOwner()`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function normalizeRequiredText(input) {
|
|
294
|
+
const normalized = input.value.trim();
|
|
295
|
+
if (normalized.length === 0) {
|
|
296
|
+
throw new Error(`${input.scope}: ${input.field} is required`);
|
|
297
|
+
}
|
|
298
|
+
return normalized;
|
|
299
|
+
}
|
|
300
|
+
function normalizeRect(rect) {
|
|
301
|
+
return {
|
|
302
|
+
x: sanitizeNonNegativeInt(rect.x),
|
|
303
|
+
y: sanitizeNonNegativeInt(rect.y),
|
|
304
|
+
width: sanitizePositiveInt(rect.width),
|
|
305
|
+
height: sanitizePositiveInt(rect.height),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
function freezeRect(rect) {
|
|
309
|
+
return Object.freeze({ ...rect });
|
|
310
|
+
}
|
|
311
|
+
function normalizePoint(point) {
|
|
312
|
+
return Object.freeze({
|
|
313
|
+
x: sanitizeNonNegativeInt(point.x),
|
|
314
|
+
y: sanitizeNonNegativeInt(point.y),
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
function rectContainsPoint(rect, point) {
|
|
318
|
+
const normalizedRect = normalizeRect(rect);
|
|
319
|
+
return (point.x >= normalizedRect.x
|
|
320
|
+
&& point.y >= normalizedRect.y
|
|
321
|
+
&& point.x < normalizedRect.x + normalizedRect.width
|
|
322
|
+
&& point.y < normalizedRect.y + normalizedRect.height);
|
|
323
|
+
}
|
|
324
|
+
function comparePoints(a, b) {
|
|
325
|
+
if (a.y !== b.y) {
|
|
326
|
+
return a.y - b.y;
|
|
327
|
+
}
|
|
328
|
+
return a.x - b.x;
|
|
329
|
+
}
|
|
330
|
+
function sliceInclusive(text, start, end) {
|
|
331
|
+
if (text.length === 0 || end < 0 || start > end || start >= text.length) {
|
|
332
|
+
return '';
|
|
333
|
+
}
|
|
334
|
+
const safeStart = Math.max(0, start);
|
|
335
|
+
const safeEnd = clamp(end, 0, text.length - 1);
|
|
336
|
+
if (safeStart > safeEnd) {
|
|
337
|
+
return '';
|
|
338
|
+
}
|
|
339
|
+
return text.slice(safeStart, safeEnd + 1);
|
|
340
|
+
}
|
|
341
|
+
function clamp(value, min, max) {
|
|
342
|
+
return Math.min(Math.max(value, min), max);
|
|
343
|
+
}
|
|
344
|
+
function normalizeInt(value, fallback) {
|
|
345
|
+
if (value == null || !Number.isFinite(value)) {
|
|
346
|
+
return fallback;
|
|
347
|
+
}
|
|
348
|
+
return Math.floor(value);
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/core/selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,MAAM,qBAAqB,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAoJtE,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,MAAM,EAAE,GAAG,qBAAqB,CAAC;QAC/B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK,CAAC,EAAE;KAChB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,qBAAqB,CAAC;QACzC,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,cAAc;QACrB,KAAK,EAAE,KAAK,CAAC,YAAY;KAC1B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxD,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;KACzD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC;IAC5C,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,wBAAwB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,qBAAqB,CAAC,EAAE,IAAY;QACrC,EAAE;QACF,YAAY;QACZ,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC;KAC3C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;WACtB,KAAK,KAAK,IAAI;WACb,KAAiC,CAAC,qBAAqB,CAAC,KAAK,IAAI,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;QACzB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;QACvB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;KAC1B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,UAAU,EAAE,KAAK,CAAC,IAAI;QACtB,WAAW;QACX,YAAY,EAAE,KAAK,CAAC,IAAI;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,YAAY;KACvC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAqB,EACrB,KAA0B;IAE1B,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC7E,MAAM,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,MAAM,GAAG,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAErD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,MAAM;QACN,KAAK;QACL,KAAK;QACL,GAAG;QACH,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW;QAC/C,SAAS;QACT,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA8B,EAC9B,KAAqB;IAErB,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5E,OAAO,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAqB,EACrB,IAAY;IAEZ,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/E,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC5E,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CACnE,SAAS,CAAC,IAAI,EACd,gBAAgB,CACjB,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE;QAClC,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,eAAe;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,UAAU;QAClB,KAAK;QACL,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAiC,EACjC,MAAsB;IAEtB,IAAI,aAAyC,CAAC;IAC9C,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IAEvB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IACE,aAAa,KAAK,SAAS;eACxB,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;eACnC,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,IAAI,KAAK,GAAG,aAAa,CAAC,EACnE,CAAC;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwB,EAAE,KAAqB;IAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI;YACrB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACb,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAmC,EACnC,KAAqB;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvD,KAAK,IAAI,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,MAAM,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,cAAc,GAAG,YAAY,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAmC,EACnC,KAAqB;IAErB,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACtD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAqB,EAAE,KAAqB;IAC7E,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,cAAc,GAAG,KAAK,CAC1B,eAAe,CAAC,CAAC,EACjB,KAAK,CAAC,IAAI,CAAC,CAAC,EACZ,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CACpC,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,CAC1B,eAAe,CAAC,CAAC,EACjB,KAAK,CAAC,IAAI,CAAC,CAAC,EACZ,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CACrC,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO;QACzD,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA8B;IACxD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;SACzC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvE,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnE,EAAE,EAAE,qBAAqB,CAAC;oBACxB,KAAK,EAAE,0BAA0B;oBACjC,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,MAAM,CAAC,EAAE;iBACjB,CAAC;gBACF,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5C,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5C,CAAC,CAAC,CAAC;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAqB,EACrB,MAAmC;IAEnC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;QAClC,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,MAAM,GAAG,SAAS,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KAC1B,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KACxB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,EAAE,EAAE;QACxC,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,GAAG;QACV,KAAK;QACL,GAAG;QACH,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;SAC3B,CAAC;QACF,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAqB,EAAE,KAAa;IAChE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mDAAmD,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAI9B;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,IAAgB;IACrC,OAAO;QACL,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,KAAqB;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAgB,EAAE,KAAqB;IAChE,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CACL,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC;WACxB,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC;WAC3B,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK;WACjD,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CACtD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,CAAiB,EAAE,CAAiB;IACzD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACxE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,QAAgB;IAC/D,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|