@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 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 generatePageComponent = ({
1569
+ var generateWebstudioComponent = ({
1568
1570
  scope,
1569
- page,
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(page.rootInstanceId);
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 += `type Params = Record<string, string | undefined>
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, Page } from "@webstudio-is/sdk";
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 generatePageComponent: ({ scope, page, instances, props, dataSources, indexesWithinAncestors, classesMap, }: {
260
+ export declare const generateWebstudioComponent: ({ scope, name, rootInstanceId, parameters, instances, props, dataSources, indexesWithinAncestors, classesMap, }: {
261
261
  scope: Scope;
262
- page: Page;
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;
@@ -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 { generatePageComponent, generateJsxElement, generateJsxChildren, } from "./component-generator";
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.128.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.128.0",
37
- "@webstudio-is/css-engine": "0.128.0",
38
- "@webstudio-is/icons": "^0.128.0",
39
- "@webstudio-is/image": "0.128.0",
40
- "@webstudio-is/sdk": "0.128.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
  ".": {