@webstudio-is/react-sdk 0.9.0 → 0.10.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 (585) hide show
  1. package/lib/app/custom-components/image.js +35 -13
  2. package/lib/app/custom-components/index.js +18 -1
  3. package/lib/app/custom-components/link.js +6 -0
  4. package/lib/app/custom-components/rich-text-link.js +6 -0
  5. package/lib/app/custom-components/shared/remix-link.js +29 -0
  6. package/lib/app/handle-request.server.js +16 -8
  7. package/lib/app/params.js +7 -3
  8. package/lib/app/root.js +37 -6
  9. package/lib/cjs/app/custom-components/image.cjs +60 -24
  10. package/lib/cjs/app/custom-components/index.cjs +35 -24
  11. package/lib/cjs/app/custom-components/link.cjs +26 -0
  12. package/lib/cjs/app/custom-components/rich-text-link.cjs +26 -0
  13. package/lib/cjs/app/custom-components/shared/remix-link.cjs +49 -0
  14. package/lib/cjs/app/handle-request.server.cjs +36 -12
  15. package/lib/cjs/app/index.cjs +18 -17
  16. package/lib/cjs/app/params.cjs +24 -5
  17. package/lib/cjs/app/root.cjs +58 -11
  18. package/lib/cjs/components/__generated__/body.props.json +489 -489
  19. package/lib/cjs/components/__generated__/bold.props.json +489 -489
  20. package/lib/cjs/components/__generated__/box.props.json +506 -506
  21. package/lib/cjs/components/__generated__/button.props.json +545 -545
  22. package/lib/cjs/components/__generated__/form.props.json +529 -529
  23. package/lib/cjs/components/__generated__/heading.props.json +495 -495
  24. package/lib/cjs/components/__generated__/image.props.json +558 -558
  25. package/lib/cjs/components/__generated__/input.props.json +655 -655
  26. package/lib/cjs/components/__generated__/italic.props.json +489 -489
  27. package/lib/cjs/components/__generated__/link.props.json +545 -545
  28. package/lib/cjs/components/__generated__/paragraph.props.json +489 -489
  29. package/lib/cjs/components/__generated__/rich-text-link.props.json +547 -0
  30. package/lib/cjs/components/__generated__/span.props.json +489 -489
  31. package/lib/cjs/components/__generated__/subscript.props.json +489 -489
  32. package/lib/cjs/components/__generated__/superscript.props.json +489 -489
  33. package/lib/cjs/components/__generated__/text-block.props.json +489 -489
  34. package/lib/cjs/components/body.cjs +29 -6
  35. package/lib/cjs/components/body.ws.cjs +83 -59
  36. package/lib/cjs/components/bold.cjs +29 -6
  37. package/lib/cjs/components/bold.ws.cjs +35 -11
  38. package/lib/cjs/components/box.cjs +29 -7
  39. package/lib/cjs/components/box.ws.cjs +40 -16
  40. package/lib/cjs/components/button.cjs +33 -8
  41. package/lib/cjs/components/button.ws.cjs +36 -12
  42. package/lib/cjs/components/component-type.cjs +77 -27
  43. package/lib/cjs/components/form.cjs +29 -6
  44. package/lib/cjs/components/form.ws.cjs +45 -21
  45. package/lib/cjs/components/heading.cjs +29 -7
  46. package/lib/cjs/components/heading.ws.cjs +36 -12
  47. package/lib/cjs/components/image.cjs +39 -14
  48. package/lib/cjs/components/image.ws.cjs +45 -24
  49. package/lib/cjs/components/index.cjs +133 -67
  50. package/lib/cjs/components/input.cjs +29 -6
  51. package/lib/cjs/components/input.ws.cjs +35 -11
  52. package/lib/cjs/components/italic.cjs +29 -6
  53. package/lib/cjs/components/italic.ws.cjs +40 -16
  54. package/lib/cjs/components/link.cjs +32 -7
  55. package/lib/cjs/components/link.ws.cjs +46 -22
  56. package/lib/cjs/components/paragraph.cjs +29 -6
  57. package/lib/cjs/components/paragraph.ws.cjs +36 -12
  58. package/lib/cjs/components/rich-text-link.cjs +33 -0
  59. package/lib/cjs/components/rich-text-link.ws.cjs +38 -0
  60. package/lib/cjs/components/span.cjs +29 -6
  61. package/lib/cjs/components/span.ws.cjs +35 -11
  62. package/lib/cjs/components/subscript.cjs +29 -6
  63. package/lib/cjs/components/subscript.ws.cjs +35 -11
  64. package/lib/cjs/components/superscript.cjs +29 -6
  65. package/lib/cjs/components/superscript.ws.cjs +35 -11
  66. package/lib/cjs/components/text-block.cjs +29 -6
  67. package/lib/cjs/components/text-block.ws.cjs +42 -18
  68. package/lib/cjs/css/breakpoints.cjs +27 -7
  69. package/lib/cjs/css/categories.cjs +218 -203
  70. package/lib/cjs/css/get-browser-style.cjs +56 -41
  71. package/lib/cjs/css/index.cjs +18 -17
  72. package/lib/cjs/db/index.cjs +17 -16
  73. package/lib/cjs/db/instance.cjs +37 -17
  74. package/lib/cjs/db/types.cjs +15 -1
  75. package/lib/cjs/index.cjs +30 -35
  76. package/lib/cjs/pubsub/create.cjs +76 -61
  77. package/lib/cjs/pubsub/index.cjs +16 -15
  78. package/lib/cjs/tree/create-elements-tree.cjs +90 -48
  79. package/lib/cjs/tree/index.cjs +18 -17
  80. package/lib/cjs/tree/root.cjs +42 -42
  81. package/lib/cjs/tree/session-storage-polyfill.cjs +60 -37
  82. package/lib/cjs/tree/wrapper-component.cjs +54 -24
  83. package/lib/cjs/user-props/all-user-props.cjs +35 -17
  84. package/lib/cjs/user-props/index.cjs +19 -18
  85. package/lib/cjs/user-props/schema.cjs +52 -31
  86. package/lib/cjs/user-props/types.cjs +15 -1
  87. package/lib/cjs/user-props/use-user-props-asset.cjs +38 -19
  88. package/lib/cjs/user-props/use-user-props.cjs +38 -20
  89. package/lib/components/__generated__/body.props.json +489 -489
  90. package/lib/components/__generated__/bold.props.json +489 -489
  91. package/lib/components/__generated__/box.props.json +506 -506
  92. package/lib/components/__generated__/button.props.json +545 -545
  93. package/lib/components/__generated__/form.props.json +529 -529
  94. package/lib/components/__generated__/heading.props.json +495 -495
  95. package/lib/components/__generated__/image.props.json +558 -558
  96. package/lib/components/__generated__/input.props.json +655 -655
  97. package/lib/components/__generated__/italic.props.json +489 -489
  98. package/lib/components/__generated__/link.props.json +545 -545
  99. package/lib/components/__generated__/paragraph.props.json +489 -489
  100. package/lib/components/__generated__/rich-text-link.props.json +547 -0
  101. package/lib/components/__generated__/span.props.json +489 -489
  102. package/lib/components/__generated__/subscript.props.json +489 -489
  103. package/lib/components/__generated__/superscript.props.json +489 -489
  104. package/lib/components/__generated__/text-block.props.json +489 -489
  105. package/lib/components/body.js +8 -2
  106. package/lib/components/body.ws.js +57 -57
  107. package/lib/components/bold.js +8 -2
  108. package/lib/components/bold.ws.js +9 -9
  109. package/lib/components/box.js +11 -3
  110. package/lib/components/box.ws.js +14 -14
  111. package/lib/components/button.js +11 -3
  112. package/lib/components/button.ws.js +10 -10
  113. package/lib/components/component-type.js +54 -21
  114. package/lib/components/form.js +8 -2
  115. package/lib/components/form.ws.js +19 -19
  116. package/lib/components/heading.js +11 -3
  117. package/lib/components/heading.ws.js +10 -10
  118. package/lib/components/image.js +17 -9
  119. package/lib/components/image.ws.js +19 -22
  120. package/lib/components/index.js +111 -61
  121. package/lib/components/input.js +8 -2
  122. package/lib/components/input.ws.js +9 -9
  123. package/lib/components/italic.js +8 -2
  124. package/lib/components/italic.ws.js +14 -14
  125. package/lib/components/link.js +11 -3
  126. package/lib/components/link.ws.js +20 -20
  127. package/lib/components/paragraph.js +8 -2
  128. package/lib/components/paragraph.ws.js +10 -10
  129. package/lib/components/rich-text-link.js +13 -0
  130. package/lib/components/rich-text-link.ws.js +12 -0
  131. package/lib/components/span.js +8 -2
  132. package/lib/components/span.ws.js +9 -9
  133. package/lib/components/subscript.js +8 -2
  134. package/lib/components/subscript.ws.js +9 -9
  135. package/lib/components/superscript.js +8 -2
  136. package/lib/components/superscript.ws.js +9 -9
  137. package/lib/components/text-block.js +8 -2
  138. package/lib/components/text-block.ws.js +16 -16
  139. package/lib/css/breakpoints.js +8 -5
  140. package/lib/css/categories.js +198 -200
  141. package/lib/css/get-browser-style.js +35 -36
  142. package/lib/db/instance.js +14 -10
  143. package/lib/db/types.js +0 -1
  144. package/lib/index.js +8 -2
  145. package/lib/pubsub/create.js +51 -55
  146. package/lib/tree/create-elements-tree.js +68 -42
  147. package/lib/tree/root.js +19 -12
  148. package/lib/tree/session-storage-polyfill.js +41 -34
  149. package/lib/tree/wrapper-component.js +33 -18
  150. package/lib/user-props/all-user-props.js +15 -13
  151. package/lib/user-props/schema.js +33 -29
  152. package/lib/user-props/types.js +0 -1
  153. package/lib/user-props/use-user-props-asset.js +18 -15
  154. package/lib/user-props/use-user-props.js +18 -16
  155. package/package.json +11 -19
  156. package/src/app/custom-components/image.tsx +62 -0
  157. package/src/app/custom-components/index.ts +17 -0
  158. package/src/app/custom-components/link.tsx +4 -0
  159. package/src/app/custom-components/rich-text-link.tsx +4 -0
  160. package/src/app/custom-components/shared/remix-link.tsx +40 -0
  161. package/src/app/handle-request.server.tsx +21 -0
  162. package/{lib/app/index.d.ts → src/app/index.ts} +0 -1
  163. package/src/app/params.ts +13 -0
  164. package/src/app/root.tsx +27 -0
  165. package/src/components/__generated__/body.props.json +491 -0
  166. package/src/components/__generated__/bold.props.json +491 -0
  167. package/src/components/__generated__/box.props.json +508 -0
  168. package/src/components/__generated__/button.props.json +547 -0
  169. package/src/components/__generated__/form.props.json +531 -0
  170. package/src/components/__generated__/heading.props.json +497 -0
  171. package/src/components/__generated__/image.props.json +560 -0
  172. package/src/components/__generated__/input.props.json +657 -0
  173. package/src/components/__generated__/italic.props.json +491 -0
  174. package/src/components/__generated__/link.props.json +547 -0
  175. package/src/components/__generated__/paragraph.props.json +491 -0
  176. package/src/components/__generated__/rich-text-link.props.json +547 -0
  177. package/src/components/__generated__/span.props.json +491 -0
  178. package/src/components/__generated__/subscript.props.json +491 -0
  179. package/src/components/__generated__/superscript.props.json +491 -0
  180. package/src/components/__generated__/text-block.props.json +491 -0
  181. package/src/components/body.stories.tsx +11 -0
  182. package/src/components/body.tsx +10 -0
  183. package/src/components/body.ws.tsx +63 -0
  184. package/src/components/bold.stories.tsx +16 -0
  185. package/src/components/bold.tsx +10 -0
  186. package/src/components/bold.ws.tsx +12 -0
  187. package/src/components/box.stories.tsx +17 -0
  188. package/src/components/box.tsx +31 -0
  189. package/src/components/box.ws.ts +20 -0
  190. package/src/components/button.stories.tsx +17 -0
  191. package/src/components/button.tsx +14 -0
  192. package/src/components/button.ws.tsx +13 -0
  193. package/src/components/component-type.ts +89 -0
  194. package/src/components/form.stories.tsx +14 -0
  195. package/src/components/form.tsx +10 -0
  196. package/src/components/form.ws.tsx +25 -0
  197. package/src/components/heading.stories.tsx +16 -0
  198. package/src/components/heading.tsx +20 -0
  199. package/src/components/heading.ws.tsx +13 -0
  200. package/src/components/image.stories.tsx +15 -0
  201. package/src/components/image.tsx +52 -0
  202. package/src/components/image.ws.tsx +28 -0
  203. package/src/components/index.test.ts +28 -0
  204. package/src/components/index.ts +159 -0
  205. package/src/components/input.stories.tsx +14 -0
  206. package/src/components/input.tsx +11 -0
  207. package/src/components/input.ws.tsx +12 -0
  208. package/src/components/italic.stories.tsx +16 -0
  209. package/src/components/italic.tsx +10 -0
  210. package/src/components/italic.ws.tsx +20 -0
  211. package/src/components/link.stories.tsx +16 -0
  212. package/src/components/link.tsx +9 -0
  213. package/src/components/link.ws.tsx +26 -0
  214. package/src/components/paragraph.stories.tsx +16 -0
  215. package/src/components/paragraph.tsx +10 -0
  216. package/src/components/paragraph.ws.tsx +13 -0
  217. package/src/components/rich-text-link.stories.tsx +16 -0
  218. package/src/components/rich-text-link.tsx +9 -0
  219. package/src/components/rich-text-link.ws.tsx +12 -0
  220. package/src/components/span.stories.tsx +16 -0
  221. package/src/components/span.tsx +10 -0
  222. package/src/components/span.ws.tsx +12 -0
  223. package/src/components/subscript.stories.tsx +16 -0
  224. package/src/components/subscript.tsx +10 -0
  225. package/src/components/subscript.ws.tsx +12 -0
  226. package/src/components/superscript.stories.tsx +16 -0
  227. package/src/components/superscript.tsx +10 -0
  228. package/src/components/superscript.ws.tsx +12 -0
  229. package/src/components/text-block.stories.tsx +16 -0
  230. package/src/components/text-block.tsx +10 -0
  231. package/src/components/text-block.ws.tsx +22 -0
  232. package/src/css/breakpoints.ts +10 -0
  233. package/src/css/categories.ts +254 -0
  234. package/src/css/get-browser-style.ts +50 -0
  235. package/{lib/cjs/css/index.d.ts → src/css/index.ts} +0 -1
  236. package/{lib/cjs/db/index.d.ts → src/db/index.ts} +0 -1
  237. package/src/db/instance.ts +34 -0
  238. package/src/db/types.ts +18 -0
  239. package/{lib/cjs/index.d.ts → src/index.ts} +5 -3
  240. package/src/pubsub/create.ts +84 -0
  241. package/src/pubsub/index.ts +1 -0
  242. package/src/tree/create-elements-tree.tsx +102 -0
  243. package/{lib/cjs/tree/index.d.ts → src/tree/index.ts} +0 -1
  244. package/src/tree/root.ts +45 -0
  245. package/src/tree/session-storage-polyfill.tsx +50 -0
  246. package/src/tree/wrapper-component.tsx +48 -0
  247. package/src/user-props/all-user-props.ts +22 -0
  248. package/{lib/cjs/user-props/index.d.ts → src/user-props/index.ts} +0 -1
  249. package/src/user-props/schema.ts +35 -0
  250. package/src/user-props/types.ts +14 -0
  251. package/src/user-props/use-user-props-asset.ts +31 -0
  252. package/src/user-props/use-user-props.ts +30 -0
  253. package/lib/app/custom-components/image.d.ts +0 -9
  254. package/lib/app/custom-components/image.d.ts.map +0 -1
  255. package/lib/app/custom-components/index.d.ts +0 -2
  256. package/lib/app/custom-components/index.d.ts.map +0 -1
  257. package/lib/app/handle-request.server.d.ts +0 -3
  258. package/lib/app/handle-request.server.d.ts.map +0 -1
  259. package/lib/app/index.d.ts.map +0 -1
  260. package/lib/app/params.d.ts +0 -6
  261. package/lib/app/params.d.ts.map +0 -1
  262. package/lib/app/root.d.ts +0 -9
  263. package/lib/app/root.d.ts.map +0 -1
  264. package/lib/cjs/app/custom-components/image.d.ts +0 -9
  265. package/lib/cjs/app/custom-components/image.d.ts.map +0 -1
  266. package/lib/cjs/app/custom-components/index.d.ts +0 -2
  267. package/lib/cjs/app/custom-components/index.d.ts.map +0 -1
  268. package/lib/cjs/app/handle-request.server.d.ts +0 -3
  269. package/lib/cjs/app/handle-request.server.d.ts.map +0 -1
  270. package/lib/cjs/app/index.d.ts +0 -4
  271. package/lib/cjs/app/index.d.ts.map +0 -1
  272. package/lib/cjs/app/params.d.ts +0 -6
  273. package/lib/cjs/app/params.d.ts.map +0 -1
  274. package/lib/cjs/app/root.d.ts +0 -9
  275. package/lib/cjs/app/root.d.ts.map +0 -1
  276. package/lib/cjs/components/body.d.ts +0 -3
  277. package/lib/cjs/components/body.d.ts.map +0 -1
  278. package/lib/cjs/components/body.stories.cjs +0 -11
  279. package/lib/cjs/components/body.stories.d.ts +0 -7
  280. package/lib/cjs/components/body.stories.d.ts.map +0 -1
  281. package/lib/cjs/components/body.ws.d.ts +0 -5
  282. package/lib/cjs/components/body.ws.d.ts.map +0 -1
  283. package/lib/cjs/components/bold.d.ts +0 -3
  284. package/lib/cjs/components/bold.d.ts.map +0 -1
  285. package/lib/cjs/components/bold.stories.cjs +0 -14
  286. package/lib/cjs/components/bold.stories.d.ts +0 -6
  287. package/lib/cjs/components/bold.stories.d.ts.map +0 -1
  288. package/lib/cjs/components/bold.ws.d.ts +0 -5
  289. package/lib/cjs/components/bold.ws.d.ts.map +0 -1
  290. package/lib/cjs/components/box.d.ts +0 -8
  291. package/lib/cjs/components/box.d.ts.map +0 -1
  292. package/lib/cjs/components/box.stories.cjs +0 -12
  293. package/lib/cjs/components/box.stories.d.ts +0 -10
  294. package/lib/cjs/components/box.stories.d.ts.map +0 -1
  295. package/lib/cjs/components/box.ws.d.ts +0 -5
  296. package/lib/cjs/components/box.ws.d.ts.map +0 -1
  297. package/lib/cjs/components/button.d.ts +0 -3
  298. package/lib/cjs/components/button.d.ts.map +0 -1
  299. package/lib/cjs/components/button.stories.cjs +0 -14
  300. package/lib/cjs/components/button.stories.d.ts +0 -6
  301. package/lib/cjs/components/button.stories.d.ts.map +0 -1
  302. package/lib/cjs/components/button.ws.d.ts +0 -5
  303. package/lib/cjs/components/button.ws.d.ts.map +0 -1
  304. package/lib/cjs/components/component-type.d.ts +0 -17
  305. package/lib/cjs/components/component-type.d.ts.map +0 -1
  306. package/lib/cjs/components/form.d.ts +0 -3
  307. package/lib/cjs/components/form.d.ts.map +0 -1
  308. package/lib/cjs/components/form.stories.cjs +0 -12
  309. package/lib/cjs/components/form.stories.d.ts +0 -6
  310. package/lib/cjs/components/form.stories.d.ts.map +0 -1
  311. package/lib/cjs/components/form.ws.d.ts +0 -5
  312. package/lib/cjs/components/form.ws.d.ts.map +0 -1
  313. package/lib/cjs/components/heading.d.ts +0 -8
  314. package/lib/cjs/components/heading.d.ts.map +0 -1
  315. package/lib/cjs/components/heading.stories.cjs +0 -14
  316. package/lib/cjs/components/heading.stories.d.ts +0 -10
  317. package/lib/cjs/components/heading.stories.d.ts.map +0 -1
  318. package/lib/cjs/components/heading.ws.d.ts +0 -5
  319. package/lib/cjs/components/heading.ws.d.ts.map +0 -1
  320. package/lib/cjs/components/image.d.ts +0 -3
  321. package/lib/cjs/components/image.d.ts.map +0 -1
  322. package/lib/cjs/components/image.stories.cjs +0 -12
  323. package/lib/cjs/components/image.stories.d.ts +0 -6
  324. package/lib/cjs/components/image.stories.d.ts.map +0 -1
  325. package/lib/cjs/components/image.ws.d.ts +0 -5
  326. package/lib/cjs/components/image.ws.d.ts.map +0 -1
  327. package/lib/cjs/components/index.d.ts +0 -90
  328. package/lib/cjs/components/index.d.ts.map +0 -1
  329. package/lib/cjs/components/index.test.cjs +0 -7
  330. package/lib/cjs/components/index.test.d.ts +0 -2
  331. package/lib/cjs/components/index.test.d.ts.map +0 -1
  332. package/lib/cjs/components/input.d.ts +0 -3
  333. package/lib/cjs/components/input.d.ts.map +0 -1
  334. package/lib/cjs/components/input.stories.cjs +0 -12
  335. package/lib/cjs/components/input.stories.d.ts +0 -6
  336. package/lib/cjs/components/input.stories.d.ts.map +0 -1
  337. package/lib/cjs/components/input.ws.d.ts +0 -5
  338. package/lib/cjs/components/input.ws.d.ts.map +0 -1
  339. package/lib/cjs/components/italic.d.ts +0 -3
  340. package/lib/cjs/components/italic.d.ts.map +0 -1
  341. package/lib/cjs/components/italic.stories.cjs +0 -14
  342. package/lib/cjs/components/italic.stories.d.ts +0 -6
  343. package/lib/cjs/components/italic.stories.d.ts.map +0 -1
  344. package/lib/cjs/components/italic.ws.d.ts +0 -5
  345. package/lib/cjs/components/italic.ws.d.ts.map +0 -1
  346. package/lib/cjs/components/link.d.ts +0 -8
  347. package/lib/cjs/components/link.d.ts.map +0 -1
  348. package/lib/cjs/components/link.stories.cjs +0 -14
  349. package/lib/cjs/components/link.stories.d.ts +0 -10
  350. package/lib/cjs/components/link.stories.d.ts.map +0 -1
  351. package/lib/cjs/components/link.ws.d.ts +0 -5
  352. package/lib/cjs/components/link.ws.d.ts.map +0 -1
  353. package/lib/cjs/components/meta.cjs +0 -42
  354. package/lib/cjs/components/meta.d.ts +0 -7464
  355. package/lib/cjs/components/meta.d.ts.map +0 -1
  356. package/lib/cjs/components/paragraph.d.ts +0 -3
  357. package/lib/cjs/components/paragraph.d.ts.map +0 -1
  358. package/lib/cjs/components/paragraph.stories.cjs +0 -14
  359. package/lib/cjs/components/paragraph.stories.d.ts +0 -6
  360. package/lib/cjs/components/paragraph.stories.d.ts.map +0 -1
  361. package/lib/cjs/components/paragraph.ws.d.ts +0 -5
  362. package/lib/cjs/components/paragraph.ws.d.ts.map +0 -1
  363. package/lib/cjs/components/span.d.ts +0 -3
  364. package/lib/cjs/components/span.d.ts.map +0 -1
  365. package/lib/cjs/components/span.stories.cjs +0 -14
  366. package/lib/cjs/components/span.stories.d.ts +0 -6
  367. package/lib/cjs/components/span.stories.d.ts.map +0 -1
  368. package/lib/cjs/components/span.ws.d.ts +0 -5
  369. package/lib/cjs/components/span.ws.d.ts.map +0 -1
  370. package/lib/cjs/components/subscript.d.ts +0 -3
  371. package/lib/cjs/components/subscript.d.ts.map +0 -1
  372. package/lib/cjs/components/subscript.stories.cjs +0 -14
  373. package/lib/cjs/components/subscript.stories.d.ts +0 -6
  374. package/lib/cjs/components/subscript.stories.d.ts.map +0 -1
  375. package/lib/cjs/components/subscript.ws.d.ts +0 -5
  376. package/lib/cjs/components/subscript.ws.d.ts.map +0 -1
  377. package/lib/cjs/components/superscript.d.ts +0 -3
  378. package/lib/cjs/components/superscript.d.ts.map +0 -1
  379. package/lib/cjs/components/superscript.stories.cjs +0 -14
  380. package/lib/cjs/components/superscript.stories.d.ts +0 -6
  381. package/lib/cjs/components/superscript.stories.d.ts.map +0 -1
  382. package/lib/cjs/components/superscript.ws.d.ts +0 -5
  383. package/lib/cjs/components/superscript.ws.d.ts.map +0 -1
  384. package/lib/cjs/components/text-block.d.ts +0 -3
  385. package/lib/cjs/components/text-block.d.ts.map +0 -1
  386. package/lib/cjs/components/text-block.stories.cjs +0 -14
  387. package/lib/cjs/components/text-block.stories.d.ts +0 -6
  388. package/lib/cjs/components/text-block.stories.d.ts.map +0 -1
  389. package/lib/cjs/components/text-block.ws.d.ts +0 -5
  390. package/lib/cjs/components/text-block.ws.d.ts.map +0 -1
  391. package/lib/cjs/css/breakpoints.d.ts +0 -4
  392. package/lib/cjs/css/breakpoints.d.ts.map +0 -1
  393. package/lib/cjs/css/categories.d.ts +0 -409
  394. package/lib/cjs/css/categories.d.ts.map +0 -1
  395. package/lib/cjs/css/get-browser-style.d.ts +0 -3
  396. package/lib/cjs/css/get-browser-style.d.ts.map +0 -1
  397. package/lib/cjs/css/index.d.ts.map +0 -1
  398. package/lib/cjs/db/index.d.ts.map +0 -1
  399. package/lib/cjs/db/instance.d.ts +0 -14
  400. package/lib/cjs/db/instance.d.ts.map +0 -1
  401. package/lib/cjs/db/types.d.ts +0 -17
  402. package/lib/cjs/db/types.d.ts.map +0 -1
  403. package/lib/cjs/index.d.ts.map +0 -1
  404. package/lib/cjs/pubsub/create.d.ts +0 -29
  405. package/lib/cjs/pubsub/create.d.ts.map +0 -1
  406. package/lib/cjs/pubsub/index.d.ts +0 -2
  407. package/lib/cjs/pubsub/index.d.ts.map +0 -1
  408. package/lib/cjs/tree/create-elements-tree.d.ts +0 -19
  409. package/lib/cjs/tree/create-elements-tree.d.ts.map +0 -1
  410. package/lib/cjs/tree/index.d.ts.map +0 -1
  411. package/lib/cjs/tree/root.d.ts +0 -20
  412. package/lib/cjs/tree/root.d.ts.map +0 -1
  413. package/lib/cjs/tree/session-storage-polyfill.d.ts +0 -3
  414. package/lib/cjs/tree/session-storage-polyfill.d.ts.map +0 -1
  415. package/lib/cjs/tree/wrapper-component.d.ts +0 -13
  416. package/lib/cjs/tree/wrapper-component.d.ts.map +0 -1
  417. package/lib/cjs/user-props/all-user-props.d.ts +0 -8
  418. package/lib/cjs/user-props/all-user-props.d.ts.map +0 -1
  419. package/lib/cjs/user-props/index.d.ts.map +0 -1
  420. package/lib/cjs/user-props/schema.d.ts +0 -72
  421. package/lib/cjs/user-props/schema.d.ts.map +0 -1
  422. package/lib/cjs/user-props/types.d.ts +0 -13
  423. package/lib/cjs/user-props/types.d.ts.map +0 -1
  424. package/lib/cjs/user-props/use-user-props-asset.d.ts +0 -8
  425. package/lib/cjs/user-props/use-user-props-asset.d.ts.map +0 -1
  426. package/lib/cjs/user-props/use-user-props.d.ts +0 -12
  427. package/lib/cjs/user-props/use-user-props.d.ts.map +0 -1
  428. package/lib/components/body.d.ts +0 -3
  429. package/lib/components/body.d.ts.map +0 -1
  430. package/lib/components/body.stories.d.ts +0 -7
  431. package/lib/components/body.stories.d.ts.map +0 -1
  432. package/lib/components/body.stories.js +0 -7
  433. package/lib/components/body.ws.d.ts +0 -5
  434. package/lib/components/body.ws.d.ts.map +0 -1
  435. package/lib/components/bold.d.ts +0 -3
  436. package/lib/components/bold.d.ts.map +0 -1
  437. package/lib/components/bold.stories.d.ts +0 -6
  438. package/lib/components/bold.stories.d.ts.map +0 -1
  439. package/lib/components/bold.stories.js +0 -11
  440. package/lib/components/bold.ws.d.ts +0 -5
  441. package/lib/components/bold.ws.d.ts.map +0 -1
  442. package/lib/components/box.d.ts +0 -8
  443. package/lib/components/box.d.ts.map +0 -1
  444. package/lib/components/box.stories.d.ts +0 -10
  445. package/lib/components/box.stories.d.ts.map +0 -1
  446. package/lib/components/box.stories.js +0 -9
  447. package/lib/components/box.ws.d.ts +0 -5
  448. package/lib/components/box.ws.d.ts.map +0 -1
  449. package/lib/components/button.d.ts +0 -3
  450. package/lib/components/button.d.ts.map +0 -1
  451. package/lib/components/button.stories.d.ts +0 -6
  452. package/lib/components/button.stories.d.ts.map +0 -1
  453. package/lib/components/button.stories.js +0 -11
  454. package/lib/components/button.ws.d.ts +0 -5
  455. package/lib/components/button.ws.d.ts.map +0 -1
  456. package/lib/components/component-type.d.ts +0 -17
  457. package/lib/components/component-type.d.ts.map +0 -1
  458. package/lib/components/form.d.ts +0 -3
  459. package/lib/components/form.d.ts.map +0 -1
  460. package/lib/components/form.stories.d.ts +0 -6
  461. package/lib/components/form.stories.d.ts.map +0 -1
  462. package/lib/components/form.stories.js +0 -9
  463. package/lib/components/form.ws.d.ts +0 -5
  464. package/lib/components/form.ws.d.ts.map +0 -1
  465. package/lib/components/heading.d.ts +0 -8
  466. package/lib/components/heading.d.ts.map +0 -1
  467. package/lib/components/heading.stories.d.ts +0 -10
  468. package/lib/components/heading.stories.d.ts.map +0 -1
  469. package/lib/components/heading.stories.js +0 -11
  470. package/lib/components/heading.ws.d.ts +0 -5
  471. package/lib/components/heading.ws.d.ts.map +0 -1
  472. package/lib/components/image.d.ts +0 -3
  473. package/lib/components/image.d.ts.map +0 -1
  474. package/lib/components/image.stories.d.ts +0 -6
  475. package/lib/components/image.stories.d.ts.map +0 -1
  476. package/lib/components/image.stories.js +0 -9
  477. package/lib/components/image.ws.d.ts +0 -5
  478. package/lib/components/image.ws.d.ts.map +0 -1
  479. package/lib/components/index.d.ts +0 -90
  480. package/lib/components/index.d.ts.map +0 -1
  481. package/lib/components/index.test.d.ts +0 -2
  482. package/lib/components/index.test.d.ts.map +0 -1
  483. package/lib/components/index.test.js +0 -5
  484. package/lib/components/input.d.ts +0 -3
  485. package/lib/components/input.d.ts.map +0 -1
  486. package/lib/components/input.stories.d.ts +0 -6
  487. package/lib/components/input.stories.d.ts.map +0 -1
  488. package/lib/components/input.stories.js +0 -9
  489. package/lib/components/input.ws.d.ts +0 -5
  490. package/lib/components/input.ws.d.ts.map +0 -1
  491. package/lib/components/italic.d.ts +0 -3
  492. package/lib/components/italic.d.ts.map +0 -1
  493. package/lib/components/italic.stories.d.ts +0 -6
  494. package/lib/components/italic.stories.d.ts.map +0 -1
  495. package/lib/components/italic.stories.js +0 -11
  496. package/lib/components/italic.ws.d.ts +0 -5
  497. package/lib/components/italic.ws.d.ts.map +0 -1
  498. package/lib/components/link.d.ts +0 -8
  499. package/lib/components/link.d.ts.map +0 -1
  500. package/lib/components/link.stories.d.ts +0 -10
  501. package/lib/components/link.stories.d.ts.map +0 -1
  502. package/lib/components/link.stories.js +0 -11
  503. package/lib/components/link.ws.d.ts +0 -5
  504. package/lib/components/link.ws.d.ts.map +0 -1
  505. package/lib/components/meta.d.ts +0 -7464
  506. package/lib/components/meta.d.ts.map +0 -1
  507. package/lib/components/meta.js +0 -35
  508. package/lib/components/paragraph.d.ts +0 -3
  509. package/lib/components/paragraph.d.ts.map +0 -1
  510. package/lib/components/paragraph.stories.d.ts +0 -6
  511. package/lib/components/paragraph.stories.d.ts.map +0 -1
  512. package/lib/components/paragraph.stories.js +0 -11
  513. package/lib/components/paragraph.ws.d.ts +0 -5
  514. package/lib/components/paragraph.ws.d.ts.map +0 -1
  515. package/lib/components/span.d.ts +0 -3
  516. package/lib/components/span.d.ts.map +0 -1
  517. package/lib/components/span.stories.d.ts +0 -6
  518. package/lib/components/span.stories.d.ts.map +0 -1
  519. package/lib/components/span.stories.js +0 -11
  520. package/lib/components/span.ws.d.ts +0 -5
  521. package/lib/components/span.ws.d.ts.map +0 -1
  522. package/lib/components/subscript.d.ts +0 -3
  523. package/lib/components/subscript.d.ts.map +0 -1
  524. package/lib/components/subscript.stories.d.ts +0 -6
  525. package/lib/components/subscript.stories.d.ts.map +0 -1
  526. package/lib/components/subscript.stories.js +0 -11
  527. package/lib/components/subscript.ws.d.ts +0 -5
  528. package/lib/components/subscript.ws.d.ts.map +0 -1
  529. package/lib/components/superscript.d.ts +0 -3
  530. package/lib/components/superscript.d.ts.map +0 -1
  531. package/lib/components/superscript.stories.d.ts +0 -6
  532. package/lib/components/superscript.stories.d.ts.map +0 -1
  533. package/lib/components/superscript.stories.js +0 -11
  534. package/lib/components/superscript.ws.d.ts +0 -5
  535. package/lib/components/superscript.ws.d.ts.map +0 -1
  536. package/lib/components/text-block.d.ts +0 -3
  537. package/lib/components/text-block.d.ts.map +0 -1
  538. package/lib/components/text-block.stories.d.ts +0 -6
  539. package/lib/components/text-block.stories.d.ts.map +0 -1
  540. package/lib/components/text-block.stories.js +0 -11
  541. package/lib/components/text-block.ws.d.ts +0 -5
  542. package/lib/components/text-block.ws.d.ts.map +0 -1
  543. package/lib/css/breakpoints.d.ts +0 -4
  544. package/lib/css/breakpoints.d.ts.map +0 -1
  545. package/lib/css/categories.d.ts +0 -409
  546. package/lib/css/categories.d.ts.map +0 -1
  547. package/lib/css/get-browser-style.d.ts +0 -3
  548. package/lib/css/get-browser-style.d.ts.map +0 -1
  549. package/lib/css/index.d.ts +0 -4
  550. package/lib/css/index.d.ts.map +0 -1
  551. package/lib/db/index.d.ts +0 -3
  552. package/lib/db/index.d.ts.map +0 -1
  553. package/lib/db/instance.d.ts +0 -14
  554. package/lib/db/instance.d.ts.map +0 -1
  555. package/lib/db/types.d.ts +0 -17
  556. package/lib/db/types.d.ts.map +0 -1
  557. package/lib/index.d.ts +0 -10
  558. package/lib/index.d.ts.map +0 -1
  559. package/lib/pubsub/create.d.ts +0 -29
  560. package/lib/pubsub/create.d.ts.map +0 -1
  561. package/lib/pubsub/index.d.ts +0 -2
  562. package/lib/pubsub/index.d.ts.map +0 -1
  563. package/lib/tree/create-elements-tree.d.ts +0 -19
  564. package/lib/tree/create-elements-tree.d.ts.map +0 -1
  565. package/lib/tree/index.d.ts +0 -4
  566. package/lib/tree/index.d.ts.map +0 -1
  567. package/lib/tree/root.d.ts +0 -20
  568. package/lib/tree/root.d.ts.map +0 -1
  569. package/lib/tree/session-storage-polyfill.d.ts +0 -3
  570. package/lib/tree/session-storage-polyfill.d.ts.map +0 -1
  571. package/lib/tree/wrapper-component.d.ts +0 -13
  572. package/lib/tree/wrapper-component.d.ts.map +0 -1
  573. package/lib/tsconfig.tsbuildinfo +0 -1
  574. package/lib/user-props/all-user-props.d.ts +0 -8
  575. package/lib/user-props/all-user-props.d.ts.map +0 -1
  576. package/lib/user-props/index.d.ts +0 -5
  577. package/lib/user-props/index.d.ts.map +0 -1
  578. package/lib/user-props/schema.d.ts +0 -72
  579. package/lib/user-props/schema.d.ts.map +0 -1
  580. package/lib/user-props/types.d.ts +0 -13
  581. package/lib/user-props/types.d.ts.map +0 -1
  582. package/lib/user-props/use-user-props-asset.d.ts +0 -8
  583. package/lib/user-props/use-user-props-asset.d.ts.map +0 -1
  584. package/lib/user-props/use-user-props.d.ts +0 -12
  585. package/lib/user-props/use-user-props.d.ts.map +0 -1
@@ -0,0 +1,84 @@
1
+ import mitt from "mitt";
2
+ import { useCallback, useEffect, useRef } from "react";
3
+
4
+ export const createPubsub = <PublishMap>() => {
5
+ type Action<Type extends keyof PublishMap> =
6
+ undefined extends PublishMap[Type]
7
+ ? { type: Type; payload?: PublishMap[Type] }
8
+ : { type: Type; payload: PublishMap[Type] };
9
+
10
+ // `mitt` has a somewhat annoying overload for `*` type that makes it hard to wrap in a generic context
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ const emitter = mitt<Record<any, any>>();
13
+
14
+ if (typeof window === "object") {
15
+ window.addEventListener(
16
+ "message",
17
+ (event: MessageEvent) => {
18
+ // @todo this has no type safety built in, could be anything from any source.
19
+ // we could potentially maintain a list of valid event types at runtime
20
+ // at the very least we could add a brand property or something to our events
21
+ if (typeof event.data?.type === "string") {
22
+ emitter.emit(event.data.type, event.data.payload);
23
+ }
24
+ },
25
+ false
26
+ );
27
+ }
28
+
29
+ return {
30
+ /**
31
+ * To publish a postMessage event on the current window and parent window from the iframe.
32
+ */
33
+ publish<Type extends keyof PublishMap>(action: Action<Type>) {
34
+ window.parent.postMessage(action, "*");
35
+ window.postMessage(action, "*");
36
+ },
37
+
38
+ /**
39
+ * To publish a postMessage event on the iframe and parent window from the parent window.
40
+ */
41
+ usePublish() {
42
+ const iframeRef = useRef<HTMLIFrameElement | null>(null);
43
+ const publishCallback = useCallback(
44
+ <Type extends keyof PublishMap>(action: Action<Type>) => {
45
+ const element = iframeRef.current;
46
+ if (element?.contentWindow == null) return;
47
+ element.contentWindow.postMessage(action, "*");
48
+ window.postMessage(action, "*");
49
+ },
50
+ [iframeRef]
51
+ );
52
+ return [publishCallback, iframeRef] as const;
53
+ },
54
+
55
+ /**
56
+ * To subscribe a message event on the current window.
57
+ */
58
+ useSubscribe<Type extends keyof PublishMap>(
59
+ type: Type,
60
+ onAction: (payload: PublishMap[Type]) => void
61
+ ) {
62
+ useEffect(() => {
63
+ emitter.on(type, onAction);
64
+ return () => {
65
+ emitter.off(type, onAction);
66
+ };
67
+ }, [type, onAction]);
68
+ },
69
+
70
+ useSubscribeAll(
71
+ onAction: <Type extends keyof PublishMap>(
72
+ type: Type,
73
+ payload: PublishMap[Type]
74
+ ) => void
75
+ ) {
76
+ useEffect(() => {
77
+ emitter.on("*", onAction);
78
+ return () => {
79
+ emitter.off("*", onAction);
80
+ };
81
+ }, [onAction]);
82
+ },
83
+ };
84
+ };
@@ -0,0 +1 @@
1
+ export * from "./create";
@@ -0,0 +1,102 @@
1
+ import { type ComponentProps, Fragment } from "react";
2
+ import type { Instance } from "../db";
3
+ import { WrapperComponent } from "./wrapper-component";
4
+ import { Scripts, ScrollRestoration } from "@remix-run/react";
5
+ import { SessionStoragePolyfill } from "./session-storage-polyfill";
6
+
7
+ export type ChildrenUpdates = Array<
8
+ | string
9
+ | {
10
+ id: undefined | Instance["id"];
11
+ component: Instance["component"];
12
+ children: ChildrenUpdates;
13
+ }
14
+ >;
15
+
16
+ export type OnChangeChildren = (change: {
17
+ instanceId: Instance["id"];
18
+ updates: ChildrenUpdates;
19
+ }) => void;
20
+
21
+ export const createElementsTree = ({
22
+ sandbox,
23
+ instance,
24
+ Component,
25
+ onChangeChildren,
26
+ }: {
27
+ sandbox?: boolean;
28
+ instance: Instance;
29
+ Component: (props: ComponentProps<typeof WrapperComponent>) => JSX.Element;
30
+ onChangeChildren?: OnChangeChildren;
31
+ }) => {
32
+ const children = createInstanceChildrenElements({
33
+ Component,
34
+ children: instance.children,
35
+ onChangeChildren,
36
+ });
37
+ const body = createInstanceElement({
38
+ Component,
39
+ instance,
40
+ children: [
41
+ <Fragment key="children">
42
+ {children}
43
+ {sandbox && <SessionStoragePolyfill />}
44
+ <ScrollRestoration />
45
+ <Scripts />
46
+ </Fragment>,
47
+ ],
48
+ });
49
+ return body;
50
+ };
51
+
52
+ const createInstanceChildrenElements = ({
53
+ children,
54
+ Component,
55
+ onChangeChildren,
56
+ }: {
57
+ children: Instance["children"];
58
+ Component: (props: ComponentProps<typeof WrapperComponent>) => JSX.Element;
59
+ onChangeChildren?: OnChangeChildren;
60
+ }) => {
61
+ const elements = [];
62
+ for (const child of children) {
63
+ if (typeof child === "string") {
64
+ elements.push(child);
65
+ continue;
66
+ }
67
+ const children = createInstanceChildrenElements({
68
+ children: child.children,
69
+ Component,
70
+ onChangeChildren,
71
+ });
72
+ const element = createInstanceElement({
73
+ instance: child,
74
+ Component,
75
+ onChangeChildren,
76
+ children,
77
+ });
78
+ elements.push(element);
79
+ }
80
+ return elements;
81
+ };
82
+
83
+ const createInstanceElement = ({
84
+ Component,
85
+ instance,
86
+ children = [],
87
+ onChangeChildren,
88
+ }: {
89
+ instance: Instance;
90
+ Component: (props: ComponentProps<typeof WrapperComponent>) => JSX.Element;
91
+ onChangeChildren?: OnChangeChildren;
92
+ children?: Array<JSX.Element | string>;
93
+ }) => {
94
+ const props = {
95
+ instance,
96
+ children,
97
+ key: instance.id,
98
+ onChangeChildren,
99
+ };
100
+
101
+ return <Component {...props} />;
102
+ };
@@ -1,4 +1,3 @@
1
1
  export * from "./create-elements-tree";
2
2
  export * from "./root";
3
3
  export * from "./wrapper-component";
4
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,45 @@
1
+ import { useAllUserProps } from "../user-props/";
2
+ import type { Tree, InstanceProps } from "../db";
3
+ import { createElementsTree } from "./create-elements-tree";
4
+ import { WrapperComponent } from "./wrapper-component";
5
+ import type { Asset } from "@webstudio-is/asset-uploader";
6
+ import { type ComponentProps } from "react";
7
+ import type { Breakpoint } from "@webstudio-is/css-data";
8
+ import { registerComponents } from "../components";
9
+ import { customComponents as defaultCustomComponents } from "../app/custom-components";
10
+ import { setParams, type Params } from "../app/params";
11
+ import type { DesignToken } from "@webstudio-is/design-tokens";
12
+
13
+ export type Data = {
14
+ tree: Tree | null;
15
+ breakpoints: Array<Breakpoint>;
16
+ designTokens: Array<DesignToken>;
17
+ props: Array<InstanceProps>;
18
+ assets: Array<Asset>;
19
+ params?: Params;
20
+ };
21
+
22
+ type RootProps = {
23
+ data: Data;
24
+ Component?: (props: ComponentProps<typeof WrapperComponent>) => JSX.Element;
25
+ customComponents?: Parameters<typeof registerComponents>[0];
26
+ };
27
+
28
+ export const InstanceRoot = ({
29
+ data,
30
+ Component,
31
+ customComponents = defaultCustomComponents,
32
+ }: RootProps): JSX.Element | null => {
33
+ if (data.tree === null) {
34
+ throw new Error("Tree is null");
35
+ }
36
+ useAllUserProps(data.props);
37
+ setParams(data.params ?? null);
38
+
39
+ registerComponents(customComponents);
40
+
41
+ return createElementsTree({
42
+ instance: data.tree.root,
43
+ Component: Component ?? WrapperComponent,
44
+ });
45
+ };
@@ -0,0 +1,50 @@
1
+ // This is a temporary work around for https://github.com/remix-run/remix/issues/3659
2
+
3
+ // The code is based on this discussion https://bugs.chromium.org/p/chromium/issues/detail?id=357625
4
+ const polyfill = function () {
5
+ try {
6
+ const key = "__session_storage_availability_test__";
7
+ sessionStorage.setItem(key, "test"); // test
8
+ sessionStorage.removeItem(key); // cleanup
9
+ } catch (error) {
10
+ alert(
11
+ 'It looks like you have disabled cookies in your browser. Webstudio designer 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'
12
+ );
13
+ const data = new Map();
14
+ Object.defineProperty(window, "sessionStorage", {
15
+ value: {
16
+ setItem: (key: string, val: unknown) => {
17
+ // eslint-disable-next-line no-console
18
+ console.warn(
19
+ `Session storage is unavailable due to Error "${
20
+ (error as Error).message
21
+ }". A polyfill is used to set value of "${key}". The value will be lost when the page is reloaded.`
22
+ );
23
+ data.set(key, String(val));
24
+ },
25
+ getItem: (key: string) => {
26
+ // eslint-disable-next-line no-console
27
+ console.warn(
28
+ `Session storage is unavailable due to Error "${
29
+ (error as Error).message
30
+ }". A polyfill is used to get value of "${key}". The value will be undefined if the page was reloaded after it was set.`
31
+ );
32
+ return data.get(key);
33
+ },
34
+ removeItem: (key: string) => {
35
+ data.delete(key);
36
+ },
37
+ clear: () => {
38
+ data.clear();
39
+ },
40
+ },
41
+ });
42
+ }
43
+ }.toString();
44
+
45
+ export const SessionStoragePolyfill = () => (
46
+ <script
47
+ dangerouslySetInnerHTML={{ __html: `(${polyfill})()` }}
48
+ suppressHydrationWarning
49
+ />
50
+ );
@@ -0,0 +1,48 @@
1
+ import { Fragment } from "react";
2
+ import type { Instance } from "../db";
3
+ import { getComponent } from "../components";
4
+ import { useUserProps } from "../user-props/use-user-props";
5
+ import type { OnChangeChildren } from "./create-elements-tree";
6
+
7
+ const renderText = (text: string): Array<JSX.Element> => {
8
+ const lines = text.split("\n");
9
+ return lines.map((line, index) => (
10
+ <Fragment key={index}>
11
+ {line}
12
+ {index < lines.length - 1 ? <br /> : null}
13
+ </Fragment>
14
+ ));
15
+ };
16
+
17
+ export const renderWrapperComponentChildren = (
18
+ children: Array<JSX.Element | string> | undefined
19
+ ): Array<JSX.Element | string | Array<JSX.Element | string>> | undefined => {
20
+ // Some elements like input can't have children
21
+ // @todo needs to be made impossible to drag element into input
22
+ if (children === undefined || children.length === 0) return;
23
+ return children.map((child) => {
24
+ return typeof child === "string" ? renderText(child) : child;
25
+ });
26
+ };
27
+
28
+ type WrapperComponentProps = {
29
+ instance: Instance;
30
+ children: Array<JSX.Element | string>;
31
+ onChangeChildren?: OnChangeChildren;
32
+ };
33
+
34
+ export const WrapperComponent = ({
35
+ instance,
36
+ onChangeChildren, // prevent it from passing to sdk component
37
+ children,
38
+ ...rest
39
+ }: WrapperComponentProps) => {
40
+ const Component = getComponent(instance.component);
41
+ const userProps = useUserProps(instance.id);
42
+ const props = { ...userProps, ...rest, [idAttribute]: instance.id };
43
+ return (
44
+ <Component {...props}>{renderWrapperComponentChildren(children)}</Component>
45
+ );
46
+ };
47
+
48
+ export const idAttribute = "data-ws-id";
@@ -0,0 +1,22 @@
1
+ import { useRef } from "react";
2
+ import { createValueContainer, useValue } from "react-nano-state";
3
+ import type { InstanceProps, Instance } from "../db";
4
+
5
+ export type AllUserProps = { [id: Instance["id"]]: InstanceProps };
6
+
7
+ export const allUserPropsContainer = createValueContainer<AllUserProps>({});
8
+
9
+ export const useAllUserProps = (initialUserProps?: Array<InstanceProps>) => {
10
+ // @todo ssr workaround for https://github.com/webstudio-is/webstudio-designer/issues/213
11
+ const ref = useRef(false);
12
+ if (ref.current === false && initialUserProps !== undefined) {
13
+ const propsMap: AllUserProps = {};
14
+ for (const props of initialUserProps) {
15
+ propsMap[props.instanceId] = props;
16
+ }
17
+ //We don't need to trigger rerender when setting the initial value
18
+ allUserPropsContainer.value = propsMap;
19
+ ref.current = true;
20
+ }
21
+ return useValue(allUserPropsContainer);
22
+ };
@@ -2,4 +2,3 @@ export * from "./all-user-props";
2
2
  export * from "./use-user-props";
3
3
  export * from "./types";
4
4
  export * from "./schema";
5
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import { Asset } from "@webstudio-is/asset-uploader";
3
+
4
+ const baseUserProps = {
5
+ id: z.string(),
6
+ prop: z.string(),
7
+ required: z.optional(z.boolean()),
8
+ };
9
+
10
+ export const UserProp = z.discriminatedUnion("type", [
11
+ z.object({
12
+ ...baseUserProps,
13
+ type: z.literal("number"),
14
+ value: z.number(),
15
+ }),
16
+ z.object({
17
+ ...baseUserProps,
18
+ type: z.literal("string"),
19
+ value: z.string(),
20
+ }),
21
+ z.object({
22
+ ...baseUserProps,
23
+ type: z.literal("boolean"),
24
+ value: z.boolean(),
25
+ }),
26
+ z.object({
27
+ ...baseUserProps,
28
+ type: z.literal("asset"),
29
+ value: Asset,
30
+ }),
31
+ ]);
32
+
33
+ export const UserProps = z.array(UserProp);
34
+
35
+ export type UserProp = z.infer<typeof UserProp>;
@@ -0,0 +1,14 @@
1
+ import type { InstanceProps, Instance } from "../db";
2
+ import { UserProp } from "./schema";
3
+
4
+ export type UserPropsUpdates = {
5
+ treeId: InstanceProps["treeId"];
6
+ propsId: InstanceProps["id"];
7
+ instanceId: Instance["id"];
8
+ updates: Array<UserProp>;
9
+ };
10
+
11
+ export type DeleteProp = {
12
+ instanceId: Instance["id"];
13
+ propId: UserProp["id"];
14
+ };
@@ -0,0 +1,31 @@
1
+ import { useMemo } from "react";
2
+ import { type Instance } from "../db";
3
+ import { type UserProp } from "./schema";
4
+ import { useAllUserProps } from "./all-user-props";
5
+ import type { Asset } from "@webstudio-is/asset-uploader";
6
+
7
+ /**
8
+ * Get asset for prop, like src on the Image component
9
+ */
10
+ export const useUserPropsAsset = (
11
+ instanceId: Instance["id"],
12
+ propName: UserProp["prop"]
13
+ ): Asset | undefined => {
14
+ const [allUserProps] = useAllUserProps();
15
+
16
+ const propsData = allUserProps[instanceId];
17
+ const asset = useMemo(() => {
18
+ if (propsData == null) return undefined;
19
+ const prop = propsData.props.find((prop) => prop.prop === propName);
20
+
21
+ if (prop == null) return undefined;
22
+
23
+ if (prop.type === "asset") {
24
+ return prop.value;
25
+ }
26
+
27
+ return undefined;
28
+ }, [propName, propsData]);
29
+
30
+ return asset;
31
+ };
@@ -0,0 +1,30 @@
1
+ import { useMemo } from "react";
2
+ import { type Instance } from "../db";
3
+ import { type UserProp } from "./schema";
4
+ import { useAllUserProps } from "./all-user-props";
5
+
6
+ type UserProps = { [prop: UserProp["prop"]]: string | number | boolean };
7
+
8
+ /**
9
+ * User props mapped in prop:value format,
10
+ * up to date with props panel.
11
+ */
12
+ export const useUserProps = (instanceId: Instance["id"]) => {
13
+ const [allUserProps] = useAllUserProps();
14
+
15
+ const propsData = allUserProps[instanceId];
16
+ const props = useMemo(() => {
17
+ if (propsData == null) return {};
18
+ const result: UserProps = {};
19
+
20
+ for (const userProp of propsData.props) {
21
+ if (userProp.type !== "asset") {
22
+ result[userProp.prop] = userProp.value;
23
+ }
24
+ }
25
+
26
+ return result;
27
+ }, [propsData]);
28
+
29
+ return props;
30
+ };
@@ -1,9 +0,0 @@
1
- import { type ComponentProps } from "react";
2
- import { Image as WebstudioImage } from "@webstudio-is/image";
3
- import { idAttribute } from "../../tree/wrapper-component";
4
- declare type Props = ComponentProps<typeof WebstudioImage> & {
5
- [idAttribute]: string;
6
- };
7
- export declare const Component: import("react").ForwardRefExoticComponent<Pick<Props, "key" | keyof import("react").ImgHTMLAttributes<HTMLImageElement> | "data-ws-id" | "quality" | "loader" | "optimize"> & import("react").RefAttributes<HTMLImageElement>>;
8
- export {};
9
- //# sourceMappingURL=image.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/app/custom-components/image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,IAAI,cAAc,EAAW,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAK3D,aAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,GAAG;IAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,eAAO,MAAM,SAAS,gOAqBrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * as Image from "./image";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/custom-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { EntryContext } from "@remix-run/node";
2
- export declare const handleRequest: (request: Request, responseStatusCode: number, responseHeaders: Headers, remixContext: EntryContext) => Response;
3
- //# sourceMappingURL=handle-request.server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-request.server.d.ts","sourceRoot":"","sources":["../../src/app/handle-request.server.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YACf,OAAO,sBACI,MAAM,mBACT,OAAO,gBACV,YAAY,aAY3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC"}
@@ -1,6 +0,0 @@
1
- export declare type Params = {
2
- resizeOrigin?: string;
3
- };
4
- export declare const getParams: () => Params;
5
- export declare const setParams: (newParams: Params | null) => void;
6
- //# sourceMappingURL=params.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/app/params.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF,eAAO,MAAM,SAAS,QAAO,MAA+B,CAAC;AAE7D,eAAO,MAAM,SAAS,cAAe,MAAM,GAAG,IAAI,SAEjD,CAAC"}
package/lib/app/root.d.ts DELETED
@@ -1,9 +0,0 @@
1
- /// <reference types="react" />
2
- import { Outlet as DefaultOutlet } from "@remix-run/react";
3
- /**
4
- * We are using Outlet prop from index layout when user renders site from a subdomain.
5
- */
6
- export declare const Root: ({ Outlet, }: {
7
- Outlet: typeof DefaultOutlet;
8
- }) => JSX.Element;
9
- //# sourceMappingURL=root.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/app/root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAe,MAAM,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,eAAO,MAAM,IAAI;YAGP,oBAAoB;iBAiB7B,CAAC"}
@@ -1,9 +0,0 @@
1
- import { type ComponentProps } from "react";
2
- import { Image as WebstudioImage } from "@webstudio-is/image";
3
- import { idAttribute } from "../../tree/wrapper-component";
4
- declare type Props = ComponentProps<typeof WebstudioImage> & {
5
- [idAttribute]: string;
6
- };
7
- export declare const Component: import("react").ForwardRefExoticComponent<Pick<Props, "key" | keyof import("react").ImgHTMLAttributes<HTMLImageElement> | "data-ws-id" | "quality" | "loader" | "optimize"> & import("react").RefAttributes<HTMLImageElement>>;
8
- export {};
9
- //# sourceMappingURL=image.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/app/custom-components/image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,KAAK,IAAI,cAAc,EAAW,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAK3D,aAAK,KAAK,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,GAAG;IAAE,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,eAAO,MAAM,SAAS,gOAqBrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export * as Image from "./image";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app/custom-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { EntryContext } from "@remix-run/node";
2
- export declare const handleRequest: (request: Request, responseStatusCode: number, responseHeaders: Headers, remixContext: EntryContext) => Response;
3
- //# sourceMappingURL=handle-request.server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-request.server.d.ts","sourceRoot":"","sources":["../../../src/app/handle-request.server.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YACf,OAAO,sBACI,MAAM,mBACT,OAAO,gBACV,YAAY,aAY3B,CAAC"}
@@ -1,4 +0,0 @@
1
- export * from "./root";
2
- export * from "./handle-request.server";
3
- export * from "./params";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/app/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC"}
@@ -1,6 +0,0 @@
1
- export declare type Params = {
2
- resizeOrigin?: string;
3
- };
4
- export declare const getParams: () => Params;
5
- export declare const setParams: (newParams: Params | null) => void;
6
- //# sourceMappingURL=params.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../../src/app/params.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM,GAAG;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAMF,eAAO,MAAM,SAAS,QAAO,MAA+B,CAAC;AAE7D,eAAO,MAAM,SAAS,cAAe,MAAM,GAAG,IAAI,SAEjD,CAAC"}
@@ -1,9 +0,0 @@
1
- /// <reference types="react" />
2
- import { Outlet as DefaultOutlet } from "@remix-run/react";
3
- /**
4
- * We are using Outlet prop from index layout when user renders site from a subdomain.
5
- */
6
- export declare const Root: ({ Outlet, }: {
7
- Outlet: typeof DefaultOutlet;
8
- }) => JSX.Element;
9
- //# sourceMappingURL=root.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../src/app/root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAe,MAAM,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,eAAO,MAAM,IAAI;YAGP,oBAAoB;iBAiB7B,CAAC"}
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const Body: import("react").ForwardRefExoticComponent<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>, "key" | keyof import("react").HTMLAttributes<HTMLBodyElement>> & import("react").RefAttributes<HTMLBodyElement>>;
3
- //# sourceMappingURL=body.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../src/components/body.tsx"],"names":[],"mappings":";AAIA,eAAO,MAAM,IAAI,sQAG+B,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Body = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const body_1 = require("./body");
6
- exports.default = {
7
- title: "Components/Body",
8
- component: body_1.Body,
9
- };
10
- const Body = (args) => ((0, jsx_runtime_1.jsx)(body_1.Body, { ...args }));
11
- exports.Body = Body;
@@ -1,7 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ComponentStory, ComponentMeta } from "@storybook/react";
3
- import { Body as BodyPrimitive } from "./body";
4
- declare const _default: ComponentMeta<import("react").ForwardRefExoticComponent<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLBodyElement>, HTMLBodyElement>, "key" | keyof import("react").HTMLAttributes<HTMLBodyElement>> & import("react").RefAttributes<HTMLBodyElement>>>;
5
- export default _default;
6
- export declare const Body: ComponentStory<typeof BodyPrimitive>;
7
- //# sourceMappingURL=body.stories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"body.stories.d.ts","sourceRoot":"","sources":["../../../src/components/body.stories.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;;AAE/C,wBAGyC;AAEzC,eAAO,MAAM,IAAI,EAAE,cAAc,CAAC,OAAO,aAAa,CAErD,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { WsComponentMeta } from "./component-type";
2
- import { Body } from "./body";
3
- declare const meta: WsComponentMeta<typeof Body>;
4
- export default meta;
5
- //# sourceMappingURL=body.ws.d.ts.map