@webstudio-is/react-sdk 0.128.0 → 0.129.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 +26 -14
- package/lib/types/component-generator.d.ts +7 -3
- package/lib/types/index.d.ts +1 -1
- package/package.json +6 -6
package/lib/index.js
CHANGED
|
@@ -31,6 +31,8 @@ var generateRemixRoute = (pathname) => {
|
|
|
31
31
|
var generateRemixParams = (pathname) => {
|
|
32
32
|
const name = pathname.match(/:(?<name>\w+)\*$/)?.groups?.name;
|
|
33
33
|
let generated = "";
|
|
34
|
+
generated += `type Params = Record<string, string | undefined>;
|
|
35
|
+
`;
|
|
34
36
|
generated += `export const getRemixParams = ({ ...params }: Params): Params => {
|
|
35
37
|
`;
|
|
36
38
|
if (name) {
|
|
@@ -1564,19 +1566,38 @@ var generateJsxChildren = ({
|
|
|
1564
1566
|
}
|
|
1565
1567
|
return generatedChildren;
|
|
1566
1568
|
};
|
|
1567
|
-
var
|
|
1569
|
+
var generateWebstudioComponent = ({
|
|
1568
1570
|
scope,
|
|
1569
|
-
|
|
1571
|
+
name,
|
|
1572
|
+
rootInstanceId,
|
|
1573
|
+
parameters,
|
|
1570
1574
|
instances,
|
|
1571
1575
|
props,
|
|
1572
1576
|
dataSources,
|
|
1573
1577
|
indexesWithinAncestors,
|
|
1574
1578
|
classesMap
|
|
1575
1579
|
}) => {
|
|
1576
|
-
const instance = instances.get(
|
|
1580
|
+
const instance = instances.get(rootInstanceId);
|
|
1577
1581
|
if (instance === void 0) {
|
|
1578
1582
|
return "";
|
|
1579
1583
|
}
|
|
1584
|
+
let generatedProps = "";
|
|
1585
|
+
if (parameters.length > 0) {
|
|
1586
|
+
let generatedPropsValue = "{ ";
|
|
1587
|
+
let generatedPropsType = "{ ";
|
|
1588
|
+
for (const parameter of parameters) {
|
|
1589
|
+
const dataSource = dataSources.get(parameter.value);
|
|
1590
|
+
if (dataSource === void 0) {
|
|
1591
|
+
continue;
|
|
1592
|
+
}
|
|
1593
|
+
const valueName = scope.getName(dataSource.id, dataSource.name);
|
|
1594
|
+
generatedPropsValue += `${parameter.name}: ${valueName}, `;
|
|
1595
|
+
generatedPropsType += `${parameter.name}: any; `;
|
|
1596
|
+
}
|
|
1597
|
+
generatedPropsValue += `}`;
|
|
1598
|
+
generatedPropsType += `}`;
|
|
1599
|
+
generatedProps = `${generatedPropsValue}: ${generatedPropsType}`;
|
|
1600
|
+
}
|
|
1580
1601
|
let generatedDataSources = "";
|
|
1581
1602
|
for (const dataSource of dataSources.values()) {
|
|
1582
1603
|
if (dataSource.type === "variable") {
|
|
@@ -1590,13 +1611,6 @@ var generatePageComponent = ({
|
|
|
1590
1611
|
generatedDataSources += `let [${valueName}, ${setterName}] = useState<any>(${initialValueString})
|
|
1591
1612
|
`;
|
|
1592
1613
|
}
|
|
1593
|
-
if (dataSource.type === "parameter") {
|
|
1594
|
-
if (dataSource.id === page.pathVariableId) {
|
|
1595
|
-
const valueName = scope.getName(dataSource.id, dataSource.name);
|
|
1596
|
-
generatedDataSources += `let ${valueName} = _props.params
|
|
1597
|
-
`;
|
|
1598
|
-
}
|
|
1599
|
-
}
|
|
1600
1614
|
if (dataSource.type === "resource") {
|
|
1601
1615
|
const valueName = scope.getName(dataSource.id, dataSource.name);
|
|
1602
1616
|
const resourceName = scope.getName(
|
|
@@ -1626,9 +1640,7 @@ var generatePageComponent = ({
|
|
|
1626
1640
|
})
|
|
1627
1641
|
});
|
|
1628
1642
|
let generatedComponent = "";
|
|
1629
|
-
generatedComponent += `
|
|
1630
|
-
`;
|
|
1631
|
-
generatedComponent += `const Page = (_props: { params: Params }) => {
|
|
1643
|
+
generatedComponent += `const ${name} = (${generatedProps}) => {
|
|
1632
1644
|
`;
|
|
1633
1645
|
generatedComponent += `${generatedDataSources}`;
|
|
1634
1646
|
generatedComponent += `return ${generatedJsx}`;
|
|
@@ -1768,11 +1780,11 @@ export {
|
|
|
1768
1780
|
generateDataFromEmbedTemplate,
|
|
1769
1781
|
generateJsxChildren,
|
|
1770
1782
|
generateJsxElement,
|
|
1771
|
-
generatePageComponent,
|
|
1772
1783
|
generateRemixParams,
|
|
1773
1784
|
generateRemixRoute,
|
|
1774
1785
|
generateResourcesLoader,
|
|
1775
1786
|
generateUtilsExport,
|
|
1787
|
+
generateWebstudioComponent,
|
|
1776
1788
|
getClosestInstance,
|
|
1777
1789
|
getIndexWithinAncestorFromComponentProps,
|
|
1778
1790
|
getIndexesWithinAncestors,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Instances, Instance, Props, Scope, DataSources,
|
|
1
|
+
import type { Instances, Instance, Props, Scope, DataSources, Prop } from "@webstudio-is/sdk";
|
|
2
2
|
import type { IndexesWithinAncestors } from "./instance-utils";
|
|
3
3
|
export declare const generateJsxElement: ({ scope, instance, props, dataSources, indexesWithinAncestors, children, classesMap, }: {
|
|
4
4
|
scope: Scope;
|
|
@@ -257,9 +257,13 @@ export declare const generateJsxChildren: ({ scope, children, instances, props,
|
|
|
257
257
|
indexesWithinAncestors: IndexesWithinAncestors;
|
|
258
258
|
classesMap?: Map<string, string[]> | undefined;
|
|
259
259
|
}) => string;
|
|
260
|
-
export declare const
|
|
260
|
+
export declare const generateWebstudioComponent: ({ scope, name, rootInstanceId, parameters, instances, props, dataSources, indexesWithinAncestors, classesMap, }: {
|
|
261
261
|
scope: Scope;
|
|
262
|
-
|
|
262
|
+
name: string;
|
|
263
|
+
rootInstanceId: Instance["id"];
|
|
264
|
+
parameters: Extract<Prop, {
|
|
265
|
+
type: "parameter";
|
|
266
|
+
}>[];
|
|
263
267
|
instances: Map<string, {
|
|
264
268
|
type: "instance";
|
|
265
269
|
id: string;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export { validateExpression, encodeDataSourceVariable, decodeDataSourceVariable,
|
|
|
13
13
|
export { getIndexesWithinAncestors } from "./instance-utils";
|
|
14
14
|
export * from "./hook";
|
|
15
15
|
export { generateUtilsExport } from "./generator";
|
|
16
|
-
export {
|
|
16
|
+
export { generateWebstudioComponent, generateJsxElement, generateJsxChildren, } from "./component-generator";
|
|
17
17
|
export { generateResourcesLoader } from "./resources-generator";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webstudio-is/react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.129.0",
|
|
4
4
|
"description": "Webstudio JavaScript / TypeScript API",
|
|
5
5
|
"author": "Webstudio <github@webstudio.is>",
|
|
6
6
|
"homepage": "https://webstudio.is",
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"jsep": "^1.3.8",
|
|
34
34
|
"nanoid": "^5.0.1",
|
|
35
35
|
"title-case": "^4.1.0",
|
|
36
|
-
"@webstudio-is/fonts": "0.
|
|
37
|
-
"@webstudio-is/css-engine": "0.
|
|
38
|
-
"@webstudio-is/icons": "^0.
|
|
39
|
-
"@webstudio-is/image": "0.
|
|
40
|
-
"@webstudio-is/sdk": "0.
|
|
36
|
+
"@webstudio-is/fonts": "0.129.0",
|
|
37
|
+
"@webstudio-is/css-engine": "0.129.0",
|
|
38
|
+
"@webstudio-is/icons": "^0.129.0",
|
|
39
|
+
"@webstudio-is/image": "0.129.0",
|
|
40
|
+
"@webstudio-is/sdk": "0.129.0"
|
|
41
41
|
},
|
|
42
42
|
"exports": {
|
|
43
43
|
".": {
|