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,467 @@
|
|
|
1
|
+
import { BASE_STYLE, DATA_SOURCE_NOT_FOUND_BEHAVIORS, HTTP_METHODS, DEFAULT_BREAKPOINTS, DEFAULT_ROOT_STYLE, ELEMENT_TYPES, STYLE_KEYS, } from "./types";
|
|
2
|
+
export const MAX_ELEMENTS = 2000;
|
|
3
|
+
const MAX_CONTENT = 10000;
|
|
4
|
+
const MAX_SHORT_STRING = 200;
|
|
5
|
+
const MAX_URL = 2048;
|
|
6
|
+
const COORD_LIMIT = 100000;
|
|
7
|
+
const ELEMENT_TYPE_SET = new Set(ELEMENT_TYPES);
|
|
8
|
+
export class InvalidElementsError extends Error {
|
|
9
|
+
}
|
|
10
|
+
/* ------------------------------------------------------------------ scalars */
|
|
11
|
+
function num(value, fallback, min, max) {
|
|
12
|
+
const n = typeof value === "number" ? value : Number(value);
|
|
13
|
+
if (!Number.isFinite(n))
|
|
14
|
+
return fallback;
|
|
15
|
+
return Math.min(max, Math.max(min, n));
|
|
16
|
+
}
|
|
17
|
+
/** Older AI/preset builds wrote CSS scale multipliers (1.03) while the editor
|
|
18
|
+
* stores percentages (103). Normalize those documents as they are loaded. */
|
|
19
|
+
function scalePercent(value, fallback) {
|
|
20
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
21
|
+
if (!Number.isFinite(parsed))
|
|
22
|
+
return fallback;
|
|
23
|
+
const normalized = parsed > 0 && parsed <= 5 ? parsed * 100 : parsed;
|
|
24
|
+
return Math.min(500, Math.max(1, normalized));
|
|
25
|
+
}
|
|
26
|
+
function str(value, max) {
|
|
27
|
+
if (typeof value !== "string")
|
|
28
|
+
return undefined;
|
|
29
|
+
return value.length > max ? value.slice(0, max) : value;
|
|
30
|
+
}
|
|
31
|
+
function oneOf(value, allowed, fallback) {
|
|
32
|
+
return typeof value === "string" && allowed.includes(value)
|
|
33
|
+
? value
|
|
34
|
+
: fallback;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Colours, gradients, shadows and font stacks are written into a stylesheet on
|
|
38
|
+
* the published page, so a value carrying `;` or `}` could close the rule and
|
|
39
|
+
* inject arbitrary CSS. Strip the characters that can escape a declaration.
|
|
40
|
+
*/
|
|
41
|
+
function cssValue(value, fallback) {
|
|
42
|
+
const raw = str(value, MAX_SHORT_STRING);
|
|
43
|
+
if (raw === undefined)
|
|
44
|
+
return fallback;
|
|
45
|
+
const cleaned = raw.replace(/[;{}<>\\]/g, "").replace(/@import/gi, "");
|
|
46
|
+
return cleaned.trim();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Only http(s) and data: images are allowed through. Anything else — most
|
|
50
|
+
* importantly `javascript:` — is dropped rather than rendered into an href.
|
|
51
|
+
*/
|
|
52
|
+
function safeUrl(value) {
|
|
53
|
+
const raw = str(value, MAX_URL);
|
|
54
|
+
if (!raw)
|
|
55
|
+
return undefined;
|
|
56
|
+
const trimmed = raw.trim();
|
|
57
|
+
if (trimmed === "")
|
|
58
|
+
return "";
|
|
59
|
+
// Relative links stay relative; they cannot carry a scheme.
|
|
60
|
+
if (trimmed.startsWith("/") || trimmed.startsWith("#"))
|
|
61
|
+
return trimmed;
|
|
62
|
+
if (/^https?:\/\//i.test(trimmed))
|
|
63
|
+
return trimmed;
|
|
64
|
+
if (/^data:image\//i.test(trimmed))
|
|
65
|
+
return trimmed;
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/** Safe for interpolation into `url("…")`. */
|
|
69
|
+
function imageUrl(value) {
|
|
70
|
+
const raw = safeUrl(value);
|
|
71
|
+
if (!raw)
|
|
72
|
+
return "";
|
|
73
|
+
return /["'()\\]/.test(raw) ? "" : raw;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A binding is a dotted field path such as `author.name`. Restricting the
|
|
77
|
+
* alphabet keeps it a lookup and nothing more.
|
|
78
|
+
*/
|
|
79
|
+
function bindingPath(value) {
|
|
80
|
+
const raw = str(value, MAX_SHORT_STRING)?.trim();
|
|
81
|
+
if (!raw)
|
|
82
|
+
return undefined;
|
|
83
|
+
return /^[A-Za-z0-9_$][A-Za-z0-9_$.-]*$/.test(raw) ? raw : undefined;
|
|
84
|
+
}
|
|
85
|
+
/* -------------------------------------------------------------------- style */
|
|
86
|
+
function parseStyle(input, base) {
|
|
87
|
+
const raw = (input && typeof input === "object" ? input : {});
|
|
88
|
+
return {
|
|
89
|
+
x: num(raw.x, base.x, -COORD_LIMIT, COORD_LIMIT),
|
|
90
|
+
y: num(raw.y, base.y, -COORD_LIMIT, COORD_LIMIT),
|
|
91
|
+
constraintX: oneOf(raw.constraintX, ["start", "center", "end", "stretch"], base.constraintX),
|
|
92
|
+
constraintY: oneOf(raw.constraintY, ["start", "center", "end", "stretch"], base.constraintY),
|
|
93
|
+
w: num(raw.w, base.w, 1, COORD_LIMIT),
|
|
94
|
+
h: num(raw.h, base.h, 1, COORD_LIMIT),
|
|
95
|
+
widthMode: oneOf(raw.widthMode, ["fixed", "fill", "auto"], base.widthMode),
|
|
96
|
+
heightMode: oneOf(raw.heightMode, ["fixed", "fill", "auto"], base.heightMode),
|
|
97
|
+
layout: oneOf(raw.layout, ["absolute", "stack"], base.layout),
|
|
98
|
+
direction: oneOf(raw.direction, ["row", "column"], base.direction),
|
|
99
|
+
gap: num(raw.gap, base.gap, 0, 999),
|
|
100
|
+
padT: num(raw.padT, base.padT, 0, 9999),
|
|
101
|
+
padR: num(raw.padR, base.padR, 0, 9999),
|
|
102
|
+
padB: num(raw.padB, base.padB, 0, 9999),
|
|
103
|
+
padL: num(raw.padL, base.padL, 0, 9999),
|
|
104
|
+
justify: oneOf(raw.justify, ["start", "center", "end", "between"], base.justify),
|
|
105
|
+
align: oneOf(raw.align, ["start", "center", "end", "stretch"], base.align),
|
|
106
|
+
wrap: raw.wrap === true,
|
|
107
|
+
columns: num(raw.columns, base.columns, 1, 12),
|
|
108
|
+
bg: cssValue(raw.bg, base.bg),
|
|
109
|
+
gradient: cssValue(raw.gradient, base.gradient),
|
|
110
|
+
color: cssValue(raw.color, base.color),
|
|
111
|
+
radius: num(raw.radius, base.radius, 0, 9999),
|
|
112
|
+
opacity: num(raw.opacity, base.opacity, 0, 100),
|
|
113
|
+
borderW: num(raw.borderW, base.borderW, 0, 999),
|
|
114
|
+
borderC: cssValue(raw.borderC, base.borderC),
|
|
115
|
+
borderStyle: oneOf(raw.borderStyle, ["solid", "dashed", "dotted"], base.borderStyle),
|
|
116
|
+
shadow: cssValue(raw.shadow, base.shadow),
|
|
117
|
+
rotate: num(raw.rotate, base.rotate, -360, 360),
|
|
118
|
+
fontFamily: cssValue(raw.fontFamily, base.fontFamily),
|
|
119
|
+
fontSize: num(raw.fontSize, base.fontSize, 1, 999),
|
|
120
|
+
fontWeight: cssValue(raw.fontWeight, base.fontWeight),
|
|
121
|
+
lineHeight: num(raw.lineHeight, base.lineHeight, 0.5, 10),
|
|
122
|
+
letterSpacing: num(raw.letterSpacing, base.letterSpacing, -50, 50),
|
|
123
|
+
textAlign: oneOf(raw.textAlign, ["left", "center", "right", "justify"], base.textAlign),
|
|
124
|
+
textTransform: oneOf(raw.textTransform, ["none", "uppercase", "lowercase", "capitalize"], base.textTransform),
|
|
125
|
+
overflow: oneOf(raw.overflow, ["visible", "hidden", "auto", "scroll"], base.overflow),
|
|
126
|
+
position: oneOf(raw.position, ["static", "sticky"], base.position),
|
|
127
|
+
stickyOffset: num(raw.stickyOffset, base.stickyOffset, -9999, 9999),
|
|
128
|
+
bgImage: raw.bgImage === undefined ? base.bgImage : imageUrl(raw.bgImage),
|
|
129
|
+
bgSize: oneOf(raw.bgSize, ["cover", "contain", "auto"], base.bgSize),
|
|
130
|
+
bgPosition: cssValue(raw.bgPosition, base.bgPosition),
|
|
131
|
+
blur: num(raw.blur, base.blur, 0, 200),
|
|
132
|
+
backdropBlur: num(raw.backdropBlur, base.backdropBlur, 0, 200),
|
|
133
|
+
blendMode: oneOf(raw.blendMode, ["normal", "multiply", "screen", "overlay", "darken", "lighten", "difference", "luminosity"], base.blendMode),
|
|
134
|
+
scale: scalePercent(raw.scale, base.scale),
|
|
135
|
+
aspectRatio: /^\d{1,3}\/\d{1,3}$/.test(String(raw.aspectRatio ?? ""))
|
|
136
|
+
? String(raw.aspectRatio)
|
|
137
|
+
: raw.aspectRatio === undefined
|
|
138
|
+
? base.aspectRatio
|
|
139
|
+
: "",
|
|
140
|
+
entrance: oneOf(raw.entrance, ["none", "fade", "up", "down", "left", "right", "zoom"], base.entrance),
|
|
141
|
+
entranceDuration: num(raw.entranceDuration, base.entranceDuration, 50, 5000),
|
|
142
|
+
entranceDelay: num(raw.entranceDelay, base.entranceDelay, 0, 5000),
|
|
143
|
+
entranceCurve: oneOf(raw.entranceCurve, ["ease", "spring"], base.entranceCurve),
|
|
144
|
+
entranceBezier: cssValue(raw.entranceBezier, base.entranceBezier),
|
|
145
|
+
springStiffness: num(raw.springStiffness, base.springStiffness, 1, 1000),
|
|
146
|
+
springDamping: num(raw.springDamping, base.springDamping, 1, 100),
|
|
147
|
+
cursor: oneOf(raw.cursor, ["auto", "default", "pointer", "text", "grab", "zoom-in", "none"], base.cursor),
|
|
148
|
+
hidden: raw.hidden === true,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/** Keeps only the keys the caller actually set, so the cascade stays intact. */
|
|
152
|
+
function parsePartialStyle(input, base) {
|
|
153
|
+
if (!input || typeof input !== "object")
|
|
154
|
+
return {};
|
|
155
|
+
const raw = input;
|
|
156
|
+
const full = parseStyle(raw, base);
|
|
157
|
+
const partial = {};
|
|
158
|
+
for (const key of STYLE_KEYS) {
|
|
159
|
+
if (raw[key] !== undefined) {
|
|
160
|
+
// `as never` narrows the union assignment that TS cannot follow
|
|
161
|
+
// across a generic key.
|
|
162
|
+
partial[key] = full[key];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return partial;
|
|
166
|
+
}
|
|
167
|
+
/* ----------------------------------------------------------------- elements */
|
|
168
|
+
/**
|
|
169
|
+
* Server Actions are reachable by direct POST, so anything arriving from the
|
|
170
|
+
* client is untrusted. This narrows an unknown payload to a well-formed
|
|
171
|
+
* element list: unknown keys are dropped, numbers clamped, unsafe URLs
|
|
172
|
+
* removed, and orphaned or cyclic `parentId` links severed.
|
|
173
|
+
*/
|
|
174
|
+
export function parseElements(input,
|
|
175
|
+
/** Whichever breakpoint holds the shared values; it owns `base`, so it can
|
|
176
|
+
* never also carry an override. */
|
|
177
|
+
baseBreakpointId = "desktop") {
|
|
178
|
+
if (!Array.isArray(input)) {
|
|
179
|
+
throw new InvalidElementsError("elements must be an array");
|
|
180
|
+
}
|
|
181
|
+
if (input.length > MAX_ELEMENTS) {
|
|
182
|
+
throw new InvalidElementsError(`a page cannot hold more than ${MAX_ELEMENTS} elements`);
|
|
183
|
+
}
|
|
184
|
+
const seen = new Set();
|
|
185
|
+
const parsed = [];
|
|
186
|
+
for (const raw of input) {
|
|
187
|
+
if (!raw || typeof raw !== "object")
|
|
188
|
+
continue;
|
|
189
|
+
const el = upgradeLegacy(raw);
|
|
190
|
+
const id = str(el.id, MAX_SHORT_STRING);
|
|
191
|
+
if (!id || seen.has(id))
|
|
192
|
+
continue;
|
|
193
|
+
if (typeof el.type !== "string" || !ELEMENT_TYPE_SET.has(el.type))
|
|
194
|
+
continue;
|
|
195
|
+
seen.add(id);
|
|
196
|
+
const base = parseStyle(el.base, BASE_STYLE);
|
|
197
|
+
const overrides = {};
|
|
198
|
+
if (el.overrides && typeof el.overrides === "object") {
|
|
199
|
+
for (const [key, value] of Object.entries(el.overrides)) {
|
|
200
|
+
if (!/^[a-zA-Z0-9_-]{1,60}$/.test(key))
|
|
201
|
+
continue;
|
|
202
|
+
if (key === baseBreakpointId)
|
|
203
|
+
continue;
|
|
204
|
+
const partial = parsePartialStyle(value, base);
|
|
205
|
+
if (Object.keys(partial).length > 0) {
|
|
206
|
+
overrides[key] = partial;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const hover = parsePartialStyle(el.hover, base);
|
|
211
|
+
const press = parsePartialStyle(el.press, base);
|
|
212
|
+
parsed.push({
|
|
213
|
+
id,
|
|
214
|
+
type: el.type,
|
|
215
|
+
name: str(el.name, MAX_SHORT_STRING),
|
|
216
|
+
parentId: str(el.parentId, MAX_SHORT_STRING),
|
|
217
|
+
z: num(el.z, 0, 0, MAX_ELEMENTS),
|
|
218
|
+
locked: el.locked === true ? true : undefined,
|
|
219
|
+
componentRole: el.componentRole === "master" || el.componentRole === "instance"
|
|
220
|
+
? el.componentRole
|
|
221
|
+
: undefined,
|
|
222
|
+
componentId: str(el.componentId, MAX_SHORT_STRING),
|
|
223
|
+
componentSourceId: str(el.componentSourceId, MAX_SHORT_STRING),
|
|
224
|
+
variant: str(el.variant, MAX_SHORT_STRING),
|
|
225
|
+
styleBindings: el.styleBindings && typeof el.styleBindings === "object"
|
|
226
|
+
? Object.fromEntries(Object.entries(el.styleBindings).flatMap(([key, value]) => STYLE_KEYS.includes(key) &&
|
|
227
|
+
typeof value === "string"
|
|
228
|
+
? [[key, value.slice(0, MAX_SHORT_STRING)]]
|
|
229
|
+
: []))
|
|
230
|
+
: undefined,
|
|
231
|
+
content: str(el.content, MAX_CONTENT),
|
|
232
|
+
code: str(el.code, MAX_CONTENT),
|
|
233
|
+
src: safeUrl(el.src),
|
|
234
|
+
alt: str(el.alt, MAX_SHORT_STRING),
|
|
235
|
+
objectFit: oneOf(el.objectFit, ["cover", "contain", "fill", "none"], "cover"),
|
|
236
|
+
iconName: oneOf(el.iconName, ["star", "heart", "arrow-right", "check", "menu", "search"], "star"),
|
|
237
|
+
href: safeUrl(el.href),
|
|
238
|
+
sourceId: str(el.sourceId, MAX_SHORT_STRING),
|
|
239
|
+
binding: bindingPath(el.binding),
|
|
240
|
+
target: oneOf(el.target, ["_self", "_blank"], "_self"),
|
|
241
|
+
interaction: el.interaction && typeof el.interaction === "object"
|
|
242
|
+
? (() => {
|
|
243
|
+
const interaction = el.interaction;
|
|
244
|
+
const action = oneOf(interaction.action, ["navigate", "scroll-to", "toggle-layer", "show-layer", "hide-layer"], "navigate");
|
|
245
|
+
const value = action !== "navigate"
|
|
246
|
+
? str(interaction.value, MAX_SHORT_STRING)?.replace(/[^a-zA-Z0-9_-]/g, "")
|
|
247
|
+
: safeUrl(interaction.value);
|
|
248
|
+
return value
|
|
249
|
+
? {
|
|
250
|
+
trigger: "click",
|
|
251
|
+
action,
|
|
252
|
+
value,
|
|
253
|
+
target: oneOf(interaction.target, ["_self", "_blank"], "_self"),
|
|
254
|
+
}
|
|
255
|
+
: undefined;
|
|
256
|
+
})()
|
|
257
|
+
: undefined,
|
|
258
|
+
base,
|
|
259
|
+
overrides: Object.keys(overrides).length > 0 ? overrides : undefined,
|
|
260
|
+
hover: Object.keys(hover).length > 0 ? hover : undefined,
|
|
261
|
+
press: Object.keys(press).length > 0 ? press : undefined,
|
|
262
|
+
loop: el.loop && typeof el.loop === "object"
|
|
263
|
+
? {
|
|
264
|
+
type: oneOf(el.loop.type, ["pulse", "float", "spin"], "pulse"),
|
|
265
|
+
duration: num(el.loop.duration, 1600, 100, 20000),
|
|
266
|
+
}
|
|
267
|
+
: undefined,
|
|
268
|
+
draggable: el.draggable === true ? true : undefined,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return severBrokenParents(parsed);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Documents saved before styles moved into `base` stored every style field on
|
|
275
|
+
* the element itself. Lift them so old pages keep working.
|
|
276
|
+
*/
|
|
277
|
+
function upgradeLegacy(raw) {
|
|
278
|
+
if (raw.base !== undefined)
|
|
279
|
+
return raw;
|
|
280
|
+
const legacy = raw;
|
|
281
|
+
return {
|
|
282
|
+
...legacy,
|
|
283
|
+
base: {
|
|
284
|
+
x: legacy.x,
|
|
285
|
+
y: legacy.y,
|
|
286
|
+
w: legacy.w,
|
|
287
|
+
h: legacy.h,
|
|
288
|
+
heightMode: legacy.autoHeight === true ? "auto" : "fixed",
|
|
289
|
+
bg: legacy.bg,
|
|
290
|
+
color: legacy.color,
|
|
291
|
+
radius: legacy.radius,
|
|
292
|
+
opacity: legacy.opacity,
|
|
293
|
+
borderW: legacy.borderW,
|
|
294
|
+
borderC: legacy.borderC,
|
|
295
|
+
fontSize: legacy.fontSize,
|
|
296
|
+
fontWeight: legacy.fontWeight,
|
|
297
|
+
hidden: legacy.hidden,
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Drops `parentId` values that point at a missing element or that would form a
|
|
303
|
+
* cycle, so rendering can never recurse forever.
|
|
304
|
+
*/
|
|
305
|
+
function severBrokenParents(elements) {
|
|
306
|
+
const byId = new Map(elements.map((el) => [el.id, el]));
|
|
307
|
+
return elements.map((el) => {
|
|
308
|
+
if (!el.parentId)
|
|
309
|
+
return el;
|
|
310
|
+
if (el.parentId === el.id || !byId.has(el.parentId)) {
|
|
311
|
+
return { ...el, parentId: undefined };
|
|
312
|
+
}
|
|
313
|
+
const visited = new Set([el.id]);
|
|
314
|
+
let cursor = byId.get(el.parentId);
|
|
315
|
+
while (cursor) {
|
|
316
|
+
if (visited.has(cursor.id))
|
|
317
|
+
return { ...el, parentId: undefined };
|
|
318
|
+
visited.add(cursor.id);
|
|
319
|
+
cursor = cursor.parentId ? byId.get(cursor.parentId) : undefined;
|
|
320
|
+
}
|
|
321
|
+
return el;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/* --------------------------------------------------------------- root style */
|
|
325
|
+
export function parseRootStyle(input) {
|
|
326
|
+
const raw = (input && typeof input === "object" ? input : {});
|
|
327
|
+
const base = DEFAULT_ROOT_STYLE;
|
|
328
|
+
const breakpoints = Array.isArray(raw.breakpoints)
|
|
329
|
+
? raw.breakpoints
|
|
330
|
+
.slice(0, 12)
|
|
331
|
+
.flatMap((item) => {
|
|
332
|
+
if (!item || typeof item !== "object")
|
|
333
|
+
return [];
|
|
334
|
+
const value = item;
|
|
335
|
+
const id = str(value.id, 60)?.replace(/[^a-zA-Z0-9_-]/g, "");
|
|
336
|
+
const name = str(value.name, 40)?.trim();
|
|
337
|
+
if (!id || !name)
|
|
338
|
+
return [];
|
|
339
|
+
return [{ id, name, width: num(value.width, 1280, 240, 4000) }];
|
|
340
|
+
})
|
|
341
|
+
: undefined;
|
|
342
|
+
const variables = Array.isArray(raw.variables)
|
|
343
|
+
? raw.variables.slice(0, 100).reduce((result, item) => {
|
|
344
|
+
if (!item || typeof item !== "object")
|
|
345
|
+
return result;
|
|
346
|
+
const variable = item;
|
|
347
|
+
const id = str(variable.id, 60);
|
|
348
|
+
const name = str(variable.name, 60)?.trim();
|
|
349
|
+
if (!id || !name)
|
|
350
|
+
return result;
|
|
351
|
+
if (variable.type === "color" && typeof variable.value === "string")
|
|
352
|
+
result.push({ id, name, type: "color", value: cssValue(variable.value, "#000000") });
|
|
353
|
+
if (variable.type === "number" && Number.isFinite(Number(variable.value)))
|
|
354
|
+
result.push({ id, name, type: "number", value: Number(variable.value) });
|
|
355
|
+
return result;
|
|
356
|
+
}, [])
|
|
357
|
+
: undefined;
|
|
358
|
+
const customFonts = Array.isArray(raw.customFonts)
|
|
359
|
+
? raw.customFonts.slice(0, 20).flatMap((item) => {
|
|
360
|
+
if (!item || typeof item !== "object")
|
|
361
|
+
return [];
|
|
362
|
+
const font = item;
|
|
363
|
+
const id = str(font.id, 60);
|
|
364
|
+
const name = str(font.name, 80)?.trim();
|
|
365
|
+
const url = safeUrl(font.url);
|
|
366
|
+
if (!id || !name || !url || (!/^https?:\/\//i.test(url) && !url.startsWith("/")))
|
|
367
|
+
return [];
|
|
368
|
+
return [{ id, name, url, weight: num(font.weight, 400, 100, 900), style: oneOf(font.style, ["normal", "italic"], "normal") }];
|
|
369
|
+
})
|
|
370
|
+
: undefined;
|
|
371
|
+
return {
|
|
372
|
+
documentMode: oneOf(raw.documentMode, ["page", "component"], base.documentMode),
|
|
373
|
+
maxWidth: num(raw.maxWidth, base.maxWidth, 1, 4000),
|
|
374
|
+
canvasHeight: num(raw.canvasHeight, base.canvasHeight, 1, 12000),
|
|
375
|
+
fullWidth: raw.fullWidth === true,
|
|
376
|
+
bg: cssValue(raw.bg, base.bg),
|
|
377
|
+
layout: oneOf(raw.layout, ["absolute", "stack"], base.layout),
|
|
378
|
+
direction: oneOf(raw.direction, ["row", "column"], base.direction),
|
|
379
|
+
gap: num(raw.gap, base.gap, 0, 999),
|
|
380
|
+
padT: num(raw.padT, base.padT, 0, 9999),
|
|
381
|
+
padR: num(raw.padR, base.padR, 0, 9999),
|
|
382
|
+
padB: num(raw.padB, base.padB, 0, 9999),
|
|
383
|
+
padL: num(raw.padL, base.padL, 0, 9999),
|
|
384
|
+
align: oneOf(raw.align, ["start", "center", "end", "stretch"], base.align),
|
|
385
|
+
fontFamily: cssValue(raw.fontFamily, base.fontFamily),
|
|
386
|
+
// A page may define any set of artboards, so the stored list is kept as
|
|
387
|
+
// it comes; only an empty one falls back to the defaults.
|
|
388
|
+
breakpoints: breakpoints?.length ? breakpoints : undefined,
|
|
389
|
+
// The main breakpoint is whichever one holds the shared values. It has
|
|
390
|
+
// to name a breakpoint that exists, or resolution would find nothing.
|
|
391
|
+
baseBreakpointId: (breakpoints ?? DEFAULT_BREAKPOINTS).some((item) => item.id === raw.baseBreakpointId)
|
|
392
|
+
? raw.baseBreakpointId
|
|
393
|
+
: undefined,
|
|
394
|
+
variables,
|
|
395
|
+
customFonts,
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Query params and headers. Values keep their `{{…}}` tokens; encoding and
|
|
400
|
+
* header-injection checks happen at request time in `buildRequest`.
|
|
401
|
+
*/
|
|
402
|
+
function parsePairs(input) {
|
|
403
|
+
if (!Array.isArray(input))
|
|
404
|
+
return [];
|
|
405
|
+
const out = [];
|
|
406
|
+
for (const raw of input.slice(0, 25)) {
|
|
407
|
+
if (!raw || typeof raw !== "object")
|
|
408
|
+
continue;
|
|
409
|
+
const row = raw;
|
|
410
|
+
const key = str(row.key, 120)?.trim();
|
|
411
|
+
if (!key)
|
|
412
|
+
continue;
|
|
413
|
+
out.push({ key, value: str(row.value, 500)?.trim() ?? "" });
|
|
414
|
+
}
|
|
415
|
+
return out;
|
|
416
|
+
}
|
|
417
|
+
/** Narrows an untrusted payload to the page's data-source list. */
|
|
418
|
+
export function parseDataSources(input) {
|
|
419
|
+
if (!Array.isArray(input))
|
|
420
|
+
return [];
|
|
421
|
+
const seen = new Set();
|
|
422
|
+
const out = [];
|
|
423
|
+
for (const raw of input.slice(0, 20)) {
|
|
424
|
+
if (!raw || typeof raw !== "object")
|
|
425
|
+
continue;
|
|
426
|
+
const row = raw;
|
|
427
|
+
const id = str(row.id, MAX_SHORT_STRING);
|
|
428
|
+
if (!id || seen.has(id))
|
|
429
|
+
continue;
|
|
430
|
+
seen.add(id);
|
|
431
|
+
// The URL is only checked for shape here; `assertFetchableUrl` does the
|
|
432
|
+
// network-safety check at request time, where it cannot be bypassed.
|
|
433
|
+
out.push({
|
|
434
|
+
id,
|
|
435
|
+
name: str(row.name, 120)?.trim() || "Untitled source",
|
|
436
|
+
url: str(row.url, MAX_URL)?.trim() ?? "",
|
|
437
|
+
path: bindingPath(row.path) ?? "",
|
|
438
|
+
method: oneOf(row.method, HTTP_METHODS, "GET"),
|
|
439
|
+
body: str(row.body, 20000)?.trim() ?? "",
|
|
440
|
+
params: parsePairs(row.params),
|
|
441
|
+
headers: parsePairs(row.headers),
|
|
442
|
+
onNotFound: oneOf(row.onNotFound, DATA_SOURCE_NOT_FOUND_BEHAVIORS, "empty"),
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
return out;
|
|
446
|
+
}
|
|
447
|
+
const STATIC_PATH_SEGMENT_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
448
|
+
const PARAM_PATH_SEGMENT_RE = /^:[a-z][a-z0-9_]*$/;
|
|
449
|
+
export function parseSlug(input) {
|
|
450
|
+
const raw = str(input, 200)?.trim().toLowerCase().replace(/^\/+|\/+$/g, "");
|
|
451
|
+
if (!raw)
|
|
452
|
+
return null;
|
|
453
|
+
const segments = raw.split("/").map((segment) => segment.startsWith(":")
|
|
454
|
+
? segment
|
|
455
|
+
: segment.replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, ""));
|
|
456
|
+
if (segments.some((segment) => !STATIC_PATH_SEGMENT_RE.test(segment) && !PARAM_PATH_SEGMENT_RE.test(segment)))
|
|
457
|
+
return null;
|
|
458
|
+
const names = segments.filter((segment) => segment.startsWith(":")).map((segment) => segment.slice(1));
|
|
459
|
+
if (new Set(names).size !== names.length)
|
|
460
|
+
return null;
|
|
461
|
+
return segments.join("/");
|
|
462
|
+
}
|
|
463
|
+
export function parseName(input) {
|
|
464
|
+
const raw = str(input, 120)?.trim();
|
|
465
|
+
return raw && raw.length > 0 ? raw : null;
|
|
466
|
+
}
|
|
467
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/internal/lib/editor/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { type Page } from "@/drizzle/schema";
|
|
2
|
+
import { type CanvasElement, type DataSource, type RootStyle } from "@/lib/editor/types";
|
|
3
|
+
import type { SiteTemplatePage } from "@/lib/editor/showcase";
|
|
4
|
+
export declare const DEFAULT_SITE_SLUG = "default";
|
|
5
|
+
export declare const DEFAULT_PAGE_SLUG = "home";
|
|
6
|
+
export type PageSummary = {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
publishedAt: Date | null;
|
|
11
|
+
updatedAt: Date;
|
|
12
|
+
};
|
|
13
|
+
export declare function listPages(): Promise<PageSummary[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Every page's element tree, for the cross-page component library. Kept
|
|
16
|
+
* separate from `listPages` because it pulls the whole document and only the
|
|
17
|
+
* library needs that.
|
|
18
|
+
*/
|
|
19
|
+
export declare function listPageDocuments(): Promise<{
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
elements: CanvasElement[];
|
|
23
|
+
}[]>;
|
|
24
|
+
export declare function getPage(pageId: string): Promise<Page | undefined>;
|
|
25
|
+
/** The published snapshot for a public URL, or undefined when unpublished. */
|
|
26
|
+
export declare function getPublishedPage(slug: string): Promise<{
|
|
27
|
+
name: string;
|
|
28
|
+
elements: CanvasElement[];
|
|
29
|
+
rootStyle: RootStyle;
|
|
30
|
+
dataSources: DataSource[];
|
|
31
|
+
publishedAt: Date | null;
|
|
32
|
+
} | undefined>;
|
|
33
|
+
export declare function listPublishedSlugs(): Promise<{
|
|
34
|
+
slug: string;
|
|
35
|
+
}[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns the page the editor opens by default, creating it on first run so a
|
|
38
|
+
* fresh clone has something to edit.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getOrCreateDefaultPage(): Promise<Page>;
|
|
41
|
+
export type SaveResult = {
|
|
42
|
+
status: "saved";
|
|
43
|
+
version: number;
|
|
44
|
+
}
|
|
45
|
+
/** Another writer advanced the page; carries the winning state. */
|
|
46
|
+
| {
|
|
47
|
+
status: "conflict";
|
|
48
|
+
version: number;
|
|
49
|
+
elements: CanvasElement[];
|
|
50
|
+
rootStyle: RootStyle;
|
|
51
|
+
dataSources: DataSource[];
|
|
52
|
+
};
|
|
53
|
+
export declare function savePageDocument(pageId: string, elements: CanvasElement[], rootStyle: RootStyle, dataSources: DataSource[], expectedVersion: number): Promise<SaveResult>;
|
|
54
|
+
/** Copies the current draft into the published columns. */
|
|
55
|
+
export declare function publishPage(pageId: string): Promise<{
|
|
56
|
+
slug: string;
|
|
57
|
+
publishedAt: Date | null;
|
|
58
|
+
}>;
|
|
59
|
+
export declare function unpublishPage(pageId: string): Promise<void>;
|
|
60
|
+
export declare function createPage(name: string, slug: string): Promise<string>;
|
|
61
|
+
/** Atomically replaces the current site's pages with a complete template. */
|
|
62
|
+
export declare function installTemplatePages(templatePages: SiteTemplatePage[]): Promise<string | undefined>;
|
|
63
|
+
export declare function duplicatePage(pageId: string, name: string, slug: string): Promise<string | undefined>;
|
|
64
|
+
export declare function renamePage(pageId: string, name: string, slug: string): Promise<string | undefined>;
|
|
65
|
+
/** Refuses to delete the last page, so the editor always has something to open. */
|
|
66
|
+
export declare function deletePage(pageId: string): Promise<{
|
|
67
|
+
deleted: false;
|
|
68
|
+
reason: "not-found";
|
|
69
|
+
fallbackId?: undefined;
|
|
70
|
+
} | {
|
|
71
|
+
deleted: false;
|
|
72
|
+
reason: "home-required";
|
|
73
|
+
fallbackId?: undefined;
|
|
74
|
+
} | {
|
|
75
|
+
deleted: false;
|
|
76
|
+
reason: "last-page";
|
|
77
|
+
fallbackId?: undefined;
|
|
78
|
+
} | {
|
|
79
|
+
deleted: true;
|
|
80
|
+
fallbackId: string;
|
|
81
|
+
reason?: undefined;
|
|
82
|
+
}>;
|
|
83
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/internal/lib/pages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA+B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,UAAU,EAEf,KAAK,SAAS,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAKxC,MAAM,MAAM,WAAW,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;CACnB,CAAC;AAwBF,wBAAsB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAaxD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB;;;;KAOtC;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAOvE;AAED,8EAA8E;AAC9E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM;;;;;;eA4BlD;AAED,wBAAsB,kBAAkB;;KAMvC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B5D;AAID,MAAM,MAAM,UAAU,GAChB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AACtC,mEAAmE;GACjE;IACI,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B,CAAC;AAER,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,UAAU,EAAE,EACzB,eAAe,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAyCrB;AAED,2DAA2D;AAC3D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM;;;GAa/C;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,iBAUjD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAe1D;AAED,6EAA6E;AAC7E,wBAAsB,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,EAAE,+BAqB3E;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,+BAiB7E;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,+BAS1E;AAED,mFAAmF;AACnF,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;GAsB9C"}
|