@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,174 @@
|
|
|
1
|
+
export type LayoutBound = number | 'unbounded';
|
|
2
|
+
export type LayoutDirection = 'ltr' | 'rtl' | 'auto';
|
|
3
|
+
export type LogicalAxis = 'inline' | 'block';
|
|
4
|
+
export type LogicalAlign = 'start' | 'center' | 'end' | 'stretch';
|
|
5
|
+
export type LayoutFitPolicy = 'fixed' | 'shrink' | 'grow' | 'truncate' | 'wrap' | 'overflow' | 'clip' | 'priority';
|
|
6
|
+
export interface LayoutConstraints {
|
|
7
|
+
readonly minInline: number;
|
|
8
|
+
readonly maxInline: LayoutBound;
|
|
9
|
+
readonly minBlock: number;
|
|
10
|
+
readonly maxBlock: LayoutBound;
|
|
11
|
+
}
|
|
12
|
+
export interface LayoutConstraintsInput {
|
|
13
|
+
readonly minInline?: number;
|
|
14
|
+
readonly maxInline?: LayoutBound;
|
|
15
|
+
readonly minBlock?: number;
|
|
16
|
+
readonly maxBlock?: LayoutBound;
|
|
17
|
+
}
|
|
18
|
+
export interface LayoutPreference {
|
|
19
|
+
readonly minInline: number;
|
|
20
|
+
readonly preferredInline: number;
|
|
21
|
+
readonly maxInline: LayoutBound;
|
|
22
|
+
readonly minBlock: number;
|
|
23
|
+
readonly preferredBlock: number;
|
|
24
|
+
readonly maxBlock: LayoutBound;
|
|
25
|
+
}
|
|
26
|
+
export interface LayoutPreferenceInput {
|
|
27
|
+
readonly minInline?: number;
|
|
28
|
+
readonly preferredInline?: number;
|
|
29
|
+
readonly maxInline?: LayoutBound;
|
|
30
|
+
readonly minBlock?: number;
|
|
31
|
+
readonly preferredBlock?: number;
|
|
32
|
+
readonly maxBlock?: LayoutBound;
|
|
33
|
+
}
|
|
34
|
+
export interface AssignedLayoutRect {
|
|
35
|
+
readonly inlineStart: number;
|
|
36
|
+
readonly blockStart: number;
|
|
37
|
+
readonly inlineSize: number;
|
|
38
|
+
readonly blockSize: number;
|
|
39
|
+
}
|
|
40
|
+
export interface AssignedLayoutRectInput {
|
|
41
|
+
readonly inlineStart?: number;
|
|
42
|
+
readonly blockStart?: number;
|
|
43
|
+
readonly inlineSize?: number;
|
|
44
|
+
readonly blockSize?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface LayoutEnvelope {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly role: string;
|
|
49
|
+
readonly direction: LayoutDirection;
|
|
50
|
+
readonly constraints: LayoutConstraints;
|
|
51
|
+
readonly preference: LayoutPreference;
|
|
52
|
+
readonly fit?: LayoutFitPolicy;
|
|
53
|
+
readonly assigned?: AssignedLayoutRect;
|
|
54
|
+
readonly reason?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ResolvedLayoutEnvelope extends LayoutEnvelope {
|
|
57
|
+
readonly assigned: AssignedLayoutRect;
|
|
58
|
+
readonly reason: string;
|
|
59
|
+
}
|
|
60
|
+
export interface LayoutEnvelopeInput {
|
|
61
|
+
readonly id: string;
|
|
62
|
+
readonly role: string;
|
|
63
|
+
readonly direction?: LayoutDirection;
|
|
64
|
+
readonly constraints: LayoutConstraints;
|
|
65
|
+
readonly preference: LayoutPreference;
|
|
66
|
+
readonly fit?: LayoutFitPolicy;
|
|
67
|
+
}
|
|
68
|
+
export interface LayoutFact {
|
|
69
|
+
readonly kind: string;
|
|
70
|
+
readonly key: string;
|
|
71
|
+
readonly value: string | number | boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface ContentExtent {
|
|
74
|
+
readonly source: 'surface' | 'buffer' | 'text';
|
|
75
|
+
readonly inlineSize: number;
|
|
76
|
+
readonly blockSize: number;
|
|
77
|
+
readonly baseline?: number;
|
|
78
|
+
readonly facts: readonly LayoutFact[];
|
|
79
|
+
}
|
|
80
|
+
export interface ContentExtentInput {
|
|
81
|
+
readonly width?: number;
|
|
82
|
+
readonly height?: number;
|
|
83
|
+
readonly inlineSize?: number;
|
|
84
|
+
readonly blockSize?: number;
|
|
85
|
+
readonly baseline?: number;
|
|
86
|
+
readonly facts?: readonly LayoutFact[];
|
|
87
|
+
}
|
|
88
|
+
export interface TextMeasurementInput {
|
|
89
|
+
readonly text: string;
|
|
90
|
+
readonly availableInline: number;
|
|
91
|
+
readonly direction: LayoutDirection;
|
|
92
|
+
readonly wrap: 'none' | 'word';
|
|
93
|
+
}
|
|
94
|
+
export type TextMeasurementAdapter = (input: TextMeasurementInput) => Omit<ContentExtent, 'source'>;
|
|
95
|
+
export interface MeasureTextContentInput {
|
|
96
|
+
readonly text: string;
|
|
97
|
+
readonly availableInline: number;
|
|
98
|
+
readonly direction?: LayoutDirection;
|
|
99
|
+
readonly wrap?: 'none' | 'word';
|
|
100
|
+
readonly adapter: TextMeasurementAdapter;
|
|
101
|
+
}
|
|
102
|
+
export type StackTrack = {
|
|
103
|
+
readonly kind: 'fixed';
|
|
104
|
+
readonly size: number;
|
|
105
|
+
} | {
|
|
106
|
+
readonly kind: 'flex';
|
|
107
|
+
readonly weight?: number;
|
|
108
|
+
};
|
|
109
|
+
export interface StackLayoutChildInput {
|
|
110
|
+
readonly envelope: LayoutEnvelope;
|
|
111
|
+
readonly track: StackTrack;
|
|
112
|
+
}
|
|
113
|
+
export interface StackLayoutInput {
|
|
114
|
+
readonly id: string;
|
|
115
|
+
readonly role: string;
|
|
116
|
+
readonly axis: LogicalAxis;
|
|
117
|
+
readonly direction?: LayoutDirection;
|
|
118
|
+
readonly rect: AssignedLayoutRectInput;
|
|
119
|
+
readonly gap?: number;
|
|
120
|
+
readonly children: readonly StackLayoutChildInput[];
|
|
121
|
+
}
|
|
122
|
+
export interface StackLayoutResult {
|
|
123
|
+
readonly id: string;
|
|
124
|
+
readonly role: string;
|
|
125
|
+
readonly axis: LogicalAxis;
|
|
126
|
+
readonly direction: LayoutDirection;
|
|
127
|
+
readonly assigned: AssignedLayoutRect;
|
|
128
|
+
readonly roundingPolicy: 'largest-remainder-source-order';
|
|
129
|
+
readonly children: readonly ResolvedLayoutEnvelope[];
|
|
130
|
+
}
|
|
131
|
+
export interface PlaceInRectInput {
|
|
132
|
+
readonly envelope: LayoutEnvelope;
|
|
133
|
+
readonly direction?: LayoutDirection;
|
|
134
|
+
readonly parent: AssignedLayoutRectInput;
|
|
135
|
+
readonly size: {
|
|
136
|
+
readonly inlineSize: number;
|
|
137
|
+
readonly blockSize: number;
|
|
138
|
+
};
|
|
139
|
+
readonly inlineAlign: LogicalAlign;
|
|
140
|
+
readonly blockAlign: LogicalAlign;
|
|
141
|
+
}
|
|
142
|
+
export interface LayoutRenderInput {
|
|
143
|
+
readonly envelope: ResolvedLayoutEnvelope;
|
|
144
|
+
readonly assigned: AssignedLayoutRect;
|
|
145
|
+
}
|
|
146
|
+
export interface LayoutRenderResult<Output> {
|
|
147
|
+
readonly envelope: ResolvedLayoutEnvelope;
|
|
148
|
+
readonly assigned: AssignedLayoutRect;
|
|
149
|
+
readonly output: Output;
|
|
150
|
+
}
|
|
151
|
+
export declare const RE035_LAYOUT_SCOPE: Readonly<{
|
|
152
|
+
design: "RE-035";
|
|
153
|
+
status: "landed";
|
|
154
|
+
included: readonly string[];
|
|
155
|
+
deferred: readonly string[];
|
|
156
|
+
}>;
|
|
157
|
+
export declare function layoutConstraints(input?: LayoutConstraintsInput): LayoutConstraints;
|
|
158
|
+
export declare function layoutPreference(input?: LayoutPreferenceInput): LayoutPreference;
|
|
159
|
+
export declare function assignedLayoutRect(input: AssignedLayoutRectInput): AssignedLayoutRect;
|
|
160
|
+
export declare function defineLayoutEnvelope(input: LayoutEnvelopeInput): LayoutEnvelope;
|
|
161
|
+
export declare function assignLayoutChild(envelope: LayoutEnvelope, assigned: AssignedLayoutRectInput, reason: string): ResolvedLayoutEnvelope;
|
|
162
|
+
export declare function isResolvedLayoutEnvelope(envelope: LayoutEnvelope): envelope is ResolvedLayoutEnvelope;
|
|
163
|
+
export declare function renderWithResolvedLayout<Output>(envelope: LayoutEnvelope, renderer: (input: LayoutRenderInput) => Output): LayoutRenderResult<Output>;
|
|
164
|
+
export declare function contentExtentFromSurface(surface: {
|
|
165
|
+
readonly width: number;
|
|
166
|
+
readonly height: number;
|
|
167
|
+
}, facts?: readonly LayoutFact[]): ContentExtent;
|
|
168
|
+
export declare function contentExtentFromBuffer(input: ContentExtentInput): ContentExtent;
|
|
169
|
+
export declare function measureTextContent(input: MeasureTextContentInput): ContentExtent;
|
|
170
|
+
export declare function resolveStackLayout(input: StackLayoutInput): StackLayoutResult;
|
|
171
|
+
export declare function placeInRect(input: PlaceInRectInput): ResolvedLayoutEnvelope;
|
|
172
|
+
export declare function layoutExplanationFacts(envelope: ResolvedLayoutEnvelope): readonly LayoutFact[];
|
|
173
|
+
export declare function layoutExplanationText(envelope: ResolvedLayoutEnvelope): string;
|
|
174
|
+
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/core/layout/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { sanitizeNonNegativeInt } from '../numeric.js';
|
|
2
|
+
export const RE035_LAYOUT_SCOPE = Object.freeze({
|
|
3
|
+
design: 'RE-035',
|
|
4
|
+
status: 'landed',
|
|
5
|
+
included: Object.freeze([
|
|
6
|
+
'layout-envelope',
|
|
7
|
+
'constraint-negotiation',
|
|
8
|
+
'stack',
|
|
9
|
+
'place',
|
|
10
|
+
'content-measurement-seam',
|
|
11
|
+
'render-assignment-seam',
|
|
12
|
+
]),
|
|
13
|
+
deferred: Object.freeze([
|
|
14
|
+
'RE-036 text measurement and inline flow',
|
|
15
|
+
'RE-037 overflow, viewports, scroll anchoring, and scrollbars',
|
|
16
|
+
'RE-038 box model, chrome regions, hit testing, and focus maps',
|
|
17
|
+
'RE-039 responsive variants, compression, and constraint fallbacks',
|
|
18
|
+
'RE-040 accessible layout semantics',
|
|
19
|
+
'WS-001 workspace tree',
|
|
20
|
+
]),
|
|
21
|
+
});
|
|
22
|
+
export function layoutConstraints(input = {}) {
|
|
23
|
+
const minInline = sanitizeNonNegativeInt(input.minInline, 0);
|
|
24
|
+
const minBlock = sanitizeNonNegativeInt(input.minBlock, 0);
|
|
25
|
+
return Object.freeze({
|
|
26
|
+
minInline,
|
|
27
|
+
maxInline: normalizeBound(input.maxInline, minInline),
|
|
28
|
+
minBlock,
|
|
29
|
+
maxBlock: normalizeBound(input.maxBlock, minBlock),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export function layoutPreference(input = {}) {
|
|
33
|
+
const minInline = sanitizeNonNegativeInt(input.minInline, 0);
|
|
34
|
+
const minBlock = sanitizeNonNegativeInt(input.minBlock, 0);
|
|
35
|
+
const maxInline = normalizeBound(input.maxInline, minInline);
|
|
36
|
+
const maxBlock = normalizeBound(input.maxBlock, minBlock);
|
|
37
|
+
return Object.freeze({
|
|
38
|
+
minInline,
|
|
39
|
+
preferredInline: normalizePreferred(input.preferredInline, minInline, maxInline),
|
|
40
|
+
maxInline,
|
|
41
|
+
minBlock,
|
|
42
|
+
preferredBlock: normalizePreferred(input.preferredBlock, minBlock, maxBlock),
|
|
43
|
+
maxBlock,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function assignedLayoutRect(input) {
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
inlineStart: sanitizeNonNegativeInt(input.inlineStart, 0),
|
|
49
|
+
blockStart: sanitizeNonNegativeInt(input.blockStart, 0),
|
|
50
|
+
inlineSize: sanitizeNonNegativeInt(input.inlineSize, 0),
|
|
51
|
+
blockSize: sanitizeNonNegativeInt(input.blockSize, 0),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export function defineLayoutEnvelope(input) {
|
|
55
|
+
const id = normalizeRequiredText(input.id, 'layout envelope: id is required');
|
|
56
|
+
const role = normalizeRequiredText(input.role, 'layout envelope: role is required');
|
|
57
|
+
const direction = normalizeDirection(input.direction);
|
|
58
|
+
const envelope = {
|
|
59
|
+
id,
|
|
60
|
+
role,
|
|
61
|
+
direction,
|
|
62
|
+
constraints: input.constraints,
|
|
63
|
+
preference: input.preference,
|
|
64
|
+
...(input.fit === undefined ? {} : { fit: input.fit }),
|
|
65
|
+
};
|
|
66
|
+
return Object.freeze(envelope);
|
|
67
|
+
}
|
|
68
|
+
export function assignLayoutChild(envelope, assigned, reason) {
|
|
69
|
+
const resolved = {
|
|
70
|
+
...envelope,
|
|
71
|
+
assigned: assignedLayoutRect(assigned),
|
|
72
|
+
reason: normalizeRequiredText(reason, 'layout assignment: reason is required'),
|
|
73
|
+
};
|
|
74
|
+
return Object.freeze(resolved);
|
|
75
|
+
}
|
|
76
|
+
export function isResolvedLayoutEnvelope(envelope) {
|
|
77
|
+
return typeof envelope.assigned === 'object'
|
|
78
|
+
&& envelope.assigned !== null
|
|
79
|
+
&& typeof envelope.reason === 'string'
|
|
80
|
+
&& envelope.reason.length > 0;
|
|
81
|
+
}
|
|
82
|
+
export function renderWithResolvedLayout(envelope, renderer) {
|
|
83
|
+
if (!isResolvedLayoutEnvelope(envelope)) {
|
|
84
|
+
throw new Error(`layout render seam: visible node ${envelope.id} requires an assigned layout envelope`);
|
|
85
|
+
}
|
|
86
|
+
const output = renderer({ envelope, assigned: envelope.assigned });
|
|
87
|
+
return Object.freeze({
|
|
88
|
+
envelope,
|
|
89
|
+
assigned: envelope.assigned,
|
|
90
|
+
output,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export function contentExtentFromSurface(surface, facts = []) {
|
|
94
|
+
return contentExtent('surface', {
|
|
95
|
+
inlineSize: surface.width,
|
|
96
|
+
blockSize: surface.height,
|
|
97
|
+
facts,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
export function contentExtentFromBuffer(input) {
|
|
101
|
+
return contentExtent('buffer', {
|
|
102
|
+
inlineSize: input.inlineSize ?? input.width ?? 0,
|
|
103
|
+
blockSize: input.blockSize ?? input.height ?? 0,
|
|
104
|
+
baseline: input.baseline,
|
|
105
|
+
facts: input.facts ?? [],
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
export function measureTextContent(input) {
|
|
109
|
+
const measured = input.adapter({
|
|
110
|
+
text: input.text,
|
|
111
|
+
availableInline: sanitizeNonNegativeInt(input.availableInline, 0),
|
|
112
|
+
direction: normalizeDirection(input.direction),
|
|
113
|
+
wrap: input.wrap ?? 'none',
|
|
114
|
+
});
|
|
115
|
+
return contentExtent('text', measured);
|
|
116
|
+
}
|
|
117
|
+
export function resolveStackLayout(input) {
|
|
118
|
+
const children = [...input.children];
|
|
119
|
+
const assigned = assignedLayoutRect(input.rect);
|
|
120
|
+
const axis = input.axis;
|
|
121
|
+
const direction = normalizeDirection(input.direction);
|
|
122
|
+
const gap = sanitizeNonNegativeInt(input.gap, 0);
|
|
123
|
+
const mainSize = axis === 'inline' ? assigned.inlineSize : assigned.blockSize;
|
|
124
|
+
const crossSize = axis === 'inline' ? assigned.blockSize : assigned.inlineSize;
|
|
125
|
+
const totalGap = gap * Math.max(0, children.length - 1);
|
|
126
|
+
const available = Math.max(0, mainSize - totalGap);
|
|
127
|
+
const sizes = resolveStackTrackSizes(children, available);
|
|
128
|
+
const resolvedChildren = [];
|
|
129
|
+
let cursor = axis === 'inline' ? assigned.inlineStart : assigned.blockStart;
|
|
130
|
+
for (let index = 0; index < children.length; index++) {
|
|
131
|
+
const child = children[index];
|
|
132
|
+
const size = sizes[index] ?? 0;
|
|
133
|
+
const rect = axis === 'inline'
|
|
134
|
+
? {
|
|
135
|
+
inlineStart: cursor,
|
|
136
|
+
blockStart: assigned.blockStart,
|
|
137
|
+
inlineSize: size,
|
|
138
|
+
blockSize: crossSize,
|
|
139
|
+
}
|
|
140
|
+
: {
|
|
141
|
+
inlineStart: assigned.inlineStart,
|
|
142
|
+
blockStart: cursor,
|
|
143
|
+
inlineSize: crossSize,
|
|
144
|
+
blockSize: size,
|
|
145
|
+
};
|
|
146
|
+
const reason = child.track.kind === 'fixed'
|
|
147
|
+
? `stack ${axis} fixed track ${size} cells`
|
|
148
|
+
: `stack ${axis} flex track ${trackWeight(child.track)} resolved by largest-remainder-source-order`;
|
|
149
|
+
resolvedChildren.push(assignLayoutChild(child.envelope, rect, reason));
|
|
150
|
+
cursor += size + (index < children.length - 1 ? gap : 0);
|
|
151
|
+
}
|
|
152
|
+
return Object.freeze({
|
|
153
|
+
id: normalizeRequiredText(input.id, 'stack layout: id is required'),
|
|
154
|
+
role: normalizeRequiredText(input.role, 'stack layout: role is required'),
|
|
155
|
+
axis,
|
|
156
|
+
direction,
|
|
157
|
+
assigned,
|
|
158
|
+
roundingPolicy: 'largest-remainder-source-order',
|
|
159
|
+
children: Object.freeze(resolvedChildren),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
export function placeInRect(input) {
|
|
163
|
+
const parent = assignedLayoutRect(input.parent);
|
|
164
|
+
const direction = normalizeDirection(input.direction ?? input.envelope.direction);
|
|
165
|
+
const inlineAlign = input.inlineAlign;
|
|
166
|
+
const blockAlign = input.blockAlign;
|
|
167
|
+
const inlineSize = inlineAlign === 'stretch'
|
|
168
|
+
? parent.inlineSize
|
|
169
|
+
: Math.min(parent.inlineSize, sanitizeNonNegativeInt(input.size.inlineSize, 0));
|
|
170
|
+
const blockSize = blockAlign === 'stretch'
|
|
171
|
+
? parent.blockSize
|
|
172
|
+
: Math.min(parent.blockSize, sanitizeNonNegativeInt(input.size.blockSize, 0));
|
|
173
|
+
const inlineOffset = resolveInlineOffset(parent.inlineSize, inlineSize, inlineAlign, direction);
|
|
174
|
+
const blockOffset = resolveBlockOffset(parent.blockSize, blockSize, blockAlign);
|
|
175
|
+
return assignLayoutChild(input.envelope, {
|
|
176
|
+
inlineStart: parent.inlineStart + inlineOffset,
|
|
177
|
+
blockStart: parent.blockStart + blockOffset,
|
|
178
|
+
inlineSize,
|
|
179
|
+
blockSize,
|
|
180
|
+
}, `place ${direction} inline ${inlineAlign} block ${blockAlign}`);
|
|
181
|
+
}
|
|
182
|
+
export function layoutExplanationFacts(envelope) {
|
|
183
|
+
return Object.freeze([
|
|
184
|
+
fact('node.id', envelope.id),
|
|
185
|
+
fact('role', envelope.role),
|
|
186
|
+
fact('direction', envelope.direction),
|
|
187
|
+
fact('constraints.inline', formatRange(envelope.constraints.minInline, envelope.constraints.maxInline)),
|
|
188
|
+
fact('constraints.block', formatRange(envelope.constraints.minBlock, envelope.constraints.maxBlock)),
|
|
189
|
+
fact('preference.inline', formatPreference(envelope.preference.minInline, envelope.preference.preferredInline, envelope.preference.maxInline)),
|
|
190
|
+
fact('preference.block', formatPreference(envelope.preference.minBlock, envelope.preference.preferredBlock, envelope.preference.maxBlock)),
|
|
191
|
+
fact('assigned', [
|
|
192
|
+
`inline-start ${envelope.assigned.inlineStart}`,
|
|
193
|
+
`block-start ${envelope.assigned.blockStart}`,
|
|
194
|
+
`inline-size ${envelope.assigned.inlineSize}`,
|
|
195
|
+
`block-size ${envelope.assigned.blockSize}`,
|
|
196
|
+
].join(' ')),
|
|
197
|
+
fact('reason', envelope.reason),
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
export function layoutExplanationText(envelope) {
|
|
201
|
+
const facts = layoutExplanationFacts(envelope);
|
|
202
|
+
return [
|
|
203
|
+
`node ${envelope.id}`,
|
|
204
|
+
...facts
|
|
205
|
+
.filter((item) => item.key !== 'node.id')
|
|
206
|
+
.map((item) => `${item.key} ${item.value}`),
|
|
207
|
+
].join('\n');
|
|
208
|
+
}
|
|
209
|
+
function contentExtent(source, input) {
|
|
210
|
+
const extent = {
|
|
211
|
+
source,
|
|
212
|
+
inlineSize: sanitizeNonNegativeInt(input.inlineSize, 0),
|
|
213
|
+
blockSize: sanitizeNonNegativeInt(input.blockSize, 0),
|
|
214
|
+
...(input.baseline === undefined ? {} : { baseline: sanitizeNonNegativeInt(input.baseline, 0) }),
|
|
215
|
+
facts: freezeFacts(input.facts ?? []),
|
|
216
|
+
};
|
|
217
|
+
return Object.freeze(extent);
|
|
218
|
+
}
|
|
219
|
+
function resolveStackTrackSizes(children, available) {
|
|
220
|
+
const sizes = new Array(children.length).fill(0);
|
|
221
|
+
let fixed = 0;
|
|
222
|
+
let totalFlex = 0;
|
|
223
|
+
for (let index = 0; index < children.length; index++) {
|
|
224
|
+
const track = children[index].track;
|
|
225
|
+
if (track.kind === 'fixed') {
|
|
226
|
+
const size = sanitizeNonNegativeInt(track.size, 0);
|
|
227
|
+
sizes[index] = size;
|
|
228
|
+
fixed += size;
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
totalFlex += trackWeight(track);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
if (fixed > available) {
|
|
235
|
+
let remaining = available;
|
|
236
|
+
for (let index = 0; index < children.length; index++) {
|
|
237
|
+
if (children[index].track.kind !== 'fixed')
|
|
238
|
+
continue;
|
|
239
|
+
const next = Math.min(sizes[index] ?? 0, remaining);
|
|
240
|
+
sizes[index] = next;
|
|
241
|
+
remaining = Math.max(0, remaining - next);
|
|
242
|
+
}
|
|
243
|
+
return sizes;
|
|
244
|
+
}
|
|
245
|
+
const remaining = Math.max(0, available - fixed);
|
|
246
|
+
if (totalFlex <= 0 || remaining <= 0)
|
|
247
|
+
return sizes;
|
|
248
|
+
let assigned = 0;
|
|
249
|
+
const fractionalShares = [];
|
|
250
|
+
for (let index = 0; index < children.length; index++) {
|
|
251
|
+
const track = children[index].track;
|
|
252
|
+
if (track.kind !== 'flex')
|
|
253
|
+
continue;
|
|
254
|
+
const raw = (remaining * trackWeight(track)) / totalFlex;
|
|
255
|
+
const whole = Math.floor(raw);
|
|
256
|
+
sizes[index] = whole;
|
|
257
|
+
assigned += whole;
|
|
258
|
+
fractionalShares.push({ index, remainder: raw - whole });
|
|
259
|
+
}
|
|
260
|
+
let leftover = remaining - assigned;
|
|
261
|
+
fractionalShares.sort((left, right) => right.remainder - left.remainder || left.index - right.index);
|
|
262
|
+
for (const share of fractionalShares) {
|
|
263
|
+
if (leftover <= 0)
|
|
264
|
+
break;
|
|
265
|
+
sizes[share.index] = (sizes[share.index] ?? 0) + 1;
|
|
266
|
+
leftover -= 1;
|
|
267
|
+
}
|
|
268
|
+
return sizes;
|
|
269
|
+
}
|
|
270
|
+
function trackWeight(track) {
|
|
271
|
+
if (track.kind !== 'flex')
|
|
272
|
+
return 0;
|
|
273
|
+
const weight = track.weight ?? 1;
|
|
274
|
+
if (!Number.isFinite(weight) || weight <= 0)
|
|
275
|
+
return 1;
|
|
276
|
+
return Math.max(1, Math.floor(weight));
|
|
277
|
+
}
|
|
278
|
+
function resolveInlineOffset(parentSize, childSize, align, direction) {
|
|
279
|
+
const remaining = Math.max(0, parentSize - childSize);
|
|
280
|
+
if (align === 'stretch')
|
|
281
|
+
return 0;
|
|
282
|
+
if (align === 'center')
|
|
283
|
+
return Math.floor(remaining / 2);
|
|
284
|
+
if (direction === 'rtl') {
|
|
285
|
+
return align === 'start' ? remaining : 0;
|
|
286
|
+
}
|
|
287
|
+
return align === 'start' ? 0 : remaining;
|
|
288
|
+
}
|
|
289
|
+
function resolveBlockOffset(parentSize, childSize, align) {
|
|
290
|
+
const remaining = Math.max(0, parentSize - childSize);
|
|
291
|
+
if (align === 'stretch' || align === 'start')
|
|
292
|
+
return 0;
|
|
293
|
+
if (align === 'center')
|
|
294
|
+
return Math.floor(remaining / 2);
|
|
295
|
+
return remaining;
|
|
296
|
+
}
|
|
297
|
+
function normalizeBound(value, min) {
|
|
298
|
+
if (value === 'unbounded' || value === undefined)
|
|
299
|
+
return 'unbounded';
|
|
300
|
+
return Math.max(min, sanitizeNonNegativeInt(value, min));
|
|
301
|
+
}
|
|
302
|
+
function normalizePreferred(value, min, max) {
|
|
303
|
+
const preferred = sanitizeNonNegativeInt(value, min);
|
|
304
|
+
if (max === 'unbounded')
|
|
305
|
+
return Math.max(min, preferred);
|
|
306
|
+
return Math.max(min, Math.min(max, preferred));
|
|
307
|
+
}
|
|
308
|
+
function normalizeDirection(direction) {
|
|
309
|
+
return direction ?? 'ltr';
|
|
310
|
+
}
|
|
311
|
+
function normalizeRequiredText(value, message) {
|
|
312
|
+
const normalized = value.trim();
|
|
313
|
+
if (normalized.length === 0)
|
|
314
|
+
throw new Error(message);
|
|
315
|
+
return normalized;
|
|
316
|
+
}
|
|
317
|
+
function freezeFacts(facts) {
|
|
318
|
+
return Object.freeze(facts.map((item) => Object.freeze({
|
|
319
|
+
kind: item.kind,
|
|
320
|
+
key: item.key,
|
|
321
|
+
value: item.value,
|
|
322
|
+
})));
|
|
323
|
+
}
|
|
324
|
+
function fact(key, value) {
|
|
325
|
+
return Object.freeze({ kind: 'layout', key, value });
|
|
326
|
+
}
|
|
327
|
+
function formatRange(min, max) {
|
|
328
|
+
return `${min}..${formatBound(max)}`;
|
|
329
|
+
}
|
|
330
|
+
function formatPreference(min, preferred, max) {
|
|
331
|
+
return `min ${min} preferred ${preferred} max ${formatBound(max)}`;
|
|
332
|
+
}
|
|
333
|
+
function formatBound(bound) {
|
|
334
|
+
return bound === 'unbounded' ? 'unbounded' : String(bound);
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../src/core/layout/envelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { LayoutRect } from '../../ports/surface.js';
|
|
2
|
+
export type GridTrack = number | `${number}fr`;
|
|
3
|
+
export type SplitLayoutDirection = 'row' | 'column';
|
|
4
|
+
export interface SplitPaneRectOptions {
|
|
5
|
+
readonly direction?: SplitLayoutDirection;
|
|
6
|
+
readonly width: number;
|
|
7
|
+
readonly height: number;
|
|
8
|
+
readonly ratio: number;
|
|
9
|
+
readonly minA?: number;
|
|
10
|
+
readonly minB?: number;
|
|
11
|
+
readonly dividerSize?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface SplitPaneRects {
|
|
14
|
+
readonly paneA: LayoutRect;
|
|
15
|
+
readonly paneB: LayoutRect;
|
|
16
|
+
readonly divider: LayoutRect;
|
|
17
|
+
}
|
|
18
|
+
export interface SplitAxisOptions {
|
|
19
|
+
readonly available: number;
|
|
20
|
+
readonly ratio: number;
|
|
21
|
+
readonly minA?: number;
|
|
22
|
+
readonly minB?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SplitAxisSizes {
|
|
25
|
+
readonly paneA: number;
|
|
26
|
+
readonly paneB: number;
|
|
27
|
+
}
|
|
28
|
+
export interface GridRectOptions {
|
|
29
|
+
readonly width: number;
|
|
30
|
+
readonly height: number;
|
|
31
|
+
readonly columns: readonly GridTrack[];
|
|
32
|
+
readonly rows: readonly GridTrack[];
|
|
33
|
+
readonly areas: readonly string[];
|
|
34
|
+
readonly gap?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare function solveSplitPaneRects(options: SplitPaneRectOptions): SplitPaneRects;
|
|
37
|
+
export declare function solveSplitAxisSizes(options: SplitAxisOptions): SplitAxisSizes;
|
|
38
|
+
export declare function solveGridRects(options: GridRectOptions): ReadonlyMap<string, LayoutRect>;
|
|
39
|
+
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/core/layout/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;AAC/C,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CAiCjF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAM7E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CA0ExF"}
|