@quadrats/react 1.1.7 → 1.1.8

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 (1422) hide show
  1. package/CHANGELOG.md +610 -0
  2. package/_internal/package.json +1 -4
  3. package/_internal/src/renderer/composeRenderElementsBase.ts +19 -0
  4. package/_internal/src/renderer/composeRenderLeafsBase.ts +17 -0
  5. package/_internal/src/renderer/createRenderElementBase.ts +14 -0
  6. package/_internal/src/renderer/createRenderElementsBase.ts +15 -0
  7. package/_internal/src/renderer/createRenderMarkBase.ts +19 -0
  8. package/_internal/src/renderer/typings.ts +30 -0
  9. package/_internal/tsconfig.build.json +5 -0
  10. package/accordion/jsx-serializer/package.json +6 -3
  11. package/accordion/jsx-serializer/src/createJsxSerializeAccordion.ts +79 -0
  12. package/accordion/jsx-serializer/src/defaultRenderAccordionElements.tsx +21 -0
  13. package/accordion/jsx-serializer/src/typings.ts +16 -0
  14. package/accordion/jsx-serializer/tsconfig.build.json +5 -0
  15. package/accordion/package.json +8 -3
  16. package/accordion/src/components/Accordion.tsx +53 -0
  17. package/accordion/src/components/AccordionContent.tsx +38 -0
  18. package/accordion/src/components/AccordionTitle.tsx +33 -0
  19. package/accordion/src/contexts/AccordionContext.ts +4 -0
  20. package/accordion/src/createReactAccordion.ts +194 -0
  21. package/accordion/src/defaultRenderAccordionElements.tsx +11 -0
  22. package/accordion/src/hooks/useAccordion.ts +6 -0
  23. package/accordion/src/typings.ts +41 -0
  24. package/accordion/toolbar/package.json +6 -3
  25. package/accordion/toolbar/src/AccordionToolbarIcon.tsx +17 -0
  26. package/accordion/toolbar/src/index.ts +3 -0
  27. package/accordion/toolbar/src/useAccordionTool.ts +10 -0
  28. package/accordion/toolbar/tsconfig.build.json +5 -0
  29. package/accordion/tsconfig.build.json +5 -0
  30. package/align/package.json +5 -3
  31. package/align/src/constants.ts +8 -0
  32. package/align/src/createReactAlign.ts +27 -0
  33. package/align/src/typings.ts +20 -0
  34. package/align/toolbar/package.json +7 -3
  35. package/align/toolbar/src/AlignToolbarIcon.tsx +19 -0
  36. package/align/toolbar/src/index.ts +3 -0
  37. package/align/toolbar/src/useAlignTool.ts +18 -0
  38. package/align/toolbar/tsconfig.build.json +5 -0
  39. package/align/tsconfig.build.json +5 -0
  40. package/blockquote/jsx-serializer/package.json +6 -3
  41. package/blockquote/jsx-serializer/src/createJsxSerializeBlockquote.ts +14 -0
  42. package/blockquote/jsx-serializer/src/typings.ts +4 -0
  43. package/blockquote/jsx-serializer/tsconfig.build.json +5 -0
  44. package/blockquote/package.json +9 -3
  45. package/blockquote/src/ReactBlockquote.spec.tsx +42 -0
  46. package/blockquote/src/constants.ts +6 -0
  47. package/blockquote/src/createReactBlockquote.ts +105 -0
  48. package/blockquote/src/defaultRenderBlockquoteElement.tsx +15 -0
  49. package/blockquote/src/typings.ts +22 -0
  50. package/blockquote/toolbar/package.json +6 -3
  51. package/blockquote/toolbar/src/BlockquoteToolbarIcon.tsx +17 -0
  52. package/blockquote/toolbar/src/useBlockquoteTool.ts +11 -0
  53. package/blockquote/toolbar/tsconfig.build.json +5 -0
  54. package/blockquote/tsconfig.build.json +5 -0
  55. package/bold/jsx-serializer/package.json +6 -3
  56. package/bold/jsx-serializer/src/createJsxSerializeBold.ts +8 -0
  57. package/bold/jsx-serializer/tsconfig.build.json +5 -0
  58. package/bold/package.json +5 -3
  59. package/bold/src/constants.ts +6 -0
  60. package/bold/src/createReactBold.ts +11 -0
  61. package/bold/src/defaultRenderBold.tsx +12 -0
  62. package/bold/src/typings.ts +6 -0
  63. package/bold/tsconfig.build.json +5 -0
  64. package/card/jsx-serializer/package.json +6 -3
  65. package/card/jsx-serializer/src/createJsxSerializeCard.ts +65 -0
  66. package/card/jsx-serializer/src/defaultRenderCardElements.tsx +9 -0
  67. package/card/jsx-serializer/src/typings.ts +20 -0
  68. package/card/jsx-serializer/tsconfig.build.json +5 -0
  69. package/card/package.json +11 -3
  70. package/card/src/components/Card.tsx +139 -0
  71. package/card/src/components/CardContents.tsx +35 -0
  72. package/card/src/components/CardImage.tsx +30 -0
  73. package/card/src/components/CardPlaceholder.tsx +40 -0
  74. package/card/src/createReactCard.ts +101 -0
  75. package/card/src/defaultRenderCardElements.tsx +16 -0
  76. package/card/src/typings.ts +46 -0
  77. package/card/toolbar/package.json +6 -3
  78. package/card/toolbar/src/CardToolbarIcon.tsx +17 -0
  79. package/card/toolbar/src/useCardTool.tsx +43 -0
  80. package/card/toolbar/tsconfig.build.json +5 -0
  81. package/card/tsconfig.build.json +5 -0
  82. package/carousel/jsx-serializer/package.json +6 -3
  83. package/carousel/jsx-serializer/src/createJsxSerializeCarousel.ts +71 -0
  84. package/carousel/jsx-serializer/src/defaultRenderCarouselElements.tsx +9 -0
  85. package/carousel/jsx-serializer/src/typings.ts +20 -0
  86. package/carousel/jsx-serializer/tsconfig.build.json +5 -0
  87. package/carousel/package.json +10 -3
  88. package/carousel/src/components/Carousel.tsx +102 -0
  89. package/carousel/src/components/CarouselCaption.tsx +27 -0
  90. package/carousel/src/components/CarouselImages.tsx +97 -0
  91. package/carousel/src/components/CarouselPlaceholder.tsx +26 -0
  92. package/carousel/src/contexts/CarouselContext.ts +4 -0
  93. package/carousel/src/createReactCarousel.ts +104 -0
  94. package/carousel/src/defaultRenderCarouselElements.tsx +16 -0
  95. package/carousel/src/hooks/useCarousel.ts +6 -0
  96. package/carousel/src/typings.ts +55 -0
  97. package/carousel/toolbar/package.json +6 -3
  98. package/carousel/toolbar/src/CarouselToolbarIcon.tsx +17 -0
  99. package/carousel/toolbar/src/useCarouselTool.tsx +34 -0
  100. package/carousel/toolbar/tsconfig.build.json +5 -0
  101. package/carousel/tsconfig.build.json +5 -0
  102. package/components/package.json +21 -3
  103. package/components/src/BaseField/index.tsx +35 -0
  104. package/components/src/Button/index.tsx +48 -0
  105. package/components/src/Hint/index.tsx +61 -0
  106. package/components/src/Icon/index.tsx +45 -0
  107. package/components/src/ImageUploader/index.tsx +306 -0
  108. package/components/src/Input/index.tsx +72 -0
  109. package/components/src/Message/index.tsx +138 -0
  110. package/components/src/Modal/index.tsx +161 -0
  111. package/components/src/Notifier/NotifierManager.tsx +50 -0
  112. package/components/src/Notifier/createNotifier.tsx +100 -0
  113. package/components/src/Notifier/typings.ts +33 -0
  114. package/components/src/Portal/index.tsx +15 -0
  115. package/components/src/Progress/index.tsx +49 -0
  116. package/components/src/SegmentedControl/index.tsx +37 -0
  117. package/components/src/Textarea/index.tsx +74 -0
  118. package/components/src/Toggle/index.tsx +34 -0
  119. package/components/src/Tooltip/calculatePosition.ts +84 -0
  120. package/components/src/Tooltip/index.tsx +187 -0
  121. package/components/src/Tooltip/typings.ts +40 -0
  122. package/components/src/Transition/SlideFade.tsx +159 -0
  123. package/components/src/Transition/Transition.tsx +176 -0
  124. package/components/src/Transition/getTransitionStyleProps.ts +48 -0
  125. package/components/src/Transition/useSetNodeTransition.ts +46 -0
  126. package/components/src/index.ts +17 -0
  127. package/components/tsconfig.build.json +5 -0
  128. package/configs/package.json +1 -4
  129. package/configs/src/ConfigsProvider.tsx +39 -0
  130. package/configs/src/locale.ts +8 -0
  131. package/configs/src/theme.ts +50 -0
  132. package/configs/tsconfig.build.json +5 -0
  133. package/divider/jsx-serializer/package.json +6 -3
  134. package/divider/jsx-serializer/src/createJsxSerializeDivider.ts +12 -0
  135. package/divider/jsx-serializer/src/defaultRenderDividerElement.tsx +3 -0
  136. package/divider/jsx-serializer/src/typings.ts +4 -0
  137. package/divider/jsx-serializer/tsconfig.build.json +5 -0
  138. package/divider/package.json +8 -3
  139. package/divider/src/createReactDivider.ts +16 -0
  140. package/divider/src/defaultRenderDividerElement.tsx +8 -0
  141. package/divider/src/typings.ts +13 -0
  142. package/divider/toolbar/package.json +6 -3
  143. package/divider/toolbar/src/DividerToolbarIcon.tsx +17 -0
  144. package/divider/toolbar/src/index.ts +3 -0
  145. package/divider/toolbar/src/useDividerTool.ts +10 -0
  146. package/divider/toolbar/tsconfig.build.json +5 -0
  147. package/divider/tsconfig.build.json +5 -0
  148. package/embed/jsx-serializer/facebook/package.json +6 -3
  149. package/embed/jsx-serializer/facebook/tsconfig.build.json +5 -0
  150. package/embed/jsx-serializer/instagram/package.json +6 -3
  151. package/embed/jsx-serializer/instagram/tsconfig.build.json +5 -0
  152. package/embed/jsx-serializer/package.json +6 -3
  153. package/embed/jsx-serializer/src/createJsxSerializeEmbed.ts +20 -0
  154. package/embed/jsx-serializer/src/typings.ts +7 -0
  155. package/embed/jsx-serializer/tsconfig.build.json +5 -0
  156. package/embed/jsx-serializer/twitter/package.json +6 -3
  157. package/embed/jsx-serializer/twitter/tsconfig.build.json +5 -0
  158. package/embed/jsx-serializer/vimeo/package.json +6 -3
  159. package/embed/jsx-serializer/vimeo/tsconfig.build.json +5 -0
  160. package/embed/jsx-serializer/youtube/package.json +6 -3
  161. package/embed/jsx-serializer/youtube/tsconfig.build.json +5 -0
  162. package/embed/package.json +8 -3
  163. package/embed/renderers/base/package.json +6 -3
  164. package/embed/renderers/base/src/components/BaseEmbedElement.tsx +107 -0
  165. package/embed/renderers/base/src/index.ts +5 -0
  166. package/embed/renderers/base/tsconfig.build.json +5 -0
  167. package/embed/renderers/facebook/package.json +6 -3
  168. package/embed/renderers/facebook/src/components/Facebook.tsx +56 -0
  169. package/embed/renderers/facebook/src/defaultRenderFacebookEmbedElement.tsx +81 -0
  170. package/embed/renderers/facebook/tsconfig.build.json +5 -0
  171. package/embed/renderers/instagram/package.json +6 -3
  172. package/embed/renderers/instagram/src/components/Instagram.tsx +86 -0
  173. package/embed/renderers/instagram/src/defaultRenderInstagramEmbedElement.tsx +74 -0
  174. package/embed/renderers/instagram/src/hooks/useLoadInstagramEmbedApi.ts +39 -0
  175. package/embed/renderers/instagram/tsconfig.build.json +5 -0
  176. package/embed/renderers/podcast-apple/package.json +6 -3
  177. package/embed/renderers/podcast-apple/src/components/PodcastApple.tsx +37 -0
  178. package/embed/renderers/podcast-apple/src/defaultRenderPodcastAppleEmbedElement.tsx +69 -0
  179. package/embed/renderers/podcast-apple/tsconfig.build.json +5 -0
  180. package/embed/renderers/spotify/package.json +6 -3
  181. package/embed/renderers/spotify/src/components/Spotify.tsx +51 -0
  182. package/embed/renderers/spotify/src/defaultRenderSpotifyEmbedElement.tsx +63 -0
  183. package/embed/renderers/spotify/tsconfig.build.json +5 -0
  184. package/embed/renderers/twitter/package.json +6 -3
  185. package/embed/renderers/twitter/src/components/Twitter.tsx +47 -0
  186. package/embed/renderers/twitter/src/defaultRenderTwitterEmbedElement.tsx +78 -0
  187. package/embed/renderers/twitter/src/hooks/useLoadTwitterEmbedApi.ts +55 -0
  188. package/embed/renderers/twitter/tsconfig.build.json +5 -0
  189. package/embed/renderers/vimeo/package.json +6 -3
  190. package/embed/renderers/vimeo/src/defaultRenderVimeoEmbedElement.tsx +52 -0
  191. package/embed/renderers/vimeo/tsconfig.build.json +5 -0
  192. package/embed/renderers/youtube/package.json +6 -3
  193. package/embed/renderers/youtube/src/defaultRenderYoutubeEmbedElement.tsx +52 -0
  194. package/embed/renderers/youtube/tsconfig.build.json +5 -0
  195. package/embed/src/components/VideoIframe.tsx +41 -0
  196. package/embed/src/createReactEmbed.ts +23 -0
  197. package/embed/src/createRenderEmbedElementBase.ts +30 -0
  198. package/embed/src/hooks/useVideoIframeSize.ts +28 -0
  199. package/embed/src/typings.ts +26 -0
  200. package/embed/toolbar/package.json +6 -3
  201. package/embed/toolbar/src/EmbedToolbarIcon.tsx +25 -0
  202. package/embed/toolbar/src/index.ts +3 -0
  203. package/embed/toolbar/src/useEmbedTool.tsx +106 -0
  204. package/embed/toolbar/tsconfig.build.json +5 -0
  205. package/embed/tsconfig.build.json +5 -0
  206. package/file-uploader/package.json +9 -3
  207. package/file-uploader/src/components/FileUploader.tsx +18 -0
  208. package/file-uploader/src/createReactFileUploader.ts +28 -0
  209. package/file-uploader/src/defaultRenderFileUploaderElement.tsx +5 -0
  210. package/file-uploader/src/hooks/useFileUploader.ts +14 -0
  211. package/file-uploader/src/typings.ts +19 -0
  212. package/file-uploader/toolbar/package.json +6 -3
  213. package/file-uploader/toolbar/src/FileUploaderToolbarIcon.tsx +19 -0
  214. package/file-uploader/toolbar/src/index.ts +3 -0
  215. package/file-uploader/toolbar/src/useFileUploaderTool.ts +14 -0
  216. package/file-uploader/toolbar/tsconfig.build.json +5 -0
  217. package/file-uploader/tsconfig.build.json +5 -0
  218. package/footnote/jsx-serializer/package.json +6 -3
  219. package/footnote/jsx-serializer/src/createJsxSerializeFootnote.ts +13 -0
  220. package/footnote/jsx-serializer/src/defaultRenderFootnoteElement.tsx +18 -0
  221. package/footnote/jsx-serializer/src/typings.ts +4 -0
  222. package/footnote/jsx-serializer/tsconfig.build.json +5 -0
  223. package/footnote/package.json +5 -3
  224. package/footnote/src/createReactFootnote.ts +22 -0
  225. package/footnote/src/defaultRenderFootnoteElement.tsx +36 -0
  226. package/footnote/src/typings.ts +14 -0
  227. package/footnote/src/useFootnotes.ts +28 -0
  228. package/footnote/src/useFootnotesFromNodes.ts +33 -0
  229. package/footnote/toolbar/package.json +6 -3
  230. package/footnote/toolbar/src/FootnoteToolbarIcon.tsx +18 -0
  231. package/footnote/toolbar/src/index.ts +3 -0
  232. package/footnote/toolbar/src/useFootnoteTool.ts +22 -0
  233. package/footnote/toolbar/tsconfig.build.json +5 -0
  234. package/footnote/tsconfig.build.json +5 -0
  235. package/heading/jsx-serializer/package.json +6 -3
  236. package/heading/jsx-serializer/src/createJsxSerializeHeading.ts +13 -0
  237. package/heading/jsx-serializer/src/typings.ts +4 -0
  238. package/heading/jsx-serializer/tsconfig.build.json +5 -0
  239. package/heading/package.json +9 -3
  240. package/heading/src/constants.ts +9 -0
  241. package/heading/src/createReactHeading.ts +56 -0
  242. package/heading/src/defaultRenderHeadingElement.tsx +36 -0
  243. package/heading/src/typings.ts +21 -0
  244. package/heading/toolbar/package.json +6 -3
  245. package/heading/toolbar/src/HeadingToolbarIcon.tsx +22 -0
  246. package/heading/toolbar/src/index.ts +3 -0
  247. package/heading/toolbar/src/useToggleHeadingTool.ts +15 -0
  248. package/heading/toolbar/tsconfig.build.json +5 -0
  249. package/heading/tsconfig.build.json +5 -0
  250. package/highlight/jsx-serializer/package.json +6 -3
  251. package/highlight/jsx-serializer/src/createJsxSerializeHighlight.ts +8 -0
  252. package/highlight/jsx-serializer/tsconfig.build.json +5 -0
  253. package/highlight/package.json +5 -3
  254. package/highlight/src/constants.ts +6 -0
  255. package/highlight/src/createReactHighlight.ts +11 -0
  256. package/highlight/src/defaultRenderHighlight.tsx +12 -0
  257. package/highlight/src/typings.ts +6 -0
  258. package/highlight/tsconfig.build.json +5 -0
  259. package/image/jsx-serializer/package.json +6 -3
  260. package/image/jsx-serializer/src/createJsxSerializeImage.ts +85 -0
  261. package/image/jsx-serializer/src/defaultRenderImageElements.tsx +21 -0
  262. package/image/jsx-serializer/src/typings.ts +34 -0
  263. package/image/jsx-serializer/tsconfig.build.json +5 -0
  264. package/image/package.json +10 -3
  265. package/image/src/components/Image.tsx +107 -0
  266. package/image/src/components/ImageCaption.tsx +35 -0
  267. package/image/src/components/ImageFigure.tsx +26 -0
  268. package/image/src/components/ImagePlaceholder.tsx +16 -0
  269. package/image/src/createReactImage.ts +191 -0
  270. package/image/src/defaultRenderImageElements.tsx +11 -0
  271. package/image/src/hooks/useImageResizer.ts +135 -0
  272. package/image/src/typings.ts +50 -0
  273. package/image/tsconfig.build.json +5 -0
  274. package/input-block/package.json +8 -3
  275. package/input-block/src/components/InputBlock.tsx +70 -0
  276. package/input-block/src/createReactInputBlock.ts +34 -0
  277. package/input-block/src/defaultRenderInputBlockElement.tsx +5 -0
  278. package/input-block/src/hooks/useInputBlock.ts +61 -0
  279. package/input-block/src/typings.ts +19 -0
  280. package/input-block/tsconfig.build.json +5 -0
  281. package/italic/jsx-serializer/package.json +6 -3
  282. package/italic/jsx-serializer/src/createJsxSerializeItalic.ts +8 -0
  283. package/italic/jsx-serializer/tsconfig.build.json +5 -0
  284. package/italic/package.json +5 -3
  285. package/italic/src/constants.ts +6 -0
  286. package/italic/src/createReactItalic.ts +11 -0
  287. package/italic/src/defaultRenderItalic.tsx +12 -0
  288. package/italic/src/typings.ts +6 -0
  289. package/italic/tsconfig.build.json +5 -0
  290. package/jsx-serializer/package.json +5 -3
  291. package/jsx-serializer/src/createJsxSerializeElement.ts +8 -0
  292. package/jsx-serializer/src/createJsxSerializeElements.ts +8 -0
  293. package/jsx-serializer/src/createJsxSerializeMark.ts +6 -0
  294. package/jsx-serializer/src/createJsxSerializer.tsx +84 -0
  295. package/jsx-serializer/src/typings.ts +20 -0
  296. package/jsx-serializer/tsconfig.build.json +5 -0
  297. package/line-break/jsx-serializer/package.json +6 -3
  298. package/line-break/jsx-serializer/src/createJsxSerializeLineBreak.ts +13 -0
  299. package/line-break/jsx-serializer/src/defaultRenderLineBreakElement.tsx +7 -0
  300. package/line-break/jsx-serializer/src/typings.ts +4 -0
  301. package/line-break/jsx-serializer/tsconfig.build.json +5 -0
  302. package/line-break/package.json +8 -3
  303. package/line-break/src/commonBreak.ts +32 -0
  304. package/line-break/src/createOnKeyDownBreak.ts +88 -0
  305. package/line-break/src/createReactLineBreak.ts +20 -0
  306. package/line-break/src/defaultRenderLineBreakElement.tsx +8 -0
  307. package/line-break/src/renderLineBreakElementWithSymbol.tsx +8 -0
  308. package/line-break/src/typings.ts +38 -0
  309. package/line-break/tsconfig.build.json +5 -0
  310. package/link/jsx-serializer/package.json +6 -3
  311. package/link/jsx-serializer/src/createJsxSerializeLink.ts +11 -0
  312. package/link/jsx-serializer/src/defaultRenderLinkElement.tsx +8 -0
  313. package/link/jsx-serializer/src/typings.ts +4 -0
  314. package/link/jsx-serializer/tsconfig.build.json +5 -0
  315. package/link/package.json +5 -3
  316. package/link/src/createReactLink.ts +49 -0
  317. package/link/src/defaultRenderLinkElement.tsx +27 -0
  318. package/link/src/typings.ts +14 -0
  319. package/link/toolbar/package.json +6 -3
  320. package/link/toolbar/src/LinkToolbarIcon.tsx +18 -0
  321. package/link/toolbar/src/UnlinkToolbarIcon.tsx +17 -0
  322. package/link/toolbar/src/index.ts +5 -0
  323. package/link/toolbar/src/useLinkTool.ts +31 -0
  324. package/link/toolbar/src/useUnlinkTool.ts +10 -0
  325. package/link/toolbar/tsconfig.build.json +5 -0
  326. package/link/tsconfig.build.json +5 -0
  327. package/list/jsx-serializer/package.json +6 -3
  328. package/list/jsx-serializer/src/createJsxSerializeList.ts +21 -0
  329. package/list/jsx-serializer/src/typings.ts +4 -0
  330. package/list/jsx-serializer/tsconfig.build.json +5 -0
  331. package/list/package.json +8 -3
  332. package/list/src/createReactList.ts +52 -0
  333. package/list/src/defaultRenderListElements.tsx +12 -0
  334. package/list/src/typings.ts +14 -0
  335. package/list/toolbar/package.json +6 -3
  336. package/list/toolbar/src/ListToolbarIcon.tsx +19 -0
  337. package/list/toolbar/src/index.ts +3 -0
  338. package/list/toolbar/src/useListTool.ts +12 -0
  339. package/list/toolbar/tsconfig.build.json +5 -0
  340. package/list/tsconfig.build.json +5 -0
  341. package/package.json +18 -5
  342. package/paragraph/jsx-serializer/package.json +6 -3
  343. package/paragraph/jsx-serializer/src/createJsxSerializeParagraph.ts +14 -0
  344. package/paragraph/jsx-serializer/src/typings.ts +4 -0
  345. package/paragraph/jsx-serializer/tsconfig.build.json +5 -0
  346. package/paragraph/package.json +8 -3
  347. package/paragraph/src/createReactParagraph.ts +9 -0
  348. package/paragraph/src/createRenderParagraphElement.ts +17 -0
  349. package/paragraph/src/defaultRenderParagraphElement.tsx +21 -0
  350. package/paragraph/src/renderParagraphElementWithSymbol.tsx +21 -0
  351. package/paragraph/toolbar/package.json +6 -3
  352. package/paragraph/toolbar/src/ParagraphToolbarIcon.tsx +17 -0
  353. package/paragraph/toolbar/src/useToggleParagraphTool.ts +11 -0
  354. package/paragraph/toolbar/tsconfig.build.json +5 -0
  355. package/paragraph/tsconfig.build.json +5 -0
  356. package/read-more/jsx-serializer/package.json +6 -3
  357. package/read-more/jsx-serializer/src/createJsxSerializeReadMore.ts +11 -0
  358. package/read-more/jsx-serializer/src/typings.ts +4 -0
  359. package/read-more/jsx-serializer/tsconfig.build.json +5 -0
  360. package/read-more/package.json +8 -3
  361. package/read-more/src/components/ReadMore.tsx +24 -0
  362. package/read-more/src/createReactReadMore.ts +16 -0
  363. package/read-more/src/defaultRenderReadMoreElement.tsx +5 -0
  364. package/read-more/src/typings.ts +12 -0
  365. package/read-more/toolbar/package.json +6 -3
  366. package/read-more/toolbar/src/ReadMoreToolbarIcon.tsx +17 -0
  367. package/read-more/toolbar/src/index.ts +3 -0
  368. package/read-more/toolbar/src/useReadMoreTool.ts +10 -0
  369. package/read-more/toolbar/tsconfig.build.json +5 -0
  370. package/read-more/tsconfig.build.json +5 -0
  371. package/src/core/components/DefaultElement.tsx +6 -0
  372. package/src/core/components/DefaultLeaf.tsx +6 -0
  373. package/src/core/components/Editable.tsx +129 -0
  374. package/src/core/components/Quadrats.tsx +40 -0
  375. package/src/core/composeHandlers.ts +58 -0
  376. package/src/core/composeRenderElements.tsx +13 -0
  377. package/src/core/composeRenderLeafs.tsx +11 -0
  378. package/src/core/constants.ts +1 -0
  379. package/src/core/contexts/composition/CompositionProvider.tsx +15 -0
  380. package/src/core/contexts/composition/composition.ts +16 -0
  381. package/src/core/contexts/message/MessageProvider.tsx +46 -0
  382. package/src/core/contexts/message/message.ts +14 -0
  383. package/src/core/contexts/modal/CardModal/CardModal.tsx +256 -0
  384. package/src/core/contexts/modal/CarouselModal/CarouselItem.tsx +97 -0
  385. package/src/core/contexts/modal/CarouselModal/CarouselModal.tsx +280 -0
  386. package/src/core/contexts/modal/CarouselModal/FilesDropZone.tsx +118 -0
  387. package/src/core/contexts/modal/ConfirmModal/ConfirmModal.tsx +72 -0
  388. package/src/core/contexts/modal/EmbedModal/EmbedModal.tsx +57 -0
  389. package/src/core/contexts/modal/ModalProvider.tsx +114 -0
  390. package/src/core/contexts/modal/modal.ts +36 -0
  391. package/src/core/createReactEditor.ts +7 -0
  392. package/src/core/createRenderElement.ts +6 -0
  393. package/src/core/createRenderElements.ts +6 -0
  394. package/src/core/createRenderMark.ts +6 -0
  395. package/src/core/index.ts +53 -0
  396. package/src/core/typings/descendant.ts +3 -0
  397. package/src/core/typings/handler.ts +32 -0
  398. package/src/core/typings/renderer.ts +33 -0
  399. package/src/core/typings/with.ts +5 -0
  400. package/strikethrough/jsx-serializer/package.json +6 -3
  401. package/strikethrough/jsx-serializer/src/createJsxSerializeStrikethrough.ts +8 -0
  402. package/strikethrough/jsx-serializer/tsconfig.build.json +5 -0
  403. package/strikethrough/package.json +5 -3
  404. package/strikethrough/src/constants.ts +6 -0
  405. package/strikethrough/src/createReactStrikethrough.ts +11 -0
  406. package/strikethrough/src/defaultRenderStrikethrough.tsx +12 -0
  407. package/strikethrough/src/typings.ts +6 -0
  408. package/strikethrough/tsconfig.build.json +5 -0
  409. package/table/jsx-serializer/package.json +6 -3
  410. package/table/jsx-serializer/src/components/Table.tsx +6 -0
  411. package/table/jsx-serializer/src/components/TableBody.tsx +6 -0
  412. package/table/jsx-serializer/src/components/TableCell.tsx +51 -0
  413. package/table/jsx-serializer/src/components/TableHeader.tsx +16 -0
  414. package/table/jsx-serializer/src/components/TableMain.tsx +36 -0
  415. package/table/jsx-serializer/src/components/TableRow.tsx +6 -0
  416. package/table/jsx-serializer/src/components/TableTitle.tsx +6 -0
  417. package/table/jsx-serializer/src/contexts/TableHeaderContext.ts +3 -0
  418. package/table/jsx-serializer/src/contexts/TableScrollContext.ts +6 -0
  419. package/table/jsx-serializer/src/createJsxSerializeTable.tsx +163 -0
  420. package/table/jsx-serializer/src/defaultRenderTableElements.tsx +19 -0
  421. package/table/jsx-serializer/src/typings.ts +36 -0
  422. package/table/jsx-serializer/tsconfig.build.json +5 -0
  423. package/table/package.json +12 -3
  424. package/table/src/components/ColumnDragButton.tsx +72 -0
  425. package/table/src/components/RowDragButton.tsx +69 -0
  426. package/table/src/components/Table.tsx +351 -0
  427. package/table/src/components/TableBody.tsx +15 -0
  428. package/table/src/components/TableCell.tsx +415 -0
  429. package/table/src/components/TableDragLayer.tsx +127 -0
  430. package/table/src/components/TableHeader.tsx +26 -0
  431. package/table/src/components/TableMain.tsx +322 -0
  432. package/table/src/components/TableRow.tsx +11 -0
  433. package/table/src/components/TableTitle.tsx +28 -0
  434. package/table/src/contexts/TableActionsContext.ts +23 -0
  435. package/table/src/contexts/TableDragContext.tsx +58 -0
  436. package/table/src/contexts/TableHeaderContext.ts +6 -0
  437. package/table/src/contexts/TableMetadataContext.ts +21 -0
  438. package/table/src/contexts/TableScrollContext.ts +8 -0
  439. package/table/src/contexts/TableStateContext.ts +9 -0
  440. package/table/src/createReactTable.ts +371 -0
  441. package/table/src/defaultRenderTableElements.tsx +19 -0
  442. package/table/src/hooks/useColumnResize.ts +242 -0
  443. package/table/src/hooks/useTableActions.ts +1394 -0
  444. package/table/src/hooks/useTableActionsContext.ts +12 -0
  445. package/table/src/hooks/useTableCell.ts +223 -0
  446. package/table/src/hooks/useTableCellToolbarActions.tsx +694 -0
  447. package/table/src/hooks/useTableMetadata.ts +12 -0
  448. package/table/src/hooks/useTableStateContext.ts +12 -0
  449. package/table/src/hooks/useTableStates.ts +14 -0
  450. package/table/src/typings.ts +107 -0
  451. package/table/src/utils/helper.ts +1106 -0
  452. package/table/toolbar/package.json +6 -3
  453. package/table/toolbar/src/TableToolbarIcon.tsx +17 -0
  454. package/table/toolbar/src/useTableTool.ts +14 -0
  455. package/table/toolbar/tsconfig.build.json +5 -0
  456. package/table/tsconfig.build.json +5 -0
  457. package/toggle-mark/jsx-serializer/package.json +6 -3
  458. package/toggle-mark/jsx-serializer/src/createJsxSerializeToggleMarkCreator.ts +12 -0
  459. package/toggle-mark/jsx-serializer/src/index.ts +6 -0
  460. package/toggle-mark/jsx-serializer/src/typings.ts +3 -0
  461. package/toggle-mark/jsx-serializer/tsconfig.build.json +5 -0
  462. package/toggle-mark/package.json +5 -3
  463. package/toggle-mark/src/createReactToggleMarkCreator.ts +33 -0
  464. package/toggle-mark/src/index.ts +6 -0
  465. package/toggle-mark/src/typings.ts +24 -0
  466. package/toggle-mark/toolbar/package.json +6 -3
  467. package/toggle-mark/toolbar/src/ToggleMarkToolbarIcon.tsx +17 -0
  468. package/toggle-mark/toolbar/src/useToggleMarkTool.ts +11 -0
  469. package/toggle-mark/toolbar/tsconfig.build.json +5 -0
  470. package/toggle-mark/tsconfig.build.json +5 -0
  471. package/toolbar/package.json +9 -3
  472. package/toolbar/src/components/InlineToolbar.tsx +81 -0
  473. package/toolbar/src/components/Toolbar.tsx +243 -0
  474. package/toolbar/src/components/ToolbarGroupIcon.tsx +131 -0
  475. package/toolbar/src/components/ToolbarIcon.tsx +84 -0
  476. package/toolbar/src/components/ToolbarInput.tsx +66 -0
  477. package/toolbar/src/components/toolbarIconName.ts +125 -0
  478. package/toolbar/src/constants.tsx +6 -0
  479. package/toolbar/src/contexts/StartToolInputContext.ts +4 -0
  480. package/toolbar/src/contexts/toolbar.ts +14 -0
  481. package/toolbar/src/contexts/toolbarMenu.ts +15 -0
  482. package/toolbar/src/hooks/useAutoGroupIcons.tsx +98 -0
  483. package/toolbar/src/hooks/useStartToolInput.ts +6 -0
  484. package/toolbar/src/index.ts +7 -0
  485. package/toolbar/src/typings.ts +8 -0
  486. package/toolbar/tsconfig.build.json +5 -0
  487. package/tsconfig.build.json +8 -0
  488. package/underline/jsx-serializer/package.json +6 -3
  489. package/underline/jsx-serializer/src/createJsxSerializeUnderline.ts +8 -0
  490. package/underline/jsx-serializer/tsconfig.build.json +5 -0
  491. package/underline/package.json +5 -3
  492. package/underline/src/constants.ts +6 -0
  493. package/underline/src/createReactUnderline.ts +11 -0
  494. package/underline/src/defaultRenderUnderline.tsx +12 -0
  495. package/underline/src/typings.ts +6 -0
  496. package/underline/tsconfig.build.json +5 -0
  497. package/utils/package.json +1 -4
  498. package/utils/src/composeRefs.ts +34 -0
  499. package/utils/src/removePreviousElement.ts +62 -0
  500. package/utils/src/upload.ts +83 -0
  501. package/utils/src/useClickAway.ts +34 -0
  502. package/utils/src/useDocumentEvents.ts +35 -0
  503. package/utils/src/useIsomorphicLayoutEffect.ts +8 -0
  504. package/utils/src/usePreviousValue.ts +11 -0
  505. package/utils/tsconfig.build.json +5 -0
  506. package/LICENSE +0 -21
  507. package/_internal/index.cjs.js +0 -59
  508. package/_internal/index.js +0 -5
  509. package/_internal/renderer/composeRenderElementsBase.d.ts +0 -3
  510. package/_internal/renderer/composeRenderElementsBase.js +0 -13
  511. package/_internal/renderer/composeRenderLeafsBase.d.ts +0 -3
  512. package/_internal/renderer/composeRenderLeafsBase.js +0 -11
  513. package/_internal/renderer/createRenderElementBase.d.ts +0 -3
  514. package/_internal/renderer/createRenderElementBase.js +0 -9
  515. package/_internal/renderer/createRenderElementsBase.d.ts +0 -3
  516. package/_internal/renderer/createRenderElementsBase.js +0 -11
  517. package/_internal/renderer/createRenderMarkBase.d.ts +0 -3
  518. package/_internal/renderer/createRenderMarkBase.js +0 -13
  519. package/_internal/renderer/typings.d.ts +0 -19
  520. package/accordion/accordion.css +0 -1
  521. package/accordion/components/Accordion.d.ts +0 -9
  522. package/accordion/components/Accordion.js +0 -22
  523. package/accordion/components/AccordionContent.d.ts +0 -8
  524. package/accordion/components/AccordionContent.js +0 -24
  525. package/accordion/components/AccordionTitle.d.ts +0 -8
  526. package/accordion/components/AccordionTitle.js +0 -20
  527. package/accordion/contexts/AccordionContext.d.ts +0 -2
  528. package/accordion/contexts/AccordionContext.js +0 -5
  529. package/accordion/createReactAccordion.d.ts +0 -4
  530. package/accordion/createReactAccordion.js +0 -144
  531. package/accordion/defaultRenderAccordionElements.d.ts +0 -2
  532. package/accordion/defaultRenderAccordionElements.js +0 -12
  533. package/accordion/hooks/useAccordion.d.ts +0 -1
  534. package/accordion/hooks/useAccordion.js +0 -8
  535. package/accordion/index.cjs.js +0 -212
  536. package/accordion/index.js +0 -10
  537. package/accordion/jsx-serializer/createJsxSerializeAccordion.d.ts +0 -5
  538. package/accordion/jsx-serializer/createJsxSerializeAccordion.js +0 -48
  539. package/accordion/jsx-serializer/defaultRenderAccordionElements.d.ts +0 -2
  540. package/accordion/jsx-serializer/defaultRenderAccordionElements.js +0 -16
  541. package/accordion/jsx-serializer/index.cjs.js +0 -64
  542. package/accordion/jsx-serializer/index.js +0 -2
  543. package/accordion/jsx-serializer/typings.d.ts +0 -4
  544. package/accordion/toolbar/AccordionToolbarIcon.d.ts +0 -8
  545. package/accordion/toolbar/AccordionToolbarIcon.js +0 -12
  546. package/accordion/toolbar/index.cjs.js +0 -22
  547. package/accordion/toolbar/index.d.ts +0 -2
  548. package/accordion/toolbar/index.js +0 -2
  549. package/accordion/toolbar/useAccordionTool.d.ts +0 -4
  550. package/accordion/toolbar/useAccordionTool.js +0 -10
  551. package/accordion/typings.d.ts +0 -25
  552. package/align/constants.d.ts +0 -8
  553. package/align/constants.js +0 -10
  554. package/align/createReactAlign.d.ts +0 -2
  555. package/align/createReactAlign.js +0 -26
  556. package/align/index.cjs.js +0 -39
  557. package/align/index.js +0 -2
  558. package/align/toolbar/AlignToolbarIcon.d.ts +0 -10
  559. package/align/toolbar/AlignToolbarIcon.js +0 -12
  560. package/align/toolbar/index.cjs.js +0 -30
  561. package/align/toolbar/index.d.ts +0 -2
  562. package/align/toolbar/index.js +0 -2
  563. package/align/toolbar/useAlignTool.d.ts +0 -6
  564. package/align/toolbar/useAlignTool.js +0 -18
  565. package/align/typings.d.ts +0 -17
  566. package/blockquote/blockquote.css +0 -1
  567. package/blockquote/constants.d.ts +0 -6
  568. package/blockquote/constants.js +0 -8
  569. package/blockquote/createReactBlockquote.d.ts +0 -5
  570. package/blockquote/createReactBlockquote.js +0 -84
  571. package/blockquote/defaultRenderBlockquoteElement.d.ts +0 -6
  572. package/blockquote/defaultRenderBlockquoteElement.js +0 -7
  573. package/blockquote/index.cjs.js +0 -98
  574. package/blockquote/index.js +0 -3
  575. package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +0 -4
  576. package/blockquote/jsx-serializer/createJsxSerializeBlockquote.js +0 -10
  577. package/blockquote/jsx-serializer/index.cjs.js +0 -13
  578. package/blockquote/jsx-serializer/index.js +0 -2
  579. package/blockquote/jsx-serializer/typings.d.ts +0 -3
  580. package/blockquote/toolbar/BlockquoteToolbarIcon.d.ts +0 -8
  581. package/blockquote/toolbar/BlockquoteToolbarIcon.js +0 -12
  582. package/blockquote/toolbar/index.cjs.js +0 -23
  583. package/blockquote/toolbar/index.js +0 -2
  584. package/blockquote/toolbar/useBlockquoteTool.d.ts +0 -5
  585. package/blockquote/toolbar/useBlockquoteTool.js +0 -11
  586. package/blockquote/typings.d.ts +0 -16
  587. package/bold/constants.d.ts +0 -6
  588. package/bold/constants.js +0 -8
  589. package/bold/createReactBold.d.ts +0 -1
  590. package/bold/createReactBold.js +0 -11
  591. package/bold/defaultRenderBold.d.ts +0 -3
  592. package/bold/defaultRenderBold.js +0 -7
  593. package/bold/index.cjs.js +0 -24
  594. package/bold/index.js +0 -3
  595. package/bold/jsx-serializer/createJsxSerializeBold.d.ts +0 -1
  596. package/bold/jsx-serializer/createJsxSerializeBold.js +0 -10
  597. package/bold/jsx-serializer/index.cjs.js +0 -13
  598. package/bold/jsx-serializer/index.js +0 -2
  599. package/bold/typings.d.ts +0 -5
  600. package/card/card.css +0 -1
  601. package/card/components/Card.d.ts +0 -15
  602. package/card/components/Card.js +0 -109
  603. package/card/components/CardContents.d.ts +0 -9
  604. package/card/components/CardContents.js +0 -18
  605. package/card/components/CardImage.d.ts +0 -9
  606. package/card/components/CardImage.js +0 -13
  607. package/card/components/CardPlaceholder.d.ts +0 -4
  608. package/card/components/CardPlaceholder.js +0 -21
  609. package/card/createReactCard.d.ts +0 -4
  610. package/card/createReactCard.js +0 -82
  611. package/card/defaultRenderCardElements.d.ts +0 -3
  612. package/card/defaultRenderCardElements.js +0 -14
  613. package/card/index.cjs.js +0 -242
  614. package/card/index.js +0 -6
  615. package/card/jsx-serializer/createJsxSerializeCard.d.ts +0 -5
  616. package/card/jsx-serializer/createJsxSerializeCard.js +0 -48
  617. package/card/jsx-serializer/defaultRenderCardElements.d.ts +0 -2
  618. package/card/jsx-serializer/defaultRenderCardElements.js +0 -10
  619. package/card/jsx-serializer/index.cjs.js +0 -58
  620. package/card/jsx-serializer/index.js +0 -2
  621. package/card/jsx-serializer/typings.d.ts +0 -9
  622. package/card/toolbar/CardToolbarIcon.d.ts +0 -8
  623. package/card/toolbar/CardToolbarIcon.js +0 -12
  624. package/card/toolbar/index.cjs.js +0 -52
  625. package/card/toolbar/index.js +0 -2
  626. package/card/toolbar/useCardTool.d.ts +0 -4
  627. package/card/toolbar/useCardTool.js +0 -41
  628. package/card/typings.d.ts +0 -24
  629. package/carousel/carousel.css +0 -1
  630. package/carousel/components/Carousel.d.ts +0 -15
  631. package/carousel/components/Carousel.js +0 -66
  632. package/carousel/components/CarouselCaption.d.ts +0 -9
  633. package/carousel/components/CarouselCaption.js +0 -12
  634. package/carousel/components/CarouselImages.d.ts +0 -9
  635. package/carousel/components/CarouselImages.js +0 -52
  636. package/carousel/components/CarouselPlaceholder.d.ts +0 -4
  637. package/carousel/components/CarouselPlaceholder.js +0 -17
  638. package/carousel/contexts/CarouselContext.d.ts +0 -2
  639. package/carousel/contexts/CarouselContext.js +0 -5
  640. package/carousel/createReactCarousel.d.ts +0 -4
  641. package/carousel/createReactCarousel.js +0 -82
  642. package/carousel/defaultRenderCarouselElements.d.ts +0 -3
  643. package/carousel/defaultRenderCarouselElements.js +0 -14
  644. package/carousel/hooks/useCarousel.d.ts +0 -1
  645. package/carousel/hooks/useCarousel.js +0 -8
  646. package/carousel/index.cjs.js +0 -236
  647. package/carousel/index.js +0 -8
  648. package/carousel/jsx-serializer/createJsxSerializeCarousel.d.ts +0 -5
  649. package/carousel/jsx-serializer/createJsxSerializeCarousel.js +0 -48
  650. package/carousel/jsx-serializer/defaultRenderCarouselElements.d.ts +0 -2
  651. package/carousel/jsx-serializer/defaultRenderCarouselElements.js +0 -10
  652. package/carousel/jsx-serializer/index.cjs.js +0 -58
  653. package/carousel/jsx-serializer/index.js +0 -2
  654. package/carousel/jsx-serializer/typings.d.ts +0 -9
  655. package/carousel/toolbar/CarouselToolbarIcon.d.ts +0 -8
  656. package/carousel/toolbar/CarouselToolbarIcon.js +0 -12
  657. package/carousel/toolbar/index.cjs.js +0 -43
  658. package/carousel/toolbar/index.js +0 -2
  659. package/carousel/toolbar/useCarouselTool.d.ts +0 -4
  660. package/carousel/toolbar/useCarouselTool.js +0 -32
  661. package/carousel/typings.d.ts +0 -27
  662. package/components/BaseField/index.d.ts +0 -11
  663. package/components/BaseField/index.js +0 -17
  664. package/components/Button/index.d.ts +0 -14
  665. package/components/Button/index.js +0 -12
  666. package/components/Hint/index.d.ts +0 -15
  667. package/components/Hint/index.js +0 -30
  668. package/components/Icon/index.d.ts +0 -15
  669. package/components/Icon/index.js +0 -21
  670. package/components/ImageUploader/index.d.ts +0 -25
  671. package/components/ImageUploader/index.js +0 -174
  672. package/components/Input/index.d.ts +0 -14
  673. package/components/Input/index.js +0 -24
  674. package/components/Message/index.d.ts +0 -18
  675. package/components/Message/index.js +0 -72
  676. package/components/Modal/index.d.ts +0 -28
  677. package/components/Modal/index.js +0 -61
  678. package/components/Notifier/NotifierManager.d.ts +0 -17
  679. package/components/Notifier/NotifierManager.js +0 -24
  680. package/components/Notifier/createNotifier.d.ts +0 -21
  681. package/components/Notifier/createNotifier.js +0 -60
  682. package/components/Notifier/typings.d.ts +0 -28
  683. package/components/Portal/index.d.ts +0 -7
  684. package/components/Portal/index.js +0 -8
  685. package/components/Progress/index.d.ts +0 -7
  686. package/components/Progress/index.js +0 -20
  687. package/components/SegmentedControl/index.d.ts +0 -13
  688. package/components/SegmentedControl/index.js +0 -14
  689. package/components/Textarea/index.d.ts +0 -15
  690. package/components/Textarea/index.js +0 -24
  691. package/components/Toggle/index.d.ts +0 -8
  692. package/components/Toggle/index.js +0 -15
  693. package/components/Tooltip/calculatePosition.d.ts +0 -5
  694. package/components/Tooltip/calculatePosition.js +0 -69
  695. package/components/Tooltip/index.d.ts +0 -10
  696. package/components/Tooltip/index.js +0 -124
  697. package/components/Tooltip/typings.d.ts +0 -29
  698. package/components/Transition/SlideFade.d.ts +0 -20
  699. package/components/Transition/SlideFade.js +0 -91
  700. package/components/Transition/Transition.d.ts +0 -98
  701. package/components/Transition/Transition.js +0 -27
  702. package/components/Transition/getTransitionStyleProps.d.ts +0 -16
  703. package/components/Transition/getTransitionStyleProps.js +0 -25
  704. package/components/Transition/useSetNodeTransition.d.ts +0 -7
  705. package/components/Transition/useSetNodeTransition.js +0 -35
  706. package/components/baseField.css +0 -1
  707. package/components/button.css +0 -1
  708. package/components/components.css +0 -1
  709. package/components/hint.css +0 -1
  710. package/components/imageUploader.css +0 -1
  711. package/components/index.cjs.js +0 -867
  712. package/components/index.d.ts +0 -16
  713. package/components/index.js +0 -15
  714. package/components/input.css +0 -1
  715. package/components/message.css +0 -1
  716. package/components/modal.css +0 -1
  717. package/components/progress.css +0 -1
  718. package/components/segmentedControl.css +0 -1
  719. package/components/textarea.css +0 -1
  720. package/components/toggle.css +0 -1
  721. package/components/tooltip.css +0 -1
  722. package/configs/ConfigsProvider.d.ts +0 -18
  723. package/configs/ConfigsProvider.js +0 -15
  724. package/configs/index.cjs.js +0 -58
  725. package/configs/index.js +0 -3
  726. package/configs/locale.d.ts +0 -3
  727. package/configs/locale.js +0 -9
  728. package/configs/theme.d.ts +0 -18
  729. package/configs/theme.js +0 -34
  730. package/core/components/DefaultElement.d.ts +0 -4
  731. package/core/components/DefaultElement.js +0 -5
  732. package/core/components/DefaultLeaf.d.ts +0 -4
  733. package/core/components/DefaultLeaf.js +0 -5
  734. package/core/components/Editable.d.ts +0 -9
  735. package/core/components/Editable.js +0 -71
  736. package/core/components/Quadrats.d.ts +0 -16
  737. package/core/components/Quadrats.js +0 -21
  738. package/core/composeHandlers.d.ts +0 -8
  739. package/core/composeHandlers.js +0 -33
  740. package/core/composeRenderElements.d.ts +0 -6
  741. package/core/composeRenderElements.js +0 -12
  742. package/core/composeRenderLeafs.d.ts +0 -6
  743. package/core/composeRenderLeafs.js +0 -12
  744. package/core/constants.d.ts +0 -1
  745. package/core/constants.js +0 -3
  746. package/core/contexts/composition/CompositionProvider.d.ts +0 -8
  747. package/core/contexts/composition/CompositionProvider.js +0 -8
  748. package/core/contexts/composition/composition.d.ts +0 -7
  749. package/core/contexts/composition/composition.js +0 -11
  750. package/core/contexts/message/MessageProvider.d.ts +0 -5
  751. package/core/contexts/message/MessageProvider.js +0 -35
  752. package/core/contexts/message/message.d.ts +0 -10
  753. package/core/contexts/message/message.js +0 -10
  754. package/core/contexts/modal/CardModal/CardModal.d.ts +0 -28
  755. package/core/contexts/modal/CardModal/CardModal.js +0 -111
  756. package/core/contexts/modal/CarouselModal/CarouselItem.d.ts +0 -15
  757. package/core/contexts/modal/CarouselModal/CarouselItem.js +0 -46
  758. package/core/contexts/modal/CarouselModal/CarouselModal.d.ts +0 -11
  759. package/core/contexts/modal/CarouselModal/CarouselModal.js +0 -169
  760. package/core/contexts/modal/CarouselModal/FilesDropZone.d.ts +0 -13
  761. package/core/contexts/modal/CarouselModal/FilesDropZone.js +0 -64
  762. package/core/contexts/modal/ConfirmModal/ConfirmModal.d.ts +0 -14
  763. package/core/contexts/modal/ConfirmModal/ConfirmModal.js +0 -24
  764. package/core/contexts/modal/EmbedModal/EmbedModal.d.ts +0 -11
  765. package/core/contexts/modal/EmbedModal/EmbedModal.js +0 -27
  766. package/core/contexts/modal/ModalProvider.d.ts +0 -8
  767. package/core/contexts/modal/ModalProvider.js +0 -66
  768. package/core/contexts/modal/modal.d.ts +0 -24
  769. package/core/contexts/modal/modal.js +0 -15
  770. package/core/createReactEditor.d.ts +0 -2
  771. package/core/createReactEditor.js +0 -8
  772. package/core/createRenderElement.d.ts +0 -2
  773. package/core/createRenderElement.js +0 -7
  774. package/core/createRenderElements.d.ts +0 -2
  775. package/core/createRenderElements.js +0 -7
  776. package/core/createRenderMark.d.ts +0 -2
  777. package/core/createRenderMark.js +0 -7
  778. package/core/index.d.ts +0 -37
  779. package/core/typings/descendant.d.ts +0 -2
  780. package/core/typings/handler.d.ts +0 -15
  781. package/core/typings/renderer.d.ts +0 -15
  782. package/core/typings/with.d.ts +0 -4
  783. package/divider/createReactDivider.d.ts +0 -4
  784. package/divider/createReactDivider.js +0 -11
  785. package/divider/defaultRenderDividerElement.d.ts +0 -3
  786. package/divider/defaultRenderDividerElement.js +0 -6
  787. package/divider/divider.css +0 -1
  788. package/divider/index.cjs.js +0 -17
  789. package/divider/index.js +0 -2
  790. package/divider/jsx-serializer/createJsxSerializeDivider.d.ts +0 -4
  791. package/divider/jsx-serializer/createJsxSerializeDivider.js +0 -10
  792. package/divider/jsx-serializer/defaultRenderDividerElement.d.ts +0 -2
  793. package/divider/jsx-serializer/defaultRenderDividerElement.js +0 -6
  794. package/divider/jsx-serializer/index.cjs.js +0 -16
  795. package/divider/jsx-serializer/index.js +0 -2
  796. package/divider/jsx-serializer/typings.d.ts +0 -3
  797. package/divider/toolbar/DividerToolbarIcon.d.ts +0 -8
  798. package/divider/toolbar/DividerToolbarIcon.js +0 -12
  799. package/divider/toolbar/index.cjs.js +0 -22
  800. package/divider/toolbar/index.d.ts +0 -2
  801. package/divider/toolbar/index.js +0 -2
  802. package/divider/toolbar/useDividerTool.d.ts +0 -4
  803. package/divider/toolbar/useDividerTool.js +0 -10
  804. package/divider/typings.d.ts +0 -10
  805. package/editable.css +0 -1
  806. package/embed/components/VideoIframe.d.ts +0 -12
  807. package/embed/components/VideoIframe.js +0 -16
  808. package/embed/createReactEmbed.d.ts +0 -4
  809. package/embed/createReactEmbed.js +0 -17
  810. package/embed/createRenderEmbedElementBase.d.ts +0 -10
  811. package/embed/createRenderEmbedElementBase.js +0 -16
  812. package/embed/embed.css +0 -1
  813. package/embed/hooks/useVideoIframeSize.d.ts +0 -7
  814. package/embed/hooks/useVideoIframeSize.js +0 -24
  815. package/embed/index.cjs.js +0 -68
  816. package/embed/index.js +0 -4
  817. package/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +0 -9
  818. package/embed/jsx-serializer/createJsxSerializeEmbed.js +0 -13
  819. package/embed/jsx-serializer/facebook/index.cjs.js +0 -16
  820. package/embed/jsx-serializer/facebook/index.js +0 -1
  821. package/embed/jsx-serializer/index.cjs.js +0 -15
  822. package/embed/jsx-serializer/index.js +0 -1
  823. package/embed/jsx-serializer/instagram/index.cjs.js +0 -16
  824. package/embed/jsx-serializer/instagram/index.js +0 -1
  825. package/embed/jsx-serializer/twitter/index.cjs.js +0 -16
  826. package/embed/jsx-serializer/twitter/index.js +0 -1
  827. package/embed/jsx-serializer/typings.d.ts +0 -5
  828. package/embed/jsx-serializer/vimeo/index.cjs.js +0 -16
  829. package/embed/jsx-serializer/vimeo/index.js +0 -1
  830. package/embed/jsx-serializer/youtube/index.cjs.js +0 -7
  831. package/embed/jsx-serializer/youtube/index.js +0 -1
  832. package/embed/renderers/base/components/BaseEmbedElement.d.ts +0 -21
  833. package/embed/renderers/base/components/BaseEmbedElement.js +0 -70
  834. package/embed/renderers/base/index.cjs.js +0 -73
  835. package/embed/renderers/base/index.d.ts +0 -1
  836. package/embed/renderers/base/index.js +0 -1
  837. package/embed/renderers/facebook/components/Facebook.d.ts +0 -12
  838. package/embed/renderers/facebook/components/Facebook.js +0 -23
  839. package/embed/renderers/facebook/defaultRenderFacebookEmbedElement.d.ts +0 -5
  840. package/embed/renderers/facebook/defaultRenderFacebookEmbedElement.js +0 -46
  841. package/embed/renderers/facebook/index.cjs.js +0 -70
  842. package/embed/renderers/facebook/index.js +0 -2
  843. package/embed/renderers/instagram/components/Instagram.d.ts +0 -12
  844. package/embed/renderers/instagram/components/Instagram.js +0 -53
  845. package/embed/renderers/instagram/defaultRenderInstagramEmbedElement.d.ts +0 -5
  846. package/embed/renderers/instagram/defaultRenderInstagramEmbedElement.js +0 -46
  847. package/embed/renderers/instagram/hooks/useLoadInstagramEmbedApi.d.ts +0 -1
  848. package/embed/renderers/instagram/hooks/useLoadInstagramEmbedApi.js +0 -27
  849. package/embed/renderers/instagram/index.cjs.js +0 -124
  850. package/embed/renderers/instagram/index.js +0 -3
  851. package/embed/renderers/podcast-apple/components/PodcastApple.d.ts +0 -11
  852. package/embed/renderers/podcast-apple/components/PodcastApple.js +0 -13
  853. package/embed/renderers/podcast-apple/defaultRenderPodcastAppleEmbedElement.d.ts +0 -5
  854. package/embed/renderers/podcast-apple/defaultRenderPodcastAppleEmbedElement.js +0 -39
  855. package/embed/renderers/podcast-apple/index.cjs.js +0 -53
  856. package/embed/renderers/podcast-apple/index.js +0 -2
  857. package/embed/renderers/spotify/components/Spotify.d.ts +0 -12
  858. package/embed/renderers/spotify/components/Spotify.js +0 -18
  859. package/embed/renderers/spotify/defaultRenderSpotifyEmbedElement.d.ts +0 -5
  860. package/embed/renderers/spotify/defaultRenderSpotifyEmbedElement.js +0 -36
  861. package/embed/renderers/spotify/index.cjs.js +0 -55
  862. package/embed/renderers/spotify/index.js +0 -2
  863. package/embed/renderers/twitter/components/Twitter.d.ts +0 -12
  864. package/embed/renderers/twitter/components/Twitter.js +0 -24
  865. package/embed/renderers/twitter/defaultRenderTwitterEmbedElement.d.ts +0 -5
  866. package/embed/renderers/twitter/defaultRenderTwitterEmbedElement.js +0 -46
  867. package/embed/renderers/twitter/hooks/useLoadTwitterEmbedApi.d.ts +0 -2
  868. package/embed/renderers/twitter/hooks/useLoadTwitterEmbedApi.js +0 -33
  869. package/embed/renderers/twitter/index.cjs.js +0 -101
  870. package/embed/renderers/twitter/index.js +0 -3
  871. package/embed/renderers/vimeo/defaultRenderVimeoEmbedElement.d.ts +0 -6
  872. package/embed/renderers/vimeo/defaultRenderVimeoEmbedElement.js +0 -30
  873. package/embed/renderers/vimeo/index.cjs.js +0 -34
  874. package/embed/renderers/vimeo/index.js +0 -1
  875. package/embed/renderers/youtube/defaultRenderYoutubeEmbedElement.d.ts +0 -6
  876. package/embed/renderers/youtube/defaultRenderYoutubeEmbedElement.js +0 -30
  877. package/embed/renderers/youtube/index.cjs.js +0 -34
  878. package/embed/renderers/youtube/index.js +0 -1
  879. package/embed/toolbar/EmbedToolbarIcon.d.ts +0 -12
  880. package/embed/toolbar/EmbedToolbarIcon.js +0 -12
  881. package/embed/toolbar/index.cjs.js +0 -98
  882. package/embed/toolbar/index.d.ts +0 -2
  883. package/embed/toolbar/index.js +0 -2
  884. package/embed/toolbar/useEmbedTool.d.ts +0 -4
  885. package/embed/toolbar/useEmbedTool.js +0 -87
  886. package/embed/typings.d.ts +0 -15
  887. package/file-uploader/components/FileUploader.d.ts +0 -4
  888. package/file-uploader/components/FileUploader.js +0 -13
  889. package/file-uploader/createReactFileUploader.d.ts +0 -5
  890. package/file-uploader/createReactFileUploader.js +0 -17
  891. package/file-uploader/defaultRenderFileUploaderElement.d.ts +0 -2
  892. package/file-uploader/defaultRenderFileUploaderElement.js +0 -6
  893. package/file-uploader/file-uploader.css +0 -1
  894. package/file-uploader/hooks/useFileUploader.d.ts +0 -4
  895. package/file-uploader/hooks/useFileUploader.js +0 -13
  896. package/file-uploader/index.cjs.js +0 -42
  897. package/file-uploader/index.js +0 -4
  898. package/file-uploader/toolbar/FileUploaderToolbarIcon.d.ts +0 -10
  899. package/file-uploader/toolbar/FileUploaderToolbarIcon.js +0 -12
  900. package/file-uploader/toolbar/index.cjs.js +0 -25
  901. package/file-uploader/toolbar/index.d.ts +0 -2
  902. package/file-uploader/toolbar/index.js +0 -2
  903. package/file-uploader/toolbar/useFileUploaderTool.d.ts +0 -5
  904. package/file-uploader/toolbar/useFileUploaderTool.js +0 -13
  905. package/file-uploader/typings.d.ts +0 -14
  906. package/footnote/createReactFootnote.d.ts +0 -4
  907. package/footnote/createReactFootnote.js +0 -13
  908. package/footnote/defaultRenderFootnoteElement.d.ts +0 -9
  909. package/footnote/defaultRenderFootnoteElement.js +0 -15
  910. package/footnote/index.cjs.js +0 -71
  911. package/footnote/index.js +0 -4
  912. package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +0 -4
  913. package/footnote/jsx-serializer/createJsxSerializeFootnote.js +0 -11
  914. package/footnote/jsx-serializer/defaultRenderFootnoteElement.d.ts +0 -5
  915. package/footnote/jsx-serializer/defaultRenderFootnoteElement.js +0 -12
  916. package/footnote/jsx-serializer/index.cjs.js +0 -23
  917. package/footnote/jsx-serializer/index.js +0 -2
  918. package/footnote/jsx-serializer/typings.d.ts +0 -3
  919. package/footnote/toolbar/FootnoteToolbarIcon.d.ts +0 -10
  920. package/footnote/toolbar/FootnoteToolbarIcon.js +0 -12
  921. package/footnote/toolbar/index.cjs.js +0 -30
  922. package/footnote/toolbar/index.d.ts +0 -2
  923. package/footnote/toolbar/index.js +0 -2
  924. package/footnote/toolbar/useFootnoteTool.d.ts +0 -7
  925. package/footnote/toolbar/useFootnoteTool.js +0 -19
  926. package/footnote/typings.d.ts +0 -9
  927. package/footnote/useFootnotes.d.ts +0 -4
  928. package/footnote/useFootnotes.js +0 -21
  929. package/footnote/useFootnotesFromNodes.d.ts +0 -4
  930. package/footnote/useFootnotesFromNodes.js +0 -27
  931. package/heading/constants.d.ts +0 -9
  932. package/heading/constants.js +0 -11
  933. package/heading/createReactHeading.d.ts +0 -4
  934. package/heading/createReactHeading.js +0 -47
  935. package/heading/defaultRenderHeadingElement.d.ts +0 -16
  936. package/heading/defaultRenderHeadingElement.js +0 -20
  937. package/heading/heading.css +0 -1
  938. package/heading/index.cjs.js +0 -77
  939. package/heading/index.js +0 -3
  940. package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +0 -4
  941. package/heading/jsx-serializer/createJsxSerializeHeading.js +0 -10
  942. package/heading/jsx-serializer/index.cjs.js +0 -13
  943. package/heading/jsx-serializer/index.js +0 -2
  944. package/heading/jsx-serializer/typings.d.ts +0 -3
  945. package/heading/toolbar/HeadingToolbarIcon.d.ts +0 -10
  946. package/heading/toolbar/HeadingToolbarIcon.js +0 -12
  947. package/heading/toolbar/index.cjs.js +0 -23
  948. package/heading/toolbar/index.d.ts +0 -2
  949. package/heading/toolbar/index.js +0 -2
  950. package/heading/toolbar/useToggleHeadingTool.d.ts +0 -6
  951. package/heading/toolbar/useToggleHeadingTool.js +0 -11
  952. package/heading/typings.d.ts +0 -15
  953. package/highlight/constants.d.ts +0 -6
  954. package/highlight/constants.js +0 -8
  955. package/highlight/createReactHighlight.d.ts +0 -1
  956. package/highlight/createReactHighlight.js +0 -11
  957. package/highlight/defaultRenderHighlight.d.ts +0 -3
  958. package/highlight/defaultRenderHighlight.js +0 -7
  959. package/highlight/index.cjs.js +0 -24
  960. package/highlight/index.js +0 -3
  961. package/highlight/jsx-serializer/createJsxSerializeHighlight.d.ts +0 -1
  962. package/highlight/jsx-serializer/createJsxSerializeHighlight.js +0 -10
  963. package/highlight/jsx-serializer/index.cjs.js +0 -13
  964. package/highlight/jsx-serializer/index.js +0 -2
  965. package/highlight/typings.d.ts +0 -5
  966. package/image/components/Image.d.ts +0 -4
  967. package/image/components/Image.js +0 -68
  968. package/image/components/ImageCaption.d.ts +0 -4
  969. package/image/components/ImageCaption.js +0 -23
  970. package/image/components/ImageFigure.d.ts +0 -4
  971. package/image/components/ImageFigure.js +0 -15
  972. package/image/components/ImagePlaceholder.d.ts +0 -4
  973. package/image/components/ImagePlaceholder.js +0 -11
  974. package/image/createReactImage.d.ts +0 -8
  975. package/image/createReactImage.js +0 -121
  976. package/image/defaultRenderImageElements.d.ts +0 -2
  977. package/image/defaultRenderImageElements.js +0 -12
  978. package/image/hooks/useImageResizer.d.ts +0 -7
  979. package/image/hooks/useImageResizer.js +0 -95
  980. package/image/image.css +0 -1
  981. package/image/index.cjs.js +0 -324
  982. package/image/index.js +0 -7
  983. package/image/jsx-serializer/createJsxSerializeImage.d.ts +0 -7
  984. package/image/jsx-serializer/createJsxSerializeImage.js +0 -42
  985. package/image/jsx-serializer/defaultRenderImageElements.d.ts +0 -2
  986. package/image/jsx-serializer/defaultRenderImageElements.js +0 -10
  987. package/image/jsx-serializer/index.cjs.js +0 -52
  988. package/image/jsx-serializer/index.js +0 -2
  989. package/image/jsx-serializer/typings.d.ts +0 -18
  990. package/image/typings.d.ts +0 -22
  991. package/index.cjs.js +0 -709
  992. package/index.js +0 -21
  993. package/input-block/components/InputBlock.d.ts +0 -4
  994. package/input-block/components/InputBlock.js +0 -35
  995. package/input-block/createReactInputBlock.d.ts +0 -4
  996. package/input-block/createReactInputBlock.js +0 -17
  997. package/input-block/defaultRenderInputBlockElement.d.ts +0 -2
  998. package/input-block/defaultRenderInputBlockElement.js +0 -6
  999. package/input-block/hooks/useInputBlock.d.ts +0 -10
  1000. package/input-block/hooks/useInputBlock.js +0 -57
  1001. package/input-block/index.cjs.js +0 -108
  1002. package/input-block/index.js +0 -4
  1003. package/input-block/input-block.css +0 -1
  1004. package/input-block/typings.d.ts +0 -12
  1005. package/italic/constants.d.ts +0 -6
  1006. package/italic/constants.js +0 -8
  1007. package/italic/createReactItalic.d.ts +0 -1
  1008. package/italic/createReactItalic.js +0 -11
  1009. package/italic/defaultRenderItalic.d.ts +0 -3
  1010. package/italic/defaultRenderItalic.js +0 -7
  1011. package/italic/index.cjs.js +0 -24
  1012. package/italic/index.js +0 -3
  1013. package/italic/jsx-serializer/createJsxSerializeItalic.d.ts +0 -1
  1014. package/italic/jsx-serializer/createJsxSerializeItalic.js +0 -10
  1015. package/italic/jsx-serializer/index.cjs.js +0 -13
  1016. package/italic/jsx-serializer/index.js +0 -2
  1017. package/italic/typings.d.ts +0 -5
  1018. package/jsx-serializer/createJsxSerializeElement.d.ts +0 -2
  1019. package/jsx-serializer/createJsxSerializeElement.js +0 -7
  1020. package/jsx-serializer/createJsxSerializeElements.d.ts +0 -2
  1021. package/jsx-serializer/createJsxSerializeElements.js +0 -7
  1022. package/jsx-serializer/createJsxSerializeMark.d.ts +0 -2
  1023. package/jsx-serializer/createJsxSerializeMark.js +0 -7
  1024. package/jsx-serializer/createJsxSerializer.d.ts +0 -18
  1025. package/jsx-serializer/createJsxSerializer.js +0 -49
  1026. package/jsx-serializer/index.cjs.js +0 -66
  1027. package/jsx-serializer/index.js +0 -4
  1028. package/jsx-serializer/typings.d.ts +0 -8
  1029. package/line-break/commonBreak.d.ts +0 -14
  1030. package/line-break/commonBreak.js +0 -31
  1031. package/line-break/createOnKeyDownBreak.d.ts +0 -11
  1032. package/line-break/createOnKeyDownBreak.js +0 -48
  1033. package/line-break/createReactLineBreak.d.ts +0 -4
  1034. package/line-break/createReactLineBreak.js +0 -14
  1035. package/line-break/defaultRenderLineBreakElement.d.ts +0 -3
  1036. package/line-break/defaultRenderLineBreakElement.js +0 -5
  1037. package/line-break/index.cjs.js +0 -102
  1038. package/line-break/index.js +0 -4
  1039. package/line-break/jsx-serializer/createJsxSerializeLineBreak.d.ts +0 -4
  1040. package/line-break/jsx-serializer/createJsxSerializeLineBreak.js +0 -11
  1041. package/line-break/jsx-serializer/defaultRenderLineBreakElement.d.ts +0 -2
  1042. package/line-break/jsx-serializer/defaultRenderLineBreakElement.js +0 -6
  1043. package/line-break/jsx-serializer/index.cjs.js +0 -17
  1044. package/line-break/jsx-serializer/index.js +0 -2
  1045. package/line-break/jsx-serializer/typings.d.ts +0 -3
  1046. package/line-break/line-break.css +0 -1
  1047. package/line-break/renderLineBreakElementWithSymbol.d.ts +0 -3
  1048. package/line-break/renderLineBreakElementWithSymbol.js +0 -5
  1049. package/line-break/typings.d.ts +0 -32
  1050. package/link/createReactLink.d.ts +0 -11
  1051. package/link/createReactLink.js +0 -29
  1052. package/link/defaultRenderLinkElement.d.ts +0 -9
  1053. package/link/defaultRenderLinkElement.js +0 -13
  1054. package/link/index.cjs.js +0 -42
  1055. package/link/index.js +0 -2
  1056. package/link/jsx-serializer/createJsxSerializeLink.d.ts +0 -4
  1057. package/link/jsx-serializer/createJsxSerializeLink.js +0 -10
  1058. package/link/jsx-serializer/defaultRenderLinkElement.d.ts +0 -3
  1059. package/link/jsx-serializer/defaultRenderLinkElement.js +0 -5
  1060. package/link/jsx-serializer/index.cjs.js +0 -15
  1061. package/link/jsx-serializer/index.js +0 -2
  1062. package/link/jsx-serializer/typings.d.ts +0 -3
  1063. package/link/toolbar/LinkToolbarIcon.d.ts +0 -10
  1064. package/link/toolbar/LinkToolbarIcon.js +0 -12
  1065. package/link/toolbar/UnlinkToolbarIcon.d.ts +0 -8
  1066. package/link/toolbar/UnlinkToolbarIcon.js +0 -12
  1067. package/link/toolbar/index.cjs.js +0 -51
  1068. package/link/toolbar/index.d.ts +0 -4
  1069. package/link/toolbar/index.js +0 -4
  1070. package/link/toolbar/useLinkTool.d.ts +0 -7
  1071. package/link/toolbar/useLinkTool.js +0 -25
  1072. package/link/toolbar/useUnlinkTool.d.ts +0 -4
  1073. package/link/toolbar/useUnlinkTool.js +0 -10
  1074. package/link/typings.d.ts +0 -9
  1075. package/list/createReactList.d.ts +0 -4
  1076. package/list/createReactList.js +0 -35
  1077. package/list/defaultRenderListElements.d.ts +0 -7
  1078. package/list/defaultRenderListElements.js +0 -9
  1079. package/list/index.cjs.js +0 -44
  1080. package/list/index.js +0 -2
  1081. package/list/jsx-serializer/createJsxSerializeList.d.ts +0 -7
  1082. package/list/jsx-serializer/createJsxSerializeList.js +0 -15
  1083. package/list/jsx-serializer/index.cjs.js +0 -18
  1084. package/list/jsx-serializer/index.js +0 -2
  1085. package/list/jsx-serializer/typings.d.ts +0 -3
  1086. package/list/list.css +0 -1
  1087. package/list/toolbar/ListToolbarIcon.d.ts +0 -10
  1088. package/list/toolbar/ListToolbarIcon.js +0 -12
  1089. package/list/toolbar/index.cjs.js +0 -23
  1090. package/list/toolbar/index.d.ts +0 -2
  1091. package/list/toolbar/index.js +0 -2
  1092. package/list/toolbar/useListTool.d.ts +0 -6
  1093. package/list/toolbar/useListTool.js +0 -11
  1094. package/list/typings.d.ts +0 -9
  1095. package/paragraph/createReactParagraph.d.ts +0 -2
  1096. package/paragraph/createReactParagraph.js +0 -8
  1097. package/paragraph/createRenderParagraphElement.d.ts +0 -8
  1098. package/paragraph/createRenderParagraphElement.js +0 -10
  1099. package/paragraph/defaultRenderParagraphElement.d.ts +0 -8
  1100. package/paragraph/defaultRenderParagraphElement.js +0 -8
  1101. package/paragraph/index.cjs.js +0 -31
  1102. package/paragraph/index.js +0 -4
  1103. package/paragraph/jsx-serializer/createJsxSerializeParagraph.d.ts +0 -4
  1104. package/paragraph/jsx-serializer/createJsxSerializeParagraph.js +0 -10
  1105. package/paragraph/jsx-serializer/index.cjs.js +0 -13
  1106. package/paragraph/jsx-serializer/index.js +0 -2
  1107. package/paragraph/jsx-serializer/typings.d.ts +0 -3
  1108. package/paragraph/paragraph.css +0 -1
  1109. package/paragraph/renderParagraphElementWithSymbol.d.ts +0 -8
  1110. package/paragraph/renderParagraphElementWithSymbol.js +0 -8
  1111. package/paragraph/toolbar/ParagraphToolbarIcon.d.ts +0 -8
  1112. package/paragraph/toolbar/ParagraphToolbarIcon.js +0 -12
  1113. package/paragraph/toolbar/index.cjs.js +0 -23
  1114. package/paragraph/toolbar/index.js +0 -2
  1115. package/paragraph/toolbar/useToggleParagraphTool.d.ts +0 -5
  1116. package/paragraph/toolbar/useToggleParagraphTool.js +0 -11
  1117. package/read-more/components/ReadMore.d.ts +0 -8
  1118. package/read-more/components/ReadMore.js +0 -14
  1119. package/read-more/createReactReadMore.d.ts +0 -4
  1120. package/read-more/createReactReadMore.js +0 -11
  1121. package/read-more/defaultRenderReadMoreElement.d.ts +0 -3
  1122. package/read-more/defaultRenderReadMoreElement.js +0 -6
  1123. package/read-more/index.cjs.js +0 -27
  1124. package/read-more/index.js +0 -3
  1125. package/read-more/jsx-serializer/createJsxSerializeReadMore.d.ts +0 -4
  1126. package/read-more/jsx-serializer/createJsxSerializeReadMore.js +0 -10
  1127. package/read-more/jsx-serializer/index.cjs.js +0 -13
  1128. package/read-more/jsx-serializer/index.js +0 -2
  1129. package/read-more/jsx-serializer/typings.d.ts +0 -3
  1130. package/read-more/read-more.css +0 -1
  1131. package/read-more/toolbar/ReadMoreToolbarIcon.d.ts +0 -8
  1132. package/read-more/toolbar/ReadMoreToolbarIcon.js +0 -12
  1133. package/read-more/toolbar/index.cjs.js +0 -22
  1134. package/read-more/toolbar/index.d.ts +0 -2
  1135. package/read-more/toolbar/index.js +0 -2
  1136. package/read-more/toolbar/useReadMoreTool.d.ts +0 -4
  1137. package/read-more/toolbar/useReadMoreTool.js +0 -10
  1138. package/read-more/typings.d.ts +0 -9
  1139. package/strikethrough/constants.d.ts +0 -6
  1140. package/strikethrough/constants.js +0 -8
  1141. package/strikethrough/createReactStrikethrough.d.ts +0 -1
  1142. package/strikethrough/createReactStrikethrough.js +0 -11
  1143. package/strikethrough/defaultRenderStrikethrough.d.ts +0 -3
  1144. package/strikethrough/defaultRenderStrikethrough.js +0 -7
  1145. package/strikethrough/index.cjs.js +0 -24
  1146. package/strikethrough/index.js +0 -3
  1147. package/strikethrough/jsx-serializer/createJsxSerializeStrikethrough.d.ts +0 -1
  1148. package/strikethrough/jsx-serializer/createJsxSerializeStrikethrough.js +0 -10
  1149. package/strikethrough/jsx-serializer/index.cjs.js +0 -13
  1150. package/strikethrough/jsx-serializer/index.js +0 -2
  1151. package/strikethrough/typings.d.ts +0 -5
  1152. package/table/components/ColumnDragButton.d.ts +0 -10
  1153. package/table/components/ColumnDragButton.js +0 -41
  1154. package/table/components/RowDragButton.d.ts +0 -10
  1155. package/table/components/RowDragButton.js +0 -42
  1156. package/table/components/Table.d.ts +0 -9
  1157. package/table/components/Table.js +0 -236
  1158. package/table/components/TableBody.d.ts +0 -5
  1159. package/table/components/TableBody.js +0 -8
  1160. package/table/components/TableCell.d.ts +0 -5
  1161. package/table/components/TableCell.js +0 -297
  1162. package/table/components/TableDragLayer.d.ts +0 -6
  1163. package/table/components/TableDragLayer.js +0 -89
  1164. package/table/components/TableHeader.d.ts +0 -5
  1165. package/table/components/TableHeader.js +0 -13
  1166. package/table/components/TableMain.d.ts +0 -5
  1167. package/table/components/TableMain.js +0 -233
  1168. package/table/components/TableRow.d.ts +0 -5
  1169. package/table/components/TableRow.js +0 -8
  1170. package/table/components/TableTitle.d.ts +0 -5
  1171. package/table/components/TableTitle.js +0 -18
  1172. package/table/contexts/TableActionsContext.d.ts +0 -3
  1173. package/table/contexts/TableActionsContext.js +0 -5
  1174. package/table/contexts/TableDragContext.d.ts +0 -26
  1175. package/table/contexts/TableDragContext.js +0 -26
  1176. package/table/contexts/TableHeaderContext.d.ts +0 -2
  1177. package/table/contexts/TableHeaderContext.js +0 -7
  1178. package/table/contexts/TableMetadataContext.d.ts +0 -3
  1179. package/table/contexts/TableMetadataContext.js +0 -5
  1180. package/table/contexts/TableScrollContext.d.ts +0 -2
  1181. package/table/contexts/TableScrollContext.js +0 -9
  1182. package/table/contexts/TableStateContext.d.ts +0 -3
  1183. package/table/contexts/TableStateContext.js +0 -5
  1184. package/table/createReactTable.d.ts +0 -4
  1185. package/table/createReactTable.js +0 -297
  1186. package/table/defaultRenderTableElements.d.ts +0 -2
  1187. package/table/defaultRenderTableElements.js +0 -20
  1188. package/table/hooks/useColumnResize.d.ts +0 -12
  1189. package/table/hooks/useColumnResize.js +0 -168
  1190. package/table/hooks/useTableActions.d.ts +0 -27
  1191. package/table/hooks/useTableActions.js +0 -1092
  1192. package/table/hooks/useTableActionsContext.d.ts +0 -1
  1193. package/table/hooks/useTableActionsContext.js +0 -12
  1194. package/table/hooks/useTableCell.d.ts +0 -16
  1195. package/table/hooks/useTableCell.js +0 -166
  1196. package/table/hooks/useTableCellToolbarActions.d.ts +0 -34
  1197. package/table/hooks/useTableCellToolbarActions.js +0 -540
  1198. package/table/hooks/useTableMetadata.d.ts +0 -1
  1199. package/table/hooks/useTableMetadata.js +0 -12
  1200. package/table/hooks/useTableStateContext.d.ts +0 -1
  1201. package/table/hooks/useTableStateContext.js +0 -12
  1202. package/table/hooks/useTableStates.d.ts +0 -18
  1203. package/table/hooks/useTableStates.js +0 -14
  1204. package/table/index.cjs.js +0 -4016
  1205. package/table/index.js +0 -27
  1206. package/table/jsx-serializer/components/Table.d.ts +0 -3
  1207. package/table/jsx-serializer/components/Table.js +0 -7
  1208. package/table/jsx-serializer/components/TableBody.d.ts +0 -3
  1209. package/table/jsx-serializer/components/TableBody.js +0 -7
  1210. package/table/jsx-serializer/components/TableCell.d.ts +0 -5
  1211. package/table/jsx-serializer/components/TableCell.js +0 -33
  1212. package/table/jsx-serializer/components/TableHeader.d.ts +0 -3
  1213. package/table/jsx-serializer/components/TableHeader.js +0 -10
  1214. package/table/jsx-serializer/components/TableMain.d.ts +0 -6
  1215. package/table/jsx-serializer/components/TableMain.js +0 -18
  1216. package/table/jsx-serializer/components/TableRow.d.ts +0 -3
  1217. package/table/jsx-serializer/components/TableRow.js +0 -7
  1218. package/table/jsx-serializer/components/TableTitle.d.ts +0 -3
  1219. package/table/jsx-serializer/components/TableTitle.js +0 -7
  1220. package/table/jsx-serializer/contexts/TableHeaderContext.d.ts +0 -1
  1221. package/table/jsx-serializer/contexts/TableHeaderContext.js +0 -5
  1222. package/table/jsx-serializer/contexts/TableScrollContext.d.ts +0 -2
  1223. package/table/jsx-serializer/contexts/TableScrollContext.js +0 -7
  1224. package/table/jsx-serializer/createJsxSerializeTable.d.ts +0 -5
  1225. package/table/jsx-serializer/createJsxSerializeTable.js +0 -113
  1226. package/table/jsx-serializer/defaultRenderTableElements.d.ts +0 -2
  1227. package/table/jsx-serializer/defaultRenderTableElements.js +0 -20
  1228. package/table/jsx-serializer/index.cjs.js +0 -195
  1229. package/table/jsx-serializer/index.js +0 -2
  1230. package/table/jsx-serializer/typings.d.ts +0 -12
  1231. package/table/table.css +0 -1
  1232. package/table/toolbar/TableToolbarIcon.d.ts +0 -8
  1233. package/table/toolbar/TableToolbarIcon.js +0 -12
  1234. package/table/toolbar/index.cjs.js +0 -24
  1235. package/table/toolbar/index.js +0 -2
  1236. package/table/toolbar/useTableTool.d.ts +0 -4
  1237. package/table/toolbar/useTableTool.js +0 -13
  1238. package/table/typings.d.ts +0 -68
  1239. package/table/utils/helper.d.ts +0 -186
  1240. package/table/utils/helper.js +0 -799
  1241. package/toggle-mark/createReactToggleMarkCreator.d.ts +0 -6
  1242. package/toggle-mark/createReactToggleMarkCreator.js +0 -20
  1243. package/toggle-mark/index.cjs.js +0 -22
  1244. package/toggle-mark/index.d.ts +0 -2
  1245. package/toggle-mark/index.js +0 -1
  1246. package/toggle-mark/jsx-serializer/createJsxSerializeToggleMarkCreator.d.ts +0 -4
  1247. package/toggle-mark/jsx-serializer/createJsxSerializeToggleMarkCreator.js +0 -7
  1248. package/toggle-mark/jsx-serializer/index.cjs.js +0 -9
  1249. package/toggle-mark/jsx-serializer/index.d.ts +0 -2
  1250. package/toggle-mark/jsx-serializer/index.js +0 -1
  1251. package/toggle-mark/jsx-serializer/typings.d.ts +0 -2
  1252. package/toggle-mark/toolbar/ToggleMarkToolbarIcon.d.ts +0 -8
  1253. package/toggle-mark/toolbar/ToggleMarkToolbarIcon.js +0 -12
  1254. package/toggle-mark/toolbar/index.cjs.js +0 -23
  1255. package/toggle-mark/toolbar/index.js +0 -2
  1256. package/toggle-mark/toolbar/useToggleMarkTool.d.ts +0 -5
  1257. package/toggle-mark/toolbar/useToggleMarkTool.js +0 -11
  1258. package/toggle-mark/typings.d.ts +0 -12
  1259. package/toolbar/components/InlineToolbar.d.ts +0 -19
  1260. package/toolbar/components/InlineToolbar.js +0 -31
  1261. package/toolbar/components/Toolbar.d.ts +0 -25
  1262. package/toolbar/components/Toolbar.js +0 -137
  1263. package/toolbar/components/ToolbarGroupIcon.d.ts +0 -7
  1264. package/toolbar/components/ToolbarGroupIcon.js +0 -80
  1265. package/toolbar/components/ToolbarIcon.d.ts +0 -9
  1266. package/toolbar/components/ToolbarIcon.js +0 -32
  1267. package/toolbar/components/ToolbarInput.d.ts +0 -8
  1268. package/toolbar/components/ToolbarInput.js +0 -38
  1269. package/toolbar/components/toolbarIconName.d.ts +0 -2
  1270. package/toolbar/components/toolbarIconName.js +0 -86
  1271. package/toolbar/constants.d.ts +0 -5
  1272. package/toolbar/constants.js +0 -8
  1273. package/toolbar/contexts/StartToolInputContext.d.ts +0 -2
  1274. package/toolbar/contexts/StartToolInputContext.js +0 -5
  1275. package/toolbar/contexts/toolbar.d.ts +0 -7
  1276. package/toolbar/contexts/toolbar.js +0 -10
  1277. package/toolbar/contexts/toolbarMenu.d.ts +0 -6
  1278. package/toolbar/contexts/toolbarMenu.js +0 -11
  1279. package/toolbar/hooks/useAutoGroupIcons.d.ts +0 -12
  1280. package/toolbar/hooks/useAutoGroupIcons.js +0 -68
  1281. package/toolbar/hooks/useStartToolInput.d.ts +0 -1
  1282. package/toolbar/hooks/useStartToolInput.js +0 -8
  1283. package/toolbar/index.cjs.js +0 -468
  1284. package/toolbar/index.d.ts +0 -7
  1285. package/toolbar/index.js +0 -6
  1286. package/toolbar/toolbar.css +0 -1
  1287. package/toolbar/typings.d.ts +0 -6
  1288. package/underline/constants.d.ts +0 -6
  1289. package/underline/constants.js +0 -8
  1290. package/underline/createReactUnderline.d.ts +0 -1
  1291. package/underline/createReactUnderline.js +0 -11
  1292. package/underline/defaultRenderUnderline.d.ts +0 -3
  1293. package/underline/defaultRenderUnderline.js +0 -7
  1294. package/underline/index.cjs.js +0 -24
  1295. package/underline/index.js +0 -3
  1296. package/underline/jsx-serializer/createJsxSerializeUnderline.d.ts +0 -1
  1297. package/underline/jsx-serializer/createJsxSerializeUnderline.js +0 -10
  1298. package/underline/jsx-serializer/index.cjs.js +0 -13
  1299. package/underline/jsx-serializer/index.js +0 -2
  1300. package/underline/typings.d.ts +0 -5
  1301. package/utils/composeRefs.d.ts +0 -19
  1302. package/utils/composeRefs.js +0 -32
  1303. package/utils/index.cjs.js +0 -193
  1304. package/utils/index.js +0 -7
  1305. package/utils/removePreviousElement.d.ts +0 -9
  1306. package/utils/removePreviousElement.js +0 -44
  1307. package/utils/upload.d.ts +0 -11
  1308. package/utils/upload.js +0 -57
  1309. package/utils/useClickAway.d.ts +0 -5
  1310. package/utils/useClickAway.js +0 -23
  1311. package/utils/useDocumentEvents.d.ts +0 -5
  1312. package/utils/useDocumentEvents.js +0 -21
  1313. package/utils/useIsomorphicLayoutEffect.d.ts +0 -2
  1314. package/utils/useIsomorphicLayoutEffect.js +0 -9
  1315. package/utils/usePreviousValue.d.ts +0 -1
  1316. package/utils/usePreviousValue.js +0 -11
  1317. /package/_internal/{index.d.ts → src/index.ts} +0 -0
  1318. /package/accordion/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1319. /package/accordion/{accordion.scss → src/accordion.scss} +0 -0
  1320. /package/accordion/{index.d.ts → src/index.ts} +0 -0
  1321. /package/align/{index.d.ts → src/index.ts} +0 -0
  1322. /package/blockquote/jsx-serializer/{defaultRenderBlockquoteElement.d.ts → src/defaultRenderBlockquoteElement.ts} +0 -0
  1323. /package/blockquote/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1324. /package/blockquote/{blockquote.scss → src/blockquote.scss} +0 -0
  1325. /package/blockquote/{index.d.ts → src/index.ts} +0 -0
  1326. /package/blockquote/toolbar/{index.d.ts → src/index.ts} +0 -0
  1327. /package/bold/jsx-serializer/{defaultRenderBold.d.ts → src/defaultRenderBold.ts} +0 -0
  1328. /package/bold/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1329. /package/bold/{index.d.ts → src/index.ts} +0 -0
  1330. /package/card/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1331. /package/card/{card.scss → src/card.scss} +0 -0
  1332. /package/card/{index.d.ts → src/index.ts} +0 -0
  1333. /package/card/toolbar/{index.d.ts → src/index.ts} +0 -0
  1334. /package/carousel/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1335. /package/carousel/{carousel.scss → src/carousel.scss} +0 -0
  1336. /package/carousel/{index.d.ts → src/index.ts} +0 -0
  1337. /package/carousel/toolbar/{index.d.ts → src/index.ts} +0 -0
  1338. /package/components/{baseField.scss → src/BaseField/baseField.scss} +0 -0
  1339. /package/components/{button.scss → src/Button/button.scss} +0 -0
  1340. /package/components/{hint.scss → src/Hint/hint.scss} +0 -0
  1341. /package/components/{imageUploader.scss → src/ImageUploader/imageUploader.scss} +0 -0
  1342. /package/components/{input.scss → src/Input/input.scss} +0 -0
  1343. /package/components/{message.scss → src/Message/message.scss} +0 -0
  1344. /package/components/{modal.scss → src/Modal/modal.scss} +0 -0
  1345. /package/components/{progress.scss → src/Progress/progress.scss} +0 -0
  1346. /package/components/{segmentedControl.scss → src/SegmentedControl/segmentedControl.scss} +0 -0
  1347. /package/components/{textarea.scss → src/Textarea/textarea.scss} +0 -0
  1348. /package/components/{toggle.scss → src/Toggle/toggle.scss} +0 -0
  1349. /package/components/{tooltip.scss → src/Tooltip/tooltip.scss} +0 -0
  1350. /package/components/{components.scss → src/components.scss} +0 -0
  1351. /package/configs/{index.d.ts → src/index.ts} +0 -0
  1352. /package/divider/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1353. /package/divider/{divider.scss → src/divider.scss} +0 -0
  1354. /package/divider/{index.d.ts → src/index.ts} +0 -0
  1355. /package/embed/jsx-serializer/facebook/{index.d.ts → src/index.ts} +0 -0
  1356. /package/embed/jsx-serializer/instagram/{index.d.ts → src/index.ts} +0 -0
  1357. /package/embed/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1358. /package/embed/jsx-serializer/twitter/{index.d.ts → src/index.ts} +0 -0
  1359. /package/embed/jsx-serializer/vimeo/{index.d.ts → src/index.ts} +0 -0
  1360. /package/embed/jsx-serializer/youtube/{index.d.ts → src/index.ts} +0 -0
  1361. /package/embed/renderers/facebook/{index.d.ts → src/index.ts} +0 -0
  1362. /package/embed/renderers/instagram/{index.d.ts → src/index.ts} +0 -0
  1363. /package/embed/renderers/podcast-apple/{index.d.ts → src/index.ts} +0 -0
  1364. /package/embed/renderers/spotify/{index.d.ts → src/index.ts} +0 -0
  1365. /package/embed/renderers/twitter/{index.d.ts → src/index.ts} +0 -0
  1366. /package/embed/renderers/vimeo/{index.d.ts → src/index.ts} +0 -0
  1367. /package/embed/renderers/youtube/{index.d.ts → src/index.ts} +0 -0
  1368. /package/embed/{embed.scss → src/embed.scss} +0 -0
  1369. /package/embed/{index.d.ts → src/index.ts} +0 -0
  1370. /package/file-uploader/{file-uploader.scss → src/components/file-uploader.scss} +0 -0
  1371. /package/file-uploader/{index.d.ts → src/index.ts} +0 -0
  1372. /package/footnote/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1373. /package/footnote/{index.d.ts → src/index.ts} +0 -0
  1374. /package/heading/jsx-serializer/{defaultRenderHeadingElement.d.ts → src/defaultRenderHeadingElement.ts} +0 -0
  1375. /package/heading/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1376. /package/heading/{heading.scss → src/heading.scss} +0 -0
  1377. /package/heading/{index.d.ts → src/index.ts} +0 -0
  1378. /package/highlight/jsx-serializer/{defaultRenderHighlight.d.ts → src/defaultRenderHighlight.ts} +0 -0
  1379. /package/highlight/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1380. /package/highlight/{index.d.ts → src/index.ts} +0 -0
  1381. /package/image/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1382. /package/image/{image.scss → src/components/image.scss} +0 -0
  1383. /package/image/{index.d.ts → src/index.ts} +0 -0
  1384. /package/input-block/{index.d.ts → src/index.ts} +0 -0
  1385. /package/input-block/{input-block.scss → src/input-block.scss} +0 -0
  1386. /package/italic/jsx-serializer/{defaultRenderItalic.d.ts → src/defaultRenderItalic.ts} +0 -0
  1387. /package/italic/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1388. /package/italic/{index.d.ts → src/index.ts} +0 -0
  1389. /package/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1390. /package/line-break/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1391. /package/line-break/{index.d.ts → src/index.ts} +0 -0
  1392. /package/line-break/{line-break.scss → src/line-break.scss} +0 -0
  1393. /package/link/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1394. /package/link/{index.d.ts → src/index.ts} +0 -0
  1395. /package/list/jsx-serializer/{defaultRenderListElements.d.ts → src/defaultRenderListElements.ts} +0 -0
  1396. /package/list/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1397. /package/list/{index.d.ts → src/index.ts} +0 -0
  1398. /package/list/{list.scss → src/list.scss} +0 -0
  1399. /package/paragraph/jsx-serializer/{defaultRenderParagraphElement.d.ts → src/defaultRenderParagraphElement.ts} +0 -0
  1400. /package/paragraph/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1401. /package/paragraph/{index.d.ts → src/index.ts} +0 -0
  1402. /package/paragraph/{paragraph.scss → src/paragraph.scss} +0 -0
  1403. /package/paragraph/toolbar/{index.d.ts → src/index.ts} +0 -0
  1404. /package/read-more/jsx-serializer/{defaultRenderReadMoreElement.d.ts → src/defaultRenderReadMoreElement.ts} +0 -0
  1405. /package/read-more/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1406. /package/read-more/{read-more.scss → src/components/read-more.scss} +0 -0
  1407. /package/read-more/{index.d.ts → src/index.ts} +0 -0
  1408. /package/{editable.scss → src/core/components/editable.scss} +0 -0
  1409. /package/{index.d.ts → src/index.ts} +0 -0
  1410. /package/strikethrough/jsx-serializer/{defaultRenderStrikethrough.d.ts → src/defaultRenderStrikethrough.ts} +0 -0
  1411. /package/strikethrough/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1412. /package/strikethrough/{index.d.ts → src/index.ts} +0 -0
  1413. /package/table/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1414. /package/table/{index.d.ts → src/index.ts} +0 -0
  1415. /package/table/{table.scss → src/table.scss} +0 -0
  1416. /package/table/toolbar/{index.d.ts → src/index.ts} +0 -0
  1417. /package/toggle-mark/toolbar/{index.d.ts → src/index.ts} +0 -0
  1418. /package/toolbar/{toolbar.scss → src/components/toolbar.scss} +0 -0
  1419. /package/underline/jsx-serializer/{defaultRenderUnderline.d.ts → src/defaultRenderUnderline.ts} +0 -0
  1420. /package/underline/jsx-serializer/{index.d.ts → src/index.ts} +0 -0
  1421. /package/underline/{index.d.ts → src/index.ts} +0 -0
  1422. /package/utils/{index.d.ts → src/index.ts} +0 -0
@@ -0,0 +1,1394 @@
1
+ import { useCallback } from 'react';
2
+ import { Element, Transforms, Editor } from '@quadrats/core';
3
+ import { ReactEditor } from 'slate-react';
4
+ import { RenderTableElementProps, TableContextType } from '../typings';
5
+ import {
6
+ TABLE_CELL_TYPE,
7
+ TABLE_HEADER_TYPE,
8
+ TABLE_DEFAULT_MAX_COLUMNS,
9
+ TABLE_ROW_TYPE,
10
+ TableElement,
11
+ } from '@quadrats/common/table';
12
+ import { useQuadrats } from '@quadrats/react';
13
+ import {
14
+ getTableStructure,
15
+ createTableCell,
16
+ getReferenceRowFromHeaderOrBody,
17
+ hasAnyPinnedRows,
18
+ hasAnyPinnedColumns,
19
+ getColumnWidths,
20
+ calculateColumnWidthsAfterAdd,
21
+ calculateColumnWidthsAfterDelete,
22
+ setColumnWidths,
23
+ moveOrSwapColumnWidth,
24
+ convertToMixedWidthMode,
25
+ convertToPercentageMode,
26
+ getPinnedColumnsInfo,
27
+ } from '../utils/helper';
28
+
29
+ export function useTableActions(element: RenderTableElementProps['element']) {
30
+ const editor = useQuadrats();
31
+
32
+ const isColumnPinned: TableContextType['isColumnPinned'] = useCallback(
33
+ (columnIndex) => {
34
+ try {
35
+ const tableStructure = getTableStructure(editor, element);
36
+
37
+ if (!tableStructure) return false;
38
+
39
+ const { tableMainElement } = tableStructure;
40
+
41
+ if (!tableMainElement) return false;
42
+
43
+ for (const container of tableMainElement.children) {
44
+ if (!Element.isElement(container)) continue;
45
+
46
+ for (const row of container.children) {
47
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
48
+ const cell = row.children[columnIndex];
49
+
50
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
51
+ // 如果有任何一個 cell 沒有 pinned 屬性,則整個 column 不算 pinned
52
+ if (!cell.pinned) {
53
+ return false;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ return true;
61
+ } catch (error) {
62
+ return false;
63
+ }
64
+ },
65
+ [element, editor],
66
+ );
67
+
68
+ const isRowPinned: TableContextType['isRowPinned'] = useCallback(
69
+ (rowIndex) => {
70
+ try {
71
+ const tableStructure = getTableStructure(editor, element);
72
+
73
+ if (!tableStructure) return false;
74
+
75
+ const { tableHeaderElement, tableBodyElement } = tableStructure;
76
+
77
+ const headerRowCount =
78
+ tableHeaderElement && Element.isElement(tableHeaderElement) ? tableHeaderElement.children.length : 0;
79
+
80
+ let targetRow: TableElement | undefined;
81
+
82
+ if (rowIndex < headerRowCount && tableHeaderElement && Element.isElement(tableHeaderElement)) {
83
+ // 在 Header 中
84
+ const rowElement = tableHeaderElement.children[rowIndex];
85
+
86
+ if (Element.isElement(rowElement)) {
87
+ targetRow = rowElement as TableElement;
88
+ }
89
+ } else if (tableBodyElement && Element.isElement(tableBodyElement)) {
90
+ // 在 Body 中
91
+ const bodyRowIndex = rowIndex - headerRowCount;
92
+ const rowElement = tableBodyElement.children[bodyRowIndex];
93
+
94
+ if (Element.isElement(rowElement)) {
95
+ targetRow = rowElement as TableElement;
96
+ }
97
+ }
98
+
99
+ if (!Element.isElement(targetRow) || !targetRow.type.includes(TABLE_ROW_TYPE)) {
100
+ return false;
101
+ }
102
+
103
+ // 檢查所有 cell 是否都有 pinned 屬性
104
+ for (const cell of targetRow.children) {
105
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
106
+ if (!(cell as TableElement).pinned) {
107
+ return false;
108
+ }
109
+ }
110
+ }
111
+
112
+ return true;
113
+ } catch (error) {
114
+ return false;
115
+ }
116
+ },
117
+ [element, editor],
118
+ );
119
+
120
+ const addColumn: TableContextType['addColumn'] = useCallback(
121
+ (options = {}) => {
122
+ const { position = 'right', columnIndex } = options;
123
+
124
+ try {
125
+ const tableStructure = getTableStructure(editor, element);
126
+
127
+ if (!tableStructure) return;
128
+
129
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, columnCount } = tableStructure;
130
+
131
+ if (columnCount >= TABLE_DEFAULT_MAX_COLUMNS) {
132
+ console.warn(`Maximum columns limit (${TABLE_DEFAULT_MAX_COLUMNS}) reached`);
133
+
134
+ return;
135
+ }
136
+
137
+ // 計算插入位置
138
+ let insertIndex: number;
139
+
140
+ if (typeof columnIndex === 'number') {
141
+ insertIndex = position === 'left' ? Math.max(0, columnIndex) : Math.min(columnCount, columnIndex + 1);
142
+ } else {
143
+ insertIndex = columnCount;
144
+ }
145
+
146
+ // 使用 Editor.withoutNormalizing 來批次執行所有操作
147
+ Editor.withoutNormalizing(editor, () => {
148
+ // 在 Header 中加入 cell
149
+ if (tableHeaderElement && tableHeaderPath) {
150
+ tableHeaderElement.children.forEach((row, rowIndex) => {
151
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
152
+ const referenceCell = row.children[insertIndex - (position === 'left' ? 0 : 1)] as TableElement;
153
+ const newCell = createTableCell(referenceCell);
154
+ const cellPath = [...tableHeaderPath, rowIndex, insertIndex];
155
+
156
+ Transforms.insertNodes(editor, newCell, { at: cellPath });
157
+ }
158
+ });
159
+ }
160
+
161
+ // 在 Body 中加入 cell
162
+ tableBodyElement!.children.forEach((row, rowIndex) => {
163
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
164
+ const referenceCell = row.children[insertIndex - (position === 'left' ? 0 : 1)] as TableElement;
165
+ const newCell = createTableCell(referenceCell);
166
+ const cellPath = [...tableBodyPath, rowIndex, insertIndex];
167
+
168
+ Transforms.insertNodes(editor, newCell, { at: cellPath });
169
+ }
170
+ });
171
+
172
+ // 調整欄位寬度
173
+ const currentWidths = getColumnWidths(element);
174
+
175
+ if (currentWidths.length > 0) {
176
+ // 獲取當前的 pinned columns 資訊
177
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
178
+ const newWidths = calculateColumnWidthsAfterAdd(
179
+ currentWidths,
180
+ insertIndex,
181
+ pinnedColumnIndices,
182
+ columnIndex,
183
+ );
184
+
185
+ setColumnWidths(editor, element, newWidths);
186
+ }
187
+ });
188
+ } catch (error) {
189
+ console.warn('Failed to add column:', error);
190
+ }
191
+ },
192
+ [editor, element],
193
+ );
194
+
195
+ const addRow: TableContextType['addRow'] = useCallback(
196
+ (options = {}) => {
197
+ const { position = 'bottom', rowIndex } = options;
198
+
199
+ try {
200
+ const tableStructure = getTableStructure(editor, element);
201
+
202
+ if (!tableStructure) return;
203
+
204
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, headerRowCount, columnCount } =
205
+ tableStructure;
206
+
207
+ // 計算插入位置和參考行
208
+ let insertIndex: number;
209
+ let referenceRowElement: Element | undefined;
210
+ let targetPath: number[];
211
+
212
+ if (typeof rowIndex === 'number') {
213
+ // 檢查是在 Header / Body 之中
214
+ if (tableHeaderElement && rowIndex < headerRowCount) {
215
+ targetPath = tableHeaderPath!;
216
+
217
+ if (position === 'top') {
218
+ insertIndex = Math.max(0, rowIndex);
219
+ referenceRowElement = getReferenceRowFromHeaderOrBody(tableHeaderElement, insertIndex);
220
+ } else {
221
+ insertIndex = Math.min(headerRowCount, rowIndex + 1);
222
+ referenceRowElement = getReferenceRowFromHeaderOrBody(tableHeaderElement, rowIndex);
223
+ }
224
+ } else {
225
+ targetPath = tableBodyPath;
226
+ const bodyRowIndex = rowIndex - headerRowCount;
227
+
228
+ if (position === 'top') {
229
+ insertIndex = Math.max(0, bodyRowIndex);
230
+ referenceRowElement = getReferenceRowFromHeaderOrBody(tableBodyElement!, insertIndex);
231
+ } else {
232
+ insertIndex = Math.min(tableBodyElement!.children.length, bodyRowIndex + 1);
233
+ referenceRowElement = getReferenceRowFromHeaderOrBody(tableBodyElement!, bodyRowIndex);
234
+ }
235
+ }
236
+ } else {
237
+ // 預設:在 Body 尾端加入列
238
+ targetPath = tableBodyPath;
239
+ insertIndex = tableBodyElement!.children.length;
240
+ referenceRowElement = getReferenceRowFromHeaderOrBody(tableBodyElement!, insertIndex - 1);
241
+ }
242
+
243
+ // 創建新行
244
+ const newRow: TableElement = {
245
+ type: TABLE_ROW_TYPE,
246
+ children: Array.from({ length: columnCount }, (_, cellIndex) => {
247
+ let referenceCell: TableElement | undefined;
248
+
249
+ if (referenceRowElement && referenceRowElement.children[cellIndex]) {
250
+ const cell = referenceRowElement.children[cellIndex];
251
+
252
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
253
+ referenceCell = cell as TableElement;
254
+ }
255
+ }
256
+
257
+ return createTableCell(referenceCell);
258
+ }),
259
+ };
260
+
261
+ // 插入新行
262
+ const newRowPath = [...targetPath, insertIndex];
263
+
264
+ Transforms.insertNodes(editor, newRow, { at: newRowPath });
265
+ } catch (error) {
266
+ console.warn('Failed to add row:', error);
267
+ }
268
+ },
269
+ [editor, element],
270
+ );
271
+
272
+ const addColumnAndRow: TableContextType['addColumnAndRow'] = useCallback(() => {
273
+ try {
274
+ const tableStructure = getTableStructure(editor, element);
275
+
276
+ if (!tableStructure) return;
277
+
278
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, columnCount } = tableStructure;
279
+
280
+ if (columnCount >= TABLE_DEFAULT_MAX_COLUMNS) {
281
+ console.warn(`Maximum columns limit (${TABLE_DEFAULT_MAX_COLUMNS}) reached`);
282
+
283
+ return;
284
+ }
285
+
286
+ Editor.withoutNormalizing(editor, () => {
287
+ // 在 Header 中加入新列
288
+ if (tableHeaderElement && tableHeaderPath) {
289
+ tableHeaderElement.children.forEach((row, rowIndex) => {
290
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
291
+ const lastCell = row.children[row.children.length - 1] as TableElement;
292
+ const newHeaderCell = createTableCell(lastCell);
293
+
294
+ const cellPath = [...tableHeaderPath, rowIndex, row.children.length];
295
+
296
+ Transforms.insertNodes(editor, newHeaderCell, { at: cellPath });
297
+ }
298
+ });
299
+ }
300
+
301
+ // 在 Body 中加入新列
302
+ tableBodyElement!.children.forEach((row, rowIndex) => {
303
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
304
+ const lastCell = row.children[row.children.length - 1] as TableElement;
305
+ const newCell = createTableCell(lastCell);
306
+
307
+ const cellPath = [...tableBodyPath, rowIndex, row.children.length];
308
+
309
+ Transforms.insertNodes(editor, newCell, { at: cellPath });
310
+ }
311
+ });
312
+
313
+ // 加入新行
314
+ const newColumnCount = columnCount + 1;
315
+ const lastRow = getReferenceRowFromHeaderOrBody(tableBodyElement!, tableBodyElement!.children.length - 1);
316
+
317
+ const newRow: TableElement = {
318
+ type: TABLE_ROW_TYPE,
319
+ children: Array.from({ length: newColumnCount }, (_, cellIndex) => {
320
+ let referenceCell: TableElement | undefined;
321
+
322
+ if (cellIndex < newColumnCount - 1 && Element.isElement(lastRow) && lastRow.type.includes(TABLE_ROW_TYPE)) {
323
+ const cell = lastRow.children[cellIndex];
324
+
325
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
326
+ referenceCell = cell as TableElement;
327
+ }
328
+ } else {
329
+ if (Element.isElement(lastRow) && lastRow.type.includes(TABLE_ROW_TYPE)) {
330
+ const cell = lastRow.children[lastRow.children.length - 1];
331
+
332
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
333
+ referenceCell = cell as TableElement;
334
+ }
335
+ }
336
+ }
337
+
338
+ return createTableCell(referenceCell);
339
+ }),
340
+ };
341
+
342
+ const newRowPath = [...tableBodyPath, tableBodyElement!.children.length];
343
+
344
+ Transforms.insertNodes(editor, newRow, { at: newRowPath });
345
+
346
+ // 調整欄位寬度(新增欄位在最後)
347
+ const currentWidths = getColumnWidths(element);
348
+
349
+ if (currentWidths.length > 0) {
350
+ // 新欄位插入在最後(columnCount 位置)
351
+ const insertIndex = columnCount;
352
+ // 獲取當前的 pinned columns 資訊
353
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
354
+ const newWidths = calculateColumnWidthsAfterAdd(currentWidths, insertIndex, pinnedColumnIndices);
355
+
356
+ setColumnWidths(editor, element, newWidths);
357
+ }
358
+ });
359
+ } catch (error) {
360
+ console.warn('Failed to add column and row:', error);
361
+ }
362
+ }, [editor, element]);
363
+
364
+ const deleteRow: TableContextType['deleteRow'] = useCallback(
365
+ (rowIndex) => {
366
+ try {
367
+ const tableStructure = getTableStructure(editor, element);
368
+
369
+ if (!tableStructure) return;
370
+
371
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, headerRowCount } = tableStructure;
372
+
373
+ // 檢查是否刪除 Header 行
374
+ if (rowIndex < headerRowCount) {
375
+ if (!tableHeaderElement || !tableHeaderPath) return;
376
+
377
+ const headerRowPath = [...tableHeaderPath, rowIndex];
378
+
379
+ Transforms.removeNodes(editor, { at: headerRowPath });
380
+
381
+ // 如果是最後一個 header 行,移除整個 header 元素
382
+ if (headerRowCount <= 1) {
383
+ Transforms.removeNodes(editor, { at: tableHeaderPath });
384
+ }
385
+
386
+ return;
387
+ }
388
+
389
+ // 刪除 Body 行
390
+ const bodyRowIndex = rowIndex - headerRowCount;
391
+
392
+ if (bodyRowIndex < 0 || bodyRowIndex >= tableBodyElement!.children.length) {
393
+ console.warn('Invalid row index for deletion');
394
+
395
+ return;
396
+ }
397
+
398
+ if (tableBodyElement!.children.length <= 1) {
399
+ console.warn('Cannot delete the last row');
400
+
401
+ return;
402
+ }
403
+
404
+ const rowPath = [...tableBodyPath, bodyRowIndex];
405
+
406
+ Transforms.removeNodes(editor, { at: rowPath });
407
+ } catch (error) {
408
+ console.warn('Failed to delete row:', error);
409
+ }
410
+ },
411
+ [editor, element],
412
+ );
413
+
414
+ const deleteColumn: TableContextType['deleteColumn'] = useCallback(
415
+ (columnIndex) => {
416
+ try {
417
+ const tableStructure = getTableStructure(editor, element);
418
+
419
+ if (!tableStructure) return;
420
+
421
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, columnCount } = tableStructure;
422
+
423
+ // 檢查是否有足夠的列(不允許刪除最後一列)
424
+ if (columnCount <= 1) {
425
+ console.warn('Cannot delete the last column');
426
+
427
+ return;
428
+ }
429
+
430
+ // 檢查 columnIndex 是否有效
431
+ if (columnIndex < 0 || columnIndex >= columnCount) {
432
+ console.warn('Invalid column index for deletion');
433
+
434
+ return;
435
+ }
436
+
437
+ editor.withoutNormalizing(() => {
438
+ // 從 Header 中刪除列
439
+ if (tableHeaderElement && tableHeaderPath) {
440
+ // 以反向順序刪除
441
+ for (let rowIndex = tableHeaderElement.children.length - 1; rowIndex >= 0; rowIndex--) {
442
+ const headerRow = tableHeaderElement.children[rowIndex];
443
+
444
+ if (Element.isElement(headerRow) && headerRow.type.includes(TABLE_ROW_TYPE)) {
445
+ const headerCellPath = [...tableHeaderPath, rowIndex, columnIndex];
446
+
447
+ Transforms.removeNodes(editor, { at: headerCellPath });
448
+ }
449
+ }
450
+ }
451
+
452
+ // 從 Body 中刪除列
453
+ for (let rowIndex = tableBodyElement!.children.length - 1; rowIndex >= 0; rowIndex--) {
454
+ const row = tableBodyElement!.children[rowIndex];
455
+
456
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
457
+ const cellPath = [...tableBodyPath, rowIndex, columnIndex];
458
+
459
+ Transforms.removeNodes(editor, { at: cellPath });
460
+ }
461
+ }
462
+
463
+ // 調整欄位寬度
464
+ const currentWidths = getColumnWidths(element);
465
+
466
+ if (currentWidths.length > 0) {
467
+ const newWidths = calculateColumnWidthsAfterDelete(currentWidths, columnIndex);
468
+
469
+ setColumnWidths(editor, element, newWidths);
470
+ }
471
+ });
472
+ } catch (error) {
473
+ console.warn('Failed to delete column:', error);
474
+ }
475
+ },
476
+ [editor, element],
477
+ );
478
+
479
+ const moveRowToBody: TableContextType['moveRowToBody'] = useCallback(
480
+ (rowIndex: number) => {
481
+ try {
482
+ const tableStructure = getTableStructure(editor, element);
483
+
484
+ if (!tableStructure) return;
485
+
486
+ const { tableHeaderElement, tableHeaderPath, tableBodyPath } = tableStructure;
487
+
488
+ if (!tableHeaderElement || !tableHeaderPath) return;
489
+
490
+ // 檢查行是否存在於 header 中
491
+ if (rowIndex >= tableHeaderElement.children.length) {
492
+ console.warn('Invalid header row index:', rowIndex);
493
+
494
+ return;
495
+ }
496
+
497
+ const rowToMove = tableHeaderElement.children[rowIndex];
498
+
499
+ if (!Element.isElement(rowToMove) || !rowToMove.type.includes(TABLE_ROW_TYPE)) return;
500
+
501
+ const rowPath = [...tableHeaderPath, rowIndex];
502
+
503
+ // 移動前移除所有 cell 的 pinned 屬性
504
+ rowToMove.children.forEach((cell, columnIndex) => {
505
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE) && (cell as TableElement).pinned) {
506
+ if (cell.pinned && isColumnPinned(columnIndex)) {
507
+ const cellPath = [...rowPath, columnIndex];
508
+
509
+ Transforms.unsetNodes(editor, 'pinned', { at: cellPath });
510
+ }
511
+ }
512
+ });
513
+
514
+ // 移動行到 body 的開始位置
515
+ const bodyTargetPath = [...tableBodyPath, 0];
516
+
517
+ Transforms.moveNodes(editor, {
518
+ at: rowPath,
519
+ to: bodyTargetPath,
520
+ });
521
+ } catch (error) {
522
+ console.warn('Failed to move row to body:', error);
523
+ }
524
+ },
525
+ [editor, element, isColumnPinned],
526
+ );
527
+
528
+ const moveRowToHeader: TableContextType['moveRowToHeader'] = useCallback(
529
+ (rowIndex: number, customProps?: Pick<TableElement, 'pinned'>) => {
530
+ try {
531
+ const tableStructure = getTableStructure(editor, element);
532
+
533
+ if (!tableStructure) return;
534
+
535
+ const { tableHeaderElement, tableBodyElement, tableMainPath, tableHeaderPath, tableBodyPath, headerRowCount } =
536
+ tableStructure;
537
+
538
+ // 計算正確的 body 行索引
539
+ const bodyRowIndex = rowIndex - headerRowCount;
540
+
541
+ // 檢查 body 行索引是否有效
542
+ if (bodyRowIndex < 0 || bodyRowIndex >= tableBodyElement!.children.length) {
543
+ console.warn('Invalid body row index:', bodyRowIndex);
544
+
545
+ return;
546
+ }
547
+
548
+ // 檢查行是否存在
549
+ const rowToMove = tableBodyElement!.children[bodyRowIndex];
550
+
551
+ if (!Element.isElement(rowToMove) || !rowToMove.type.includes(TABLE_ROW_TYPE)) return;
552
+
553
+ // 檢查 header 中是否已有 pinned rows(一致性規則檢查)
554
+ const hasExistingPinnedRows = tableStructure ? hasAnyPinnedRows(tableStructure) : false;
555
+
556
+ // 如果有現有的 pinned rows 且沒有提供自定義屬性,自動設置 pinned 以保持一致性
557
+ const finalProps = customProps || (hasExistingPinnedRows ? { pinned: true } : undefined);
558
+
559
+ // 如果提供了 finalProps,則應用到 cells
560
+ const processedRow = finalProps
561
+ ? {
562
+ ...rowToMove,
563
+ children: rowToMove.children.map((cell) => {
564
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
565
+ return {
566
+ ...cell,
567
+ ...finalProps,
568
+ } as TableElement;
569
+ }
570
+
571
+ return cell;
572
+ }),
573
+ }
574
+ : rowToMove;
575
+
576
+ const rowPath = [...tableBodyPath, bodyRowIndex];
577
+
578
+ // 如果 header 不存在,先創建它
579
+ if (!tableHeaderElement) {
580
+ const newHeader = {
581
+ type: TABLE_HEADER_TYPE,
582
+ children: [processedRow],
583
+ };
584
+
585
+ const headerInsertPath = [...tableMainPath, 0];
586
+
587
+ Editor.withoutNormalizing(editor, () => {
588
+ Transforms.removeNodes(editor, { at: rowPath });
589
+ Transforms.insertNodes(editor, newHeader, { at: headerInsertPath });
590
+ });
591
+ } else {
592
+ // 如果這是 pinned row,找到正確的插入位置(pinned rows 在頂部)
593
+ let headerTargetPath: number[];
594
+
595
+ if (finalProps?.pinned) {
596
+ let insertIndex = 0;
597
+
598
+ for (const [index, headerRow] of tableHeaderElement.children.entries()) {
599
+ if (Element.isElement(headerRow)) {
600
+ const hasNonPinnedCell = headerRow.children.some(
601
+ (cell) => Element.isElement(cell) && !(cell as TableElement).pinned,
602
+ );
603
+
604
+ if (hasNonPinnedCell) {
605
+ break;
606
+ }
607
+
608
+ insertIndex = index + 1;
609
+ }
610
+ }
611
+
612
+ headerTargetPath = [...tableHeaderPath!, insertIndex];
613
+
614
+ Editor.withoutNormalizing(editor, () => {
615
+ Transforms.removeNodes(editor, { at: rowPath });
616
+ Transforms.insertNodes(editor, processedRow, { at: headerTargetPath });
617
+ });
618
+ } else {
619
+ // 移動行到現有 header 的末尾
620
+ headerTargetPath = [...tableHeaderPath!, tableHeaderElement.children.length];
621
+ Transforms.moveNodes(editor, {
622
+ at: rowPath,
623
+ to: headerTargetPath,
624
+ });
625
+ }
626
+ }
627
+ } catch (error) {
628
+ console.warn('Failed to move row to header:', error);
629
+ }
630
+ },
631
+ [editor, element],
632
+ );
633
+
634
+ const unsetColumnAsTitle: TableContextType['unsetColumnAsTitle'] = useCallback(
635
+ (columnIndex: number) => {
636
+ try {
637
+ const tableStructure = getTableStructure(editor, element);
638
+
639
+ if (!tableStructure) return;
640
+
641
+ const { tableHeaderElement, tableBodyElement, tableMainElement } = tableStructure;
642
+
643
+ // 獲取 table 的實際寬度(用於轉換為混合模式)
644
+ let tableWidth = 0;
645
+
646
+ if (tableMainElement) {
647
+ const tableDOMElement = ReactEditor.toDOMNode(editor, tableMainElement);
648
+
649
+ if (tableDOMElement instanceof HTMLElement) {
650
+ tableWidth = tableDOMElement.getBoundingClientRect().width;
651
+ }
652
+ }
653
+
654
+ const processContainer = (containerElement: TableElement) => {
655
+ if (!Element.isElement(containerElement)) return;
656
+
657
+ const containerPath = ReactEditor.findPath(editor, containerElement);
658
+ const firstRow = containerElement.children[0];
659
+
660
+ // 找到 column 標題列的尾端
661
+ let targetColumnIndex = 0;
662
+
663
+ if (Element.isElement(firstRow) && firstRow.type.includes(TABLE_ROW_TYPE)) {
664
+ for (let i = 0; i < firstRow.children.length; i++) {
665
+ const cell = firstRow.children[i];
666
+
667
+ if (
668
+ Element.isElement(cell) &&
669
+ cell.type.includes(TABLE_CELL_TYPE) &&
670
+ cell.treatAsTitle &&
671
+ i !== columnIndex
672
+ ) {
673
+ targetColumnIndex = i + 1;
674
+ }
675
+ }
676
+ }
677
+
678
+ containerElement.children.forEach((row, rowIndex) => {
679
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
680
+ const cell = row.children[columnIndex];
681
+
682
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
683
+ const cellPath = [...containerPath, rowIndex, columnIndex];
684
+
685
+ Transforms.unsetNodes(editor, 'treatAsTitle', { at: cellPath });
686
+
687
+ if (cell.pinned && !isRowPinned(rowIndex)) {
688
+ Transforms.unsetNodes(editor, 'pinned', { at: cellPath });
689
+ }
690
+ }
691
+ }
692
+ });
693
+
694
+ if (columnIndex < targetColumnIndex) {
695
+ const actualTargetIndex = targetColumnIndex - 1;
696
+
697
+ for (let rowIndex = containerElement.children.length - 1; rowIndex >= 0; rowIndex--) {
698
+ const row = containerElement.children[rowIndex];
699
+
700
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
701
+ const fromPath = [...containerPath, rowIndex, columnIndex];
702
+ const toPath = [...containerPath, rowIndex, actualTargetIndex];
703
+
704
+ Transforms.moveNodes(editor, {
705
+ at: fromPath,
706
+ to: toPath,
707
+ });
708
+ }
709
+ }
710
+
711
+ // 調整 columnWidths:將 columnIndex 的寬度移動到 actualTargetIndex
712
+ const currentWidths = getColumnWidths(element);
713
+
714
+ if (currentWidths.length > 0) {
715
+ const movedWidths = moveOrSwapColumnWidth(currentWidths, columnIndex, actualTargetIndex, 'move');
716
+
717
+ // 檢查移動後是否還有 pinned columns
718
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
719
+
720
+ // 更新釘選欄位索引(移除當前欄位,並調整其他欄位的索引)
721
+ const updatedPinnedIndices = pinnedColumnIndices
722
+ .filter((idx) => idx !== columnIndex)
723
+ .map((idx) => {
724
+ if (idx > columnIndex && idx <= actualTargetIndex) return idx - 1;
725
+
726
+ return idx;
727
+ })
728
+ .sort((a, b) => a - b);
729
+
730
+ // 如果還有 pinned columns,轉換為混合模式;否則可能轉回全 percentage 模式
731
+ if (updatedPinnedIndices.length > 0 && tableWidth > 0) {
732
+ const mixedWidths = convertToMixedWidthMode(movedWidths, updatedPinnedIndices, tableWidth);
733
+
734
+ setColumnWidths(editor, element, mixedWidths);
735
+ } else {
736
+ // 沒有 pinned columns 了,使用原本的寬度
737
+ setColumnWidths(editor, element, movedWidths);
738
+ }
739
+ }
740
+ } else {
741
+ // 即使沒有移動位置,也需要檢查是否需要更新寬度模式
742
+ const currentWidths = getColumnWidths(element);
743
+
744
+ if (currentWidths.length > 0) {
745
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
746
+
747
+ // 移除當前欄位
748
+ const updatedPinnedIndices = pinnedColumnIndices
749
+ .filter((idx) => idx !== columnIndex)
750
+ .sort((a, b) => a - b);
751
+
752
+ // 如果還有 pinned columns,轉換為混合模式;否則可能轉回全 percentage 模式
753
+ if (updatedPinnedIndices.length > 0 && tableWidth > 0) {
754
+ const mixedWidths = convertToMixedWidthMode(currentWidths, updatedPinnedIndices, tableWidth);
755
+
756
+ setColumnWidths(editor, element, mixedWidths);
757
+ }
758
+ // 如果沒有 pinned columns,保持原樣(可能已經是全 percentage 了)
759
+ }
760
+ }
761
+ };
762
+
763
+ if (tableHeaderElement) {
764
+ processContainer(tableHeaderElement);
765
+ }
766
+
767
+ if (tableBodyElement) {
768
+ processContainer(tableBodyElement);
769
+ }
770
+ } catch (error) {
771
+ console.warn('Failed to unset column as title:', error);
772
+ }
773
+ },
774
+ [editor, element, isRowPinned],
775
+ );
776
+
777
+ const setColumnAsTitle: TableContextType['setColumnAsTitle'] = useCallback(
778
+ (columnIndex: number, customProps?: Pick<TableElement, 'pinned'>) => {
779
+ try {
780
+ const tableStructure = getTableStructure(editor, element);
781
+
782
+ if (!tableStructure) return;
783
+
784
+ const { tableHeaderElement, tableBodyElement, tableMainElement } = tableStructure;
785
+
786
+ // 檢查是否已有 pinned columns
787
+ const hasExistingPinnedColumns = hasAnyPinnedColumns(tableStructure);
788
+
789
+ // 如果有現有的 pinned columns 且沒有提供自定義屬性,自動設置 pinned 以保持一致性
790
+ const finalProps = customProps || (hasExistingPinnedColumns ? { pinned: true } : undefined);
791
+
792
+ // 獲取 table 的實際寬度(用於轉換為混合模式)
793
+ let tableWidth = 0;
794
+
795
+ if (tableMainElement) {
796
+ const tableDOMElement = ReactEditor.toDOMNode(editor, tableMainElement);
797
+
798
+ if (tableDOMElement instanceof HTMLElement) {
799
+ tableWidth = tableDOMElement.getBoundingClientRect().width;
800
+ }
801
+ }
802
+
803
+ const processContainer = (containerElement: TableElement) => {
804
+ if (!Element.isElement(containerElement)) return;
805
+
806
+ const containerPath = ReactEditor.findPath(editor, containerElement);
807
+ const firstRow = containerElement.children[0];
808
+
809
+ // 先找到 column 標題列的尾端
810
+ let targetColumnIndex = 0;
811
+
812
+ if (Element.isElement(firstRow) && firstRow.type.includes(TABLE_ROW_TYPE)) {
813
+ for (let i = 0; i < firstRow.children.length; i++) {
814
+ const cell = firstRow.children[i];
815
+
816
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE) && cell.treatAsTitle) {
817
+ targetColumnIndex = i + 1;
818
+ } else {
819
+ break;
820
+ }
821
+ }
822
+ }
823
+
824
+ containerElement.children.forEach((row, rowIndex) => {
825
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
826
+ row.children.forEach((cell, childColIndex) => {
827
+ const cellPath = [...containerPath, rowIndex, childColIndex];
828
+
829
+ if (childColIndex === columnIndex) {
830
+ const nodeProps = finalProps ? { treatAsTitle: true, ...finalProps } : { treatAsTitle: true };
831
+
832
+ Transforms.setNodes(editor, nodeProps as Partial<TableElement>, { at: cellPath });
833
+ } else if (finalProps?.pinned) {
834
+ // 確保其他 title column 也有 pinned 屬性以保持一致性
835
+ if (Element.isElement(cell) && cell.treatAsTitle) {
836
+ Transforms.setNodes(editor, { pinned: true } as Partial<TableElement>, { at: cellPath });
837
+ }
838
+ }
839
+ });
840
+ }
841
+ });
842
+
843
+ // 檢查是否需要移動位置
844
+ const needsMove = columnIndex >= targetColumnIndex && columnIndex !== targetColumnIndex;
845
+
846
+ if (needsMove) {
847
+ for (let rowIndex = containerElement.children.length - 1; rowIndex >= 0; rowIndex--) {
848
+ const row = containerElement.children[rowIndex];
849
+
850
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
851
+ const fromPath = [...containerPath, rowIndex, columnIndex];
852
+ const toPath = [...containerPath, rowIndex, targetColumnIndex];
853
+
854
+ Transforms.moveNodes(editor, {
855
+ at: fromPath,
856
+ to: toPath,
857
+ });
858
+ }
859
+ }
860
+
861
+ // 調整 columnWidths:將 columnIndex 的寬度移動到 targetColumnIndex
862
+ const currentWidths = getColumnWidths(element);
863
+
864
+ if (currentWidths.length > 0) {
865
+ const movedWidths = moveOrSwapColumnWidth(currentWidths, columnIndex, targetColumnIndex, 'move');
866
+
867
+ // 如果設定了 pinned,需要轉換為混合模式
868
+ if (finalProps?.pinned && tableWidth > 0) {
869
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
870
+
871
+ // 更新釘選欄位索引
872
+ const updatedPinnedIndices = pinnedColumnIndices
873
+ .map((idx) => {
874
+ if (idx === columnIndex) return targetColumnIndex;
875
+ if (idx >= targetColumnIndex && idx < columnIndex) return idx + 1;
876
+
877
+ return idx;
878
+ })
879
+ .concat(targetColumnIndex)
880
+ .filter((idx, i, arr) => arr.indexOf(idx) === i)
881
+ .sort((a, b) => a - b);
882
+
883
+ const mixedWidths = convertToMixedWidthMode(movedWidths, updatedPinnedIndices, tableWidth);
884
+
885
+ setColumnWidths(editor, element, mixedWidths);
886
+ } else {
887
+ setColumnWidths(editor, element, movedWidths);
888
+ }
889
+ }
890
+ } else if (finalProps?.pinned && tableWidth > 0) {
891
+ // 即使沒有移動位置,如果設定了 pinned,也需要轉換為混合模式
892
+ const currentWidths = getColumnWidths(element);
893
+
894
+ if (currentWidths.length > 0) {
895
+ const { pinnedColumnIndices } = getPinnedColumnsInfo(element);
896
+
897
+ // 找出所有已經是 title 的 columns
898
+ const titleColumnIndices = new Set<number>();
899
+ const firstRow = containerElement.children[0];
900
+
901
+ if (Element.isElement(firstRow) && firstRow.type.includes(TABLE_ROW_TYPE)) {
902
+ (firstRow.children as TableElement[]).forEach((cell: TableElement, colIndex: number) => {
903
+ if (
904
+ Element.isElement(cell) &&
905
+ (cell as TableElement).type.includes(TABLE_CELL_TYPE) &&
906
+ (cell as TableElement).treatAsTitle
907
+ ) {
908
+ titleColumnIndices.add(colIndex);
909
+ }
910
+ });
911
+ }
912
+
913
+ // 將當前 column 加入 title columns
914
+ titleColumnIndices.add(columnIndex);
915
+
916
+ // 合併所有 pinned columns 和 title columns
917
+ const allPinnedIndices = new Set([...pinnedColumnIndices, ...Array.from(titleColumnIndices)]);
918
+ const updatedPinnedIndices = Array.from(allPinnedIndices).sort((a, b) => a - b);
919
+ const mixedWidths = convertToMixedWidthMode(currentWidths, updatedPinnedIndices, tableWidth);
920
+
921
+ setColumnWidths(editor, element, mixedWidths);
922
+ }
923
+ }
924
+ };
925
+
926
+ if (tableHeaderElement) {
927
+ processContainer(tableHeaderElement);
928
+ }
929
+
930
+ if (tableBodyElement) {
931
+ processContainer(tableBodyElement);
932
+ }
933
+ } catch (error) {
934
+ console.warn('Failed to set column as title:', error);
935
+ }
936
+ },
937
+ [editor, element],
938
+ );
939
+
940
+ const pinColumn: TableContextType['pinColumn'] = useCallback(
941
+ (columnIndex: number) => {
942
+ try {
943
+ setColumnAsTitle(columnIndex, { pinned: true });
944
+ } catch (error) {
945
+ console.warn('Failed to pin column:', error);
946
+ }
947
+ },
948
+ [setColumnAsTitle],
949
+ );
950
+
951
+ const unpinColumn: TableContextType['unpinColumn'] = useCallback(() => {
952
+ try {
953
+ const tableStructure = getTableStructure(editor, element);
954
+
955
+ if (!tableStructure) return;
956
+
957
+ const { tableHeaderElement, tableBodyElement } = tableStructure;
958
+
959
+ // 檢查 column 與 row 之間是否有交叉 pinned 狀態的關係
960
+ const shouldRowRemainPinned = (rowElement: TableElement, excludeColumns: Set<number>): boolean => {
961
+ let hasNonExcludedCells = false;
962
+
963
+ for (let colIndex = 0; colIndex < rowElement.children.length; colIndex++) {
964
+ const cell = rowElement.children[colIndex];
965
+
966
+ if (!Element.isElement(cell) || !cell.type.includes(TABLE_CELL_TYPE)) continue;
967
+ if (excludeColumns.has(colIndex)) continue;
968
+
969
+ hasNonExcludedCells = true;
970
+
971
+ if (!cell.pinned) {
972
+ return false;
973
+ }
974
+ }
975
+
976
+ return hasNonExcludedCells;
977
+ };
978
+
979
+ const processContainer = (containerElement: TableElement) => {
980
+ const containerPath = ReactEditor.findPath(editor, containerElement);
981
+ const treatAsTitleColumns = new Set<number>();
982
+
983
+ containerElement.children.forEach((row) => {
984
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
985
+ row.children.forEach((cell, colIndex) => {
986
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE) && cell.treatAsTitle) {
987
+ treatAsTitleColumns.add(colIndex);
988
+ }
989
+ });
990
+ }
991
+ });
992
+
993
+ containerElement.children.forEach((row, rowIndex) => {
994
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
995
+ const rowShouldRemainPinned = shouldRowRemainPinned(row as TableElement, treatAsTitleColumns);
996
+
997
+ row.children.forEach((cell, colIndex) => {
998
+ if (treatAsTitleColumns.has(colIndex) && Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
999
+ const cellPath = [...containerPath, rowIndex, colIndex];
1000
+
1001
+ Transforms.unsetNodes(editor, 'treatAsTitle', { at: cellPath });
1002
+
1003
+ if (!rowShouldRemainPinned) {
1004
+ Transforms.unsetNodes(editor, 'pinned', { at: cellPath });
1005
+ }
1006
+ }
1007
+ });
1008
+ }
1009
+ });
1010
+ };
1011
+
1012
+ if (tableHeaderElement) {
1013
+ processContainer(tableHeaderElement);
1014
+ }
1015
+
1016
+ if (tableBodyElement) {
1017
+ processContainer(tableBodyElement);
1018
+ }
1019
+
1020
+ // 轉換回純百分比模式
1021
+ const currentWidths = getColumnWidths(element);
1022
+ const percentageWidths = convertToPercentageMode(currentWidths);
1023
+
1024
+ setColumnWidths(editor, element, percentageWidths);
1025
+ } catch (error) {
1026
+ console.warn('Failed to unpin column:', error);
1027
+ }
1028
+ }, [editor, element]);
1029
+
1030
+ const setPinnedOnRowCells = useCallback(
1031
+ (row: TableElement, pinned: boolean) => {
1032
+ try {
1033
+ for (const [, cell] of row.children.entries()) {
1034
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
1035
+ const cellPath = ReactEditor.findPath(editor, cell);
1036
+
1037
+ if (pinned) {
1038
+ Transforms.setNodes(editor, { pinned: true } as Partial<TableElement>, { at: cellPath });
1039
+ } else {
1040
+ Transforms.unsetNodes(editor, 'pinned', { at: cellPath });
1041
+ }
1042
+ }
1043
+ }
1044
+ } catch (error) {
1045
+ console.warn('Failed to set pinned on row cells:', error);
1046
+ }
1047
+ },
1048
+ [editor],
1049
+ );
1050
+
1051
+ const setPinnedOnAllHeaderRows = useCallback(
1052
+ (headerElement: TableElement, pinned: boolean) => {
1053
+ try {
1054
+ for (const headerRow of headerElement.children) {
1055
+ if (Element.isElement(headerRow) && headerRow.type.includes(TABLE_ROW_TYPE)) {
1056
+ setPinnedOnRowCells(headerRow as TableElement, pinned);
1057
+ }
1058
+ }
1059
+ } catch (error) {
1060
+ console.warn('Failed to set pinned on all header rows:', error);
1061
+ }
1062
+ },
1063
+ [setPinnedOnRowCells],
1064
+ );
1065
+
1066
+ const pinRow: TableContextType['pinRow'] = useCallback(
1067
+ (rowIndex: number) => {
1068
+ try {
1069
+ const tableStructure = getTableStructure(editor, element);
1070
+
1071
+ if (!tableStructure) return;
1072
+
1073
+ const { tableHeaderElement, headerRowCount } = tableStructure;
1074
+
1075
+ // 先將目前所有的 header rows 都設為 pinned
1076
+ if (tableHeaderElement) {
1077
+ setPinnedOnAllHeaderRows(tableHeaderElement, true);
1078
+ }
1079
+
1080
+ // 然後將目標 row 移動到 header 中並設為 pinned
1081
+ if (rowIndex >= headerRowCount) {
1082
+ moveRowToHeader(rowIndex, { pinned: true });
1083
+ }
1084
+ } catch (error) {
1085
+ console.warn('Failed to pin row:', error);
1086
+ }
1087
+ },
1088
+ [editor, element, moveRowToHeader, setPinnedOnAllHeaderRows],
1089
+ );
1090
+
1091
+ const unpinRow: TableContextType['unpinRow'] = useCallback(() => {
1092
+ try {
1093
+ const tableStructure = getTableStructure(editor, element);
1094
+
1095
+ if (!tableStructure) return;
1096
+
1097
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath } = tableStructure;
1098
+
1099
+ if (!tableHeaderElement || !tableBodyElement) return;
1100
+
1101
+ // 檢查 column 與 row 之間是否有交叉 pinned 狀態的關係
1102
+ const shouldColumnRemainPinned = (columnIndex: number): boolean => {
1103
+ const containers = [tableHeaderElement, tableBodyElement];
1104
+
1105
+ for (const container of containers) {
1106
+ if (!Element.isElement(container)) continue;
1107
+
1108
+ for (const row of container.children) {
1109
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
1110
+ const cell = row.children[columnIndex];
1111
+
1112
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
1113
+ // 如果這個 cell 在 body 中且有 pinned 屬性,則 column 應該保持 pinned
1114
+ if (container.type === tableBodyElement.type && cell.pinned) {
1115
+ return true;
1116
+ }
1117
+ }
1118
+ }
1119
+ }
1120
+ }
1121
+
1122
+ return false;
1123
+ };
1124
+
1125
+ tableHeaderElement.children.forEach((row, headerRowIndex) => {
1126
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
1127
+ row.children.forEach((cell, colIndex) => {
1128
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
1129
+ const cellPath = [...tableHeaderPath!, headerRowIndex, colIndex];
1130
+
1131
+ if (!shouldColumnRemainPinned(colIndex)) {
1132
+ Transforms.unsetNodes(editor, 'pinned', { at: cellPath });
1133
+ }
1134
+ }
1135
+ });
1136
+ }
1137
+ });
1138
+
1139
+ const tableBodyPath = ReactEditor.findPath(editor, tableBodyElement);
1140
+
1141
+ for (let i = tableHeaderElement.children.length - 1; i >= 0; i--) {
1142
+ const row = tableHeaderElement.children[i];
1143
+
1144
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
1145
+ const fromPath = [...tableHeaderPath!, i];
1146
+ const toPath = [...tableBodyPath, 0];
1147
+
1148
+ Transforms.moveNodes(editor, {
1149
+ at: fromPath,
1150
+ to: toPath,
1151
+ });
1152
+ }
1153
+ }
1154
+ } catch (error) {
1155
+ console.warn('Failed to unpin row:', error);
1156
+ }
1157
+ }, [editor, element]);
1158
+
1159
+ /**
1160
+ * 內部函數:移動或交換列的位置
1161
+ * @param mode 'swap' 為交換相鄰位置(toolbar 按鈕),'move' 為移動到任意位置(拖曳)
1162
+ */
1163
+ const moveOrSwapRow = useCallback(
1164
+ (sourceRowIndex: number, targetRowIndex: number, mode: 'swap' | 'move' = 'move') => {
1165
+ try {
1166
+ const tableStructure = getTableStructure(editor, element);
1167
+
1168
+ if (!tableStructure) return;
1169
+
1170
+ const { tableHeaderElement, tableBodyElement, tableHeaderPath, tableBodyPath, headerRowCount } = tableStructure;
1171
+
1172
+ // 確定當前列和目標列所屬的容器
1173
+ const sourceInHeader = sourceRowIndex < headerRowCount;
1174
+ const targetInHeader = targetRowIndex < headerRowCount;
1175
+
1176
+ // 標題列只能與標題列互換/移動,一般列只能與一般列互換/移動
1177
+ if (sourceInHeader !== targetInHeader) {
1178
+ console.warn(`Cannot ${mode} row between header and body`);
1179
+
1180
+ return;
1181
+ }
1182
+
1183
+ // 檢查邊界
1184
+ if (sourceRowIndex === targetRowIndex) {
1185
+ return;
1186
+ }
1187
+
1188
+ let containerPath: number[];
1189
+ let sourceLocalIndex: number;
1190
+ let targetLocalIndex: number;
1191
+
1192
+ if (sourceInHeader) {
1193
+ // 在 header 中
1194
+ if (!tableHeaderElement || !tableHeaderPath) return;
1195
+
1196
+ containerPath = tableHeaderPath;
1197
+ sourceLocalIndex = sourceRowIndex;
1198
+ targetLocalIndex = targetRowIndex;
1199
+ } else {
1200
+ // 在 body 中
1201
+ if (!tableBodyElement) return;
1202
+
1203
+ containerPath = tableBodyPath;
1204
+ sourceLocalIndex = sourceRowIndex - headerRowCount;
1205
+ targetLocalIndex = targetRowIndex - headerRowCount;
1206
+ }
1207
+
1208
+ Editor.withoutNormalizing(editor, () => {
1209
+ if (mode === 'swap') {
1210
+ // swap 邏輯:交換兩個相鄰位置
1211
+ if (sourceRowIndex < targetRowIndex) {
1212
+ // 向下移動:先將源列移到目標位置之後
1213
+ const sourcePath = [...containerPath, sourceLocalIndex];
1214
+ const afterTargetPath = [...containerPath, targetLocalIndex];
1215
+
1216
+ Transforms.moveNodes(editor, {
1217
+ at: sourcePath,
1218
+ to: afterTargetPath,
1219
+ });
1220
+ } else {
1221
+ // 向上移動:先將目標列移到源位置之後
1222
+ const targetPath = [...containerPath, targetLocalIndex];
1223
+ const afterSourcePath = [...containerPath, sourceLocalIndex];
1224
+
1225
+ Transforms.moveNodes(editor, {
1226
+ at: targetPath,
1227
+ to: afterSourcePath,
1228
+ });
1229
+ }
1230
+ } else {
1231
+ // move 邏輯:直接移動到目標位置
1232
+ const sourcePath = [...containerPath, sourceLocalIndex];
1233
+ const targetPath = [...containerPath, targetLocalIndex];
1234
+
1235
+ Transforms.moveNodes(editor, {
1236
+ at: sourcePath,
1237
+ to: targetPath,
1238
+ });
1239
+ }
1240
+ });
1241
+ } catch (error) {
1242
+ console.warn(`Failed to ${mode} row:`, error);
1243
+ }
1244
+ },
1245
+ [editor, element],
1246
+ );
1247
+
1248
+ /**
1249
+ * 內部函數:移動或交換行的位置
1250
+ * @param mode 'swap' 為交換相鄰位置(toolbar 按鈕),'move' 為移動到任意位置(拖曳)
1251
+ */
1252
+ const moveOrSwapColumn = useCallback(
1253
+ (sourceColumnIndex: number, targetColumnIndex: number, mode: 'swap' | 'move' = 'move') => {
1254
+ try {
1255
+ const tableStructure = getTableStructure(editor, element);
1256
+
1257
+ if (!tableStructure) return;
1258
+
1259
+ const { tableHeaderElement, tableBodyElement, columnCount } = tableStructure;
1260
+
1261
+ // 檢查邊界
1262
+ if (targetColumnIndex < 0 || targetColumnIndex >= columnCount) {
1263
+ console.warn('Target column index out of bounds');
1264
+
1265
+ return;
1266
+ }
1267
+
1268
+ // 檢查是否為同一行
1269
+ if (sourceColumnIndex === targetColumnIndex) {
1270
+ return;
1271
+ }
1272
+
1273
+ // 檢查當前行和目標行是否都是標題行或都是一般行
1274
+ // 透過檢查第一個 cell 的 treatAsTitle 屬性來判斷
1275
+ const checkIsTitleColumn = (container: TableElement, colIndex: number): boolean => {
1276
+ if (!Element.isElement(container)) return false;
1277
+
1278
+ for (const row of container.children) {
1279
+ if (Element.isElement(row) && row.type.includes(TABLE_ROW_TYPE)) {
1280
+ const cell = row.children[colIndex];
1281
+
1282
+ if (Element.isElement(cell) && cell.type.includes(TABLE_CELL_TYPE)) {
1283
+ return !!cell.treatAsTitle;
1284
+ }
1285
+ }
1286
+ }
1287
+
1288
+ return false;
1289
+ };
1290
+
1291
+ // 檢查兩個 container 中的第一列來確定是否為標題行
1292
+ let sourceIsTitle = false;
1293
+ let targetIsTitle = false;
1294
+
1295
+ if (tableHeaderElement) {
1296
+ sourceIsTitle = sourceIsTitle || checkIsTitleColumn(tableHeaderElement, sourceColumnIndex);
1297
+ targetIsTitle = targetIsTitle || checkIsTitleColumn(tableHeaderElement, targetColumnIndex);
1298
+ }
1299
+
1300
+ if (tableBodyElement) {
1301
+ sourceIsTitle = sourceIsTitle || checkIsTitleColumn(tableBodyElement, sourceColumnIndex);
1302
+ targetIsTitle = targetIsTitle || checkIsTitleColumn(tableBodyElement, targetColumnIndex);
1303
+ }
1304
+
1305
+ // 標題行只能與標題行互換/移動,一般行只能與一般行互換/移動
1306
+ if (sourceIsTitle !== targetIsTitle) {
1307
+ console.warn(`Cannot ${mode} column between title and normal columns`);
1308
+
1309
+ return;
1310
+ }
1311
+
1312
+ // 根據模式選擇不同的 columnWidths 處理方式
1313
+ const currentWidths = getColumnWidths(element);
1314
+ const newWidths = moveOrSwapColumnWidth(currentWidths, sourceColumnIndex, targetColumnIndex, mode);
1315
+
1316
+ setColumnWidths(editor, element, newWidths);
1317
+
1318
+ // 對 header 和 body 中的所有列進行操作
1319
+ Editor.withoutNormalizing(editor, () => {
1320
+ const containers = [tableHeaderElement, tableBodyElement].filter(
1321
+ (c) => c && Element.isElement(c),
1322
+ ) as TableElement[];
1323
+
1324
+ for (const container of containers) {
1325
+ // 對每一列進行操作
1326
+ for (let rowIndex = 0; rowIndex < container.children.length; rowIndex++) {
1327
+ const row = container.children[rowIndex];
1328
+
1329
+ if (!Element.isElement(row) || !row.type.includes(TABLE_ROW_TYPE)) continue;
1330
+
1331
+ const containerPath = ReactEditor.findPath(editor, container);
1332
+ const rowPath = [...containerPath, rowIndex];
1333
+
1334
+ if (mode === 'swap') {
1335
+ // swap 邏輯:交換兩個相鄰位置
1336
+ if (sourceColumnIndex < targetColumnIndex) {
1337
+ // 向右移動:將源 cell 移到目標位置之後
1338
+ const sourceCellPath = [...rowPath, sourceColumnIndex];
1339
+ const afterTargetCellPath = [...rowPath, targetColumnIndex];
1340
+
1341
+ Transforms.moveNodes(editor, {
1342
+ at: sourceCellPath,
1343
+ to: afterTargetCellPath,
1344
+ });
1345
+ } else {
1346
+ // 向左移動:將目標 cell 移到源位置之後
1347
+ const targetCellPath = [...rowPath, targetColumnIndex];
1348
+ const afterSourceCellPath = [...rowPath, sourceColumnIndex];
1349
+
1350
+ Transforms.moveNodes(editor, {
1351
+ at: targetCellPath,
1352
+ to: afterSourceCellPath,
1353
+ });
1354
+ }
1355
+ } else {
1356
+ // move 邏輯:直接移動到目標位置
1357
+ const sourceCellPath = [...rowPath, sourceColumnIndex];
1358
+ const targetCellPath = [...rowPath, targetColumnIndex];
1359
+
1360
+ Transforms.moveNodes(editor, {
1361
+ at: sourceCellPath,
1362
+ to: targetCellPath,
1363
+ });
1364
+ }
1365
+ }
1366
+ }
1367
+ });
1368
+ } catch (error) {
1369
+ console.warn(`Failed to ${mode} column:`, error);
1370
+ }
1371
+ },
1372
+ [editor, element],
1373
+ );
1374
+
1375
+ return {
1376
+ addColumn,
1377
+ addRow,
1378
+ addColumnAndRow,
1379
+ deleteRow,
1380
+ deleteColumn,
1381
+ moveRowToBody,
1382
+ moveRowToHeader,
1383
+ unsetColumnAsTitle,
1384
+ setColumnAsTitle,
1385
+ pinColumn,
1386
+ unpinColumn,
1387
+ pinRow,
1388
+ unpinRow,
1389
+ isColumnPinned,
1390
+ isRowPinned,
1391
+ moveOrSwapRow,
1392
+ moveOrSwapColumn,
1393
+ };
1394
+ }