@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
@@ -6,115 +6,115 @@ import { ThemeContext } from '@quadrats/react/configs';
6
6
  import Portal from '../Portal/index.js';
7
7
  import { calculatePosition } from './calculatePosition.js';
8
8
 
9
- const clsPrefix = 'qdr-tooltip';
10
- const defaultTriggers = ['hover'];
11
- const defaultGetContainer = () => document.body;
12
- const defaultTransitionClassNames = {
13
- enter: `${clsPrefix}__fade--enter`,
14
- enterActive: `${clsPrefix}__fade--enter-active`,
15
- exit: `${clsPrefix}__fade--exit`,
16
- exitActive: `${clsPrefix}__fade--exit-active`,
17
- };
18
- /**
19
- * @todo
20
- * To implement all placement.
21
- * Extract Popup from Tooltip.
22
- */
23
- function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = defaultGetContainer, placement = 'top', horizontalOffset = 0, verticalOffset = 0, transitionClassNames = defaultTransitionClassNames, mouseEnterDelay = 0, mouseLeaveDelay = 0.1, }) {
24
- const { props: themeProps } = useContext(ThemeContext);
25
- const [visible, setVisible] = useState(false);
26
- const delayTimer = useRef(NaN);
27
- const clearDelayTimer = useCallback(() => {
28
- if (delayTimer.current) {
29
- window.clearTimeout(delayTimer.current);
30
- delayTimer.current = NaN;
31
- }
32
- }, []);
33
- const delaySetVisible = useCallback((setVisibleAction, delay) => {
34
- clearDelayTimer();
35
- if (delay) {
36
- delayTimer.current = window.setTimeout(() => {
37
- setVisible(setVisibleAction);
38
- clearDelayTimer();
39
- }, delay * 1000);
40
- }
41
- else {
42
- setVisible(setVisibleAction);
43
- }
44
- }, [clearDelayTimer]);
45
- const triggerRef = useRef(null);
46
- const popupRef = useRef(null);
47
- const [firstPlacement, secondPlacement] = placement.split('-');
48
- const child = Children.only(children);
49
- const triggerProps = {};
50
- const popupProps = {};
51
- if (triggers.includes('click')) {
52
- triggerProps.onClick = (event) => {
53
- var _a, _b;
54
- delaySetVisible((prevVisible) => !prevVisible, 0);
55
- (_b = (_a = child.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, event);
56
- };
57
- }
58
- if (triggers.includes('hover')) {
59
- popupProps.onMouseEnter = clearDelayTimer;
60
- popupProps.onMouseLeave = (event) => {
61
- var _a;
62
- if (!(event.relatedTarget instanceof Node && ((_a = popupRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget)))) {
63
- delaySetVisible(false, mouseLeaveDelay);
64
- }
65
- };
66
- triggerProps.onMouseEnter = (event) => {
67
- var _a, _b;
68
- delaySetVisible(true, mouseEnterDelay);
69
- (_b = (_a = child.props).onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);
70
- };
71
- triggerProps.onMouseLeave = (event) => {
72
- var _a, _b;
73
- delaySetVisible(false, mouseLeaveDelay);
74
- (_b = (_a = child.props).onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);
75
- };
76
- }
77
- const trigger = cloneElement(child, Object.assign(Object.assign({}, triggerProps), { ref: composeRefs([triggerRef, child.ref]) }));
78
- useLayoutEffect(() => {
79
- const triggerEl = triggerRef.current;
80
- const popupEl = popupRef.current;
81
- if (!(visible && triggerEl && popupEl)) {
82
- return;
83
- }
84
- const { top, left } = calculatePosition({
85
- placement, getContainer, horizontalOffset, verticalOffset,
86
- }, triggerEl, popupEl);
87
- popupEl.style.top = `${top}px`;
88
- popupEl.style.left = `${left}px`;
89
- }, [visible, placement, getContainer, horizontalOffset, verticalOffset]);
90
- useLayoutEffect(() => {
91
- if (!visible) {
92
- return;
93
- }
94
- function clickOutSideHandler(event) {
95
- event.preventDefault();
96
- const popupEl = popupRef.current;
97
- const targetEl = event.target;
98
- const targetUnmount = targetEl.offsetParent === null;
99
- if (!((popupEl === null || popupEl === void 0 ? void 0 : popupEl.contains(targetEl)) || targetUnmount)) {
100
- setVisible(false);
101
- }
102
- }
103
- document.addEventListener('click', clickOutSideHandler);
104
- return () => {
105
- document.removeEventListener('click', clickOutSideHandler);
106
- };
107
- }, [visible]);
108
- return (React.createElement(React.Fragment, null,
109
- React.createElement(Portal, { getContainer: getContainer },
110
- React.createElement(CSSTransition, { in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
111
- React.createElement("div", { className: `${clsPrefix}__mask` },
112
- React.createElement("div", Object.assign({ className: clsx(themeProps.className, `${clsPrefix}__popup`, `${clsPrefix}__popup--${firstPlacement}`), ref: popupRef, style: themeProps.style }, popupProps),
113
- React.createElement("div", { className: clsx(`${clsPrefix}__arrow`, `${clsPrefix}__arrow--${firstPlacement}`, {
114
- [`${clsPrefix}__arrow--${placement}`]: secondPlacement,
115
- }) }),
116
- React.createElement("div", { className: `${clsPrefix}__content` }, popup))))),
117
- trigger));
9
+ const clsPrefix = 'qdr-tooltip';
10
+ const defaultTriggers = ['hover'];
11
+ const defaultGetContainer = () => document.body;
12
+ const defaultTransitionClassNames = {
13
+ enter: `${clsPrefix}__fade--enter`,
14
+ enterActive: `${clsPrefix}__fade--enter-active`,
15
+ exit: `${clsPrefix}__fade--exit`,
16
+ exitActive: `${clsPrefix}__fade--exit-active`,
17
+ };
18
+ /**
19
+ * @todo
20
+ * To implement all placement.
21
+ * Extract Popup from Tooltip.
22
+ */
23
+ function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = defaultGetContainer, placement = 'top', horizontalOffset = 0, verticalOffset = 0, transitionClassNames = defaultTransitionClassNames, mouseEnterDelay = 0, mouseLeaveDelay = 0.1, }) {
24
+ const { props: themeProps } = useContext(ThemeContext);
25
+ const [visible, setVisible] = useState(false);
26
+ const delayTimer = useRef(NaN);
27
+ const clearDelayTimer = useCallback(() => {
28
+ if (delayTimer.current) {
29
+ window.clearTimeout(delayTimer.current);
30
+ delayTimer.current = NaN;
31
+ }
32
+ }, []);
33
+ const delaySetVisible = useCallback((setVisibleAction, delay) => {
34
+ clearDelayTimer();
35
+ if (delay) {
36
+ delayTimer.current = window.setTimeout(() => {
37
+ setVisible(setVisibleAction);
38
+ clearDelayTimer();
39
+ }, delay * 1000);
40
+ }
41
+ else {
42
+ setVisible(setVisibleAction);
43
+ }
44
+ }, [clearDelayTimer]);
45
+ const triggerRef = useRef(null);
46
+ const popupRef = useRef(null);
47
+ const [firstPlacement, secondPlacement] = placement.split('-');
48
+ const child = Children.only(children);
49
+ const triggerProps = {};
50
+ const popupProps = {};
51
+ if (triggers.includes('click')) {
52
+ triggerProps.onClick = (event) => {
53
+ var _a, _b;
54
+ delaySetVisible(prevVisible => !prevVisible, 0);
55
+ (_b = (_a = child.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, event);
56
+ };
57
+ }
58
+ if (triggers.includes('hover')) {
59
+ popupProps.onMouseEnter = clearDelayTimer;
60
+ popupProps.onMouseLeave = (event) => {
61
+ var _a;
62
+ if (!(event.relatedTarget instanceof Node && ((_a = popupRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget)))) {
63
+ delaySetVisible(false, mouseLeaveDelay);
64
+ }
65
+ };
66
+ triggerProps.onMouseEnter = (event) => {
67
+ var _a, _b;
68
+ delaySetVisible(true, mouseEnterDelay);
69
+ (_b = (_a = child.props).onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);
70
+ };
71
+ triggerProps.onMouseLeave = (event) => {
72
+ var _a, _b;
73
+ delaySetVisible(false, mouseLeaveDelay);
74
+ (_b = (_a = child.props).onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);
75
+ };
76
+ }
77
+ const trigger = cloneElement(child, Object.assign(Object.assign({}, triggerProps), { ref: composeRefs([triggerRef, child.ref]) }));
78
+ useLayoutEffect(() => {
79
+ const triggerEl = triggerRef.current;
80
+ const popupEl = popupRef.current;
81
+ if (!(visible && triggerEl && popupEl)) {
82
+ return;
83
+ }
84
+ const { top, left } = calculatePosition({
85
+ placement, getContainer, horizontalOffset, verticalOffset,
86
+ }, triggerEl, popupEl);
87
+ popupEl.style.top = `${top}px`;
88
+ popupEl.style.left = `${left}px`;
89
+ }, [visible, placement, getContainer, horizontalOffset, verticalOffset]);
90
+ useLayoutEffect(() => {
91
+ if (!visible) {
92
+ return;
93
+ }
94
+ function clickOutSideHandler(event) {
95
+ event.preventDefault();
96
+ const popupEl = popupRef.current;
97
+ const targetEl = event.target;
98
+ const targetUnmount = targetEl.offsetParent === null;
99
+ if (!((popupEl === null || popupEl === void 0 ? void 0 : popupEl.contains(targetEl)) || targetUnmount)) {
100
+ setVisible(false);
101
+ }
102
+ }
103
+ document.addEventListener('click', clickOutSideHandler);
104
+ return () => {
105
+ document.removeEventListener('click', clickOutSideHandler);
106
+ };
107
+ }, [visible]);
108
+ return (React.createElement(React.Fragment, null,
109
+ React.createElement(Portal, { getContainer: getContainer },
110
+ React.createElement(CSSTransition, { in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
111
+ React.createElement("div", { className: `${clsPrefix}__mask` },
112
+ React.createElement("div", Object.assign({ className: clsx(themeProps.className, `${clsPrefix}__popup`, `${clsPrefix}__popup--${firstPlacement}`), ref: popupRef, style: themeProps.style }, popupProps),
113
+ React.createElement("div", { className: clsx(`${clsPrefix}__arrow`, `${clsPrefix}__arrow--${firstPlacement}`, {
114
+ [`${clsPrefix}__arrow--${placement}`]: secondPlacement,
115
+ }) }),
116
+ React.createElement("div", { className: `${clsPrefix}__content` }, popup))))),
117
+ trigger));
118
118
  }
119
119
 
120
120
  export { Tooltip as default };
@@ -1,10 +1,10 @@
1
- import { ReactElement, ReactNode } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { CSSTransitionClassNames } from 'react-transition-group/CSSTransition';
3
3
  import { PortalProps } from '../Portal';
4
- export declare type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'right-top' | 'right-bottom';
5
- export declare type TooltipTrigger = 'hover' | 'click';
4
+ export type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'right-top' | 'right-bottom';
5
+ export type TooltipTrigger = 'hover' | 'click';
6
6
  export interface TooltipProps {
7
- children?: ReactElement;
7
+ children?: React.ReactNode;
8
8
  triggers?: TooltipTrigger[];
9
9
  popup?: ReactNode;
10
10
  getContainer?: PortalProps['getContainer'];