veo-sdk 0.3.0 → 0.3.3
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/builder-VPQDAUIL.mjs +5 -0
- package/dist/{builder-UEGKG2UR.mjs.map → builder-VPQDAUIL.mjs.map} +1 -1
- package/dist/builder.cjs +166 -34
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.d.cts +23 -5
- package/dist/builder.d.ts +23 -5
- package/dist/builder.mjs +5 -5
- package/dist/{chunk-CI7NWEH2.mjs → chunk-GHP7ZJCW.mjs} +21 -26
- package/dist/chunk-GHP7ZJCW.mjs.map +1 -0
- package/dist/{chunk-66UQ474G.mjs → chunk-PASI5SAK.mjs} +153 -16
- package/dist/chunk-PASI5SAK.mjs.map +1 -0
- package/dist/chunk-PTG3BTJE.mjs +10 -0
- package/dist/chunk-PTG3BTJE.mjs.map +1 -0
- package/dist/{chunk-G5CKTGEG.mjs → chunk-R4E3LIDB.mjs} +3 -3
- package/dist/{chunk-G5CKTGEG.mjs.map → chunk-R4E3LIDB.mjs.map} +1 -1
- package/dist/index.cjs +178 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +6 -6
- package/dist/next.cjs.map +1 -1
- package/dist/next.mjs +1 -1
- package/dist/veo-builder.js +36 -3
- package/dist/veo-builder.js.map +1 -1
- package/dist/veo.js +2 -2
- package/dist/veo.js.map +1 -1
- package/package.json +1 -1
- package/dist/builder-UEGKG2UR.mjs +0 -5
- package/dist/chunk-66UQ474G.mjs.map +0 -1
- package/dist/chunk-CI7NWEH2.mjs.map +0 -1
- package/dist/chunk-JIU5JLI3.mjs +0 -7
- package/dist/chunk-JIU5JLI3.mjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -39,11 +39,14 @@ var init_safe_env = __esm({
|
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
// src/core/builder-constants.ts
|
|
42
|
-
var BUILDER_TOKEN_PARAM, BUILDER_ORIGIN_PARAM;
|
|
42
|
+
var BUILDER_TOKEN_PARAM, BUILDER_ORIGIN_PARAM, BUILDER_PANEL_PARAM, BUILDER_PANEL_PATH_PARAM, BUILDER_GUIDE_PARAM;
|
|
43
43
|
var init_builder_constants = __esm({
|
|
44
44
|
"src/core/builder-constants.ts"() {
|
|
45
45
|
BUILDER_TOKEN_PARAM = "veoBuilder";
|
|
46
46
|
BUILDER_ORIGIN_PARAM = "veoBuilderOrigin";
|
|
47
|
+
BUILDER_PANEL_PARAM = "veoBuilderPanel";
|
|
48
|
+
BUILDER_PANEL_PATH_PARAM = "veoBuilderPanelPath";
|
|
49
|
+
BUILDER_GUIDE_PARAM = "veoGuide";
|
|
47
50
|
}
|
|
48
51
|
});
|
|
49
52
|
|
|
@@ -62,56 +65,51 @@ function urlParams() {
|
|
|
62
65
|
return null;
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
|
-
function
|
|
68
|
+
function resolveBuilderContext() {
|
|
66
69
|
if (!hasWindow()) return null;
|
|
67
70
|
const params = urlParams();
|
|
68
71
|
const fromUrl = params?.get(BUILDER_TOKEN_PARAM);
|
|
69
72
|
if (fromUrl) {
|
|
70
|
-
const
|
|
73
|
+
const ctx = {
|
|
74
|
+
token: fromUrl,
|
|
75
|
+
origin: params?.get(BUILDER_ORIGIN_PARAM) ?? null,
|
|
76
|
+
panel: params?.get(BUILDER_PANEL_PARAM) === "1",
|
|
77
|
+
guide: params?.get(BUILDER_GUIDE_PARAM) ?? null,
|
|
78
|
+
panelPath: params?.get(BUILDER_PANEL_PATH_PARAM) ?? null
|
|
79
|
+
};
|
|
71
80
|
try {
|
|
72
|
-
|
|
73
|
-
const origin = params?.get(BUILDER_ORIGIN_PARAM);
|
|
74
|
-
if (origin) store?.setItem(ORIGIN_KEY, origin);
|
|
81
|
+
session()?.setItem(CTX_KEY, JSON.stringify(ctx));
|
|
75
82
|
} catch {
|
|
76
83
|
}
|
|
77
|
-
return
|
|
84
|
+
return ctx;
|
|
78
85
|
}
|
|
79
86
|
try {
|
|
80
|
-
|
|
87
|
+
const raw = session()?.getItem(CTX_KEY);
|
|
88
|
+
return raw ? JSON.parse(raw) : null;
|
|
81
89
|
} catch {
|
|
82
90
|
return null;
|
|
83
91
|
}
|
|
84
92
|
}
|
|
85
|
-
function
|
|
86
|
-
|
|
87
|
-
const fromUrl = urlParams()?.get(BUILDER_ORIGIN_PARAM);
|
|
88
|
-
if (fromUrl) return fromUrl;
|
|
89
|
-
try {
|
|
90
|
-
return session()?.getItem(ORIGIN_KEY) ?? null;
|
|
91
|
-
} catch {
|
|
92
|
-
return null;
|
|
93
|
-
}
|
|
93
|
+
function resolveBuilderToken() {
|
|
94
|
+
return resolveBuilderContext()?.token ?? null;
|
|
94
95
|
}
|
|
95
96
|
function isBuilderMode() {
|
|
96
|
-
return
|
|
97
|
+
return resolveBuilderContext() !== null;
|
|
97
98
|
}
|
|
98
99
|
function clearBuilderToken() {
|
|
99
100
|
if (!hasWindow()) return;
|
|
100
101
|
try {
|
|
101
|
-
|
|
102
|
-
store?.removeItem(TOKEN_KEY);
|
|
103
|
-
store?.removeItem(ORIGIN_KEY);
|
|
102
|
+
session()?.removeItem(CTX_KEY);
|
|
104
103
|
} catch {
|
|
105
104
|
}
|
|
106
105
|
}
|
|
107
|
-
var
|
|
106
|
+
var CTX_KEY;
|
|
108
107
|
var init_builder_token = __esm({
|
|
109
108
|
"src/core/builder-token.ts"() {
|
|
110
109
|
init_safe_env();
|
|
111
110
|
init_builder_constants();
|
|
112
111
|
init_builder_constants();
|
|
113
|
-
|
|
114
|
-
ORIGIN_KEY = "veo:builder_origin";
|
|
112
|
+
CTX_KEY = "veo:builder_ctx";
|
|
115
113
|
}
|
|
116
114
|
});
|
|
117
115
|
|
|
@@ -1940,6 +1938,130 @@ var init_bridge_protocol = __esm({
|
|
|
1940
1938
|
}
|
|
1941
1939
|
});
|
|
1942
1940
|
|
|
1941
|
+
// src/plugins/builder/builder-panel.ts
|
|
1942
|
+
function injectBuilderPanel(opts) {
|
|
1943
|
+
if (!hasWindow() || !hasDocument()) {
|
|
1944
|
+
return { target: () => null, teardown: () => {
|
|
1945
|
+
} };
|
|
1946
|
+
}
|
|
1947
|
+
const host = document.createElement("div");
|
|
1948
|
+
host.setAttribute("data-veo-builder-panel", "");
|
|
1949
|
+
const shadow = host.attachShadow({ mode: "open" });
|
|
1950
|
+
const style = document.createElement("style");
|
|
1951
|
+
style.textContent = PANEL_CSS;
|
|
1952
|
+
const card = document.createElement("div");
|
|
1953
|
+
card.className = "veo-panel";
|
|
1954
|
+
let left = Math.max(MARGIN, window.innerWidth - PANEL_W - MARGIN);
|
|
1955
|
+
let top = MARGIN;
|
|
1956
|
+
card.style.left = `${left}px`;
|
|
1957
|
+
card.style.top = `${top}px`;
|
|
1958
|
+
const header = document.createElement("div");
|
|
1959
|
+
header.className = "veo-panel-header";
|
|
1960
|
+
const title = document.createElement("span");
|
|
1961
|
+
title.className = "veo-panel-title";
|
|
1962
|
+
title.textContent = "Veo \xB7 Editor";
|
|
1963
|
+
const close = document.createElement("button");
|
|
1964
|
+
close.className = "veo-panel-close";
|
|
1965
|
+
close.type = "button";
|
|
1966
|
+
close.setAttribute("aria-label", "Cerrar");
|
|
1967
|
+
close.textContent = "\u2715";
|
|
1968
|
+
close.addEventListener("click", () => opts.onClose());
|
|
1969
|
+
header.append(title, close);
|
|
1970
|
+
const iframe = document.createElement("iframe");
|
|
1971
|
+
iframe.className = "veo-panel-frame";
|
|
1972
|
+
iframe.title = "Editor de Veo";
|
|
1973
|
+
iframe.src = buildPanelUrl(opts);
|
|
1974
|
+
card.append(header, iframe);
|
|
1975
|
+
shadow.append(style, card);
|
|
1976
|
+
document.body.appendChild(host);
|
|
1977
|
+
const onHeaderDown = (e) => {
|
|
1978
|
+
if (e.target?.classList.contains("veo-panel-close")) return;
|
|
1979
|
+
e.preventDefault();
|
|
1980
|
+
const startX = e.clientX;
|
|
1981
|
+
const startY = e.clientY;
|
|
1982
|
+
const origLeft = left;
|
|
1983
|
+
const origTop = top;
|
|
1984
|
+
iframe.style.pointerEvents = "none";
|
|
1985
|
+
card.classList.add("dragging");
|
|
1986
|
+
const onMove = (ev) => {
|
|
1987
|
+
const maxLeft = window.innerWidth - card.offsetWidth;
|
|
1988
|
+
const maxTop = window.innerHeight - 40;
|
|
1989
|
+
left = clamp2(origLeft + (ev.clientX - startX), 0, Math.max(0, maxLeft));
|
|
1990
|
+
top = clamp2(origTop + (ev.clientY - startY), 0, Math.max(0, maxTop));
|
|
1991
|
+
card.style.left = `${left}px`;
|
|
1992
|
+
card.style.top = `${top}px`;
|
|
1993
|
+
};
|
|
1994
|
+
const onUp = () => {
|
|
1995
|
+
window.removeEventListener("mousemove", onMove);
|
|
1996
|
+
window.removeEventListener("mouseup", onUp);
|
|
1997
|
+
iframe.style.pointerEvents = "";
|
|
1998
|
+
card.classList.remove("dragging");
|
|
1999
|
+
};
|
|
2000
|
+
window.addEventListener("mousemove", onMove);
|
|
2001
|
+
window.addEventListener("mouseup", onUp);
|
|
2002
|
+
};
|
|
2003
|
+
header.addEventListener("mousedown", onHeaderDown);
|
|
2004
|
+
return {
|
|
2005
|
+
target: () => iframe.contentWindow,
|
|
2006
|
+
teardown: () => host.remove()
|
|
2007
|
+
};
|
|
2008
|
+
}
|
|
2009
|
+
function clamp2(v, min, max) {
|
|
2010
|
+
return Math.min(Math.max(v, min), max);
|
|
2011
|
+
}
|
|
2012
|
+
function buildPanelUrl(opts) {
|
|
2013
|
+
const path = opts.panelPath ?? DEFAULT_PANEL_PATH;
|
|
2014
|
+
const url = new URL(path, opts.dashboardOrigin);
|
|
2015
|
+
url.searchParams.set("veoToken", opts.token);
|
|
2016
|
+
url.searchParams.set("veoApp", opts.appOrigin);
|
|
2017
|
+
if (opts.guide) url.searchParams.set("veoGuide", opts.guide);
|
|
2018
|
+
return url.toString();
|
|
2019
|
+
}
|
|
2020
|
+
var DEFAULT_PANEL_PATH, PANEL_W, PANEL_H, MARGIN, PANEL_CSS;
|
|
2021
|
+
var init_builder_panel = __esm({
|
|
2022
|
+
"src/plugins/builder/builder-panel.ts"() {
|
|
2023
|
+
init_safe_env();
|
|
2024
|
+
DEFAULT_PANEL_PATH = "/guides/design";
|
|
2025
|
+
PANEL_W = 400;
|
|
2026
|
+
PANEL_H = 640;
|
|
2027
|
+
MARGIN = 16;
|
|
2028
|
+
PANEL_CSS = `
|
|
2029
|
+
:host { all: initial; }
|
|
2030
|
+
.veo-panel {
|
|
2031
|
+
position: fixed;
|
|
2032
|
+
width: ${PANEL_W}px; height: ${PANEL_H}px;
|
|
2033
|
+
min-width: 320px; min-height: 320px;
|
|
2034
|
+
max-width: 96vw; max-height: 94vh;
|
|
2035
|
+
display: flex; flex-direction: column;
|
|
2036
|
+
background: #fff;
|
|
2037
|
+
border-radius: 12px;
|
|
2038
|
+
box-shadow: 0 12px 40px rgba(0,0,0,0.28);
|
|
2039
|
+
overflow: hidden;
|
|
2040
|
+
resize: both;
|
|
2041
|
+
z-index: 2147483647;
|
|
2042
|
+
font-family: system-ui, -apple-system, sans-serif;
|
|
2043
|
+
}
|
|
2044
|
+
.veo-panel.dragging { user-select: none; }
|
|
2045
|
+
.veo-panel-header {
|
|
2046
|
+
flex: 0 0 auto;
|
|
2047
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
2048
|
+
padding: 8px 12px;
|
|
2049
|
+
background: #0f172a; color: #fff;
|
|
2050
|
+
font-size: 13px; font-weight: 600;
|
|
2051
|
+
cursor: grab;
|
|
2052
|
+
}
|
|
2053
|
+
.veo-panel-header:active { cursor: grabbing; }
|
|
2054
|
+
.veo-panel-close {
|
|
2055
|
+
border: 0; background: transparent; color: #fff;
|
|
2056
|
+
font-size: 15px; cursor: pointer; line-height: 1;
|
|
2057
|
+
padding: 4px 6px; border-radius: 6px;
|
|
2058
|
+
}
|
|
2059
|
+
.veo-panel-close:hover { background: rgba(255,255,255,0.15); }
|
|
2060
|
+
.veo-panel-frame { flex: 1 1 auto; width: 100%; border: 0; background: #fff; }
|
|
2061
|
+
`;
|
|
2062
|
+
}
|
|
2063
|
+
});
|
|
2064
|
+
|
|
1943
2065
|
// src/plugins/builder/element-picker.ts
|
|
1944
2066
|
function startElementPicker(options) {
|
|
1945
2067
|
if (!hasDocument()) {
|
|
@@ -2145,18 +2267,23 @@ var init_element_picker = __esm({
|
|
|
2145
2267
|
// src/plugins/builder/builder-mode.ts
|
|
2146
2268
|
function initBuilderMode() {
|
|
2147
2269
|
if (!hasWindow() || !hasDocument()) return null;
|
|
2148
|
-
const
|
|
2149
|
-
if (!
|
|
2150
|
-
const
|
|
2270
|
+
const ctx = resolveBuilderContext();
|
|
2271
|
+
if (!ctx) return null;
|
|
2272
|
+
const token = ctx.token;
|
|
2273
|
+
const dashboardOrigin = resolveDashboardOrigin(ctx.origin);
|
|
2151
2274
|
if (!dashboardOrigin) return null;
|
|
2152
|
-
const target = resolveTarget();
|
|
2153
|
-
if (!target) return null;
|
|
2154
2275
|
let picker = null;
|
|
2276
|
+
let panel = null;
|
|
2277
|
+
let staticTarget = null;
|
|
2278
|
+
const getTarget = () => panel ? panel.target() : staticTarget;
|
|
2155
2279
|
const post = (event) => {
|
|
2156
|
-
|
|
2280
|
+
getTarget()?.postMessage({ source: VEO_BUILDER_SOURCE, token, ...event }, dashboardOrigin);
|
|
2157
2281
|
};
|
|
2158
2282
|
const handleCommand = (cmd) => {
|
|
2159
2283
|
switch (cmd.type) {
|
|
2284
|
+
case "panel-ready":
|
|
2285
|
+
post({ type: "ready" });
|
|
2286
|
+
break;
|
|
2160
2287
|
case "start-picker":
|
|
2161
2288
|
picker?.stop();
|
|
2162
2289
|
picker = startElementPicker({
|
|
@@ -2200,13 +2327,28 @@ function initBuilderMode() {
|
|
|
2200
2327
|
picker?.stop();
|
|
2201
2328
|
picker = null;
|
|
2202
2329
|
closeGuidePreview();
|
|
2203
|
-
clearBuilderToken();
|
|
2204
2330
|
post({ type: "closed" });
|
|
2331
|
+
panel?.teardown();
|
|
2332
|
+
panel = null;
|
|
2333
|
+
clearBuilderToken();
|
|
2205
2334
|
};
|
|
2335
|
+
if (ctx.panel) {
|
|
2336
|
+
panel = injectBuilderPanel({
|
|
2337
|
+
dashboardOrigin,
|
|
2338
|
+
token,
|
|
2339
|
+
appOrigin: window.location.origin,
|
|
2340
|
+
guide: ctx.guide,
|
|
2341
|
+
panelPath: ctx.panelPath,
|
|
2342
|
+
onClose: () => teardown()
|
|
2343
|
+
});
|
|
2344
|
+
} else {
|
|
2345
|
+
staticTarget = resolveTarget();
|
|
2346
|
+
if (!staticTarget) return null;
|
|
2347
|
+
}
|
|
2206
2348
|
const activate = () => {
|
|
2207
2349
|
window.addEventListener("message", onMessage);
|
|
2208
2350
|
window.addEventListener("pagehide", onPageHide);
|
|
2209
|
-
post({ type: "ready" });
|
|
2351
|
+
if (!ctx.panel) post({ type: "ready" });
|
|
2210
2352
|
};
|
|
2211
2353
|
const cfg = window.__veoBuilder;
|
|
2212
2354
|
if (cfg?.apiKey && cfg?.apiUrl) {
|
|
@@ -2239,11 +2381,10 @@ function resolveTarget() {
|
|
|
2239
2381
|
if (window.parent && window.parent !== window) return window.parent;
|
|
2240
2382
|
return null;
|
|
2241
2383
|
}
|
|
2242
|
-
function resolveDashboardOrigin() {
|
|
2243
|
-
|
|
2244
|
-
if (stored) {
|
|
2384
|
+
function resolveDashboardOrigin(originHint) {
|
|
2385
|
+
if (originHint) {
|
|
2245
2386
|
try {
|
|
2246
|
-
return new URL(
|
|
2387
|
+
return new URL(originHint).origin;
|
|
2247
2388
|
} catch {
|
|
2248
2389
|
return null;
|
|
2249
2390
|
}
|
|
@@ -2263,6 +2404,7 @@ var init_builder_mode = __esm({
|
|
|
2263
2404
|
init_safe_env();
|
|
2264
2405
|
init_guide_preview();
|
|
2265
2406
|
init_bridge_protocol();
|
|
2407
|
+
init_builder_panel();
|
|
2266
2408
|
init_element_picker();
|
|
2267
2409
|
}
|
|
2268
2410
|
});
|