@quadrats/react 0.7.7 → 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 (418) 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/createReactImage.js +13 -13
  333. package/image/image.css +1 -1
  334. package/image/image.scss +61 -6
  335. package/image/index.cjs.js +97 -45
  336. package/image/index.d.ts +1 -0
  337. package/image/index.js +1 -0
  338. package/image/jsx-serializer/defaultRenderImageElements.js +2 -1
  339. package/image/jsx-serializer/index.cjs.js +2 -1
  340. package/image/jsx-serializer/typings.d.ts +2 -0
  341. package/image/typings.d.ts +2 -0
  342. package/index.cjs.js +555 -6
  343. package/index.js +9 -3
  344. package/input-block/components/InputBlock.js +19 -9
  345. package/input-block/defaultRenderInputBlockElement.js +1 -1
  346. package/input-block/hooks/useInputBlock.d.ts +2 -0
  347. package/input-block/hooks/useInputBlock.js +16 -8
  348. package/input-block/index.cjs.js +35 -17
  349. package/input-block/input-block.css +1 -0
  350. package/input-block/input-block.scss +38 -0
  351. package/input-block/package.json +4 -1
  352. package/line-break/line-break.scss +0 -2
  353. package/list/createReactList.js +11 -1
  354. package/list/index.cjs.js +15 -5
  355. package/list/list.css +1 -0
  356. package/list/list.scss +43 -0
  357. package/list/package.json +4 -1
  358. package/package.json +11 -8
  359. package/paragraph/createReactParagraph.d.ts +2 -0
  360. package/paragraph/createReactParagraph.js +8 -0
  361. package/paragraph/createRenderParagraphElement.d.ts +1 -1
  362. package/paragraph/defaultRenderParagraphElement.d.ts +3 -1
  363. package/paragraph/defaultRenderParagraphElement.js +4 -1
  364. package/paragraph/index.cjs.js +15 -2
  365. package/paragraph/index.d.ts +1 -0
  366. package/paragraph/index.js +1 -0
  367. package/paragraph/paragraph.css +1 -1
  368. package/paragraph/paragraph.scss +7 -2
  369. package/paragraph/renderParagraphElementWithSymbol.d.ts +3 -1
  370. package/paragraph/renderParagraphElementWithSymbol.js +4 -1
  371. package/paragraph/toolbar/ParagraphToolbarIcon.d.ts +8 -0
  372. package/paragraph/toolbar/ParagraphToolbarIcon.js +12 -0
  373. package/paragraph/toolbar/index.cjs.js +23 -0
  374. package/paragraph/toolbar/index.d.ts +2 -0
  375. package/paragraph/toolbar/index.js +2 -0
  376. package/paragraph/toolbar/package.json +7 -0
  377. package/paragraph/toolbar/useToggleParagraphTool.d.ts +5 -0
  378. package/paragraph/toolbar/useToggleParagraphTool.js +11 -0
  379. package/read-more/components/ReadMore.js +5 -3
  380. package/read-more/index.cjs.js +5 -3
  381. package/read-more/read-more.css +1 -1
  382. package/read-more/read-more.scss +27 -20
  383. package/toolbar/components/InlineToolbar.d.ts +18 -0
  384. package/toolbar/components/InlineToolbar.js +27 -0
  385. package/toolbar/components/Toolbar.js +23 -6
  386. package/toolbar/components/ToolbarGroupIcon.d.ts +7 -0
  387. package/toolbar/components/ToolbarGroupIcon.js +80 -0
  388. package/toolbar/components/ToolbarIcon.d.ts +3 -1
  389. package/toolbar/components/ToolbarIcon.js +24 -6
  390. package/toolbar/components/toolbarIconName.d.ts +2 -0
  391. package/toolbar/components/toolbarIconName.js +86 -0
  392. package/toolbar/contexts/toolbar.d.ts +7 -0
  393. package/toolbar/contexts/toolbar.js +10 -0
  394. package/toolbar/contexts/toolbarMenu.d.ts +6 -0
  395. package/toolbar/contexts/toolbarMenu.js +11 -0
  396. package/toolbar/hooks/useAutoGroupIcons.d.ts +12 -0
  397. package/toolbar/hooks/useAutoGroupIcons.js +68 -0
  398. package/toolbar/index.cjs.js +300 -12
  399. package/toolbar/index.d.ts +2 -0
  400. package/toolbar/index.js +2 -0
  401. package/toolbar/toolbar.css +1 -1
  402. package/toolbar/toolbar.scss +191 -43
  403. package/utils/index.cjs.js +153 -0
  404. package/utils/index.d.ts +6 -0
  405. package/utils/index.js +6 -0
  406. package/utils/removePreviousElement.d.ts +9 -0
  407. package/utils/removePreviousElement.js +38 -0
  408. package/utils/upload.d.ts +11 -0
  409. package/utils/upload.js +57 -0
  410. package/utils/useClickAway.d.ts +5 -0
  411. package/utils/useClickAway.js +23 -0
  412. package/utils/useDocumentEvents.d.ts +5 -0
  413. package/utils/useDocumentEvents.js +21 -0
  414. package/utils/useIsomorphicLayoutEffect.d.ts +2 -0
  415. package/utils/useIsomorphicLayoutEffect.js +9 -0
  416. package/utils/usePreviousValue.d.ts +1 -0
  417. package/utils/usePreviousValue.js +11 -0
  418. package/core/index.js +0 -11
@@ -2,12 +2,20 @@
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 spotify = require('@quadrats/common/embed/strategies/spotify');
10
+ var base = require('@quadrats/react/embed/renderers/base');
5
11
 
6
- function Spotify({ attributes, children, data: src }) {
12
+ /* eslint-disable react/no-unknown-property */
13
+ function Spotify({ attributes, children, data: src, toolbarElement }) {
7
14
  const containerRef = React.useRef(null);
8
15
  const composedRef = utils.composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, containerRef]);
9
16
  const higher = React.useMemo(() => (!!src.match(/\/playlist/)), [src]);
10
17
  return (React.createElement("div", Object.assign({}, attributes, { ref: composedRef, className: "qdr-embed-spotify", contentEditable: false }),
18
+ toolbarElement,
11
19
  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: {
12
20
  maxHeight: '100%',
13
21
  height: higher ? '400px' : '152px',
@@ -15,7 +23,33 @@ function Spotify({ attributes, children, data: src }) {
15
23
  attributes ? children : undefined));
16
24
  }
17
25
 
18
- const defaultRenderSpotifyEmbedElement = (props) => React.createElement(Spotify, Object.assign({}, props));
26
+ const defaultRenderSpotifyEmbedElement = (props) => {
27
+ const { element } = props;
28
+ const locale = react.useLocale();
29
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.spotify.inputPlaceholder, hint: locale.editor.spotify.hint, confirmText: locale.editor.spotify.confirmText, onConfirm: (editor, path, value) => {
30
+ var _a, _b;
31
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = spotify.SpotifyEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, contextId: (_b = spotify.SpotifyEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.contextId }), { at: path });
32
+ } }, toolbarElement => React.createElement(Spotify, Object.assign({}, props, { toolbarElement: toolbarElement }))));
33
+ };
34
+ const defaultRenderSpotifyEmbedPlaceholderElement = () => {
35
+ const locale = react.useLocale();
36
+ return (React.createElement("div", { className: "qdr-embed-spotify__placeholder" },
37
+ React.createElement("div", { style: { width: 120 }, className: "qdr-embed__placeholder__body qdr-embed__placeholder__body--square" }),
38
+ React.createElement("div", { className: "qdr-embed-spotify__placeholder__title-wrapper" },
39
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.spotify.blockPlaceholder),
40
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
41
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } })),
42
+ React.createElement("div", { className: "qdr-embed-spotify__placeholder__icon-wrapper" },
43
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Spotify, width: 36, height: 36 }),
44
+ React.createElement("div", { className: "qdr-embed__placeholder__dot", style: { width: 30, height: 30 } }))));
45
+ };
46
+ const defaultRenderSpotifyEmbedJsxSerializer = (props) => {
47
+ const { element } = props;
48
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
49
+ React.createElement(Spotify, Object.assign({}, props))));
50
+ };
19
51
 
20
52
  exports.Spotify = Spotify;
21
53
  exports.defaultRenderSpotifyEmbedElement = defaultRenderSpotifyEmbedElement;
54
+ exports.defaultRenderSpotifyEmbedJsxSerializer = defaultRenderSpotifyEmbedJsxSerializer;
55
+ exports.defaultRenderSpotifyEmbedPlaceholderElement = defaultRenderSpotifyEmbedPlaceholderElement;
@@ -1,2 +1,2 @@
1
1
  export { SpotifyProps, default as Spotify } from './components/Spotify';
2
- export { defaultRenderSpotifyEmbedElement } from './defaultRenderSpotifyEmbedElement';
2
+ export * from './defaultRenderSpotifyEmbedElement';
@@ -1,2 +1,2 @@
1
1
  export { default as Spotify } from './components/Spotify.js';
2
- export { defaultRenderSpotifyEmbedElement } from './defaultRenderSpotifyEmbedElement.js';
2
+ export { defaultRenderSpotifyEmbedElement, defaultRenderSpotifyEmbedJsxSerializer, defaultRenderSpotifyEmbedPlaceholderElement } from './defaultRenderSpotifyEmbedElement.js';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import { TwitterEmbedElement } from '@quadrats/common/embed/strategies/twitter';
3
3
  import { RenderElementProps } from '@quadrats/react';
4
4
  export interface TwitterProps {
@@ -6,6 +6,7 @@ export interface TwitterProps {
6
6
  children?: any;
7
7
  data: string;
8
8
  element: TwitterEmbedElement;
9
+ toolbarElement: ReactNode;
9
10
  }
10
- declare function Twitter({ attributes, children, data: tweetId }: TwitterProps): React.JSX.Element;
11
+ declare function Twitter({ attributes, children, data: tweetId, element: { align }, toolbarElement }: TwitterProps): React.JSX.Element;
11
12
  export default Twitter;
@@ -1,12 +1,24 @@
1
1
  import React, { useRef } from 'react';
2
+ import clsx from 'clsx';
2
3
  import { composeRefs } from '@quadrats/react/utils';
3
4
  import { useLoadTwitterEmbedApi } from '../hooks/useLoadTwitterEmbedApi.js';
4
5
 
5
- function Twitter({ attributes, children, data: tweetId }) {
6
+ function Twitter({ attributes, children, data: tweetId, element: { align }, toolbarElement }) {
6
7
  const tweetContainerRef = useRef(null);
7
8
  const composedRef = composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, tweetContainerRef]);
8
9
  useLoadTwitterEmbedApi(tweetId, tweetContainerRef);
9
- return (React.createElement("div", Object.assign({}, attributes, { ref: composedRef, className: "qdr-embed-twitter", contentEditable: false }), attributes ? children : undefined));
10
+ return (React.createElement("div", Object.assign({}, attributes, { className: clsx('qdr-embed-twitter', {
11
+ 'qdr-embed-twitter--left': align === 'left' || !align,
12
+ 'qdr-embed-twitter--center': align === 'center',
13
+ 'qdr-embed-twitter--right': align === 'right',
14
+ }), contentEditable: false }),
15
+ React.createElement("div", { className: "qdr-embed__inline-toolbar-wrapper", style: {
16
+ width: '100%',
17
+ maxWidth: 550,
18
+ } },
19
+ toolbarElement,
20
+ React.createElement("div", { ref: composedRef, className: "qdr-embed-twitter__container" }),
21
+ attributes ? children : undefined)));
10
22
  }
11
23
 
12
24
  export { Twitter as default };
@@ -1,3 +1,5 @@
1
1
  import React from 'react';
2
2
  import { TwitterProps } from './components/Twitter';
3
3
  export declare const defaultRenderTwitterEmbedElement: (props: TwitterProps) => React.JSX.Element;
4
+ export declare const defaultRenderTwitterEmbedPlaceholderElement: () => React.JSX.Element;
5
+ export declare const defaultRenderTwitterEmbedJsxSerializer: (props: TwitterProps) => 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 { Twitter as Twitter$1 } from '@quadrats/icons';
6
+ import { TwitterEmbedStrategy } from '@quadrats/common/embed/strategies/twitter';
2
7
  import Twitter from './components/Twitter.js';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderTwitterEmbedElement = (props) => React.createElement(Twitter, Object.assign({}, props));
10
+ const defaultRenderTwitterEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.twitter.tweet.inputPlaceholder, hint: locale.editor.twitter.tweet.hint, confirmText: locale.editor.twitter.tweet.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a, _b;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = TwitterEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, tweetId: (_b = TwitterEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.tweetId }), { at: path });
16
+ } }, toolbarElement => React.createElement(Twitter, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderTwitterEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-twitter__placeholder" },
21
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__title-wrapper" },
22
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: Twitter$1, width: 48, height: 48 }),
23
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.twitter.tweet.blockPlaceholder)),
24
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__line-wrapper" },
25
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-28)' } }),
26
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
27
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } })),
28
+ React.createElement("div", { className: "qdr-embed__placeholder__body" }),
29
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__set-wrapper" },
30
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
31
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
32
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
33
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
34
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
35
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
36
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
37
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
38
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })))));
39
+ };
40
+ const defaultRenderTwitterEmbedJsxSerializer = (props) => {
41
+ const { element } = props;
42
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
43
+ React.createElement(Twitter, Object.assign({}, props))));
44
+ };
5
45
 
6
- export { defaultRenderTwitterEmbedElement };
46
+ export { defaultRenderTwitterEmbedElement, defaultRenderTwitterEmbedJsxSerializer, defaultRenderTwitterEmbedPlaceholderElement };
@@ -1,7 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var clsx = require('clsx');
4
5
  var utils = require('@quadrats/react/utils');
6
+ var core = require('@quadrats/core');
7
+ var react = require('@quadrats/react');
8
+ var components = require('@quadrats/react/components');
9
+ var icons = require('@quadrats/icons');
10
+ var twitter = require('@quadrats/common/embed/strategies/twitter');
11
+ var base = require('@quadrats/react/embed/renderers/base');
5
12
 
6
13
  function getTwitterEmbedApi() {
7
14
  return window.twttr;
@@ -33,15 +40,62 @@ function useLoadTwitterEmbedApi(tweetId, tweetContainerRef) {
33
40
  }, [tweetId, tweetContainerRef]);
34
41
  }
35
42
 
36
- function Twitter({ attributes, children, data: tweetId }) {
43
+ function Twitter({ attributes, children, data: tweetId, element: { align }, toolbarElement }) {
37
44
  const tweetContainerRef = React.useRef(null);
38
45
  const composedRef = utils.composeRefs([attributes === null || attributes === void 0 ? void 0 : attributes.ref, tweetContainerRef]);
39
46
  useLoadTwitterEmbedApi(tweetId, tweetContainerRef);
40
- return (React.createElement("div", Object.assign({}, attributes, { ref: composedRef, className: "qdr-embed-twitter", contentEditable: false }), attributes ? children : undefined));
47
+ return (React.createElement("div", Object.assign({}, attributes, { className: clsx('qdr-embed-twitter', {
48
+ 'qdr-embed-twitter--left': align === 'left' || !align,
49
+ 'qdr-embed-twitter--center': align === 'center',
50
+ 'qdr-embed-twitter--right': align === 'right',
51
+ }), contentEditable: false }),
52
+ React.createElement("div", { className: "qdr-embed__inline-toolbar-wrapper", style: {
53
+ width: '100%',
54
+ maxWidth: 550,
55
+ } },
56
+ toolbarElement,
57
+ React.createElement("div", { ref: composedRef, className: "qdr-embed-twitter__container" }),
58
+ attributes ? children : undefined)));
41
59
  }
42
60
 
43
- const defaultRenderTwitterEmbedElement = (props) => React.createElement(Twitter, Object.assign({}, props));
61
+ const defaultRenderTwitterEmbedElement = (props) => {
62
+ const { element } = props;
63
+ const locale = react.useLocale();
64
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.twitter.tweet.inputPlaceholder, hint: locale.editor.twitter.tweet.hint, confirmText: locale.editor.twitter.tweet.confirmText, onConfirm: (editor, path, value) => {
65
+ var _a, _b;
66
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { embedType: (_a = twitter.TwitterEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.embedType, tweetId: (_b = twitter.TwitterEmbedStrategy.serialize(value)) === null || _b === void 0 ? void 0 : _b.tweetId }), { at: path });
67
+ } }, toolbarElement => React.createElement(Twitter, Object.assign({}, props, { toolbarElement: toolbarElement }))));
68
+ };
69
+ const defaultRenderTwitterEmbedPlaceholderElement = () => {
70
+ const locale = react.useLocale();
71
+ return (React.createElement("div", { className: "qdr-embed-twitter__placeholder" },
72
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__title-wrapper" },
73
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Twitter, width: 48, height: 48 }),
74
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.twitter.tweet.blockPlaceholder)),
75
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__line-wrapper" },
76
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-28)' } }),
77
+ React.createElement("div", { className: "qdr-embed__placeholder__line" }),
78
+ React.createElement("div", { className: "qdr-embed__placeholder__line", style: { marginRight: 'var(--qdr-spacing-21)' } })),
79
+ React.createElement("div", { className: "qdr-embed__placeholder__body" }),
80
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__set-wrapper" },
81
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
82
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
83
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
84
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
85
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
86
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })),
87
+ React.createElement("div", { className: "qdr-embed-twitter__placeholder__tools-set" },
88
+ React.createElement("div", { className: "qdr-embed__placeholder__dot" }),
89
+ React.createElement("div", { className: "qdr-embed__placeholder__line qdr-embed__placeholder__line--shortest" })))));
90
+ };
91
+ const defaultRenderTwitterEmbedJsxSerializer = (props) => {
92
+ const { element } = props;
93
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
94
+ React.createElement(Twitter, Object.assign({}, props))));
95
+ };
44
96
 
45
97
  exports.Twitter = Twitter;
46
98
  exports.defaultRenderTwitterEmbedElement = defaultRenderTwitterEmbedElement;
99
+ exports.defaultRenderTwitterEmbedJsxSerializer = defaultRenderTwitterEmbedJsxSerializer;
100
+ exports.defaultRenderTwitterEmbedPlaceholderElement = defaultRenderTwitterEmbedPlaceholderElement;
47
101
  exports.useLoadTwitterEmbedApi = useLoadTwitterEmbedApi;
@@ -1,3 +1,3 @@
1
1
  export { useLoadTwitterEmbedApi } from './hooks/useLoadTwitterEmbedApi';
2
2
  export { TwitterProps, default as Twitter } from './components/Twitter';
3
- export { defaultRenderTwitterEmbedElement } from './defaultRenderTwitterEmbedElement';
3
+ export * from './defaultRenderTwitterEmbedElement';
@@ -1,3 +1,3 @@
1
1
  export { useLoadTwitterEmbedApi } from './hooks/useLoadTwitterEmbedApi.js';
2
2
  export { default as Twitter } from './components/Twitter.js';
3
- export { defaultRenderTwitterEmbedElement } from './defaultRenderTwitterEmbedElement.js';
3
+ export { defaultRenderTwitterEmbedElement, defaultRenderTwitterEmbedJsxSerializer, defaultRenderTwitterEmbedPlaceholderElement } from './defaultRenderTwitterEmbedElement.js';
@@ -2,3 +2,5 @@ import React from 'react';
2
2
  import { VimeoEmbedElement } from '@quadrats/common/embed/strategies/vimeo';
3
3
  import { VideoIframeProps } from '@quadrats/react/embed';
4
4
  export declare const defaultRenderVimeoEmbedElement: (props: VideoIframeProps<VimeoEmbedElement>) => React.JSX.Element;
5
+ export declare const defaultRenderVimeoEmbedPlaceholderElement: () => React.JSX.Element;
6
+ export declare const defaultRenderVimeoEmbedJsxSerializer: (props: VideoIframeProps<VimeoEmbedElement>) => React.JSX.Element;
@@ -1,6 +1,30 @@
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 { Vimeo } from '@quadrats/icons';
6
+ import { VimeoEmbedStrategy } from '@quadrats/common/embed/strategies/vimeo';
2
7
  import { VideoIframe } from '@quadrats/react/embed';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderVimeoEmbedElement = (props) => (React.createElement(VideoIframe, Object.assign({}, props)));
10
+ const defaultRenderVimeoEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.vimeo.inputPlaceholder, hint: locale.editor.vimeo.hint, confirmText: locale.editor.vimeo.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { videoId: (_a = VimeoEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.videoId }), { at: path });
16
+ } }, toolbarElement => React.createElement(VideoIframe, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderVimeoEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-vimeo__placeholder" },
21
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: Vimeo, width: 48, height: 48 }),
22
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.vimeo.blockPlaceholder)));
23
+ };
24
+ const defaultRenderVimeoEmbedJsxSerializer = (props) => {
25
+ const { element } = props;
26
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
27
+ React.createElement(VideoIframe, Object.assign({}, props))));
28
+ };
5
29
 
6
- export { defaultRenderVimeoEmbedElement };
30
+ export { defaultRenderVimeoEmbedElement, defaultRenderVimeoEmbedJsxSerializer, defaultRenderVimeoEmbedPlaceholderElement };
@@ -1,8 +1,34 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var core = require('@quadrats/core');
5
+ var react = require('@quadrats/react');
6
+ var components = require('@quadrats/react/components');
7
+ var icons = require('@quadrats/icons');
8
+ var vimeo = require('@quadrats/common/embed/strategies/vimeo');
4
9
  var embed = require('@quadrats/react/embed');
10
+ var base = require('@quadrats/react/embed/renderers/base');
5
11
 
6
- const defaultRenderVimeoEmbedElement = (props) => (React.createElement(embed.VideoIframe, Object.assign({}, props)));
12
+ const defaultRenderVimeoEmbedElement = (props) => {
13
+ const { element } = props;
14
+ const locale = react.useLocale();
15
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.vimeo.inputPlaceholder, hint: locale.editor.vimeo.hint, confirmText: locale.editor.vimeo.confirmText, onConfirm: (editor, path, value) => {
16
+ var _a;
17
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { videoId: (_a = vimeo.VimeoEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.videoId }), { at: path });
18
+ } }, toolbarElement => React.createElement(embed.VideoIframe, Object.assign({}, props, { toolbarElement: toolbarElement }))));
19
+ };
20
+ const defaultRenderVimeoEmbedPlaceholderElement = () => {
21
+ const locale = react.useLocale();
22
+ return (React.createElement("div", { className: "qdr-embed-vimeo__placeholder" },
23
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Vimeo, width: 48, height: 48 }),
24
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.vimeo.blockPlaceholder)));
25
+ };
26
+ const defaultRenderVimeoEmbedJsxSerializer = (props) => {
27
+ const { element } = props;
28
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
29
+ React.createElement(embed.VideoIframe, Object.assign({}, props))));
30
+ };
7
31
 
8
32
  exports.defaultRenderVimeoEmbedElement = defaultRenderVimeoEmbedElement;
33
+ exports.defaultRenderVimeoEmbedJsxSerializer = defaultRenderVimeoEmbedJsxSerializer;
34
+ exports.defaultRenderVimeoEmbedPlaceholderElement = defaultRenderVimeoEmbedPlaceholderElement;
@@ -1 +1 @@
1
- export { defaultRenderVimeoEmbedElement } from './defaultRenderVimeoEmbedElement';
1
+ export * from './defaultRenderVimeoEmbedElement';
@@ -1 +1 @@
1
- export { defaultRenderVimeoEmbedElement } from './defaultRenderVimeoEmbedElement.js';
1
+ export { defaultRenderVimeoEmbedElement, defaultRenderVimeoEmbedJsxSerializer, defaultRenderVimeoEmbedPlaceholderElement } from './defaultRenderVimeoEmbedElement.js';
@@ -2,3 +2,5 @@ import React from 'react';
2
2
  import { YoutubeEmbedElement } from '@quadrats/common/embed/strategies/youtube';
3
3
  import { VideoIframeProps } from '@quadrats/react/embed';
4
4
  export declare const defaultRenderYoutubeEmbedElement: (props: VideoIframeProps<YoutubeEmbedElement>) => React.JSX.Element;
5
+ export declare const defaultRenderYoutubeEmbedPlaceholderElement: () => React.JSX.Element;
6
+ export declare const defaultRenderYoutubeEmbedJsxSerializer: (props: VideoIframeProps<YoutubeEmbedElement>) => React.JSX.Element;
@@ -1,6 +1,30 @@
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 { Youtube } from '@quadrats/icons';
6
+ import { YoutubeEmbedStrategy } from '@quadrats/common/embed/strategies/youtube';
2
7
  import { VideoIframe } from '@quadrats/react/embed';
8
+ import { BaseEmbedElement, BaseEmbedElementWithoutToolbar } from '@quadrats/react/embed/renderers/base';
3
9
 
4
- const defaultRenderYoutubeEmbedElement = (props) => (React.createElement(VideoIframe, Object.assign({}, props)));
10
+ const defaultRenderYoutubeEmbedElement = (props) => {
11
+ const { element } = props;
12
+ const locale = useLocale();
13
+ return (React.createElement(BaseEmbedElement, { element: element, placeholder: locale.editor.youtube.inputPlaceholder, hint: locale.editor.youtube.hint, confirmText: locale.editor.youtube.confirmText, onConfirm: (editor, path, value) => {
14
+ var _a;
15
+ Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { videoId: (_a = YoutubeEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.videoId }), { at: path });
16
+ } }, toolbarElement => React.createElement(VideoIframe, Object.assign({}, props, { toolbarElement: toolbarElement }))));
17
+ };
18
+ const defaultRenderYoutubeEmbedPlaceholderElement = () => {
19
+ const locale = useLocale();
20
+ return (React.createElement("div", { className: "qdr-embed-youtube__placeholder" },
21
+ React.createElement(Icon, { className: "qdr-embed__placeholder__icon", icon: Youtube, width: 48, height: 48 }),
22
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.youtube.blockPlaceholder)));
23
+ };
24
+ const defaultRenderYoutubeEmbedJsxSerializer = (props) => {
25
+ const { element } = props;
26
+ return (React.createElement(BaseEmbedElementWithoutToolbar, { element: element },
27
+ React.createElement(VideoIframe, Object.assign({}, props))));
28
+ };
5
29
 
6
- export { defaultRenderYoutubeEmbedElement };
30
+ export { defaultRenderYoutubeEmbedElement, defaultRenderYoutubeEmbedJsxSerializer, defaultRenderYoutubeEmbedPlaceholderElement };
@@ -1,8 +1,34 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var core = require('@quadrats/core');
5
+ var react = require('@quadrats/react');
6
+ var components = require('@quadrats/react/components');
7
+ var icons = require('@quadrats/icons');
8
+ var youtube = require('@quadrats/common/embed/strategies/youtube');
4
9
  var embed = require('@quadrats/react/embed');
10
+ var base = require('@quadrats/react/embed/renderers/base');
5
11
 
6
- const defaultRenderYoutubeEmbedElement = (props) => (React.createElement(embed.VideoIframe, Object.assign({}, props)));
12
+ const defaultRenderYoutubeEmbedElement = (props) => {
13
+ const { element } = props;
14
+ const locale = react.useLocale();
15
+ return (React.createElement(base.BaseEmbedElement, { element: element, placeholder: locale.editor.youtube.inputPlaceholder, hint: locale.editor.youtube.hint, confirmText: locale.editor.youtube.confirmText, onConfirm: (editor, path, value) => {
16
+ var _a;
17
+ core.Transforms.setNodes(editor, Object.assign(Object.assign({}, props.element), { videoId: (_a = youtube.YoutubeEmbedStrategy.serialize(value)) === null || _a === void 0 ? void 0 : _a.videoId }), { at: path });
18
+ } }, toolbarElement => React.createElement(embed.VideoIframe, Object.assign({}, props, { toolbarElement: toolbarElement }))));
19
+ };
20
+ const defaultRenderYoutubeEmbedPlaceholderElement = () => {
21
+ const locale = react.useLocale();
22
+ return (React.createElement("div", { className: "qdr-embed-youtube__placeholder" },
23
+ React.createElement(components.Icon, { className: "qdr-embed__placeholder__icon", icon: icons.Youtube, width: 48, height: 48 }),
24
+ React.createElement("p", { className: "qdr-embed__placeholder__title" }, locale.editor.youtube.blockPlaceholder)));
25
+ };
26
+ const defaultRenderYoutubeEmbedJsxSerializer = (props) => {
27
+ const { element } = props;
28
+ return (React.createElement(base.BaseEmbedElementWithoutToolbar, { element: element },
29
+ React.createElement(embed.VideoIframe, Object.assign({}, props))));
30
+ };
7
31
 
8
32
  exports.defaultRenderYoutubeEmbedElement = defaultRenderYoutubeEmbedElement;
33
+ exports.defaultRenderYoutubeEmbedJsxSerializer = defaultRenderYoutubeEmbedJsxSerializer;
34
+ exports.defaultRenderYoutubeEmbedPlaceholderElement = defaultRenderYoutubeEmbedPlaceholderElement;
@@ -1 +1 @@
1
- export { defaultRenderYoutubeEmbedElement } from './defaultRenderYoutubeEmbedElement';
1
+ export * from './defaultRenderYoutubeEmbedElement';
@@ -1 +1 @@
1
- export { defaultRenderYoutubeEmbedElement } from './defaultRenderYoutubeEmbedElement.js';
1
+ export { defaultRenderYoutubeEmbedElement, defaultRenderYoutubeEmbedJsxSerializer, defaultRenderYoutubeEmbedPlaceholderElement } from './defaultRenderYoutubeEmbedElement.js';
@@ -1,15 +1,12 @@
1
1
  import React from 'react';
2
- import { Editor } from '@quadrats/react';
3
- import { InputWidgetConfig } from '@quadrats/common/input-widget';
4
2
  import { ReactEmbed } from '@quadrats/react/embed';
5
3
  import { ToolbarIconProps } from '@quadrats/react/toolbar';
6
- export interface EmbedToolbarIconProps<Provider extends string> extends Omit<ToolbarIconProps, 'active' | 'onClick'>, Pick<InputWidgetConfig, 'getPlaceholder'> {
4
+ export interface EmbedToolbarIconProps<Provider extends string> extends Omit<ToolbarIconProps, 'active' | 'onClick'> {
7
5
  controller: ReactEmbed<Provider>;
8
6
  /**
9
- * The providers supported by this icon.
7
+ * The provider supported by this icon.
10
8
  */
11
- providers: Provider[];
12
- startToolInput?: (editor: Editor, inputConfig: InputWidgetConfig) => void;
9
+ provider: Provider;
13
10
  }
14
11
  declare function EmbedToolbarIcon<Provider extends string>(props: EmbedToolbarIconProps<Provider>): React.JSX.Element;
15
12
  export default EmbedToolbarIcon;
@@ -4,8 +4,8 @@ import { ToolbarIcon } from '@quadrats/react/toolbar';
4
4
  import { useEmbedTool } from './useEmbedTool.js';
5
5
 
6
6
  function EmbedToolbarIcon(props) {
7
- const { controller, providers, getPlaceholder, startToolInput } = props, rest = __rest(props, ["controller", "providers", "getPlaceholder", "startToolInput"]);
8
- const { onClick } = useEmbedTool(controller, providers, getPlaceholder, startToolInput);
7
+ const { controller, provider } = props, rest = __rest(props, ["controller", "provider"]);
8
+ const { onClick } = useEmbedTool(controller, provider);
9
9
  return React.createElement(ToolbarIcon, Object.assign({}, rest, { onClick: onClick }));
10
10
  }
11
11
 
@@ -1,27 +1,112 @@
1
1
  'use strict';
2
2
 
3
+ var React = require('react');
4
+ var core = require('@quadrats/core');
3
5
  var react = require('@quadrats/react');
4
- var toolbar = require('@quadrats/react/toolbar');
6
+ var embed = require('@quadrats/common/embed');
5
7
  var tslib = require('tslib');
6
- var React = require('react');
8
+ var toolbar = require('@quadrats/react/toolbar');
7
9
 
8
- function useEmbedTool(controller, providers, getPlaceholder, startToolInput) {
10
+ function useEmbedTool(controller, provider) {
11
+ const locale = react.useLocale();
9
12
  const editor = react.useSlateStatic();
10
- const defaultStartToolInput = toolbar.useStartToolInput();
11
- const start = startToolInput
12
- ? inputConfig => startToolInput(editor, inputConfig)
13
- : defaultStartToolInput;
13
+ const { setEmbedModalConfig, isModalClosed, setIsModalClosed } = react.useModal();
14
+ const config = React.useMemo(() => {
15
+ switch (provider) {
16
+ case 'youtube':
17
+ return {
18
+ type: 'input',
19
+ placeholder: locale.editor.youtube.inputPlaceholder,
20
+ confirmText: locale.editor.youtube.confirmText,
21
+ hint: locale.editor.youtube.hint,
22
+ };
23
+ case 'vimeo':
24
+ return {
25
+ type: 'input',
26
+ placeholder: locale.editor.vimeo.inputPlaceholder,
27
+ confirmText: locale.editor.vimeo.confirmText,
28
+ hint: locale.editor.vimeo.hint,
29
+ };
30
+ case 'instagram':
31
+ return {
32
+ type: 'input',
33
+ placeholder: locale.editor.instagram.inputPlaceholder,
34
+ confirmText: locale.editor.instagram.confirmText,
35
+ hint: locale.editor.instagram.hint,
36
+ };
37
+ case 'facebook':
38
+ return {
39
+ type: 'textarea',
40
+ placeholder: locale.editor.facebook.inputPlaceholder,
41
+ confirmText: locale.editor.facebook.confirmText,
42
+ hint: locale.editor.facebook.hint,
43
+ };
44
+ case 'twitter':
45
+ return {
46
+ type: 'input',
47
+ placeholder: locale.editor.twitter.tweet.inputPlaceholder,
48
+ confirmText: locale.editor.twitter.tweet.confirmText,
49
+ hint: locale.editor.twitter.tweet.hint,
50
+ };
51
+ case 'podcastApple':
52
+ return {
53
+ type: 'input',
54
+ placeholder: locale.editor.podcastApple.inputPlaceholder,
55
+ confirmText: locale.editor.podcastApple.confirmText,
56
+ hint: locale.editor.podcastApple.hint,
57
+ };
58
+ case 'spotify':
59
+ return {
60
+ type: 'input',
61
+ placeholder: locale.editor.spotify.inputPlaceholder,
62
+ confirmText: locale.editor.spotify.confirmText,
63
+ hint: locale.editor.spotify.hint,
64
+ };
65
+ default:
66
+ return {
67
+ type: 'input',
68
+ placeholder: '',
69
+ confirmText: '',
70
+ hint: '',
71
+ };
72
+ }
73
+ }, [locale, provider]);
74
+ React.useEffect(() => {
75
+ const [match] = core.Editor.nodes(editor, {
76
+ at: [],
77
+ match: (node) => {
78
+ const placeholderElement = node;
79
+ return (core.Element.isElement(placeholderElement) &&
80
+ placeholderElement.type === embed.EMBED_PLACEHOLDER_TYPE &&
81
+ placeholderElement.provider === provider);
82
+ },
83
+ });
84
+ if (match) {
85
+ setEmbedModalConfig(Object.assign({ onConfirm: (value) => {
86
+ controller.removeEmbedPlaceholder(editor);
87
+ controller.insertEmbed(editor, provider, value);
88
+ } }, config));
89
+ }
90
+ // eslint-disable-next-line react-hooks/exhaustive-deps
91
+ }, [config, controller, editor, provider]);
92
+ React.useEffect(() => {
93
+ if (isModalClosed) {
94
+ setTimeout(() => {
95
+ controller.removeEmbedPlaceholder(editor);
96
+ setIsModalClosed(false);
97
+ }, 250);
98
+ }
99
+ }, [controller, editor, isModalClosed, setIsModalClosed]);
14
100
  return {
15
- onClick: () => start({
16
- getPlaceholder,
17
- confirm: embedCode => controller.insertEmbed(editor, providers, embedCode),
18
- }),
101
+ onClick: () => {
102
+ controller.insertEmbedPlaceholder(editor, provider);
103
+ },
19
104
  };
20
105
  }
21
106
 
22
107
  function EmbedToolbarIcon(props) {
23
- const { controller, providers, getPlaceholder, startToolInput } = props, rest = tslib.__rest(props, ["controller", "providers", "getPlaceholder", "startToolInput"]);
24
- const { onClick } = useEmbedTool(controller, providers, getPlaceholder, startToolInput);
108
+ const { controller, provider } = props, rest = tslib.__rest(props, ["controller", "provider"]);
109
+ const { onClick } = useEmbedTool(controller, provider);
25
110
  return React.createElement(toolbar.ToolbarIcon, Object.assign({}, rest, { onClick: onClick }));
26
111
  }
27
112
 
@@ -1,6 +1,4 @@
1
- import { InputWidgetConfig } from '@quadrats/common/input-widget';
2
- import { Editor } from '@quadrats/react';
3
1
  import { ReactEmbed } from '@quadrats/react/embed';
4
- export declare function useEmbedTool<P extends string>(controller: ReactEmbed<P>, providers: P[], getPlaceholder: InputWidgetConfig['getPlaceholder'], startToolInput?: (editor: Editor, inputConfig: InputWidgetConfig) => void): {
2
+ export declare function useEmbedTool<P extends string>(controller: ReactEmbed<P>, provider: P): {
5
3
  onClick: () => void;
6
4
  };