@webstudio-is/react-sdk 0.6.1 → 0.7.1

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 (155) hide show
  1. package/lib/arg-types/utils.d.ts +1 -8
  2. package/lib/arg-types/utils.d.ts.map +1 -1
  3. package/lib/arg-types/utils.js +18 -7
  4. package/lib/component-utils/image.d.ts +107 -0
  5. package/lib/component-utils/image.d.ts.map +1 -0
  6. package/lib/component-utils/image.js +198 -0
  7. package/lib/component-utils/image.test.d.ts +2 -0
  8. package/lib/component-utils/image.test.d.ts.map +1 -0
  9. package/lib/component-utils/image.test.js +132 -0
  10. package/lib/components/body.props.json +8 -37
  11. package/lib/components/bold.props.json +8 -37
  12. package/lib/components/box.props.json +9 -40
  13. package/lib/components/button.props.json +10 -45
  14. package/lib/components/component-type.d.ts +2 -2
  15. package/lib/components/component-type.d.ts.map +1 -1
  16. package/lib/components/component-type.js +2 -2
  17. package/lib/components/form.props.json +8 -37
  18. package/lib/components/heading.props.json +10 -48
  19. package/lib/components/image-dev.stories.d.ts +36 -0
  20. package/lib/components/image-dev.stories.d.ts.map +1 -0
  21. package/lib/components/image-dev.stories.js +102 -0
  22. package/lib/components/image.d.ts +11 -0
  23. package/lib/components/image.d.ts.map +1 -0
  24. package/lib/components/image.js +52 -0
  25. package/lib/components/image.props.json +2578 -0
  26. package/lib/components/image.stories.d.ts +14 -0
  27. package/lib/components/image.stories.d.ts.map +1 -0
  28. package/lib/components/image.stories.js +17 -0
  29. package/lib/components/image.ws.d.ts +5 -0
  30. package/lib/components/image.ws.d.ts.map +1 -0
  31. package/lib/components/image.ws.js +29 -0
  32. package/lib/components/index.d.ts +4 -0
  33. package/lib/components/index.d.ts.map +1 -1
  34. package/lib/components/index.js +9 -1
  35. package/lib/components/index.test.js +1 -1
  36. package/lib/components/input.props.json +9 -46
  37. package/lib/components/italic.props.json +8 -37
  38. package/lib/components/link.d.ts +1 -1
  39. package/lib/components/link.props.json +9 -40
  40. package/lib/components/link.stories.d.ts +2 -2
  41. package/lib/components/meta.d.ts +4 -0
  42. package/lib/components/meta.d.ts.map +1 -1
  43. package/lib/components/meta.js +9 -1
  44. package/lib/components/paragraph.props.json +8 -37
  45. package/lib/components/span.d.ts +3 -0
  46. package/lib/components/span.d.ts.map +1 -0
  47. package/lib/components/span.js +8 -0
  48. package/lib/components/span.props.json +2205 -0
  49. package/lib/components/span.stories.d.ts +6 -0
  50. package/lib/components/span.stories.d.ts.map +1 -0
  51. package/lib/components/span.stories.js +19 -0
  52. package/lib/components/span.ws.d.ts +5 -0
  53. package/lib/components/span.ws.d.ts.map +1 -0
  54. package/lib/components/span.ws.js +14 -0
  55. package/lib/components/subscript.d.ts +3 -0
  56. package/lib/components/subscript.d.ts.map +1 -0
  57. package/lib/components/subscript.js +8 -0
  58. package/lib/components/subscript.props.json +2205 -0
  59. package/lib/components/subscript.stories.d.ts +6 -0
  60. package/lib/components/subscript.stories.d.ts.map +1 -0
  61. package/lib/components/subscript.stories.js +19 -0
  62. package/lib/components/subscript.ws.d.ts +5 -0
  63. package/lib/components/subscript.ws.d.ts.map +1 -0
  64. package/lib/components/subscript.ws.js +14 -0
  65. package/lib/components/superscript.d.ts +3 -0
  66. package/lib/components/superscript.d.ts.map +1 -0
  67. package/lib/components/superscript.js +8 -0
  68. package/lib/components/superscript.props.json +2205 -0
  69. package/lib/components/superscript.stories.d.ts +6 -0
  70. package/lib/components/superscript.stories.d.ts.map +1 -0
  71. package/lib/components/superscript.stories.js +19 -0
  72. package/lib/components/superscript.ws.d.ts +5 -0
  73. package/lib/components/superscript.ws.d.ts.map +1 -0
  74. package/lib/components/superscript.ws.js +14 -0
  75. package/lib/components/text-block.props.json +8 -37
  76. package/lib/css/breakpoints.d.ts +1 -1
  77. package/lib/css/breakpoints.d.ts.map +1 -1
  78. package/lib/css/categories.d.ts +5 -5
  79. package/lib/css/get-browser-style.d.ts +1 -1
  80. package/lib/css/get-browser-style.d.ts.map +1 -1
  81. package/lib/css/get-browser-style.js +10 -5
  82. package/lib/css/index.d.ts +0 -5
  83. package/lib/css/index.d.ts.map +1 -1
  84. package/lib/css/index.js +0 -5
  85. package/lib/db/instance.d.ts +2 -2
  86. package/lib/db/instance.d.ts.map +1 -1
  87. package/lib/db/instance.js +5 -5
  88. package/lib/index.d.ts +1 -2
  89. package/lib/index.d.ts.map +1 -1
  90. package/lib/index.js +1 -2
  91. package/lib/pubsub/create.d.ts +1 -0
  92. package/lib/pubsub/create.d.ts.map +1 -1
  93. package/lib/pubsub/create.js +8 -0
  94. package/lib/remix/handle-request.server.d.ts +3 -0
  95. package/lib/remix/handle-request.server.d.ts.map +1 -0
  96. package/lib/remix/handle-request.server.js +15 -0
  97. package/lib/remix/index.d.ts +3 -0
  98. package/lib/remix/index.d.ts.map +1 -0
  99. package/lib/{canvas → remix}/index.js +2 -1
  100. package/lib/{canvas/canvas.d.ts → remix/root.d.ts} +1 -1
  101. package/lib/remix/root.d.ts.map +1 -0
  102. package/lib/{canvas/canvas.js → remix/root.js} +2 -2
  103. package/lib/tree/create-elements-tree.d.ts +7 -11
  104. package/lib/tree/create-elements-tree.d.ts.map +1 -1
  105. package/lib/tree/create-elements-tree.js +5 -10
  106. package/lib/tree/root.d.ts +6 -4
  107. package/lib/tree/root.d.ts.map +1 -1
  108. package/lib/tree/root.js +1 -10
  109. package/lib/tree/session-storage-polyfill.d.ts +2 -0
  110. package/lib/tree/session-storage-polyfill.d.ts.map +1 -0
  111. package/lib/tree/session-storage-polyfill.js +39 -0
  112. package/lib/tree/wrapper-component.d.ts +4 -4
  113. package/lib/tree/wrapper-component.d.ts.map +1 -1
  114. package/lib/tree/wrapper-component.js +5 -5
  115. package/lib/user-props/schema.d.ts +3 -2
  116. package/lib/user-props/schema.d.ts.map +1 -1
  117. package/lib/user-props/schema.js +3 -3
  118. package/lib/user-props/types.d.ts +1 -3
  119. package/lib/user-props/types.d.ts.map +1 -1
  120. package/lib/user-props/use-user-props.d.ts +1 -1
  121. package/lib/user-props/use-user-props.d.ts.map +1 -1
  122. package/package.json +23 -14
  123. package/lib/canvas/canvas.d.ts.map +0 -1
  124. package/lib/canvas/index.d.ts +0 -2
  125. package/lib/canvas/index.d.ts.map +0 -1
  126. package/lib/css/keyword-values.d.ts +0 -302
  127. package/lib/css/keyword-values.d.ts.map +0 -1
  128. package/lib/css/keyword-values.js +0 -7372
  129. package/lib/css/properties.d.ts +0 -3199
  130. package/lib/css/properties.d.ts.map +0 -1
  131. package/lib/css/properties.js +0 -3202
  132. package/lib/css/schema.d.ts +0 -151
  133. package/lib/css/schema.d.ts.map +0 -1
  134. package/lib/css/schema.js +0 -38
  135. package/lib/css/types.d.ts +0 -15
  136. package/lib/css/types.d.ts.map +0 -1
  137. package/lib/css/types.js +0 -2
  138. package/lib/css/units.d.ts +0 -2
  139. package/lib/css/units.d.ts.map +0 -1
  140. package/lib/css/units.js +0 -35
  141. package/lib/stitches/critical-css.d.ts +0 -4
  142. package/lib/stitches/critical-css.d.ts.map +0 -1
  143. package/lib/stitches/critical-css.js +0 -12
  144. package/lib/stitches/css.d.ts +0 -9
  145. package/lib/stitches/css.d.ts.map +0 -1
  146. package/lib/stitches/css.js +0 -33
  147. package/lib/stitches/index.d.ts +0 -4
  148. package/lib/stitches/index.d.ts.map +0 -1
  149. package/lib/stitches/index.js +0 -19
  150. package/lib/stitches/to-css.d.ts +0 -8
  151. package/lib/stitches/to-css.d.ts.map +0 -1
  152. package/lib/stitches/to-css.js +0 -43
  153. package/lib/stitches/to-css.test.d.ts +0 -2
  154. package/lib/stitches/to-css.test.d.ts.map +0 -1
  155. package/lib/stitches/to-css.test.js +0 -63
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HeroImage = exports.FillParentImage = exports.AspectRatioImage = exports.UnknownWidthImage = exports.FixedWidthImageCover = exports.FixedWidthImage = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const warn_once_1 = __importDefault(require("warn-once"));
9
+ const image_1 = require("./image");
10
+ const image_ws_1 = __importDefault(require("./image.ws"));
11
+ // to not allow include local assets everywhere, just enable it for this file
12
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
+ // @ts-ignore
14
+ const logo_webp_1 = __importDefault(require("../../storybook-assets/logo.webp"));
15
+ exports.default = {
16
+ title: "Components/ImageDev",
17
+ };
18
+ /**
19
+ * In case you need to test img with real cloudflare trasforms
20
+ * set USE_CLOUDFLARE_IMAGE_TRANSFORM = true
21
+ **/
22
+ const USE_CLOUDFLARE_IMAGE_TRANSFORM = false;
23
+ // For cloudflare image transform testing, logo should be the most consistent image on the site
24
+ const REMOTE_SELF_DOMAIN_IMAGE = "https://webstudio.is/logo.webp";
25
+ const imageSrc = USE_CLOUDFLARE_IMAGE_TRANSFORM
26
+ ? REMOTE_SELF_DOMAIN_IMAGE
27
+ : logo_webp_1.default;
28
+ // In case of REMOTE_DEBUG
29
+ const cloudflareImageLoader = ({ width, src, quality }) => {
30
+ // No image transformation in development
31
+ const resizeOrigin = "https://webstudio.is";
32
+ const pathParams = [
33
+ `width=${width}`,
34
+ quality != null && `quality=${quality}`,
35
+ "format=auto",
36
+ ].filter(Boolean);
37
+ const pathname = `/cdn-cgi/image/${pathParams.join(",")}/${src}`;
38
+ const url = new URL(pathname, resizeOrigin);
39
+ return url.href;
40
+ };
41
+ const localImageLoader = ({ width, src, quality }) => {
42
+ // Just emulate like we really resize the image
43
+ const params = new URLSearchParams();
44
+ params.set("width", `${width}`);
45
+ params.set("quality", `${quality}`);
46
+ return `${src}?${params.toString()}`;
47
+ };
48
+ const imageLoader = USE_CLOUDFLARE_IMAGE_TRANSFORM
49
+ ? cloudflareImageLoader
50
+ : localImageLoader;
51
+ const ImageBase = (args) => {
52
+ (0, warn_once_1.default)(!(image_ws_1.default.defaultStyle?.maxWidth?.value === 100 &&
53
+ image_ws_1.default.defaultStyle?.maxWidth?.unit === "%"), "We expect that the image default style has maxWidth: 100%");
54
+ (0, warn_once_1.default)(image_ws_1.default.defaultStyle?.display?.value !== "block", "We expect that the image default style has display: block");
55
+ const style = {
56
+ maxWidth: "100%",
57
+ display: "block",
58
+ ...args.style,
59
+ };
60
+ return ((0, jsx_runtime_1.jsx)(image_1.Image, { ...args, optimize: true, loader: imageLoader, style: style }));
61
+ };
62
+ /**
63
+ * Load images depending on image width and device per pixel ratio.
64
+ **/
65
+ const FixedWidthImage = () => ((0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc, width: "300", height: "400" }));
66
+ exports.FixedWidthImage = FixedWidthImage;
67
+ /**
68
+ * Preserve ratio using object-fit: cover. Load images depending on image width and device per pixel ratio.
69
+ **/
70
+ const FixedWidthImageCover = () => ((0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc, width: "300", height: "400", style: { objectFit: "cover" } }));
71
+ exports.FixedWidthImageCover = FixedWidthImageCover;
72
+ /**
73
+ * Load images depending on the viewport width.
74
+ **/
75
+ const UnknownWidthImage = () => (0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc });
76
+ exports.UnknownWidthImage = UnknownWidthImage;
77
+ /**
78
+ * Fit width of the parent container, has own aspect-ratio and object-fit=cover.
79
+ * Load images depending on the viewport width.
80
+ **/
81
+ const AspectRatioImage = () => ((0, jsx_runtime_1.jsx)("div", { style: { width: "50%" }, children: (0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc, style: { aspectRatio: "2/1", objectFit: "cover", width: "100%" } }) }));
82
+ exports.AspectRatioImage = AspectRatioImage;
83
+ /**
84
+ * Fill width and height of the relative parent container, object-fit=cover. Load images depending on the viewport width.
85
+ **/
86
+ const FillParentImage = () => ((0, jsx_runtime_1.jsx)("div", { style: { width: "50%", aspectRatio: "2/1", position: "relative" }, children: (0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc, style: {
87
+ objectFit: "cover",
88
+ position: "absolute",
89
+ width: "100%",
90
+ height: "100%",
91
+ } }) }));
92
+ exports.FillParentImage = FillParentImage;
93
+ /**
94
+ * "sizes" attribute explicitly equal to 100vw allowing to skip the default behavior.
95
+ * See DEFAULT_SIZES in the Image component. Load images depending on the viewport width.
96
+ **/
97
+ const HeroImage = () => ((0, jsx_runtime_1.jsx)(ImageBase, { src: imageSrc, sizes: "100vw", style: {
98
+ aspectRatio: "3/1",
99
+ objectFit: "cover",
100
+ width: "100%",
101
+ } }));
102
+ exports.HeroImage = HeroImage;
@@ -0,0 +1,11 @@
1
+ import React, { type ComponentProps } from "react";
2
+ import { type ImageLoader } from "../component-utils/image";
3
+ declare const defaultTag = "img";
4
+ declare type ImageProps = ComponentProps<typeof defaultTag> & {
5
+ quality?: number;
6
+ loader?: ImageLoader;
7
+ optimize?: boolean;
8
+ };
9
+ export declare const Image: React.ForwardRefExoticComponent<Pick<ImageProps, "key" | "quality" | "loader" | keyof React.ImgHTMLAttributes<HTMLImageElement> | "optimize"> & React.RefAttributes<HTMLImageElement>>;
10
+ export {};
11
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/components/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA+B,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEhF,QAAA,MAAM,UAAU,QAAQ,CAAC;AAEzB,aAAK,UAAU,GAAG,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,KAAK,wLAmBjB,CAAC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Image = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const image_1 = require("../component-utils/image");
7
+ const defaultTag = "img";
8
+ exports.Image = (0, react_1.forwardRef)(({ quality, loader, optimize, ...imageProps }, ref) => {
9
+ // Temporary set to false, to support previous image behaviour
10
+ const DEFAULT_OPTIMIZE = false;
11
+ const imageAttributes = (0, image_1.getImageAttributes)({
12
+ src: imageProps.src,
13
+ srcSet: imageProps.srcSet,
14
+ sizes: imageProps.sizes,
15
+ width: imageProps.width,
16
+ quality,
17
+ loader,
18
+ optimize: optimize ?? DEFAULT_OPTIMIZE,
19
+ }) ?? { src: imagePlaceholderSvg };
20
+ return ((0, jsx_runtime_1.jsx)("img", { ...imageProps, ...imageAttributes, decoding: "async", ref: ref }));
21
+ });
22
+ exports.Image.defaultProps = {
23
+ src: "",
24
+ width: "",
25
+ height: "",
26
+ loading: "lazy",
27
+ alt: "",
28
+ };
29
+ exports.Image.displayName = "Image";
30
+ const imagePlaceholderSvg = `data:image/svg+xml;base64,${btoa(`<svg
31
+ width="140"
32
+ height="140"
33
+ viewBox="0 0 600 600"
34
+ fill="none"
35
+ xmlns="http://www.w3.org/2000/svg"
36
+ >
37
+ <rect width="600" height="600" fill="#CCCCCC" />
38
+ <path
39
+ fill-rule="evenodd"
40
+ clip-rule="evenodd"
41
+ d="M450 170H150C141.716 170 135 176.716 135 185V415C135 423.284 141.716 430 150 430H450C458.284 430 465 423.284 465 415V185C465 176.716 458.284 170 450 170ZM150 145C127.909 145 110 162.909 110 185V415C110 437.091 127.909 455 150 455H450C472.091 455 490 437.091 490 415V185C490 162.909 472.091 145 450 145H150Z"
42
+ fill="#A2A2A2"
43
+ />
44
+ <path
45
+ d="M237.135 235.012C237.135 255.723 220.345 272.512 199.635 272.512C178.924 272.512 162.135 255.723 162.135 235.012C162.135 214.301 178.924 197.512 199.635 197.512C220.345 197.512 237.135 214.301 237.135 235.012Z"
46
+ fill="#A2A2A2"
47
+ />
48
+ <path
49
+ d="M160 405V367.205L221.609 306.364L256.552 338.628L358.161 234L440 316.043V405H160Z"
50
+ fill="#A2A2A2"
51
+ />
52
+ </svg>`)}`;