@webstudio-is/react-sdk 0.28.0 → 0.30.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/app/custom-components/index.js +12 -6
- package/lib/app/custom-components/shared/remix-link.js +14 -8
- package/lib/app/root.js +0 -2
- package/lib/cjs/app/custom-components/index.cjs +12 -6
- package/lib/cjs/app/custom-components/shared/remix-link.cjs +14 -8
- package/lib/cjs/app/root.cjs +0 -2
- package/lib/cjs/components/__generated__/body.props.json +557 -305
- package/lib/cjs/components/__generated__/bold.props.json +557 -305
- package/lib/cjs/components/__generated__/box.props.json +577 -320
- package/lib/cjs/components/__generated__/button.props.json +616 -339
- package/lib/cjs/components/__generated__/form.props.json +597 -329
- package/lib/cjs/components/__generated__/heading.props.json +566 -309
- package/lib/cjs/components/__generated__/image.props.json +638 -352
- package/lib/cjs/components/__generated__/input.props.json +725 -405
- package/lib/cjs/components/__generated__/italic.props.json +557 -305
- package/lib/cjs/components/__generated__/link.props.json +616 -343
- package/lib/cjs/components/__generated__/paragraph.props.json +557 -305
- package/lib/cjs/components/__generated__/rich-text-link.props.json +616 -343
- package/lib/cjs/components/__generated__/span.props.json +557 -305
- package/lib/cjs/components/__generated__/subscript.props.json +557 -305
- package/lib/cjs/components/__generated__/superscript.props.json +557 -305
- package/lib/cjs/components/__generated__/text-block.props.json +557 -305
- package/lib/cjs/components/body.ws.cjs +6 -3
- package/lib/cjs/components/bold.ws.cjs +7 -4
- package/lib/cjs/components/box.ws.cjs +8 -4
- package/lib/cjs/components/button.ws.cjs +8 -4
- package/lib/cjs/components/component-type.cjs +21 -56
- package/lib/cjs/components/form.ws.cjs +7 -4
- package/lib/cjs/components/heading.ws.cjs +8 -4
- package/lib/cjs/components/image.ws.cjs +11 -5
- package/lib/cjs/components/index.cjs +165 -111
- package/lib/cjs/components/input.ws.cjs +7 -4
- package/lib/cjs/components/italic.ws.cjs +7 -4
- package/lib/cjs/components/link.ws.cjs +8 -4
- package/lib/cjs/components/paragraph.ws.cjs +7 -4
- package/lib/cjs/components/rich-text-link.ws.cjs +7 -4
- package/lib/cjs/components/span.ws.cjs +7 -4
- package/lib/cjs/components/subscript.ws.cjs +7 -4
- package/lib/cjs/components/superscript.ws.cjs +7 -4
- package/lib/cjs/components/text-block.ws.cjs +7 -4
- package/lib/cjs/index.cjs +3 -2
- package/lib/cjs/tree/session-storage-polyfill.cjs +1 -1
- package/lib/components/__generated__/body.props.json +557 -305
- package/lib/components/__generated__/bold.props.json +557 -305
- package/lib/components/__generated__/box.props.json +577 -320
- package/lib/components/__generated__/button.props.json +616 -339
- package/lib/components/__generated__/form.props.json +597 -329
- package/lib/components/__generated__/heading.props.json +566 -309
- package/lib/components/__generated__/image.props.json +638 -352
- package/lib/components/__generated__/input.props.json +725 -405
- package/lib/components/__generated__/italic.props.json +557 -305
- package/lib/components/__generated__/link.props.json +616 -343
- package/lib/components/__generated__/paragraph.props.json +557 -305
- package/lib/components/__generated__/rich-text-link.props.json +616 -343
- package/lib/components/__generated__/span.props.json +557 -305
- package/lib/components/__generated__/subscript.props.json +557 -305
- package/lib/components/__generated__/superscript.props.json +557 -305
- package/lib/components/__generated__/text-block.props.json +557 -305
- package/lib/components/body.ws.js +6 -3
- package/lib/components/bold.ws.js +7 -4
- package/lib/components/box.ws.js +8 -4
- package/lib/components/button.ws.js +8 -4
- package/lib/components/component-type.js +21 -56
- package/lib/components/form.ws.js +7 -4
- package/lib/components/heading.ws.js +8 -4
- package/lib/components/image.ws.js +11 -5
- package/lib/components/index.js +117 -57
- package/lib/components/input.ws.js +7 -4
- package/lib/components/italic.ws.js +7 -4
- package/lib/components/link.ws.js +8 -4
- package/lib/components/paragraph.ws.js +7 -4
- package/lib/components/rich-text-link.ws.js +7 -4
- package/lib/components/span.ws.js +7 -4
- package/lib/components/subscript.ws.js +7 -4
- package/lib/components/superscript.ws.js +7 -4
- package/lib/components/text-block.ws.js +7 -4
- package/lib/index.js +5 -3
- package/lib/tree/session-storage-polyfill.js +1 -1
- package/package.json +8 -8
- package/src/app/custom-components/image.tsx +2 -2
- package/src/app/custom-components/index.ts +11 -5
- package/src/app/custom-components/shared/remix-link.tsx +26 -7
- package/src/app/root.tsx +0 -2
- package/src/components/__generated__/body.props.json +557 -305
- package/src/components/__generated__/bold.props.json +557 -305
- package/src/components/__generated__/box.props.json +577 -320
- package/src/components/__generated__/button.props.json +616 -339
- package/src/components/__generated__/form.props.json +597 -329
- package/src/components/__generated__/heading.props.json +566 -309
- package/src/components/__generated__/image.props.json +638 -352
- package/src/components/__generated__/input.props.json +725 -405
- package/src/components/__generated__/italic.props.json +557 -305
- package/src/components/__generated__/link.props.json +616 -343
- package/src/components/__generated__/paragraph.props.json +557 -305
- package/src/components/__generated__/rich-text-link.props.json +616 -343
- package/src/components/__generated__/span.props.json +557 -305
- package/src/components/__generated__/subscript.props.json +557 -305
- package/src/components/__generated__/superscript.props.json +557 -305
- package/src/components/__generated__/text-block.props.json +557 -305
- package/src/components/body.ws.tsx +5 -4
- package/src/components/bold.ws.tsx +5 -4
- package/src/components/box.ws.ts +6 -4
- package/src/components/button.ws.tsx +6 -4
- package/src/components/component-type.ts +23 -63
- package/src/components/form.ws.tsx +5 -4
- package/src/components/heading.ws.tsx +6 -4
- package/src/components/image.ws.tsx +9 -5
- package/src/components/index.test.ts +2 -24
- package/src/components/index.ts +155 -81
- package/src/components/input.ws.tsx +5 -4
- package/src/components/italic.ws.tsx +5 -4
- package/src/components/link.ws.tsx +6 -4
- package/src/components/paragraph.ws.tsx +5 -4
- package/src/components/rich-text-link.ws.tsx +5 -4
- package/src/components/span.ws.tsx +5 -4
- package/src/components/subscript.ws.tsx +5 -4
- package/src/components/superscript.ws.tsx +5 -4
- package/src/components/text-block.ws.tsx +5 -4
- package/src/css/breakpoints.ts +1 -1
- package/src/index.ts +6 -2
- package/src/props.ts +1 -1
- package/src/tree/create-elements-tree.tsx +3 -3
- package/src/tree/session-storage-polyfill.tsx +1 -1
|
@@ -6,7 +6,7 @@ const polyfill = function() {
|
|
|
6
6
|
sessionStorage.removeItem(key);
|
|
7
7
|
} catch (error) {
|
|
8
8
|
alert(
|
|
9
|
-
'It looks like you have disabled cookies in your browser. Webstudio
|
|
9
|
+
'It looks like you have disabled cookies in your browser. Webstudio builder may not work properly.\n\nTo enable cookies, go to "Setting" > "Privacy and security" > "Cookies and other site data", and make sure neither "Block all cookies" nor "Block third-party cookies" are selected.\n\nRead more at https://support.google.com/chrome/answer/95647'
|
|
10
10
|
);
|
|
11
11
|
const data = /* @__PURE__ */ new Map();
|
|
12
12
|
Object.defineProperty(window, "sessionStorage", {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webstudio-is/react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "Webstudio JavaScript / TypeScript API",
|
|
5
5
|
"author": "Webstudio <github@webstudio.is>",
|
|
6
6
|
"homepage": "https://webstudio.is",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"react-dom": "^17.0.2",
|
|
26
26
|
"remix-utils": "^4.1.0",
|
|
27
27
|
"tsx": "^3.9.0",
|
|
28
|
-
"typescript": "4.
|
|
28
|
+
"typescript": "4.9.5",
|
|
29
29
|
"zod": "^3.19.1",
|
|
30
30
|
"@webstudio-is/generate-arg-types": "^0.0.1",
|
|
31
31
|
"@webstudio-is/jest-config": "^1.0.2",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
"mitt": "^3.0.0",
|
|
48
48
|
"nanostores": "^0.7.1",
|
|
49
49
|
"warn-once": "^0.1.1",
|
|
50
|
-
"@webstudio-is/asset-uploader": "^0.
|
|
51
|
-
"@webstudio-is/css-data": "^0.
|
|
52
|
-
"@webstudio-is/icons": "^0.
|
|
53
|
-
"@webstudio-is/image": "^0.
|
|
54
|
-
"@webstudio-is/prisma-client": "^0.
|
|
55
|
-
"@webstudio-is/project-build": "^0.
|
|
50
|
+
"@webstudio-is/asset-uploader": "^0.30.0",
|
|
51
|
+
"@webstudio-is/css-data": "^0.30.0",
|
|
52
|
+
"@webstudio-is/icons": "^0.30.0",
|
|
53
|
+
"@webstudio-is/image": "^0.30.0",
|
|
54
|
+
"@webstudio-is/prisma-client": "^0.30.0",
|
|
55
|
+
"@webstudio-is/project-build": "^0.30.0"
|
|
56
56
|
},
|
|
57
57
|
"exports": {
|
|
58
58
|
"import": "./lib/index.js",
|
|
@@ -44,12 +44,12 @@ export const Image = forwardRef<ElementRef<typeof defaultTag>, Props>(
|
|
|
44
44
|
return (
|
|
45
45
|
<WebstudioImage
|
|
46
46
|
/**
|
|
47
|
-
* `key` is needed to recreate the image in case of asset change in
|
|
47
|
+
* `key` is needed to recreate the image in case of asset change in builder,
|
|
48
48
|
* this gives immediate feedback when an asset is changed.
|
|
49
49
|
* Also, it visually fixes image distortion when another asset has a seriously different aspectRatio
|
|
50
50
|
* (we change aspectRatio CSS prop on asset change)
|
|
51
51
|
*
|
|
52
|
-
* In non-
|
|
52
|
+
* In non-builder mode, key on images are usually also a good idea,
|
|
53
53
|
* prevents showing outdated images on route change.
|
|
54
54
|
**/
|
|
55
55
|
key={src}
|
|
@@ -2,7 +2,7 @@ import { Image } from "./image";
|
|
|
2
2
|
import { Link } from "./link";
|
|
3
3
|
import { RichTextLink } from "./rich-text-link";
|
|
4
4
|
import { imageProps } from "@webstudio-is/image";
|
|
5
|
-
import
|
|
5
|
+
import { WsComponentPropsMeta } from "../../components/component-type";
|
|
6
6
|
|
|
7
7
|
export const customComponents = {
|
|
8
8
|
Image,
|
|
@@ -10,8 +10,14 @@ export const customComponents = {
|
|
|
10
10
|
RichTextLink,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export const
|
|
14
|
-
Image: {
|
|
15
|
-
props:
|
|
16
|
-
|
|
13
|
+
export const customComponentPropsMetas = {
|
|
14
|
+
Image: WsComponentPropsMeta.parse({
|
|
15
|
+
props: {
|
|
16
|
+
...imageProps,
|
|
17
|
+
src: { ...imageProps.src, control: "file-image", name: "Source" },
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
17
20
|
};
|
|
21
|
+
|
|
22
|
+
// just for completeness, maybe we add soemthing here later
|
|
23
|
+
export const customComponentMetas = {};
|
|
@@ -16,6 +16,11 @@ const isAbsoluteUrl = (href: string) => {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
// Remix's check for absolute URL copied from here:
|
|
20
|
+
// https://github.com/remix-run/react-router/blob/react-router-dom%406.8.0/packages/react-router-dom/index.tsx#L423-L424
|
|
21
|
+
const isAbsoluteUrlRemix = (href: string) =>
|
|
22
|
+
/^[a-z+]+:\/\//i.test(href) || href.startsWith("//");
|
|
23
|
+
|
|
19
24
|
type Props = Omit<ComponentProps<"a">, "href"> & { href?: string };
|
|
20
25
|
|
|
21
26
|
type Ref = ElementRef<"a">;
|
|
@@ -25,13 +30,27 @@ export const wrapLinkComponent = (
|
|
|
25
30
|
) => {
|
|
26
31
|
// We're not actually wrapping BaseLink (no way to wrap with Remix's Link),
|
|
27
32
|
// but this is still useful because we're making sure that props/ref types are compatible
|
|
28
|
-
const Component = forwardRef<Ref, Props>(({ href = "", ...props }, ref) =>
|
|
29
|
-
isAbsoluteUrl(href)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
const Component = forwardRef<Ref, Props>(({ href = "", ...props }, ref) => {
|
|
34
|
+
const isAbsolute = isAbsoluteUrl(href);
|
|
35
|
+
|
|
36
|
+
// This is a workaround for a bug in Remix: https://github.com/remix-run/remix/issues/5440
|
|
37
|
+
// It has a buggy absolute URL detection, which gives false positives on value like "//" or "http://"
|
|
38
|
+
// and causes entire app to crash
|
|
39
|
+
const willRemixTryToTreatAsAbsoluteAndCrash =
|
|
40
|
+
isAbsolute === false && isAbsoluteUrlRemix(href);
|
|
41
|
+
|
|
42
|
+
if (isAbsolute || willRemixTryToTreatAsAbsoluteAndCrash) {
|
|
43
|
+
return (
|
|
44
|
+
<a
|
|
45
|
+
{...props}
|
|
46
|
+
href={willRemixTryToTreatAsAbsoluteAndCrash ? "" : href}
|
|
47
|
+
ref={ref}
|
|
48
|
+
/>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return <Link {...props} to={href} ref={ref} />;
|
|
53
|
+
});
|
|
35
54
|
|
|
36
55
|
// This is the only part that we use from BaseLink at runtime
|
|
37
56
|
Component.displayName = BaseLink.displayName;
|
package/src/app/root.tsx
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Links, Meta, Outlet as DefaultOutlet } from "@remix-run/react";
|
|
2
|
-
import { DynamicLinks } from "remix-utils";
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* We are using Outlet prop from index layout when user renders site from a subdomain.
|
|
@@ -17,7 +16,6 @@ export const Root = ({
|
|
|
17
16
|
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
|
|
18
17
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
|
|
19
18
|
<Meta />
|
|
20
|
-
<DynamicLinks />
|
|
21
19
|
<Links />
|
|
22
20
|
</head>
|
|
23
21
|
|