@webstudio-is/react-sdk 0.191.4 → 0.192.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/runtime.js ADDED
@@ -0,0 +1,61 @@
1
+ // src/context.tsx
2
+ import { createContext, useContext, useMemo } from "react";
3
+ import {
4
+ createJsonStringifyProxy,
5
+ isPlainObject
6
+ } from "@webstudio-is/sdk/runtime";
7
+ var ReactSdkContext = createContext({
8
+ assetBaseUrl: "/",
9
+ imageBaseUrl: "/",
10
+ imageLoader: ({ src }) => src,
11
+ resources: {}
12
+ });
13
+ var useResource = (name) => {
14
+ const { resources } = useContext(ReactSdkContext);
15
+ const resource = resources[name];
16
+ const resourceMemozied = useMemo(
17
+ () => isPlainObject(resource) ? createJsonStringifyProxy(resource) : resource,
18
+ [resource]
19
+ );
20
+ return resourceMemozied;
21
+ };
22
+
23
+ // src/hook.ts
24
+ var getClosestInstance = (instancePath, currentInstance, closestComponent) => {
25
+ let matched = false;
26
+ for (const instance of instancePath) {
27
+ if (currentInstance === instance) {
28
+ matched = true;
29
+ }
30
+ if (matched && instance.component === closestComponent) {
31
+ return instance;
32
+ }
33
+ }
34
+ };
35
+
36
+ // src/variable-state.tsx
37
+ import { useState, useMemo as useMemo2 } from "react";
38
+ import {
39
+ createJsonStringifyProxy as createJsonStringifyProxy2,
40
+ isPlainObject as isPlainObject2
41
+ } from "@webstudio-is/sdk/runtime";
42
+ var useVariableState = (initialState) => {
43
+ const [state, setState] = useState(initialState);
44
+ const value = useMemo2(
45
+ () => isPlainObject2(state) ? createJsonStringifyProxy2(state) : state,
46
+ [state]
47
+ );
48
+ return [value, setState];
49
+ };
50
+
51
+ // src/runtime.ts
52
+ var getIndexWithinAncestorFromComponentProps = (props) => {
53
+ return props["data-ws-index"];
54
+ };
55
+ export {
56
+ ReactSdkContext,
57
+ getClosestInstance,
58
+ getIndexWithinAncestorFromComponentProps,
59
+ useResource,
60
+ useVariableState
61
+ };
@@ -0,0 +1,37 @@
1
+ import type { Instances, Instance, Props, Scope, DataSources, Prop } from "@webstudio-is/sdk";
2
+ import type { IndexesWithinAncestors } from "./instance-utils";
3
+ export declare const generateJsxElement: ({ context, scope, instance, props, dataSources, usedDataSources, indexesWithinAncestors, children, classesMap, }: {
4
+ context?: "expression" | "jsx";
5
+ scope: Scope;
6
+ instance: Instance;
7
+ props: Props;
8
+ dataSources: DataSources;
9
+ usedDataSources: DataSources;
10
+ indexesWithinAncestors: IndexesWithinAncestors;
11
+ children: string;
12
+ classesMap?: Map<string, Array<string>>;
13
+ }) => string;
14
+ export declare const generateJsxChildren: ({ scope, children, instances, props, dataSources, usedDataSources, indexesWithinAncestors, classesMap, excludePlaceholders, }: {
15
+ scope: Scope;
16
+ children: Instance["children"];
17
+ instances: Instances;
18
+ props: Props;
19
+ dataSources: DataSources;
20
+ usedDataSources: DataSources;
21
+ indexesWithinAncestors: IndexesWithinAncestors;
22
+ classesMap?: Map<string, Array<string>>;
23
+ excludePlaceholders?: boolean;
24
+ }) => string;
25
+ export declare const generateWebstudioComponent: ({ scope, name, rootInstanceId, parameters, instances, props, dataSources, indexesWithinAncestors, classesMap, }: {
26
+ scope: Scope;
27
+ name: string;
28
+ rootInstanceId: Instance["id"];
29
+ parameters: Extract<Prop, {
30
+ type: "parameter";
31
+ }>[];
32
+ instances: Instances;
33
+ props: Props;
34
+ dataSources: DataSources;
35
+ indexesWithinAncestors: IndexesWithinAncestors;
36
+ classesMap: Map<string, Array<string>>;
37
+ }) => string;
@@ -0,0 +1 @@
1
+ export {};