@webstudio-is/react-sdk 0.126.0 → 0.128.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
@@ -802,82 +802,6 @@ var generateExpression = ({
802
802
  }
803
803
  });
804
804
  };
805
- var generateDataSources = ({
806
- scope,
807
- typed = false,
808
- dataSources,
809
- props
810
- }) => {
811
- const variables = /* @__PURE__ */ new Map();
812
- let body = "";
813
- const output = /* @__PURE__ */ new Map();
814
- for (const dataSource of dataSources.values()) {
815
- if (dataSource.type === "variable") {
816
- const valueName = scope.getName(dataSource.id, dataSource.name);
817
- const setterName = scope.getName(
818
- `set$${dataSource.id}`,
819
- `set$${dataSource.name}`
820
- );
821
- const initialValue = dataSource.value.value;
822
- output.set(dataSource.id, valueName);
823
- variables.set(dataSource.id, { valueName, setterName, initialValue });
824
- }
825
- }
826
- for (const prop of props.values()) {
827
- if (prop.type === "action") {
828
- const name = scope.getName(prop.id, prop.name);
829
- output.set(prop.id, name);
830
- const setters = /* @__PURE__ */ new Set();
831
- let args = [];
832
- let newCode = "";
833
- for (const value of prop.value) {
834
- args = value.args;
835
- newCode += validateExpression(value.code, {
836
- optional: true,
837
- effectful: true,
838
- transformIdentifier: (identifier, assignee) => {
839
- if (args?.includes(identifier)) {
840
- return identifier;
841
- }
842
- const depId = decodeDataSourceVariable(identifier);
843
- const dep = depId ? dataSources.get(depId) : void 0;
844
- if (dep) {
845
- const name2 = scope.getName(dep.id, dep.name);
846
- if (assignee) {
847
- setters.add(dep.id);
848
- }
849
- return name2;
850
- }
851
- console.error(`Unknown dependency "${identifier}"`);
852
- return identifier;
853
- }
854
- });
855
- newCode += `
856
- `;
857
- }
858
- if (typed) {
859
- args = args.map((arg) => `${arg}: any`);
860
- }
861
- body += `let ${name} = (${args.join(", ")}) => {
862
- `;
863
- body += newCode;
864
- for (const dataSourceId of setters.values()) {
865
- const variable = variables.get(dataSourceId);
866
- if (variable) {
867
- body += `${variable.setterName}(${variable.valueName})
868
- `;
869
- }
870
- }
871
- body += `}
872
- `;
873
- }
874
- }
875
- return {
876
- variables,
877
- body,
878
- output
879
- };
880
- };
881
805
 
882
806
  // src/embed-template.ts
883
807
  var EmbedTemplateText = z2.object({
@@ -1399,6 +1323,58 @@ var generateUtilsExport = (siteData) => {
1399
1323
 
1400
1324
  // src/component-generator.ts
1401
1325
  import { parseComponentName } from "@webstudio-is/sdk";
1326
+ var generateAction = ({
1327
+ scope,
1328
+ prop,
1329
+ dataSources
1330
+ }) => {
1331
+ const setters = /* @__PURE__ */ new Set();
1332
+ let args = [];
1333
+ let assignersCode = "";
1334
+ for (const value of prop.value) {
1335
+ args = value.args;
1336
+ assignersCode += validateExpression(value.code, {
1337
+ optional: true,
1338
+ effectful: true,
1339
+ transformIdentifier: (identifier, assignee) => {
1340
+ if (args?.includes(identifier)) {
1341
+ return identifier;
1342
+ }
1343
+ const depId = decodeDataSourceVariable(identifier);
1344
+ const dep = depId ? dataSources.get(depId) : void 0;
1345
+ if (dep) {
1346
+ if (assignee) {
1347
+ setters.add(dep);
1348
+ }
1349
+ const valueName = scope.getName(dep.id, dep.name);
1350
+ return valueName;
1351
+ }
1352
+ console.error(`Unknown dependency "${identifier}"`);
1353
+ return identifier;
1354
+ }
1355
+ });
1356
+ assignersCode += `
1357
+ `;
1358
+ }
1359
+ let settersCode = "";
1360
+ for (const dataSource of setters) {
1361
+ const valueName = scope.getName(dataSource.id, dataSource.name);
1362
+ const setterName = scope.getName(
1363
+ `set$${dataSource.id}`,
1364
+ `set$${dataSource.name}`
1365
+ );
1366
+ settersCode += `${setterName}(${valueName})
1367
+ `;
1368
+ }
1369
+ const argsList = args.map((arg) => `${arg}: any`).join(", ");
1370
+ let generated = "";
1371
+ generated += `(${argsList}) => {
1372
+ `;
1373
+ generated += assignersCode;
1374
+ generated += settersCode;
1375
+ generated += `}`;
1376
+ return generated;
1377
+ };
1402
1378
  var generatePropValue = ({
1403
1379
  scope,
1404
1380
  prop,
@@ -1425,7 +1401,7 @@ var generatePropValue = ({
1425
1401
  });
1426
1402
  }
1427
1403
  if (prop.type === "action") {
1428
- return scope.getName(prop.id, prop.name);
1404
+ return generateAction({ scope, prop, dataSources });
1429
1405
  }
1430
1406
  prop;
1431
1407
  };
@@ -1601,12 +1577,6 @@ var generatePageComponent = ({
1601
1577
  if (instance === void 0) {
1602
1578
  return "";
1603
1579
  }
1604
- const { body: dataSourcesBody } = generateDataSources({
1605
- typed: true,
1606
- scope,
1607
- dataSources,
1608
- props
1609
- });
1610
1580
  let generatedDataSources = "";
1611
1581
  for (const dataSource of dataSources.values()) {
1612
1582
  if (dataSource.type === "variable") {
@@ -1638,7 +1608,6 @@ var generatePageComponent = ({
1638
1608
  `;
1639
1609
  }
1640
1610
  }
1641
- generatedDataSources += dataSourcesBody;
1642
1611
  const generatedJsx = generateJsxElement({
1643
1612
  scope,
1644
1613
  instance,
@@ -1797,7 +1766,6 @@ export {
1797
1766
  encodeDataSourceVariable,
1798
1767
  generateCss,
1799
1768
  generateDataFromEmbedTemplate,
1800
- generateDataSources,
1801
1769
  generateJsxChildren,
1802
1770
  generateJsxElement,
1803
1771
  generatePageComponent,
@@ -1,4 +1,4 @@
1
- import type { DataSources, Props, Scope } from "@webstudio-is/sdk";
1
+ import type { DataSources, Scope } from "@webstudio-is/sdk";
2
2
  type TransformIdentifier = (id: string, assignee: boolean) => string;
3
3
  export declare const validateExpression: (code: string, options?: {
4
4
  /**
@@ -51,131 +51,4 @@ export declare const generateExpression: ({ expression, dataSources, scope, }: {
51
51
  }>;
52
52
  scope: Scope;
53
53
  }) => string;
54
- type VariableName = string;
55
- export declare const generateDataSources: ({ scope, typed, dataSources, props, }: {
56
- scope: Scope;
57
- typed?: boolean | undefined;
58
- dataSources: Map<string, {
59
- value: {
60
- value: number;
61
- type: "number";
62
- } | {
63
- value: string;
64
- type: "string";
65
- } | {
66
- value: boolean;
67
- type: "boolean";
68
- } | {
69
- value: string[];
70
- type: "string[]";
71
- } | {
72
- type: "json";
73
- value?: unknown;
74
- };
75
- type: "variable";
76
- name: string;
77
- id: string;
78
- scopeInstanceId?: string | undefined;
79
- } | {
80
- type: "parameter";
81
- name: string;
82
- id: string;
83
- scopeInstanceId?: string | undefined;
84
- } | {
85
- type: "resource";
86
- name: string;
87
- id: string;
88
- resourceId: string;
89
- scopeInstanceId?: string | undefined;
90
- }>;
91
- props: Map<string, {
92
- value: number;
93
- type: "number";
94
- name: string;
95
- id: string;
96
- instanceId: string;
97
- required?: boolean | undefined;
98
- } | {
99
- value: string;
100
- type: "string";
101
- name: string;
102
- id: string;
103
- instanceId: string;
104
- required?: boolean | undefined;
105
- } | {
106
- value: boolean;
107
- type: "boolean";
108
- name: string;
109
- id: string;
110
- instanceId: string;
111
- required?: boolean | undefined;
112
- } | {
113
- type: "json";
114
- name: string;
115
- id: string;
116
- instanceId: string;
117
- value?: unknown;
118
- required?: boolean | undefined;
119
- } | {
120
- value: string;
121
- type: "asset";
122
- name: string;
123
- id: string;
124
- instanceId: string;
125
- required?: boolean | undefined;
126
- } | {
127
- value: (string | {
128
- instanceId: string;
129
- pageId: string;
130
- }) & (string | {
131
- instanceId: string;
132
- pageId: string;
133
- } | undefined);
134
- type: "page";
135
- name: string;
136
- id: string;
137
- instanceId: string;
138
- required?: boolean | undefined;
139
- } | {
140
- value: string[];
141
- type: "string[]";
142
- name: string;
143
- id: string;
144
- instanceId: string;
145
- required?: boolean | undefined;
146
- } | {
147
- value: string;
148
- type: "parameter";
149
- name: string;
150
- id: string;
151
- instanceId: string;
152
- required?: boolean | undefined;
153
- } | {
154
- value: string;
155
- type: "expression";
156
- name: string;
157
- id: string;
158
- instanceId: string;
159
- required?: boolean | undefined;
160
- } | {
161
- value: {
162
- code: string;
163
- type: "execute";
164
- args: string[];
165
- }[];
166
- type: "action";
167
- name: string;
168
- id: string;
169
- instanceId: string;
170
- required?: boolean | undefined;
171
- }>;
172
- }) => {
173
- variables: Map<string, {
174
- valueName: VariableName;
175
- setterName: VariableName;
176
- initialValue: unknown;
177
- }>;
178
- body: string;
179
- output: Map<string, string>;
180
- };
181
54
  export {};
@@ -9,7 +9,7 @@ export { type WsComponentPropsMeta, type ComponentState, type PresetStyle, WsCom
9
9
  export * from "./embed-template";
10
10
  export * from "./props";
11
11
  export * from "./context";
12
- export { validateExpression, encodeDataSourceVariable, decodeDataSourceVariable, generateDataSources, } from "./expression";
12
+ export { validateExpression, encodeDataSourceVariable, decodeDataSourceVariable, } from "./expression";
13
13
  export { getIndexesWithinAncestors } from "./instance-utils";
14
14
  export * from "./hook";
15
15
  export { generateUtilsExport } from "./generator";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webstudio-is/react-sdk",
3
- "version": "0.126.0",
3
+ "version": "0.128.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.126.0",
37
- "@webstudio-is/image": "0.126.0",
38
- "@webstudio-is/css-engine": "0.126.0",
39
- "@webstudio-is/icons": "^0.126.0",
40
- "@webstudio-is/sdk": "0.126.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"
41
41
  },
42
42
  "exports": {
43
43
  ".": {