@quadrats/react 0.6.7 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/_internal/index.cjs.js +42 -44
  2. package/_internal/renderer/composeRenderElementsBase.js +10 -10
  3. package/_internal/renderer/composeRenderLeafsBase.js +8 -8
  4. package/_internal/renderer/createRenderElementBase.js +6 -6
  5. package/_internal/renderer/createRenderElementsBase.js +8 -8
  6. package/_internal/renderer/createRenderMarkBase.js +10 -10
  7. package/blockquote/constants.js +5 -5
  8. package/blockquote/createReactBlockquote.d.ts +1 -1
  9. package/blockquote/createReactBlockquote.js +58 -58
  10. package/blockquote/defaultRenderBlockquoteElement.d.ts +2 -2
  11. package/blockquote/index.cjs.js +64 -71
  12. package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +2 -2
  13. package/blockquote/jsx-serializer/createJsxSerializeBlockquote.js +3 -3
  14. package/blockquote/jsx-serializer/index.cjs.js +3 -5
  15. package/blockquote/jsx-serializer/typings.d.ts +1 -1
  16. package/blockquote/toolbar/BlockquoteToolbarIcon.d.ts +2 -2
  17. package/blockquote/toolbar/BlockquoteToolbarIcon.js +4 -4
  18. package/blockquote/toolbar/index.cjs.js +10 -16
  19. package/blockquote/toolbar/useBlockquoteTool.js +6 -6
  20. package/blockquote/typings.d.ts +1 -1
  21. package/bold/constants.js +5 -5
  22. package/bold/createReactBold.d.ts +1 -1
  23. package/bold/createReactBold.js +3 -3
  24. package/bold/defaultRenderBold.d.ts +2 -2
  25. package/bold/defaultRenderBold.js +1 -1
  26. package/bold/index.cjs.js +9 -15
  27. package/bold/jsx-serializer/createJsxSerializeBold.js +3 -3
  28. package/bold/jsx-serializer/index.cjs.js +3 -5
  29. package/components/Icon/index.d.ts +1 -1
  30. package/components/Icon/index.js +15 -15
  31. package/components/Portal/index.d.ts +1 -0
  32. package/components/Portal/index.js +3 -3
  33. package/components/Progress/index.js +10 -10
  34. package/components/Tooltip/calculatePosition.js +66 -66
  35. package/components/Tooltip/index.d.ts +2 -2
  36. package/components/Tooltip/index.js +109 -109
  37. package/components/Tooltip/typings.d.ts +4 -4
  38. package/components/index.cjs.js +203 -211
  39. package/configs/ConfigsProvider.d.ts +2 -2
  40. package/configs/ConfigsProvider.js +7 -7
  41. package/configs/index.cjs.js +38 -44
  42. package/configs/locale.js +3 -3
  43. package/configs/theme.js +28 -28
  44. package/core/components/DefaultElement.d.ts +2 -2
  45. package/core/components/DefaultLeaf.d.ts +2 -2
  46. package/core/components/Editable.d.ts +3 -3
  47. package/core/components/Editable.js +41 -42
  48. package/core/components/Quadrats.d.ts +3 -3
  49. package/core/components/Quadrats.js +7 -7
  50. package/core/composeHandlers.js +30 -30
  51. package/core/composeRenderElements.d.ts +1 -1
  52. package/core/composeRenderElements.js +5 -5
  53. package/core/composeRenderLeafs.js +5 -5
  54. package/core/createReactEditor.js +2 -2
  55. package/core/createRenderElement.d.ts +1 -1
  56. package/core/createRenderElement.js +2 -2
  57. package/core/createRenderElements.d.ts +1 -1
  58. package/core/createRenderElements.js +2 -2
  59. package/core/createRenderMark.js +2 -2
  60. package/core/index.d.ts +6 -4
  61. package/core/index.js +11 -0
  62. package/core/typings/descendant.d.ts +1 -1
  63. package/core/typings/handler.d.ts +7 -7
  64. package/core/typings/renderer.d.ts +5 -5
  65. package/core/typings/with.d.ts +2 -2
  66. package/divider/createReactDivider.d.ts +1 -1
  67. package/divider/createReactDivider.js +4 -4
  68. package/divider/defaultRenderDividerElement.d.ts +2 -2
  69. package/divider/defaultRenderDividerElement.js +2 -2
  70. package/divider/index.cjs.js +6 -12
  71. package/divider/jsx-serializer/createJsxSerializeDivider.d.ts +2 -2
  72. package/divider/jsx-serializer/createJsxSerializeDivider.js +3 -3
  73. package/divider/jsx-serializer/defaultRenderDividerElement.d.ts +2 -2
  74. package/divider/jsx-serializer/index.cjs.js +4 -10
  75. package/divider/jsx-serializer/typings.d.ts +1 -1
  76. package/divider/toolbar/DividerToolbarIcon.d.ts +2 -2
  77. package/divider/toolbar/DividerToolbarIcon.js +4 -4
  78. package/divider/toolbar/index.cjs.js +9 -15
  79. package/divider/toolbar/useDividerTool.js +5 -5
  80. package/divider/typings.d.ts +1 -1
  81. package/embed/components/VideoIframe.d.ts +2 -2
  82. package/embed/components/VideoIframe.js +8 -8
  83. package/embed/createReactEmbed.d.ts +1 -1
  84. package/embed/createReactEmbed.js +7 -7
  85. package/embed/createRenderEmbedElementBase.js +9 -9
  86. package/embed/hooks/useVideoIframeSize.js +19 -19
  87. package/embed/index.cjs.js +43 -49
  88. package/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +1 -1
  89. package/embed/jsx-serializer/createJsxSerializeEmbed.js +6 -6
  90. package/embed/jsx-serializer/facebook/index.cjs.js +2 -4
  91. package/embed/jsx-serializer/index.cjs.js +6 -8
  92. package/embed/jsx-serializer/instagram/index.cjs.js +2 -4
  93. package/embed/jsx-serializer/twitter/index.cjs.js +2 -4
  94. package/embed/jsx-serializer/vimeo/index.cjs.js +2 -4
  95. package/embed/jsx-serializer/youtube/index.cjs.js +2 -4
  96. package/embed/renderers/facebook/components/Facebook.d.ts +2 -2
  97. package/embed/renderers/facebook/components/Facebook.js +11 -11
  98. package/embed/renderers/facebook/defaultRenderFacebookEmbedElement.d.ts +2 -2
  99. package/embed/renderers/facebook/index.cjs.js +12 -18
  100. package/embed/renderers/instagram/components/Instagram.d.ts +2 -2
  101. package/embed/renderers/instagram/components/Instagram.js +18 -18
  102. package/embed/renderers/instagram/defaultRenderInstagramEmbedElement.d.ts +2 -2
  103. package/embed/renderers/instagram/hooks/useLoadInstagramEmbedApi.js +22 -22
  104. package/embed/renderers/instagram/index.cjs.js +41 -47
  105. package/embed/renderers/podcast-apple/components/PodcastApple.d.ts +2 -2
  106. package/embed/renderers/podcast-apple/components/PodcastApple.js +6 -6
  107. package/embed/renderers/podcast-apple/defaultRenderPodcastAppleEmbedElement.d.ts +2 -2
  108. package/embed/renderers/podcast-apple/index.cjs.js +7 -13
  109. package/embed/renderers/spotify/components/Spotify.d.ts +2 -2
  110. package/embed/renderers/spotify/components/Spotify.js +10 -10
  111. package/embed/renderers/spotify/defaultRenderSpotifyEmbedElement.d.ts +2 -2
  112. package/embed/renderers/spotify/index.cjs.js +11 -17
  113. package/embed/renderers/twitter/components/Twitter.d.ts +2 -2
  114. package/embed/renderers/twitter/components/Twitter.js +5 -5
  115. package/embed/renderers/twitter/defaultRenderTwitterEmbedElement.d.ts +2 -2
  116. package/embed/renderers/twitter/hooks/useLoadTwitterEmbedApi.js +28 -28
  117. package/embed/renderers/twitter/index.cjs.js +34 -40
  118. package/embed/renderers/vimeo/defaultRenderVimeoEmbedElement.d.ts +2 -2
  119. package/embed/renderers/vimeo/index.cjs.js +1 -7
  120. package/embed/renderers/youtube/defaultRenderYoutubeEmbedElement.d.ts +2 -2
  121. package/embed/renderers/youtube/index.cjs.js +1 -7
  122. package/embed/toolbar/EmbedToolbarIcon.d.ts +2 -2
  123. package/embed/toolbar/EmbedToolbarIcon.js +4 -4
  124. package/embed/toolbar/index.cjs.js +16 -22
  125. package/embed/toolbar/useEmbedTool.js +12 -12
  126. package/embed/typings.d.ts +1 -1
  127. package/file-uploader/components/FileUploader.d.ts +2 -2
  128. package/file-uploader/components/FileUploader.js +7 -7
  129. package/file-uploader/createReactFileUploader.js +7 -7
  130. package/file-uploader/hooks/useFileUploader.js +7 -7
  131. package/file-uploader/index.cjs.js +22 -28
  132. package/file-uploader/toolbar/FileUploaderToolbarIcon.d.ts +2 -2
  133. package/file-uploader/toolbar/FileUploaderToolbarIcon.js +4 -4
  134. package/file-uploader/toolbar/index.cjs.js +9 -15
  135. package/file-uploader/toolbar/useFileUploaderTool.js +5 -5
  136. package/file-uploader/typings.d.ts +3 -3
  137. package/footnote/createReactFootnote.d.ts +1 -1
  138. package/footnote/createReactFootnote.js +6 -6
  139. package/footnote/defaultRenderFootnoteElement.d.ts +2 -2
  140. package/footnote/defaultRenderFootnoteElement.js +9 -9
  141. package/footnote/index.cjs.js +51 -57
  142. package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +2 -2
  143. package/footnote/jsx-serializer/createJsxSerializeFootnote.js +4 -4
  144. package/footnote/jsx-serializer/defaultRenderFootnoteElement.d.ts +2 -2
  145. package/footnote/jsx-serializer/defaultRenderFootnoteElement.js +5 -5
  146. package/footnote/jsx-serializer/index.cjs.js +9 -15
  147. package/footnote/jsx-serializer/typings.d.ts +1 -1
  148. package/footnote/toolbar/FootnoteToolbarIcon.d.ts +2 -2
  149. package/footnote/toolbar/FootnoteToolbarIcon.js +4 -4
  150. package/footnote/toolbar/index.cjs.js +17 -23
  151. package/footnote/toolbar/useFootnoteTool.d.ts +1 -1
  152. package/footnote/toolbar/useFootnoteTool.js +13 -13
  153. package/footnote/typings.d.ts +1 -1
  154. package/footnote/useFootnotes.js +15 -15
  155. package/footnote/useFootnotesFromNodes.js +21 -21
  156. package/heading/constants.js +8 -8
  157. package/heading/createReactHeading.d.ts +1 -1
  158. package/heading/createReactHeading.js +37 -37
  159. package/heading/defaultRenderHeadingElement.d.ts +2 -2
  160. package/heading/defaultRenderHeadingElement.js +14 -14
  161. package/heading/index.cjs.js +59 -66
  162. package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +2 -2
  163. package/heading/jsx-serializer/createJsxSerializeHeading.js +3 -3
  164. package/heading/jsx-serializer/index.cjs.js +3 -5
  165. package/heading/jsx-serializer/typings.d.ts +1 -1
  166. package/heading/toolbar/HeadingToolbarIcon.d.ts +2 -2
  167. package/heading/toolbar/HeadingToolbarIcon.js +4 -4
  168. package/heading/toolbar/index.cjs.js +10 -16
  169. package/heading/toolbar/useToggleHeadingTool.js +6 -6
  170. package/heading/typings.d.ts +1 -1
  171. package/highlight/constants.js +5 -5
  172. package/highlight/createReactHighlight.d.ts +1 -1
  173. package/highlight/createReactHighlight.js +3 -3
  174. package/highlight/defaultRenderHighlight.d.ts +2 -2
  175. package/highlight/defaultRenderHighlight.js +1 -1
  176. package/highlight/index.cjs.js +9 -15
  177. package/highlight/jsx-serializer/createJsxSerializeHighlight.d.ts +1 -1
  178. package/highlight/jsx-serializer/createJsxSerializeHighlight.js +4 -4
  179. package/highlight/jsx-serializer/index.cjs.js +4 -6
  180. package/image/components/Image.d.ts +2 -2
  181. package/image/components/Image.js +11 -11
  182. package/image/components/ImageCaption.d.ts +2 -2
  183. package/image/components/ImageCaption.js +13 -13
  184. package/image/components/ImageFigure.d.ts +2 -2
  185. package/image/components/ImageFigure.js +8 -8
  186. package/image/createReactImage.d.ts +1 -1
  187. package/image/createReactImage.js +94 -94
  188. package/image/defaultRenderImageElements.js +4 -4
  189. package/image/hooks/useImageResizer.js +89 -89
  190. package/image/image.css +1 -1
  191. package/image/index.cjs.js +219 -227
  192. package/image/jsx-serializer/createJsxSerializeImage.d.ts +2 -3
  193. package/image/jsx-serializer/createJsxSerializeImage.js +34 -34
  194. package/image/jsx-serializer/defaultRenderImageElements.js +4 -4
  195. package/image/jsx-serializer/index.cjs.js +38 -44
  196. package/image/jsx-serializer/typings.d.ts +1 -1
  197. package/image/typings.d.ts +3 -3
  198. package/index.cjs.js +103 -109
  199. package/index.js +3 -2
  200. package/input-block/components/InputBlock.d.ts +2 -2
  201. package/input-block/components/InputBlock.js +19 -19
  202. package/input-block/createReactInputBlock.d.ts +1 -1
  203. package/input-block/createReactInputBlock.js +10 -10
  204. package/input-block/hooks/useInputBlock.js +43 -43
  205. package/input-block/index.cjs.js +73 -79
  206. package/input-block/typings.d.ts +2 -2
  207. package/italic/constants.js +5 -5
  208. package/italic/createReactItalic.d.ts +1 -1
  209. package/italic/createReactItalic.js +3 -3
  210. package/italic/defaultRenderItalic.d.ts +2 -2
  211. package/italic/defaultRenderItalic.js +1 -1
  212. package/italic/index.cjs.js +9 -15
  213. package/italic/jsx-serializer/createJsxSerializeItalic.js +3 -3
  214. package/italic/jsx-serializer/index.cjs.js +3 -5
  215. package/jsx-serializer/createJsxSerializeElement.d.ts +1 -1
  216. package/jsx-serializer/createJsxSerializeElement.js +2 -2
  217. package/jsx-serializer/createJsxSerializeElements.d.ts +1 -1
  218. package/jsx-serializer/createJsxSerializeElements.js +2 -2
  219. package/jsx-serializer/createJsxSerializeMark.js +2 -2
  220. package/jsx-serializer/createJsxSerializer.js +42 -42
  221. package/jsx-serializer/index.cjs.js +48 -54
  222. package/jsx-serializer/typings.d.ts +5 -5
  223. package/line-break/commonBreak.js +26 -26
  224. package/line-break/createOnKeyDownBreak.js +41 -41
  225. package/line-break/createReactLineBreak.d.ts +1 -1
  226. package/line-break/createReactLineBreak.js +6 -6
  227. package/line-break/defaultRenderLineBreakElement.d.ts +2 -2
  228. package/line-break/index.cjs.js +75 -82
  229. package/line-break/jsx-serializer/createJsxSerializeLineBreak.d.ts +2 -2
  230. package/line-break/jsx-serializer/createJsxSerializeLineBreak.js +4 -4
  231. package/line-break/jsx-serializer/defaultRenderLineBreakElement.d.ts +2 -2
  232. package/line-break/jsx-serializer/defaultRenderLineBreakElement.js +1 -1
  233. package/line-break/jsx-serializer/index.cjs.js +6 -12
  234. package/line-break/jsx-serializer/typings.d.ts +1 -1
  235. package/line-break/renderLineBreakElementWithSymbol.d.ts +2 -2
  236. package/line-break/typings.d.ts +1 -1
  237. package/link/createReactLink.js +22 -22
  238. package/link/defaultRenderLinkElement.d.ts +2 -2
  239. package/link/defaultRenderLinkElement.js +7 -7
  240. package/link/index.cjs.js +29 -35
  241. package/link/jsx-serializer/createJsxSerializeLink.d.ts +2 -2
  242. package/link/jsx-serializer/createJsxSerializeLink.js +3 -3
  243. package/link/jsx-serializer/defaultRenderLinkElement.d.ts +2 -2
  244. package/link/jsx-serializer/index.cjs.js +4 -10
  245. package/link/jsx-serializer/typings.d.ts +1 -1
  246. package/link/toolbar/LinkToolbarIcon.d.ts +2 -2
  247. package/link/toolbar/LinkToolbarIcon.js +4 -4
  248. package/link/toolbar/UnlinkToolbarIcon.d.ts +2 -2
  249. package/link/toolbar/UnlinkToolbarIcon.js +4 -4
  250. package/link/toolbar/index.cjs.js +27 -33
  251. package/link/toolbar/useLinkTool.d.ts +1 -1
  252. package/link/toolbar/useLinkTool.js +14 -14
  253. package/link/toolbar/useUnlinkTool.js +5 -5
  254. package/link/typings.d.ts +1 -1
  255. package/list/createReactList.d.ts +1 -1
  256. package/list/createReactList.js +18 -18
  257. package/list/defaultRenderListElements.js +4 -4
  258. package/list/index.cjs.js +22 -28
  259. package/list/jsx-serializer/createJsxSerializeList.d.ts +2 -2
  260. package/list/jsx-serializer/createJsxSerializeList.js +8 -8
  261. package/list/jsx-serializer/index.cjs.js +8 -10
  262. package/list/jsx-serializer/typings.d.ts +1 -1
  263. package/list/toolbar/ListToolbarIcon.d.ts +2 -2
  264. package/list/toolbar/ListToolbarIcon.js +4 -4
  265. package/list/toolbar/index.cjs.js +10 -16
  266. package/list/toolbar/useListTool.js +6 -6
  267. package/list/typings.d.ts +2 -2
  268. package/package.json +10 -10
  269. package/paragraph/createRenderParagraphElement.d.ts +2 -2
  270. package/paragraph/createRenderParagraphElement.js +3 -3
  271. package/paragraph/defaultRenderParagraphElement.d.ts +2 -2
  272. package/paragraph/index.cjs.js +5 -11
  273. package/paragraph/jsx-serializer/createJsxSerializeParagraph.d.ts +2 -2
  274. package/paragraph/jsx-serializer/createJsxSerializeParagraph.js +3 -3
  275. package/paragraph/jsx-serializer/index.cjs.js +3 -5
  276. package/paragraph/jsx-serializer/typings.d.ts +1 -1
  277. package/paragraph/renderParagraphElementWithSymbol.d.ts +2 -2
  278. package/read-more/components/ReadMore.d.ts +2 -2
  279. package/read-more/components/ReadMore.js +6 -6
  280. package/read-more/createReactReadMore.d.ts +1 -1
  281. package/read-more/createReactReadMore.js +4 -4
  282. package/read-more/defaultRenderReadMoreElement.d.ts +2 -2
  283. package/read-more/index.cjs.js +11 -17
  284. package/read-more/jsx-serializer/createJsxSerializeReadMore.d.ts +2 -2
  285. package/read-more/jsx-serializer/createJsxSerializeReadMore.js +3 -3
  286. package/read-more/jsx-serializer/index.cjs.js +3 -5
  287. package/read-more/jsx-serializer/typings.d.ts +1 -1
  288. package/read-more/toolbar/ReadMoreToolbarIcon.d.ts +2 -2
  289. package/read-more/toolbar/ReadMoreToolbarIcon.js +4 -4
  290. package/read-more/toolbar/index.cjs.js +9 -15
  291. package/read-more/toolbar/useReadMoreTool.js +5 -5
  292. package/read-more/typings.d.ts +1 -1
  293. package/strikethrough/constants.js +5 -5
  294. package/strikethrough/createReactStrikethrough.d.ts +1 -1
  295. package/strikethrough/createReactStrikethrough.js +3 -3
  296. package/strikethrough/defaultRenderStrikethrough.d.ts +2 -2
  297. package/strikethrough/defaultRenderStrikethrough.js +1 -1
  298. package/strikethrough/index.cjs.js +9 -15
  299. package/strikethrough/jsx-serializer/createJsxSerializeStrikethrough.js +3 -3
  300. package/strikethrough/jsx-serializer/index.cjs.js +3 -5
  301. package/toggle-mark/createReactToggleMarkCreator.d.ts +2 -2
  302. package/toggle-mark/createReactToggleMarkCreator.js +14 -14
  303. package/toggle-mark/index.cjs.js +14 -20
  304. package/toggle-mark/jsx-serializer/createJsxSerializeToggleMarkCreator.d.ts +3 -3
  305. package/toggle-mark/jsx-serializer/createJsxSerializeToggleMarkCreator.js +2 -2
  306. package/toggle-mark/jsx-serializer/index.cjs.js +2 -4
  307. package/toggle-mark/jsx-serializer/typings.d.ts +1 -1
  308. package/toggle-mark/toolbar/ToggleMarkToolbarIcon.d.ts +2 -2
  309. package/toggle-mark/toolbar/ToggleMarkToolbarIcon.js +4 -4
  310. package/toggle-mark/toolbar/index.cjs.js +10 -16
  311. package/toggle-mark/toolbar/useToggleMarkTool.js +6 -6
  312. package/toggle-mark/typings.d.ts +2 -2
  313. package/toolbar/components/Toolbar.d.ts +1 -1
  314. package/toolbar/components/Toolbar.js +102 -102
  315. package/toolbar/components/ToolbarIcon.d.ts +2 -2
  316. package/toolbar/components/ToolbarIcon.js +6 -6
  317. package/toolbar/components/ToolbarInput.d.ts +2 -2
  318. package/toolbar/components/ToolbarInput.js +23 -23
  319. package/toolbar/constants.d.ts +2 -2
  320. package/toolbar/constants.js +3 -3
  321. package/toolbar/hooks/useStartToolInput.js +2 -2
  322. package/toolbar/index.cjs.js +137 -144
  323. package/toolbar/toolbar.css +1 -1
  324. package/toolbar/typings.d.ts +1 -1
  325. package/underline/constants.js +5 -5
  326. package/underline/createReactUnderline.d.ts +1 -1
  327. package/underline/createReactUnderline.js +3 -3
  328. package/underline/defaultRenderUnderline.d.ts +2 -2
  329. package/underline/defaultRenderUnderline.js +1 -1
  330. package/underline/index.cjs.js +9 -15
  331. package/underline/jsx-serializer/createJsxSerializeUnderline.js +3 -3
  332. package/underline/jsx-serializer/index.cjs.js +3 -5
  333. package/utils/composeRefs.js +29 -29
  334. package/utils/index.cjs.js +29 -31
@@ -1,95 +1,95 @@
1
1
  import { useRef, useState, useEffect } from 'react';
2
2
  import { useSlateStatic, useFocused, useSelected, ReactEditor } from '@quadrats/react';
3
3
 
4
- function isTouchEvent(event) {
5
- const { touches } = event;
6
- return !!(touches && touches.length);
7
- }
8
- function getEditorWidth(editor) {
9
- const el = ReactEditor.toDOMNode(editor, editor);
10
- const computedStyle = window.getComputedStyle(el);
11
- const paddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
12
- const borderX = parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);
13
- return el.clientWidth - paddingX - borderX;
14
- }
15
- const moveEvents = ['mousemove', 'touchmove'];
16
- const endEvents = ['mouseup', 'touchend'];
17
- function useImageResizer(element, resizeImage) {
18
- const editor = useSlateStatic();
19
- const focused = useFocused();
20
- const selected = useSelected();
21
- const focusedAndSelected = focused && selected;
22
- const imageRef = useRef(null);
23
- const [startPoint, setStartPoint] = useState(undefined);
24
- const onResizeStart = (event) => {
25
- const imageEl = imageRef.current;
26
- if (!imageEl) {
27
- return;
28
- }
29
- const { clientWidth: width, clientHeight: height } = imageEl;
30
- let x;
31
- let y;
32
- if (isTouchEvent(event)) {
33
- x = event.touches[0].clientX;
34
- y = event.touches[0].clientY;
35
- }
36
- else {
37
- x = event.clientX;
38
- y = event.clientY;
39
- }
40
- setStartPoint({
41
- x,
42
- y,
43
- width,
44
- height,
45
- ratio: width / height,
46
- });
47
- };
48
- useEffect(() => {
49
- if (!focusedAndSelected || !startPoint) {
50
- return;
51
- }
52
- function onResize(event) {
53
- if (!startPoint) {
54
- return;
55
- }
56
- const { x, y, width, height, ratio, } = startPoint;
57
- let left;
58
- let top;
59
- if (isTouchEvent(event)) {
60
- left = event.touches[0].clientX - x;
61
- top = event.touches[0].clientY - y;
62
- }
63
- else {
64
- left = event.clientX - x;
65
- top = event.clientY - y;
66
- }
67
- let newWidth;
68
- if (Math.abs(left) >= Math.abs(top)) {
69
- newWidth = width + left;
70
- }
71
- else {
72
- const newHeight = height + top;
73
- newWidth = newHeight * ratio;
74
- }
75
- const percentage = Math.round((newWidth / getEditorWidth(editor)) * 100);
76
- resizeImage(editor, [element, ReactEditor.findPath(editor, element)], percentage);
77
- }
78
- function onCancelResize() {
79
- setStartPoint(undefined);
80
- }
81
- moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
82
- endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
83
- return () => {
84
- moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
85
- endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
86
- };
87
- }, [editor, element, focusedAndSelected, resizeImage, startPoint]);
88
- return {
89
- imageRef,
90
- focusedAndSelected,
91
- onResizeStart,
92
- };
4
+ function isTouchEvent(event) {
5
+ const { touches } = event;
6
+ return !!(touches && touches.length);
7
+ }
8
+ function getEditorWidth(editor) {
9
+ const el = ReactEditor.toDOMNode(editor, editor);
10
+ const computedStyle = window.getComputedStyle(el);
11
+ const paddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
12
+ const borderX = parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);
13
+ return el.clientWidth - paddingX - borderX;
14
+ }
15
+ const moveEvents = ['mousemove', 'touchmove'];
16
+ const endEvents = ['mouseup', 'touchend'];
17
+ function useImageResizer(element, resizeImage) {
18
+ const editor = useSlateStatic();
19
+ const focused = useFocused();
20
+ const selected = useSelected();
21
+ const focusedAndSelected = focused && selected;
22
+ const imageRef = useRef(null);
23
+ const [startPoint, setStartPoint] = useState(undefined);
24
+ const onResizeStart = (event) => {
25
+ const imageEl = imageRef.current;
26
+ if (!imageEl) {
27
+ return;
28
+ }
29
+ const { clientWidth: width, clientHeight: height } = imageEl;
30
+ let x;
31
+ let y;
32
+ if (isTouchEvent(event)) {
33
+ x = event.touches[0].clientX;
34
+ y = event.touches[0].clientY;
35
+ }
36
+ else {
37
+ x = event.clientX;
38
+ y = event.clientY;
39
+ }
40
+ setStartPoint({
41
+ x,
42
+ y,
43
+ width,
44
+ height,
45
+ ratio: width / height,
46
+ });
47
+ };
48
+ useEffect(() => {
49
+ if (!focusedAndSelected || !startPoint) {
50
+ return;
51
+ }
52
+ function onResize(event) {
53
+ if (!startPoint) {
54
+ return;
55
+ }
56
+ const { x, y, width, height, ratio, } = startPoint;
57
+ let left;
58
+ let top;
59
+ if (isTouchEvent(event)) {
60
+ left = event.touches[0].clientX - x;
61
+ top = event.touches[0].clientY - y;
62
+ }
63
+ else {
64
+ left = event.clientX - x;
65
+ top = event.clientY - y;
66
+ }
67
+ let newWidth;
68
+ if (Math.abs(left) >= Math.abs(top)) {
69
+ newWidth = width + left;
70
+ }
71
+ else {
72
+ const newHeight = height + top;
73
+ newWidth = newHeight * ratio;
74
+ }
75
+ const percentage = Math.round((newWidth / getEditorWidth(editor)) * 100);
76
+ resizeImage(editor, [element, ReactEditor.findPath(editor, element)], percentage);
77
+ }
78
+ function onCancelResize() {
79
+ setStartPoint(undefined);
80
+ }
81
+ moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
82
+ endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
83
+ return () => {
84
+ moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
85
+ endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
86
+ };
87
+ }, [editor, element, focusedAndSelected, resizeImage, startPoint]);
88
+ return {
89
+ imageRef,
90
+ focusedAndSelected,
91
+ onResizeStart,
92
+ };
93
93
  }
94
94
 
95
95
  export { useImageResizer };
package/image/image.css CHANGED
@@ -1 +1 @@
1
- .qdr-image{position:relative;user-select:none}.qdr-image__spacer{position:absolute;top:0;left:50%;height:0;color:transparent;outline:none;caret-color:transparent}.qdr-image img{display:block;width:100%;user-select:none}.qdr-image__boundary,.qdr-image__resizer{position:absolute;border:2px solid var(--qdr-primary);right:0;bottom:0}.qdr-image__boundary{top:0;left:0}.qdr-image__resizer{width:6px;height:6px;background:var(--qdr-surface);transform:translate3d(50%, 50%, 0);cursor:nwse-resize}.qdr-image__caption{margin-top:6px}.qdr-image__caption-placeholder{display:inline-block;color:var(--qdr-placeholder);width:0;max-width:100%;white-space:nowrap;vertical-align:text-top;pointer-events:none}.qdr-image__figure--blurred .qdr-image__caption--empty{height:0;margin:0;opacity:0;user-select:none}
1
+ .qdr-image{position:relative;user-select:none}.qdr-image__spacer{position:absolute;top:0;left:50%;height:0;color:rgba(0,0,0,0);outline:none;caret-color:rgba(0,0,0,0)}.qdr-image img{display:block;width:100%;user-select:none}.qdr-image__boundary,.qdr-image__resizer{position:absolute;border:2px solid var(--qdr-primary);right:0;bottom:0}.qdr-image__boundary{top:0;left:0}.qdr-image__resizer{width:6px;height:6px;background:var(--qdr-surface);transform:translate3d(50%, 50%, 0);cursor:nwse-resize}.qdr-image__caption{margin-top:6px}.qdr-image__caption-placeholder{display:inline-block;color:var(--qdr-placeholder);width:0;max-width:100%;white-space:nowrap;vertical-align:text-top;pointer-events:none}.qdr-image__figure--blurred .qdr-image__caption--empty{height:0;margin:0;opacity:0;user-select:none}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var React = require('react');
6
4
  var clsx = require('clsx');
7
5
  var react = require('@quadrats/react');
@@ -11,241 +9,235 @@ var isHotkey = require('is-hotkey');
11
9
  var utils = require('@quadrats/utils');
12
10
  var image = require('@quadrats/common/image');
13
11
 
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
15
-
16
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
- var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
18
- var isHotkey__default = /*#__PURE__*/_interopDefaultLegacy(isHotkey);
19
-
20
- function ImageFigure(props) {
21
- const { attributes, children, style } = props;
22
- const focused = react.useFocused();
23
- const selected = react.useSelected();
24
- const blurred = !focused || !selected;
25
- return (React__default.createElement("figure", Object.assign({}, attributes, { className: clsx__default('qdr-image__figure', {
26
- 'qdr-image__figure--blurred': blurred,
27
- }), style: style }), children));
12
+ function ImageFigure(props) {
13
+ const { attributes, children, style } = props;
14
+ const focused = react.useFocused();
15
+ const selected = react.useSelected();
16
+ const blurred = !focused || !selected;
17
+ return (React.createElement("figure", Object.assign({}, attributes, { className: clsx('qdr-image__figure', {
18
+ 'qdr-image__figure--blurred': blurred,
19
+ }), style: style }), children));
28
20
  }
29
21
 
30
- function isTouchEvent(event) {
31
- const { touches } = event;
32
- return !!(touches && touches.length);
33
- }
34
- function getEditorWidth(editor) {
35
- const el = react.ReactEditor.toDOMNode(editor, editor);
36
- const computedStyle = window.getComputedStyle(el);
37
- const paddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
38
- const borderX = parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);
39
- return el.clientWidth - paddingX - borderX;
40
- }
41
- const moveEvents = ['mousemove', 'touchmove'];
42
- const endEvents = ['mouseup', 'touchend'];
43
- function useImageResizer(element, resizeImage) {
44
- const editor = react.useSlateStatic();
45
- const focused = react.useFocused();
46
- const selected = react.useSelected();
47
- const focusedAndSelected = focused && selected;
48
- const imageRef = React.useRef(null);
49
- const [startPoint, setStartPoint] = React.useState(undefined);
50
- const onResizeStart = (event) => {
51
- const imageEl = imageRef.current;
52
- if (!imageEl) {
53
- return;
54
- }
55
- const { clientWidth: width, clientHeight: height } = imageEl;
56
- let x;
57
- let y;
58
- if (isTouchEvent(event)) {
59
- x = event.touches[0].clientX;
60
- y = event.touches[0].clientY;
61
- }
62
- else {
63
- x = event.clientX;
64
- y = event.clientY;
65
- }
66
- setStartPoint({
67
- x,
68
- y,
69
- width,
70
- height,
71
- ratio: width / height,
72
- });
73
- };
74
- React.useEffect(() => {
75
- if (!focusedAndSelected || !startPoint) {
76
- return;
77
- }
78
- function onResize(event) {
79
- if (!startPoint) {
80
- return;
81
- }
82
- const { x, y, width, height, ratio, } = startPoint;
83
- let left;
84
- let top;
85
- if (isTouchEvent(event)) {
86
- left = event.touches[0].clientX - x;
87
- top = event.touches[0].clientY - y;
88
- }
89
- else {
90
- left = event.clientX - x;
91
- top = event.clientY - y;
92
- }
93
- let newWidth;
94
- if (Math.abs(left) >= Math.abs(top)) {
95
- newWidth = width + left;
96
- }
97
- else {
98
- const newHeight = height + top;
99
- newWidth = newHeight * ratio;
100
- }
101
- const percentage = Math.round((newWidth / getEditorWidth(editor)) * 100);
102
- resizeImage(editor, [element, react.ReactEditor.findPath(editor, element)], percentage);
103
- }
104
- function onCancelResize() {
105
- setStartPoint(undefined);
106
- }
107
- moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
108
- endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
109
- return () => {
110
- moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
111
- endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
112
- };
113
- }, [editor, element, focusedAndSelected, resizeImage, startPoint]);
114
- return {
115
- imageRef,
116
- focusedAndSelected,
117
- onResizeStart,
118
- };
22
+ function isTouchEvent(event) {
23
+ const { touches } = event;
24
+ return !!(touches && touches.length);
25
+ }
26
+ function getEditorWidth(editor) {
27
+ const el = react.ReactEditor.toDOMNode(editor, editor);
28
+ const computedStyle = window.getComputedStyle(el);
29
+ const paddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);
30
+ const borderX = parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);
31
+ return el.clientWidth - paddingX - borderX;
32
+ }
33
+ const moveEvents = ['mousemove', 'touchmove'];
34
+ const endEvents = ['mouseup', 'touchend'];
35
+ function useImageResizer(element, resizeImage) {
36
+ const editor = react.useSlateStatic();
37
+ const focused = react.useFocused();
38
+ const selected = react.useSelected();
39
+ const focusedAndSelected = focused && selected;
40
+ const imageRef = React.useRef(null);
41
+ const [startPoint, setStartPoint] = React.useState(undefined);
42
+ const onResizeStart = (event) => {
43
+ const imageEl = imageRef.current;
44
+ if (!imageEl) {
45
+ return;
46
+ }
47
+ const { clientWidth: width, clientHeight: height } = imageEl;
48
+ let x;
49
+ let y;
50
+ if (isTouchEvent(event)) {
51
+ x = event.touches[0].clientX;
52
+ y = event.touches[0].clientY;
53
+ }
54
+ else {
55
+ x = event.clientX;
56
+ y = event.clientY;
57
+ }
58
+ setStartPoint({
59
+ x,
60
+ y,
61
+ width,
62
+ height,
63
+ ratio: width / height,
64
+ });
65
+ };
66
+ React.useEffect(() => {
67
+ if (!focusedAndSelected || !startPoint) {
68
+ return;
69
+ }
70
+ function onResize(event) {
71
+ if (!startPoint) {
72
+ return;
73
+ }
74
+ const { x, y, width, height, ratio, } = startPoint;
75
+ let left;
76
+ let top;
77
+ if (isTouchEvent(event)) {
78
+ left = event.touches[0].clientX - x;
79
+ top = event.touches[0].clientY - y;
80
+ }
81
+ else {
82
+ left = event.clientX - x;
83
+ top = event.clientY - y;
84
+ }
85
+ let newWidth;
86
+ if (Math.abs(left) >= Math.abs(top)) {
87
+ newWidth = width + left;
88
+ }
89
+ else {
90
+ const newHeight = height + top;
91
+ newWidth = newHeight * ratio;
92
+ }
93
+ const percentage = Math.round((newWidth / getEditorWidth(editor)) * 100);
94
+ resizeImage(editor, [element, react.ReactEditor.findPath(editor, element)], percentage);
95
+ }
96
+ function onCancelResize() {
97
+ setStartPoint(undefined);
98
+ }
99
+ moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
100
+ endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
101
+ return () => {
102
+ moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
103
+ endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
104
+ };
105
+ }, [editor, element, focusedAndSelected, resizeImage, startPoint]);
106
+ return {
107
+ imageRef,
108
+ focusedAndSelected,
109
+ onResizeStart,
110
+ };
119
111
  }
120
112
 
121
- function Image(props) {
122
- const { attributes, children, element, resizeImage, src, } = props;
123
- const editor = react.useSlateStatic();
124
- const { focusedAndSelected, imageRef, onResizeStart } = useImageResizer(element, resizeImage);
125
- return (React__default.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => core.Transforms.select(editor, react.ReactEditor.findPath(editor, element)), onMouseDown: event => event.preventDefault(), role: "img" }),
126
- React__default.createElement("div", { className: "qdr-image__spacer" }, children),
127
- React__default.createElement("div", { contentEditable: false },
128
- focusedAndSelected && (React__default.createElement(React__default.Fragment, null,
129
- React__default.createElement("span", { className: "qdr-image__boundary" }),
130
- React__default.createElement("span", { "aria-label": "resize image", className: "qdr-image__resizer", onMouseDown: onResizeStart, onTouchStart: onResizeStart, role: "button", tabIndex: -1 }))),
131
- React__default.createElement("img", { ref: imageRef, src: src, alt: src }))));
113
+ function Image(props) {
114
+ const { attributes, children, element, resizeImage, src, } = props;
115
+ const editor = react.useSlateStatic();
116
+ const { focusedAndSelected, imageRef, onResizeStart } = useImageResizer(element, resizeImage);
117
+ return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => core.Transforms.select(editor, react.ReactEditor.findPath(editor, element)), onMouseDown: event => event.preventDefault(), role: "img" }),
118
+ React.createElement("div", { className: "qdr-image__spacer" }, children),
119
+ React.createElement("div", { contentEditable: false },
120
+ focusedAndSelected && (React.createElement(React.Fragment, null,
121
+ React.createElement("span", { className: "qdr-image__boundary" }),
122
+ React.createElement("span", { "aria-label": "resize image", className: "qdr-image__resizer", onMouseDown: onResizeStart, onTouchStart: onResizeStart, role: "button", tabIndex: -1 }))),
123
+ React.createElement("img", { ref: imageRef, src: src, alt: src }))));
132
124
  }
133
125
 
134
- function ImageCaption(props) {
135
- const { attributes, children, element } = props;
136
- const editor = react.useSlateStatic();
137
- const path = react.ReactEditor.findPath(editor, element);
138
- const text = core.Editor.string(editor, path);
139
- const isEmpty = !text;
140
- const locale = react.useLocale();
141
- const placeholder = locale.editor.image.captionInputPlaceholder;
142
- return (React__default.createElement("figcaption", Object.assign({}, attributes, { className: clsx__default('qdr-image__caption', {
143
- 'qdr-image__caption--empty': isEmpty,
144
- }) }),
145
- isEmpty && (React__default.createElement("span", { className: "qdr-image__caption-placeholder", contentEditable: false }, placeholder)),
146
- children));
126
+ function ImageCaption(props) {
127
+ const { attributes, children, element } = props;
128
+ const editor = react.useSlateStatic();
129
+ const path = react.ReactEditor.findPath(editor, element);
130
+ const text = core.Editor.string(editor, path);
131
+ const isEmpty = !text;
132
+ const locale = react.useLocale();
133
+ const placeholder = locale.editor.image.captionInputPlaceholder;
134
+ return (React.createElement("figcaption", Object.assign({}, attributes, { className: clsx('qdr-image__caption', {
135
+ 'qdr-image__caption--empty': isEmpty,
136
+ }) }),
137
+ isEmpty && (React.createElement("span", { className: "qdr-image__caption-placeholder", contentEditable: false }, placeholder)),
138
+ children));
147
139
  }
148
140
 
149
- const defaultRenderImageElements = {
150
- figure: props => React__default.createElement(ImageFigure, Object.assign({}, props)),
151
- image: props => React__default.createElement(Image, Object.assign({}, props)),
152
- caption: props => React__default.createElement(ImageCaption, Object.assign({}, props)),
141
+ const defaultRenderImageElements = {
142
+ figure: props => React.createElement(ImageFigure, Object.assign({}, props)),
143
+ image: props => React.createElement(Image, Object.assign({}, props)),
144
+ caption: props => React.createElement(ImageCaption, Object.assign({}, props)),
153
145
  };
154
146
 
155
- function createReactImage(options = {}) {
156
- const core$1 = image.createImage(options);
157
- const { types } = core$1;
158
- return Object.assign(Object.assign({}, core$1), { createHandlers: () => ({
159
- onKeyDown(event, editor, next) {
160
- if ((event.key === 'Backspace' || event.key === 'Delete') && core$1.isCollapsedOnImage(editor)) {
161
- const [, figurePath] = core$1.getAboveImageFigure(editor) || [];
162
- if (figurePath) {
163
- core.Transforms.removeNodes(editor, { at: figurePath });
164
- return;
165
- }
166
- }
167
- const [, captionPath] = core$1.getAboveImageCaption(editor) || [];
168
- if (captionPath) {
169
- /**
170
- * Override original behavior of select all.
171
- * Only select the text in image caption if current selection is in image caption.
172
- */
173
- if (isHotkey__default('mod+a', event)) {
174
- event.preventDefault();
175
- core.Transforms.select(editor, captionPath);
176
- return;
177
- }
178
- }
179
- next();
180
- },
181
- }), createRenderElement: (options = {}) => {
182
- const renderFigure = options.figure || defaultRenderImageElements.figure;
183
- const renderImage = options.image || defaultRenderImageElements.image;
184
- const renderCaption = options.caption || defaultRenderImageElements.caption;
185
- return react.createRenderElements([
186
- {
187
- type: types.figure,
188
- render: (props) => {
189
- const { attributes, children, element } = props;
190
- return renderFigure(Object.assign(Object.assign({}, image.getImageFigureElementCommonProps(element)), { attributes,
191
- element,
192
- children }));
193
- },
194
- },
195
- {
196
- type: types.image,
197
- render: (props) => {
198
- const { attributes, children, element } = props;
199
- return renderImage(Object.assign(Object.assign({}, image.getImageElementCommonProps(element, core$1.hostingResolvers)), { attributes,
200
- element,
201
- children, resizeImage: core$1.resizeImage }));
202
- },
203
- },
204
- {
205
- type: types.caption,
206
- render: renderCaption,
207
- },
208
- ]);
209
- }, with(editor) {
210
- const { insertData } = editor;
211
- editor.insertData = (data) => {
212
- const text = data.getData('text');
213
- const { files } = data;
214
- /**
215
- * Insert image if inserted text is image url.
216
- */
217
- if (text) {
218
- if (core$1.isImageUrl(text)) {
219
- core$1.insertImage(editor, text);
220
- return;
221
- }
222
- }
223
- /**
224
- * Insert each image which is image.
225
- */
226
- if (files.length) {
227
- [...files]
228
- .filter((file) => {
229
- const [mime] = file.type.split('/');
230
- return mime === 'image';
231
- })
232
- .reduce((prev, imageFile) => tslib.__awaiter(this, void 0, void 0, function* () {
233
- yield prev;
234
- return utils.readFileAsDataURL(imageFile).then(dataURL => core$1.insertImage(editor, dataURL));
235
- }), Promise.resolve());
236
- return;
237
- }
238
- const inCaption = core$1.isSelectionInImageCaption(editor);
239
- if (inCaption) {
240
- const inlineData = new DataTransfer();
241
- inlineData.setData('text', data.getData('text').replace(/\r?\n/g, ''));
242
- insertData(inlineData);
243
- return;
244
- }
245
- insertData(data);
246
- };
247
- return core$1.with(editor);
248
- } });
147
+ function createReactImage(options = {}) {
148
+ const core$1 = image.createImage(options);
149
+ const { types } = core$1;
150
+ return Object.assign(Object.assign({}, core$1), { createHandlers: () => ({
151
+ onKeyDown(event, editor, next) {
152
+ if ((event.key === 'Backspace' || event.key === 'Delete') && core$1.isCollapsedOnImage(editor)) {
153
+ const [, figurePath] = core$1.getAboveImageFigure(editor) || [];
154
+ if (figurePath) {
155
+ core.Transforms.removeNodes(editor, { at: figurePath });
156
+ return;
157
+ }
158
+ }
159
+ const [, captionPath] = core$1.getAboveImageCaption(editor) || [];
160
+ if (captionPath) {
161
+ /**
162
+ * Override original behavior of select all.
163
+ * Only select the text in image caption if current selection is in image caption.
164
+ */
165
+ if (isHotkey('mod+a', event)) {
166
+ event.preventDefault();
167
+ core.Transforms.select(editor, captionPath);
168
+ return;
169
+ }
170
+ }
171
+ next();
172
+ },
173
+ }), createRenderElement: (options = {}) => {
174
+ const renderFigure = options.figure || defaultRenderImageElements.figure;
175
+ const renderImage = options.image || defaultRenderImageElements.image;
176
+ const renderCaption = options.caption || defaultRenderImageElements.caption;
177
+ return react.createRenderElements([
178
+ {
179
+ type: types.figure,
180
+ render: (props) => {
181
+ const { attributes, children, element } = props;
182
+ return renderFigure(Object.assign(Object.assign({}, image.getImageFigureElementCommonProps(element)), { attributes,
183
+ element,
184
+ children }));
185
+ },
186
+ },
187
+ {
188
+ type: types.image,
189
+ render: (props) => {
190
+ const { attributes, children, element } = props;
191
+ return renderImage(Object.assign(Object.assign({}, image.getImageElementCommonProps(element, core$1.hostingResolvers)), { attributes,
192
+ element,
193
+ children, resizeImage: core$1.resizeImage }));
194
+ },
195
+ },
196
+ {
197
+ type: types.caption,
198
+ render: renderCaption,
199
+ },
200
+ ]);
201
+ }, with(editor) {
202
+ const { insertData } = editor;
203
+ editor.insertData = (data) => {
204
+ const text = data.getData('text');
205
+ const { files } = data;
206
+ /**
207
+ * Insert image if inserted text is image url.
208
+ */
209
+ if (text) {
210
+ if (core$1.isImageUrl(text)) {
211
+ core$1.insertImage(editor, text);
212
+ return;
213
+ }
214
+ }
215
+ /**
216
+ * Insert each image which is image.
217
+ */
218
+ if (files.length) {
219
+ [...files]
220
+ .filter((file) => {
221
+ const [mime] = file.type.split('/');
222
+ return mime === 'image';
223
+ })
224
+ .reduce((prev, imageFile) => tslib.__awaiter(this, void 0, void 0, function* () {
225
+ yield prev;
226
+ return utils.readFileAsDataURL(imageFile).then(dataURL => core$1.insertImage(editor, dataURL));
227
+ }), Promise.resolve());
228
+ return;
229
+ }
230
+ const inCaption = core$1.isSelectionInImageCaption(editor);
231
+ if (inCaption) {
232
+ const inlineData = new DataTransfer();
233
+ inlineData.setData('text', data.getData('text').replace(/\r?\n/g, ''));
234
+ insertData(inlineData);
235
+ return;
236
+ }
237
+ insertData(data);
238
+ };
239
+ return core$1.with(editor);
240
+ } });
249
241
  }
250
242
 
251
243
  exports.Image = Image;