@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.
Files changed (123) hide show
  1. package/lib/app/custom-components/index.js +12 -6
  2. package/lib/app/custom-components/shared/remix-link.js +14 -8
  3. package/lib/app/root.js +0 -2
  4. package/lib/cjs/app/custom-components/index.cjs +12 -6
  5. package/lib/cjs/app/custom-components/shared/remix-link.cjs +14 -8
  6. package/lib/cjs/app/root.cjs +0 -2
  7. package/lib/cjs/components/__generated__/body.props.json +557 -305
  8. package/lib/cjs/components/__generated__/bold.props.json +557 -305
  9. package/lib/cjs/components/__generated__/box.props.json +577 -320
  10. package/lib/cjs/components/__generated__/button.props.json +616 -339
  11. package/lib/cjs/components/__generated__/form.props.json +597 -329
  12. package/lib/cjs/components/__generated__/heading.props.json +566 -309
  13. package/lib/cjs/components/__generated__/image.props.json +638 -352
  14. package/lib/cjs/components/__generated__/input.props.json +725 -405
  15. package/lib/cjs/components/__generated__/italic.props.json +557 -305
  16. package/lib/cjs/components/__generated__/link.props.json +616 -343
  17. package/lib/cjs/components/__generated__/paragraph.props.json +557 -305
  18. package/lib/cjs/components/__generated__/rich-text-link.props.json +616 -343
  19. package/lib/cjs/components/__generated__/span.props.json +557 -305
  20. package/lib/cjs/components/__generated__/subscript.props.json +557 -305
  21. package/lib/cjs/components/__generated__/superscript.props.json +557 -305
  22. package/lib/cjs/components/__generated__/text-block.props.json +557 -305
  23. package/lib/cjs/components/body.ws.cjs +6 -3
  24. package/lib/cjs/components/bold.ws.cjs +7 -4
  25. package/lib/cjs/components/box.ws.cjs +8 -4
  26. package/lib/cjs/components/button.ws.cjs +8 -4
  27. package/lib/cjs/components/component-type.cjs +21 -56
  28. package/lib/cjs/components/form.ws.cjs +7 -4
  29. package/lib/cjs/components/heading.ws.cjs +8 -4
  30. package/lib/cjs/components/image.ws.cjs +11 -5
  31. package/lib/cjs/components/index.cjs +165 -111
  32. package/lib/cjs/components/input.ws.cjs +7 -4
  33. package/lib/cjs/components/italic.ws.cjs +7 -4
  34. package/lib/cjs/components/link.ws.cjs +8 -4
  35. package/lib/cjs/components/paragraph.ws.cjs +7 -4
  36. package/lib/cjs/components/rich-text-link.ws.cjs +7 -4
  37. package/lib/cjs/components/span.ws.cjs +7 -4
  38. package/lib/cjs/components/subscript.ws.cjs +7 -4
  39. package/lib/cjs/components/superscript.ws.cjs +7 -4
  40. package/lib/cjs/components/text-block.ws.cjs +7 -4
  41. package/lib/cjs/index.cjs +3 -2
  42. package/lib/cjs/tree/session-storage-polyfill.cjs +1 -1
  43. package/lib/components/__generated__/body.props.json +557 -305
  44. package/lib/components/__generated__/bold.props.json +557 -305
  45. package/lib/components/__generated__/box.props.json +577 -320
  46. package/lib/components/__generated__/button.props.json +616 -339
  47. package/lib/components/__generated__/form.props.json +597 -329
  48. package/lib/components/__generated__/heading.props.json +566 -309
  49. package/lib/components/__generated__/image.props.json +638 -352
  50. package/lib/components/__generated__/input.props.json +725 -405
  51. package/lib/components/__generated__/italic.props.json +557 -305
  52. package/lib/components/__generated__/link.props.json +616 -343
  53. package/lib/components/__generated__/paragraph.props.json +557 -305
  54. package/lib/components/__generated__/rich-text-link.props.json +616 -343
  55. package/lib/components/__generated__/span.props.json +557 -305
  56. package/lib/components/__generated__/subscript.props.json +557 -305
  57. package/lib/components/__generated__/superscript.props.json +557 -305
  58. package/lib/components/__generated__/text-block.props.json +557 -305
  59. package/lib/components/body.ws.js +6 -3
  60. package/lib/components/bold.ws.js +7 -4
  61. package/lib/components/box.ws.js +8 -4
  62. package/lib/components/button.ws.js +8 -4
  63. package/lib/components/component-type.js +21 -56
  64. package/lib/components/form.ws.js +7 -4
  65. package/lib/components/heading.ws.js +8 -4
  66. package/lib/components/image.ws.js +11 -5
  67. package/lib/components/index.js +117 -57
  68. package/lib/components/input.ws.js +7 -4
  69. package/lib/components/italic.ws.js +7 -4
  70. package/lib/components/link.ws.js +8 -4
  71. package/lib/components/paragraph.ws.js +7 -4
  72. package/lib/components/rich-text-link.ws.js +7 -4
  73. package/lib/components/span.ws.js +7 -4
  74. package/lib/components/subscript.ws.js +7 -4
  75. package/lib/components/superscript.ws.js +7 -4
  76. package/lib/components/text-block.ws.js +7 -4
  77. package/lib/index.js +5 -3
  78. package/lib/tree/session-storage-polyfill.js +1 -1
  79. package/package.json +8 -8
  80. package/src/app/custom-components/image.tsx +2 -2
  81. package/src/app/custom-components/index.ts +11 -5
  82. package/src/app/custom-components/shared/remix-link.tsx +26 -7
  83. package/src/app/root.tsx +0 -2
  84. package/src/components/__generated__/body.props.json +557 -305
  85. package/src/components/__generated__/bold.props.json +557 -305
  86. package/src/components/__generated__/box.props.json +577 -320
  87. package/src/components/__generated__/button.props.json +616 -339
  88. package/src/components/__generated__/form.props.json +597 -329
  89. package/src/components/__generated__/heading.props.json +566 -309
  90. package/src/components/__generated__/image.props.json +638 -352
  91. package/src/components/__generated__/input.props.json +725 -405
  92. package/src/components/__generated__/italic.props.json +557 -305
  93. package/src/components/__generated__/link.props.json +616 -343
  94. package/src/components/__generated__/paragraph.props.json +557 -305
  95. package/src/components/__generated__/rich-text-link.props.json +616 -343
  96. package/src/components/__generated__/span.props.json +557 -305
  97. package/src/components/__generated__/subscript.props.json +557 -305
  98. package/src/components/__generated__/superscript.props.json +557 -305
  99. package/src/components/__generated__/text-block.props.json +557 -305
  100. package/src/components/body.ws.tsx +5 -4
  101. package/src/components/bold.ws.tsx +5 -4
  102. package/src/components/box.ws.ts +6 -4
  103. package/src/components/button.ws.tsx +6 -4
  104. package/src/components/component-type.ts +23 -63
  105. package/src/components/form.ws.tsx +5 -4
  106. package/src/components/heading.ws.tsx +6 -4
  107. package/src/components/image.ws.tsx +9 -5
  108. package/src/components/index.test.ts +2 -24
  109. package/src/components/index.ts +155 -81
  110. package/src/components/input.ws.tsx +5 -4
  111. package/src/components/italic.ws.tsx +5 -4
  112. package/src/components/link.ws.tsx +6 -4
  113. package/src/components/paragraph.ws.tsx +5 -4
  114. package/src/components/rich-text-link.ws.tsx +5 -4
  115. package/src/components/span.ws.tsx +5 -4
  116. package/src/components/subscript.ws.tsx +5 -4
  117. package/src/components/superscript.ws.tsx +5 -4
  118. package/src/components/text-block.ws.tsx +5 -4
  119. package/src/css/breakpoints.ts +1 -1
  120. package/src/index.ts +6 -2
  121. package/src/props.ts +1 -1
  122. package/src/tree/create-elements-tree.tsx +3 -3
  123. package/src/tree/session-storage-polyfill.tsx +1 -1
@@ -2,17 +2,23 @@ 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 { WsComponentPropsMeta } from "../../components/component-type";
5
6
  const customComponents = {
6
7
  Image,
7
8
  Link,
8
9
  RichTextLink
9
10
  };
10
- const customComponentsMeta = {
11
- Image: {
12
- props: imageProps
13
- }
11
+ const customComponentPropsMetas = {
12
+ Image: WsComponentPropsMeta.parse({
13
+ props: {
14
+ ...imageProps,
15
+ src: { ...imageProps.src, control: "file-image", name: "Source" }
16
+ }
17
+ })
14
18
  };
19
+ const customComponentMetas = {};
15
20
  export {
16
- customComponents,
17
- customComponentsMeta
21
+ customComponentMetas,
22
+ customComponentPropsMetas,
23
+ customComponents
18
24
  };
@@ -9,18 +9,24 @@ const isAbsoluteUrl = (href) => {
9
9
  return false;
10
10
  }
11
11
  };
12
+ const isAbsoluteUrlRemix = (href) => /^[a-z+]+:\/\//i.test(href) || href.startsWith("//");
12
13
  const wrapLinkComponent = (BaseLink) => {
13
- const Component = forwardRef(
14
- ({ href = "", ...props }, ref) => isAbsoluteUrl(href) ? /* @__PURE__ */ jsx("a", {
15
- ...props,
16
- href,
17
- ref
18
- }) : /* @__PURE__ */ jsx(Link, {
14
+ const Component = forwardRef(({ href = "", ...props }, ref) => {
15
+ const isAbsolute = isAbsoluteUrl(href);
16
+ const willRemixTryToTreatAsAbsoluteAndCrash = isAbsolute === false && isAbsoluteUrlRemix(href);
17
+ if (isAbsolute || willRemixTryToTreatAsAbsoluteAndCrash) {
18
+ return /* @__PURE__ */ jsx("a", {
19
+ ...props,
20
+ href: willRemixTryToTreatAsAbsoluteAndCrash ? "" : href,
21
+ ref
22
+ });
23
+ }
24
+ return /* @__PURE__ */ jsx(Link, {
19
25
  ...props,
20
26
  to: href,
21
27
  ref
22
- })
23
- );
28
+ });
29
+ });
24
30
  Component.displayName = BaseLink.displayName;
25
31
  return Component;
26
32
  };
package/lib/app/root.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Links, Meta, Outlet as DefaultOutlet } from "@remix-run/react";
3
- import { DynamicLinks } from "remix-utils";
4
3
  const Root = ({
5
4
  Outlet = DefaultOutlet
6
5
  }) => {
@@ -27,7 +26,6 @@ const Root = ({
27
26
  type: "image/x-icon"
28
27
  }),
29
28
  /* @__PURE__ */ jsx(Meta, {}),
30
- /* @__PURE__ */ jsx(DynamicLinks, {}),
31
29
  /* @__PURE__ */ jsx(Links, {})
32
30
  ]
33
31
  }),
@@ -18,21 +18,27 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var custom_components_exports = {};
20
20
  __export(custom_components_exports, {
21
- customComponents: () => customComponents,
22
- customComponentsMeta: () => customComponentsMeta
21
+ customComponentMetas: () => customComponentMetas,
22
+ customComponentPropsMetas: () => customComponentPropsMetas,
23
+ customComponents: () => customComponents
23
24
  });
24
25
  module.exports = __toCommonJS(custom_components_exports);
25
26
  var import_image = require("./image");
26
27
  var import_link = require("./link");
27
28
  var import_rich_text_link = require("./rich-text-link");
28
29
  var import_image2 = require("@webstudio-is/image");
30
+ var import_component_type = require("../../components/component-type");
29
31
  const customComponents = {
30
32
  Image: import_image.Image,
31
33
  Link: import_link.Link,
32
34
  RichTextLink: import_rich_text_link.RichTextLink
33
35
  };
34
- const customComponentsMeta = {
35
- Image: {
36
- props: import_image2.imageProps
37
- }
36
+ const customComponentPropsMetas = {
37
+ Image: import_component_type.WsComponentPropsMeta.parse({
38
+ props: {
39
+ ...import_image2.imageProps,
40
+ src: { ...import_image2.imageProps.src, control: "file-image", name: "Source" }
41
+ }
42
+ })
38
43
  };
44
+ const customComponentMetas = {};
@@ -32,18 +32,24 @@ const isAbsoluteUrl = (href) => {
32
32
  return false;
33
33
  }
34
34
  };
35
+ const isAbsoluteUrlRemix = (href) => /^[a-z+]+:\/\//i.test(href) || href.startsWith("//");
35
36
  const wrapLinkComponent = (BaseLink) => {
36
- const Component = (0, import_react2.forwardRef)(
37
- ({ href = "", ...props }, ref) => isAbsoluteUrl(href) ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
38
- ...props,
39
- href,
40
- ref
41
- }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Link, {
37
+ const Component = (0, import_react2.forwardRef)(({ href = "", ...props }, ref) => {
38
+ const isAbsolute = isAbsoluteUrl(href);
39
+ const willRemixTryToTreatAsAbsoluteAndCrash = isAbsolute === false && isAbsoluteUrlRemix(href);
40
+ if (isAbsolute || willRemixTryToTreatAsAbsoluteAndCrash) {
41
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
42
+ ...props,
43
+ href: willRemixTryToTreatAsAbsoluteAndCrash ? "" : href,
44
+ ref
45
+ });
46
+ }
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Link, {
42
48
  ...props,
43
49
  to: href,
44
50
  ref
45
- })
46
- );
51
+ });
52
+ });
47
53
  Component.displayName = BaseLink.displayName;
48
54
  return Component;
49
55
  };
@@ -23,7 +23,6 @@ __export(root_exports, {
23
23
  module.exports = __toCommonJS(root_exports);
24
24
  var import_jsx_runtime = require("react/jsx-runtime");
25
25
  var import_react = require("@remix-run/react");
26
- var import_remix_utils = require("remix-utils");
27
26
  const Root = ({
28
27
  Outlet = import_react.Outlet
29
28
  }) => {
@@ -50,7 +49,6 @@ const Root = ({
50
49
  type: "image/x-icon"
51
50
  }),
52
51
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Meta, {}),
53
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_remix_utils.DynamicLinks, {}),
54
52
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Links, {})
55
53
  ]
56
54
  }),