@liveblocks/react-ui 1.12.0-initial1

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 (391) hide show
  1. package/README.md +65 -0
  2. package/dist/components/Comment.js +473 -0
  3. package/dist/components/Comment.js.map +1 -0
  4. package/dist/components/Comment.mjs +447 -0
  5. package/dist/components/Comment.mjs.map +1 -0
  6. package/dist/components/Composer.js +299 -0
  7. package/dist/components/Composer.js.map +1 -0
  8. package/dist/components/Composer.mjs +297 -0
  9. package/dist/components/Composer.mjs.map +1 -0
  10. package/dist/components/InboxNotification.js +374 -0
  11. package/dist/components/InboxNotification.js.map +1 -0
  12. package/dist/components/InboxNotification.mjs +372 -0
  13. package/dist/components/InboxNotification.mjs.map +1 -0
  14. package/dist/components/InboxNotificationList.js +19 -0
  15. package/dist/components/InboxNotificationList.js.map +1 -0
  16. package/dist/components/InboxNotificationList.mjs +17 -0
  17. package/dist/components/InboxNotificationList.mjs.map +1 -0
  18. package/dist/components/Thread.js +188 -0
  19. package/dist/components/Thread.js.map +1 -0
  20. package/dist/components/Thread.mjs +167 -0
  21. package/dist/components/Thread.mjs.map +1 -0
  22. package/dist/components/internal/Attribution.js +26 -0
  23. package/dist/components/internal/Attribution.js.map +1 -0
  24. package/dist/components/internal/Attribution.mjs +24 -0
  25. package/dist/components/internal/Attribution.mjs.map +1 -0
  26. package/dist/components/internal/Avatar.js +40 -0
  27. package/dist/components/internal/Avatar.js.map +1 -0
  28. package/dist/components/internal/Avatar.mjs +38 -0
  29. package/dist/components/internal/Avatar.mjs.map +1 -0
  30. package/dist/components/internal/Button.js +24 -0
  31. package/dist/components/internal/Button.js.map +1 -0
  32. package/dist/components/internal/Button.mjs +22 -0
  33. package/dist/components/internal/Button.mjs.map +1 -0
  34. package/dist/components/internal/Dropdown.js +72 -0
  35. package/dist/components/internal/Dropdown.js.map +1 -0
  36. package/dist/components/internal/Dropdown.mjs +47 -0
  37. package/dist/components/internal/Dropdown.mjs.map +1 -0
  38. package/dist/components/internal/Emoji.js +18 -0
  39. package/dist/components/internal/Emoji.js.map +1 -0
  40. package/dist/components/internal/Emoji.mjs +16 -0
  41. package/dist/components/internal/Emoji.mjs.map +1 -0
  42. package/dist/components/internal/EmojiPicker.js +186 -0
  43. package/dist/components/internal/EmojiPicker.js.map +1 -0
  44. package/dist/components/internal/EmojiPicker.mjs +162 -0
  45. package/dist/components/internal/EmojiPicker.mjs.map +1 -0
  46. package/dist/components/internal/Icon.js +28 -0
  47. package/dist/components/internal/Icon.js.map +1 -0
  48. package/dist/components/internal/Icon.mjs +24 -0
  49. package/dist/components/internal/Icon.mjs.map +1 -0
  50. package/dist/components/internal/InboxNotificationThread.js +116 -0
  51. package/dist/components/internal/InboxNotificationThread.js.map +1 -0
  52. package/dist/components/internal/InboxNotificationThread.mjs +112 -0
  53. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -0
  54. package/dist/components/internal/List.js +34 -0
  55. package/dist/components/internal/List.js.map +1 -0
  56. package/dist/components/internal/List.mjs +32 -0
  57. package/dist/components/internal/List.mjs.map +1 -0
  58. package/dist/components/internal/Room.js +22 -0
  59. package/dist/components/internal/Room.js.map +1 -0
  60. package/dist/components/internal/Room.mjs +20 -0
  61. package/dist/components/internal/Room.mjs.map +1 -0
  62. package/dist/components/internal/Tooltip.js +91 -0
  63. package/dist/components/internal/Tooltip.js.map +1 -0
  64. package/dist/components/internal/Tooltip.mjs +65 -0
  65. package/dist/components/internal/Tooltip.mjs.map +1 -0
  66. package/dist/components/internal/User.js +41 -0
  67. package/dist/components/internal/User.js.map +1 -0
  68. package/dist/components/internal/User.mjs +39 -0
  69. package/dist/components/internal/User.mjs.map +1 -0
  70. package/dist/components.js +64 -0
  71. package/dist/components.js.map +1 -0
  72. package/dist/components.mjs +41 -0
  73. package/dist/components.mjs.map +1 -0
  74. package/dist/config.js +33 -0
  75. package/dist/config.js.map +1 -0
  76. package/dist/config.mjs +30 -0
  77. package/dist/config.mjs.map +1 -0
  78. package/dist/constants.js +10 -0
  79. package/dist/constants.js.map +1 -0
  80. package/dist/constants.mjs +6 -0
  81. package/dist/constants.mjs.map +1 -0
  82. package/dist/icons/ArrowDown.js +15 -0
  83. package/dist/icons/ArrowDown.js.map +1 -0
  84. package/dist/icons/ArrowDown.mjs +13 -0
  85. package/dist/icons/ArrowDown.mjs.map +1 -0
  86. package/dist/icons/Check.js +15 -0
  87. package/dist/icons/Check.js.map +1 -0
  88. package/dist/icons/Check.mjs +13 -0
  89. package/dist/icons/Check.mjs.map +1 -0
  90. package/dist/icons/Cross.js +17 -0
  91. package/dist/icons/Cross.js.map +1 -0
  92. package/dist/icons/Cross.mjs +15 -0
  93. package/dist/icons/Cross.mjs.map +1 -0
  94. package/dist/icons/Delete.js +15 -0
  95. package/dist/icons/Delete.js.map +1 -0
  96. package/dist/icons/Delete.mjs +13 -0
  97. package/dist/icons/Delete.mjs.map +1 -0
  98. package/dist/icons/Edit.js +15 -0
  99. package/dist/icons/Edit.js.map +1 -0
  100. package/dist/icons/Edit.mjs +13 -0
  101. package/dist/icons/Edit.mjs.map +1 -0
  102. package/dist/icons/Ellipsis.js +26 -0
  103. package/dist/icons/Ellipsis.js.map +1 -0
  104. package/dist/icons/Ellipsis.mjs +24 -0
  105. package/dist/icons/Ellipsis.mjs.map +1 -0
  106. package/dist/icons/Emoji.js +27 -0
  107. package/dist/icons/Emoji.js.map +1 -0
  108. package/dist/icons/Emoji.mjs +25 -0
  109. package/dist/icons/Emoji.mjs.map +1 -0
  110. package/dist/icons/EmojiAdd.js +29 -0
  111. package/dist/icons/EmojiAdd.js.map +1 -0
  112. package/dist/icons/EmojiAdd.mjs +27 -0
  113. package/dist/icons/EmojiAdd.mjs.map +1 -0
  114. package/dist/icons/Mention.js +17 -0
  115. package/dist/icons/Mention.js.map +1 -0
  116. package/dist/icons/Mention.mjs +15 -0
  117. package/dist/icons/Mention.mjs.map +1 -0
  118. package/dist/icons/Missing.js +19 -0
  119. package/dist/icons/Missing.js.map +1 -0
  120. package/dist/icons/Missing.mjs +17 -0
  121. package/dist/icons/Missing.mjs.map +1 -0
  122. package/dist/icons/Resolve.js +19 -0
  123. package/dist/icons/Resolve.js.map +1 -0
  124. package/dist/icons/Resolve.mjs +17 -0
  125. package/dist/icons/Resolve.mjs.map +1 -0
  126. package/dist/icons/Resolved.js +21 -0
  127. package/dist/icons/Resolved.js.map +1 -0
  128. package/dist/icons/Resolved.mjs +19 -0
  129. package/dist/icons/Resolved.mjs.map +1 -0
  130. package/dist/icons/Search.js +15 -0
  131. package/dist/icons/Search.js.map +1 -0
  132. package/dist/icons/Search.mjs +13 -0
  133. package/dist/icons/Search.mjs.map +1 -0
  134. package/dist/icons/Send.js +15 -0
  135. package/dist/icons/Send.js.map +1 -0
  136. package/dist/icons/Send.mjs +13 -0
  137. package/dist/icons/Send.mjs.map +1 -0
  138. package/dist/icons/Spinner.js +22 -0
  139. package/dist/icons/Spinner.js.map +1 -0
  140. package/dist/icons/Spinner.mjs +20 -0
  141. package/dist/icons/Spinner.mjs.map +1 -0
  142. package/dist/index.d.mts +476 -0
  143. package/dist/index.d.ts +476 -0
  144. package/dist/index.js +20 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/index.mjs +11 -0
  147. package/dist/index.mjs.map +1 -0
  148. package/dist/overrides.js +100 -0
  149. package/dist/overrides.js.map +1 -0
  150. package/dist/overrides.mjs +77 -0
  151. package/dist/overrides.mjs.map +1 -0
  152. package/dist/primitives/Comment/index.js +113 -0
  153. package/dist/primitives/Comment/index.js.map +1 -0
  154. package/dist/primitives/Comment/index.mjs +109 -0
  155. package/dist/primitives/Comment/index.mjs.map +1 -0
  156. package/dist/primitives/Comment/utils.js +25 -0
  157. package/dist/primitives/Comment/utils.js.map +1 -0
  158. package/dist/primitives/Comment/utils.mjs +20 -0
  159. package/dist/primitives/Comment/utils.mjs.map +1 -0
  160. package/dist/primitives/Composer/contexts.js +34 -0
  161. package/dist/primitives/Composer/contexts.js.map +1 -0
  162. package/dist/primitives/Composer/contexts.mjs +27 -0
  163. package/dist/primitives/Composer/contexts.mjs.map +1 -0
  164. package/dist/primitives/Composer/index.js +771 -0
  165. package/dist/primitives/Composer/index.js.map +1 -0
  166. package/dist/primitives/Composer/index.mjs +762 -0
  167. package/dist/primitives/Composer/index.mjs.map +1 -0
  168. package/dist/primitives/Composer/utils.js +102 -0
  169. package/dist/primitives/Composer/utils.js.map +1 -0
  170. package/dist/primitives/Composer/utils.mjs +93 -0
  171. package/dist/primitives/Composer/utils.mjs.map +1 -0
  172. package/dist/primitives/EmojiPicker/contexts.js +19 -0
  173. package/dist/primitives/EmojiPicker/contexts.js.map +1 -0
  174. package/dist/primitives/EmojiPicker/contexts.mjs +16 -0
  175. package/dist/primitives/EmojiPicker/contexts.mjs.map +1 -0
  176. package/dist/primitives/EmojiPicker/index.js +434 -0
  177. package/dist/primitives/EmojiPicker/index.js.map +1 -0
  178. package/dist/primitives/EmojiPicker/index.mjs +430 -0
  179. package/dist/primitives/EmojiPicker/index.mjs.map +1 -0
  180. package/dist/primitives/EmojiPicker/utils.js +329 -0
  181. package/dist/primitives/EmojiPicker/utils.js.map +1 -0
  182. package/dist/primitives/EmojiPicker/utils.mjs +325 -0
  183. package/dist/primitives/EmojiPicker/utils.mjs.map +1 -0
  184. package/dist/primitives/Timestamp.js +121 -0
  185. package/dist/primitives/Timestamp.js.map +1 -0
  186. package/dist/primitives/Timestamp.mjs +119 -0
  187. package/dist/primitives/Timestamp.mjs.map +1 -0
  188. package/dist/primitives/index.d.mts +502 -0
  189. package/dist/primitives/index.d.ts +502 -0
  190. package/dist/primitives/index.js +16 -0
  191. package/dist/primitives/index.js.map +1 -0
  192. package/dist/primitives/index.mjs +9 -0
  193. package/dist/primitives/index.mjs.map +1 -0
  194. package/dist/primitives/internal/Emoji.js +30 -0
  195. package/dist/primitives/internal/Emoji.js.map +1 -0
  196. package/dist/primitives/internal/Emoji.mjs +28 -0
  197. package/dist/primitives/internal/Emoji.mjs.map +1 -0
  198. package/dist/shared.js +21 -0
  199. package/dist/shared.js.map +1 -0
  200. package/dist/shared.mjs +19 -0
  201. package/dist/shared.mjs.map +1 -0
  202. package/dist/slate/plugins/auto-formatting.js +83 -0
  203. package/dist/slate/plugins/auto-formatting.js.map +1 -0
  204. package/dist/slate/plugins/auto-formatting.mjs +81 -0
  205. package/dist/slate/plugins/auto-formatting.mjs.map +1 -0
  206. package/dist/slate/plugins/auto-links.js +175 -0
  207. package/dist/slate/plugins/auto-links.js.map +1 -0
  208. package/dist/slate/plugins/auto-links.mjs +172 -0
  209. package/dist/slate/plugins/auto-links.mjs.map +1 -0
  210. package/dist/slate/plugins/empty-clear-formatting.js +18 -0
  211. package/dist/slate/plugins/empty-clear-formatting.js.map +1 -0
  212. package/dist/slate/plugins/empty-clear-formatting.mjs +16 -0
  213. package/dist/slate/plugins/empty-clear-formatting.mjs.map +1 -0
  214. package/dist/slate/plugins/mentions.js +112 -0
  215. package/dist/slate/plugins/mentions.js.map +1 -0
  216. package/dist/slate/plugins/mentions.mjs +105 -0
  217. package/dist/slate/plugins/mentions.mjs.map +1 -0
  218. package/dist/slate/utils/get-character.js +50 -0
  219. package/dist/slate/utils/get-character.js.map +1 -0
  220. package/dist/slate/utils/get-character.mjs +47 -0
  221. package/dist/slate/utils/get-character.mjs.map +1 -0
  222. package/dist/slate/utils/get-dom-range.js +17 -0
  223. package/dist/slate/utils/get-dom-range.js.map +1 -0
  224. package/dist/slate/utils/get-dom-range.mjs +15 -0
  225. package/dist/slate/utils/get-dom-range.mjs.map +1 -0
  226. package/dist/slate/utils/get-match-range.js +53 -0
  227. package/dist/slate/utils/get-match-range.js.map +1 -0
  228. package/dist/slate/utils/get-match-range.mjs +51 -0
  229. package/dist/slate/utils/get-match-range.mjs.map +1 -0
  230. package/dist/slate/utils/is-empty-string.js +8 -0
  231. package/dist/slate/utils/is-empty-string.js.map +1 -0
  232. package/dist/slate/utils/is-empty-string.mjs +6 -0
  233. package/dist/slate/utils/is-empty-string.mjs.map +1 -0
  234. package/dist/slate/utils/is-empty.js +10 -0
  235. package/dist/slate/utils/is-empty.js.map +1 -0
  236. package/dist/slate/utils/is-empty.mjs +8 -0
  237. package/dist/slate/utils/is-empty.mjs.map +1 -0
  238. package/dist/slate/utils/is-selection-collapsed.js +10 -0
  239. package/dist/slate/utils/is-selection-collapsed.js.map +1 -0
  240. package/dist/slate/utils/is-selection-collapsed.mjs +8 -0
  241. package/dist/slate/utils/is-selection-collapsed.mjs.map +1 -0
  242. package/dist/slate/utils/marks.js +43 -0
  243. package/dist/slate/utils/marks.js.map +1 -0
  244. package/dist/slate/utils/marks.mjs +38 -0
  245. package/dist/slate/utils/marks.mjs.map +1 -0
  246. package/dist/utils/Persist.js +85 -0
  247. package/dist/utils/Persist.js.map +1 -0
  248. package/dist/utils/Persist.mjs +81 -0
  249. package/dist/utils/Persist.mjs.map +1 -0
  250. package/dist/utils/Portal.js +27 -0
  251. package/dist/utils/Portal.js.map +1 -0
  252. package/dist/utils/Portal.mjs +25 -0
  253. package/dist/utils/Portal.mjs.map +1 -0
  254. package/dist/utils/capitalize.js +8 -0
  255. package/dist/utils/capitalize.js.map +1 -0
  256. package/dist/utils/capitalize.mjs +6 -0
  257. package/dist/utils/capitalize.mjs.map +1 -0
  258. package/dist/utils/chunk.js +12 -0
  259. package/dist/utils/chunk.js.map +1 -0
  260. package/dist/utils/chunk.mjs +10 -0
  261. package/dist/utils/chunk.mjs.map +1 -0
  262. package/dist/utils/clamp.js +8 -0
  263. package/dist/utils/clamp.js.map +1 -0
  264. package/dist/utils/clamp.mjs +6 -0
  265. package/dist/utils/clamp.mjs.map +1 -0
  266. package/dist/utils/class-names.js +8 -0
  267. package/dist/utils/class-names.js.map +1 -0
  268. package/dist/utils/class-names.mjs +6 -0
  269. package/dist/utils/class-names.mjs.map +1 -0
  270. package/dist/utils/exists.js +8 -0
  271. package/dist/utils/exists.js.map +1 -0
  272. package/dist/utils/exists.mjs +6 -0
  273. package/dist/utils/exists.mjs.map +1 -0
  274. package/dist/utils/find-last-index.js +15 -0
  275. package/dist/utils/find-last-index.js.map +1 -0
  276. package/dist/utils/find-last-index.mjs +13 -0
  277. package/dist/utils/find-last-index.mjs.map +1 -0
  278. package/dist/utils/flush-sync.js +12 -0
  279. package/dist/utils/flush-sync.js.map +1 -0
  280. package/dist/utils/flush-sync.mjs +10 -0
  281. package/dist/utils/flush-sync.mjs.map +1 -0
  282. package/dist/utils/get-initials.js +13 -0
  283. package/dist/utils/get-initials.js.map +1 -0
  284. package/dist/utils/get-initials.mjs +11 -0
  285. package/dist/utils/get-initials.mjs.map +1 -0
  286. package/dist/utils/intl.js +24 -0
  287. package/dist/utils/intl.js.map +1 -0
  288. package/dist/utils/intl.mjs +20 -0
  289. package/dist/utils/intl.mjs.map +1 -0
  290. package/dist/utils/is-apple.js +9 -0
  291. package/dist/utils/is-apple.js.map +1 -0
  292. package/dist/utils/is-apple.mjs +7 -0
  293. package/dist/utils/is-apple.mjs.map +1 -0
  294. package/dist/utils/is-key.js +26 -0
  295. package/dist/utils/is-key.js.map +1 -0
  296. package/dist/utils/is-key.mjs +24 -0
  297. package/dist/utils/is-key.mjs.map +1 -0
  298. package/dist/utils/memoize.js +19 -0
  299. package/dist/utils/memoize.js.map +1 -0
  300. package/dist/utils/memoize.mjs +17 -0
  301. package/dist/utils/memoize.mjs.map +1 -0
  302. package/dist/utils/pluralize.js +8 -0
  303. package/dist/utils/pluralize.js.map +1 -0
  304. package/dist/utils/pluralize.mjs +6 -0
  305. package/dist/utils/pluralize.mjs.map +1 -0
  306. package/dist/utils/request-idle-callback.js +15 -0
  307. package/dist/utils/request-idle-callback.js.map +1 -0
  308. package/dist/utils/request-idle-callback.mjs +12 -0
  309. package/dist/utils/request-idle-callback.mjs.map +1 -0
  310. package/dist/utils/request-submit.js +20 -0
  311. package/dist/utils/request-submit.js.map +1 -0
  312. package/dist/utils/request-submit.mjs +18 -0
  313. package/dist/utils/request-submit.mjs.map +1 -0
  314. package/dist/utils/url.js +22 -0
  315. package/dist/utils/url.js.map +1 -0
  316. package/dist/utils/url.mjs +20 -0
  317. package/dist/utils/url.mjs.map +1 -0
  318. package/dist/utils/use-controllable-state.js +34 -0
  319. package/dist/utils/use-controllable-state.js.map +1 -0
  320. package/dist/utils/use-controllable-state.mjs +32 -0
  321. package/dist/utils/use-controllable-state.mjs.map +1 -0
  322. package/dist/utils/use-id.js +29 -0
  323. package/dist/utils/use-id.js.map +1 -0
  324. package/dist/utils/use-id.mjs +27 -0
  325. package/dist/utils/use-id.mjs.map +1 -0
  326. package/dist/utils/use-index.js +32 -0
  327. package/dist/utils/use-index.js.map +1 -0
  328. package/dist/utils/use-index.mjs +30 -0
  329. package/dist/utils/use-index.mjs.map +1 -0
  330. package/dist/utils/use-initial.js +10 -0
  331. package/dist/utils/use-initial.js.map +1 -0
  332. package/dist/utils/use-initial.mjs +8 -0
  333. package/dist/utils/use-initial.mjs.map +1 -0
  334. package/dist/utils/use-interval.js +24 -0
  335. package/dist/utils/use-interval.js.map +1 -0
  336. package/dist/utils/use-interval.mjs +22 -0
  337. package/dist/utils/use-interval.mjs.map +1 -0
  338. package/dist/utils/use-latest.js +14 -0
  339. package/dist/utils/use-latest.js.map +1 -0
  340. package/dist/utils/use-latest.mjs +12 -0
  341. package/dist/utils/use-latest.mjs.map +1 -0
  342. package/dist/utils/use-layout-effect.js +8 -0
  343. package/dist/utils/use-layout-effect.js.map +1 -0
  344. package/dist/utils/use-layout-effect.mjs +6 -0
  345. package/dist/utils/use-layout-effect.mjs.map +1 -0
  346. package/dist/utils/use-refs.js +24 -0
  347. package/dist/utils/use-refs.js.map +1 -0
  348. package/dist/utils/use-refs.mjs +22 -0
  349. package/dist/utils/use-refs.mjs.map +1 -0
  350. package/dist/utils/use-rerender.js +14 -0
  351. package/dist/utils/use-rerender.js.map +1 -0
  352. package/dist/utils/use-rerender.mjs +12 -0
  353. package/dist/utils/use-rerender.mjs.map +1 -0
  354. package/dist/utils/use-transition.js +12 -0
  355. package/dist/utils/use-transition.js.map +1 -0
  356. package/dist/utils/use-transition.mjs +10 -0
  357. package/dist/utils/use-transition.mjs.map +1 -0
  358. package/dist/utils/use-visible.js +48 -0
  359. package/dist/utils/use-visible.js.map +1 -0
  360. package/dist/utils/use-visible.mjs +46 -0
  361. package/dist/utils/use-visible.mjs.map +1 -0
  362. package/dist/utils/visually-hidden.js +17 -0
  363. package/dist/utils/visually-hidden.js.map +1 -0
  364. package/dist/utils/visually-hidden.mjs +15 -0
  365. package/dist/utils/visually-hidden.mjs.map +1 -0
  366. package/dist/utils/wrap.js +9 -0
  367. package/dist/utils/wrap.js.map +1 -0
  368. package/dist/utils/wrap.mjs +7 -0
  369. package/dist/utils/wrap.mjs.map +1 -0
  370. package/dist/version.js +10 -0
  371. package/dist/version.js.map +1 -0
  372. package/dist/version.mjs +6 -0
  373. package/dist/version.mjs.map +1 -0
  374. package/package.json +142 -0
  375. package/primitives/README.md +5 -0
  376. package/primitives/package.json +4 -0
  377. package/src/styles/constants.css +17 -0
  378. package/src/styles/dark/attributes.css +8 -0
  379. package/src/styles/dark/index.css +29 -0
  380. package/src/styles/dark/media-query.css +7 -0
  381. package/src/styles/index.css +1437 -0
  382. package/src/styles/utils.css +36 -0
  383. package/styles/dark/attributes.css +1 -0
  384. package/styles/dark/attributes.css.d.ts +1 -0
  385. package/styles/dark/attributes.css.map +1 -0
  386. package/styles/dark/media-query.css +1 -0
  387. package/styles/dark/media-query.css.d.ts +1 -0
  388. package/styles/dark/media-query.css.map +1 -0
  389. package/styles.css +1 -0
  390. package/styles.css.d.ts +1 -0
  391. package/styles.css.map +1 -0
@@ -0,0 +1,112 @@
1
+ 'use strict';
2
+
3
+ var slate = require('slate');
4
+ var getCharacter = require('../utils/get-character.js');
5
+ var getMatchRange = require('../utils/get-match-range.js');
6
+ var isEmptyString = require('../utils/is-empty-string.js');
7
+ var isSelectionCollapsed = require('../utils/is-selection-collapsed.js');
8
+
9
+ const MENTION_CHARACTER = "@";
10
+ function getMentionDraftAtSelection(editor) {
11
+ const { selection } = editor;
12
+ if (!isSelectionCollapsed.isSelectionCollapsed(selection)) {
13
+ return;
14
+ }
15
+ const match = getMatchRange.getMatchRange(editor, selection);
16
+ if (!match) {
17
+ return;
18
+ }
19
+ const matchText = slate.Editor.string(editor, match);
20
+ if (!matchText.startsWith(MENTION_CHARACTER)) {
21
+ return;
22
+ }
23
+ return {
24
+ range: match,
25
+ text: matchText.substring(1)
26
+ };
27
+ }
28
+ function isComposerBodyMention(node) {
29
+ return slate.Element.isElement(node) && node.type === "mention";
30
+ }
31
+ function insertMention(editor, userId) {
32
+ const mention = {
33
+ type: "mention",
34
+ id: userId,
35
+ children: [{ text: "" }]
36
+ };
37
+ slate.Transforms.insertNodes(editor, mention);
38
+ slate.Transforms.move(editor);
39
+ const afterCharacter = editor.selection ? getCharacter.getCharacterAfter(editor, editor.selection) : void 0;
40
+ if (!afterCharacter || afterCharacter.void) {
41
+ slate.Transforms.insertText(editor, " ");
42
+ } else if (isEmptyString.isEmptyString(afterCharacter.text)) {
43
+ slate.Transforms.move(editor);
44
+ }
45
+ }
46
+ function insertMentionCharacter(editor) {
47
+ if (!editor.selection) {
48
+ return;
49
+ }
50
+ const beforeCharacter = getCharacter.getCharacterBefore(editor, editor.selection, {
51
+ filterVoids: true
52
+ });
53
+ const afterCharacter = getCharacter.getCharacterAfter(editor, editor.selection, {
54
+ filterVoids: true
55
+ });
56
+ const shouldInsertSpaceBefore = beforeCharacter && !isEmptyString.isEmptyString(beforeCharacter.text);
57
+ const shouldInsertSpaceAfter = afterCharacter && !isEmptyString.isEmptyString(afterCharacter.text);
58
+ if (isSelectionCollapsed.isSelectionCollapsed(editor.selection)) {
59
+ const text = (shouldInsertSpaceBefore ? " " : "") + MENTION_CHARACTER + (shouldInsertSpaceAfter ? " " : "");
60
+ editor.insertText(text);
61
+ if (shouldInsertSpaceAfter) {
62
+ slate.Transforms.move(editor, {
63
+ distance: 1,
64
+ unit: "character",
65
+ reverse: true
66
+ });
67
+ }
68
+ } else {
69
+ const beforeText = (shouldInsertSpaceBefore ? " " : "") + MENTION_CHARACTER;
70
+ editor.insertText(beforeText, { at: slate.Range.start(editor.selection) });
71
+ if (shouldInsertSpaceAfter) {
72
+ editor.insertText(" ", { at: slate.Range.end(editor.selection) });
73
+ }
74
+ slate.Transforms.collapse(editor, { edge: "end" });
75
+ }
76
+ }
77
+ function withMentions(editor) {
78
+ const { isInline, isVoid, markableVoid, deleteBackward } = editor;
79
+ editor.isInline = (element) => {
80
+ return isComposerBodyMention(element) || isInline(element);
81
+ };
82
+ editor.isVoid = (element) => {
83
+ return isComposerBodyMention(element) || isVoid(element);
84
+ };
85
+ editor.markableVoid = (element) => {
86
+ return isComposerBodyMention(element) || markableVoid(element);
87
+ };
88
+ editor.deleteBackward = (unit) => {
89
+ const { selection } = editor;
90
+ if (isSelectionCollapsed.isSelectionCollapsed(selection)) {
91
+ const [mention] = slate.Editor.nodes(editor, {
92
+ at: unit === "character" ? slate.Editor.before(editor, selection, { unit: "character" }) : selection,
93
+ match: isComposerBodyMention
94
+ });
95
+ deleteBackward(unit);
96
+ if (mention) {
97
+ slate.Transforms.insertText(editor, MENTION_CHARACTER);
98
+ }
99
+ } else {
100
+ deleteBackward(unit);
101
+ }
102
+ };
103
+ return editor;
104
+ }
105
+
106
+ exports.MENTION_CHARACTER = MENTION_CHARACTER;
107
+ exports.getMentionDraftAtSelection = getMentionDraftAtSelection;
108
+ exports.insertMention = insertMention;
109
+ exports.insertMentionCharacter = insertMentionCharacter;
110
+ exports.isComposerBodyMention = isComposerBodyMention;
111
+ exports.withMentions = withMentions;
112
+ //# sourceMappingURL=mentions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.js","sources":["../../../src/slate/plugins/mentions.ts"],"sourcesContent":["import type { Node as SlateNode } from \"slate\";\nimport {\n Editor as SlateEditor,\n Element as SlateElement,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport type { ComposerBodyMention } from \"../../types\";\nimport { getCharacterAfter, getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\nimport { isSelectionCollapsed } from \"../utils/is-selection-collapsed\";\n\nexport const MENTION_CHARACTER = \"@\";\n\nexport type MentionDraft = {\n range: SlateRange;\n text: string;\n};\n\nexport function getMentionDraftAtSelection(\n editor: SlateEditor\n): MentionDraft | undefined {\n const { selection } = editor;\n\n if (!isSelectionCollapsed(selection)) {\n return;\n }\n\n // Match the word at the current selection by walking back\n // until a whitespace character is found\n const match = getMatchRange(editor, selection);\n\n if (!match) {\n return;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match starts with the mention character\n if (!matchText.startsWith(MENTION_CHARACTER)) {\n return;\n }\n\n return {\n range: match,\n // Exclude the mention character from the text\n text: matchText.substring(1),\n };\n}\n\nexport function isComposerBodyMention(\n node: SlateNode\n): node is ComposerBodyMention {\n return SlateElement.isElement(node) && node.type === \"mention\";\n}\n\nexport function insertMention(editor: SlateEditor, userId: string) {\n const mention: ComposerBodyMention = {\n type: \"mention\",\n id: userId,\n children: [{ text: \"\" }],\n };\n\n // Insert the mention\n SlateTransforms.insertNodes(editor, mention);\n SlateTransforms.move(editor);\n\n const afterCharacter = editor.selection\n ? getCharacterAfter(editor, editor.selection)\n : undefined;\n\n if (!afterCharacter || afterCharacter.void) {\n // Insert a following space if needed\n SlateTransforms.insertText(editor, \" \");\n } else if (isEmptyString(afterCharacter.text)) {\n // Move the selection if it's already followed by a space\n SlateTransforms.move(editor);\n }\n}\n\nexport function insertMentionCharacter(editor: SlateEditor) {\n if (!editor.selection) {\n return;\n }\n\n // Check if the selection is preceded or followed by a non-whitespace character\n const beforeCharacter = getCharacterBefore(editor, editor.selection, {\n filterVoids: true,\n });\n const afterCharacter = getCharacterAfter(editor, editor.selection, {\n filterVoids: true,\n });\n const shouldInsertSpaceBefore =\n beforeCharacter && !isEmptyString(beforeCharacter.text);\n const shouldInsertSpaceAfter =\n afterCharacter && !isEmptyString(afterCharacter.text);\n\n if (isSelectionCollapsed(editor.selection)) {\n const text =\n (shouldInsertSpaceBefore ? \" \" : \"\") +\n MENTION_CHARACTER +\n (shouldInsertSpaceAfter ? \" \" : \"\");\n\n // If the selection is collapsed, insert the mention character at the current selection\n editor.insertText(text);\n\n // If a following space was inserted, move the selection back by one\n if (shouldInsertSpaceAfter) {\n SlateTransforms.move(editor, {\n distance: 1,\n unit: \"character\",\n reverse: true,\n });\n }\n } else {\n const beforeText = (shouldInsertSpaceBefore ? \" \" : \"\") + MENTION_CHARACTER;\n\n // If the selection is not collapsed, insert the mention character before the selection\n editor.insertText(beforeText, { at: SlateRange.start(editor.selection) });\n\n if (shouldInsertSpaceAfter) {\n editor.insertText(\" \", { at: SlateRange.end(editor.selection) });\n }\n\n // Collapse the selection at its end\n SlateTransforms.collapse(editor, { edge: \"end\" });\n }\n}\n\nexport function withMentions<T extends SlateEditor>(editor: T): T {\n const { isInline, isVoid, markableVoid, deleteBackward } = editor;\n\n editor.isInline = (element) => {\n return isComposerBodyMention(element) || isInline(element);\n };\n\n editor.isVoid = (element) => {\n return isComposerBodyMention(element) || isVoid(element);\n };\n\n editor.markableVoid = (element) => {\n return isComposerBodyMention(element) || markableVoid(element);\n };\n\n editor.deleteBackward = (unit) => {\n const { selection } = editor;\n\n if (isSelectionCollapsed(selection)) {\n const [mention] = SlateEditor.nodes(editor, {\n at:\n unit === \"character\"\n ? SlateEditor.before(editor, selection, { unit: \"character\" })\n : selection,\n match: isComposerBodyMention,\n });\n\n deleteBackward(unit);\n\n if (mention) {\n SlateTransforms.insertText(editor, MENTION_CHARACTER);\n }\n } else {\n deleteBackward(unit);\n }\n };\n\n return editor;\n}\n"],"names":["isSelectionCollapsed","getMatchRange","SlateEditor","SlateElement","SlateTransforms","getCharacterAfter","isEmptyString","getCharacterBefore","SlateRange"],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { Editor, Transforms, Range, Element } from 'slate';
2
+ import { getCharacterAfter, getCharacterBefore } from '../utils/get-character.mjs';
3
+ import { getMatchRange } from '../utils/get-match-range.mjs';
4
+ import { isEmptyString } from '../utils/is-empty-string.mjs';
5
+ import { isSelectionCollapsed } from '../utils/is-selection-collapsed.mjs';
6
+
7
+ const MENTION_CHARACTER = "@";
8
+ function getMentionDraftAtSelection(editor) {
9
+ const { selection } = editor;
10
+ if (!isSelectionCollapsed(selection)) {
11
+ return;
12
+ }
13
+ const match = getMatchRange(editor, selection);
14
+ if (!match) {
15
+ return;
16
+ }
17
+ const matchText = Editor.string(editor, match);
18
+ if (!matchText.startsWith(MENTION_CHARACTER)) {
19
+ return;
20
+ }
21
+ return {
22
+ range: match,
23
+ text: matchText.substring(1)
24
+ };
25
+ }
26
+ function isComposerBodyMention(node) {
27
+ return Element.isElement(node) && node.type === "mention";
28
+ }
29
+ function insertMention(editor, userId) {
30
+ const mention = {
31
+ type: "mention",
32
+ id: userId,
33
+ children: [{ text: "" }]
34
+ };
35
+ Transforms.insertNodes(editor, mention);
36
+ Transforms.move(editor);
37
+ const afterCharacter = editor.selection ? getCharacterAfter(editor, editor.selection) : void 0;
38
+ if (!afterCharacter || afterCharacter.void) {
39
+ Transforms.insertText(editor, " ");
40
+ } else if (isEmptyString(afterCharacter.text)) {
41
+ Transforms.move(editor);
42
+ }
43
+ }
44
+ function insertMentionCharacter(editor) {
45
+ if (!editor.selection) {
46
+ return;
47
+ }
48
+ const beforeCharacter = getCharacterBefore(editor, editor.selection, {
49
+ filterVoids: true
50
+ });
51
+ const afterCharacter = getCharacterAfter(editor, editor.selection, {
52
+ filterVoids: true
53
+ });
54
+ const shouldInsertSpaceBefore = beforeCharacter && !isEmptyString(beforeCharacter.text);
55
+ const shouldInsertSpaceAfter = afterCharacter && !isEmptyString(afterCharacter.text);
56
+ if (isSelectionCollapsed(editor.selection)) {
57
+ const text = (shouldInsertSpaceBefore ? " " : "") + MENTION_CHARACTER + (shouldInsertSpaceAfter ? " " : "");
58
+ editor.insertText(text);
59
+ if (shouldInsertSpaceAfter) {
60
+ Transforms.move(editor, {
61
+ distance: 1,
62
+ unit: "character",
63
+ reverse: true
64
+ });
65
+ }
66
+ } else {
67
+ const beforeText = (shouldInsertSpaceBefore ? " " : "") + MENTION_CHARACTER;
68
+ editor.insertText(beforeText, { at: Range.start(editor.selection) });
69
+ if (shouldInsertSpaceAfter) {
70
+ editor.insertText(" ", { at: Range.end(editor.selection) });
71
+ }
72
+ Transforms.collapse(editor, { edge: "end" });
73
+ }
74
+ }
75
+ function withMentions(editor) {
76
+ const { isInline, isVoid, markableVoid, deleteBackward } = editor;
77
+ editor.isInline = (element) => {
78
+ return isComposerBodyMention(element) || isInline(element);
79
+ };
80
+ editor.isVoid = (element) => {
81
+ return isComposerBodyMention(element) || isVoid(element);
82
+ };
83
+ editor.markableVoid = (element) => {
84
+ return isComposerBodyMention(element) || markableVoid(element);
85
+ };
86
+ editor.deleteBackward = (unit) => {
87
+ const { selection } = editor;
88
+ if (isSelectionCollapsed(selection)) {
89
+ const [mention] = Editor.nodes(editor, {
90
+ at: unit === "character" ? Editor.before(editor, selection, { unit: "character" }) : selection,
91
+ match: isComposerBodyMention
92
+ });
93
+ deleteBackward(unit);
94
+ if (mention) {
95
+ Transforms.insertText(editor, MENTION_CHARACTER);
96
+ }
97
+ } else {
98
+ deleteBackward(unit);
99
+ }
100
+ };
101
+ return editor;
102
+ }
103
+
104
+ export { MENTION_CHARACTER, getMentionDraftAtSelection, insertMention, insertMentionCharacter, isComposerBodyMention, withMentions };
105
+ //# sourceMappingURL=mentions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.mjs","sources":["../../../src/slate/plugins/mentions.ts"],"sourcesContent":["import type { Node as SlateNode } from \"slate\";\nimport {\n Editor as SlateEditor,\n Element as SlateElement,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport type { ComposerBodyMention } from \"../../types\";\nimport { getCharacterAfter, getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\nimport { isSelectionCollapsed } from \"../utils/is-selection-collapsed\";\n\nexport const MENTION_CHARACTER = \"@\";\n\nexport type MentionDraft = {\n range: SlateRange;\n text: string;\n};\n\nexport function getMentionDraftAtSelection(\n editor: SlateEditor\n): MentionDraft | undefined {\n const { selection } = editor;\n\n if (!isSelectionCollapsed(selection)) {\n return;\n }\n\n // Match the word at the current selection by walking back\n // until a whitespace character is found\n const match = getMatchRange(editor, selection);\n\n if (!match) {\n return;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match starts with the mention character\n if (!matchText.startsWith(MENTION_CHARACTER)) {\n return;\n }\n\n return {\n range: match,\n // Exclude the mention character from the text\n text: matchText.substring(1),\n };\n}\n\nexport function isComposerBodyMention(\n node: SlateNode\n): node is ComposerBodyMention {\n return SlateElement.isElement(node) && node.type === \"mention\";\n}\n\nexport function insertMention(editor: SlateEditor, userId: string) {\n const mention: ComposerBodyMention = {\n type: \"mention\",\n id: userId,\n children: [{ text: \"\" }],\n };\n\n // Insert the mention\n SlateTransforms.insertNodes(editor, mention);\n SlateTransforms.move(editor);\n\n const afterCharacter = editor.selection\n ? getCharacterAfter(editor, editor.selection)\n : undefined;\n\n if (!afterCharacter || afterCharacter.void) {\n // Insert a following space if needed\n SlateTransforms.insertText(editor, \" \");\n } else if (isEmptyString(afterCharacter.text)) {\n // Move the selection if it's already followed by a space\n SlateTransforms.move(editor);\n }\n}\n\nexport function insertMentionCharacter(editor: SlateEditor) {\n if (!editor.selection) {\n return;\n }\n\n // Check if the selection is preceded or followed by a non-whitespace character\n const beforeCharacter = getCharacterBefore(editor, editor.selection, {\n filterVoids: true,\n });\n const afterCharacter = getCharacterAfter(editor, editor.selection, {\n filterVoids: true,\n });\n const shouldInsertSpaceBefore =\n beforeCharacter && !isEmptyString(beforeCharacter.text);\n const shouldInsertSpaceAfter =\n afterCharacter && !isEmptyString(afterCharacter.text);\n\n if (isSelectionCollapsed(editor.selection)) {\n const text =\n (shouldInsertSpaceBefore ? \" \" : \"\") +\n MENTION_CHARACTER +\n (shouldInsertSpaceAfter ? \" \" : \"\");\n\n // If the selection is collapsed, insert the mention character at the current selection\n editor.insertText(text);\n\n // If a following space was inserted, move the selection back by one\n if (shouldInsertSpaceAfter) {\n SlateTransforms.move(editor, {\n distance: 1,\n unit: \"character\",\n reverse: true,\n });\n }\n } else {\n const beforeText = (shouldInsertSpaceBefore ? \" \" : \"\") + MENTION_CHARACTER;\n\n // If the selection is not collapsed, insert the mention character before the selection\n editor.insertText(beforeText, { at: SlateRange.start(editor.selection) });\n\n if (shouldInsertSpaceAfter) {\n editor.insertText(\" \", { at: SlateRange.end(editor.selection) });\n }\n\n // Collapse the selection at its end\n SlateTransforms.collapse(editor, { edge: \"end\" });\n }\n}\n\nexport function withMentions<T extends SlateEditor>(editor: T): T {\n const { isInline, isVoid, markableVoid, deleteBackward } = editor;\n\n editor.isInline = (element) => {\n return isComposerBodyMention(element) || isInline(element);\n };\n\n editor.isVoid = (element) => {\n return isComposerBodyMention(element) || isVoid(element);\n };\n\n editor.markableVoid = (element) => {\n return isComposerBodyMention(element) || markableVoid(element);\n };\n\n editor.deleteBackward = (unit) => {\n const { selection } = editor;\n\n if (isSelectionCollapsed(selection)) {\n const [mention] = SlateEditor.nodes(editor, {\n at:\n unit === \"character\"\n ? SlateEditor.before(editor, selection, { unit: \"character\" })\n : selection,\n match: isComposerBodyMention,\n });\n\n deleteBackward(unit);\n\n if (mention) {\n SlateTransforms.insertText(editor, MENTION_CHARACTER);\n }\n } else {\n deleteBackward(unit);\n }\n };\n\n return editor;\n}\n"],"names":["SlateEditor","SlateElement","SlateTransforms","SlateRange"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ var slate = require('slate');
4
+
5
+ function getCharacterBefore(editor, at, options = {}) {
6
+ const { filterVoids } = options;
7
+ const before = slate.Editor.before(editor, at, {
8
+ unit: "character",
9
+ voids: filterVoids
10
+ });
11
+ if (before) {
12
+ const range = slate.Editor.range(
13
+ editor,
14
+ before,
15
+ slate.Range.isRange(at) ? slate.Range.start(at) : at
16
+ );
17
+ const text = slate.Editor.string(editor, range);
18
+ return {
19
+ range,
20
+ text,
21
+ void: text.length === 0
22
+ };
23
+ }
24
+ return;
25
+ }
26
+ function getCharacterAfter(editor, at, options = {}) {
27
+ const { filterVoids } = options;
28
+ const after = slate.Editor.after(editor, at, {
29
+ unit: "character",
30
+ voids: filterVoids
31
+ });
32
+ if (after) {
33
+ const range = slate.Editor.range(
34
+ editor,
35
+ after,
36
+ slate.Range.isRange(at) ? slate.Range.end(at) : at
37
+ );
38
+ const text = slate.Editor.string(editor, range);
39
+ return {
40
+ range,
41
+ text,
42
+ void: text.length === 0
43
+ };
44
+ }
45
+ return;
46
+ }
47
+
48
+ exports.getCharacterAfter = getCharacterAfter;
49
+ exports.getCharacterBefore = getCharacterBefore;
50
+ //# sourceMappingURL=get-character.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-character.js","sources":["../../../src/slate/utils/get-character.ts"],"sourcesContent":["import type { Location as SlateLocation } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n filterVoids?: boolean;\n}\n\nexport function getCharacterBefore<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const before = SlateEditor.before(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (before) {\n const range = SlateEditor.range(\n editor,\n before,\n SlateRange.isRange(at) ? SlateRange.start(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n\nexport function getCharacterAfter<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const after = SlateEditor.after(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (after) {\n const range = SlateEditor.range(\n editor,\n after,\n SlateRange.isRange(at) ? SlateRange.end(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;;;AAOO,SAAS,kBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC5C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,MAAM,QAAQA,YAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,MAAA;AAAA,MACAC,YAAW,OAAQ,CAAA,EAAE,IAAIA,WAAW,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,EAAA;AAAA,KAClD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF,CAAA;AAEO,SAAS,iBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,KAAQ,GAAAA,YAAA,CAAY,KAAM,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,MAAM,QAAQA,YAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,KAAA;AAAA,MACAC,YAAW,OAAQ,CAAA,EAAE,IAAIA,WAAW,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,EAAA;AAAA,KAChD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF;;;;;"}
@@ -0,0 +1,47 @@
1
+ import { Editor, Range } from 'slate';
2
+
3
+ function getCharacterBefore(editor, at, options = {}) {
4
+ const { filterVoids } = options;
5
+ const before = Editor.before(editor, at, {
6
+ unit: "character",
7
+ voids: filterVoids
8
+ });
9
+ if (before) {
10
+ const range = Editor.range(
11
+ editor,
12
+ before,
13
+ Range.isRange(at) ? Range.start(at) : at
14
+ );
15
+ const text = Editor.string(editor, range);
16
+ return {
17
+ range,
18
+ text,
19
+ void: text.length === 0
20
+ };
21
+ }
22
+ return;
23
+ }
24
+ function getCharacterAfter(editor, at, options = {}) {
25
+ const { filterVoids } = options;
26
+ const after = Editor.after(editor, at, {
27
+ unit: "character",
28
+ voids: filterVoids
29
+ });
30
+ if (after) {
31
+ const range = Editor.range(
32
+ editor,
33
+ after,
34
+ Range.isRange(at) ? Range.end(at) : at
35
+ );
36
+ const text = Editor.string(editor, range);
37
+ return {
38
+ range,
39
+ text,
40
+ void: text.length === 0
41
+ };
42
+ }
43
+ return;
44
+ }
45
+
46
+ export { getCharacterAfter, getCharacterBefore };
47
+ //# sourceMappingURL=get-character.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-character.mjs","sources":["../../../src/slate/utils/get-character.ts"],"sourcesContent":["import type { Location as SlateLocation } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n filterVoids?: boolean;\n}\n\nexport function getCharacterBefore<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const before = SlateEditor.before(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (before) {\n const range = SlateEditor.range(\n editor,\n before,\n SlateRange.isRange(at) ? SlateRange.start(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n\nexport function getCharacterAfter<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const after = SlateEditor.after(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (after) {\n const range = SlateEditor.range(\n editor,\n after,\n SlateRange.isRange(at) ? SlateRange.end(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;AAOO,SAAS,kBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC5C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,MAAM,QAAQA,MAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,MAAA;AAAA,MACAC,MAAW,OAAQ,CAAA,EAAE,IAAIA,KAAW,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,EAAA;AAAA,KAClD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF,CAAA;AAEO,SAAS,iBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,KAAQ,GAAAA,MAAA,CAAY,KAAM,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,MAAM,QAAQA,MAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,KAAA;AAAA,MACAC,MAAW,OAAQ,CAAA,EAAE,IAAIA,KAAW,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,EAAA;AAAA,KAChD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var slateReact = require('slate-react');
4
+
5
+ function getDOMRange(editor, range) {
6
+ try {
7
+ return slateReact.ReactEditor.toDOMRange(editor, range);
8
+ } catch (error) {
9
+ return getDOMRange(editor, {
10
+ anchor: range.anchor,
11
+ focus: range.anchor
12
+ });
13
+ }
14
+ }
15
+
16
+ exports.getDOMRange = getDOMRange;
17
+ //# sourceMappingURL=get-dom-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dom-range.js","sources":["../../../src/slate/utils/get-dom-range.ts"],"sourcesContent":["import type { Editor as SlateEditor, Range as SlateRange } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\n\nexport function getDOMRange(\n editor: SlateEditor,\n range: SlateRange\n): Range | undefined {\n try {\n return ReactEditor.toDOMRange(editor, range);\n } catch (error) {\n return getDOMRange(editor, {\n anchor: range.anchor,\n focus: range.anchor,\n });\n }\n}\n"],"names":["ReactEditor"],"mappings":";;;;AAGgB,SAAA,WAAA,CACd,QACA,KACmB,EAAA;AACnB,EAAI,IAAA;AACF,IAAO,OAAAA,sBAAA,CAAY,UAAW,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,WACpC,KAAP,EAAA;AACA,IAAA,OAAO,YAAY,MAAQ,EAAA;AAAA,MACzB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,OAAO,KAAM,CAAA,MAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
@@ -0,0 +1,15 @@
1
+ import { ReactEditor } from 'slate-react';
2
+
3
+ function getDOMRange(editor, range) {
4
+ try {
5
+ return ReactEditor.toDOMRange(editor, range);
6
+ } catch (error) {
7
+ return getDOMRange(editor, {
8
+ anchor: range.anchor,
9
+ focus: range.anchor
10
+ });
11
+ }
12
+ }
13
+
14
+ export { getDOMRange };
15
+ //# sourceMappingURL=get-dom-range.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dom-range.mjs","sources":["../../../src/slate/utils/get-dom-range.ts"],"sourcesContent":["import type { Editor as SlateEditor, Range as SlateRange } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\n\nexport function getDOMRange(\n editor: SlateEditor,\n range: SlateRange\n): Range | undefined {\n try {\n return ReactEditor.toDOMRange(editor, range);\n } catch (error) {\n return getDOMRange(editor, {\n anchor: range.anchor,\n focus: range.anchor,\n });\n }\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,WAAA,CACd,QACA,KACmB,EAAA;AACnB,EAAI,IAAA;AACF,IAAO,OAAA,WAAA,CAAY,UAAW,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,WACpC,KAAP,EAAA;AACA,IAAA,OAAO,YAAY,MAAQ,EAAA;AAAA,MACzB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,OAAO,KAAM,CAAA,MAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ var slate = require('slate');
4
+
5
+ const defaultOptions = {
6
+ direction: "before"
7
+ };
8
+ function getMatchRange(editor, at, terminators = [" "], options = defaultOptions) {
9
+ const { include, direction } = { ...defaultOptions, ...options };
10
+ let [start, end] = slate.Range.edges(at);
11
+ let point = start;
12
+ function move(direction2) {
13
+ const next = direction2 === "after" ? slate.Editor.after(editor, point, {
14
+ unit: "character"
15
+ }) : slate.Editor.before(editor, point, { unit: "character" });
16
+ const nextWord = next && slate.Editor.string(
17
+ editor,
18
+ direction2 === "after" ? { anchor: point, focus: next } : { anchor: next, focus: point }
19
+ );
20
+ const lastWord = nextWord && nextWord[direction2 === "after" ? 0 : nextWord.length - 1];
21
+ if (next && lastWord && !terminators.includes(lastWord)) {
22
+ point = next;
23
+ if (point.offset === 0) {
24
+ return false;
25
+ }
26
+ } else {
27
+ return false;
28
+ }
29
+ return true;
30
+ }
31
+ if (direction !== "before") {
32
+ point = end;
33
+ while (move("after"))
34
+ ;
35
+ end = point;
36
+ }
37
+ if (direction !== "after") {
38
+ point = start;
39
+ while (move("before"))
40
+ ;
41
+ start = point;
42
+ }
43
+ if (include) {
44
+ return {
45
+ anchor: slate.Editor.before(editor, start, { unit: "offset" }) ?? start,
46
+ focus: slate.Editor.after(editor, end, { unit: "offset" }) ?? end
47
+ };
48
+ }
49
+ return { anchor: start, focus: end };
50
+ }
51
+
52
+ exports.getMatchRange = getMatchRange;
53
+ //# sourceMappingURL=get-match-range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-match-range.js","sources":["../../../src/slate/utils/get-match-range.ts"],"sourcesContent":["import type { Point as SlatePoint } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n include?: boolean;\n direction?: \"before\" | \"after\" | \"both\";\n}\n\nconst defaultOptions: Options = {\n direction: \"before\",\n};\n\nexport function getMatchRange(\n editor: SlateEditor,\n at: SlateRange,\n terminators: string[] = [\" \"],\n options: Options = defaultOptions\n): SlateRange | undefined {\n const { include, direction } = { ...defaultOptions, ...options };\n let [start, end] = SlateRange.edges(at);\n let point: SlatePoint = start;\n\n function move(direction: \"before\" | \"after\"): boolean {\n const next =\n direction === \"after\"\n ? SlateEditor.after(editor, point, {\n unit: \"character\",\n })\n : SlateEditor.before(editor, point, { unit: \"character\" });\n const nextWord =\n next &&\n SlateEditor.string(\n editor,\n direction === \"after\"\n ? { anchor: point, focus: next }\n : { anchor: next, focus: point }\n );\n const lastWord =\n nextWord && nextWord[direction === \"after\" ? 0 : nextWord.length - 1];\n\n if (next && lastWord && !terminators.includes(lastWord)) {\n point = next;\n\n if (point.offset === 0) {\n return false;\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n if (direction !== \"before\") {\n point = end;\n\n while (move(\"after\"));\n\n end = point;\n }\n\n if (direction !== \"after\") {\n point = start;\n\n while (move(\"before\"));\n\n start = point;\n }\n\n if (include) {\n return {\n anchor: SlateEditor.before(editor, start, { unit: \"offset\" }) ?? start,\n focus: SlateEditor.after(editor, end, { unit: \"offset\" }) ?? end,\n };\n }\n\n return { anchor: start, focus: end };\n}\n"],"names":["SlateRange","direction","SlateEditor"],"mappings":";;;;AAQA,MAAM,cAA0B,GAAA;AAAA,EAC9B,SAAW,EAAA,QAAA;AACb,CAAA,CAAA;AAEgB,SAAA,aAAA,CACd,QACA,EACA,EAAA,WAAA,GAAwB,CAAC,GAAG,CAAA,EAC5B,UAAmB,cACK,EAAA;AACxB,EAAM,MAAA,EAAE,SAAS,SAAU,EAAA,GAAI,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAQ,EAAA,CAAA;AAC/D,EAAA,IAAI,CAAC,KAAO,EAAA,GAAG,CAAI,GAAAA,WAAA,CAAW,MAAM,EAAE,CAAA,CAAA;AACtC,EAAA,IAAI,KAAoB,GAAA,KAAA,CAAA;AAExB,EAAA,SAAS,KAAKC,UAAwC,EAAA;AACpD,IAAA,MAAM,OACJA,UAAc,KAAA,OAAA,GACVC,YAAY,CAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAAA,MAC/B,IAAM,EAAA,WAAA;AAAA,KACP,IACDA,YAAY,CAAA,MAAA,CAAO,QAAQ,KAAO,EAAA,EAAE,IAAM,EAAA,WAAA,EAAa,CAAA,CAAA;AAC7D,IAAM,MAAA,QAAA,GACJ,QACAA,YAAY,CAAA,MAAA;AAAA,MACV,MAAA;AAAA,MACAD,UAAc,KAAA,OAAA,GACV,EAAE,MAAA,EAAQ,KAAO,EAAA,KAAA,EAAO,IAAK,EAAA,GAC7B,EAAE,MAAA,EAAQ,IAAM,EAAA,KAAA,EAAO,KAAM,EAAA;AAAA,KACnC,CAAA;AACF,IAAA,MAAM,WACJ,QAAY,IAAA,QAAA,CAASA,eAAc,OAAU,GAAA,CAAA,GAAI,SAAS,MAAS,GAAA,CAAA,CAAA,CAAA;AAErE,IAAA,IAAI,QAAQ,QAAY,IAAA,CAAC,WAAY,CAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACvD,MAAQ,KAAA,GAAA,IAAA,CAAA;AAER,MAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACK,MAAA;AACL,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,cAAc,QAAU,EAAA;AAC1B,IAAQ,KAAA,GAAA,GAAA,CAAA;AAER,IAAA,OAAO,KAAK,OAAO,CAAA;AAAE,MAAA,CAAA;AAErB,IAAM,GAAA,GAAA,KAAA,CAAA;AAAA,GACR;AAEA,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAQ,KAAA,GAAA,KAAA,CAAA;AAER,IAAA,OAAO,KAAK,QAAQ,CAAA;AAAE,MAAA,CAAA;AAEtB,IAAQ,KAAA,GAAA,KAAA,CAAA;AAAA,GACV;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAO,OAAA;AAAA,MACL,MAAA,EAAQC,aAAY,MAAO,CAAA,MAAA,EAAQ,OAAO,EAAE,IAAA,EAAM,QAAS,EAAC,CAAK,IAAA,KAAA;AAAA,MACjE,KAAA,EAAOA,aAAY,KAAM,CAAA,MAAA,EAAQ,KAAK,EAAE,IAAA,EAAM,QAAS,EAAC,CAAK,IAAA,GAAA;AAAA,KAC/D,CAAA;AAAA,GACF;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,KAAO,EAAA,KAAA,EAAO,GAAI,EAAA,CAAA;AACrC;;;;"}
@@ -0,0 +1,51 @@
1
+ import { Range, Editor } from 'slate';
2
+
3
+ const defaultOptions = {
4
+ direction: "before"
5
+ };
6
+ function getMatchRange(editor, at, terminators = [" "], options = defaultOptions) {
7
+ const { include, direction } = { ...defaultOptions, ...options };
8
+ let [start, end] = Range.edges(at);
9
+ let point = start;
10
+ function move(direction2) {
11
+ const next = direction2 === "after" ? Editor.after(editor, point, {
12
+ unit: "character"
13
+ }) : Editor.before(editor, point, { unit: "character" });
14
+ const nextWord = next && Editor.string(
15
+ editor,
16
+ direction2 === "after" ? { anchor: point, focus: next } : { anchor: next, focus: point }
17
+ );
18
+ const lastWord = nextWord && nextWord[direction2 === "after" ? 0 : nextWord.length - 1];
19
+ if (next && lastWord && !terminators.includes(lastWord)) {
20
+ point = next;
21
+ if (point.offset === 0) {
22
+ return false;
23
+ }
24
+ } else {
25
+ return false;
26
+ }
27
+ return true;
28
+ }
29
+ if (direction !== "before") {
30
+ point = end;
31
+ while (move("after"))
32
+ ;
33
+ end = point;
34
+ }
35
+ if (direction !== "after") {
36
+ point = start;
37
+ while (move("before"))
38
+ ;
39
+ start = point;
40
+ }
41
+ if (include) {
42
+ return {
43
+ anchor: Editor.before(editor, start, { unit: "offset" }) ?? start,
44
+ focus: Editor.after(editor, end, { unit: "offset" }) ?? end
45
+ };
46
+ }
47
+ return { anchor: start, focus: end };
48
+ }
49
+
50
+ export { getMatchRange };
51
+ //# sourceMappingURL=get-match-range.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-match-range.mjs","sources":["../../../src/slate/utils/get-match-range.ts"],"sourcesContent":["import type { Point as SlatePoint } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n include?: boolean;\n direction?: \"before\" | \"after\" | \"both\";\n}\n\nconst defaultOptions: Options = {\n direction: \"before\",\n};\n\nexport function getMatchRange(\n editor: SlateEditor,\n at: SlateRange,\n terminators: string[] = [\" \"],\n options: Options = defaultOptions\n): SlateRange | undefined {\n const { include, direction } = { ...defaultOptions, ...options };\n let [start, end] = SlateRange.edges(at);\n let point: SlatePoint = start;\n\n function move(direction: \"before\" | \"after\"): boolean {\n const next =\n direction === \"after\"\n ? SlateEditor.after(editor, point, {\n unit: \"character\",\n })\n : SlateEditor.before(editor, point, { unit: \"character\" });\n const nextWord =\n next &&\n SlateEditor.string(\n editor,\n direction === \"after\"\n ? { anchor: point, focus: next }\n : { anchor: next, focus: point }\n );\n const lastWord =\n nextWord && nextWord[direction === \"after\" ? 0 : nextWord.length - 1];\n\n if (next && lastWord && !terminators.includes(lastWord)) {\n point = next;\n\n if (point.offset === 0) {\n return false;\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n if (direction !== \"before\") {\n point = end;\n\n while (move(\"after\"));\n\n end = point;\n }\n\n if (direction !== \"after\") {\n point = start;\n\n while (move(\"before\"));\n\n start = point;\n }\n\n if (include) {\n return {\n anchor: SlateEditor.before(editor, start, { unit: \"offset\" }) ?? start,\n focus: SlateEditor.after(editor, end, { unit: \"offset\" }) ?? end,\n };\n }\n\n return { anchor: start, focus: end };\n}\n"],"names":["SlateRange","direction","SlateEditor"],"mappings":";;AAQA,MAAM,cAA0B,GAAA;AAAA,EAC9B,SAAW,EAAA,QAAA;AACb,CAAA,CAAA;AAEgB,SAAA,aAAA,CACd,QACA,EACA,EAAA,WAAA,GAAwB,CAAC,GAAG,CAAA,EAC5B,UAAmB,cACK,EAAA;AACxB,EAAM,MAAA,EAAE,SAAS,SAAU,EAAA,GAAI,EAAE,GAAG,cAAA,EAAgB,GAAG,OAAQ,EAAA,CAAA;AAC/D,EAAA,IAAI,CAAC,KAAO,EAAA,GAAG,CAAI,GAAAA,KAAA,CAAW,MAAM,EAAE,CAAA,CAAA;AACtC,EAAA,IAAI,KAAoB,GAAA,KAAA,CAAA;AAExB,EAAA,SAAS,KAAKC,UAAwC,EAAA;AACpD,IAAA,MAAM,OACJA,UAAc,KAAA,OAAA,GACVC,MAAY,CAAA,KAAA,CAAM,QAAQ,KAAO,EAAA;AAAA,MAC/B,IAAM,EAAA,WAAA;AAAA,KACP,IACDA,MAAY,CAAA,MAAA,CAAO,QAAQ,KAAO,EAAA,EAAE,IAAM,EAAA,WAAA,EAAa,CAAA,CAAA;AAC7D,IAAM,MAAA,QAAA,GACJ,QACAA,MAAY,CAAA,MAAA;AAAA,MACV,MAAA;AAAA,MACAD,UAAc,KAAA,OAAA,GACV,EAAE,MAAA,EAAQ,KAAO,EAAA,KAAA,EAAO,IAAK,EAAA,GAC7B,EAAE,MAAA,EAAQ,IAAM,EAAA,KAAA,EAAO,KAAM,EAAA;AAAA,KACnC,CAAA;AACF,IAAA,MAAM,WACJ,QAAY,IAAA,QAAA,CAASA,eAAc,OAAU,GAAA,CAAA,GAAI,SAAS,MAAS,GAAA,CAAA,CAAA,CAAA;AAErE,IAAA,IAAI,QAAQ,QAAY,IAAA,CAAC,WAAY,CAAA,QAAA,CAAS,QAAQ,CAAG,EAAA;AACvD,MAAQ,KAAA,GAAA,IAAA,CAAA;AAER,MAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACK,MAAA;AACL,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,cAAc,QAAU,EAAA;AAC1B,IAAQ,KAAA,GAAA,GAAA,CAAA;AAER,IAAA,OAAO,KAAK,OAAO,CAAA;AAAE,MAAA,CAAA;AAErB,IAAM,GAAA,GAAA,KAAA,CAAA;AAAA,GACR;AAEA,EAAA,IAAI,cAAc,OAAS,EAAA;AACzB,IAAQ,KAAA,GAAA,KAAA,CAAA;AAER,IAAA,OAAO,KAAK,QAAQ,CAAA;AAAE,MAAA,CAAA;AAEtB,IAAQ,KAAA,GAAA,KAAA,CAAA;AAAA,GACV;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAO,OAAA;AAAA,MACL,MAAA,EAAQC,OAAY,MAAO,CAAA,MAAA,EAAQ,OAAO,EAAE,IAAA,EAAM,QAAS,EAAC,CAAK,IAAA,KAAA;AAAA,MACjE,KAAA,EAAOA,OAAY,KAAM,CAAA,MAAA,EAAQ,KAAK,EAAE,IAAA,EAAM,QAAS,EAAC,CAAK,IAAA,GAAA;AAAA,KAC/D,CAAA;AAAA,GACF;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,KAAO,EAAA,KAAA,EAAO,GAAI,EAAA,CAAA;AACrC;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ function isEmptyString(string) {
4
+ return !string.trim();
5
+ }
6
+
7
+ exports.isEmptyString = isEmptyString;
8
+ //# sourceMappingURL=is-empty-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-empty-string.js","sources":["../../../src/slate/utils/is-empty-string.ts"],"sourcesContent":["export function isEmptyString(string: string) {\n return !string.trim();\n}\n"],"names":[],"mappings":";;AAAO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAO,OAAA,CAAC,OAAO,IAAK,EAAA,CAAA;AACtB;;;;"}
@@ -0,0 +1,6 @@
1
+ function isEmptyString(string) {
2
+ return !string.trim();
3
+ }
4
+
5
+ export { isEmptyString };
6
+ //# sourceMappingURL=is-empty-string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-empty-string.mjs","sources":["../../../src/slate/utils/is-empty-string.ts"],"sourcesContent":["export function isEmptyString(string: string) {\n return !string.trim();\n}\n"],"names":[],"mappings":"AAAO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAO,OAAA,CAAC,OAAO,IAAK,EAAA,CAAA;AACtB;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var slate = require('slate');
4
+
5
+ function isEmpty(editor, children) {
6
+ return children.length <= 1 && !slate.Text.isText(children[0]) && slate.Editor.isEmpty(editor, children[0]);
7
+ }
8
+
9
+ exports.isEmpty = isEmpty;
10
+ //# sourceMappingURL=is-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-empty.js","sources":["../../../src/slate/utils/is-empty.ts"],"sourcesContent":["import type { Descendant } from \"slate\";\nimport { Editor as SlateEditor, Text as SlateText } from \"slate\";\n\nexport function isEmpty(editor: SlateEditor, children: Descendant[]) {\n return (\n children.length <= 1 &&\n !SlateText.isText(children[0]) &&\n SlateEditor.isEmpty(editor, children[0])\n );\n}\n"],"names":["SlateText","SlateEditor"],"mappings":";;;;AAGgB,SAAA,OAAA,CAAQ,QAAqB,QAAwB,EAAA;AACnE,EAAA,OACE,QAAS,CAAA,MAAA,IAAU,CACnB,IAAA,CAACA,UAAU,CAAA,MAAA,CAAO,QAAS,CAAA,CAAA,CAAE,CAC7B,IAAAC,YAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,SAAS,CAAE,CAAA,CAAA,CAAA;AAE3C;;;;"}
@@ -0,0 +1,8 @@
1
+ import { Text, Editor } from 'slate';
2
+
3
+ function isEmpty(editor, children) {
4
+ return children.length <= 1 && !Text.isText(children[0]) && Editor.isEmpty(editor, children[0]);
5
+ }
6
+
7
+ export { isEmpty };
8
+ //# sourceMappingURL=is-empty.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-empty.mjs","sources":["../../../src/slate/utils/is-empty.ts"],"sourcesContent":["import type { Descendant } from \"slate\";\nimport { Editor as SlateEditor, Text as SlateText } from \"slate\";\n\nexport function isEmpty(editor: SlateEditor, children: Descendant[]) {\n return (\n children.length <= 1 &&\n !SlateText.isText(children[0]) &&\n SlateEditor.isEmpty(editor, children[0])\n );\n}\n"],"names":["SlateText","SlateEditor"],"mappings":";;AAGgB,SAAA,OAAA,CAAQ,QAAqB,QAAwB,EAAA;AACnE,EAAA,OACE,QAAS,CAAA,MAAA,IAAU,CACnB,IAAA,CAACA,IAAU,CAAA,MAAA,CAAO,QAAS,CAAA,CAAA,CAAE,CAC7B,IAAAC,MAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,SAAS,CAAE,CAAA,CAAA,CAAA;AAE3C;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var slate = require('slate');
4
+
5
+ function isSelectionCollapsed(selection) {
6
+ return selection !== null && slate.Range.isCollapsed(selection);
7
+ }
8
+
9
+ exports.isSelectionCollapsed = isSelectionCollapsed;
10
+ //# sourceMappingURL=is-selection-collapsed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-selection-collapsed.js","sources":["../../../src/slate/utils/is-selection-collapsed.ts"],"sourcesContent":["import type { Selection as SlateSelection } from \"slate\";\nimport { Range as SlateRange } from \"slate\";\n\nexport function isSelectionCollapsed(\n selection: SlateSelection\n): selection is SlateRange {\n return selection !== null && SlateRange.isCollapsed(selection);\n}\n"],"names":["SlateRange"],"mappings":";;;;AAGO,SAAS,qBACd,SACyB,EAAA;AACzB,EAAA,OAAO,SAAc,KAAA,IAAA,IAAQA,WAAW,CAAA,WAAA,CAAY,SAAS,CAAA,CAAA;AAC/D;;;;"}
@@ -0,0 +1,8 @@
1
+ import { Range } from 'slate';
2
+
3
+ function isSelectionCollapsed(selection) {
4
+ return selection !== null && Range.isCollapsed(selection);
5
+ }
6
+
7
+ export { isSelectionCollapsed };
8
+ //# sourceMappingURL=is-selection-collapsed.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-selection-collapsed.mjs","sources":["../../../src/slate/utils/is-selection-collapsed.ts"],"sourcesContent":["import type { Selection as SlateSelection } from \"slate\";\nimport { Range as SlateRange } from \"slate\";\n\nexport function isSelectionCollapsed(\n selection: SlateSelection\n): selection is SlateRange {\n return selection !== null && SlateRange.isCollapsed(selection);\n}\n"],"names":["SlateRange"],"mappings":";;AAGO,SAAS,qBACd,SACyB,EAAA;AACzB,EAAA,OAAO,SAAc,KAAA,IAAA,IAAQA,KAAW,CAAA,WAAA,CAAY,SAAS,CAAA,CAAA;AAC/D;;;;"}