pagiera 0.2.0-alpha.33
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 +528 -0
- package/dist/adapters.d.ts +89 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +2 -0
- package/dist/adapters.js.map +1 -0
- package/dist/client.d.ts +22 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +33 -0
- package/dist/client.js.map +1 -0
- package/dist/data.js +210 -0
- package/dist/data.js.map +7 -0
- package/dist/document.d.ts +63 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +25 -0
- package/dist/document.js.map +1 -0
- package/dist/editor.d.ts +14 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +59 -0
- package/dist/editor.js.map +1 -0
- package/dist/full-editor.d.ts +53 -0
- package/dist/full-editor.js +11117 -0
- package/dist/full-editor.js.map +7 -0
- package/dist/full.css +3498 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/app/api/ai-design/route.d.ts +3 -0
- package/dist/internal/app/api/ai-design/route.d.ts.map +1 -0
- package/dist/internal/app/api/ai-design/route.js +165 -0
- package/dist/internal/app/api/ai-design/route.js.map +1 -0
- package/dist/internal/app/p/editor/ai-panel.d.ts +27 -0
- package/dist/internal/app/p/editor/ai-panel.d.ts.map +1 -0
- package/dist/internal/app/p/editor/ai-panel.js +77 -0
- package/dist/internal/app/p/editor/ai-panel.js.map +1 -0
- package/dist/internal/app/p/editor/data-modal.d.ts +26 -0
- package/dist/internal/app/p/editor/data-modal.d.ts.map +1 -0
- package/dist/internal/app/p/editor/data-modal.js +94 -0
- package/dist/internal/app/p/editor/data-modal.js.map +1 -0
- package/dist/internal/app/p/editor/data-panel.d.ts +18 -0
- package/dist/internal/app/p/editor/data-panel.d.ts.map +1 -0
- package/dist/internal/app/p/editor/data-panel.js +45 -0
- package/dist/internal/app/p/editor/data-panel.js.map +1 -0
- package/dist/internal/app/p/editor/editor.d.ts +51 -0
- package/dist/internal/app/p/editor/editor.d.ts.map +1 -0
- package/dist/internal/app/p/editor/editor.js +1551 -0
- package/dist/internal/app/p/editor/editor.js.map +1 -0
- package/dist/internal/app/p/editor/fields.d.ts +111 -0
- package/dist/internal/app/p/editor/fields.d.ts.map +1 -0
- package/dist/internal/app/p/editor/fields.js +141 -0
- package/dist/internal/app/p/editor/fields.js.map +1 -0
- package/dist/internal/app/p/editor/inspector.d.ts +38 -0
- package/dist/internal/app/p/editor/inspector.d.ts.map +1 -0
- package/dist/internal/app/p/editor/inspector.js +336 -0
- package/dist/internal/app/p/editor/inspector.js.map +1 -0
- package/dist/internal/app/p/editor/library.d.ts +18 -0
- package/dist/internal/app/p/editor/library.d.ts.map +1 -0
- package/dist/internal/app/p/editor/library.js +61 -0
- package/dist/internal/app/p/editor/library.js.map +1 -0
- package/dist/internal/app/p/editor/parts.d.ts +75 -0
- package/dist/internal/app/p/editor/parts.d.ts.map +1 -0
- package/dist/internal/app/p/editor/parts.js +261 -0
- package/dist/internal/app/p/editor/parts.js.map +1 -0
- package/dist/internal/app/p/editor/templates-panel.d.ts +6 -0
- package/dist/internal/app/p/editor/templates-panel.d.ts.map +1 -0
- package/dist/internal/app/p/editor/templates-panel.js +12 -0
- package/dist/internal/app/p/editor/templates-panel.js.map +1 -0
- package/dist/internal/app/p/editor/use-canvas-view.d.ts +24 -0
- package/dist/internal/app/p/editor/use-canvas-view.d.ts.map +1 -0
- package/dist/internal/app/p/editor/use-canvas-view.js +242 -0
- package/dist/internal/app/p/editor/use-canvas-view.js.map +1 -0
- package/dist/internal/app/p/editor/use-editor.d.ts +48 -0
- package/dist/internal/app/p/editor/use-editor.d.ts.map +1 -0
- package/dist/internal/app/p/editor/use-editor.js +224 -0
- package/dist/internal/app/p/editor/use-editor.js.map +1 -0
- package/dist/internal/app/p/editor/variables-panel.d.ts +8 -0
- package/dist/internal/app/p/editor/variables-panel.d.ts.map +1 -0
- package/dist/internal/app/p/editor/variables-panel.js +52 -0
- package/dist/internal/app/p/editor/variables-panel.js.map +1 -0
- package/dist/internal/components/ui/select.d.ts +12 -0
- package/dist/internal/components/ui/select.d.ts.map +1 -0
- package/dist/internal/components/ui/select.js +32 -0
- package/dist/internal/components/ui/select.js.map +1 -0
- package/dist/internal/drizzle/index.d.ts +6 -0
- package/dist/internal/drizzle/index.d.ts.map +1 -0
- package/dist/internal/drizzle/index.js +20 -0
- package/dist/internal/drizzle/index.js.map +1 -0
- package/dist/internal/drizzle/schema.d.ts +405 -0
- package/dist/internal/drizzle/schema.d.ts.map +1 -0
- package/dist/internal/drizzle/schema.js +70 -0
- package/dist/internal/drizzle/schema.js.map +1 -0
- package/dist/internal/lib/data/context.d.ts +8 -0
- package/dist/internal/lib/data/context.d.ts.map +1 -0
- package/dist/internal/lib/data/context.js +17 -0
- package/dist/internal/lib/data/context.js.map +1 -0
- package/dist/internal/lib/data/source.d.ts +54 -0
- package/dist/internal/lib/data/source.d.ts.map +1 -0
- package/dist/internal/lib/data/source.js +229 -0
- package/dist/internal/lib/data/source.js.map +1 -0
- package/dist/internal/lib/editor/ai-types.d.ts +44 -0
- package/dist/internal/lib/editor/ai-types.d.ts.map +1 -0
- package/dist/internal/lib/editor/ai-types.js +2 -0
- package/dist/internal/lib/editor/ai-types.js.map +1 -0
- package/dist/internal/lib/editor/arrange.d.ts +12 -0
- package/dist/internal/lib/editor/arrange.d.ts.map +1 -0
- package/dist/internal/lib/editor/arrange.js +72 -0
- package/dist/internal/lib/editor/arrange.js.map +1 -0
- package/dist/internal/lib/editor/cascade.d.ts +39 -0
- package/dist/internal/lib/editor/cascade.d.ts.map +1 -0
- package/dist/internal/lib/editor/cascade.js +86 -0
- package/dist/internal/lib/editor/cascade.js.map +1 -0
- package/dist/internal/lib/editor/icon.d.ts +6 -0
- package/dist/internal/lib/editor/icon.d.ts.map +1 -0
- package/dist/internal/lib/editor/icon.js +13 -0
- package/dist/internal/lib/editor/icon.js.map +1 -0
- package/dist/internal/lib/editor/presets.d.ts +10 -0
- package/dist/internal/lib/editor/presets.d.ts.map +1 -0
- package/dist/internal/lib/editor/presets.js +83 -0
- package/dist/internal/lib/editor/presets.js.map +1 -0
- package/dist/internal/lib/editor/showcase.d.ts +14 -0
- package/dist/internal/lib/editor/showcase.d.ts.map +1 -0
- package/dist/internal/lib/editor/showcase.js +219 -0
- package/dist/internal/lib/editor/showcase.js.map +1 -0
- package/dist/internal/lib/editor/site-templates.d.ts +4 -0
- package/dist/internal/lib/editor/site-templates.d.ts.map +1 -0
- package/dist/internal/lib/editor/site-templates.js +156 -0
- package/dist/internal/lib/editor/site-templates.js.map +1 -0
- package/dist/internal/lib/editor/snap.d.ts +34 -0
- package/dist/internal/lib/editor/snap.d.ts.map +1 -0
- package/dist/internal/lib/editor/snap.js +70 -0
- package/dist/internal/lib/editor/snap.js.map +1 -0
- package/dist/internal/lib/editor/style.d.ts +53 -0
- package/dist/internal/lib/editor/style.d.ts.map +1 -0
- package/dist/internal/lib/editor/style.js +313 -0
- package/dist/internal/lib/editor/style.js.map +1 -0
- package/dist/internal/lib/editor/tree.d.ts +72 -0
- package/dist/internal/lib/editor/tree.d.ts.map +1 -0
- package/dist/internal/lib/editor/tree.js +301 -0
- package/dist/internal/lib/editor/tree.js.map +1 -0
- package/dist/internal/lib/editor/types.d.ts +273 -0
- package/dist/internal/lib/editor/types.d.ts.map +1 -0
- package/dist/internal/lib/editor/types.js +411 -0
- package/dist/internal/lib/editor/types.js.map +1 -0
- package/dist/internal/lib/editor/validate.d.ts +20 -0
- package/dist/internal/lib/editor/validate.d.ts.map +1 -0
- package/dist/internal/lib/editor/validate.js +467 -0
- package/dist/internal/lib/editor/validate.js.map +1 -0
- package/dist/internal/lib/pages.d.ts +83 -0
- package/dist/internal/lib/pages.d.ts.map +1 -0
- package/dist/internal/lib/pages.js +294 -0
- package/dist/internal/lib/pages.js.map +1 -0
- package/dist/internal/lib/render/bind.d.ts +18 -0
- package/dist/internal/lib/render/bind.d.ts.map +1 -0
- package/dist/internal/lib/render/bind.js +28 -0
- package/dist/internal/lib/render/bind.js.map +1 -0
- package/dist/internal/lib/render/css.d.ts +31 -0
- package/dist/internal/lib/render/css.d.ts.map +1 -0
- package/dist/internal/lib/render/css.js +239 -0
- package/dist/internal/lib/render/css.js.map +1 -0
- package/dist/internal/lib/render/load-data.d.ts +15 -0
- package/dist/internal/lib/render/load-data.d.ts.map +1 -0
- package/dist/internal/lib/render/load-data.js +39 -0
- package/dist/internal/lib/render/load-data.js.map +1 -0
- package/dist/internal/lib/render/page-render.d.ts +17 -0
- package/dist/internal/lib/render/page-render.d.ts.map +1 -0
- package/dist/internal/lib/render/page-render.js +117 -0
- package/dist/internal/lib/render/page-render.js.map +1 -0
- package/dist/internal/lib/utils.d.ts +3 -0
- package/dist/internal/lib/utils.d.ts.map +1 -0
- package/dist/internal/lib/utils.js +6 -0
- package/dist/internal/lib/utils.js.map +1 -0
- package/dist/manrope-data.d.ts +3 -0
- package/dist/manrope-data.d.ts.map +1 -0
- package/dist/manrope-data.js +3 -0
- package/dist/manrope-data.js.map +1 -0
- package/dist/page.d.ts +9 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +148 -0
- package/dist/page.js.map +1 -0
- package/dist/provider.d.ts +14 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +45 -0
- package/dist/provider.js.map +1 -0
- package/dist/runtime.d.ts +8 -0
- package/dist/runtime.js +717 -0
- package/dist/runtime.js.map +7 -0
- package/dist/server.d.ts +31 -0
- package/dist/server.js +2267 -0
- package/dist/server.js.map +7 -0
- package/dist/styles.css +300 -0
- package/package.json +94 -0
- package/thumbnail.png +0 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { DEFAULT_CASCADE } from "./cascade";
|
|
2
|
+
import { applyStyle, resolveStyle } from "./style";
|
|
3
|
+
import { ELEMENT_DEFAULTS, isContainer, makeStyle, } from "./types";
|
|
4
|
+
export function indexById(elements) {
|
|
5
|
+
return new Map(elements.map((el) => [el.id, el]));
|
|
6
|
+
}
|
|
7
|
+
export function childrenOf(elements, parentId) {
|
|
8
|
+
return elements
|
|
9
|
+
.filter((el) => (el.parentId ?? undefined) === parentId)
|
|
10
|
+
.sort((a, b) => a.z - b.z);
|
|
11
|
+
}
|
|
12
|
+
/** The element plus every descendant. */
|
|
13
|
+
export function subtreeIds(elements, rootId) {
|
|
14
|
+
const ids = new Set([rootId]);
|
|
15
|
+
let grew = true;
|
|
16
|
+
while (grew) {
|
|
17
|
+
grew = false;
|
|
18
|
+
for (const el of elements) {
|
|
19
|
+
if (el.parentId && ids.has(el.parentId) && !ids.has(el.id)) {
|
|
20
|
+
ids.add(el.id);
|
|
21
|
+
grew = true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return ids;
|
|
26
|
+
}
|
|
27
|
+
export function removeSubtree(elements, rootId) {
|
|
28
|
+
const doomed = subtreeIds(elements, rootId);
|
|
29
|
+
return elements.filter((el) => !doomed.has(el.id));
|
|
30
|
+
}
|
|
31
|
+
export function nextZ(elements, parentId) {
|
|
32
|
+
const siblings = childrenOf(elements, parentId);
|
|
33
|
+
return siblings.length ? Math.max(...siblings.map((s) => s.z)) + 1 : 0;
|
|
34
|
+
}
|
|
35
|
+
export function newId() {
|
|
36
|
+
// `crypto.randomUUID` needs a secure context, which localhost and https
|
|
37
|
+
// both provide; the fallback covers anything else.
|
|
38
|
+
if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
|
|
39
|
+
return crypto.randomUUID();
|
|
40
|
+
}
|
|
41
|
+
return `el-${Date.now().toString(36)}-${Math.floor(Math.random() * 1e9).toString(36)}`;
|
|
42
|
+
}
|
|
43
|
+
export function createElement(type, position) {
|
|
44
|
+
const defaults = ELEMENT_DEFAULTS[type];
|
|
45
|
+
return {
|
|
46
|
+
id: newId(),
|
|
47
|
+
type,
|
|
48
|
+
z: position.z,
|
|
49
|
+
parentId: position.parentId,
|
|
50
|
+
...defaults.props,
|
|
51
|
+
base: makeStyle({ ...defaults.style, x: position.x, y: position.y }),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Copies an element and everything under it, giving each node a fresh id while
|
|
56
|
+
* keeping the parent/child wiring intact.
|
|
57
|
+
*/
|
|
58
|
+
export function cloneSubtree(elements, rootId, offset = { x: 16, y: 16 }) {
|
|
59
|
+
const byId = indexById(elements);
|
|
60
|
+
const root = byId.get(rootId);
|
|
61
|
+
if (!root)
|
|
62
|
+
return null;
|
|
63
|
+
const ids = subtreeIds(elements, rootId);
|
|
64
|
+
const idMap = new Map();
|
|
65
|
+
for (const id of ids)
|
|
66
|
+
idMap.set(id, newId());
|
|
67
|
+
const remap = (id) => idMap.get(id) ?? id;
|
|
68
|
+
const copies = elements
|
|
69
|
+
.filter((el) => ids.has(el.id))
|
|
70
|
+
.map((el) => ({
|
|
71
|
+
...el,
|
|
72
|
+
id: remap(el.id),
|
|
73
|
+
parentId: el.parentId ? idMap.get(el.parentId) : undefined,
|
|
74
|
+
// Only the root shifts; descendants stay positioned relative to it.
|
|
75
|
+
base: el.id === rootId
|
|
76
|
+
? { ...el.base, x: el.base.x + offset.x, y: el.base.y + offset.y }
|
|
77
|
+
: el.base,
|
|
78
|
+
}));
|
|
79
|
+
const newRootId = remap(rootId);
|
|
80
|
+
const topZ = nextZ(elements, root.parentId);
|
|
81
|
+
return {
|
|
82
|
+
elements: copies.map((el) => el.id === newRootId ? { ...el, z: topZ } : el),
|
|
83
|
+
rootId: newRootId,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/** Absolute position on the canvas, accumulating every ancestor's offset. */
|
|
87
|
+
export function absolutePosition(byId, element, breakpoint, cascade = DEFAULT_CASCADE) {
|
|
88
|
+
const own = resolveStyle(element, breakpoint, cascade);
|
|
89
|
+
let x = own.x;
|
|
90
|
+
let y = own.y;
|
|
91
|
+
let parent = element.parentId ? byId.get(element.parentId) : undefined;
|
|
92
|
+
const guard = new Set([element.id]);
|
|
93
|
+
while (parent && !guard.has(parent.id)) {
|
|
94
|
+
guard.add(parent.id);
|
|
95
|
+
const style = resolveStyle(parent, breakpoint, cascade);
|
|
96
|
+
x += style.x;
|
|
97
|
+
y += style.y;
|
|
98
|
+
parent = parent.parentId ? byId.get(parent.parentId) : undefined;
|
|
99
|
+
}
|
|
100
|
+
return { x, y };
|
|
101
|
+
}
|
|
102
|
+
export function isAncestor(byId, maybeAncestorId, elementId) {
|
|
103
|
+
let cursor = byId.get(elementId);
|
|
104
|
+
const guard = new Set();
|
|
105
|
+
while (cursor?.parentId) {
|
|
106
|
+
if (guard.has(cursor.id))
|
|
107
|
+
return false;
|
|
108
|
+
guard.add(cursor.id);
|
|
109
|
+
if (cursor.parentId === maybeAncestorId)
|
|
110
|
+
return true;
|
|
111
|
+
cursor = byId.get(cursor.parentId);
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
export function displayName(element) {
|
|
116
|
+
if (element.name?.trim())
|
|
117
|
+
return element.name.trim();
|
|
118
|
+
const content = element.content?.trim();
|
|
119
|
+
if (content && !isContainer(element.type)) {
|
|
120
|
+
return content.length > 24 ? `${content.slice(0, 24)}…` : content;
|
|
121
|
+
}
|
|
122
|
+
return element.type;
|
|
123
|
+
}
|
|
124
|
+
/** Moves an element one step up or down among its siblings. */
|
|
125
|
+
export function reorder(elements, id, direction) {
|
|
126
|
+
const target = elements.find((el) => el.id === id);
|
|
127
|
+
if (!target)
|
|
128
|
+
return elements;
|
|
129
|
+
const siblings = childrenOf(elements, target.parentId);
|
|
130
|
+
const index = siblings.findIndex((s) => s.id === id);
|
|
131
|
+
const nextIndex = direction === "up" ? index + 1 : index - 1;
|
|
132
|
+
if (!siblings[nextIndex])
|
|
133
|
+
return elements;
|
|
134
|
+
// Re-index the whole sibling list so repeated swaps can't collide on ties.
|
|
135
|
+
const ordered = [...siblings];
|
|
136
|
+
ordered[index] = siblings[nextIndex];
|
|
137
|
+
ordered[nextIndex] = target;
|
|
138
|
+
const zById = new Map(ordered.map((el, i) => [el.id, i]));
|
|
139
|
+
return elements.map((el) => {
|
|
140
|
+
const z = zById.get(el.id);
|
|
141
|
+
return z === undefined ? el : { ...el, z };
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Inserts a Container between an element and its parent, sized to the element
|
|
146
|
+
* and taking over its slot, so a loose element can be grouped in one step.
|
|
147
|
+
*/
|
|
148
|
+
export function wrapInContainer(elements, id, breakpoint) {
|
|
149
|
+
const target = elements.find((el) => el.id === id);
|
|
150
|
+
if (!target)
|
|
151
|
+
return null;
|
|
152
|
+
const style = resolveStyle(target, breakpoint);
|
|
153
|
+
const wrapper = createElement("Container", {
|
|
154
|
+
x: style.x,
|
|
155
|
+
y: style.y,
|
|
156
|
+
z: target.z,
|
|
157
|
+
parentId: target.parentId,
|
|
158
|
+
});
|
|
159
|
+
wrapper.base = {
|
|
160
|
+
...wrapper.base,
|
|
161
|
+
w: style.w,
|
|
162
|
+
h: style.h,
|
|
163
|
+
widthMode: style.widthMode,
|
|
164
|
+
heightMode: "auto",
|
|
165
|
+
padT: 0,
|
|
166
|
+
padR: 0,
|
|
167
|
+
padB: 0,
|
|
168
|
+
padL: 0,
|
|
169
|
+
borderW: 0,
|
|
170
|
+
radius: 0,
|
|
171
|
+
};
|
|
172
|
+
const child = applyStyle({ ...target, parentId: wrapper.id, z: 0 }, breakpoint, {
|
|
173
|
+
x: 0,
|
|
174
|
+
y: 0,
|
|
175
|
+
});
|
|
176
|
+
return {
|
|
177
|
+
elements: [...elements.map((el) => (el.id === id ? child : el)), wrapper],
|
|
178
|
+
wrapperId: wrapper.id,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/* -------------------------------------------------------------- reparenting */
|
|
182
|
+
/**
|
|
183
|
+
* Moves an element under a new parent, refusing the moves that would corrupt
|
|
184
|
+
* the tree (into itself, into a descendant, or into a leaf).
|
|
185
|
+
*/
|
|
186
|
+
export function reparent(elements, id, newParentId, breakpoint,
|
|
187
|
+
/** Insert before this sibling; appended last when omitted. */
|
|
188
|
+
beforeSiblingId) {
|
|
189
|
+
const byId = indexById(elements);
|
|
190
|
+
const element = byId.get(id);
|
|
191
|
+
if (!element)
|
|
192
|
+
return elements;
|
|
193
|
+
if (newParentId === id)
|
|
194
|
+
return elements;
|
|
195
|
+
if (newParentId) {
|
|
196
|
+
const parent = byId.get(newParentId);
|
|
197
|
+
if (!parent || !isContainer(parent.type))
|
|
198
|
+
return elements;
|
|
199
|
+
if (subtreeIds(elements, id).has(newParentId))
|
|
200
|
+
return elements;
|
|
201
|
+
}
|
|
202
|
+
// Keep the element where it looks like it is: convert its absolute position
|
|
203
|
+
// into the new parent's coordinate space.
|
|
204
|
+
const before = absolutePosition(byId, element, breakpoint);
|
|
205
|
+
const newParent = newParentId ? byId.get(newParentId) : undefined;
|
|
206
|
+
const parentOrigin = newParent
|
|
207
|
+
? absolutePosition(byId, newParent, breakpoint)
|
|
208
|
+
: { x: 0, y: 0 };
|
|
209
|
+
const moved = applyStyle({ ...element, parentId: newParentId }, breakpoint, { x: before.x - parentOrigin.x, y: before.y - parentOrigin.y });
|
|
210
|
+
const rest = elements.map((el) => (el.id === id ? moved : el));
|
|
211
|
+
return resequence(rest, newParentId, id, beforeSiblingId);
|
|
212
|
+
}
|
|
213
|
+
/** Rewrites z for one parent's children so the order is dense and explicit. */
|
|
214
|
+
function resequence(elements, parentId, movedId, beforeSiblingId) {
|
|
215
|
+
const siblings = childrenOf(elements, parentId).filter((el) => el.id !== movedId);
|
|
216
|
+
const moved = elements.find((el) => el.id === movedId);
|
|
217
|
+
if (!moved)
|
|
218
|
+
return elements;
|
|
219
|
+
const at = beforeSiblingId
|
|
220
|
+
? siblings.findIndex((s) => s.id === beforeSiblingId)
|
|
221
|
+
: -1;
|
|
222
|
+
const ordered = at === -1
|
|
223
|
+
? [...siblings, moved]
|
|
224
|
+
: [...siblings.slice(0, at), moved, ...siblings.slice(at)];
|
|
225
|
+
const zById = new Map(ordered.map((el, i) => [el.id, i]));
|
|
226
|
+
return elements.map((el) => {
|
|
227
|
+
const z = zById.get(el.id);
|
|
228
|
+
return z === undefined ? el : { ...el, z };
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* The deepest container under a point that can accept `draggedId`, or
|
|
233
|
+
* undefined for the page root.
|
|
234
|
+
*/
|
|
235
|
+
export function containerAt(elements, byId, point, breakpoint, draggedId) {
|
|
236
|
+
const excluded = draggedId ? subtreeIds(elements, draggedId) : new Set();
|
|
237
|
+
const hits = elements
|
|
238
|
+
.filter((el) => isContainer(el.type) && !excluded.has(el.id))
|
|
239
|
+
.filter((el) => !resolveStyle(el, breakpoint).hidden)
|
|
240
|
+
.filter((el) => {
|
|
241
|
+
const style = resolveStyle(el, breakpoint);
|
|
242
|
+
const origin = absolutePosition(byId, el, breakpoint);
|
|
243
|
+
return (point.x >= origin.x &&
|
|
244
|
+
point.x <= origin.x + style.w &&
|
|
245
|
+
point.y >= origin.y &&
|
|
246
|
+
point.y <= origin.y + style.h);
|
|
247
|
+
});
|
|
248
|
+
if (hits.length === 0)
|
|
249
|
+
return undefined;
|
|
250
|
+
// Prefer the most deeply nested hit, then the one painted on top.
|
|
251
|
+
return hits.sort((a, b) => depthOf(byId, b) - depthOf(byId, a) || b.z - a.z)[0]
|
|
252
|
+
.id;
|
|
253
|
+
}
|
|
254
|
+
function depthOf(byId, element) {
|
|
255
|
+
let depth = 0;
|
|
256
|
+
let cursor = element.parentId ? byId.get(element.parentId) : undefined;
|
|
257
|
+
const guard = new Set([element.id]);
|
|
258
|
+
while (cursor && !guard.has(cursor.id)) {
|
|
259
|
+
guard.add(cursor.id);
|
|
260
|
+
depth += 1;
|
|
261
|
+
cursor = cursor.parentId ? byId.get(cursor.parentId) : undefined;
|
|
262
|
+
}
|
|
263
|
+
return depth;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* An element parked beside the canvas is treated as a note: it stays visible
|
|
267
|
+
* while designing but is left out of the published page.
|
|
268
|
+
*
|
|
269
|
+
* Only the horizontal axis counts. The canvas has a definite width — the
|
|
270
|
+
* simulated viewport — while its height grows with the content, so "below the
|
|
271
|
+
* fold" is a normal place for content to be, not a margin.
|
|
272
|
+
*/
|
|
273
|
+
export function isNote(element, byId, breakpoint, frameWidth,
|
|
274
|
+
/** How the page root arranges its own children. */
|
|
275
|
+
rootLayout = "absolute", cascade = DEFAULT_CASCADE) {
|
|
276
|
+
// Wherever a stack does the placing, x/y are not read at all — so a stale
|
|
277
|
+
// coordinate must never be able to drop an element from the page.
|
|
278
|
+
const parent = element.parentId ? byId.get(element.parentId) : undefined;
|
|
279
|
+
const placedBy = parent
|
|
280
|
+
? resolveStyle(parent, breakpoint, cascade).layout
|
|
281
|
+
: rootLayout;
|
|
282
|
+
if (placedBy !== "absolute")
|
|
283
|
+
return false;
|
|
284
|
+
const style = resolveStyle(element, breakpoint, cascade);
|
|
285
|
+
const { x } = absolutePosition(byId, element, breakpoint, cascade);
|
|
286
|
+
const right = x + (style.widthMode === "fixed" ? style.w : 0);
|
|
287
|
+
// Fully past either edge — a partial overlap is still part of the page.
|
|
288
|
+
return right <= 0 || x >= frameWidth;
|
|
289
|
+
}
|
|
290
|
+
/** Ids of every note and everything inside one. */
|
|
291
|
+
export function noteIds(elements, byId, breakpoint, frameWidth, rootLayout = "absolute", cascade = DEFAULT_CASCADE) {
|
|
292
|
+
const notes = new Set();
|
|
293
|
+
for (const element of elements) {
|
|
294
|
+
if (isNote(element, byId, breakpoint, frameWidth, rootLayout, cascade)) {
|
|
295
|
+
for (const id of subtreeIds(elements, element.id))
|
|
296
|
+
notes.add(id);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return notes;
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../../src/internal/lib/editor/tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
export declare const ELEMENT_TYPES: readonly ["Frame", "Stack", "Section", "Container", "Grid", "Heading", "Text", "Image", "Button", "Video", "Icon", "Request", "Repeat"];
|
|
2
|
+
export type ElementType = (typeof ELEMENT_TYPES)[number];
|
|
3
|
+
/** One key/value pair on a request; values may carry `{{…}}` tokens. */
|
|
4
|
+
export type RequestPair = {
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "PATCH", "DELETE"];
|
|
9
|
+
export type HttpMethod = (typeof HTTP_METHODS)[number];
|
|
10
|
+
export declare const DATA_SOURCE_NOT_FOUND_BEHAVIORS: readonly ["empty", "page-404"];
|
|
11
|
+
export type DataSourceNotFoundBehavior = (typeof DATA_SOURCE_NOT_FOUND_BEHAVIORS)[number];
|
|
12
|
+
/** Methods that carry a request body. */
|
|
13
|
+
export declare function sendsBody(method: HttpMethod): method is "POST" | "PATCH" | "PUT";
|
|
14
|
+
/**
|
|
15
|
+
* A JSON endpoint the page pulls content from. Sources live on the page so a
|
|
16
|
+
* Repeat block can name one without carrying the URL on every element.
|
|
17
|
+
*/
|
|
18
|
+
export type DataSource = {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
url: string;
|
|
22
|
+
/** Dotted path to the array inside the payload; "" when it is the root. */
|
|
23
|
+
path: string;
|
|
24
|
+
method?: HttpMethod;
|
|
25
|
+
/** JSON body for POST/PUT/PATCH; tokens are resolved before sending. */
|
|
26
|
+
body?: string;
|
|
27
|
+
/** Appended to the URL as a query string. */
|
|
28
|
+
params?: RequestPair[];
|
|
29
|
+
/** Sent as request headers — for API keys and the like. */
|
|
30
|
+
headers?: RequestPair[];
|
|
31
|
+
/** Controls whether an upstream 404 empties this source or rejects the whole page. */
|
|
32
|
+
onNotFound?: DataSourceNotFoundBehavior;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Values a request token can read. Everything else resolves to an empty
|
|
36
|
+
* string, so a typo cannot leak an unrelated value into the URL.
|
|
37
|
+
*/
|
|
38
|
+
export type RequestContext = {
|
|
39
|
+
/** The visitor's query string, e.g. `{{query.id}}` on /post?id=5. */
|
|
40
|
+
query: Record<string, string>;
|
|
41
|
+
/** Values captured by a dynamic page path, e.g. `{{params.slug}}`. */
|
|
42
|
+
params: Record<string, string>;
|
|
43
|
+
/** The page being rendered, e.g. `{{page.slug}}`. */
|
|
44
|
+
page: {
|
|
45
|
+
slug: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export type ResizeHandle = "nw" | "ne" | "sw" | "se" | "n" | "s" | "w" | "e";
|
|
49
|
+
export declare const BREAKPOINTS: readonly ["desktop", "tablet", "mobile"];
|
|
50
|
+
export type Breakpoint = string;
|
|
51
|
+
export type BreakpointDefinition = {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
width: number;
|
|
55
|
+
};
|
|
56
|
+
export declare const DEFAULT_BREAKPOINTS: BreakpointDefinition[];
|
|
57
|
+
export declare const BREAKPOINT_WIDTHS: Record<string, number>;
|
|
58
|
+
/**
|
|
59
|
+
* Styles cascade from the widest breakpoint down, so a value set on desktop
|
|
60
|
+
* holds everywhere until a narrower breakpoint overrides it.
|
|
61
|
+
*/
|
|
62
|
+
export declare const BREAKPOINT_CHAIN: Record<string, Breakpoint[]>;
|
|
63
|
+
/** `fill` stretches to the parent, `auto` shrinks to the content. */
|
|
64
|
+
export type SizeMode = "fixed" | "fill" | "auto";
|
|
65
|
+
export type Constraint = "start" | "center" | "end" | "stretch";
|
|
66
|
+
/** `absolute` positions children by x/y; `stack` lays them out with flexbox. */
|
|
67
|
+
export type LayoutMode = "absolute" | "stack";
|
|
68
|
+
export type Direction = "row" | "column";
|
|
69
|
+
export type Justify = "start" | "center" | "end" | "between";
|
|
70
|
+
export type Align = "start" | "center" | "end" | "stretch";
|
|
71
|
+
export type TextAlign = "left" | "center" | "right" | "justify";
|
|
72
|
+
export type TextTransform = "none" | "uppercase" | "lowercase" | "capitalize";
|
|
73
|
+
export type ObjectFit = "cover" | "contain" | "fill" | "none";
|
|
74
|
+
export type Overflow = "visible" | "hidden" | "auto" | "scroll";
|
|
75
|
+
export type Entrance = "none" | "fade" | "up" | "down" | "left" | "right" | "zoom";
|
|
76
|
+
export type MotionCurve = "ease" | "spring";
|
|
77
|
+
export type CursorStyle = "auto" | "default" | "pointer" | "text" | "grab" | "zoom-in" | "none";
|
|
78
|
+
export type PositionMode = "static" | "sticky";
|
|
79
|
+
export type BgSize = "cover" | "contain" | "auto";
|
|
80
|
+
export type BlendMode = "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "difference" | "luminosity";
|
|
81
|
+
export type BorderStyle = "solid" | "dashed" | "dotted";
|
|
82
|
+
export type ElementStyle = {
|
|
83
|
+
x: number;
|
|
84
|
+
y: number;
|
|
85
|
+
constraintX: Constraint;
|
|
86
|
+
constraintY: Constraint;
|
|
87
|
+
w: number;
|
|
88
|
+
h: number;
|
|
89
|
+
widthMode: SizeMode;
|
|
90
|
+
heightMode: SizeMode;
|
|
91
|
+
layout: LayoutMode;
|
|
92
|
+
direction: Direction;
|
|
93
|
+
gap: number;
|
|
94
|
+
padT: number;
|
|
95
|
+
padR: number;
|
|
96
|
+
padB: number;
|
|
97
|
+
padL: number;
|
|
98
|
+
justify: Justify;
|
|
99
|
+
align: Align;
|
|
100
|
+
wrap: boolean;
|
|
101
|
+
/** Grid columns; only read when `layout` is `stack` on a Grid element. */
|
|
102
|
+
columns: number;
|
|
103
|
+
bg: string;
|
|
104
|
+
/** A full CSS gradient value, or "" for none. Painted over `bg`. */
|
|
105
|
+
gradient: string;
|
|
106
|
+
color: string;
|
|
107
|
+
radius: number;
|
|
108
|
+
opacity: number;
|
|
109
|
+
borderW: number;
|
|
110
|
+
borderC: string;
|
|
111
|
+
borderStyle: BorderStyle;
|
|
112
|
+
/** A full CSS box-shadow value, or "" for none. */
|
|
113
|
+
shadow: string;
|
|
114
|
+
rotate: number;
|
|
115
|
+
fontFamily: string;
|
|
116
|
+
fontSize: number;
|
|
117
|
+
fontWeight: string;
|
|
118
|
+
lineHeight: number;
|
|
119
|
+
letterSpacing: number;
|
|
120
|
+
textAlign: TextAlign;
|
|
121
|
+
textTransform: TextTransform;
|
|
122
|
+
overflow: Overflow;
|
|
123
|
+
position: PositionMode;
|
|
124
|
+
/** Distance from the top edge while stuck; only read when position is sticky. */
|
|
125
|
+
stickyOffset: number;
|
|
126
|
+
/** Background image URL, or "" for none. Painted over `gradient`. */
|
|
127
|
+
bgImage: string;
|
|
128
|
+
bgSize: BgSize;
|
|
129
|
+
bgPosition: string;
|
|
130
|
+
/** Blurs the element's own content, in px. */
|
|
131
|
+
blur: number;
|
|
132
|
+
/** Blurs whatever sits behind the element, in px — the glass effect. */
|
|
133
|
+
backdropBlur: number;
|
|
134
|
+
blendMode: BlendMode;
|
|
135
|
+
/** Percent; 100 leaves the element alone. */
|
|
136
|
+
scale: number;
|
|
137
|
+
/** A CSS ratio such as "16/9", or "" to leave height to the layout. */
|
|
138
|
+
aspectRatio: string;
|
|
139
|
+
/** Entrance effect, played once when the element scrolls into view. */
|
|
140
|
+
entrance: Entrance;
|
|
141
|
+
/** Milliseconds. */
|
|
142
|
+
entranceDuration: number;
|
|
143
|
+
entranceDelay: number;
|
|
144
|
+
entranceCurve: MotionCurve;
|
|
145
|
+
entranceBezier: string;
|
|
146
|
+
springStiffness: number;
|
|
147
|
+
springDamping: number;
|
|
148
|
+
cursor: CursorStyle;
|
|
149
|
+
/** Hidden at this breakpoint. */
|
|
150
|
+
hidden: boolean;
|
|
151
|
+
};
|
|
152
|
+
export declare const STYLE_KEYS: readonly ["x", "y", "constraintX", "constraintY", "w", "h", "widthMode", "heightMode", "layout", "direction", "gap", "padT", "padR", "padB", "padL", "justify", "align", "wrap", "columns", "bg", "gradient", "color", "radius", "opacity", "borderW", "borderC", "borderStyle", "shadow", "rotate", "fontFamily", "fontSize", "fontWeight", "lineHeight", "letterSpacing", "textAlign", "textTransform", "overflow", "position", "stickyOffset", "bgImage", "bgSize", "bgPosition", "blur", "backdropBlur", "blendMode", "scale", "aspectRatio", "entrance", "entranceDuration", "entranceDelay", "entranceCurve", "entranceBezier", "springStiffness", "springDamping", "cursor", "hidden"];
|
|
153
|
+
export type StyleKey = (typeof STYLE_KEYS)[number];
|
|
154
|
+
export type CanvasElement = {
|
|
155
|
+
id: string;
|
|
156
|
+
type: ElementType;
|
|
157
|
+
name?: string;
|
|
158
|
+
parentId?: string;
|
|
159
|
+
z: number;
|
|
160
|
+
locked?: boolean;
|
|
161
|
+
/** Page-local reusable component metadata. */
|
|
162
|
+
componentRole?: "master" | "instance";
|
|
163
|
+
componentId?: string;
|
|
164
|
+
componentSourceId?: string;
|
|
165
|
+
variant?: string;
|
|
166
|
+
styleBindings?: Partial<Record<StyleKey, string>>;
|
|
167
|
+
content?: string;
|
|
168
|
+
/** Sandboxed HTML/CSS used by code components. */
|
|
169
|
+
code?: string;
|
|
170
|
+
src?: string;
|
|
171
|
+
alt?: string;
|
|
172
|
+
objectFit?: ObjectFit;
|
|
173
|
+
iconName?: "star" | "heart" | "arrow-right" | "check" | "menu" | "search";
|
|
174
|
+
href?: string;
|
|
175
|
+
target?: "_self" | "_blank";
|
|
176
|
+
interaction?: {
|
|
177
|
+
trigger: "click";
|
|
178
|
+
action: "navigate" | "scroll-to" | "toggle-layer" | "show-layer" | "hide-layer";
|
|
179
|
+
value: string;
|
|
180
|
+
target?: "_self" | "_blank";
|
|
181
|
+
};
|
|
182
|
+
/** Data source read by a Request/Repeat block or a directly-bound element. */
|
|
183
|
+
sourceId?: string;
|
|
184
|
+
/**
|
|
185
|
+
* Inside Request/Repeat, pulls this field off the current object instead
|
|
186
|
+
* of using the element's content. Dotted paths work: "author.name".
|
|
187
|
+
*/
|
|
188
|
+
binding?: string;
|
|
189
|
+
/** Desktop values; every breakpoint falls back to these. */
|
|
190
|
+
base: ElementStyle;
|
|
191
|
+
/** Narrower-breakpoint deltas, applied over `base` in cascade order. */
|
|
192
|
+
overrides?: Record<string, Partial<ElementStyle>>;
|
|
193
|
+
/** Applied on pointer hover, on top of the resolved breakpoint style. */
|
|
194
|
+
hover?: Partial<ElementStyle>;
|
|
195
|
+
/** Applied while the pointer is pressed. */
|
|
196
|
+
press?: Partial<ElementStyle>;
|
|
197
|
+
loop?: {
|
|
198
|
+
type: "pulse" | "float" | "spin";
|
|
199
|
+
duration: number;
|
|
200
|
+
};
|
|
201
|
+
draggable?: boolean;
|
|
202
|
+
};
|
|
203
|
+
export declare const BASE_STYLE: ElementStyle;
|
|
204
|
+
export declare function makeStyle(overrides: Partial<ElementStyle>): ElementStyle;
|
|
205
|
+
/** Every field a freshly dropped element starts with. */
|
|
206
|
+
export declare const ELEMENT_DEFAULTS: Record<ElementType, {
|
|
207
|
+
style: Partial<ElementStyle>;
|
|
208
|
+
props?: Partial<CanvasElement>;
|
|
209
|
+
}>;
|
|
210
|
+
/** Whether an element can hold children. */
|
|
211
|
+
export declare function isContainer(type: ElementType): boolean;
|
|
212
|
+
/** Whether an element renders editable text. */
|
|
213
|
+
export declare function isTextual(type: ElementType): boolean;
|
|
214
|
+
/** Page-level settings; the canvas behaves as the root container. */
|
|
215
|
+
export type RootStyle = {
|
|
216
|
+
documentMode: "page" | "component";
|
|
217
|
+
/** Content is centred inside this width unless `fullWidth` is set. */
|
|
218
|
+
maxWidth: number;
|
|
219
|
+
/** Editable design-surface height; the public page can still grow with content. */
|
|
220
|
+
canvasHeight: number;
|
|
221
|
+
/** Let content run edge to edge instead of being capped at `maxWidth`. */
|
|
222
|
+
fullWidth: boolean;
|
|
223
|
+
bg: string;
|
|
224
|
+
layout: LayoutMode;
|
|
225
|
+
direction: Direction;
|
|
226
|
+
gap: number;
|
|
227
|
+
padT: number;
|
|
228
|
+
padR: number;
|
|
229
|
+
padB: number;
|
|
230
|
+
padL: number;
|
|
231
|
+
align: Align;
|
|
232
|
+
fontFamily: string;
|
|
233
|
+
/** User-defined viewport previews, ordered from widest to narrowest. */
|
|
234
|
+
breakpoints?: BreakpointDefinition[];
|
|
235
|
+
/** The breakpoint whose values live in every element's `base` style. */
|
|
236
|
+
baseBreakpointId?: string;
|
|
237
|
+
variables?: DesignVariable[];
|
|
238
|
+
customFonts?: CustomFont[];
|
|
239
|
+
};
|
|
240
|
+
export type CustomFont = {
|
|
241
|
+
id: string;
|
|
242
|
+
name: string;
|
|
243
|
+
url: string;
|
|
244
|
+
weight: number;
|
|
245
|
+
style: "normal" | "italic";
|
|
246
|
+
};
|
|
247
|
+
export type DesignVariable = {
|
|
248
|
+
id: string;
|
|
249
|
+
name: string;
|
|
250
|
+
type: "color" | "number";
|
|
251
|
+
value: string | number;
|
|
252
|
+
};
|
|
253
|
+
export declare const DEFAULT_ROOT_STYLE: RootStyle;
|
|
254
|
+
export declare const FONT_STACKS: Array<{
|
|
255
|
+
label: string;
|
|
256
|
+
value: string;
|
|
257
|
+
}>;
|
|
258
|
+
export declare const SHADOW_PRESETS: Array<{
|
|
259
|
+
label: string;
|
|
260
|
+
value: string;
|
|
261
|
+
}>;
|
|
262
|
+
export declare const ASPECT_RATIOS: Array<{
|
|
263
|
+
label: string;
|
|
264
|
+
value: string;
|
|
265
|
+
}>;
|
|
266
|
+
export declare const ENTRANCES: Array<{
|
|
267
|
+
label: string;
|
|
268
|
+
value: Entrance;
|
|
269
|
+
}>;
|
|
270
|
+
export declare const DRAG_MIME = "application/pagiera-element-type";
|
|
271
|
+
/** Set when dragging an element that already exists on the canvas. */
|
|
272
|
+
export declare const MOVE_MIME = "application/pagiera-element-id";
|
|
273
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/internal/lib/editor/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,yIAchB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,eAAO,MAAM,YAAY,oDAAqD,CAAC;AAC/E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,+BAA+B,gCAAiC,CAAC;AAC9E,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1F,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,sCAE3C;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,sFAAsF;IACtF,UAAU,CAAC,EAAE,0BAA0B,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IACzB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,qDAAqD;IACrD,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAI7E,eAAO,MAAM,WAAW,0CAA2C,CAAC;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,oBAAoB,EAIrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAIzD,CAAC;AAIF,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAChE,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AACzC,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAC7D,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AAC9E,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAChE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AACnF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC5C,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAChG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/C,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAClD,MAAM,MAAM,SAAS,GACf,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AACnB,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IAEvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;IAGrB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAGhB,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IAGf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAI7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IAEpB,uEAAuE;IACvE,QAAQ,EAAE,QAAQ,CAAC;IACnB,oBAAoB;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,WAAW,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;IAEpB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,UAAU,+pBAyD+B,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAGlD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC5B,WAAW,CAAC,EAAE;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;QAChF,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;KAC/B,CAAC;IAEF,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,IAAI,EAAE,YAAY,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAClD,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,YA+DxB,CAAC;AAEF,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAExE;AAED,yDAAyD;AACzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACjC,WAAW,EACX;IAAE,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;CAAE,CA8KnE,CAAC;AAeF,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,WAE5C;AAQD,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,WAE1C;AAED,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG;IACpB,YAAY,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE/G,MAAM,MAAM,cAAc,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAehC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAK/D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMlE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOjE,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAQ/D,CAAC;AAEF,eAAO,MAAM,SAAS,qCAAqC,CAAC;AAC5D,sEAAsE;AACtE,eAAO,MAAM,SAAS,mCAAmC,CAAC"}
|