@snowcone-app/canvas 0.12.1 → 0.13.1
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/advanced.mjs +93 -89
- package/dist/advanced.mjs.map +1 -1
- package/dist/api/advanced.d.ts +12 -0
- package/dist/embed.mjs +141 -193
- package/dist/embed.mjs.map +1 -1
- package/dist/usePieceGuideBundle-Cyl695jv.js +61 -0
- package/dist/usePieceGuideBundle-Cyl695jv.js.map +1 -0
- package/package.json +3 -3
package/dist/api/advanced.d.ts
CHANGED
|
@@ -108,3 +108,15 @@ export type { VisualGuideOverlayProps, VisualGuideOverlayStyle, OverlayPiece, Pi
|
|
|
108
108
|
export { renderPieceGuides } from '../rendering/PieceGuideRenderer.js';
|
|
109
109
|
export type { PieceGuideRenderParams, PieceGuideRendererPiece, PieceGuideRendererStyle, PieceGuideVisibility, } from '../rendering/PieceGuideRenderer.js';
|
|
110
110
|
export type { PieceGuidesConfig } from '../components/embed/SnowconeCanvas.js';
|
|
111
|
+
/**
|
|
112
|
+
* Fetch a product's printable-area guides (dead zones, safe areas) for a raw
|
|
113
|
+
* `SnowconeCanvas` — the same overlay `<RealtimeEmbed>` shows automatically,
|
|
114
|
+
* but for an AUTHORING surface (your own `SnowconeCanvas` + `useLayers` panel)
|
|
115
|
+
* that doesn't go through the embed. Mirror of what www's route shell does:
|
|
116
|
+
* fetch by gvid, then `pieceGuidesForArtboard(bundle, artboard)` (which gates
|
|
117
|
+
* on the design's dims matching the print-file frame) → feed the result to the
|
|
118
|
+
* canvas's `pieceGuides` prop. So the DESIGNER sees the camera cutout while
|
|
119
|
+
* placing fields, not just the buyer afterward.
|
|
120
|
+
*/
|
|
121
|
+
export { usePieceGuideBundle, pieceGuidesForArtboard, PIECE_GUIDES_API_BASE, } from '../components/embed-realtime/usePieceGuideBundle.js';
|
|
122
|
+
export type { PieceGuideBundle } from '../components/embed-realtime/usePieceGuideBundle.js';
|
package/dist/embed.mjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
import { b as Re, d as
|
|
3
|
-
import { y } from "./HybridHistoryManager-NL3zyEl4.js";
|
|
4
|
-
import { jsx as
|
|
5
|
-
import { createContext as Q, useContext as X,
|
|
1
|
+
import { a as J, e as z } from "./validation-BpmNOvuY.js";
|
|
2
|
+
import { b as Re, d as Ie, f as Te } from "./validation-BpmNOvuY.js";
|
|
3
|
+
import { y as w } from "./HybridHistoryManager-NL3zyEl4.js";
|
|
4
|
+
import { jsx as y, Fragment as Y } from "react/jsx-runtime";
|
|
5
|
+
import { createContext as Q, useContext as X, useMemo as S, useRef as x, useState as N, useEffect as G } from "react";
|
|
6
6
|
import { assertVariantSelected as Z, RenderSession as ee } from "@snowcone-app/sdk";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { u as ne, p as te } from "./usePieceGuideBundle-Cyl695jv.js";
|
|
8
|
+
import { S as re, s as se } from "./template-fields-IgDV7PRY.js";
|
|
9
|
+
import { D as Me, T as Ue, d as Be, r as Ce, a as Ne, e as Ge, f as Oe, g as qe, h as Fe, w as Pe } from "./template-fields-IgDV7PRY.js";
|
|
9
10
|
const L = Q(void 0);
|
|
10
|
-
function
|
|
11
|
+
function q() {
|
|
11
12
|
const e = X(L);
|
|
12
13
|
if (!e)
|
|
13
14
|
throw new Error(
|
|
@@ -15,256 +16,203 @@ function P() {
|
|
|
15
16
|
);
|
|
16
17
|
return e;
|
|
17
18
|
}
|
|
18
|
-
const re = "https://api.snowcone.app";
|
|
19
|
-
function se(e) {
|
|
20
|
-
const t = e.pieces.map((n) => ({
|
|
21
|
-
id: n.id,
|
|
22
|
-
x: n.x,
|
|
23
|
-
y: n.y,
|
|
24
|
-
width: n.width,
|
|
25
|
-
height: n.height,
|
|
26
|
-
rotation: typeof n.rotation == "number" ? n.rotation : void 0,
|
|
27
|
-
safeAreaInsetPx: typeof n.safeAreaInsetInches == "number" && n.safeAreaInsetInches > 0 ? n.safeAreaInsetInches * e.templateDpi : void 0
|
|
28
|
-
}));
|
|
29
|
-
return {
|
|
30
|
-
artboardWidth: e.artboardWidth,
|
|
31
|
-
artboardHeight: e.artboardHeight,
|
|
32
|
-
config: {
|
|
33
|
-
pieces: t,
|
|
34
|
-
guides: e.pieceGuides ?? {},
|
|
35
|
-
style: e.pieceGuidesStyle
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function ie(e, t) {
|
|
40
|
-
var n;
|
|
41
|
-
if (t) {
|
|
42
|
-
if (t.width !== e.artboardWidth || t.height !== e.artboardHeight) {
|
|
43
|
-
typeof y < "u" && ((n = y.env) == null ? void 0 : n.NODE_ENV) !== "production" && console.warn(
|
|
44
|
-
`[RealtimeEmbed] This product has printable-area guides (authored at ${e.artboardWidth}×${e.artboardHeight}), but the design's artboard is ${t.width}×${t.height} — the dead-zone overlay is skipped because the coordinates wouldn't line up. Author the design at the placement's dimensions to get it.`
|
|
45
|
-
);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
return e.config;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
function oe(e, t = re) {
|
|
52
|
-
const [n, s] = x(null);
|
|
53
|
-
return U(() => {
|
|
54
|
-
if (!e) {
|
|
55
|
-
s(null);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
let i = !1;
|
|
59
|
-
return fetch(`${t}/printables/by-gvid/${encodeURIComponent(e)}/piece-guides`).then(async (r) => {
|
|
60
|
-
if (!r.ok) throw new Error(`status ${r.status}`);
|
|
61
|
-
return await r.json();
|
|
62
|
-
}).then((r) => {
|
|
63
|
-
i || s(se(r));
|
|
64
|
-
}).catch(() => {
|
|
65
|
-
i || s(null);
|
|
66
|
-
}), () => {
|
|
67
|
-
i = !0;
|
|
68
|
-
};
|
|
69
|
-
}, [e, t]), n;
|
|
70
|
-
}
|
|
71
19
|
const E = "[RealtimeEmbed]";
|
|
72
20
|
function ae(e) {
|
|
73
|
-
var s,
|
|
21
|
+
var s, l;
|
|
74
22
|
if ((s = e == null ? void 0 : e.requiredPlacements) != null && s.length)
|
|
75
|
-
return e.requiredPlacements.filter((
|
|
76
|
-
const
|
|
77
|
-
(((
|
|
23
|
+
return e.requiredPlacements.filter((t) => !t.autoFilledByVariant).map((t) => t.label);
|
|
24
|
+
const n = new Set(
|
|
25
|
+
(((l = e == null ? void 0 : e.options) == null ? void 0 : l.combinations) ?? []).map((t) => t.variantId).filter((t) => typeof t == "string" && t !== "")
|
|
78
26
|
);
|
|
79
|
-
return !!(e != null && e.variantId) ||
|
|
27
|
+
return !!(e != null && e.variantId) || n.size > 1 ? [] : (e == null ? void 0 : e.placements) ?? [];
|
|
80
28
|
}
|
|
81
|
-
function
|
|
82
|
-
var
|
|
29
|
+
function oe({ shop: e, product: n, design: r, hasGrant: s }) {
|
|
30
|
+
var u, o;
|
|
83
31
|
if (e || console.error(`${E} \`shop\` is required (your publishable shop id).`), s || console.error(
|
|
84
32
|
`${E} no grant source — pass \`grantUrl\` (a proxy to mintRealtimeGrant) or \`grant\`. Without it the session can never authorize and no mockup renders.`
|
|
85
|
-
), (
|
|
33
|
+
), (u = n == null ? void 0 : n.mockupIds) != null && u.length || console.error(
|
|
86
34
|
`${E} product.mockupIds is empty — pass the catalog scene codes (product.mockups[].id) you want rendered, e.g. ["FV1qjO"].`
|
|
87
|
-
),
|
|
35
|
+
), n != null && n.options)
|
|
88
36
|
try {
|
|
89
|
-
Z(
|
|
90
|
-
} catch (
|
|
91
|
-
console.error(`${E} ${
|
|
37
|
+
Z(n);
|
|
38
|
+
} catch (a) {
|
|
39
|
+
console.error(`${E} ${a instanceof Error ? a.message : String(a)}`);
|
|
92
40
|
}
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
`${E} product ${
|
|
96
|
-
), (
|
|
97
|
-
`${E} the design's placement "${
|
|
41
|
+
const l = r.toJSON(), t = l.activeArtboard, f = ae(n);
|
|
42
|
+
f.length > 1 && console.error(
|
|
43
|
+
`${E} product ${n.productId} requires placements [${f.join(", ")}] but <RealtimeEmbed> renders a single placement ("${t}"). The render will time out waiting for the others. This product needs the eject path — see https://developers.snowcone.app/embed-mode#eject.`
|
|
44
|
+
), (o = n == null ? void 0 : n.placements) != null && o.length && !n.placements.includes(t) && console.warn(
|
|
45
|
+
`${E} the design's placement "${t}" is not in product.placements [${n.placements.join(", ")}]. The canvas artboard name and renderState placement must equal a real product placement label, or the server renders a blank mockup. Fix the \`name\` passed to design({ name }).`
|
|
98
46
|
);
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
`${E} duplicate layer name(s) [${[...new Set(
|
|
47
|
+
const i = l.elements.map((a) => a.name).filter((a) => !!a), h = i.filter((a, p) => i.indexOf(a) !== p);
|
|
48
|
+
h.length && console.warn(
|
|
49
|
+
`${E} duplicate layer name(s) [${[...new Set(h)].join(", ")}] — useTextBinding(name) / useImageBinding(name) bind to the FIRST match, so a duplicate name makes a control edit the wrong layer. Keep names unique.`
|
|
102
50
|
);
|
|
103
51
|
}
|
|
104
|
-
function
|
|
52
|
+
function ie(e) {
|
|
105
53
|
if ("grantUrl" in e && e.grantUrl)
|
|
106
54
|
return { grantUrl: e.grantUrl };
|
|
107
|
-
const
|
|
108
|
-
return typeof
|
|
55
|
+
const n = e.grant;
|
|
56
|
+
return typeof n == "function" ? { getToken: n } : { getToken: () => Promise.resolve(n) };
|
|
109
57
|
}
|
|
110
58
|
const V = 8e3;
|
|
111
|
-
function
|
|
59
|
+
function ce(e) {
|
|
112
60
|
return `[RealtimeEmbed] No mockup after ${Math.round(V / 1e3)}s. Common causes: a variant product missing \`variantId\` (pass \`product.options\` so the embed can flag it up front), a multi-placement product (the server waits for every required placement but <RealtimeEmbed> sends only "${e}" — pass \`product.requiredPlacements\` so this is flagged at mount; such products need the eject path), an unreachable or non-public asset URL in the design, or the placement "${e}" not existing on the product. The render may still arrive — this is a heads-up, not a failure.`;
|
|
113
61
|
}
|
|
114
62
|
function Ee(e) {
|
|
115
|
-
const { shop:
|
|
116
|
-
if (!
|
|
117
|
-
const
|
|
118
|
-
return
|
|
119
|
-
}, [
|
|
120
|
-
v.current =
|
|
121
|
-
const [
|
|
63
|
+
const { shop: n, product: r, design: s, throttleMs: l = 200, onMockups: t, onRenderError: f, wsUrl: i, services: h, children: u } = e, o = S(() => s.toJSON().activeArtboard, [s]), a = ne(r.variantId ?? r.defaultGvid), p = S(() => {
|
|
64
|
+
if (!a) return null;
|
|
65
|
+
const c = s.toJSON().artboards[0];
|
|
66
|
+
return te(a, c) ?? null;
|
|
67
|
+
}, [a, s]), v = x(t), d = x(f);
|
|
68
|
+
v.current = t, d.current = f;
|
|
69
|
+
const [F, K] = N([]), [$, k] = N(!0), [P, R] = N(null), M = !!("grantUrl" in e && e.grantUrl || "grant" in e && e.grant), U = ie(e), W = "grantUrl" in U ? U.grantUrl : "getToken", B = `${r.productId}|${r.mockupIds.join(",")}|${r.variantId ?? ""}`, I = S(
|
|
122
70
|
() => {
|
|
123
71
|
try {
|
|
124
|
-
return { session: new ee({ shop:
|
|
125
|
-
} catch (
|
|
126
|
-
return { error:
|
|
72
|
+
return { session: new ee({ shop: n, product: r, wsUrl: i, ...U }) };
|
|
73
|
+
} catch (c) {
|
|
74
|
+
return { error: c instanceof Error ? c.message : String(c) };
|
|
127
75
|
}
|
|
128
76
|
},
|
|
129
77
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
130
|
-
[
|
|
131
|
-
),
|
|
132
|
-
|
|
133
|
-
var
|
|
134
|
-
if (typeof
|
|
135
|
-
const m = `${
|
|
136
|
-
if (
|
|
137
|
-
|
|
78
|
+
[n, B, o, i, W]
|
|
79
|
+
), g = "session" in I ? I.session : null, T = "error" in I ? I.error : null, _ = x(null);
|
|
80
|
+
G(() => {
|
|
81
|
+
var c;
|
|
82
|
+
if (typeof w < "u" && ((c = w.env) == null ? void 0 : c.NODE_ENV) !== "production") {
|
|
83
|
+
const m = `${n}|${B}|${o}|${M}`;
|
|
84
|
+
if (_.current === m) return;
|
|
85
|
+
_.current = m, oe({ shop: n, product: r, design: s, hasGrant: M });
|
|
138
86
|
}
|
|
139
|
-
}, [
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
var
|
|
143
|
-
const
|
|
144
|
-
|
|
87
|
+
}, [n, B, o, M]);
|
|
88
|
+
const C = S(() => (c, m = l) => {
|
|
89
|
+
g && (R(null), k(!0), g.renderState(o, c, m).catch((b) => {
|
|
90
|
+
var D;
|
|
91
|
+
const A = b instanceof Error ? b.message : String(b);
|
|
92
|
+
R(A), k(!1), (D = d.current) == null || D.call(d, A);
|
|
145
93
|
}));
|
|
146
|
-
}, [
|
|
147
|
-
|
|
148
|
-
var
|
|
94
|
+
}, [g, o, l]);
|
|
95
|
+
G(() => {
|
|
96
|
+
var c;
|
|
149
97
|
if (T) {
|
|
150
|
-
|
|
98
|
+
R(T), k(!1), (c = d.current) == null || c.call(d, T);
|
|
151
99
|
return;
|
|
152
100
|
}
|
|
153
|
-
if (
|
|
154
|
-
return
|
|
101
|
+
if (g)
|
|
102
|
+
return g.onMockups((m) => {
|
|
155
103
|
var b;
|
|
156
|
-
|
|
157
|
-
}),
|
|
104
|
+
K(m), k(!1), (b = v.current) == null || b.call(v, m);
|
|
105
|
+
}), g.onError((m) => {
|
|
158
106
|
var b;
|
|
159
|
-
|
|
160
|
-
}),
|
|
161
|
-
}, [
|
|
107
|
+
R(m), k(!1), (b = d.current) == null || b.call(d, m);
|
|
108
|
+
}), C(s.toServerRequest()), () => g.close();
|
|
109
|
+
}, [g, T]), G(() => {
|
|
162
110
|
var m;
|
|
163
|
-
if (
|
|
164
|
-
const
|
|
165
|
-
return () => clearTimeout(
|
|
166
|
-
}, [
|
|
167
|
-
const
|
|
111
|
+
if (!$ || typeof w > "u" || ((m = w.env) == null ? void 0 : m.NODE_ENV) === "production") return;
|
|
112
|
+
const c = setTimeout(() => console.warn(ce(o)), V);
|
|
113
|
+
return () => clearTimeout(c);
|
|
114
|
+
}, [$, o]);
|
|
115
|
+
const H = S(
|
|
168
116
|
() => ({
|
|
169
|
-
session:
|
|
117
|
+
session: g,
|
|
170
118
|
design: s,
|
|
171
|
-
placement:
|
|
172
|
-
product:
|
|
173
|
-
mockups:
|
|
174
|
-
isRendering:
|
|
175
|
-
error:
|
|
176
|
-
throttleMs:
|
|
119
|
+
placement: o,
|
|
120
|
+
product: r,
|
|
121
|
+
mockups: F,
|
|
122
|
+
isRendering: $,
|
|
123
|
+
error: P,
|
|
124
|
+
throttleMs: l,
|
|
177
125
|
pieceGuides: p,
|
|
178
|
-
pushRender:
|
|
126
|
+
pushRender: C
|
|
179
127
|
}),
|
|
180
|
-
[
|
|
181
|
-
),
|
|
182
|
-
return
|
|
128
|
+
[g, s, o, r, F, $, P, l, p, C]
|
|
129
|
+
), j = /* @__PURE__ */ y(L.Provider, { value: H, children: u });
|
|
130
|
+
return h ? /* @__PURE__ */ y(J, { services: h, children: j }) : j;
|
|
183
131
|
}
|
|
184
|
-
function
|
|
132
|
+
function Se({
|
|
185
133
|
children: e,
|
|
186
|
-
kit:
|
|
187
|
-
inheritTheme:
|
|
134
|
+
kit: n = "embed-only",
|
|
135
|
+
inheritTheme: r = !0,
|
|
188
136
|
maxHeight: s,
|
|
189
|
-
services:
|
|
190
|
-
className:
|
|
191
|
-
style:
|
|
137
|
+
services: l,
|
|
138
|
+
className: t,
|
|
139
|
+
style: f
|
|
192
140
|
}) {
|
|
193
|
-
const { design:
|
|
194
|
-
return /* @__PURE__ */
|
|
195
|
-
|
|
141
|
+
const { design: i, placement: h, throttleMs: u, pieceGuides: o, pushRender: a } = q(), p = S(() => i.toJSON(), [i]);
|
|
142
|
+
return /* @__PURE__ */ y("div", { className: `app-modern${t ? ` ${t}` : ""}`, style: f, children: /* @__PURE__ */ y(
|
|
143
|
+
re,
|
|
196
144
|
{
|
|
197
|
-
kit:
|
|
198
|
-
inheritTheme:
|
|
199
|
-
services:
|
|
145
|
+
kit: n,
|
|
146
|
+
inheritTheme: r,
|
|
147
|
+
services: l,
|
|
200
148
|
artboards: p.artboards,
|
|
201
|
-
activeArtboard:
|
|
149
|
+
activeArtboard: h,
|
|
202
150
|
initialElements: p.elements,
|
|
203
151
|
layoutConfig: s ? { maxHeight: s } : void 0,
|
|
204
152
|
overlay: e,
|
|
205
|
-
pieceGuides:
|
|
206
|
-
onChange: (v) =>
|
|
153
|
+
pieceGuides: o ?? void 0,
|
|
154
|
+
onChange: (v) => a(se(v), u)
|
|
207
155
|
}
|
|
208
156
|
) });
|
|
209
157
|
}
|
|
210
|
-
const
|
|
211
|
-
function
|
|
212
|
-
for (const
|
|
213
|
-
if (
|
|
214
|
-
return
|
|
158
|
+
const le = 1.2, O = [1200, 1400, 1600, 1800, 2e3, 2500, 3e3, 4e3];
|
|
159
|
+
function ue(e) {
|
|
160
|
+
for (const n of O)
|
|
161
|
+
if (n >= e) return n;
|
|
162
|
+
return O[O.length - 1];
|
|
215
163
|
}
|
|
216
|
-
function
|
|
217
|
-
if (!(e > 0) || !(
|
|
218
|
-
const
|
|
219
|
-
return `[RealtimeMockup] mockup rendered at ${e}px but displayed at ~${
|
|
164
|
+
function de(e, n) {
|
|
165
|
+
if (!(e > 0) || !(n > 0) || n <= e * le) return null;
|
|
166
|
+
const r = ue(n);
|
|
167
|
+
return `[RealtimeMockup] mockup rendered at ${e}px but displayed at ~${n} device px — the preview will look soft. Pass \`product.width\` (e.g. ${r}) on <RealtimeEmbed> for a crisp preview.`;
|
|
220
168
|
}
|
|
221
|
-
function
|
|
169
|
+
function we({
|
|
222
170
|
mockupId: e,
|
|
223
|
-
fallback:
|
|
224
|
-
alt:
|
|
171
|
+
fallback: n = null,
|
|
172
|
+
alt: r = "Live product mockup",
|
|
225
173
|
className: s,
|
|
226
|
-
style:
|
|
174
|
+
style: l
|
|
227
175
|
}) {
|
|
228
|
-
const { mockups:
|
|
229
|
-
if (!(
|
|
230
|
-
return /* @__PURE__ */
|
|
231
|
-
const
|
|
176
|
+
const { mockups: t } = q(), f = x(/* @__PURE__ */ new Set()), i = e ? t.find((u) => u.mockupId === e && u.imageUrl) : t.find((u) => u.imageUrl);
|
|
177
|
+
if (!(i != null && i.imageUrl))
|
|
178
|
+
return /* @__PURE__ */ y(Y, { children: n });
|
|
179
|
+
const h = (u) => {
|
|
232
180
|
var d;
|
|
233
|
-
if (typeof
|
|
234
|
-
const
|
|
235
|
-
if (
|
|
236
|
-
const p = Math.round(
|
|
237
|
-
v && (
|
|
181
|
+
if (typeof w > "u" || ((d = w.env) == null ? void 0 : d.NODE_ENV) === "production" || typeof window > "u" || f.current.has(i.mockupId)) return;
|
|
182
|
+
const o = u.currentTarget, a = o.getBoundingClientRect().width;
|
|
183
|
+
if (a <= 0) return;
|
|
184
|
+
const p = Math.round(a * (window.devicePixelRatio || 1)), v = de(o.naturalWidth, p);
|
|
185
|
+
v && (f.current.add(i.mockupId), console.warn(v));
|
|
238
186
|
};
|
|
239
187
|
return (
|
|
240
188
|
// eslint-disable-next-line @next/next/no-img-element
|
|
241
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ y("img", { src: i.imageUrl, alt: r, className: s, style: l, onLoad: h })
|
|
242
190
|
);
|
|
243
191
|
}
|
|
244
|
-
function
|
|
245
|
-
const { mockups: e, isRendering:
|
|
246
|
-
return { mockups: e, isRendering:
|
|
192
|
+
function ye() {
|
|
193
|
+
const { mockups: e, isRendering: n, error: r } = q();
|
|
194
|
+
return { mockups: e, isRendering: n, error: r };
|
|
247
195
|
}
|
|
248
|
-
|
|
196
|
+
z();
|
|
249
197
|
export {
|
|
250
|
-
|
|
198
|
+
J as CanvasServicesProvider,
|
|
251
199
|
Me as DesignBuilder,
|
|
252
|
-
|
|
200
|
+
Se as RealtimeCanvas,
|
|
253
201
|
Ee as RealtimeEmbed,
|
|
254
|
-
|
|
255
|
-
|
|
202
|
+
we as RealtimeMockup,
|
|
203
|
+
Ue as TEMPLATE_FIELDS_KEY,
|
|
256
204
|
Re as createProxyGenerate,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
205
|
+
Ie as createProxyImageSearch,
|
|
206
|
+
Be as design,
|
|
207
|
+
Ce as readTemplateFields,
|
|
208
|
+
Te as useCanvasServices,
|
|
261
209
|
Ne as useColorBinding,
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
210
|
+
Ge as useElementByName,
|
|
211
|
+
Oe as useFontBinding,
|
|
212
|
+
qe as useImageBinding,
|
|
213
|
+
ye as useRealtimeMockups,
|
|
214
|
+
Fe as useTextBinding,
|
|
215
|
+
oe as validateEmbed,
|
|
216
|
+
Pe as withTemplateFields
|
|
269
217
|
};
|
|
270
218
|
//# sourceMappingURL=embed.mjs.map
|