@webstudio-is/react-sdk 0.100.1-c4ae8b2.0 → 0.101.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/lib/index.js +95 -335
- package/lib/types/context.d.ts +8 -3
- package/lib/types/generator.d.ts +2 -13
- package/lib/types/index.d.ts +1 -1
- package/lib/types/props.d.ts +114 -119
- package/lib/types/tree/create-elements-tree.d.ts +2 -3
- package/lib/types/tree/index.d.ts +0 -1
- package/lib/types/tree/webstudio-component.d.ts +0 -9
- package/package.json +9 -9
- package/lib/types/tree/root.d.ts +0 -28
package/lib/index.js
CHANGED
|
@@ -26,9 +26,9 @@ var ReactSdkContext = createContext({
|
|
|
26
26
|
assetBaseUrl: "/",
|
|
27
27
|
imageBaseUrl: "/",
|
|
28
28
|
imageLoader: ({ src }) => src,
|
|
29
|
+
pagesPaths: /* @__PURE__ */ new Set(),
|
|
29
30
|
propsByInstanceIdStore: atom(/* @__PURE__ */ new Map()),
|
|
30
31
|
assetsStore: atom(/* @__PURE__ */ new Map()),
|
|
31
|
-
pagesStore: atom(/* @__PURE__ */ new Map()),
|
|
32
32
|
dataSourcesLogicStore: atom(/* @__PURE__ */ new Map()),
|
|
33
33
|
indexesWithinAncestors: /* @__PURE__ */ new Map()
|
|
34
34
|
});
|
|
@@ -44,7 +44,6 @@ var createElementsTree = ({
|
|
|
44
44
|
rootInstanceId,
|
|
45
45
|
propsByInstanceIdStore,
|
|
46
46
|
assetsStore,
|
|
47
|
-
pagesStore,
|
|
48
47
|
dataSourcesLogicStore,
|
|
49
48
|
indexesWithinAncestors,
|
|
50
49
|
Component,
|
|
@@ -81,10 +80,10 @@ var createElementsTree = ({
|
|
|
81
80
|
value: {
|
|
82
81
|
propsByInstanceIdStore,
|
|
83
82
|
assetsStore,
|
|
84
|
-
pagesStore,
|
|
85
83
|
dataSourcesLogicStore,
|
|
86
84
|
renderer,
|
|
87
85
|
imageLoader,
|
|
86
|
+
pagesPaths: /* @__PURE__ */ new Set(),
|
|
88
87
|
assetBaseUrl,
|
|
89
88
|
imageBaseUrl,
|
|
90
89
|
indexesWithinAncestors
|
|
@@ -148,174 +147,9 @@ var createInstanceElement = ({
|
|
|
148
147
|
);
|
|
149
148
|
};
|
|
150
149
|
|
|
151
|
-
// src/tree/root.ts
|
|
152
|
-
import {
|
|
153
|
-
useRef
|
|
154
|
-
} from "react";
|
|
155
|
-
import {
|
|
156
|
-
atom as atom2,
|
|
157
|
-
computed as computed2
|
|
158
|
-
} from "nanostores";
|
|
159
|
-
|
|
160
150
|
// src/tree/webstudio-component.tsx
|
|
161
|
-
import { Fragment as Fragment2
|
|
162
|
-
|
|
163
|
-
// src/props.ts
|
|
164
|
-
import { useContext, useMemo } from "react";
|
|
165
|
-
import { computed } from "nanostores";
|
|
166
|
-
import { useStore } from "@nanostores/react";
|
|
167
|
-
var getPropsByInstanceId = (props) => {
|
|
168
|
-
const propsByInstanceId = /* @__PURE__ */ new Map();
|
|
169
|
-
for (const prop of props.values()) {
|
|
170
|
-
let instanceProps = propsByInstanceId.get(prop.instanceId);
|
|
171
|
-
if (instanceProps === void 0) {
|
|
172
|
-
instanceProps = [];
|
|
173
|
-
propsByInstanceId.set(prop.instanceId, instanceProps);
|
|
174
|
-
}
|
|
175
|
-
instanceProps.push(prop);
|
|
176
|
-
}
|
|
177
|
-
return propsByInstanceId;
|
|
178
|
-
};
|
|
179
|
-
var useInstanceProps = (instanceId) => {
|
|
180
|
-
const {
|
|
181
|
-
propsByInstanceIdStore,
|
|
182
|
-
dataSourcesLogicStore,
|
|
183
|
-
indexesWithinAncestors
|
|
184
|
-
} = useContext(ReactSdkContext);
|
|
185
|
-
const index = indexesWithinAncestors.get(instanceId);
|
|
186
|
-
const instancePropsObjectStore = useMemo(() => {
|
|
187
|
-
return computed(
|
|
188
|
-
[propsByInstanceIdStore, dataSourcesLogicStore],
|
|
189
|
-
(propsByInstanceId, dataSourcesLogic) => {
|
|
190
|
-
const instancePropsObject2 = {};
|
|
191
|
-
if (index !== void 0) {
|
|
192
|
-
instancePropsObject2[indexAttribute] = index.toString();
|
|
193
|
-
}
|
|
194
|
-
const instanceProps = propsByInstanceId.get(instanceId);
|
|
195
|
-
if (instanceProps === void 0) {
|
|
196
|
-
return instancePropsObject2;
|
|
197
|
-
}
|
|
198
|
-
for (const prop of instanceProps) {
|
|
199
|
-
if (prop.type === "asset" || prop.type === "page") {
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
if (prop.type === "dataSource") {
|
|
203
|
-
const dataSourceId = prop.value;
|
|
204
|
-
const value = dataSourcesLogic.get(dataSourceId);
|
|
205
|
-
if (value !== void 0) {
|
|
206
|
-
instancePropsObject2[prop.name] = value;
|
|
207
|
-
}
|
|
208
|
-
continue;
|
|
209
|
-
}
|
|
210
|
-
if (prop.type === "action") {
|
|
211
|
-
const action = dataSourcesLogic.get(prop.id);
|
|
212
|
-
if (typeof action === "function") {
|
|
213
|
-
instancePropsObject2[prop.name] = action;
|
|
214
|
-
}
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
instancePropsObject2[prop.name] = prop.value;
|
|
218
|
-
}
|
|
219
|
-
return instancePropsObject2;
|
|
220
|
-
}
|
|
221
|
-
);
|
|
222
|
-
}, [propsByInstanceIdStore, dataSourcesLogicStore, instanceId, index]);
|
|
223
|
-
const instancePropsObject = useStore(instancePropsObjectStore);
|
|
224
|
-
return instancePropsObject;
|
|
225
|
-
};
|
|
226
|
-
var usePropAsset = (instanceId, name) => {
|
|
227
|
-
const { propsByInstanceIdStore, assetsStore } = useContext(ReactSdkContext);
|
|
228
|
-
const assetStore = useMemo(() => {
|
|
229
|
-
return computed(
|
|
230
|
-
[propsByInstanceIdStore, assetsStore],
|
|
231
|
-
(propsByInstanceId, assets) => {
|
|
232
|
-
const instanceProps = propsByInstanceId.get(instanceId);
|
|
233
|
-
if (instanceProps === void 0) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
for (const prop of instanceProps) {
|
|
237
|
-
if (prop.type === "asset" && prop.name === name) {
|
|
238
|
-
const assetId = prop.value;
|
|
239
|
-
return assets.get(assetId);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
);
|
|
244
|
-
}, [propsByInstanceIdStore, assetsStore, instanceId, name]);
|
|
245
|
-
const asset = useStore(assetStore);
|
|
246
|
-
return asset;
|
|
247
|
-
};
|
|
248
|
-
var resolveUrlProp = (instanceId, name, {
|
|
249
|
-
props,
|
|
250
|
-
pages,
|
|
251
|
-
assets
|
|
252
|
-
}) => {
|
|
253
|
-
const instanceProps = props.get(instanceId);
|
|
254
|
-
if (instanceProps === void 0) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
let prop = void 0;
|
|
258
|
-
for (const intanceProp of instanceProps) {
|
|
259
|
-
if (intanceProp.name !== name) {
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
prop = intanceProp;
|
|
263
|
-
}
|
|
264
|
-
if (prop === void 0) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
if (prop.type === "page") {
|
|
268
|
-
if (typeof prop.value === "string") {
|
|
269
|
-
const page2 = pages.get(prop.value);
|
|
270
|
-
return page2 && { type: "page", page: page2 };
|
|
271
|
-
}
|
|
272
|
-
const { instanceId: instanceId2, pageId } = prop.value;
|
|
273
|
-
const page = pages.get(pageId);
|
|
274
|
-
if (page === void 0) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
const idProp = props.get(instanceId2)?.find((prop2) => prop2.name === "id");
|
|
278
|
-
return {
|
|
279
|
-
type: "page",
|
|
280
|
-
page,
|
|
281
|
-
instanceId: instanceId2,
|
|
282
|
-
hash: idProp === void 0 || idProp.type !== "string" ? void 0 : idProp.value
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
if (prop.type === "string") {
|
|
286
|
-
for (const page of pages.values()) {
|
|
287
|
-
if (page.path === prop.value) {
|
|
288
|
-
return { type: "page", page };
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return { type: "string", url: prop.value };
|
|
292
|
-
}
|
|
293
|
-
if (prop.type === "asset") {
|
|
294
|
-
const asset = assets.get(prop.value);
|
|
295
|
-
return asset && { type: "asset", asset };
|
|
296
|
-
}
|
|
297
|
-
return;
|
|
298
|
-
};
|
|
299
|
-
var usePropUrl = (instanceId, name) => {
|
|
300
|
-
const { propsByInstanceIdStore, pagesStore, assetsStore } = useContext(ReactSdkContext);
|
|
301
|
-
const store = useMemo(
|
|
302
|
-
() => computed(
|
|
303
|
-
[propsByInstanceIdStore, pagesStore, assetsStore],
|
|
304
|
-
(props, pages, assets) => resolveUrlProp(instanceId, name, { props, pages, assets })
|
|
305
|
-
),
|
|
306
|
-
[propsByInstanceIdStore, pagesStore, assetsStore, instanceId, name]
|
|
307
|
-
);
|
|
308
|
-
return useStore(store);
|
|
309
|
-
};
|
|
310
|
-
var getInstanceIdFromComponentProps = (props) => {
|
|
311
|
-
return props[idAttribute];
|
|
312
|
-
};
|
|
313
|
-
var getIndexWithinAncestorFromComponentProps = (props) => {
|
|
314
|
-
return props[indexAttribute];
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
// src/tree/webstudio-component.tsx
|
|
318
|
-
import { Fragment as Fragment3, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
151
|
+
import { Fragment as Fragment2 } from "react";
|
|
152
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
319
153
|
var renderText = (text) => {
|
|
320
154
|
const lines = text.split("\n");
|
|
321
155
|
return lines.map((line, index) => /* @__PURE__ */ jsxs2(Fragment2, { children: [
|
|
@@ -331,105 +165,12 @@ var renderWebstudioComponentChildren = (children) => {
|
|
|
331
165
|
return typeof child === "string" ? renderText(child) : child;
|
|
332
166
|
});
|
|
333
167
|
};
|
|
334
|
-
var WebstudioComponent = forwardRef(({ instance, instanceSelector, children, components, ...rest }, ref) => {
|
|
335
|
-
const { [showAttribute]: show = true, ...instanceProps } = useInstanceProps(
|
|
336
|
-
instance.id
|
|
337
|
-
);
|
|
338
|
-
const props = {
|
|
339
|
-
...instanceProps,
|
|
340
|
-
...rest,
|
|
341
|
-
[idAttribute]: instance.id,
|
|
342
|
-
[componentAttribute]: instance.component
|
|
343
|
-
};
|
|
344
|
-
if (show === false) {
|
|
345
|
-
return /* @__PURE__ */ jsx2(Fragment3, {});
|
|
346
|
-
}
|
|
347
|
-
const Component = components.get(instance.component);
|
|
348
|
-
if (Component === void 0) {
|
|
349
|
-
return /* @__PURE__ */ jsx2(Fragment3, {});
|
|
350
|
-
}
|
|
351
|
-
return /* @__PURE__ */ jsx2(Component, { ...props, ref, children: renderWebstudioComponentChildren(children) });
|
|
352
|
-
});
|
|
353
168
|
var idAttribute = "data-ws-id";
|
|
354
169
|
var selectorIdAttribute = "data-ws-selector";
|
|
355
170
|
var componentAttribute = "data-ws-component";
|
|
356
171
|
var showAttribute = "data-ws-show";
|
|
357
172
|
var indexAttribute = "data-ws-index";
|
|
358
173
|
var collapsedAttribute = "data-ws-collapsed";
|
|
359
|
-
var splitPropsWithWebstudioAttributes = ({
|
|
360
|
-
[idAttribute]: idAttributeValue,
|
|
361
|
-
[componentAttribute]: componentAttributeValue,
|
|
362
|
-
[showAttribute]: showAttributeValue,
|
|
363
|
-
[collapsedAttribute]: collapsedAttributeValue,
|
|
364
|
-
[selectorIdAttribute]: parentIdAttributeValue,
|
|
365
|
-
...props
|
|
366
|
-
}) => [
|
|
367
|
-
{
|
|
368
|
-
[idAttribute]: idAttributeValue,
|
|
369
|
-
[componentAttribute]: componentAttributeValue,
|
|
370
|
-
[showAttribute]: showAttributeValue,
|
|
371
|
-
[collapsedAttribute]: collapsedAttributeValue,
|
|
372
|
-
[selectorIdAttribute]: parentIdAttributeValue
|
|
373
|
-
},
|
|
374
|
-
props
|
|
375
|
-
];
|
|
376
|
-
|
|
377
|
-
// src/tree/root.ts
|
|
378
|
-
var InstanceRoot = ({
|
|
379
|
-
data,
|
|
380
|
-
utils,
|
|
381
|
-
Component,
|
|
382
|
-
components,
|
|
383
|
-
scripts,
|
|
384
|
-
imageLoader
|
|
385
|
-
}) => {
|
|
386
|
-
const { indexesWithinAncestors, getDataSourcesLogic } = utils;
|
|
387
|
-
const dataSourceVariablesStoreRef = useRef(void 0);
|
|
388
|
-
if (dataSourceVariablesStoreRef.current === void 0) {
|
|
389
|
-
dataSourceVariablesStoreRef.current = atom2(/* @__PURE__ */ new Map());
|
|
390
|
-
}
|
|
391
|
-
const dataSourceVariablesStore = dataSourceVariablesStoreRef.current;
|
|
392
|
-
const dataSourcesLogicStoreRef = useRef(void 0);
|
|
393
|
-
if (dataSourcesLogicStoreRef.current === void 0) {
|
|
394
|
-
dataSourcesLogicStoreRef.current = computed2(
|
|
395
|
-
dataSourceVariablesStore,
|
|
396
|
-
(dataSourceVariables) => {
|
|
397
|
-
try {
|
|
398
|
-
const getVariable = (id) => {
|
|
399
|
-
return dataSourceVariables.get(id);
|
|
400
|
-
};
|
|
401
|
-
const setVariable = (id, value) => {
|
|
402
|
-
const dataSourceVariables2 = new Map(dataSourceVariablesStore.get());
|
|
403
|
-
dataSourceVariables2.set(id, value);
|
|
404
|
-
dataSourceVariablesStore.set(dataSourceVariables2);
|
|
405
|
-
};
|
|
406
|
-
return getDataSourcesLogic(getVariable, setVariable);
|
|
407
|
-
} catch (error) {
|
|
408
|
-
console.error(error);
|
|
409
|
-
}
|
|
410
|
-
return /* @__PURE__ */ new Map();
|
|
411
|
-
}
|
|
412
|
-
);
|
|
413
|
-
}
|
|
414
|
-
const dataSourcesLogicStore = dataSourcesLogicStoreRef.current;
|
|
415
|
-
return createElementsTree({
|
|
416
|
-
imageLoader,
|
|
417
|
-
imageBaseUrl: data.params?.imageBaseUrl ?? "/",
|
|
418
|
-
assetBaseUrl: data.params?.assetBaseUrl ?? "/",
|
|
419
|
-
instances: new Map(data.build.instances),
|
|
420
|
-
rootInstanceId: data.page.rootInstanceId,
|
|
421
|
-
propsByInstanceIdStore: atom2(
|
|
422
|
-
getPropsByInstanceId(new Map(data.build.props))
|
|
423
|
-
),
|
|
424
|
-
assetsStore: atom2(new Map(data.assets.map((asset) => [asset.id, asset]))),
|
|
425
|
-
pagesStore: atom2(new Map(data.pages.map((page) => [page.id, page]))),
|
|
426
|
-
indexesWithinAncestors,
|
|
427
|
-
dataSourcesLogicStore,
|
|
428
|
-
Component: Component ?? WebstudioComponent,
|
|
429
|
-
components,
|
|
430
|
-
scripts
|
|
431
|
-
});
|
|
432
|
-
};
|
|
433
174
|
|
|
434
175
|
// src/css/style-rules.ts
|
|
435
176
|
var getStyleRules = (styles, styleSourceSelections) => {
|
|
@@ -1446,6 +1187,87 @@ var WsComponentMeta = z3.object({
|
|
|
1446
1187
|
order: z3.number().optional()
|
|
1447
1188
|
});
|
|
1448
1189
|
|
|
1190
|
+
// src/props.ts
|
|
1191
|
+
var normalizeProps = ({
|
|
1192
|
+
props,
|
|
1193
|
+
assetBaseUrl,
|
|
1194
|
+
assets,
|
|
1195
|
+
pages
|
|
1196
|
+
}) => {
|
|
1197
|
+
const newProps = [];
|
|
1198
|
+
for (const prop of props) {
|
|
1199
|
+
if (prop.type === "asset") {
|
|
1200
|
+
const assetId = prop.value;
|
|
1201
|
+
const asset = assets.get(assetId);
|
|
1202
|
+
if (asset === void 0) {
|
|
1203
|
+
continue;
|
|
1204
|
+
}
|
|
1205
|
+
newProps.push({
|
|
1206
|
+
id: prop.id,
|
|
1207
|
+
name: prop.name,
|
|
1208
|
+
required: prop.required,
|
|
1209
|
+
instanceId: prop.instanceId,
|
|
1210
|
+
type: "string",
|
|
1211
|
+
value: `${assetBaseUrl}${asset.name}`
|
|
1212
|
+
});
|
|
1213
|
+
continue;
|
|
1214
|
+
}
|
|
1215
|
+
if (prop.type === "page") {
|
|
1216
|
+
let page;
|
|
1217
|
+
let idProp;
|
|
1218
|
+
if (typeof prop.value === "string") {
|
|
1219
|
+
const pageId = prop.value;
|
|
1220
|
+
page = pages.get(pageId);
|
|
1221
|
+
} else {
|
|
1222
|
+
const { pageId, instanceId } = prop.value;
|
|
1223
|
+
page = pages.get(pageId);
|
|
1224
|
+
idProp = props.find(
|
|
1225
|
+
(prop2) => prop2.instanceId === instanceId && prop2.name === "id"
|
|
1226
|
+
);
|
|
1227
|
+
}
|
|
1228
|
+
if (page === void 0) {
|
|
1229
|
+
continue;
|
|
1230
|
+
}
|
|
1231
|
+
const url = new URL(page.path, "https://any-valid.url");
|
|
1232
|
+
let value = url.pathname;
|
|
1233
|
+
if (idProp?.type === "string") {
|
|
1234
|
+
const hash = idProp.value;
|
|
1235
|
+
url.hash = encodeURIComponent(hash);
|
|
1236
|
+
value = `${url.pathname}${url.hash}`;
|
|
1237
|
+
}
|
|
1238
|
+
newProps.push({
|
|
1239
|
+
id: prop.id,
|
|
1240
|
+
name: prop.name,
|
|
1241
|
+
required: prop.required,
|
|
1242
|
+
instanceId: prop.instanceId,
|
|
1243
|
+
type: "string",
|
|
1244
|
+
value
|
|
1245
|
+
});
|
|
1246
|
+
continue;
|
|
1247
|
+
}
|
|
1248
|
+
newProps.push(prop);
|
|
1249
|
+
}
|
|
1250
|
+
return newProps;
|
|
1251
|
+
};
|
|
1252
|
+
var getPropsByInstanceId = (props) => {
|
|
1253
|
+
const propsByInstanceId = /* @__PURE__ */ new Map();
|
|
1254
|
+
for (const prop of props.values()) {
|
|
1255
|
+
let instanceProps = propsByInstanceId.get(prop.instanceId);
|
|
1256
|
+
if (instanceProps === void 0) {
|
|
1257
|
+
instanceProps = [];
|
|
1258
|
+
propsByInstanceId.set(prop.instanceId, instanceProps);
|
|
1259
|
+
}
|
|
1260
|
+
instanceProps.push(prop);
|
|
1261
|
+
}
|
|
1262
|
+
return propsByInstanceId;
|
|
1263
|
+
};
|
|
1264
|
+
var getInstanceIdFromComponentProps = (props) => {
|
|
1265
|
+
return props[idAttribute];
|
|
1266
|
+
};
|
|
1267
|
+
var getIndexWithinAncestorFromComponentProps = (props) => {
|
|
1268
|
+
return props[indexAttribute];
|
|
1269
|
+
};
|
|
1270
|
+
|
|
1449
1271
|
// src/instance-utils.ts
|
|
1450
1272
|
var getIndexesWithinAncestors = (metas, instances, rootIds) => {
|
|
1451
1273
|
const ancestors = /* @__PURE__ */ new Set();
|
|
@@ -1504,61 +1326,14 @@ var getClosestInstance = (instancePath, currentInstance, closestComponent) => {
|
|
|
1504
1326
|
};
|
|
1505
1327
|
|
|
1506
1328
|
// src/generator.ts
|
|
1507
|
-
import {
|
|
1508
|
-
createScope
|
|
1509
|
-
} from "@webstudio-is/sdk";
|
|
1510
1329
|
var generateUtilsExport = (siteData) => {
|
|
1511
|
-
const
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
[siteData.page.rootInstanceId]
|
|
1515
|
-
);
|
|
1516
|
-
let indexesWithinAncestorsEntries = "";
|
|
1517
|
-
for (const [key, value] of indexesWithinAncestors) {
|
|
1518
|
-
const keyString = JSON.stringify(key);
|
|
1519
|
-
const valueString = JSON.stringify(value);
|
|
1520
|
-
indexesWithinAncestorsEntries += `[${keyString}, ${valueString}],
|
|
1521
|
-
`;
|
|
1330
|
+
const pagesPaths = [siteData.pages.homePage.path];
|
|
1331
|
+
for (const page of siteData.pages.pages) {
|
|
1332
|
+
pagesPaths.push(page.path);
|
|
1522
1333
|
}
|
|
1523
|
-
const
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
]);
|
|
1527
|
-
`;
|
|
1528
|
-
const { variables, body, output } = generateDataSources({
|
|
1529
|
-
scope: createScope(["_getVariable", "_setVariable", "_output"]),
|
|
1530
|
-
typed: true,
|
|
1531
|
-
dataSources: siteData.dataSources,
|
|
1532
|
-
props: siteData.props
|
|
1533
|
-
});
|
|
1534
|
-
let generatedDataSources = "";
|
|
1535
|
-
generatedDataSources += `const getDataSourcesLogic = (
|
|
1536
|
-
`;
|
|
1537
|
-
generatedDataSources += ` _getVariable: (id: string) => unknown,
|
|
1538
|
-
`;
|
|
1539
|
-
generatedDataSources += ` _setVariable: (id: string, value: unknown) => void
|
|
1540
|
-
`;
|
|
1541
|
-
generatedDataSources += `) => {
|
|
1542
|
-
`;
|
|
1543
|
-
for (const [dataSourceId, variable] of variables) {
|
|
1544
|
-
const { valueName, setterName } = variable;
|
|
1545
|
-
const initialValue = JSON.stringify(variable.initialValue);
|
|
1546
|
-
generatedDataSources += `let ${valueName} = _getVariable("${dataSourceId}") ?? ${initialValue};
|
|
1547
|
-
`;
|
|
1548
|
-
generatedDataSources += `let ${setterName} = (value: unknown) => _setVariable("${dataSourceId}", value);
|
|
1549
|
-
`;
|
|
1550
|
-
}
|
|
1551
|
-
generatedDataSources += body;
|
|
1552
|
-
generatedDataSources += `let _output = new Map();
|
|
1553
|
-
`;
|
|
1554
|
-
for (const [dataSourceId, variableName] of output) {
|
|
1555
|
-
generatedDataSources += `_output.set('${dataSourceId}', ${variableName})
|
|
1556
|
-
`;
|
|
1557
|
-
}
|
|
1558
|
-
generatedDataSources += `return _output
|
|
1559
|
-
`;
|
|
1560
|
-
generatedDataSources += `}
|
|
1561
|
-
`;
|
|
1334
|
+
const generatedPagesPaths = `export const pagesPaths = new Set(${JSON.stringify(
|
|
1335
|
+
pagesPaths
|
|
1336
|
+
)})`;
|
|
1562
1337
|
const formsProperties = /* @__PURE__ */ new Map();
|
|
1563
1338
|
for (const prop of siteData.props.values()) {
|
|
1564
1339
|
if (prop.type === "string") {
|
|
@@ -1576,20 +1351,9 @@ var generateUtilsExport = (siteData) => {
|
|
|
1576
1351
|
Array.from(formsProperties.entries())
|
|
1577
1352
|
)})`;
|
|
1578
1353
|
return `
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
${generatedIndexesWithinAncestors.trim()}
|
|
1582
|
-
|
|
1583
|
-
${generatedDataSources}
|
|
1354
|
+
${generatedPagesPaths}
|
|
1584
1355
|
|
|
1585
1356
|
${generatedFormsProperties}
|
|
1586
|
-
|
|
1587
|
-
export const utils = {
|
|
1588
|
-
indexesWithinAncestors,
|
|
1589
|
-
getDataSourcesLogic,
|
|
1590
|
-
};
|
|
1591
|
-
|
|
1592
|
-
/* eslint-enable */
|
|
1593
1357
|
`;
|
|
1594
1358
|
};
|
|
1595
1359
|
|
|
@@ -1748,7 +1512,7 @@ var generatePageComponent = ({
|
|
|
1748
1512
|
let generatedDataSources = "";
|
|
1749
1513
|
for (const { valueName, setterName, initialValue } of variables.values()) {
|
|
1750
1514
|
const initialValueString = JSON.stringify(initialValue);
|
|
1751
|
-
generatedDataSources += `let [${valueName}, ${setterName}] = useState(${initialValueString})
|
|
1515
|
+
generatedDataSources += `let [${valueName}, ${setterName}] = useState<any>(${initialValueString})
|
|
1752
1516
|
`;
|
|
1753
1517
|
}
|
|
1754
1518
|
generatedDataSources += dataSourcesBody;
|
|
@@ -1779,11 +1543,9 @@ var generatePageComponent = ({
|
|
|
1779
1543
|
export {
|
|
1780
1544
|
EmbedTemplateInstance,
|
|
1781
1545
|
EmbedTemplateStyleDecl,
|
|
1782
|
-
InstanceRoot,
|
|
1783
1546
|
PropMeta,
|
|
1784
1547
|
ReactSdkContext,
|
|
1785
1548
|
Root,
|
|
1786
|
-
WebstudioComponent,
|
|
1787
1549
|
WsComponentMeta,
|
|
1788
1550
|
WsEmbedTemplate,
|
|
1789
1551
|
addGlobalRules,
|
|
@@ -1806,17 +1568,15 @@ export {
|
|
|
1806
1568
|
getIndexesWithinAncestors,
|
|
1807
1569
|
getInstanceIdFromComponentProps,
|
|
1808
1570
|
getPresetStyleRules,
|
|
1571
|
+
getPropsByInstanceId,
|
|
1809
1572
|
getStyleRules,
|
|
1810
1573
|
idAttribute,
|
|
1811
1574
|
indexAttribute,
|
|
1812
1575
|
namespaceMeta,
|
|
1576
|
+
normalizeProps,
|
|
1813
1577
|
renderWebstudioComponentChildren,
|
|
1814
1578
|
selectorIdAttribute,
|
|
1815
1579
|
showAttribute,
|
|
1816
|
-
splitPropsWithWebstudioAttributes,
|
|
1817
1580
|
stateCategories,
|
|
1818
|
-
useInstanceProps,
|
|
1819
|
-
usePropAsset,
|
|
1820
|
-
usePropUrl,
|
|
1821
1581
|
validateExpression
|
|
1822
1582
|
};
|
package/lib/types/context.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { type ReadableAtom } from "nanostores";
|
|
3
|
-
import type { Assets } from "@webstudio-is/sdk";
|
|
4
|
-
import type {
|
|
3
|
+
import type { Assets, Page } from "@webstudio-is/sdk";
|
|
4
|
+
import type { PropsByInstanceId } from "./props";
|
|
5
5
|
import type { IndexesWithinAncestors } from "./instance-utils";
|
|
6
6
|
import type { ImageLoader } from "@webstudio-is/image";
|
|
7
7
|
export type Params = {
|
|
@@ -32,9 +32,14 @@ export type Params = {
|
|
|
32
32
|
};
|
|
33
33
|
export declare const ReactSdkContext: import("react").Context<Params & {
|
|
34
34
|
imageLoader: ImageLoader;
|
|
35
|
+
/**
|
|
36
|
+
* List of pages paths for link component
|
|
37
|
+
* to navigate without reloading on published sites
|
|
38
|
+
* always empty for builder which handle anchor clicks globally
|
|
39
|
+
*/
|
|
40
|
+
pagesPaths: Set<Page["path"]>;
|
|
35
41
|
propsByInstanceIdStore: ReadableAtom<PropsByInstanceId>;
|
|
36
42
|
assetsStore: ReadableAtom<Assets>;
|
|
37
|
-
pagesStore: ReadableAtom<Pages>;
|
|
38
43
|
dataSourcesLogicStore: ReadableAtom<Map<string, unknown>>;
|
|
39
44
|
indexesWithinAncestors: IndexesWithinAncestors;
|
|
40
45
|
}>;
|
package/lib/types/generator.d.ts
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { WsComponentMeta } from "./components/component-meta";
|
|
3
|
-
import { type IndexesWithinAncestors } from "./instance-utils";
|
|
1
|
+
import type { Pages, Props } from "@webstudio-is/sdk";
|
|
4
2
|
type PageData = {
|
|
5
|
-
|
|
6
|
-
metas: Map<Instance["component"], WsComponentMeta>;
|
|
7
|
-
instances: Instances;
|
|
3
|
+
pages: Pages;
|
|
8
4
|
props: Props;
|
|
9
|
-
dataSources: DataSources;
|
|
10
|
-
};
|
|
11
|
-
export type GeneratedUtils = {
|
|
12
|
-
indexesWithinAncestors: IndexesWithinAncestors;
|
|
13
|
-
getDataSourcesLogic: (getVariable: (id: string) => unknown, setVariable: (id: string, value: unknown) => void) => Map<string, unknown>;
|
|
14
5
|
};
|
|
15
6
|
/**
|
|
16
7
|
* Generates data based utilities at build time
|
|
17
|
-
* Requires this import statement in scope
|
|
18
|
-
* import * as sdk from "@webstudio-is/react-sdk";
|
|
19
8
|
*/
|
|
20
9
|
export declare const generateUtilsExport: (siteData: PageData) => string;
|
|
21
10
|
export {};
|
package/lib/types/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export * from "./components/components-utils";
|
|
|
5
5
|
export { PropMeta } from "./prop-meta";
|
|
6
6
|
export { type WsComponentPropsMeta, type ComponentState, type PresetStyle, WsComponentMeta, componentCategories, stateCategories, defaultStates, } from "./components/component-meta";
|
|
7
7
|
export * from "./embed-template";
|
|
8
|
-
export {
|
|
8
|
+
export { normalizeProps, getPropsByInstanceId, getInstanceIdFromComponentProps, getIndexWithinAncestorFromComponentProps, } from "./props";
|
|
9
9
|
export { type Params, ReactSdkContext } from "./context";
|
|
10
10
|
export { validateExpression, computeExpressionsDependencies, encodeDataSourceVariable, decodeDataSourceVariable, generateDataSources, } from "./expression";
|
|
11
11
|
export { getIndexesWithinAncestors } from "./instance-utils";
|
package/lib/types/props.d.ts
CHANGED
|
@@ -1,7 +1,59 @@
|
|
|
1
|
-
import type { Instance, Page, Prop,
|
|
1
|
+
import type { Instance, Page, Prop, Assets } from "@webstudio-is/sdk";
|
|
2
2
|
export type PropsByInstanceId = Map<Instance["id"], Prop[]>;
|
|
3
3
|
export type Pages = Map<Page["id"], Page>;
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const normalizeProps: ({ props, assetBaseUrl, assets, pages, }: {
|
|
5
|
+
props: Prop[];
|
|
6
|
+
assetBaseUrl: string;
|
|
7
|
+
assets: Map<string, {
|
|
8
|
+
type: "font";
|
|
9
|
+
name: string;
|
|
10
|
+
format: "ttf" | "woff" | "woff2" | "otf";
|
|
11
|
+
meta: ({
|
|
12
|
+
family: string;
|
|
13
|
+
style: "normal" | "italic" | "oblique";
|
|
14
|
+
weight: number;
|
|
15
|
+
} | {
|
|
16
|
+
family: string;
|
|
17
|
+
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
18
|
+
name: string;
|
|
19
|
+
min: number;
|
|
20
|
+
default: number;
|
|
21
|
+
max: number;
|
|
22
|
+
}>>;
|
|
23
|
+
}) & ({
|
|
24
|
+
family: string;
|
|
25
|
+
style: "normal" | "italic" | "oblique";
|
|
26
|
+
weight: number;
|
|
27
|
+
} | {
|
|
28
|
+
family: string;
|
|
29
|
+
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
30
|
+
name: string;
|
|
31
|
+
min: number;
|
|
32
|
+
default: number;
|
|
33
|
+
max: number;
|
|
34
|
+
}>>;
|
|
35
|
+
} | undefined);
|
|
36
|
+
id: string;
|
|
37
|
+
projectId: string;
|
|
38
|
+
size: number;
|
|
39
|
+
description: string | null;
|
|
40
|
+
createdAt: string;
|
|
41
|
+
} | {
|
|
42
|
+
type: "image";
|
|
43
|
+
name: string;
|
|
44
|
+
format: string;
|
|
45
|
+
meta: {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
};
|
|
49
|
+
id: string;
|
|
50
|
+
projectId: string;
|
|
51
|
+
size: number;
|
|
52
|
+
description: string | null;
|
|
53
|
+
createdAt: string;
|
|
54
|
+
}>;
|
|
55
|
+
pages: Pages;
|
|
56
|
+
}) => ({
|
|
5
57
|
value: number;
|
|
6
58
|
type: "number";
|
|
7
59
|
name: string;
|
|
@@ -67,130 +119,73 @@ export declare const getPropsByInstanceId: (props: Map<string, {
|
|
|
67
119
|
id: string;
|
|
68
120
|
instanceId: string;
|
|
69
121
|
required?: boolean | undefined;
|
|
70
|
-
}
|
|
71
|
-
export declare const
|
|
72
|
-
|
|
73
|
-
type: "
|
|
74
|
-
name: string;
|
|
75
|
-
format: "ttf" | "woff" | "woff2" | "otf";
|
|
76
|
-
meta: ({
|
|
77
|
-
family: string;
|
|
78
|
-
style: "normal" | "italic" | "oblique";
|
|
79
|
-
weight: number;
|
|
80
|
-
} | {
|
|
81
|
-
family: string;
|
|
82
|
-
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
83
|
-
name: string;
|
|
84
|
-
min: number;
|
|
85
|
-
default: number;
|
|
86
|
-
max: number;
|
|
87
|
-
}>>;
|
|
88
|
-
}) & ({
|
|
89
|
-
family: string;
|
|
90
|
-
style: "normal" | "italic" | "oblique";
|
|
91
|
-
weight: number;
|
|
92
|
-
} | {
|
|
93
|
-
family: string;
|
|
94
|
-
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
95
|
-
name: string;
|
|
96
|
-
min: number;
|
|
97
|
-
default: number;
|
|
98
|
-
max: number;
|
|
99
|
-
}>>;
|
|
100
|
-
} | undefined);
|
|
122
|
+
})[];
|
|
123
|
+
export declare const getPropsByInstanceId: (props: Map<string, {
|
|
124
|
+
value: number;
|
|
125
|
+
type: "number";
|
|
126
|
+
name: string;
|
|
101
127
|
id: string;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
description: string | null;
|
|
105
|
-
createdAt: string;
|
|
128
|
+
instanceId: string;
|
|
129
|
+
required?: boolean | undefined;
|
|
106
130
|
} | {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
export declare const resolveUrlProp: (instanceId: Instance["id"], name: string, { props, pages, assets, }: {
|
|
121
|
-
props: PropsByInstanceId;
|
|
122
|
-
pages: Pages;
|
|
123
|
-
assets: Map<string, {
|
|
124
|
-
type: "font";
|
|
125
|
-
name: string;
|
|
126
|
-
format: "ttf" | "woff" | "woff2" | "otf";
|
|
127
|
-
meta: ({
|
|
128
|
-
family: string;
|
|
129
|
-
style: "normal" | "italic" | "oblique";
|
|
130
|
-
weight: number;
|
|
131
|
-
} | {
|
|
132
|
-
family: string;
|
|
133
|
-
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
134
|
-
name: string;
|
|
135
|
-
min: number;
|
|
136
|
-
default: number;
|
|
137
|
-
max: number;
|
|
138
|
-
}>>;
|
|
139
|
-
}) & ({
|
|
140
|
-
family: string;
|
|
141
|
-
style: "normal" | "italic" | "oblique";
|
|
142
|
-
weight: number;
|
|
143
|
-
} | {
|
|
144
|
-
family: string;
|
|
145
|
-
variationAxes: Partial<Record<"wght" | "wdth" | "slnt" | "opsz" | "ital" | "GRAD" | "XTRA" | "XOPQ" | "YOPQ" | "YTLC" | "YTUC" | "YTAS" | "YTDE" | "YTFI", {
|
|
146
|
-
name: string;
|
|
147
|
-
min: number;
|
|
148
|
-
default: number;
|
|
149
|
-
max: number;
|
|
150
|
-
}>>;
|
|
151
|
-
} | undefined);
|
|
152
|
-
id: string;
|
|
153
|
-
projectId: string;
|
|
154
|
-
size: number;
|
|
155
|
-
description: string | null;
|
|
156
|
-
createdAt: string;
|
|
157
|
-
} | {
|
|
158
|
-
type: "image";
|
|
159
|
-
name: string;
|
|
160
|
-
format: string;
|
|
161
|
-
meta: {
|
|
162
|
-
width: number;
|
|
163
|
-
height: number;
|
|
164
|
-
};
|
|
165
|
-
id: string;
|
|
166
|
-
projectId: string;
|
|
167
|
-
size: number;
|
|
168
|
-
description: string | null;
|
|
169
|
-
createdAt: string;
|
|
170
|
-
}>;
|
|
171
|
-
}) => {
|
|
172
|
-
type: "page";
|
|
173
|
-
page: Page;
|
|
174
|
-
instanceId?: string | undefined;
|
|
175
|
-
hash?: string | undefined;
|
|
131
|
+
value: string;
|
|
132
|
+
type: "string";
|
|
133
|
+
name: string;
|
|
134
|
+
id: string;
|
|
135
|
+
instanceId: string;
|
|
136
|
+
required?: boolean | undefined;
|
|
137
|
+
} | {
|
|
138
|
+
value: boolean;
|
|
139
|
+
type: "boolean";
|
|
140
|
+
name: string;
|
|
141
|
+
id: string;
|
|
142
|
+
instanceId: string;
|
|
143
|
+
required?: boolean | undefined;
|
|
176
144
|
} | {
|
|
145
|
+
value: string;
|
|
177
146
|
type: "asset";
|
|
178
|
-
|
|
147
|
+
name: string;
|
|
148
|
+
id: string;
|
|
149
|
+
instanceId: string;
|
|
150
|
+
required?: boolean | undefined;
|
|
179
151
|
} | {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
152
|
+
value: (string | {
|
|
153
|
+
instanceId: string;
|
|
154
|
+
pageId: string;
|
|
155
|
+
}) & (string | {
|
|
156
|
+
instanceId: string;
|
|
157
|
+
pageId: string;
|
|
158
|
+
} | undefined);
|
|
184
159
|
type: "page";
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
160
|
+
name: string;
|
|
161
|
+
id: string;
|
|
162
|
+
instanceId: string;
|
|
163
|
+
required?: boolean | undefined;
|
|
188
164
|
} | {
|
|
189
|
-
|
|
190
|
-
|
|
165
|
+
value: string[];
|
|
166
|
+
type: "string[]";
|
|
167
|
+
name: string;
|
|
168
|
+
id: string;
|
|
169
|
+
instanceId: string;
|
|
170
|
+
required?: boolean | undefined;
|
|
191
171
|
} | {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
172
|
+
value: string;
|
|
173
|
+
type: "dataSource";
|
|
174
|
+
name: string;
|
|
175
|
+
id: string;
|
|
176
|
+
instanceId: string;
|
|
177
|
+
required?: boolean | undefined;
|
|
178
|
+
} | {
|
|
179
|
+
value: {
|
|
180
|
+
code: string;
|
|
181
|
+
type: "execute";
|
|
182
|
+
args: string[];
|
|
183
|
+
}[];
|
|
184
|
+
type: "action";
|
|
185
|
+
name: string;
|
|
186
|
+
id: string;
|
|
187
|
+
instanceId: string;
|
|
188
|
+
required?: boolean | undefined;
|
|
189
|
+
}>) => PropsByInstanceId;
|
|
195
190
|
export declare const getInstanceIdFromComponentProps: (props: Record<string, unknown>) => string;
|
|
196
191
|
export declare const getIndexWithinAncestorFromComponentProps: (props: Record<string, unknown>) => string | undefined;
|
|
@@ -3,11 +3,11 @@ import type { ReadableAtom } from "nanostores";
|
|
|
3
3
|
import type { Instance, Instances, Assets } from "@webstudio-is/sdk";
|
|
4
4
|
import type { Components } from "../components/components-utils";
|
|
5
5
|
import { type Params } from "../context";
|
|
6
|
-
import type {
|
|
6
|
+
import type { PropsByInstanceId } from "../props";
|
|
7
7
|
import type { WebstudioComponentProps } from "./webstudio-component";
|
|
8
8
|
import type { IndexesWithinAncestors } from "../instance-utils";
|
|
9
9
|
import type { ImageLoader } from "@webstudio-is/image";
|
|
10
|
-
export declare const createElementsTree: ({ renderer, assetBaseUrl, imageBaseUrl, imageLoader, instances, rootInstanceId, propsByInstanceIdStore, assetsStore,
|
|
10
|
+
export declare const createElementsTree: ({ renderer, assetBaseUrl, imageBaseUrl, imageLoader, instances, rootInstanceId, propsByInstanceIdStore, assetsStore, dataSourcesLogicStore, indexesWithinAncestors, Component, components, scripts, }: Params & {
|
|
11
11
|
instances: Map<string, {
|
|
12
12
|
type: "instance";
|
|
13
13
|
id: string;
|
|
@@ -25,7 +25,6 @@ export declare const createElementsTree: ({ renderer, assetBaseUrl, imageBaseUrl
|
|
|
25
25
|
rootInstanceId: Instance["id"];
|
|
26
26
|
propsByInstanceIdStore: ReadableAtom<PropsByInstanceId>;
|
|
27
27
|
assetsStore: ReadableAtom<Assets>;
|
|
28
|
-
pagesStore: ReadableAtom<Pages>;
|
|
29
28
|
dataSourcesLogicStore: ReadableAtom<Map<string, unknown>>;
|
|
30
29
|
indexesWithinAncestors: IndexesWithinAncestors;
|
|
31
30
|
Component: ForwardRefExoticComponent<WebstudioComponentProps & RefAttributes<HTMLElement>>;
|
|
@@ -8,18 +8,9 @@ export type WebstudioComponentProps = {
|
|
|
8
8
|
children: Array<JSX.Element | string>;
|
|
9
9
|
components: Components;
|
|
10
10
|
};
|
|
11
|
-
export declare const WebstudioComponent: import("react").ForwardRefExoticComponent<WebstudioComponentProps & import("react").RefAttributes<HTMLElement>>;
|
|
12
11
|
export declare const idAttribute: "data-ws-id";
|
|
13
12
|
export declare const selectorIdAttribute: "data-ws-selector";
|
|
14
13
|
export declare const componentAttribute: "data-ws-component";
|
|
15
14
|
export declare const showAttribute: "data-ws-show";
|
|
16
15
|
export declare const indexAttribute: "data-ws-index";
|
|
17
16
|
export declare const collapsedAttribute: "data-ws-collapsed";
|
|
18
|
-
export type WebstudioAttributes = {
|
|
19
|
-
[idAttribute]?: string | undefined;
|
|
20
|
-
[selectorIdAttribute]?: string | undefined;
|
|
21
|
-
[componentAttribute]?: string | undefined;
|
|
22
|
-
[showAttribute]?: string | undefined;
|
|
23
|
-
[collapsedAttribute]?: string | undefined;
|
|
24
|
-
};
|
|
25
|
-
export declare const splitPropsWithWebstudioAttributes: <P extends WebstudioAttributes>({ [idAttribute]: idAttributeValue, [componentAttribute]: componentAttributeValue, [showAttribute]: showAttributeValue, [collapsedAttribute]: collapsedAttributeValue, [selectorIdAttribute]: parentIdAttributeValue, ...props }: P) => [WebstudioAttributes, Omit<P, keyof WebstudioAttributes>];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webstudio-is/react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.101.0",
|
|
4
4
|
"description": "Webstudio JavaScript / TypeScript API",
|
|
5
5
|
"author": "Webstudio <github@webstudio.is>",
|
|
6
6
|
"homepage": "https://webstudio.is",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"type-fest": "^4.3.1",
|
|
18
18
|
"typescript": "5.2.2",
|
|
19
19
|
"zod": "^3.21.4",
|
|
20
|
-
"@webstudio-is/jest-config": "1.0.
|
|
21
|
-
"@webstudio-is/tsconfig": "1.0.
|
|
20
|
+
"@webstudio-is/jest-config": "1.0.7",
|
|
21
|
+
"@webstudio-is/tsconfig": "1.0.7"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"@remix-run/react": "^1.19.1",
|
|
@@ -35,20 +35,20 @@
|
|
|
35
35
|
"nanostores": "^0.9.3",
|
|
36
36
|
"no-case": "^3.0.4",
|
|
37
37
|
"title-case": "^3.0.3",
|
|
38
|
-
"@webstudio-is/css-engine": "0.
|
|
39
|
-
"@webstudio-is/fonts": "0.
|
|
40
|
-
"@webstudio-is/image": "0.
|
|
41
|
-
"@webstudio-is/sdk": "0.
|
|
38
|
+
"@webstudio-is/css-engine": "0.101.0",
|
|
39
|
+
"@webstudio-is/fonts": "0.101.0",
|
|
40
|
+
"@webstudio-is/image": "0.101.0",
|
|
41
|
+
"@webstudio-is/sdk": "0.101.0"
|
|
42
42
|
},
|
|
43
43
|
"exports": {
|
|
44
44
|
".": {
|
|
45
|
-
"
|
|
45
|
+
"webstudio": "./src/index.ts",
|
|
46
46
|
"types": "./lib/types/index.d.ts",
|
|
47
47
|
"import": "./lib/index.js",
|
|
48
48
|
"require": "./lib/index.js"
|
|
49
49
|
},
|
|
50
50
|
"./css-normalize": {
|
|
51
|
-
"
|
|
51
|
+
"webstudio": "./src/css/normalize.ts",
|
|
52
52
|
"types": "./lib/types/css/normalize.d.ts",
|
|
53
53
|
"import": "./lib/css/normalize.js",
|
|
54
54
|
"require": "./lib/css/normalize.js"
|
package/lib/types/tree/root.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type ForwardRefExoticComponent, type RefAttributes, type ReactNode } from "react";
|
|
2
|
-
import type { Page, Asset, DataSource, Instance, Prop } from "@webstudio-is/sdk";
|
|
3
|
-
import { type WebstudioComponentProps } from "./webstudio-component";
|
|
4
|
-
import type { Components } from "../components/components-utils";
|
|
5
|
-
import type { Params } from "../context";
|
|
6
|
-
import type { GeneratedUtils } from "../generator";
|
|
7
|
-
import type { ImageLoader } from "@webstudio-is/image";
|
|
8
|
-
export type RootPropsData = {
|
|
9
|
-
params?: Params;
|
|
10
|
-
page: Page;
|
|
11
|
-
pages: Array<Page>;
|
|
12
|
-
assets: Array<Asset>;
|
|
13
|
-
build: {
|
|
14
|
-
instances: [Instance["id"], Instance][];
|
|
15
|
-
dataSources: [DataSource["id"], DataSource][];
|
|
16
|
-
props: [Prop["id"], Prop][];
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
type RootProps = {
|
|
20
|
-
data: RootPropsData;
|
|
21
|
-
utils: GeneratedUtils;
|
|
22
|
-
Component?: ForwardRefExoticComponent<WebstudioComponentProps & RefAttributes<HTMLElement>>;
|
|
23
|
-
components: Components;
|
|
24
|
-
scripts?: ReactNode;
|
|
25
|
-
imageLoader: ImageLoader;
|
|
26
|
-
};
|
|
27
|
-
export declare const InstanceRoot: ({ data, utils, Component, components, scripts, imageLoader, }: RootProps) => JSX.Element | null;
|
|
28
|
-
export {};
|