@visual-platform/runtime-core 0.2.0 → 0.4.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/dist/events.d.ts +86 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +481 -9
- package/dist/events.js.map +1 -1
- package/dist/render.d.ts +26 -6
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +175 -10
- package/dist/render.js.map +1 -1
- package/dist/responsive.d.ts.map +1 -1
- package/dist/responsive.js +3 -2
- package/dist/responsive.js.map +1 -1
- package/dist/tokens.d.ts +1 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +12 -2
- package/dist/tokens.js.map +1 -1
- package/package.json +3 -3
package/dist/events.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Flow, type FlowTrigger, type MotionEntry, type MotionPreset, type MotionSettings, type NodeLifecycle } from "@visual-platform/contracts";
|
|
1
2
|
import { type ReactNode } from "react";
|
|
2
3
|
export type EventKind = "click" | "change" | "blur" | "enter" | "submit" | "reset" | "toggle";
|
|
3
4
|
/**
|
|
@@ -28,6 +29,8 @@ export type VisualEvent<V = unknown> = {
|
|
|
28
29
|
title?: string;
|
|
29
30
|
/** @deprecated use value (Accordion). */
|
|
30
31
|
open?: boolean;
|
|
32
|
+
/** Action input computed on the server from the data this block was rendered with (ADR-048). */
|
|
33
|
+
input?: Record<string, unknown>;
|
|
31
34
|
/** Stop the browser default (e.g. following a link). */
|
|
32
35
|
preventDefault(): void;
|
|
33
36
|
nativeEvent: Event;
|
|
@@ -58,12 +61,82 @@ export declare function VisualEvents(p: {
|
|
|
58
61
|
} | null>>;
|
|
59
62
|
/** The serializable part of an event (for Server Actions, logs, analytics). */
|
|
60
63
|
export declare function eventData<V>(e: VisualEvent<V>): VisualEventData<V>;
|
|
64
|
+
/** Steps chosen in Studio after an action (ADR-048): a toast, a navigation or a data refresh. */
|
|
65
|
+
type Step = {
|
|
66
|
+
kind: "toast";
|
|
67
|
+
text: string;
|
|
68
|
+
} | {
|
|
69
|
+
kind: "navigate";
|
|
70
|
+
href: string;
|
|
71
|
+
} | {
|
|
72
|
+
kind: "refresh";
|
|
73
|
+
};
|
|
74
|
+
type Steps = Partial<Record<EventKind, {
|
|
75
|
+
success?: Step | undefined;
|
|
76
|
+
error?: Step | undefined;
|
|
77
|
+
}>>;
|
|
78
|
+
/** Page state for flows and state showIf: a tiny store gates subscribe to (re-render only what reads it). */
|
|
79
|
+
export type FlowStateStore = {
|
|
80
|
+
get(): Record<string, unknown>;
|
|
81
|
+
set(key: string, value: unknown): void;
|
|
82
|
+
subscribe(listener: () => void): () => void;
|
|
83
|
+
};
|
|
84
|
+
type FlowCtx = {
|
|
85
|
+
flows: Map<string, Flow>;
|
|
86
|
+
store: FlowStateStore;
|
|
87
|
+
presets: Record<string, MotionPreset>;
|
|
88
|
+
motion?: MotionSettings | undefined;
|
|
89
|
+
};
|
|
90
|
+
type Trigger = FlowTrigger;
|
|
91
|
+
/**
|
|
92
|
+
* Flows of the document (page or component; library flows included by delivery), the page state (initial
|
|
93
|
+
* values + `set` steps) and the page triggers. One per document; nested providers share the parent state.
|
|
94
|
+
*/
|
|
95
|
+
export declare function FlowProvider(p: {
|
|
96
|
+
flows: Flow[];
|
|
97
|
+
initialState?: Record<string, unknown> | undefined;
|
|
98
|
+
triggers?: Trigger[] | undefined;
|
|
99
|
+
triggerInputs?: Record<string, Record<string, unknown>> | undefined;
|
|
100
|
+
/** Presets used by "animate" steps (ADR-052) + motion settings for easing tokens. */
|
|
101
|
+
presets?: Record<string, MotionPreset> | undefined;
|
|
102
|
+
motion?: MotionSettings | undefined;
|
|
103
|
+
children?: ReactNode;
|
|
104
|
+
}): import("react").FunctionComponentElement<import("react").ProviderProps<FlowCtx | null>>;
|
|
105
|
+
/**
|
|
106
|
+
* Block lifecycle (ADR-051): runs flows/handlers when the block mounts, unmounts, scrolls into or out of
|
|
107
|
+
* view, or every N seconds while it is shown. Never in the editor. Server-read values (item.*) come as `inputs`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function LifecycleBoundary(p: {
|
|
110
|
+
nodeId: string;
|
|
111
|
+
type: string;
|
|
112
|
+
lifecycle: NodeLifecycle;
|
|
113
|
+
inputs?: Record<string, Record<string, unknown>> | undefined;
|
|
114
|
+
itemIndex?: number | undefined;
|
|
115
|
+
children?: ReactNode;
|
|
116
|
+
}): import("react").DetailedReactHTMLElement<{
|
|
117
|
+
ref: import("react").RefObject<HTMLSpanElement | null>;
|
|
118
|
+
"data-vp-lifecycle": string;
|
|
119
|
+
style: {
|
|
120
|
+
display: "contents";
|
|
121
|
+
};
|
|
122
|
+
}, HTMLSpanElement>;
|
|
123
|
+
/**
|
|
124
|
+
* A block whose showIf reads the page state (ADR-050): shown/hidden in the browser as flows change the
|
|
125
|
+
* state. Other paths of the condition were read on the server (`server`). Server render uses the initial state.
|
|
126
|
+
*/
|
|
127
|
+
export declare function StateGate(p: {
|
|
128
|
+
when: string;
|
|
129
|
+
server?: Record<string, unknown> | undefined;
|
|
130
|
+
children?: ReactNode;
|
|
131
|
+
}): import("react").FunctionComponentElement<import("react").FragmentProps> | null;
|
|
61
132
|
/** Wraps one node that has event bindings; `display: contents` keeps layout untouched. */
|
|
62
133
|
export declare function EventBoundary(p: {
|
|
63
134
|
nodeId: string;
|
|
64
135
|
type: string;
|
|
65
136
|
events: Partial<Record<EventKind, string>>;
|
|
66
137
|
itemIndex?: number;
|
|
138
|
+
inputs?: Record<string, Record<string, unknown>>;
|
|
139
|
+
steps?: Steps;
|
|
67
140
|
children?: ReactNode;
|
|
68
141
|
}): import("react").DetailedReactHTMLElement<{
|
|
69
142
|
ref: import("react").RefObject<HTMLSpanElement | null>;
|
|
@@ -72,4 +145,17 @@ export declare function EventBoundary(p: {
|
|
|
72
145
|
display: "contents";
|
|
73
146
|
};
|
|
74
147
|
}, HTMLSpanElement>;
|
|
148
|
+
/**
|
|
149
|
+
* Turns animations on for this document (`.vp-motion`, so visitors without JS see content) and starts
|
|
150
|
+
* entrance animations: at mount, or when the block comes into view (15 %). Repeat copies and staggered
|
|
151
|
+
* children get --vp-stagger. Blocks that appear later (state gates, client data) are picked up too.
|
|
152
|
+
*/
|
|
153
|
+
export declare function MotionObserver(p: {
|
|
154
|
+
entries: MotionEntry[];
|
|
155
|
+
}): import("react").DetailedReactHTMLElement<{
|
|
156
|
+
ref: import("react").RefObject<HTMLSpanElement | null>;
|
|
157
|
+
"data-vp-motion": string;
|
|
158
|
+
hidden: true;
|
|
159
|
+
}, HTMLSpanElement>;
|
|
160
|
+
export {};
|
|
75
161
|
//# sourceMappingURL=events.d.ts.map
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.tsx"],"names":[],"mappings":"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"}
|
package/dist/events.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { matchFilter, MAX_FLOW_DEPTH, parseFilter, presetKeyframes, readPath, resolveEasing } from "@visual-platform/contracts";
|
|
3
|
+
import { createContext, createElement, Fragment, useContext, useEffect, useRef, useSyncExternalStore } from "react";
|
|
3
4
|
const warned = new Set();
|
|
4
5
|
/** One console warning per problem (a button clicked 50 times warns once). */
|
|
5
6
|
export function warnOnce(key, message) {
|
|
@@ -8,15 +9,18 @@ export function warnOnce(key, message) {
|
|
|
8
9
|
warned.add(key);
|
|
9
10
|
console.warn(message);
|
|
10
11
|
}
|
|
11
|
-
/** Call an app handler; sync throws and async rejections become console warnings. */
|
|
12
|
+
/** Call an app handler; sync throws and async rejections become console warnings. Resolves to { ok, result }. */
|
|
12
13
|
function safeCall(fn, payload, name) {
|
|
13
14
|
try {
|
|
14
15
|
const r = fn(payload);
|
|
15
|
-
if (r && typeof r.then === "function")
|
|
16
|
-
r.then(
|
|
16
|
+
if (r && typeof r.then === "function") {
|
|
17
|
+
return r.then((result) => ({ ok: true, result }), (e) => { console.warn(`[visual] handler "${name}" failed — ignored.`, e); return { ok: false }; });
|
|
18
|
+
}
|
|
19
|
+
return Promise.resolve({ ok: true, result: r });
|
|
17
20
|
}
|
|
18
21
|
catch (e) {
|
|
19
22
|
console.warn(`[visual] handler "${name}" threw — ignored.`, e);
|
|
23
|
+
return Promise.resolve({ ok: false });
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
const Ctx = createContext(null);
|
|
@@ -42,6 +46,396 @@ export function eventData(e) {
|
|
|
42
46
|
const { preventDefault: _p, nativeEvent: _n, ...data } = e;
|
|
43
47
|
return JSON.parse(JSON.stringify(data));
|
|
44
48
|
}
|
|
49
|
+
function showToast(text, error) {
|
|
50
|
+
if (typeof document === "undefined")
|
|
51
|
+
return;
|
|
52
|
+
let host = document.querySelector("[data-vp-toasts]");
|
|
53
|
+
if (!host) {
|
|
54
|
+
host = document.createElement("div");
|
|
55
|
+
host.setAttribute("data-vp-toasts", "");
|
|
56
|
+
host.setAttribute("role", "status");
|
|
57
|
+
host.setAttribute("aria-live", "polite");
|
|
58
|
+
Object.assign(host.style, { position: "fixed", insetInline: "0", bottom: "16px", display: "grid", justifyItems: "center", gap: "8px", zIndex: "2147483000", pointerEvents: "none" });
|
|
59
|
+
document.body.appendChild(host);
|
|
60
|
+
}
|
|
61
|
+
const t = document.createElement("div");
|
|
62
|
+
t.textContent = text; // text only — never HTML
|
|
63
|
+
Object.assign(t.style, { background: error ? "#991b1b" : "#111827", color: "#fff", padding: "10px 16px", borderRadius: "8px", font: "14px/1.4 system-ui, sans-serif", boxShadow: "0 4px 16px rgba(0,0,0,.2)", maxWidth: "min(90vw, 420px)" });
|
|
64
|
+
host.appendChild(t);
|
|
65
|
+
setTimeout(() => t.remove(), 4000);
|
|
66
|
+
}
|
|
67
|
+
/** Run one step; the action result may carry `revalidated` source names (SDK actions). */
|
|
68
|
+
function runStep(step, result, error) {
|
|
69
|
+
const revalidated = result?.revalidated;
|
|
70
|
+
if (Array.isArray(revalidated) && revalidated.length && typeof window !== "undefined")
|
|
71
|
+
window.dispatchEvent(new CustomEvent("vp:sources-changed", { detail: { names: revalidated } }));
|
|
72
|
+
if (!step || typeof window === "undefined")
|
|
73
|
+
return;
|
|
74
|
+
if (step.kind === "toast")
|
|
75
|
+
showToast(step.text, error);
|
|
76
|
+
else if (step.kind === "navigate" && /^(\/(?!\/)|https?:\/\/)/.test(step.href))
|
|
77
|
+
window.location.assign(step.href);
|
|
78
|
+
else if (step.kind === "refresh")
|
|
79
|
+
window.dispatchEvent(new CustomEvent("vp:refresh"));
|
|
80
|
+
}
|
|
81
|
+
function createStateStore(initial) {
|
|
82
|
+
let state = { ...initial };
|
|
83
|
+
const listeners = new Set();
|
|
84
|
+
return {
|
|
85
|
+
get: () => state,
|
|
86
|
+
set: (key, value) => { state = { ...state, [key]: value }; listeners.forEach((l) => l()); },
|
|
87
|
+
subscribe: (l) => { listeners.add(l); return () => { listeners.delete(l); }; },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const FlowContext = createContext(null);
|
|
91
|
+
/**
|
|
92
|
+
* Run a flow by name — or, if no flow has that name, the app handler of that name (VisualEvents), so
|
|
93
|
+
* developers can implement onMount-style names in code. Shared by events, block lifecycle and page triggers.
|
|
94
|
+
*/
|
|
95
|
+
function runByName(name, o) {
|
|
96
|
+
const flow = o.ctx?.flows.get(name);
|
|
97
|
+
if (flow && o.ctx) {
|
|
98
|
+
void runSteps(flow.steps, { event: o.event, steps: {}, args: {}, server: o.server ?? {}, ctx: o.ctx, handlers: o.handlers, base: o.base }, 1, flow.name)
|
|
99
|
+
.catch((x) => console.warn(`[visual] flow "${flow.name}" failed — stopped.`, x));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const h = o.handlers[name];
|
|
103
|
+
if (typeof h === "function")
|
|
104
|
+
void safeCall(h, { ...o.base, name, ...(o.server && Object.keys(o.server).length ? { input: o.server } : {}) }, name);
|
|
105
|
+
else
|
|
106
|
+
warnOnce(`named-missing:${name}`, `[visual] "${name}" (${o.event.trigger ?? o.event.lifecycle ?? "event"}) has no flow or handler — ignored.`);
|
|
107
|
+
}
|
|
108
|
+
const plainBase = (elementType, nodeId, detail) => ({ kind: "click", nodeId, elementType, value: undefined, detail, preventDefault: () => { }, nativeEvent: new Event("vp") });
|
|
109
|
+
/**
|
|
110
|
+
* Flows of the document (page or component; library flows included by delivery), the page state (initial
|
|
111
|
+
* values + `set` steps) and the page triggers. One per document; nested providers share the parent state.
|
|
112
|
+
*/
|
|
113
|
+
export function FlowProvider(p) {
|
|
114
|
+
const parent = useContext(FlowContext);
|
|
115
|
+
const handlers = useContext(Ctx);
|
|
116
|
+
const ref = useRef(null);
|
|
117
|
+
if (!ref.current)
|
|
118
|
+
ref.current = { flows: new Map(), store: parent?.store ?? createStateStore(p.initialState ?? {}), presets: {} };
|
|
119
|
+
ref.current.flows = new Map([...(parent?.flows ?? []), ...p.flows.map((f) => [f.name, f])]);
|
|
120
|
+
ref.current.presets = { ...(parent?.presets ?? {}), ...(p.presets ?? {}) };
|
|
121
|
+
ref.current.motion = p.motion ?? parent?.motion;
|
|
122
|
+
const handlersRef = useRef(handlers);
|
|
123
|
+
handlersRef.current = handlers;
|
|
124
|
+
useEffect(() => {
|
|
125
|
+
const cleanups = [];
|
|
126
|
+
const fire = (t, detail = {}) => runByName(t.flow, {
|
|
127
|
+
ctx: ref.current, handlers: (handlersRef.current?.handlers ?? {}), server: p.triggerInputs?.[t.flow],
|
|
128
|
+
event: { trigger: t.on, ...detail }, base: plainBase("Page", "", { trigger: t.on, ...detail }),
|
|
129
|
+
});
|
|
130
|
+
for (const t of p.triggers ?? []) {
|
|
131
|
+
const once = t.once ?? true;
|
|
132
|
+
let done = false;
|
|
133
|
+
const fireOnce = (detail) => { if (once && done)
|
|
134
|
+
return; done = true; fire(t, detail); };
|
|
135
|
+
const listen = (target, type, fn, opts) => { target.addEventListener(type, fn, opts); cleanups.push(() => target.removeEventListener(type, fn, opts)); };
|
|
136
|
+
switch (t.on) {
|
|
137
|
+
case "load": {
|
|
138
|
+
const id = setTimeout(() => fire(t), t.delayMs ?? 0);
|
|
139
|
+
cleanups.push(() => clearTimeout(id));
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case "exitIntent":
|
|
143
|
+
listen(document, "mouseout", (e) => { const m = e; if (!m.relatedTarget && m.clientY <= 0)
|
|
144
|
+
fireOnce(); });
|
|
145
|
+
break;
|
|
146
|
+
case "scroll": {
|
|
147
|
+
const check = () => { const h = document.documentElement.scrollHeight - window.innerHeight; const pct = h <= 0 ? 100 : (window.scrollY / h) * 100; if (pct >= (t.percent ?? 50))
|
|
148
|
+
fireOnce({ percent: Math.round(pct) }); };
|
|
149
|
+
listen(window, "scroll", check, { passive: true });
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
case "idle": {
|
|
153
|
+
let id;
|
|
154
|
+
const arm = () => { clearTimeout(id); if (once && done)
|
|
155
|
+
return; id = setTimeout(() => fireOnce(), t.ms ?? 30_000); };
|
|
156
|
+
for (const type of ["mousemove", "keydown", "scroll", "touchstart", "pointerdown"])
|
|
157
|
+
listen(window, type, arm, { passive: true });
|
|
158
|
+
arm();
|
|
159
|
+
cleanups.push(() => clearTimeout(id));
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case "interval": {
|
|
163
|
+
let n = 0;
|
|
164
|
+
const id = setInterval(() => { n++; fire(t, { count: n }); if (t.max && n >= t.max)
|
|
165
|
+
clearInterval(id); }, t.ms ?? 60_000);
|
|
166
|
+
cleanups.push(() => clearInterval(id));
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case "tabHidden":
|
|
170
|
+
case "tabVisible":
|
|
171
|
+
listen(document, "visibilitychange", () => { if ((document.visibilityState === "hidden") === (t.on === "tabHidden"))
|
|
172
|
+
fireOnce(); });
|
|
173
|
+
break;
|
|
174
|
+
case "leave":
|
|
175
|
+
listen(window, "pagehide", () => fire(t));
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return () => cleanups.forEach((c) => c());
|
|
180
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps — triggers are set up once per page view
|
|
181
|
+
return createElement(FlowContext.Provider, { value: ref.current }, p.children);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Block lifecycle (ADR-051): runs flows/handlers when the block mounts, unmounts, scrolls into or out of
|
|
185
|
+
* view, or every N seconds while it is shown. Never in the editor. Server-read values (item.*) come as `inputs`.
|
|
186
|
+
*/
|
|
187
|
+
export function LifecycleBoundary(p) {
|
|
188
|
+
const ref = useRef(null);
|
|
189
|
+
const flowCtx = useContext(FlowContext);
|
|
190
|
+
const handlers = useContext(Ctx);
|
|
191
|
+
const live = useRef({ flowCtx, handlers });
|
|
192
|
+
live.current = { flowCtx, handlers };
|
|
193
|
+
const pendingUnmount = useRef(null);
|
|
194
|
+
const mounted = useRef(false);
|
|
195
|
+
useEffect(() => {
|
|
196
|
+
const l = p.lifecycle;
|
|
197
|
+
const run = (name, kind, extra = {}) => {
|
|
198
|
+
if (!name)
|
|
199
|
+
return;
|
|
200
|
+
const detail = { lifecycle: kind, ...(p.itemIndex !== undefined ? { itemIndex: p.itemIndex } : {}), ...extra };
|
|
201
|
+
runByName(name, { ctx: live.current.flowCtx, handlers: (live.current.handlers?.handlers ?? {}), server: p.inputs?.[name], event: detail, base: plainBase(p.type, p.nodeId, detail) });
|
|
202
|
+
};
|
|
203
|
+
// React StrictMode (development) unmounts and remounts once: a quick remount cancels the unmount.
|
|
204
|
+
if (pendingUnmount.current) {
|
|
205
|
+
clearTimeout(pendingUnmount.current);
|
|
206
|
+
pendingUnmount.current = null;
|
|
207
|
+
}
|
|
208
|
+
else if (!mounted.current) {
|
|
209
|
+
mounted.current = true;
|
|
210
|
+
run(l.mount, "mount");
|
|
211
|
+
}
|
|
212
|
+
const cleanups = [];
|
|
213
|
+
let el = ref.current?.querySelector(`[data-vp-node="${CSS.escape(p.nodeId)}"]`) ?? ref.current?.firstElementChild;
|
|
214
|
+
// A component scope is display: contents (no box): watch its first child instead.
|
|
215
|
+
if (el && typeof getComputedStyle !== "undefined" && getComputedStyle(el).display === "contents")
|
|
216
|
+
el = el.firstElementChild ?? el;
|
|
217
|
+
if (el && (l.visible || l.leave) && typeof IntersectionObserver !== "undefined") {
|
|
218
|
+
let seen = false;
|
|
219
|
+
let inView = false;
|
|
220
|
+
const io = new IntersectionObserver((entries) => {
|
|
221
|
+
for (const e of entries) {
|
|
222
|
+
if (e.isIntersecting && !inView) {
|
|
223
|
+
inView = true;
|
|
224
|
+
if (!(seen && (l.visibleOnce ?? true))) {
|
|
225
|
+
seen = true;
|
|
226
|
+
run(l.visible, "visible");
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if (!e.isIntersecting && inView) {
|
|
230
|
+
inView = false;
|
|
231
|
+
run(l.leave, "leave");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}, { threshold: 0.3 });
|
|
235
|
+
io.observe(el);
|
|
236
|
+
cleanups.push(() => io.disconnect());
|
|
237
|
+
}
|
|
238
|
+
if (l.every) {
|
|
239
|
+
let n = 0;
|
|
240
|
+
const id = setInterval(() => { n++; run(l.every.run, "every", { count: n }); if (l.every.max && n >= l.every.max)
|
|
241
|
+
clearInterval(id); }, l.every.ms);
|
|
242
|
+
cleanups.push(() => clearInterval(id));
|
|
243
|
+
}
|
|
244
|
+
return () => {
|
|
245
|
+
cleanups.forEach((c) => c());
|
|
246
|
+
pendingUnmount.current = setTimeout(() => { pendingUnmount.current = null; mounted.current = false; run(l.unmount, "unmount"); }, 0);
|
|
247
|
+
};
|
|
248
|
+
}, [p.nodeId]); // eslint-disable-line react-hooks/exhaustive-deps — one lifecycle per block instance
|
|
249
|
+
return createElement("span", { ref, "data-vp-lifecycle": "", style: { display: "contents" } }, p.children);
|
|
250
|
+
}
|
|
251
|
+
/** Nested object from { "item.price": 3 } (no prototype keys). */
|
|
252
|
+
function nest(values) {
|
|
253
|
+
const out = {};
|
|
254
|
+
for (const [path, v] of Object.entries(values)) {
|
|
255
|
+
const segs = path.split(".");
|
|
256
|
+
if (segs.some((s) => s === "__proto__" || s === "constructor" || s === "prototype"))
|
|
257
|
+
continue;
|
|
258
|
+
let cur = out;
|
|
259
|
+
segs.forEach((seg, i) => { if (i === segs.length - 1)
|
|
260
|
+
cur[seg] = v;
|
|
261
|
+
else
|
|
262
|
+
cur = (cur[seg] = cur[seg] && typeof cur[seg] === "object" ? cur[seg] : {}); });
|
|
263
|
+
}
|
|
264
|
+
return out;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* A block whose showIf reads the page state (ADR-050): shown/hidden in the browser as flows change the
|
|
268
|
+
* state. Other paths of the condition were read on the server (`server`). Server render uses the initial state.
|
|
269
|
+
*/
|
|
270
|
+
export function StateGate(p) {
|
|
271
|
+
const ctx = useContext(FlowContext);
|
|
272
|
+
const state = useSyncExternalStore(ctx?.store.subscribe ?? noopSubscribe, () => ctx?.store.get() ?? EMPTY, () => ctx?.store.get() ?? EMPTY);
|
|
273
|
+
let shown = false;
|
|
274
|
+
try {
|
|
275
|
+
const f = parseFilter(p.when);
|
|
276
|
+
shown = f ? matchFilter({ ...nest(p.server ?? {}), state }, f) : true;
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
shown = true;
|
|
280
|
+
}
|
|
281
|
+
return shown ? createElement(Fragment, null, p.children) : null;
|
|
282
|
+
}
|
|
283
|
+
const EMPTY = {};
|
|
284
|
+
const noopSubscribe = () => () => { };
|
|
285
|
+
const SAFE_NAV = /^(\/(?!\/)|https?:\/\/|mailto:|tel:)[^\s"'<>]*$/;
|
|
286
|
+
const STOP = Symbol("stop");
|
|
287
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
288
|
+
function resolveRef(r, run) {
|
|
289
|
+
if (!r)
|
|
290
|
+
return undefined;
|
|
291
|
+
if ("value" in r)
|
|
292
|
+
return r.value;
|
|
293
|
+
const root = r.path.split(".")[0];
|
|
294
|
+
if (root === "event" || root === "state" || root === "steps" || root === "args")
|
|
295
|
+
return readPath({ event: run.event, state: run.ctx.store.get(), steps: run.steps, args: run.args }, r.path);
|
|
296
|
+
return run.server[r.path];
|
|
297
|
+
}
|
|
298
|
+
const resolveRefs = (refs, run) => Object.fromEntries(Object.entries(refs ?? {}).map(([k, r]) => [k, resolveRef(r, run)]));
|
|
299
|
+
/** Object view of everything a condition can read: client roots + server values (nested by path). */
|
|
300
|
+
const conditionScope = (run) => ({ ...nest(run.server), event: run.event, state: run.ctx.store.get(), steps: run.steps, args: run.args });
|
|
301
|
+
const nodeEl = (id) => (typeof document === "undefined" ? null : document.querySelector(`[data-vp-node="${CSS.escape(id)}"]`));
|
|
302
|
+
async function runSteps(steps, run, depth, flowName) {
|
|
303
|
+
for (const s of steps) {
|
|
304
|
+
switch (s.kind) {
|
|
305
|
+
case "action": {
|
|
306
|
+
const h = run.handlers[s.action];
|
|
307
|
+
const input = resolveRefs(s.input, run);
|
|
308
|
+
let ok = false;
|
|
309
|
+
let result;
|
|
310
|
+
if (typeof h === "function") {
|
|
311
|
+
const payload = { ...run.base, name: s.action, input };
|
|
312
|
+
({ ok, result } = await safeCall(h, payload, s.action));
|
|
313
|
+
if (ok && result?.ok === false)
|
|
314
|
+
ok = false;
|
|
315
|
+
}
|
|
316
|
+
else
|
|
317
|
+
warnOnce(`flow-missing:${s.action}`, `[visual] flow "${flowName}": no handler or app action "${s.action}" — treated as a failure.`);
|
|
318
|
+
if (s.as)
|
|
319
|
+
run.steps[s.as] = result;
|
|
320
|
+
const revalidated = result?.revalidated;
|
|
321
|
+
if (Array.isArray(revalidated) && revalidated.length)
|
|
322
|
+
window.dispatchEvent(new CustomEvent("vp:sources-changed", { detail: { names: revalidated } }));
|
|
323
|
+
if (!ok) {
|
|
324
|
+
const f = run.ctx.flows.get(flowName);
|
|
325
|
+
if (f?.onError?.length)
|
|
326
|
+
await runSteps(f.onError, run, depth, flowName);
|
|
327
|
+
return STOP;
|
|
328
|
+
}
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
case "flow": {
|
|
332
|
+
const sub = run.ctx.flows.get(s.flow);
|
|
333
|
+
if (!sub) {
|
|
334
|
+
warnOnce(`flow-unknown:${s.flow}`, `[visual] flow "${flowName}" calls unknown flow "${s.flow}".`);
|
|
335
|
+
return STOP;
|
|
336
|
+
}
|
|
337
|
+
if (depth + 1 > MAX_FLOW_DEPTH) {
|
|
338
|
+
warnOnce(`flow-depth:${s.flow}`, `[visual] flows nest too deep (max ${MAX_FLOW_DEPTH}).`);
|
|
339
|
+
return STOP;
|
|
340
|
+
}
|
|
341
|
+
// A sub-flow gets its own arguments; state and step results are shared with the caller.
|
|
342
|
+
if ((await runSteps(sub.steps, { ...run, args: resolveRefs(s.args, run) }, depth + 1, sub.name)) === STOP)
|
|
343
|
+
return STOP;
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
case "open":
|
|
347
|
+
window.dispatchEvent(new CustomEvent("vp:modal", { detail: { name: s.modal, open: true } }));
|
|
348
|
+
break;
|
|
349
|
+
case "close":
|
|
350
|
+
window.dispatchEvent(new CustomEvent("vp:modal", { detail: { name: s.modal ?? null, open: false } }));
|
|
351
|
+
break;
|
|
352
|
+
case "navigate": {
|
|
353
|
+
const href = s.href ?? String(resolveRef(s.hrefFrom, run) ?? "");
|
|
354
|
+
if (!SAFE_NAV.test(href)) {
|
|
355
|
+
warnOnce(`flow-href:${href}`, `[visual] flow "${flowName}": blocked link "${href}".`);
|
|
356
|
+
return STOP;
|
|
357
|
+
}
|
|
358
|
+
if (s.newTab)
|
|
359
|
+
window.open(href, "_blank", "noopener,noreferrer");
|
|
360
|
+
else {
|
|
361
|
+
window.location.assign(href);
|
|
362
|
+
return STOP;
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
case "toast":
|
|
367
|
+
showToast(s.text, s.tone === "error");
|
|
368
|
+
break;
|
|
369
|
+
case "set": {
|
|
370
|
+
const cur = run.ctx.store.get()[s.key];
|
|
371
|
+
const v = resolveRef(s.value, run);
|
|
372
|
+
const op = s.op ?? "set";
|
|
373
|
+
const next = op === "toggle" ? !cur : op === "increment" ? (Number(cur) || 0) + (v === undefined ? 1 : Number(v) || 0) : op === "decrement" ? (Number(cur) || 0) - (v === undefined ? 1 : Number(v) || 0) : v;
|
|
374
|
+
run.ctx.store.set(s.key, next);
|
|
375
|
+
break;
|
|
376
|
+
}
|
|
377
|
+
case "wait":
|
|
378
|
+
await sleep(Math.min(Math.max(s.ms, 0), 30_000));
|
|
379
|
+
break;
|
|
380
|
+
case "scroll":
|
|
381
|
+
nodeEl(s.target)?.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
382
|
+
break;
|
|
383
|
+
case "focus": {
|
|
384
|
+
const el = nodeEl(s.target);
|
|
385
|
+
(el?.matches("input,select,textarea,button,a[href],[tabindex]") ? el : el?.querySelector("input,select,textarea,button,a[href],[tabindex]"))?.focus();
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
case "copy": {
|
|
389
|
+
try {
|
|
390
|
+
await navigator.clipboard.writeText(String(resolveRef(s.value, run) ?? ""));
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
warnOnce("flow-copy", `[visual] flow "${flowName}": the browser refused to copy.`);
|
|
394
|
+
}
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
case "track": {
|
|
398
|
+
// Analytics hook: listen to "vp:track" or use a dataLayer (GTM).
|
|
399
|
+
const props = resolveRefs(s.props, run);
|
|
400
|
+
window.dispatchEvent(new CustomEvent("vp:track", { detail: { event: s.event, props, flow: flowName } }));
|
|
401
|
+
const dl = window.dataLayer;
|
|
402
|
+
if (Array.isArray(dl))
|
|
403
|
+
dl.push({ event: s.event, ...props });
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
case "animate": {
|
|
407
|
+
const preset = run.ctx.presets[s.preset];
|
|
408
|
+
let el = nodeEl(s.target);
|
|
409
|
+
if (el && getComputedStyle(el).display === "contents")
|
|
410
|
+
el = el.firstElementChild;
|
|
411
|
+
const reduced = typeof matchMedia !== "undefined" && matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
412
|
+
if (!preset)
|
|
413
|
+
warnOnce(`flow-preset:${s.preset}`, `[visual] flow "${flowName}": unknown animation "${s.preset}".`);
|
|
414
|
+
else if (el && !reduced && "animate" in el) {
|
|
415
|
+
el.animate(presetKeyframes(preset), { duration: preset.duration, easing: resolveEasing(preset.easing, run.ctx.motion), iterations: preset.iterations === "infinite" ? Infinity : preset.iterations ?? 1, direction: preset.alternate ? "alternate" : "normal" });
|
|
416
|
+
}
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
case "refresh":
|
|
420
|
+
window.dispatchEvent(new CustomEvent("vp:refresh"));
|
|
421
|
+
break;
|
|
422
|
+
case "if": {
|
|
423
|
+
let yes = false;
|
|
424
|
+
try {
|
|
425
|
+
const f = parseFilter(s.when);
|
|
426
|
+
yes = f ? matchFilter(conditionScope(run), f) : false;
|
|
427
|
+
}
|
|
428
|
+
catch {
|
|
429
|
+
yes = false;
|
|
430
|
+
}
|
|
431
|
+
if ((await runSteps(yes ? s.then : s.else ?? [], run, depth, flowName)) === STOP)
|
|
432
|
+
return STOP;
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
case "stop": return STOP;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
45
439
|
const owner = (target) => (target instanceof Element ? target.closest("[data-vp-node]")?.getAttribute("data-vp-node") : null);
|
|
46
440
|
/** Wraps one node that has event bindings; `display: contents` keeps layout untouched. */
|
|
47
441
|
export function EventBoundary(p) {
|
|
@@ -49,6 +443,10 @@ export function EventBoundary(p) {
|
|
|
49
443
|
const ctx = useContext(Ctx);
|
|
50
444
|
const ctxRef = useRef(ctx);
|
|
51
445
|
ctxRef.current = ctx;
|
|
446
|
+
const flowCtx = useContext(FlowContext);
|
|
447
|
+
const flowRef = useRef(flowCtx);
|
|
448
|
+
flowRef.current = flowCtx;
|
|
449
|
+
const running = useRef(false);
|
|
52
450
|
useEffect(() => {
|
|
53
451
|
const el = ref.current;
|
|
54
452
|
if (!el)
|
|
@@ -67,21 +465,40 @@ export function EventBoundary(p) {
|
|
|
67
465
|
: kind === "click" || kind === "reset" ? undefined
|
|
68
466
|
: extra.value;
|
|
69
467
|
const detail = { ...extra, ...(p.itemIndex !== undefined ? { itemIndex: p.itemIndex } : {}) };
|
|
70
|
-
const
|
|
468
|
+
const input = p.inputs?.[name];
|
|
469
|
+
const payload = { ...extra, name, kind, nodeId: p.nodeId, elementType: p.type, value, detail, ...(p.itemIndex !== undefined ? { itemIndex: p.itemIndex } : {}), ...(input ? { input } : {}), preventDefault: () => native.preventDefault(), nativeEvent: native };
|
|
470
|
+
const step = p.steps?.[kind];
|
|
471
|
+
// A flow with this name runs instead of a single handler (ADR-049). One run at a time per block.
|
|
472
|
+
const flow = flowRef.current?.flows.get(name);
|
|
473
|
+
if (flow) {
|
|
474
|
+
if (running.current)
|
|
475
|
+
return;
|
|
476
|
+
running.current = true;
|
|
477
|
+
const { name: _n, input: _i, ...base } = payload;
|
|
478
|
+
void runSteps(flow.steps, { event: { value, detail, ...(p.itemIndex !== undefined ? { itemIndex: p.itemIndex } : {}) }, steps: {}, args: {}, server: input ?? {}, ctx: flowRef.current, handlers: (ctxRef.current?.handlers ?? {}), base }, 1, flow.name)
|
|
479
|
+
.catch((x) => console.warn(`[visual] flow "${flow.name}" failed — stopped.`, x))
|
|
480
|
+
.finally(() => { running.current = false; });
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
71
483
|
const c = ctxRef.current;
|
|
72
484
|
if (!c) {
|
|
73
485
|
warnOnce("no-provider", `[visual] "${name}" (${p.type} ${kind}) fired but no <VisualEvents> wraps this content — ignored.`);
|
|
74
486
|
return;
|
|
75
487
|
}
|
|
76
488
|
const h = c.handlers?.[name];
|
|
77
|
-
if (typeof h === "function")
|
|
78
|
-
safeCall(h, payload, name)
|
|
489
|
+
if (typeof h === "function") {
|
|
490
|
+
void safeCall(h, payload, name).then(({ ok, result }) => {
|
|
491
|
+
// SDK actions answer { ok: false, error } instead of throwing.
|
|
492
|
+
const failed = !ok || result?.ok === false;
|
|
493
|
+
runStep(failed ? step?.error : step?.success, result, failed);
|
|
494
|
+
});
|
|
495
|
+
}
|
|
79
496
|
else if (h !== undefined)
|
|
80
497
|
warnOnce(`bad:${name}`, `[visual] handler "${name}" is not a function (got ${typeof h}) — ignored.`);
|
|
81
498
|
else if (!c.onAny)
|
|
82
499
|
warnOnce(`missing:${name}`, `[visual] no handler "${name}" for ${p.type} ${kind} — pass it to <VisualEvents handlers={{ ${name}: (e) => … }}>. Ignored.`);
|
|
83
500
|
if (typeof c.onAny === "function")
|
|
84
|
-
safeCall(c.onAny, payload, "onAny");
|
|
501
|
+
void safeCall(c.onAny, payload, "onAny");
|
|
85
502
|
}
|
|
86
503
|
catch (e) {
|
|
87
504
|
console.warn("[visual] event handling failed — ignored.", e);
|
|
@@ -124,7 +541,62 @@ export function EventBoundary(p) {
|
|
|
124
541
|
el.addEventListener(type, fn, capture ?? false);
|
|
125
542
|
return () => { for (const [type, fn, capture] of on)
|
|
126
543
|
el.removeEventListener(type, fn, capture ?? false); };
|
|
127
|
-
}, [p.nodeId, p.type, p.events]);
|
|
544
|
+
}, [p.nodeId, p.type, p.events, p.inputs, p.steps]);
|
|
128
545
|
return createElement("span", { ref, "data-vp-events": Object.values(p.events).join(" "), style: { display: "contents" } }, p.children);
|
|
129
546
|
}
|
|
547
|
+
// ---------- animations (ADR-052) ----------
|
|
548
|
+
/**
|
|
549
|
+
* Turns animations on for this document (`.vp-motion`, so visitors without JS see content) and starts
|
|
550
|
+
* entrance animations: at mount, or when the block comes into view (15 %). Repeat copies and staggered
|
|
551
|
+
* children get --vp-stagger. Blocks that appear later (state gates, client data) are picked up too.
|
|
552
|
+
*/
|
|
553
|
+
export function MotionObserver(p) {
|
|
554
|
+
const ref = useRef(null);
|
|
555
|
+
useEffect(() => {
|
|
556
|
+
const root = (ref.current?.closest("[data-vp-root]") ?? document.documentElement);
|
|
557
|
+
root.classList.add("vp-motion");
|
|
558
|
+
const meta = new WeakMap();
|
|
559
|
+
const replay = (el) => { el.style.animation = "none"; void el.offsetWidth; el.style.animation = ""; };
|
|
560
|
+
const io = typeof IntersectionObserver !== "undefined" ? new IntersectionObserver((list) => {
|
|
561
|
+
for (const e of list) {
|
|
562
|
+
const m = meta.get(e.target);
|
|
563
|
+
if (!m)
|
|
564
|
+
continue;
|
|
565
|
+
if (e.isIntersecting) {
|
|
566
|
+
e.target.setAttribute("data-vp-in", "");
|
|
567
|
+
if (m.once)
|
|
568
|
+
io.unobserve(e.target);
|
|
569
|
+
}
|
|
570
|
+
else if (!m.once && e.target.hasAttribute("data-vp-in")) {
|
|
571
|
+
e.target.removeAttribute("data-vp-in");
|
|
572
|
+
replay(e.target);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}, { threshold: 0.15 }) : null;
|
|
576
|
+
const seen = new WeakSet();
|
|
577
|
+
const scan = () => {
|
|
578
|
+
for (const m of p.entries) {
|
|
579
|
+
root.querySelectorAll(m.sel).forEach((el, i) => {
|
|
580
|
+
if (seen.has(el))
|
|
581
|
+
return;
|
|
582
|
+
seen.add(el);
|
|
583
|
+
const stagger = (m.offsetMs ?? 0) + (m.staggerMs ? i * m.staggerMs : 0);
|
|
584
|
+
if (stagger)
|
|
585
|
+
el.style.setProperty("--vp-stagger", `${stagger}ms`);
|
|
586
|
+
if (m.trigger === "mount" || !io)
|
|
587
|
+
requestAnimationFrame(() => el.setAttribute("data-vp-in", ""));
|
|
588
|
+
else {
|
|
589
|
+
meta.set(el, m);
|
|
590
|
+
io.observe(el);
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
scan();
|
|
596
|
+
const mo = typeof MutationObserver !== "undefined" ? new MutationObserver(scan) : null;
|
|
597
|
+
mo?.observe(root, { childList: true, subtree: true });
|
|
598
|
+
return () => { io?.disconnect(); mo?.disconnect(); };
|
|
599
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps — one observer per document view
|
|
600
|
+
return createElement("span", { ref, "data-vp-motion": "", hidden: true });
|
|
601
|
+
}
|
|
130
602
|
//# sourceMappingURL=events.js.map
|
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.tsx"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ComponentNode, type PageDocument } from "@visual-platform/contracts";
|
|
1
|
+
import { type Flow, type ComponentNode, type PageDocument } from "@visual-platform/contracts";
|
|
2
2
|
import { type ReactNode } from "react";
|
|
3
3
|
import type { VisualRegistry } from "./registry.js";
|
|
4
4
|
import type { DesignSnapshot } from "@visual-platform/contracts";
|
|
@@ -23,17 +23,37 @@ export type RenderOptions = {
|
|
|
23
23
|
locale?: string | undefined;
|
|
24
24
|
/** Text direction of the content (ADR-035): set as `dir` on the root so rtl locales mirror the layout. */
|
|
25
25
|
dir?: "ltr" | "rtl" | undefined;
|
|
26
|
+
/** Data inputs whose source failed with fallback "hide" (ADR-048): blocks reading them render nothing. */
|
|
27
|
+
unavailable?: ReadonlySet<string> | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Data inputs still loading (ADR-048 `stream: true`): blocks reading them render inside <Suspense>
|
|
30
|
+
* and appear when the promise settles; the rest of the page does not wait. Resolve to undefined on failure.
|
|
31
|
+
*/
|
|
32
|
+
deferred?: ReadonlyMap<string, Promise<unknown>> | undefined;
|
|
33
|
+
/** Extra props per node (ADR-048 `needs`): data the app injects into components that declare it. Bound props win. */
|
|
34
|
+
injectProps?: ((node: ComponentNode) => Record<string, unknown> | undefined) | undefined;
|
|
35
|
+
/** Editor previews: never run block lifecycle (mount/visible/every) while editing (ADR-051). */
|
|
36
|
+
noLifecycle?: boolean | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Where a page link (`{ kind: "page", pageKey }`) points in this app. Runs on the server while rendering;
|
|
39
|
+
* the result is set as the link's `href` (relative or https). Omitted → `/<pageKey>`.
|
|
40
|
+
*/
|
|
41
|
+
pageHref?: ((link: {
|
|
42
|
+
pageKey: string;
|
|
43
|
+
anchor?: string | undefined;
|
|
44
|
+
locale?: string | undefined;
|
|
45
|
+
}) => string | undefined) | undefined;
|
|
46
|
+
/** Flows of the document (ADR-049); renderDocument reads them from root.props.flows. */
|
|
47
|
+
flows?: Flow[] | undefined;
|
|
48
|
+
/** Inputs of Server-Action events (ADR-048 actions): event name → values computed from the data scope at render. */
|
|
49
|
+
eventInput?: ((eventName: string, scope: Record<string, unknown>) => Record<string, unknown> | undefined) | undefined;
|
|
26
50
|
};
|
|
27
51
|
type Scope = Record<string, unknown>;
|
|
28
52
|
/** Directional glyphs (arrows) mirror in right-to-left locales (ADR-035). */
|
|
29
53
|
export declare const RTL_CSS = "[dir=rtl] [data-vp-flip-rtl]{transform:scaleX(-1)}";
|
|
30
54
|
/** Props with data bindings applied; a value that is missing or does not fit keeps the static prop. */
|
|
31
55
|
export declare function bindProps(node: ComponentNode, opts: Pick<RenderOptions, "registry" | "locale">, scope: Scope): Record<string, unknown>;
|
|
32
|
-
|
|
33
|
-
* Render a PageDocument with the local registry. Pure function of its inputs → works in
|
|
34
|
-
* React Server Components and on the client. Emits one <style> with tokens + responsive rules.
|
|
35
|
-
*/
|
|
36
|
-
export declare function renderDocument(document: PageDocument, opts: RenderOptions): ReactNode;
|
|
56
|
+
export declare function renderDocument(document: PageDocument, inputOpts: RenderOptions): ReactNode;
|
|
37
57
|
/** Render nodes with a data scope (editor previews of Repeat copies). No <style>/root wrapper. */
|
|
38
58
|
export declare function renderNodes(nodes: readonly ComponentNode[], opts: RenderOptions, scope?: Record<string, unknown>): ReactNode[];
|
|
39
59
|
export {};
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/render.js
CHANGED
|
@@ -1,8 +1,45 @@
|
|
|
1
|
-
import { BINDABLE_FIELD_TYPES, coerceBound, nodeVisible, readPath, repeatItems, REPEAT_TYPE, THEME_SCOPE_TYPE, walkNodes } from "@visual-platform/contracts";
|
|
2
|
-
import { createElement, Fragment } from "react";
|
|
1
|
+
import { allPresets, animationCss, BINDABLE_FIELD_TYPES, COMPONENT_SCOPE_TYPE, coerceBound, flowPresets, flowServerPaths, lifecycleNames, nodeVisible, parseFilter, showIfServerPaths, showIfUsesState, readPath, repeatItems, REPEAT_TYPE, THEME_SCOPE_TYPE, walkNodes } from "@visual-platform/contracts";
|
|
2
|
+
import { createElement, Fragment, Suspense, use } from "react";
|
|
3
3
|
import { responsiveCss } from "./responsive.js";
|
|
4
4
|
import { designCss, tokensCss } from "./tokens.js";
|
|
5
|
-
import { EventBoundary } from "./events.js";
|
|
5
|
+
import { EventBoundary, FlowProvider, LifecycleBoundary, MotionObserver, StateGate } from "./events.js";
|
|
6
|
+
/** Data inputs this block itself reads (bound props, Repeat list, showIf fields). */
|
|
7
|
+
function readsOf(node) {
|
|
8
|
+
const out = [];
|
|
9
|
+
const add = (p) => { if (typeof p === "string" && p)
|
|
10
|
+
out.push(p.split(".")[0]); };
|
|
11
|
+
if (node.type === REPEAT_TYPE)
|
|
12
|
+
add(node.props.source);
|
|
13
|
+
for (const b of Object.values(node.bind ?? {}))
|
|
14
|
+
add(b.path);
|
|
15
|
+
if (node.showIf) {
|
|
16
|
+
let f;
|
|
17
|
+
try {
|
|
18
|
+
f = parseFilter(node.showIf);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
f = undefined;
|
|
22
|
+
}
|
|
23
|
+
const walk = (x) => { if (!x)
|
|
24
|
+
return; if ("and" in x)
|
|
25
|
+
x.and.forEach(walk);
|
|
26
|
+
else if ("or" in x)
|
|
27
|
+
x.or.forEach(walk);
|
|
28
|
+
else if ("not" in x)
|
|
29
|
+
walk(x.not);
|
|
30
|
+
else
|
|
31
|
+
add(x.field); };
|
|
32
|
+
walk(f);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
function readsAny(node, names) {
|
|
37
|
+
return readsOf(node).some((n) => names.has(n));
|
|
38
|
+
}
|
|
39
|
+
/** Renders a block once the data it reads has arrived (React `use`, works in RSC and on the client). */
|
|
40
|
+
function Deferred(p) {
|
|
41
|
+
return p.render(use(p.wait));
|
|
42
|
+
}
|
|
6
43
|
/** Directional glyphs (arrows) mirror in right-to-left locales (ADR-035). */
|
|
7
44
|
export const RTL_CSS = "[dir=rtl] [data-vp-flip-rtl]{transform:scaleX(-1)}";
|
|
8
45
|
/** Props with data bindings applied; a value that is missing or does not fit keeps the static prop. */
|
|
@@ -22,16 +59,56 @@ export function bindProps(node, opts, scope) {
|
|
|
22
59
|
}
|
|
23
60
|
return props;
|
|
24
61
|
}
|
|
62
|
+
/** Lifecycle boundary around a block (ADR-051): values its flows read from the block's data are read here. */
|
|
63
|
+
function lifecycleWrap(node, opts, scope, el) {
|
|
64
|
+
if (!node.lifecycle || opts.noLifecycle)
|
|
65
|
+
return el;
|
|
66
|
+
const lifeInputs = {};
|
|
67
|
+
for (const name of new Set(lifecycleNames(node.lifecycle))) {
|
|
68
|
+
if (!opts.flows?.some((f) => f.name === name))
|
|
69
|
+
continue;
|
|
70
|
+
const paths = flowServerPaths(name, opts.flows);
|
|
71
|
+
if (paths.length)
|
|
72
|
+
lifeInputs[name] = Object.fromEntries(paths.map((path) => [path, readPath(scope, path, opts.locale)]));
|
|
73
|
+
}
|
|
74
|
+
const itemIndex = typeof scope.index === "number" ? scope.index : undefined;
|
|
75
|
+
return createElement(LifecycleBoundary, { key: node.id, nodeId: node.id, type: node.type, lifecycle: node.lifecycle, ...(Object.keys(lifeInputs).length ? { inputs: lifeInputs } : {}), ...(itemIndex !== undefined ? { itemIndex } : {}) }, el);
|
|
76
|
+
}
|
|
25
77
|
function renderNode(node, opts, scope) {
|
|
78
|
+
// A component placed on a page with lifecycle/animation (ADR-052): layout-neutral wrapper.
|
|
79
|
+
if (node.type === COMPONENT_SCOPE_TYPE) {
|
|
80
|
+
const el = createElement("div", { key: node.id, "data-vp-node": node.id, "data-vp-component-scope": "", style: { display: "contents" } }, ...(node.slots?.children ?? []).map((c) => renderNode(c, opts, scope)));
|
|
81
|
+
return lifecycleWrap(node, opts, scope, el);
|
|
82
|
+
}
|
|
26
83
|
// Theme scope inserted around a composed component that pins a theme (ADR-028).
|
|
27
84
|
if (node.type === THEME_SCOPE_TYPE) {
|
|
28
85
|
const theme = String(node.props.theme ?? "");
|
|
29
|
-
const
|
|
30
|
-
|
|
86
|
+
const ds = typeof node.props.designSystemId === "string" && opts.design?.systems?.[node.props.designSystemId] ? node.props.designSystemId : undefined;
|
|
87
|
+
const themesOf = ds ? opts.design.systems[ds].themes : opts.design?.themes;
|
|
88
|
+
const ok = /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(theme) && (!themesOf || theme in themesOf);
|
|
89
|
+
return createElement("div", { key: node.id, ...(ds ? { "data-vp-ds": ds } : {}), ...(ok ? { "data-vp-theme": theme } : {}), style: { background: "var(--vp-color-background)", color: "var(--vp-color-text)" } }, ...(node.slots?.children ?? []).map((c) => renderNode(c, opts, scope)));
|
|
31
90
|
}
|
|
32
91
|
// Conditional blocks (ADR-046): hidden when the data does not match. The editor shows them anyway.
|
|
92
|
+
// Streamed sources (ADR-048): wait for them inside <Suspense>, then render with their data in scope.
|
|
93
|
+
if (opts.deferred?.size && readsAny(node, opts.deferred)) {
|
|
94
|
+
const pending = [...new Set(readsOf(node))].filter((n) => opts.deferred.has(n));
|
|
95
|
+
const rest = new Map([...opts.deferred].filter(([k]) => !pending.includes(k)));
|
|
96
|
+
const wait = Promise.all(pending.map((n) => opts.deferred.get(n))).then((vals) => Object.fromEntries(pending.flatMap((n, i) => (vals[i] === undefined ? [] : [[n, vals[i]]]))));
|
|
97
|
+
// "hide" marks a streamed input up front; it only applies if the value did not arrive.
|
|
98
|
+
const unavailableNow = (extra) => new Set([...(opts.unavailable ?? [])].filter((n) => !pending.includes(n) || !(n in extra)));
|
|
99
|
+
return createElement(Suspense, { key: node.id, fallback: null }, createElement(Deferred, { wait, render: (extra) => renderNode(node, { ...opts, deferred: rest, unavailable: unavailableNow(extra) }, { ...scope, ...extra }) }));
|
|
100
|
+
}
|
|
101
|
+
// Conditions on the page state (ADR-050) are decided in the browser; other paths are read here.
|
|
102
|
+
if (!opts.ignoreConditions && showIfUsesState(node.showIf)) {
|
|
103
|
+
const server = Object.fromEntries(showIfServerPaths(node.showIf).map((path) => [path, readPath(scope, path, opts.locale)]));
|
|
104
|
+
const { showIf: _s, ...rest } = node;
|
|
105
|
+
return createElement(StateGate, { key: node.id, when: node.showIf, server }, renderNode(rest, opts, scope));
|
|
106
|
+
}
|
|
33
107
|
if (!opts.ignoreConditions && !nodeVisible(node, scope))
|
|
34
108
|
return null;
|
|
109
|
+
// Source failed with fallback "hide" (ADR-048): the block disappears instead of showing broken data.
|
|
110
|
+
if (opts.unavailable?.size && readsAny(node, opts.unavailable))
|
|
111
|
+
return null;
|
|
35
112
|
const entry = opts.registry.get(node.type);
|
|
36
113
|
if (!entry) {
|
|
37
114
|
opts.onUnknownComponent?.(node.type, node.id);
|
|
@@ -54,22 +131,110 @@ function renderNode(node, opts, scope) {
|
|
|
54
131
|
}
|
|
55
132
|
}
|
|
56
133
|
const vp = node.className ? { "data-vp-node": node.id, className: node.className } : { "data-vp-node": node.id };
|
|
57
|
-
const
|
|
134
|
+
const injected = opts.injectProps?.(node);
|
|
135
|
+
const bound = injected ? { ...bindProps(node, opts, scope) } : bindProps(node, opts, scope);
|
|
136
|
+
if (injected)
|
|
137
|
+
for (const [k, v] of Object.entries(injected))
|
|
138
|
+
if (!node.bind?.[k] && v !== undefined)
|
|
139
|
+
bound[k] = v;
|
|
140
|
+
// On a copy: bound props may be the document's own objects.
|
|
141
|
+
const props = opts.pageHref ? { ...bound } : bound;
|
|
142
|
+
if (opts.pageHref)
|
|
143
|
+
resolvePageLinks(props, opts);
|
|
144
|
+
const element = createElement(entry.component, { key: node.id, ...props, ...slots, ...extra, vp });
|
|
58
145
|
// Only nodes with event bindings get the (tiny) client boundary (ADR-032).
|
|
59
146
|
const events = node.events && Object.values(node.events).some(Boolean) ? node.events : null;
|
|
60
147
|
const itemIndex = typeof scope.index === "number" ? scope.index : undefined;
|
|
61
|
-
|
|
148
|
+
// Block lifecycle (ADR-051): a tiny client boundary, only on blocks that use it, never in the editor.
|
|
149
|
+
const withLife = (el) => lifecycleWrap(node, opts, scope, el);
|
|
150
|
+
if (!events)
|
|
151
|
+
return withLife(element);
|
|
152
|
+
// Action inputs (ADR-048) are computed here, on the server, from the data the block was rendered with.
|
|
153
|
+
const inputs = {};
|
|
154
|
+
if (opts.eventInput)
|
|
155
|
+
for (const name of new Set(Object.values(events))) {
|
|
156
|
+
const v = name ? opts.eventInput(name, scope) : undefined;
|
|
157
|
+
if (v)
|
|
158
|
+
inputs[name] = v;
|
|
159
|
+
}
|
|
160
|
+
// Flows (ADR-049): the paths a flow reads from the block's data (item.id, page inputs…) are read here.
|
|
161
|
+
if (opts.flows?.length)
|
|
162
|
+
for (const name of new Set(Object.values(events))) {
|
|
163
|
+
if (!name || !opts.flows.some((f) => f.name === name))
|
|
164
|
+
continue;
|
|
165
|
+
const paths = flowServerPaths(name, opts.flows);
|
|
166
|
+
if (paths.length)
|
|
167
|
+
inputs[name] = { ...(inputs[name] ?? {}), ...Object.fromEntries(paths.map((path) => [path, readPath(scope, path, opts.locale)])) };
|
|
168
|
+
}
|
|
169
|
+
return withLife(createElement(EventBoundary, {
|
|
170
|
+
key: node.id, nodeId: node.id, type: node.type, events,
|
|
171
|
+
...(itemIndex !== undefined ? { itemIndex } : {}),
|
|
172
|
+
...(Object.keys(inputs).length ? { inputs } : {}),
|
|
173
|
+
...(node.eventSteps && Object.keys(node.eventSteps).length ? { steps: node.eventSteps } : {}),
|
|
174
|
+
}, element));
|
|
62
175
|
}
|
|
63
176
|
/**
|
|
64
177
|
* Render a PageDocument with the local registry. Pure function of its inputs → works in
|
|
65
178
|
* React Server Components and on the client. Emits one <style> with tokens + responsive rules.
|
|
66
179
|
*/
|
|
67
|
-
|
|
180
|
+
/** Page links in props (also inside arrays/objects) get the app's href (RenderOptions.pageHref). */
|
|
181
|
+
const SAFE_PAGE_HREF = /^(\/(?!\/)|https:\/\/|#)/;
|
|
182
|
+
function resolvePageLinks(props, opts, depth = 0) {
|
|
183
|
+
if (depth > 4)
|
|
184
|
+
return;
|
|
185
|
+
for (const [k, v] of Object.entries(props)) {
|
|
186
|
+
if (!v || typeof v !== "object")
|
|
187
|
+
continue;
|
|
188
|
+
const o = v;
|
|
189
|
+
if (o.kind === "page" && typeof o.pageKey === "string") {
|
|
190
|
+
const href = opts.pageHref({ pageKey: o.pageKey, anchor: typeof o.anchor === "string" ? o.anchor : undefined, locale: opts.locale });
|
|
191
|
+
// Only same-site paths, anchors or https: an app mistake never becomes a javascript: link.
|
|
192
|
+
if (href && SAFE_PAGE_HREF.test(href))
|
|
193
|
+
props[k] = { ...o, href };
|
|
194
|
+
}
|
|
195
|
+
else if (Array.isArray(v)) {
|
|
196
|
+
props[k] = v.map((x) => { if (x && typeof x === "object") {
|
|
197
|
+
const c = { ...x };
|
|
198
|
+
resolvePageLinks(c, opts, depth + 1);
|
|
199
|
+
return c;
|
|
200
|
+
} return x; });
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
const c = { ...v };
|
|
204
|
+
resolvePageLinks(c, opts, depth + 1);
|
|
205
|
+
props[k] = c;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
export function renderDocument(document, inputOpts) {
|
|
210
|
+
// A page (or standalone component) on another design system (ADR-047) renders with that system's tokens.
|
|
211
|
+
const own = document.root.props.designSystemId;
|
|
212
|
+
const sys = own && inputOpts.design?.systems?.[own];
|
|
213
|
+
const docFlows = document.root.props.flows ?? [];
|
|
214
|
+
const withFlows = docFlows.length || inputOpts.flows ? { ...inputOpts, flows: [...(inputOpts.flows ?? []), ...docFlows] } : inputOpts;
|
|
215
|
+
const opts = sys ? { ...withFlows, design: { ...sys, systems: inputOpts.design.systems } } : withFlows;
|
|
68
216
|
// Themes actually used: the page's own + any theme scopes (components pinned to a theme).
|
|
69
217
|
const usedThemes = [...new Set([opts.theme, ...[...walkNodes(document.nodes)].filter((n) => n.type === THEME_SCOPE_TYPE).map((n) => String(n.props.theme ?? ""))].filter((t) => !!t))];
|
|
70
|
-
const
|
|
218
|
+
const usedSystems = [...new Set([...walkNodes(document.nodes)].filter((n) => n.type === THEME_SCOPE_TYPE && typeof n.props.designSystemId === "string").map((n) => String(n.props.designSystemId)))];
|
|
219
|
+
// Animations (ADR-052): only the presets this document uses, from the release's merged motion settings.
|
|
220
|
+
const motion = opts.noLifecycle ? { css: "", entries: [] } : animationCss(document.nodes, opts.design?.motion);
|
|
221
|
+
const css = (opts.design ? designCss(opts.design, { themes: usedThemes, systems: usedSystems }) : tokensCss(opts.tokens)) + RTL_CSS + (opts.classCss ?? "") + responsiveCss(walkNodes(document.nodes), (t) => opts.registry.styleBindings(t)) + motion.css;
|
|
71
222
|
const theme = opts.theme && opts.design?.themes[opts.theme] ? opts.theme : undefined;
|
|
72
|
-
return createElement(Fragment, null, createElement("style", { key: "vp-style", "data-vp-style": "", dangerouslySetInnerHTML: { __html: css.replace(/</g, "\\3c ") } }),
|
|
223
|
+
return createElement(Fragment, null, createElement("style", { key: "vp-style", "data-vp-style": "", dangerouslySetInnerHTML: { __html: css.replace(/</g, "\\3c ") } }), (() => {
|
|
224
|
+
const root = createElement("div", { key: "vp-root", "data-vp-root": "", ...(opts.dir ? { dir: opts.dir } : {}), ...(opts.locale ? { lang: opts.locale } : {}), ...(theme ? { "data-vp-theme": theme } : {}) }, ...document.nodes.map((n) => renderNode(n, opts, { ...(opts.data ?? {}) })), ...(motion.css ? [createElement(MotionObserver, { key: "vp-motion", entries: motion.entries })] : []));
|
|
225
|
+
// Flows run in the browser (ADR-049/050): one small provider for the whole document, only when needed.
|
|
226
|
+
const triggers = document.root.props.flowTriggers ?? [];
|
|
227
|
+
const initialState = document.root.props.flowState;
|
|
228
|
+
const usesState = [...walkNodes(document.nodes)].some((n) => showIfUsesState(n.showIf) || (n.lifecycle && !opts.noLifecycle));
|
|
229
|
+
if (!opts.flows?.length && !triggers.length && !initialState && !usesState)
|
|
230
|
+
return root;
|
|
231
|
+
// Trigger flows read page data (no block scope): the paths they need are read here.
|
|
232
|
+
const triggerInputs = Object.fromEntries(triggers.map((t) => [t.flow, Object.fromEntries(flowServerPaths(t.flow, opts.flows ?? []).map((path) => [path, readPath(opts.data ?? {}, path, opts.locale)]))]));
|
|
233
|
+
const all = allPresets(opts.design?.motion);
|
|
234
|
+
const presets = Object.fromEntries(flowPresets(opts.flows ?? []).flatMap((n) => (all[n] ? [[n, all[n]]] : [])));
|
|
235
|
+
return createElement(FlowProvider, { key: "vp-flows", flows: opts.flows ?? [], ...(initialState ? { initialState } : {}), ...(triggers.length ? { triggers, triggerInputs } : {}),
|
|
236
|
+
...(Object.keys(presets).length ? { presets, ...(opts.design?.motion ? { motion: opts.design.motion } : {}) } : {}) }, root);
|
|
237
|
+
})());
|
|
73
238
|
}
|
|
74
239
|
/** Render nodes with a data scope (editor previews of Repeat copies). No <style>/root wrapper. */
|
|
75
240
|
export function renderNodes(nodes, opts, scope = {}) {
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/responsive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responsive.d.ts","sourceRoot":"","sources":["../src/responsive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,yBAAsB,GAAG,CAAC,GAAG,SAAS,CAStI;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC9B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,SAAS,EACvE,WAAW,yBAAsB,GAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"responsive.d.ts","sourceRoot":"","sources":["../src/responsive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,yBAAsB,GAAG,CAAC,GAAG,SAAS,CAStI;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC9B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,SAAS,EACvE,WAAW,yBAAsB,GAChC,MAAM,CA8BR"}
|
package/dist/responsive.js
CHANGED
|
@@ -26,7 +26,7 @@ export function responsiveCss(nodes, bindingsFor, breakpoints = DEFAULT_BREAKPOI
|
|
|
26
26
|
const bindings = bindingsFor(node.type);
|
|
27
27
|
if (!bindings)
|
|
28
28
|
continue;
|
|
29
|
-
for (const [prop, { cssVar, values }] of Object.entries(bindings)) {
|
|
29
|
+
for (const [prop, { cssVar, values, property }] of Object.entries(bindings)) {
|
|
30
30
|
if (!/^--[a-z0-9-]+$/.test(cssVar))
|
|
31
31
|
continue;
|
|
32
32
|
const raw = node.props[prop];
|
|
@@ -40,7 +40,8 @@ export function responsiveCss(nodes, bindingsFor, breakpoints = DEFAULT_BREAKPOI
|
|
|
40
40
|
if (css === undefined)
|
|
41
41
|
continue;
|
|
42
42
|
const list = perBreakpoint.get(bp) ?? [];
|
|
43
|
-
|
|
43
|
+
// Direct properties (font-family…, ADR-047) win over the component's own inline style; children inherit.
|
|
44
|
+
list.push(property && /^[a-z-]+$/.test(property) ? `[data-vp-node="${node.id}"]{${property}:${css} !important}` : `[data-vp-node="${node.id}"]{${cssVar}:${css}}`);
|
|
44
45
|
perBreakpoint.set(bp, list);
|
|
45
46
|
}
|
|
46
47
|
}
|
package/dist/responsive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responsive.js","sourceRoot":"","sources":["../src/responsive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4C,MAAM,4BAA4B,CAAC;AAEpG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,UAAU,OAAO,CAAI,KAAqC,EAAE,UAAkB,EAAE,WAAW,GAAG,mBAAmB;IACrH,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,KAAsB,CAAC;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,GAAG,oBAAoB,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,KAA8B,EAC9B,WAAuE,EACvE,WAAW,GAAG,mBAAmB;IAEjC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,SAAS;QACrC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"responsive.js","sourceRoot":"","sources":["../src/responsive.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare function tokensCss(tokens?: Record<string, string>): string;
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function designCss(design: DesignSnapshot, opts?: {
|
|
15
15
|
themes?: string[] | undefined;
|
|
16
|
+
systems?: string[] | undefined;
|
|
16
17
|
}): string;
|
|
17
18
|
export declare const DEFAULT_DESIGN: DesignSnapshot;
|
|
18
19
|
//# sourceMappingURL=tokens.d.ts.map
|
package/dist/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAqD,CAAC;AAE7G,0HAA0H;AAC1H,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO7D;AAED,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjD,CAAC;AAEF,wBAAgB,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAkB,GAAG,MAAM,CAEjF;AAID;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAqD,CAAC;AAE7G,0HAA0H;AAC1H,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO7D;AAED,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOjD,CAAC;AAEF,wBAAgB,SAAS,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAkB,GAAG,MAAM,CAEjF;AAID;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAAO,GAAG,MAAM,CAmBtI;AAED,eAAO,MAAM,cAAc,EAAE,cAAyD,CAAC"}
|
package/dist/tokens.js
CHANGED
|
@@ -7,7 +7,7 @@ export function tokenToCss(value) {
|
|
|
7
7
|
return String(value);
|
|
8
8
|
if (typeof value !== "string" || !value)
|
|
9
9
|
return undefined;
|
|
10
|
-
if (/^(spacing|color|radius|font|semantic|layout|palette)\./.test(value)) {
|
|
10
|
+
if (/^(spacing|color|radius|font|semantic|layout|palette|shadow|line)\./.test(value)) {
|
|
11
11
|
return `var(--vp-${value.replace(/^semantic\./, "").replace(/\./g, "-")})`;
|
|
12
12
|
}
|
|
13
13
|
return /^[#a-zA-Z0-9.%()\s,-]+$/.test(value) ? value : undefined; // reject anything that could break out of a declaration
|
|
@@ -37,7 +37,17 @@ export function designCss(design, opts = {}) {
|
|
|
37
37
|
const themes = Object.entries(design.themes).filter(([name]) => !opts.themes || opts.themes.includes(name)).map(([name, o]) => `[data-vp-theme="${name}"]{${vars(o)}}`);
|
|
38
38
|
const base = "[data-vp-root]{font-family:var(--vp-font-body,inherit);color:var(--vp-color-text);background:var(--vp-color-background)}"
|
|
39
39
|
+ "[data-vp-root] :is(h1,h2,h3,h4,h5,h6){font-family:var(--vp-font-heading,inherit)}";
|
|
40
|
-
|
|
40
|
+
// Other design systems (ADR-047): their tokens apply inside [data-vp-ds="<id>"] scopes only.
|
|
41
|
+
const scoped = Object.entries(design.systems ?? {}).filter(([id]) => !opts.systems || opts.systems.includes(id)).flatMap(([id, sys]) => {
|
|
42
|
+
const sel = `[data-vp-ds="${id.replace(/[^A-Za-z0-9:_-]/g, "")}"]`;
|
|
43
|
+
return [
|
|
44
|
+
...sys.fonts.flatMap((f) => f.faces.map((x) => `@font-face{font-family:"${f.family}";font-style:${x.style};font-weight:${x.weight};font-display:swap;src:url("${x.url}") format("${FORMAT[x.format]}")${x.unicodeRange ? `;unicode-range:${x.unicodeRange}` : ""}}`)),
|
|
45
|
+
`${sel}{${vars(sys.vars)};font-family:var(--vp-font-body,inherit);color:var(--vp-color-text)}`,
|
|
46
|
+
`${sel} :is(h1,h2,h3,h4,h5,h6){font-family:var(--vp-font-heading,inherit)}`,
|
|
47
|
+
...Object.entries(sys.themes).map(([name, o]) => `${sel}[data-vp-theme="${name}"],${sel} [data-vp-theme="${name}"]{${vars(o)}}`),
|
|
48
|
+
];
|
|
49
|
+
});
|
|
50
|
+
return [...faces, `:root{${vars(design.vars)}}`, ...themes, base, ...scoped].join("");
|
|
41
51
|
}
|
|
42
52
|
export const DEFAULT_DESIGN = resolveDesign(DEFAULT_DESIGN_SYSTEM, []);
|
|
43
53
|
//# sourceMappingURL=tokens.js.map
|
package/dist/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAuB,MAAM,4BAA4B,CAAC;AAEvG,uFAAuF;AACvF,MAAM,CAAC,MAAM,mBAAmB,GAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAE7G,0HAA0H;AAC1H,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visual-platform/runtime-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Visual Page Platform — React renderer for published pages and components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@visual-platform/contracts": "^0.
|
|
22
|
-
"@visual-platform/define": "^0.
|
|
21
|
+
"@visual-platform/contracts": "^0.4.0",
|
|
22
|
+
"@visual-platform/define": "^0.4.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"react": "^19.2.0"
|