@quadrats/react 0.7.8 → 1.0.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 (417) hide show
  1. package/accordion/accordion.css +1 -0
  2. package/accordion/accordion.scss +81 -0
  3. package/accordion/components/Accordion.d.ts +9 -0
  4. package/accordion/components/Accordion.js +22 -0
  5. package/accordion/components/AccordionContent.d.ts +8 -0
  6. package/accordion/components/AccordionContent.js +24 -0
  7. package/accordion/components/AccordionTitle.d.ts +8 -0
  8. package/accordion/components/AccordionTitle.js +20 -0
  9. package/accordion/contexts/AccordionContext.d.ts +2 -0
  10. package/accordion/contexts/AccordionContext.js +5 -0
  11. package/accordion/createReactAccordion.d.ts +4 -0
  12. package/accordion/createReactAccordion.js +144 -0
  13. package/accordion/defaultRenderAccordionElements.d.ts +2 -0
  14. package/accordion/defaultRenderAccordionElements.js +12 -0
  15. package/accordion/hooks/useAccordion.d.ts +1 -0
  16. package/accordion/hooks/useAccordion.js +8 -0
  17. package/accordion/index.cjs.js +212 -0
  18. package/accordion/index.d.ts +8 -0
  19. package/accordion/index.js +10 -0
  20. package/accordion/jsx-serializer/createJsxSerializeAccordion.d.ts +5 -0
  21. package/accordion/jsx-serializer/createJsxSerializeAccordion.js +48 -0
  22. package/accordion/jsx-serializer/defaultRenderAccordionElements.d.ts +2 -0
  23. package/accordion/jsx-serializer/defaultRenderAccordionElements.js +16 -0
  24. package/accordion/jsx-serializer/index.cjs.js +64 -0
  25. package/accordion/jsx-serializer/index.d.ts +3 -0
  26. package/accordion/jsx-serializer/index.js +2 -0
  27. package/accordion/jsx-serializer/package.json +7 -0
  28. package/accordion/jsx-serializer/typings.d.ts +4 -0
  29. package/accordion/package.json +10 -0
  30. package/accordion/toolbar/AccordionToolbarIcon.d.ts +8 -0
  31. package/accordion/toolbar/AccordionToolbarIcon.js +12 -0
  32. package/accordion/toolbar/index.cjs.js +22 -0
  33. package/accordion/toolbar/index.d.ts +2 -0
  34. package/accordion/toolbar/index.js +2 -0
  35. package/accordion/toolbar/package.json +7 -0
  36. package/accordion/toolbar/useAccordionTool.d.ts +4 -0
  37. package/accordion/toolbar/useAccordionTool.js +10 -0
  38. package/accordion/typings.d.ts +25 -0
  39. package/align/constants.d.ts +8 -0
  40. package/align/constants.js +10 -0
  41. package/align/createReactAlign.d.ts +2 -0
  42. package/align/createReactAlign.js +26 -0
  43. package/align/index.cjs.js +39 -0
  44. package/align/index.d.ts +3 -0
  45. package/align/index.js +2 -0
  46. package/align/package.json +7 -0
  47. package/align/toolbar/AlignToolbarIcon.d.ts +10 -0
  48. package/align/toolbar/AlignToolbarIcon.js +12 -0
  49. package/align/toolbar/index.cjs.js +30 -0
  50. package/align/toolbar/index.d.ts +2 -0
  51. package/align/toolbar/index.js +2 -0
  52. package/align/toolbar/package.json +7 -0
  53. package/align/toolbar/useAlignTool.d.ts +6 -0
  54. package/align/toolbar/useAlignTool.js +18 -0
  55. package/align/typings.d.ts +17 -0
  56. package/blockquote/blockquote.css +1 -0
  57. package/blockquote/blockquote.scss +23 -0
  58. package/blockquote/defaultRenderBlockquoteElement.js +3 -1
  59. package/blockquote/index.cjs.js +3 -1
  60. package/blockquote/package.json +4 -1
  61. package/card/card.css +1 -0
  62. package/card/card.scss +243 -0
  63. package/card/components/Card.d.ts +15 -0
  64. package/card/components/Card.js +101 -0
  65. package/card/components/CardContents.d.ts +9 -0
  66. package/card/components/CardContents.js +18 -0
  67. package/card/components/CardImage.d.ts +9 -0
  68. package/card/components/CardImage.js +13 -0
  69. package/card/components/CardPlaceholder.d.ts +4 -0
  70. package/card/components/CardPlaceholder.js +21 -0
  71. package/card/createReactCard.d.ts +4 -0
  72. package/card/createReactCard.js +82 -0
  73. package/card/defaultRenderCardElements.d.ts +3 -0
  74. package/card/defaultRenderCardElements.js +14 -0
  75. package/card/index.cjs.js +234 -0
  76. package/card/index.d.ts +7 -0
  77. package/card/index.js +6 -0
  78. package/card/jsx-serializer/createJsxSerializeCard.d.ts +5 -0
  79. package/card/jsx-serializer/createJsxSerializeCard.js +48 -0
  80. package/card/jsx-serializer/defaultRenderCardElements.d.ts +2 -0
  81. package/card/jsx-serializer/defaultRenderCardElements.js +10 -0
  82. package/card/jsx-serializer/index.cjs.js +58 -0
  83. package/card/jsx-serializer/index.d.ts +3 -0
  84. package/card/jsx-serializer/index.js +2 -0
  85. package/card/jsx-serializer/package.json +7 -0
  86. package/card/jsx-serializer/typings.d.ts +9 -0
  87. package/card/package.json +10 -0
  88. package/card/toolbar/CardToolbarIcon.d.ts +8 -0
  89. package/card/toolbar/CardToolbarIcon.js +12 -0
  90. package/card/toolbar/index.cjs.js +66 -0
  91. package/card/toolbar/index.d.ts +2 -0
  92. package/card/toolbar/index.js +2 -0
  93. package/card/toolbar/package.json +7 -0
  94. package/card/toolbar/useCardTool.d.ts +4 -0
  95. package/card/toolbar/useCardTool.js +55 -0
  96. package/card/typings.d.ts +24 -0
  97. package/carousel/carousel.css +1 -0
  98. package/carousel/carousel.scss +356 -0
  99. package/carousel/components/Carousel.d.ts +15 -0
  100. package/carousel/components/Carousel.js +62 -0
  101. package/carousel/components/CarouselCaption.d.ts +9 -0
  102. package/carousel/components/CarouselCaption.js +12 -0
  103. package/carousel/components/CarouselImages.d.ts +9 -0
  104. package/carousel/components/CarouselImages.js +52 -0
  105. package/carousel/components/CarouselPlaceholder.d.ts +4 -0
  106. package/carousel/components/CarouselPlaceholder.js +17 -0
  107. package/carousel/contexts/CarouselContext.d.ts +2 -0
  108. package/carousel/contexts/CarouselContext.js +5 -0
  109. package/carousel/createReactCarousel.d.ts +4 -0
  110. package/carousel/createReactCarousel.js +82 -0
  111. package/carousel/defaultRenderCarouselElements.d.ts +3 -0
  112. package/carousel/defaultRenderCarouselElements.js +14 -0
  113. package/carousel/hooks/useCarousel.d.ts +1 -0
  114. package/carousel/hooks/useCarousel.js +8 -0
  115. package/carousel/index.cjs.js +232 -0
  116. package/carousel/index.d.ts +9 -0
  117. package/carousel/index.js +8 -0
  118. package/carousel/jsx-serializer/createJsxSerializeCarousel.d.ts +5 -0
  119. package/carousel/jsx-serializer/createJsxSerializeCarousel.js +48 -0
  120. package/carousel/jsx-serializer/defaultRenderCarouselElements.d.ts +2 -0
  121. package/carousel/jsx-serializer/defaultRenderCarouselElements.js +10 -0
  122. package/carousel/jsx-serializer/index.cjs.js +58 -0
  123. package/carousel/jsx-serializer/index.d.ts +3 -0
  124. package/carousel/jsx-serializer/index.js +2 -0
  125. package/carousel/jsx-serializer/package.json +7 -0
  126. package/carousel/jsx-serializer/typings.d.ts +9 -0
  127. package/carousel/package.json +10 -0
  128. package/carousel/toolbar/CarouselToolbarIcon.d.ts +8 -0
  129. package/carousel/toolbar/CarouselToolbarIcon.js +12 -0
  130. package/carousel/toolbar/index.cjs.js +57 -0
  131. package/carousel/toolbar/index.d.ts +2 -0
  132. package/carousel/toolbar/index.js +2 -0
  133. package/carousel/toolbar/package.json +7 -0
  134. package/carousel/toolbar/useCarouselTool.d.ts +4 -0
  135. package/carousel/toolbar/useCarouselTool.js +46 -0
  136. package/carousel/typings.d.ts +27 -0
  137. package/components/BaseField/index.d.ts +11 -0
  138. package/components/BaseField/index.js +17 -0
  139. package/components/Button/index.d.ts +14 -0
  140. package/components/Button/index.js +12 -0
  141. package/components/Hint/index.d.ts +15 -0
  142. package/components/Hint/index.js +30 -0
  143. package/components/ImageUploader/index.d.ts +25 -0
  144. package/components/ImageUploader/index.js +174 -0
  145. package/components/Input/index.d.ts +14 -0
  146. package/components/Input/index.js +24 -0
  147. package/components/Message/index.d.ts +18 -0
  148. package/components/Message/index.js +72 -0
  149. package/components/Modal/index.d.ts +28 -0
  150. package/components/Modal/index.js +61 -0
  151. package/components/Notifier/NotifierManager.d.ts +17 -0
  152. package/components/Notifier/NotifierManager.js +24 -0
  153. package/components/Notifier/createNotifier.d.ts +21 -0
  154. package/components/Notifier/createNotifier.js +60 -0
  155. package/components/Notifier/typings.d.ts +28 -0
  156. package/components/Progress/index.d.ts +1 -1
  157. package/components/Progress/index.js +12 -8
  158. package/components/SegmentedControl/index.d.ts +13 -0
  159. package/components/SegmentedControl/index.js +14 -0
  160. package/components/Textarea/index.d.ts +15 -0
  161. package/components/Textarea/index.js +24 -0
  162. package/components/Toggle/index.d.ts +8 -0
  163. package/components/Toggle/index.js +15 -0
  164. package/components/Transition/SlideFade.d.ts +20 -0
  165. package/components/Transition/SlideFade.js +91 -0
  166. package/components/Transition/Transition.d.ts +98 -0
  167. package/components/Transition/Transition.js +27 -0
  168. package/components/Transition/getTransitionStyleProps.d.ts +16 -0
  169. package/components/Transition/getTransitionStyleProps.js +25 -0
  170. package/components/Transition/useSetNodeTransition.d.ts +7 -0
  171. package/components/Transition/useSetNodeTransition.js +35 -0
  172. package/components/baseField.css +1 -0
  173. package/components/baseField.scss +34 -0
  174. package/components/button.css +1 -0
  175. package/components/button.scss +254 -0
  176. package/components/components.css +1 -0
  177. package/components/components.scss +12 -0
  178. package/components/hint.css +1 -0
  179. package/components/hint.scss +59 -0
  180. package/components/index.cjs.js +647 -11
  181. package/components/index.d.ts +12 -0
  182. package/components/index.js +11 -0
  183. package/components/input.css +1 -0
  184. package/components/input.scss +102 -0
  185. package/components/message.css +1 -0
  186. package/components/message.scss +57 -0
  187. package/components/modal.css +1 -0
  188. package/components/modal.scss +200 -0
  189. package/components/progress.css +1 -1
  190. package/components/progress.scss +32 -20
  191. package/components/segmentedControl.css +1 -0
  192. package/components/segmentedControl.scss +63 -0
  193. package/components/textarea.css +1 -0
  194. package/components/textarea.scss +104 -0
  195. package/components/toggle.css +1 -0
  196. package/components/toggle.scss +55 -0
  197. package/components/tooltip.css +1 -1
  198. package/components/tooltip.scss +1 -1
  199. package/core/components/Editable.js +22 -3
  200. package/core/components/Quadrats.d.ts +4 -1
  201. package/core/components/Quadrats.js +6 -2
  202. package/core/constants.d.ts +1 -0
  203. package/core/constants.js +3 -0
  204. package/core/contexts/composition/CompositionProvider.d.ts +8 -0
  205. package/core/contexts/composition/CompositionProvider.js +8 -0
  206. package/core/contexts/composition/composition.d.ts +7 -0
  207. package/core/contexts/composition/composition.js +11 -0
  208. package/core/contexts/message/MessageProvider.d.ts +5 -0
  209. package/core/contexts/message/MessageProvider.js +35 -0
  210. package/core/contexts/message/message.d.ts +10 -0
  211. package/core/contexts/message/message.js +10 -0
  212. package/core/contexts/modal/CardModal/CardModal.d.ts +28 -0
  213. package/core/contexts/modal/CardModal/CardModal.js +103 -0
  214. package/core/contexts/modal/CarouselModal/CarouselItem.d.ts +15 -0
  215. package/core/contexts/modal/CarouselModal/CarouselItem.js +56 -0
  216. package/core/contexts/modal/CarouselModal/CarouselModal.d.ts +11 -0
  217. package/core/contexts/modal/CarouselModal/CarouselModal.js +174 -0
  218. package/core/contexts/modal/CarouselModal/FilesDropZone.d.ts +13 -0
  219. package/core/contexts/modal/CarouselModal/FilesDropZone.js +64 -0
  220. package/core/contexts/modal/ConfirmModal/ConfirmModal.d.ts +14 -0
  221. package/core/contexts/modal/ConfirmModal/ConfirmModal.js +21 -0
  222. package/core/contexts/modal/EmbedModal/EmbedModal.d.ts +11 -0
  223. package/core/contexts/modal/EmbedModal/EmbedModal.js +25 -0
  224. package/core/contexts/modal/ModalProvider.d.ts +8 -0
  225. package/core/contexts/modal/ModalProvider.js +66 -0
  226. package/core/contexts/modal/modal.d.ts +24 -0
  227. package/core/contexts/modal/modal.js +15 -0
  228. package/core/index.d.ts +8 -1
  229. package/divider/defaultRenderDividerElement.d.ts +1 -1
  230. package/divider/defaultRenderDividerElement.js +2 -3
  231. package/divider/divider.css +1 -0
  232. package/divider/divider.scss +9 -0
  233. package/divider/index.cjs.js +2 -3
  234. package/divider/jsx-serializer/defaultRenderDividerElement.js +2 -1
  235. package/divider/jsx-serializer/index.cjs.js +2 -1
  236. package/divider/package.json +4 -1
  237. package/editable.css +1 -1
  238. package/editable.scss +5 -6
  239. package/embed/components/VideoIframe.d.ts +3 -2
  240. package/embed/components/VideoIframe.js +2 -1
  241. package/embed/createReactEmbed.js +4 -1
  242. package/embed/createRenderEmbedElementBase.js +3 -1
  243. package/embed/embed.css +1 -0
  244. package/embed/embed.scss +234 -0
  245. package/embed/index.cjs.js +8 -2
  246. package/embed/jsx-serializer/youtube/index.cjs.js +1 -10
  247. package/embed/jsx-serializer/youtube/index.d.ts +1 -1
  248. package/embed/jsx-serializer/youtube/index.js +1 -1
  249. package/embed/package.json +4 -1
  250. package/embed/renderers/base/components/BaseEmbedElement.d.ts +21 -0
  251. package/embed/renderers/base/components/BaseEmbedElement.js +62 -0
  252. package/embed/renderers/base/index.cjs.js +65 -0
  253. package/embed/renderers/base/index.d.ts +1 -0
  254. package/embed/renderers/base/index.js +1 -0
  255. package/embed/renderers/base/package.json +7 -0
  256. package/embed/renderers/facebook/components/Facebook.d.ts +3 -2
  257. package/embed/renderers/facebook/components/Facebook.js +18 -11
  258. package/embed/renderers/facebook/defaultRenderFacebookEmbedElement.d.ts +2 -0
  259. package/embed/renderers/facebook/defaultRenderFacebookEmbedElement.js +42 -2
  260. package/embed/renderers/facebook/index.cjs.js +61 -12
  261. package/embed/renderers/facebook/index.d.ts +1 -1
  262. package/embed/renderers/facebook/index.js +1 -1
  263. package/embed/renderers/instagram/components/Instagram.d.ts +3 -2
  264. package/embed/renderers/instagram/components/Instagram.js +22 -11
  265. package/embed/renderers/instagram/defaultRenderInstagramEmbedElement.d.ts +2 -0
  266. package/embed/renderers/instagram/defaultRenderInstagramEmbedElement.js +42 -2
  267. package/embed/renderers/instagram/index.cjs.js +65 -12
  268. package/embed/renderers/instagram/index.d.ts +1 -1
  269. package/embed/renderers/instagram/index.js +1 -1
  270. package/embed/renderers/podcast-apple/components/PodcastApple.d.ts +3 -2
  271. package/embed/renderers/podcast-apple/components/PodcastApple.js +2 -1
  272. package/embed/renderers/podcast-apple/defaultRenderPodcastAppleEmbedElement.d.ts +2 -0
  273. package/embed/renderers/podcast-apple/defaultRenderPodcastAppleEmbedElement.js +35 -2
  274. package/embed/renderers/podcast-apple/index.cjs.js +38 -2
  275. package/embed/renderers/podcast-apple/index.d.ts +1 -1
  276. package/embed/renderers/podcast-apple/index.js +1 -1
  277. package/embed/renderers/spotify/components/Spotify.d.ts +3 -2
  278. package/embed/renderers/spotify/components/Spotify.js +3 -1
  279. package/embed/renderers/spotify/defaultRenderSpotifyEmbedElement.d.ts +2 -0
  280. package/embed/renderers/spotify/defaultRenderSpotifyEmbedElement.js +32 -2
  281. package/embed/renderers/spotify/index.cjs.js +36 -2
  282. package/embed/renderers/spotify/index.d.ts +1 -1
  283. package/embed/renderers/spotify/index.js +1 -1
  284. package/embed/renderers/twitter/components/Twitter.d.ts +3 -2
  285. package/embed/renderers/twitter/components/Twitter.js +14 -2
  286. package/embed/renderers/twitter/defaultRenderTwitterEmbedElement.d.ts +2 -0
  287. package/embed/renderers/twitter/defaultRenderTwitterEmbedElement.js +42 -2
  288. package/embed/renderers/twitter/index.cjs.js +57 -3
  289. package/embed/renderers/twitter/index.d.ts +1 -1
  290. package/embed/renderers/twitter/index.js +1 -1
  291. package/embed/renderers/vimeo/defaultRenderVimeoEmbedElement.d.ts +2 -0
  292. package/embed/renderers/vimeo/defaultRenderVimeoEmbedElement.js +26 -2
  293. package/embed/renderers/vimeo/index.cjs.js +27 -1
  294. package/embed/renderers/vimeo/index.d.ts +1 -1
  295. package/embed/renderers/vimeo/index.js +1 -1
  296. package/embed/renderers/youtube/defaultRenderYoutubeEmbedElement.d.ts +2 -0
  297. package/embed/renderers/youtube/defaultRenderYoutubeEmbedElement.js +26 -2
  298. package/embed/renderers/youtube/index.cjs.js +27 -1
  299. package/embed/renderers/youtube/index.d.ts +1 -1
  300. package/embed/renderers/youtube/index.js +1 -1
  301. package/embed/toolbar/EmbedToolbarIcon.d.ts +3 -6
  302. package/embed/toolbar/EmbedToolbarIcon.js +2 -2
  303. package/embed/toolbar/index.cjs.js +98 -13
  304. package/embed/toolbar/useEmbedTool.d.ts +1 -3
  305. package/embed/toolbar/useEmbedTool.js +96 -11
  306. package/embed/typings.d.ts +1 -0
  307. package/file-uploader/components/FileUploader.js +1 -2
  308. package/file-uploader/createReactFileUploader.js +4 -1
  309. package/file-uploader/defaultRenderFileUploaderElement.js +1 -1
  310. package/file-uploader/file-uploader.css +1 -1
  311. package/file-uploader/file-uploader.scss +0 -20
  312. package/file-uploader/index.cjs.js +5 -3
  313. package/file-uploader/toolbar/index.cjs.js +4 -1
  314. package/file-uploader/toolbar/useFileUploaderTool.d.ts +1 -1
  315. package/file-uploader/toolbar/useFileUploaderTool.js +4 -1
  316. package/file-uploader/typings.d.ts +6 -1
  317. package/footnote/defaultRenderFootnoteElement.js +1 -1
  318. package/footnote/index.cjs.js +1 -1
  319. package/footnote/jsx-serializer/defaultRenderFootnoteElement.js +1 -1
  320. package/footnote/jsx-serializer/index.cjs.js +1 -1
  321. package/footnote/toolbar/index.cjs.js +1 -1
  322. package/footnote/toolbar/useFootnoteTool.js +1 -1
  323. package/heading/defaultRenderHeadingElement.js +2 -1
  324. package/heading/heading.css +1 -0
  325. package/heading/heading.scss +53 -0
  326. package/heading/index.cjs.js +2 -1
  327. package/heading/package.json +4 -1
  328. package/image/components/Image.js +51 -10
  329. package/image/components/ImageCaption.js +6 -4
  330. package/image/components/ImagePlaceholder.d.ts +4 -0
  331. package/image/components/ImagePlaceholder.js +11 -0
  332. package/image/image.css +1 -1
  333. package/image/image.scss +61 -6
  334. package/image/index.cjs.js +84 -32
  335. package/image/index.d.ts +1 -0
  336. package/image/index.js +1 -0
  337. package/image/jsx-serializer/defaultRenderImageElements.js +2 -1
  338. package/image/jsx-serializer/index.cjs.js +2 -1
  339. package/image/jsx-serializer/typings.d.ts +2 -0
  340. package/image/typings.d.ts +2 -0
  341. package/index.cjs.js +555 -6
  342. package/index.js +9 -3
  343. package/input-block/components/InputBlock.js +19 -9
  344. package/input-block/defaultRenderInputBlockElement.js +1 -1
  345. package/input-block/hooks/useInputBlock.d.ts +2 -0
  346. package/input-block/hooks/useInputBlock.js +16 -8
  347. package/input-block/index.cjs.js +35 -17
  348. package/input-block/input-block.css +1 -0
  349. package/input-block/input-block.scss +38 -0
  350. package/input-block/package.json +4 -1
  351. package/line-break/line-break.scss +0 -2
  352. package/list/createReactList.js +11 -1
  353. package/list/index.cjs.js +15 -5
  354. package/list/list.css +1 -0
  355. package/list/list.scss +43 -0
  356. package/list/package.json +4 -1
  357. package/package.json +11 -8
  358. package/paragraph/createReactParagraph.d.ts +2 -0
  359. package/paragraph/createReactParagraph.js +8 -0
  360. package/paragraph/createRenderParagraphElement.d.ts +1 -1
  361. package/paragraph/defaultRenderParagraphElement.d.ts +3 -1
  362. package/paragraph/defaultRenderParagraphElement.js +4 -1
  363. package/paragraph/index.cjs.js +15 -2
  364. package/paragraph/index.d.ts +1 -0
  365. package/paragraph/index.js +1 -0
  366. package/paragraph/paragraph.css +1 -1
  367. package/paragraph/paragraph.scss +7 -2
  368. package/paragraph/renderParagraphElementWithSymbol.d.ts +3 -1
  369. package/paragraph/renderParagraphElementWithSymbol.js +4 -1
  370. package/paragraph/toolbar/ParagraphToolbarIcon.d.ts +8 -0
  371. package/paragraph/toolbar/ParagraphToolbarIcon.js +12 -0
  372. package/paragraph/toolbar/index.cjs.js +23 -0
  373. package/paragraph/toolbar/index.d.ts +2 -0
  374. package/paragraph/toolbar/index.js +2 -0
  375. package/paragraph/toolbar/package.json +7 -0
  376. package/paragraph/toolbar/useToggleParagraphTool.d.ts +5 -0
  377. package/paragraph/toolbar/useToggleParagraphTool.js +11 -0
  378. package/read-more/components/ReadMore.js +5 -3
  379. package/read-more/index.cjs.js +5 -3
  380. package/read-more/read-more.css +1 -1
  381. package/read-more/read-more.scss +27 -20
  382. package/toolbar/components/InlineToolbar.d.ts +18 -0
  383. package/toolbar/components/InlineToolbar.js +27 -0
  384. package/toolbar/components/Toolbar.js +23 -6
  385. package/toolbar/components/ToolbarGroupIcon.d.ts +7 -0
  386. package/toolbar/components/ToolbarGroupIcon.js +80 -0
  387. package/toolbar/components/ToolbarIcon.d.ts +3 -1
  388. package/toolbar/components/ToolbarIcon.js +24 -6
  389. package/toolbar/components/toolbarIconName.d.ts +2 -0
  390. package/toolbar/components/toolbarIconName.js +86 -0
  391. package/toolbar/contexts/toolbar.d.ts +7 -0
  392. package/toolbar/contexts/toolbar.js +10 -0
  393. package/toolbar/contexts/toolbarMenu.d.ts +6 -0
  394. package/toolbar/contexts/toolbarMenu.js +11 -0
  395. package/toolbar/hooks/useAutoGroupIcons.d.ts +12 -0
  396. package/toolbar/hooks/useAutoGroupIcons.js +68 -0
  397. package/toolbar/index.cjs.js +300 -12
  398. package/toolbar/index.d.ts +2 -0
  399. package/toolbar/index.js +2 -0
  400. package/toolbar/toolbar.css +1 -1
  401. package/toolbar/toolbar.scss +191 -43
  402. package/utils/index.cjs.js +153 -0
  403. package/utils/index.d.ts +6 -0
  404. package/utils/index.js +6 -0
  405. package/utils/removePreviousElement.d.ts +9 -0
  406. package/utils/removePreviousElement.js +38 -0
  407. package/utils/upload.d.ts +11 -0
  408. package/utils/upload.js +57 -0
  409. package/utils/useClickAway.d.ts +5 -0
  410. package/utils/useClickAway.js +23 -0
  411. package/utils/useDocumentEvents.d.ts +5 -0
  412. package/utils/useDocumentEvents.js +21 -0
  413. package/utils/useIsomorphicLayoutEffect.d.ts +2 -0
  414. package/utils/useIsomorphicLayoutEffect.js +9 -0
  415. package/utils/usePreviousValue.d.ts +1 -0
  416. package/utils/usePreviousValue.js +11 -0
  417. package/core/index.js +0 -11
@@ -1,21 +1,70 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var clsx = require('clsx');
5
+ var core = require('@quadrats/core');
6
+ var react = require('@quadrats/react');
7
+ var components = require('@quadrats/react/components');
8
+ var icons = require('@quadrats/icons');
9
+ var facebook = require('@quadrats/common/embed/strategies/facebook');
10
+ var base = require('@quadrats/react/embed/renderers/base');
4
11
 
5
- function Facebook({ attributes, children, data: { url, width, height } }) {
6
- return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-facebook", contentEditable: false }),
7
- React.createElement("iframe", { title: url, src: url, width: width, height: height, style: {
8
- border: 0,
9
- overflow: 'hidden',
10
- }, scrolling: "no", frameBorder: "0",
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-ignore
13
- // eslint-disable-next-line react/no-unknown-property
14
- allowtransparency: "true", allow: "encrypted-media" }),
15
- attributes ? children : undefined));
12
+ function Facebook({ attributes, children, data: { url, width, height }, element: { align }, toolbarElement, }) {
13
+ return (React.createElement("div", Object.assign({}, attributes, { className: clsx('qdr-embed-facebook', {
14
+ 'qdr-embed-facebook--left': align === 'left' || !align,
15
+ 'qdr-embed-facebook--center': align === 'center',
16
+ 'qdr-embed-facebook--right': align === 'right',
17
+ }), contentEditable: false }),
18
+ React.createElement("div", { className: "qdr-embed__inline-toolbar-wrapper", style: { width, height } },
19
+ toolbarElement,
20
+ React.createElement("iframe", { title: url, src: url, width: width, height: height, style: {
21
+ border: 0,
22
+ overflow: 'hidden',
23
+ }, scrolling: "no", frameBorder: "0",
24
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
25
+ // @ts-ignore
26
+ // eslint-disable-next-line react/no-unknown-property
27
+ allowtransparency: "true", allow: "encrypted-media" }),
28
+ attributes ? children : undefined)));
16
29
  }
17
30
 
18
- const defaultRenderFacebookEmbedElement = (props) => React.createElement(Facebook, Object.assign({}, props));
31
+ const defaultRenderFacebookEmbedElement = (props) => {
32
+ const { element } = props;
33
+ const locale = react.useLocale();
34
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.facebook.inputPlaceholder, hint: locale.editor.facebook.hint, confirmText: locale.editor.facebook.confirmText, type: "textarea", onConfirm: (editor, path, value) => {
35
+ var _a, _b, _c, _d;
36
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { url: (_a = facebook.FacebookEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.url, width: (_b = facebook.FacebookEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.width, height: (_c = facebook.FacebookEmbedStrategy.serialize(value)) === null || _c === void 0 ? void 0 : _c.height, embedType: (_d = facebook.FacebookEmbedStrategy.serialize(value)) === null || _d === void 0 ? void 0 : _d.embedType }), { at: path });
37
+ } }, toolbarElement => React.createElement(Facebook, Object.assign({}, props, { toolbarElement: toolbarElement }))));
38
+ };
39
+ const defaultRenderFacebookEmbedPlaceholderElement = () => {
40
+ const locale = react.useLocale();
41
+ return (React.createElement("div", { className: "qdr-embed-facebook__placeholder" },
42
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__title-wrapper" },
43
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Facebook, width: 48, height: 48 }),
44
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.facebook.blockPlaceholder)),
45
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__line-wrapper" },
46
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-28)' } }),
47
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
48
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } })),
49
+ React.createElement("div", { className: "qdr-embed__placeholder__body" }),
50
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__set-wrapper" },
51
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__tools-set" },
52
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
53
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
54
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__tools-set" },
55
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
56
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
57
+ React.createElement("div", { className: "qdr-embed-facebook__placeholder__tools-set" },
58
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
59
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })))));
60
+ };
61
+ const defaultRenderFacebookEmbedJsxSerializer = (props) => {
62
+ const { element } = props;
63
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
64
+ React.createElement(Facebook, Object.assign({}, props))));
65
+ };
19
66
 
20
67
  exports.Facebook = Facebook;
21
68
  exports.defaultRenderFacebookEmbedElement = defaultRenderFacebookEmbedElement;
69
+ exports.defaultRenderFacebookEmbedJsxSerializer = defaultRenderFacebookEmbedJsxSerializer;
70
+ exports.defaultRenderFacebookEmbedPlaceholderElement = defaultRenderFacebookEmbedPlaceholderElement;
@@ -1,2 +1,2 @@
1
1
  export { FacebookProps, default as Facebook } from './components/Facebook';
2
- export { defaultRenderFacebookEmbedElement } from './defaultRenderFacebookEmbedElement';
2
+ export * from './defaultRenderFacebookEmbedElement';
@@ -1,2 +1,2 @@
1
1
  export { default as Facebook } from './components/Facebook.js';
2
- export { defaultRenderFacebookEmbedElement } from './defaultRenderFacebookEmbedElement.js';
2
+ export { defaultRenderFacebookEmbedElement, defaultRenderFacebookEmbedJsxSerializer, defaultRenderFacebookEmbedPlaceholderElement } from './defaultRenderFacebookEmbedElement.js';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { InstagramEmbedElement } from '@quadrats/common/embed/strategies/instagram';
3
3
  import { RenderElementProps } from '@quadrats/react';
4
4
  export interface InstagramProps {
@@ -6,6 +6,7 @@ export interface InstagramProps {
6
6
  children?: any;
7
7
  data: string;
8
8
  element: InstagramEmbedElement;
9
+ toolbarElement: ReactNode;
9
10
  }
10
- declare function Instagram({ attributes, children, data: permalink }: InstagramProps): React.JSX.Element;
11
+ declare function Instagram({ attributes, children, data: permalink, element: { align }, toolbarElement }: InstagramProps): React.JSX.Element;
11
12
  export default Instagram;
@@ -1,7 +1,8 @@
1
1
  import React, { useEffect } from 'react';
2
+ import clsx from 'clsx';
2
3
  import { useLoadInstagramEmbedApi } from '../hooks/useLoadInstagramEmbedApi.js';
3
4
 
4
- function Instagram({ attributes, children, data: permalink }) {
5
+ function Instagram({ attributes, children, data: permalink, element: { align }, toolbarElement }) {
5
6
  useLoadInstagramEmbedApi(permalink);
6
7
  useEffect(() => {
7
8
  const observer = new MutationObserver((mutations) => {
@@ -21,22 +22,32 @@ function Instagram({ attributes, children, data: permalink }) {
21
22
  observer.disconnect();
22
23
  };
23
24
  }, []);
24
- return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-instagram", contentEditable: false, style: {
25
+ return (React.createElement("div", Object.assign({}, attributes, { className: clsx('qdr-embed-instagram', {
26
+ 'qdr-embed-instagram--left': align === 'left' || !align,
27
+ 'qdr-embed-instagram--center': align === 'center',
28
+ 'qdr-embed-instagram--right': align === 'right',
29
+ }), contentEditable: false, style: {
25
30
  display: 'flex',
26
31
  marginBottom: -12,
27
32
  } }),
28
- React.createElement("blockquote", { className: "instagram-media", "data-instgrm-captioned": true, "data-instgrm-permalink": permalink, "data-instgrm-version": "13", style: {
29
- background: '#FFF',
30
- border: 0,
31
- borderRadius: 3,
32
- boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
33
- margin: 1,
33
+ React.createElement("div", { className: "qdr-embed__inline-toolbar-wrapper", style: {
34
34
  maxWidth: 540,
35
35
  minWidth: 326,
36
- padding: 0,
37
36
  width: 'calc(100% - 2px)',
38
- } }),
39
- attributes ? children : undefined));
37
+ } },
38
+ toolbarElement,
39
+ React.createElement("blockquote", { className: "instagram-media", "data-instgrm-captioned": true, "data-instgrm-permalink": permalink, "data-instgrm-version": "13", style: {
40
+ background: '#FFF',
41
+ border: 0,
42
+ borderRadius: 3,
43
+ boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
44
+ margin: 1,
45
+ maxWidth: 540,
46
+ minWidth: 326,
47
+ padding: 0,
48
+ width: 'calc(100% - 2px)',
49
+ } }),
50
+ attributes ? children : undefined)));
40
51
  }
41
52
 
42
53
  export { Instagram as default };
@@ -1,3 +1,5 @@
1
1
  import React from 'react';
2
2
  import { InstagramProps } from './components/Instagram';
3
3
  export declare const defaultRenderInstagramEmbedElement: (props: InstagramProps) => React.JSX.Element;
4
+ export declare const defaultRenderInstagramEmbedPlaceholderElement: () => React.JSX.Element;
5
+ export declare const defaultRenderInstagramEmbedJsxSerializer: (props: InstagramProps) => React.JSX.Element;
@@ -1,6 +1,46 @@
1
1
  import React from 'react';
2
+ import { Transforms } from '@quadrats/core';
3
+ import { useLocale } from '@quadrats/react';
4
+ import { Icon } from '@quadrats/react/components';
5
+ import { Instagram as Instagram$1 } from '@quadrats/icons';
6
+ import { InstagramEmbedStrategy } from '@quadrats/common/embed/strategies/instagram';
2
7
  import Instagram from './components/Instagram.js';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderInstagramEmbedElement = (props) => React.createElement(Instagram, Object.assign({}, props));
10
+ const defaultRenderInstagramEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.instagram.inputPlaceholder, hint: locale.editor.instagram.hint, confirmText: locale.editor.instagram.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { url: (_a = InstagramEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.url }), { at: path });
16
+ } }, toolbarElement => React.createElement(Instagram, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderInstagramEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-instagram__placeholder" },
21
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__title-wrapper" },
22
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: Instagram$1, width: 48, height: 48 }),
23
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.instagram.blockPlaceholder)),
24
+ React.createElement("div", { className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
25
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__set-wrapper" },
26
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
27
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
28
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
29
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
30
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
31
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
32
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
33
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
34
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" }))),
35
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__line-wrapper" },
36
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-28)' } }),
37
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
38
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } }))));
39
+ };
40
+ const defaultRenderInstagramEmbedJsxSerializer = (props) => {
41
+ const { element } = props;
42
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
43
+ React.createElement(Instagram, Object.assign({}, props))));
44
+ };
5
45
 
6
- export { defaultRenderInstagramEmbedElement };
46
+ export { defaultRenderInstagramEmbedElement, defaultRenderInstagramEmbedJsxSerializer, defaultRenderInstagramEmbedPlaceholderElement };
@@ -1,6 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var clsx = require('clsx');
5
+ var core = require('@quadrats/core');
6
+ var react = require('@quadrats/react');
7
+ var components = require('@quadrats/react/components');
8
+ var icons = require('@quadrats/icons');
9
+ var instagram = require('@quadrats/common/embed/strategies/instagram');
10
+ var base = require('@quadrats/react/embed/renderers/base');
4
11
 
5
12
  function getInstagramEmbedApi() {
6
13
  return window.instgrm;
@@ -26,7 +33,7 @@ function useLoadInstagramEmbedApi(permalink) {
26
33
  }, [permalink]);
27
34
  }
28
35
 
29
- function Instagram({ attributes, children, data: permalink }) {
36
+ function Instagram({ attributes, children, data: permalink, element: { align }, toolbarElement }) {
30
37
  useLoadInstagramEmbedApi(permalink);
31
38
  React.useEffect(() => {
32
39
  const observer = new MutationObserver((mutations) => {
@@ -46,26 +53,72 @@ function Instagram({ attributes, children, data: permalink }) {
46
53
  observer.disconnect();
47
54
  };
48
55
  }, []);
49
- return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-instagram", contentEditable: false, style: {
56
+ return (React.createElement("div", Object.assign({}, attributes, { className: clsx('qdr-embed-instagram', {
57
+ 'qdr-embed-instagram--left': align === 'left' || !align,
58
+ 'qdr-embed-instagram--center': align === 'center',
59
+ 'qdr-embed-instagram--right': align === 'right',
60
+ }), contentEditable: false, style: {
50
61
  display: 'flex',
51
62
  marginBottom: -12,
52
63
  } }),
53
- React.createElement("blockquote", { className: "instagram-media", "data-instgrm-captioned": true, "data-instgrm-permalink": permalink, "data-instgrm-version": "13", style: {
54
- background: '#FFF',
55
- border: 0,
56
- borderRadius: 3,
57
- boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
58
- margin: 1,
64
+ React.createElement("div", { className: "qdr-embed__inline-toolbar-wrapper", style: {
59
65
  maxWidth: 540,
60
66
  minWidth: 326,
61
- padding: 0,
62
67
  width: 'calc(100% - 2px)',
63
- } }),
64
- attributes ? children : undefined));
68
+ } },
69
+ toolbarElement,
70
+ React.createElement("blockquote", { className: "instagram-media", "data-instgrm-captioned": true, "data-instgrm-permalink": permalink, "data-instgrm-version": "13", style: {
71
+ background: '#FFF',
72
+ border: 0,
73
+ borderRadius: 3,
74
+ boxShadow: '0 0 1px 0 rgba(0,0,0,0.5), 0 1px 10px 0 rgba(0,0,0,0.15)',
75
+ margin: 1,
76
+ maxWidth: 540,
77
+ minWidth: 326,
78
+ padding: 0,
79
+ width: 'calc(100% - 2px)',
80
+ } }),
81
+ attributes ? children : undefined)));
65
82
  }
66
83
 
67
- const defaultRenderInstagramEmbedElement = (props) => React.createElement(Instagram, Object.assign({}, props));
84
+ const defaultRenderInstagramEmbedElement = (props) => {
85
+ const { element } = props;
86
+ const locale = react.useLocale();
87
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.instagram.inputPlaceholder, hint: locale.editor.instagram.hint, confirmText: locale.editor.instagram.confirmText, onConfirm: (editor, path, value) => {
88
+ var _a;
89
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { url: (_a = instagram.InstagramEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.url }), { at: path });
90
+ } }, toolbarElement => React.createElement(Instagram, Object.assign({}, props, { toolbarElement: toolbarElement }))));
91
+ };
92
+ const defaultRenderInstagramEmbedPlaceholderElement = () => {
93
+ const locale = react.useLocale();
94
+ return (React.createElement("div", { className: "qdr-embed-instagram__placeholder" },
95
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__title-wrapper" },
96
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Instagram, width: 48, height: 48 }),
97
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.instagram.blockPlaceholder)),
98
+ React.createElement("div", { className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
99
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__set-wrapper" },
100
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
101
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
102
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
103
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
104
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
105
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
106
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__tools-set" },
107
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
108
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" }))),
109
+ React.createElement("div", { className: "qdr-embed-instagram__placeholder__line-wrapper" },
110
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-28)' } }),
111
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
112
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } }))));
113
+ };
114
+ const defaultRenderInstagramEmbedJsxSerializer = (props) => {
115
+ const { element } = props;
116
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
117
+ React.createElement(Instagram, Object.assign({}, props))));
118
+ };
68
119
 
69
120
  exports.Instagram = Instagram;
70
121
  exports.defaultRenderInstagramEmbedElement = defaultRenderInstagramEmbedElement;
122
+ exports.defaultRenderInstagramEmbedJsxSerializer = defaultRenderInstagramEmbedJsxSerializer;
123
+ exports.defaultRenderInstagramEmbedPlaceholderElement = defaultRenderInstagramEmbedPlaceholderElement;
71
124
  exports.useLoadInstagramEmbedApi = useLoadInstagramEmbedApi;
@@ -1,3 +1,3 @@
1
1
  export { useLoadInstagramEmbedApi } from './hooks/useLoadInstagramEmbedApi';
2
2
  export { InstagramProps, default as Instagram } from './components/Instagram';
3
- export { defaultRenderInstagramEmbedElement } from './defaultRenderInstagramEmbedElement';
3
+ export * from './defaultRenderInstagramEmbedElement';
@@ -1,3 +1,3 @@
1
1
  export { useLoadInstagramEmbedApi } from './hooks/useLoadInstagramEmbedApi.js';
2
2
  export { default as Instagram } from './components/Instagram.js';
3
- export { defaultRenderInstagramEmbedElement } from './defaultRenderInstagramEmbedElement.js';
3
+ export { defaultRenderInstagramEmbedElement, defaultRenderInstagramEmbedJsxSerializer, defaultRenderInstagramEmbedPlaceholderElement } from './defaultRenderInstagramEmbedElement.js';
@@ -1,10 +1,11 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import React, { PropsWithChildren, ReactNode } from 'react';
2
2
  import { PodcastAppleEmbedElement } from '@quadrats/common/embed/strategies/podcast-apple';
3
3
  import { RenderElementProps } from '@quadrats/react';
4
4
  export interface PodcastAppleProps {
5
5
  attributes?: RenderElementProps['attributes'];
6
6
  data: string;
7
7
  element: PodcastAppleEmbedElement;
8
+ toolbarElement: ReactNode;
8
9
  }
9
- declare function PodcastApple({ attributes, children, data: src }: PropsWithChildren<PodcastAppleProps>): React.JSX.Element;
10
+ declare function PodcastApple({ attributes, children, data: src, toolbarElement }: PropsWithChildren<PodcastAppleProps>): React.JSX.Element;
10
11
  export default PodcastApple;
@@ -1,10 +1,11 @@
1
1
  import React, { useRef } from 'react';
2
2
  import { composeRefs } from '@quadrats/react/utils';
3
3
 
4
- function PodcastApple({ attributes, children, data: src }) {
4
+ function PodcastApple({ attributes, children, data: src, toolbarElement }) {
5
5
  const containerRef = useRef(null);
6
6
  const composedRef = composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, containerRef]);
7
7
  return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-podcast-apple", ref: composedRef, contentEditable: false }),
8
+ toolbarElement,
8
9
  React.createElement("iframe", { title: src, src: src, frameBorder: "0", width: "100%", height: "450px" }),
9
10
  attributes ? children : undefined));
10
11
  }
@@ -1,3 +1,5 @@
1
1
  import React from 'react';
2
2
  import { PodcastAppleProps } from './components/PodcastApple';
3
3
  export declare const defaultRenderPodcastAppleEmbedElement: (props: PodcastAppleProps) => React.JSX.Element;
4
+ export declare const defaultRenderPodcastAppleEmbedPlaceholderElement: () => React.JSX.Element;
5
+ export declare const defaultRenderPodcastAppleEmbedJsxSerializer: (props: PodcastAppleProps) => React.JSX.Element;
@@ -1,6 +1,39 @@
1
1
  import React from 'react';
2
+ import { Transforms } from '@quadrats/core';
3
+ import { useLocale } from '@quadrats/react';
4
+ import { Icon } from '@quadrats/react/components';
5
+ import { PodcastApple as PodcastApple$1 } from '@quadrats/icons';
6
+ import { PodcastAppleEmbedStrategy } from '@quadrats/common/embed/strategies/podcast-apple';
2
7
  import PodcastApple from './components/PodcastApple.js';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderPodcastAppleEmbedElement = (props) => React.createElement(PodcastApple, Object.assign({}, props));
10
+ const defaultRenderPodcastAppleEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.podcastApple.inputPlaceholder, hint: locale.editor.podcastApple.hint, confirmText: locale.editor.podcastApple.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a, _b, _c;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = PodcastAppleEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, language: (_b = PodcastAppleEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.language, contextId: (_c = PodcastAppleEmbedStrategy.serialize(value)) === null || _c === void 0 ? void 0 : _c.contextId }), { at: path });
16
+ } }, toolbarElement => React.createElement(PodcastApple, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderPodcastAppleEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder" },
21
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: PodcastApple$1, width: 24, height: 24 }),
22
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__wrapper" },
23
+ React.createElement("div", { style: { width: 120 }, className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
24
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__content-wrapper" },
25
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__title-wrapper" },
26
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.podcastApple.blockPlaceholder),
27
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-18)' } }),
28
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-24)' } })),
29
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__blocks-wrapper" },
30
+ React.createElement("div", { className: "qdr-embed__placeholder__block" }),
31
+ React.createElement("div", { className: "qdr-embed__placeholder__block" }))))));
32
+ };
33
+ const defaultRenderPodcastAppleEmbedJsxSerializer = (props) => {
34
+ const { element } = props;
35
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
36
+ React.createElement(PodcastApple, Object.assign({}, props))));
37
+ };
5
38
 
6
- export { defaultRenderPodcastAppleEmbedElement };
39
+ export { defaultRenderPodcastAppleEmbedElement, defaultRenderPodcastAppleEmbedJsxSerializer, defaultRenderPodcastAppleEmbedPlaceholderElement };
@@ -2,16 +2,52 @@
2
2
 
3
3
  var React = require('react');
4
4
  var utils = require('@quadrats/react/utils');
5
+ var core = require('@quadrats/core');
6
+ var react = require('@quadrats/react');
7
+ var components = require('@quadrats/react/components');
8
+ var icons = require('@quadrats/icons');
9
+ var podcastApple = require('@quadrats/common/embed/strategies/podcast-apple');
10
+ var base = require('@quadrats/react/embed/renderers/base');
5
11
 
6
- function PodcastApple({ attributes, children, data: src }) {
12
+ function PodcastApple({ attributes, children, data: src, toolbarElement }) {
7
13
  const containerRef = React.useRef(null);
8
14
  const composedRef = utils.composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, containerRef]);
9
15
  return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-podcast-apple", ref: composedRef, contentEditable: false }),
16
+ toolbarElement,
10
17
  React.createElement("iframe", { title: src, src: src, frameBorder: "0", width: "100%", height: "450px" }),
11
18
  attributes ? children : undefined));
12
19
  }
13
20
 
14
- const defaultRenderPodcastAppleEmbedElement = (props) => React.createElement(PodcastApple, Object.assign({}, props));
21
+ const defaultRenderPodcastAppleEmbedElement = (props) => {
22
+ const { element } = props;
23
+ const locale = react.useLocale();
24
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.podcastApple.inputPlaceholder, hint: locale.editor.podcastApple.hint, confirmText: locale.editor.podcastApple.confirmText, onConfirm: (editor, path, value) => {
25
+ var _a, _b, _c;
26
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = podcastApple.PodcastAppleEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, language: (_b = podcastApple.PodcastAppleEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.language, contextId: (_c = podcastApple.PodcastAppleEmbedStrategy.serialize(value)) === null || _c === void 0 ? void 0 : _c.contextId }), { at: path });
27
+ } }, toolbarElement => React.createElement(PodcastApple, Object.assign({}, props, { toolbarElement: toolbarElement }))));
28
+ };
29
+ const defaultRenderPodcastAppleEmbedPlaceholderElement = () => {
30
+ const locale = react.useLocale();
31
+ return (React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder" },
32
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.PodcastApple, width: 24, height: 24 }),
33
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__wrapper" },
34
+ React.createElement("div", { style: { width: 120 }, className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
35
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__content-wrapper" },
36
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__title-wrapper" },
37
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.podcastApple.blockPlaceholder),
38
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-18)' } }),
39
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-24)' } })),
40
+ React.createElement("div", { className: "qdr-embed-podcast-apple__placeholder__blocks-wrapper" },
41
+ React.createElement("div", { className: "qdr-embed__placeholder__block" }),
42
+ React.createElement("div", { className: "qdr-embed__placeholder__block" }))))));
43
+ };
44
+ const defaultRenderPodcastAppleEmbedJsxSerializer = (props) => {
45
+ const { element } = props;
46
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
47
+ React.createElement(PodcastApple, Object.assign({}, props))));
48
+ };
15
49
 
16
50
  exports.PodcastApple = PodcastApple;
17
51
  exports.defaultRenderPodcastAppleEmbedElement = defaultRenderPodcastAppleEmbedElement;
52
+ exports.defaultRenderPodcastAppleEmbedJsxSerializer = defaultRenderPodcastAppleEmbedJsxSerializer;
53
+ exports.defaultRenderPodcastAppleEmbedPlaceholderElement = defaultRenderPodcastAppleEmbedPlaceholderElement;
@@ -1,2 +1,2 @@
1
1
  export { PodcastAppleProps, default as PodcastApple } from './components/PodcastApple';
2
- export { defaultRenderPodcastAppleEmbedElement } from './defaultRenderPodcastAppleEmbedElement';
2
+ export * from './defaultRenderPodcastAppleEmbedElement';
@@ -1,2 +1,2 @@
1
1
  export { default as PodcastApple } from './components/PodcastApple.js';
2
- export { defaultRenderPodcastAppleEmbedElement } from './defaultRenderPodcastAppleEmbedElement.js';
2
+ export { defaultRenderPodcastAppleEmbedElement, defaultRenderPodcastAppleEmbedJsxSerializer, defaultRenderPodcastAppleEmbedPlaceholderElement } from './defaultRenderPodcastAppleEmbedElement.js';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { SpotifyEmbedElement } from '@quadrats/common/embed/strategies/spotify';
3
3
  import { RenderElementProps } from '@quadrats/react';
4
4
  export interface SpotifyProps {
@@ -6,6 +6,7 @@ export interface SpotifyProps {
6
6
  children?: any;
7
7
  data: string;
8
8
  element: SpotifyEmbedElement;
9
+ toolbarElement: ReactNode;
9
10
  }
10
- declare function Spotify({ attributes, children, data: src }: SpotifyProps): React.JSX.Element;
11
+ declare function Spotify({ attributes, children, data: src, toolbarElement }: SpotifyProps): React.JSX.Element;
11
12
  export default Spotify;
@@ -1,11 +1,13 @@
1
1
  import React, { useRef, useMemo } from 'react';
2
2
  import { composeRefs } from '@quadrats/react/utils';
3
3
 
4
- function Spotify({ attributes, children, data: src }) {
4
+ /* eslint-disable react/no-unknown-property */
5
+ function Spotify({ attributes, children, data: src, toolbarElement }) {
5
6
  const containerRef = useRef(null);
6
7
  const composedRef = composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, containerRef]);
7
8
  const higher = useMemo(() => (!!src.match(/\/playlist/)), [src]);
8
9
  return (React.createElement("div", Object.assign({}, attributes, { ref: composedRef, className: "qdr-embed-spotify", contentEditable: false }),
10
+ toolbarElement,
9
11
  React.createElement("iframe", { title: src, src: src, frameBorder: "0", width: "100%", allow: "autoplay", "clipboard-write": "true", "encrypted-media": "true", "picture-in-picture": "true", height: higher ? '400px' : '152px', style: {
10
12
  maxHeight: '100%',
11
13
  height: higher ? '400px' : '152px',
@@ -1,3 +1,5 @@
1
1
  import React from 'react';
2
2
  import { SpotifyProps } from './components/Spotify';
3
3
  export declare const defaultRenderSpotifyEmbedElement: (props: SpotifyProps) => React.JSX.Element;
4
+ export declare const defaultRenderSpotifyEmbedPlaceholderElement: () => React.JSX.Element;
5
+ export declare const defaultRenderSpotifyEmbedJsxSerializer: (props: SpotifyProps) => React.JSX.Element;
@@ -1,6 +1,36 @@
1
1
  import React from 'react';
2
+ import { Transforms } from '@quadrats/core';
3
+ import { useLocale } from '@quadrats/react';
4
+ import { Icon } from '@quadrats/react/components';
5
+ import { Spotify as Spotify$1 } from '@quadrats/icons';
6
+ import { SpotifyEmbedStrategy } from '@quadrats/common/embed/strategies/spotify';
2
7
  import Spotify from './components/Spotify.js';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderSpotifyEmbedElement = (props) => React.createElement(Spotify, Object.assign({}, props));
10
+ const defaultRenderSpotifyEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.spotify.inputPlaceholder, hint: locale.editor.spotify.hint, confirmText: locale.editor.spotify.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a, _b;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = SpotifyEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, contextId: (_b = SpotifyEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.contextId }), { at: path });
16
+ } }, toolbarElement => React.createElement(Spotify, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderSpotifyEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-spotify__placeholder" },
21
+ React.createElement("div", { style: { width: 120 }, className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
22
+ React.createElement("div", { className: "qdr-embed-spotify__placeholder__title-wrapper" },
23
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.spotify.blockPlaceholder),
24
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
25
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } })),
26
+ React.createElement("div", { className: "qdr-embed-spotify__placeholder__icon-wrapper" },
27
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: Spotify$1, width: 36, height: 36 }),
28
+ React.createElement("div", { className: "qdr-embed__placeholder__dot", style: { width: 30, height: 30 } }))));
29
+ };
30
+ const defaultRenderSpotifyEmbedJsxSerializer = (props) => {
31
+ const { element } = props;
32
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
33
+ React.createElement(Spotify, Object.assign({}, props))));
34
+ };
5
35
 
6
- export { defaultRenderSpotifyEmbedElement };
36
+ export { defaultRenderSpotifyEmbedElement, defaultRenderSpotifyEmbedJsxSerializer, defaultRenderSpotifyEmbedPlaceholderElement };