@webstudio-is/react-sdk 0.7.2 → 0.7.3

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 (329) hide show
  1. package/lib/arg-types/utils.js +3 -8
  2. package/lib/cjs/arg-types/utils.cjs +88 -0
  3. package/lib/cjs/arg-types/utils.d.ts +10 -0
  4. package/lib/cjs/arg-types/utils.d.ts.map +1 -0
  5. package/lib/cjs/components/body.cjs +8 -0
  6. package/lib/cjs/components/body.d.ts +3 -0
  7. package/lib/cjs/components/body.d.ts.map +1 -0
  8. package/lib/cjs/components/body.props.json +491 -0
  9. package/lib/cjs/components/body.stories.cjs +11 -0
  10. package/lib/cjs/components/body.stories.d.ts +7 -0
  11. package/lib/cjs/components/body.stories.d.ts.map +1 -0
  12. package/lib/cjs/components/body.ws.cjs +64 -0
  13. package/lib/cjs/components/body.ws.d.ts +5 -0
  14. package/lib/cjs/components/body.ws.d.ts.map +1 -0
  15. package/lib/cjs/components/bold.cjs +8 -0
  16. package/lib/cjs/components/bold.d.ts +3 -0
  17. package/lib/cjs/components/bold.d.ts.map +1 -0
  18. package/lib/cjs/components/bold.props.json +491 -0
  19. package/lib/cjs/components/bold.stories.cjs +14 -0
  20. package/lib/cjs/components/bold.stories.d.ts +6 -0
  21. package/lib/cjs/components/bold.stories.d.ts.map +1 -0
  22. package/lib/cjs/components/bold.ws.cjs +14 -0
  23. package/lib/cjs/components/bold.ws.d.ts +5 -0
  24. package/lib/cjs/components/bold.ws.d.ts.map +1 -0
  25. package/lib/cjs/components/box.cjs +9 -0
  26. package/lib/cjs/components/box.d.ts +8 -0
  27. package/lib/cjs/components/box.d.ts.map +1 -0
  28. package/lib/cjs/components/box.props.json +508 -0
  29. package/lib/cjs/components/box.stories.cjs +12 -0
  30. package/lib/cjs/components/box.stories.d.ts +10 -0
  31. package/lib/cjs/components/box.stories.d.ts.map +1 -0
  32. package/lib/cjs/components/box.ws.cjs +21 -0
  33. package/lib/cjs/components/box.ws.d.ts +5 -0
  34. package/lib/cjs/components/box.ws.d.ts.map +1 -0
  35. package/lib/cjs/components/button.cjs +11 -0
  36. package/lib/cjs/components/button.d.ts +3 -0
  37. package/lib/cjs/components/button.d.ts.map +1 -0
  38. package/lib/cjs/components/button.props.json +547 -0
  39. package/lib/cjs/components/button.stories.cjs +14 -0
  40. package/lib/cjs/components/button.stories.d.ts +6 -0
  41. package/lib/cjs/components/button.stories.d.ts.map +1 -0
  42. package/lib/cjs/components/button.ws.cjs +15 -0
  43. package/lib/cjs/components/button.ws.d.ts +5 -0
  44. package/lib/cjs/components/button.ws.d.ts.map +1 -0
  45. package/lib/cjs/components/component-type.cjs +28 -0
  46. package/lib/cjs/components/component-type.d.ts +17 -0
  47. package/lib/cjs/components/component-type.d.ts.map +1 -0
  48. package/lib/cjs/components/form.cjs +8 -0
  49. package/lib/cjs/components/form.d.ts +3 -0
  50. package/lib/cjs/components/form.d.ts.map +1 -0
  51. package/lib/cjs/components/form.props.json +531 -0
  52. package/lib/cjs/components/form.stories.cjs +12 -0
  53. package/lib/cjs/components/form.stories.d.ts +6 -0
  54. package/lib/cjs/components/form.stories.d.ts.map +1 -0
  55. package/lib/cjs/components/form.ws.cjs +26 -0
  56. package/lib/cjs/components/form.ws.d.ts +5 -0
  57. package/lib/cjs/components/form.ws.d.ts.map +1 -0
  58. package/lib/cjs/components/heading.cjs +9 -0
  59. package/lib/cjs/components/heading.d.ts +8 -0
  60. package/lib/cjs/components/heading.d.ts.map +1 -0
  61. package/lib/cjs/components/heading.props.json +497 -0
  62. package/lib/cjs/components/heading.stories.cjs +14 -0
  63. package/lib/cjs/components/heading.stories.d.ts +10 -0
  64. package/lib/cjs/components/heading.stories.d.ts.map +1 -0
  65. package/lib/cjs/components/heading.ws.cjs +15 -0
  66. package/lib/cjs/components/heading.ws.d.ts +5 -0
  67. package/lib/cjs/components/heading.ws.d.ts.map +1 -0
  68. package/lib/cjs/components/image.cjs +40 -0
  69. package/lib/cjs/components/image.d.ts +3 -0
  70. package/lib/cjs/components/image.d.ts.map +1 -0
  71. package/lib/cjs/components/image.props.json +575 -0
  72. package/lib/cjs/components/image.stories.cjs +12 -0
  73. package/lib/cjs/components/image.stories.d.ts +6 -0
  74. package/lib/cjs/components/image.stories.d.ts.map +1 -0
  75. package/lib/cjs/components/image.ws.cjs +29 -0
  76. package/lib/cjs/components/image.ws.d.ts +5 -0
  77. package/lib/cjs/components/image.ws.d.ts.map +1 -0
  78. package/lib/cjs/components/index.cjs +36 -0
  79. package/lib/cjs/components/index.d.ts +16 -0
  80. package/lib/cjs/components/index.d.ts.map +1 -0
  81. package/lib/cjs/components/index.test.cjs +33 -0
  82. package/lib/cjs/components/index.test.d.ts +2 -0
  83. package/lib/cjs/components/index.test.d.ts.map +1 -0
  84. package/lib/cjs/components/input.cjs +8 -0
  85. package/lib/cjs/components/input.d.ts +3 -0
  86. package/lib/cjs/components/input.d.ts.map +1 -0
  87. package/lib/cjs/components/input.props.json +657 -0
  88. package/lib/cjs/components/input.stories.cjs +12 -0
  89. package/lib/cjs/components/input.stories.d.ts +6 -0
  90. package/lib/cjs/components/input.stories.d.ts.map +1 -0
  91. package/lib/cjs/components/input.ws.cjs +14 -0
  92. package/lib/cjs/components/input.ws.d.ts +5 -0
  93. package/lib/cjs/components/input.ws.d.ts.map +1 -0
  94. package/lib/cjs/components/italic.cjs +8 -0
  95. package/lib/cjs/components/italic.d.ts +3 -0
  96. package/lib/cjs/components/italic.d.ts.map +1 -0
  97. package/lib/cjs/components/italic.props.json +491 -0
  98. package/lib/cjs/components/italic.stories.cjs +14 -0
  99. package/lib/cjs/components/italic.stories.d.ts +6 -0
  100. package/lib/cjs/components/italic.stories.d.ts.map +1 -0
  101. package/lib/cjs/components/italic.ws.cjs +14 -0
  102. package/lib/cjs/components/italic.ws.d.ts +5 -0
  103. package/lib/cjs/components/italic.ws.d.ts.map +1 -0
  104. package/lib/cjs/components/link.cjs +8 -0
  105. package/lib/cjs/components/link.d.ts +8 -0
  106. package/lib/cjs/components/link.d.ts.map +1 -0
  107. package/lib/cjs/components/link.props.json +547 -0
  108. package/lib/cjs/components/link.stories.cjs +14 -0
  109. package/lib/cjs/components/link.stories.d.ts +10 -0
  110. package/lib/cjs/components/link.stories.d.ts.map +1 -0
  111. package/lib/cjs/components/link.ws.cjs +27 -0
  112. package/lib/cjs/components/link.ws.d.ts +5 -0
  113. package/lib/cjs/components/link.ws.d.ts.map +1 -0
  114. package/lib/cjs/components/meta.cjs +40 -0
  115. package/lib/cjs/components/meta.d.ts +7479 -0
  116. package/lib/cjs/components/meta.d.ts.map +1 -0
  117. package/lib/cjs/components/paragraph.cjs +8 -0
  118. package/lib/cjs/components/paragraph.d.ts +3 -0
  119. package/lib/cjs/components/paragraph.d.ts.map +1 -0
  120. package/lib/cjs/components/paragraph.props.json +491 -0
  121. package/lib/cjs/components/paragraph.stories.cjs +14 -0
  122. package/lib/cjs/components/paragraph.stories.d.ts +6 -0
  123. package/lib/cjs/components/paragraph.stories.d.ts.map +1 -0
  124. package/lib/cjs/components/paragraph.ws.cjs +15 -0
  125. package/lib/cjs/components/paragraph.ws.d.ts +5 -0
  126. package/lib/cjs/components/paragraph.ws.d.ts.map +1 -0
  127. package/lib/cjs/components/span.cjs +8 -0
  128. package/lib/cjs/components/span.d.ts +3 -0
  129. package/lib/cjs/components/span.d.ts.map +1 -0
  130. package/lib/cjs/components/span.props.json +491 -0
  131. package/lib/cjs/components/span.stories.cjs +14 -0
  132. package/lib/cjs/components/span.stories.d.ts +6 -0
  133. package/lib/cjs/components/span.stories.d.ts.map +1 -0
  134. package/lib/cjs/components/span.ws.cjs +14 -0
  135. package/lib/cjs/components/span.ws.d.ts +5 -0
  136. package/lib/cjs/components/span.ws.d.ts.map +1 -0
  137. package/lib/cjs/components/subscript.cjs +8 -0
  138. package/lib/cjs/components/subscript.d.ts +3 -0
  139. package/lib/cjs/components/subscript.d.ts.map +1 -0
  140. package/lib/cjs/components/subscript.props.json +491 -0
  141. package/lib/cjs/components/subscript.stories.cjs +14 -0
  142. package/lib/cjs/components/subscript.stories.d.ts +6 -0
  143. package/lib/cjs/components/subscript.stories.d.ts.map +1 -0
  144. package/lib/cjs/components/subscript.ws.cjs +14 -0
  145. package/lib/cjs/components/subscript.ws.d.ts +5 -0
  146. package/lib/cjs/components/subscript.ws.d.ts.map +1 -0
  147. package/lib/cjs/components/superscript.cjs +8 -0
  148. package/lib/cjs/components/superscript.d.ts +3 -0
  149. package/lib/cjs/components/superscript.d.ts.map +1 -0
  150. package/lib/cjs/components/superscript.props.json +491 -0
  151. package/lib/cjs/components/superscript.stories.cjs +14 -0
  152. package/lib/cjs/components/superscript.stories.d.ts +6 -0
  153. package/lib/cjs/components/superscript.stories.d.ts.map +1 -0
  154. package/lib/cjs/components/superscript.ws.cjs +14 -0
  155. package/lib/cjs/components/superscript.ws.d.ts +5 -0
  156. package/lib/cjs/components/superscript.ws.d.ts.map +1 -0
  157. package/lib/cjs/components/text-block.cjs +8 -0
  158. package/lib/cjs/components/text-block.d.ts +3 -0
  159. package/lib/cjs/components/text-block.d.ts.map +1 -0
  160. package/lib/cjs/components/text-block.props.json +491 -0
  161. package/lib/cjs/components/text-block.stories.cjs +14 -0
  162. package/lib/cjs/components/text-block.stories.d.ts +6 -0
  163. package/lib/cjs/components/text-block.stories.d.ts.map +1 -0
  164. package/lib/cjs/components/text-block.ws.cjs +23 -0
  165. package/lib/cjs/components/text-block.ws.d.ts +5 -0
  166. package/lib/cjs/components/text-block.ws.d.ts.map +1 -0
  167. package/lib/cjs/css/breakpoints.cjs +9 -0
  168. package/lib/cjs/css/breakpoints.d.ts +4 -0
  169. package/lib/cjs/css/breakpoints.d.ts.map +1 -0
  170. package/lib/cjs/css/categories.cjs +229 -0
  171. package/lib/cjs/css/categories.d.ts +408 -0
  172. package/lib/cjs/css/categories.d.ts.map +1 -0
  173. package/lib/cjs/css/get-browser-style.cjs +48 -0
  174. package/lib/cjs/css/get-browser-style.d.ts +3 -0
  175. package/lib/cjs/css/get-browser-style.d.ts.map +1 -0
  176. package/lib/cjs/css/index.cjs +19 -0
  177. package/lib/cjs/css/index.d.ts +4 -0
  178. package/lib/cjs/css/index.d.ts.map +1 -0
  179. package/lib/cjs/db/index.cjs +18 -0
  180. package/lib/cjs/db/index.d.ts +3 -0
  181. package/lib/cjs/db/index.d.ts.map +1 -0
  182. package/lib/cjs/db/instance.cjs +21 -0
  183. package/lib/cjs/db/instance.d.ts +14 -0
  184. package/lib/cjs/db/instance.d.ts.map +1 -0
  185. package/lib/cjs/db/types.cjs +2 -0
  186. package/lib/cjs/db/types.d.ts +17 -0
  187. package/lib/cjs/db/types.d.ts.map +1 -0
  188. package/lib/cjs/index.cjs +37 -0
  189. package/lib/cjs/index.d.ts +9 -0
  190. package/lib/cjs/index.d.ts.map +1 -0
  191. package/lib/cjs/pubsub/create.cjs +66 -0
  192. package/lib/cjs/pubsub/create.d.ts +29 -0
  193. package/lib/cjs/pubsub/create.d.ts.map +1 -0
  194. package/lib/cjs/pubsub/index.cjs +17 -0
  195. package/lib/cjs/pubsub/index.d.ts +2 -0
  196. package/lib/cjs/pubsub/index.d.ts.map +1 -0
  197. package/lib/cjs/remix/handle-request.server.cjs +15 -0
  198. package/lib/cjs/remix/handle-request.server.d.ts +3 -0
  199. package/lib/cjs/remix/handle-request.server.d.ts.map +1 -0
  200. package/lib/cjs/remix/index.cjs +18 -0
  201. package/lib/cjs/remix/index.d.ts +3 -0
  202. package/lib/cjs/remix/index.d.ts.map +1 -0
  203. package/lib/cjs/remix/root.cjs +13 -0
  204. package/lib/cjs/remix/root.d.ts +8 -0
  205. package/lib/cjs/remix/root.d.ts.map +1 -0
  206. package/lib/cjs/tree/create-elements-tree.cjs +54 -0
  207. package/lib/cjs/tree/create-elements-tree.d.ts +19 -0
  208. package/lib/cjs/tree/create-elements-tree.d.ts.map +1 -0
  209. package/lib/cjs/tree/index.cjs +19 -0
  210. package/lib/cjs/tree/index.d.ts +4 -0
  211. package/lib/cjs/tree/index.d.ts.map +1 -0
  212. package/lib/cjs/tree/root.cjs +17 -0
  213. package/lib/cjs/tree/root.d.ts +18 -0
  214. package/lib/cjs/tree/root.d.ts.map +1 -0
  215. package/lib/cjs/tree/session-storage-polyfill.cjs +39 -0
  216. package/lib/cjs/tree/session-storage-polyfill.d.ts +2 -0
  217. package/lib/cjs/tree/session-storage-polyfill.d.ts.map +1 -0
  218. package/lib/cjs/tree/wrapper-component.cjs +53 -0
  219. package/lib/cjs/tree/wrapper-component.d.ts +12 -0
  220. package/lib/cjs/tree/wrapper-component.d.ts.map +1 -0
  221. package/lib/cjs/user-props/all-user-props.cjs +21 -0
  222. package/lib/cjs/user-props/all-user-props.d.ts +8 -0
  223. package/lib/cjs/user-props/all-user-props.d.ts.map +1 -0
  224. package/lib/cjs/user-props/index.cjs +20 -0
  225. package/lib/cjs/user-props/index.d.ts +5 -0
  226. package/lib/cjs/user-props/index.d.ts.map +1 -0
  227. package/lib/cjs/user-props/schema.cjs +33 -0
  228. package/lib/cjs/user-props/schema.d.ts +72 -0
  229. package/lib/cjs/user-props/schema.d.ts.map +1 -0
  230. package/lib/cjs/user-props/types.cjs +2 -0
  231. package/lib/cjs/user-props/types.d.ts +13 -0
  232. package/lib/cjs/user-props/types.d.ts.map +1 -0
  233. package/lib/cjs/user-props/use-user-props.cjs +33 -0
  234. package/lib/cjs/user-props/use-user-props.d.ts +12 -0
  235. package/lib/cjs/user-props/use-user-props.d.ts.map +1 -0
  236. package/lib/components/body.js +4 -7
  237. package/lib/components/body.stories.js +5 -9
  238. package/lib/components/body.ws.js +5 -7
  239. package/lib/components/bold.js +4 -7
  240. package/lib/components/bold.stories.js +7 -10
  241. package/lib/components/bold.ws.js +5 -7
  242. package/lib/components/box.js +4 -7
  243. package/lib/components/box.stories.js +7 -10
  244. package/lib/components/box.ws.js +5 -7
  245. package/lib/components/button.js +5 -8
  246. package/lib/components/button.stories.js +7 -10
  247. package/lib/components/button.ws.js +5 -7
  248. package/lib/components/component-type.js +11 -14
  249. package/lib/components/form.js +4 -7
  250. package/lib/components/form.stories.js +7 -10
  251. package/lib/components/form.ws.js +5 -7
  252. package/lib/components/heading.js +4 -7
  253. package/lib/components/heading.stories.js +7 -10
  254. package/lib/components/heading.ws.js +5 -7
  255. package/lib/components/image.d.ts +2 -10
  256. package/lib/components/image.d.ts.map +1 -1
  257. package/lib/components/image.js +6 -21
  258. package/lib/components/image.stories.d.ts +2 -10
  259. package/lib/components/image.stories.d.ts.map +1 -1
  260. package/lib/components/image.stories.js +7 -10
  261. package/lib/components/image.ws.js +5 -7
  262. package/lib/components/index.js +15 -36
  263. package/lib/components/index.test.js +3 -28
  264. package/lib/components/input.js +4 -7
  265. package/lib/components/input.stories.js +7 -10
  266. package/lib/components/input.ws.js +5 -7
  267. package/lib/components/italic.js +4 -7
  268. package/lib/components/italic.stories.js +7 -10
  269. package/lib/components/italic.ws.js +5 -7
  270. package/lib/components/link.js +4 -7
  271. package/lib/components/link.stories.js +7 -10
  272. package/lib/components/link.ws.js +5 -7
  273. package/lib/components/meta.d.ts +13 -4
  274. package/lib/components/meta.d.ts.map +1 -1
  275. package/lib/components/meta.js +32 -37
  276. package/lib/components/paragraph.js +4 -7
  277. package/lib/components/paragraph.stories.js +7 -10
  278. package/lib/components/paragraph.ws.js +5 -7
  279. package/lib/components/span.js +4 -7
  280. package/lib/components/span.stories.js +7 -10
  281. package/lib/components/span.ws.js +5 -7
  282. package/lib/components/subscript.js +4 -7
  283. package/lib/components/subscript.stories.js +7 -10
  284. package/lib/components/subscript.ws.js +5 -7
  285. package/lib/components/superscript.js +4 -7
  286. package/lib/components/superscript.stories.js +7 -10
  287. package/lib/components/superscript.ws.js +5 -7
  288. package/lib/components/text-block.js +4 -7
  289. package/lib/components/text-block.stories.js +7 -10
  290. package/lib/components/text-block.ws.js +5 -7
  291. package/lib/css/breakpoints.js +1 -4
  292. package/lib/css/categories.js +5 -8
  293. package/lib/css/get-browser-style.js +7 -11
  294. package/lib/css/index.js +3 -19
  295. package/lib/db/index.js +2 -18
  296. package/lib/db/instance.js +8 -12
  297. package/lib/db/types.d.ts +6 -0
  298. package/lib/db/types.d.ts.map +1 -1
  299. package/lib/db/types.js +1 -2
  300. package/lib/index.js +8 -37
  301. package/lib/pubsub/create.js +8 -15
  302. package/lib/pubsub/index.js +1 -17
  303. package/lib/remix/handle-request.server.js +5 -9
  304. package/lib/remix/index.js +2 -18
  305. package/lib/remix/root.js +5 -9
  306. package/lib/tree/create-elements-tree.js +7 -11
  307. package/lib/tree/index.js +3 -19
  308. package/lib/tree/root.js +7 -11
  309. package/lib/tree/session-storage-polyfill.js +2 -6
  310. package/lib/tree/wrapper-component.js +11 -39
  311. package/lib/tsconfig.tsbuildinfo +1 -0
  312. package/lib/user-props/all-user-props.js +7 -11
  313. package/lib/user-props/index.js +4 -20
  314. package/lib/user-props/schema.d.ts +41 -4
  315. package/lib/user-props/schema.d.ts.map +1 -1
  316. package/lib/user-props/schema.js +29 -10
  317. package/lib/user-props/types.js +1 -2
  318. package/lib/user-props/use-user-props.d.ts.map +1 -1
  319. package/lib/user-props/use-user-props.js +7 -11
  320. package/package.json +14 -9
  321. package/lib/component-utils/image.d.ts +0 -107
  322. package/lib/component-utils/image.d.ts.map +0 -1
  323. package/lib/component-utils/image.js +0 -198
  324. package/lib/component-utils/image.test.d.ts +0 -2
  325. package/lib/component-utils/image.test.d.ts.map +0 -1
  326. package/lib/component-utils/image.test.js +0 -132
  327. package/lib/components/image-dev.stories.d.ts +0 -36
  328. package/lib/components/image-dev.stories.d.ts.map +0 -1
  329. package/lib/components/image-dev.stories.js +0 -102
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const image_1 = require("./image");
4
- describe("Image optimizations applied", () => {
5
- test("width is number, create pixel density descriptor 'x'", () => {
6
- const imgAttr = (0, image_1.getImageAttributes)({
7
- optimize: true,
8
- width: 100,
9
- src: "https://webstudio.is/logo.webp",
10
- srcSet: undefined,
11
- sizes: undefined,
12
- quality: 100,
13
- });
14
- expect(imgAttr).toMatchInlineSnapshot(`
15
- Object {
16
- "sizes": undefined,
17
- "src": "/cdn-cgi/image/width=256,quality=100,format=auto/https://webstudio.is/logo.webp",
18
- "srcSet": "/cdn-cgi/image/width=128,quality=100,format=auto/https://webstudio.is/logo.webp 1x, /cdn-cgi/image/width=256,quality=100,format=auto/https://webstudio.is/logo.webp 2x",
19
- }
20
- `);
21
- });
22
- test("width is undefined, create 'w' descriptor and sizes prop", () => {
23
- const imgAttr = (0, image_1.getImageAttributes)({
24
- optimize: true,
25
- width: undefined,
26
- src: "https://webstudio.is/logo.webp",
27
- srcSet: undefined,
28
- sizes: undefined,
29
- quality: 90,
30
- });
31
- expect(imgAttr).toMatchInlineSnapshot(`
32
- Object {
33
- "sizes": "(min-width: 1280px) 50vw, 100vw",
34
- "src": "/cdn-cgi/image/width=3840,quality=90,format=auto/https://webstudio.is/logo.webp",
35
- "srcSet": "/cdn-cgi/image/width=384,quality=90,format=auto/https://webstudio.is/logo.webp 384w, /cdn-cgi/image/width=640,quality=90,format=auto/https://webstudio.is/logo.webp 640w, /cdn-cgi/image/width=750,quality=90,format=auto/https://webstudio.is/logo.webp 750w, /cdn-cgi/image/width=828,quality=90,format=auto/https://webstudio.is/logo.webp 828w, /cdn-cgi/image/width=1080,quality=90,format=auto/https://webstudio.is/logo.webp 1080w, /cdn-cgi/image/width=1200,quality=90,format=auto/https://webstudio.is/logo.webp 1200w, /cdn-cgi/image/width=1920,quality=90,format=auto/https://webstudio.is/logo.webp 1920w, /cdn-cgi/image/width=2048,quality=90,format=auto/https://webstudio.is/logo.webp 2048w, /cdn-cgi/image/width=3840,quality=90,format=auto/https://webstudio.is/logo.webp 3840w",
36
- }
37
- `);
38
- });
39
- test("width is undefined and size defined, creates 'w' descriptor and use input sizes props", () => {
40
- const imgAttr = (0, image_1.getImageAttributes)({
41
- optimize: true,
42
- width: undefined,
43
- src: "https://webstudio.is/logo.webp",
44
- srcSet: undefined,
45
- sizes: "100vw",
46
- quality: 70,
47
- });
48
- expect(imgAttr).toMatchInlineSnapshot(`
49
- Object {
50
- "sizes": "100vw",
51
- "src": "/cdn-cgi/image/width=3840,quality=70,format=auto/https://webstudio.is/logo.webp",
52
- "srcSet": "/cdn-cgi/image/width=640,quality=70,format=auto/https://webstudio.is/logo.webp 640w, /cdn-cgi/image/width=750,quality=70,format=auto/https://webstudio.is/logo.webp 750w, /cdn-cgi/image/width=828,quality=70,format=auto/https://webstudio.is/logo.webp 828w, /cdn-cgi/image/width=1080,quality=70,format=auto/https://webstudio.is/logo.webp 1080w, /cdn-cgi/image/width=1200,quality=70,format=auto/https://webstudio.is/logo.webp 1200w, /cdn-cgi/image/width=1920,quality=70,format=auto/https://webstudio.is/logo.webp 1920w, /cdn-cgi/image/width=2048,quality=70,format=auto/https://webstudio.is/logo.webp 2048w, /cdn-cgi/image/width=3840,quality=70,format=auto/https://webstudio.is/logo.webp 3840w",
53
- }
54
- `);
55
- });
56
- test("custom loader", () => {
57
- const imgAttr = (0, image_1.getImageAttributes)({
58
- optimize: true,
59
- width: undefined,
60
- src: "https://webstudio.is/logo.webp",
61
- srcSet: undefined,
62
- sizes: "100vw",
63
- quality: 70,
64
- loader: ({ width, src, quality }) => `${new URL(src).pathname}?w=${width}&q=${quality}`,
65
- });
66
- expect(imgAttr).toMatchInlineSnapshot(`
67
- Object {
68
- "sizes": "100vw",
69
- "src": "/logo.webp?w=3840&q=70",
70
- "srcSet": "/logo.webp?w=640&q=70 640w, /logo.webp?w=750&q=70 750w, /logo.webp?w=828&q=70 828w, /logo.webp?w=1080&q=70 1080w, /logo.webp?w=1200&q=70 1200w, /logo.webp?w=1920&q=70 1920w, /logo.webp?w=2048&q=70 2048w, /logo.webp?w=3840&q=70 3840w",
71
- }
72
- `);
73
- });
74
- });
75
- describe("Image optimizations not applied", () => {
76
- test("optimize is false", () => {
77
- const imgAttr = (0, image_1.getImageAttributes)({
78
- optimize: false,
79
- width: 100,
80
- src: "https://webstudio.is/logo.webp",
81
- srcSet: undefined,
82
- sizes: undefined,
83
- quality: 100,
84
- });
85
- expect(imgAttr).toMatchInlineSnapshot(`
86
- Object {
87
- "sizes": undefined,
88
- "src": "https://webstudio.is/logo.webp",
89
- "srcSet": undefined,
90
- }
91
- `);
92
- });
93
- test("srcSet is defined", () => {
94
- const imgAttr = (0, image_1.getImageAttributes)({
95
- optimize: true,
96
- width: 100,
97
- src: "https://webstudio.is/logo.webp",
98
- srcSet: "user-defined-srcset",
99
- sizes: undefined,
100
- quality: 100,
101
- });
102
- expect(imgAttr).toMatchInlineSnapshot(`
103
- Object {
104
- "sizes": undefined,
105
- "src": "https://webstudio.is/logo.webp",
106
- "srcSet": "user-defined-srcset",
107
- }
108
- `);
109
- });
110
- test("src is empty", () => {
111
- const imgAttr = (0, image_1.getImageAttributes)({
112
- optimize: true,
113
- width: 100,
114
- src: "",
115
- srcSet: undefined,
116
- sizes: undefined,
117
- quality: 100,
118
- });
119
- expect(imgAttr).toMatchInlineSnapshot(`null`);
120
- });
121
- test("src is undefined", () => {
122
- const imgAttr = (0, image_1.getImageAttributes)({
123
- optimize: true,
124
- width: 100,
125
- src: undefined,
126
- srcSet: undefined,
127
- sizes: undefined,
128
- quality: 100,
129
- });
130
- expect(imgAttr).toMatchInlineSnapshot(`null`);
131
- });
132
- });
@@ -1,36 +0,0 @@
1
- import React from "react";
2
- import type { ComponentMeta, ComponentStory } from "@storybook/react";
3
- import { type ImageLoader } from "../component-utils/image";
4
- declare const _default: ComponentMeta<React.ForwardRefExoticComponent<Pick<React.ClassAttributes<HTMLImageElement> & React.ImgHTMLAttributes<HTMLImageElement> & {
5
- quality?: number | undefined;
6
- loader?: ImageLoader | undefined;
7
- optimize?: boolean | undefined;
8
- }, "key" | "quality" | "loader" | keyof React.ImgHTMLAttributes<HTMLImageElement> | "optimize"> & React.RefAttributes<HTMLImageElement>>>;
9
- export default _default;
10
- /**
11
- * Load images depending on image width and device per pixel ratio.
12
- **/
13
- export declare const FixedWidthImage: ComponentStory<React.FunctionComponent>;
14
- /**
15
- * Preserve ratio using object-fit: cover. Load images depending on image width and device per pixel ratio.
16
- **/
17
- export declare const FixedWidthImageCover: ComponentStory<React.FunctionComponent>;
18
- /**
19
- * Load images depending on the viewport width.
20
- **/
21
- export declare const UnknownWidthImage: ComponentStory<React.FunctionComponent>;
22
- /**
23
- * Fit width of the parent container, has own aspect-ratio and object-fit=cover.
24
- * Load images depending on the viewport width.
25
- **/
26
- export declare const AspectRatioImage: ComponentStory<React.FunctionComponent>;
27
- /**
28
- * Fill width and height of the relative parent container, object-fit=cover. Load images depending on the viewport width.
29
- **/
30
- export declare const FillParentImage: ComponentStory<React.FunctionComponent>;
31
- /**
32
- * "sizes" attribute explicitly equal to 100vw allowing to skip the default behavior.
33
- * See DEFAULT_SIZES in the Image component. Load images depending on the viewport width.
34
- **/
35
- export declare const HeroImage: ComponentStory<React.FunctionComponent>;
36
- //# sourceMappingURL=image-dev.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image-dev.stories.d.ts","sourceRoot":"","sources":["../../src/components/image-dev.stories.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAItE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;;;;;;AAO5D,wBAE0C;AAgF1C;;IAEI;AACJ,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAEnE,CAAC;AAEF;;IAEI;AACJ,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAC/C,KAAK,CAAC,iBAAiB,CAQxB,CAAC;AAEF;;IAEI;AACJ,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAC5C,KAAK,CAAC,iBAAiB,CACa,CAAC;AAEvC;;;IAGI;AACJ,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAOpE,CAAC;AAEF;;IAEI;AACJ,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAYnE,CAAC;AAEF;;;IAGI;AACJ,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAU7D,CAAC"}
@@ -1,102 +0,0 @@
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;