@liveblocks/react-ui 2.18.3 → 2.18.4-uns1
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.
- package/dist/_private/index.cjs +118 -0
- package/dist/_private/index.cjs.map +1 -0
- package/dist/_private/index.js +54 -117
- package/dist/_private/index.js.map +1 -1
- package/dist/components/{Comment.mjs → Comment.cjs} +196 -169
- package/dist/components/{Comment.mjs.map → Comment.cjs.map} +1 -1
- package/dist/components/Comment.js +168 -195
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/{Composer.mjs → Composer.cjs} +151 -148
- package/dist/components/{Composer.mjs.map → Composer.cjs.map} +1 -1
- package/dist/components/Composer.js +147 -150
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/HistoryVersionSummary.cjs +45 -0
- package/dist/components/{HistoryVersionSummary.mjs.map → HistoryVersionSummary.cjs.map} +1 -1
- package/dist/components/HistoryVersionSummary.js +17 -19
- package/dist/components/HistoryVersionSummary.js.map +1 -1
- package/dist/components/HistoryVersionSummaryList.cjs +25 -0
- package/dist/components/{HistoryVersionSummaryList.mjs.map → HistoryVersionSummaryList.cjs.map} +1 -1
- package/dist/components/HistoryVersionSummaryList.js +8 -10
- package/dist/components/HistoryVersionSummaryList.js.map +1 -1
- package/dist/components/{InboxNotification.mjs → InboxNotification.cjs} +124 -122
- package/dist/components/{InboxNotification.mjs.map → InboxNotification.cjs.map} +1 -1
- package/dist/components/InboxNotification.js +121 -123
- package/dist/components/InboxNotification.js.map +1 -1
- package/dist/components/InboxNotificationList.cjs +42 -0
- package/dist/components/{InboxNotificationList.mjs.map → InboxNotificationList.cjs.map} +1 -1
- package/dist/components/InboxNotificationList.js +14 -16
- package/dist/components/InboxNotificationList.js.map +1 -1
- package/dist/components/{Thread.mjs → Thread.cjs} +70 -49
- package/dist/components/{Thread.mjs.map → Thread.cjs.map} +1 -1
- package/dist/components/Thread.js +48 -69
- package/dist/components/Thread.js.map +1 -1
- package/dist/components/internal/{Attachment.mjs → Attachment.cjs} +82 -78
- package/dist/components/internal/{Attachment.mjs.map → Attachment.cjs.map} +1 -1
- package/dist/components/internal/Attachment.js +77 -81
- package/dist/components/internal/Attachment.js.map +1 -1
- package/dist/components/internal/{Attribution.mjs → Attribution.cjs} +10 -8
- package/dist/components/internal/{Attribution.mjs.map → Attribution.cjs.map} +1 -1
- package/dist/components/internal/Attribution.js +7 -9
- package/dist/components/internal/Attribution.js.map +1 -1
- package/dist/components/internal/Avatar.cjs +48 -0
- package/dist/components/internal/{Avatar.mjs.map → Avatar.cjs.map} +1 -1
- package/dist/components/internal/Avatar.js +18 -20
- package/dist/components/internal/Avatar.js.map +1 -1
- package/dist/components/internal/Button.cjs +80 -0
- package/dist/components/internal/{Button.mjs.map → Button.cjs.map} +1 -1
- package/dist/components/internal/Button.js +19 -23
- package/dist/components/internal/Button.js.map +1 -1
- package/dist/components/internal/Dropdown.cjs +92 -0
- package/dist/components/internal/{Dropdown.mjs.map → Dropdown.cjs.map} +1 -1
- package/dist/components/internal/Dropdown.js +22 -47
- package/dist/components/internal/Dropdown.js.map +1 -1
- package/dist/components/internal/Emoji.cjs +19 -0
- package/dist/components/internal/{Emoji.mjs.map → Emoji.cjs.map} +1 -1
- package/dist/components/internal/Emoji.js +8 -10
- package/dist/components/internal/Emoji.js.map +1 -1
- package/dist/components/internal/EmojiPicker.cjs +208 -0
- package/dist/components/internal/{EmojiPicker.mjs.map → EmojiPicker.cjs.map} +1 -1
- package/dist/components/internal/EmojiPicker.js +52 -76
- package/dist/components/internal/EmojiPicker.js.map +1 -1
- package/dist/components/internal/{Icon.mjs → Icon.cjs} +10 -6
- package/dist/components/internal/{Icon.mjs.map → Icon.cjs.map} +1 -1
- package/dist/components/internal/Icon.js +5 -9
- package/dist/components/internal/Icon.js.map +1 -1
- package/dist/components/internal/{InboxNotificationThread.mjs → InboxNotificationThread.cjs} +34 -30
- package/dist/components/internal/{InboxNotificationThread.mjs.map → InboxNotificationThread.cjs.map} +1 -1
- package/dist/components/internal/InboxNotificationThread.js +29 -33
- package/dist/components/internal/InboxNotificationThread.js.map +1 -1
- package/dist/components/internal/List.cjs +36 -0
- package/dist/components/internal/{List.mjs.map → List.cjs.map} +1 -1
- package/dist/components/internal/List.js +14 -16
- package/dist/components/internal/List.js.map +1 -1
- package/dist/components/internal/Room.cjs +24 -0
- package/dist/components/internal/{Room.mjs.map → Room.cjs.map} +1 -1
- package/dist/components/internal/Room.js +9 -11
- package/dist/components/internal/Room.js.map +1 -1
- package/dist/components/internal/Tooltip.cjs +134 -0
- package/dist/components/internal/{Tooltip.mjs.map → Tooltip.cjs.map} +1 -1
- package/dist/components/internal/Tooltip.js +29 -54
- package/dist/components/internal/Tooltip.js.map +1 -1
- package/dist/components/internal/User.cjs +28 -0
- package/dist/components/internal/{User.mjs.map → User.cjs.map} +1 -1
- package/dist/components/internal/User.js +13 -15
- package/dist/components/internal/User.js.map +1 -1
- package/dist/components.cjs +48 -0
- package/dist/{components.mjs.map → components.cjs.map} +1 -1
- package/dist/components.js +9 -14
- package/dist/components.js.map +1 -1
- package/dist/config.cjs +39 -0
- package/dist/{config.mjs.map → config.cjs.map} +1 -1
- package/dist/config.js +15 -18
- package/dist/config.js.map +1 -1
- package/dist/{constants.mjs → constants.cjs} +6 -2
- package/dist/{constants.mjs.map → constants.cjs.map} +1 -1
- package/dist/constants.js +1 -5
- package/dist/constants.js.map +1 -1
- package/dist/icon.cjs +69 -0
- package/dist/icon.cjs.map +1 -0
- package/dist/icon.js +32 -68
- package/dist/icon.js.map +1 -1
- package/dist/icons/ArrowCornerDownRight.cjs +16 -0
- package/dist/icons/{ArrowCornerDownRight.mjs.map → ArrowCornerDownRight.cjs.map} +1 -1
- package/dist/icons/ArrowCornerDownRight.js +5 -7
- package/dist/icons/ArrowCornerDownRight.js.map +1 -1
- package/dist/icons/ArrowCornerUpRight.cjs +16 -0
- package/dist/icons/ArrowCornerUpRight.cjs.map +1 -0
- package/dist/icons/ArrowCornerUpRight.js +5 -7
- package/dist/icons/ArrowCornerUpRight.js.map +1 -1
- package/dist/icons/ArrowDown.cjs +16 -0
- package/dist/icons/ArrowDown.cjs.map +1 -0
- package/dist/icons/ArrowDown.js +5 -7
- package/dist/icons/ArrowDown.js.map +1 -1
- package/dist/icons/ArrowUp.cjs +16 -0
- package/dist/icons/ArrowUp.cjs.map +1 -0
- package/dist/icons/ArrowUp.js +5 -7
- package/dist/icons/ArrowUp.js.map +1 -1
- package/dist/icons/{Attachment.mjs → Attachment.cjs} +8 -6
- package/dist/icons/{Attachment.mjs.map → Attachment.cjs.map} +1 -1
- package/dist/icons/Attachment.js +5 -7
- package/dist/icons/Attachment.js.map +1 -1
- package/dist/icons/Blockquote.cjs +16 -0
- package/dist/icons/Blockquote.cjs.map +1 -0
- package/dist/icons/Blockquote.js +5 -7
- package/dist/icons/Blockquote.js.map +1 -1
- package/dist/icons/Bold.cjs +16 -0
- package/dist/icons/{Bold.mjs.map → Bold.cjs.map} +1 -1
- package/dist/icons/Bold.js +5 -7
- package/dist/icons/Bold.js.map +1 -1
- package/dist/icons/Check.cjs +16 -0
- package/dist/icons/Check.cjs.map +1 -0
- package/dist/icons/Check.js +5 -7
- package/dist/icons/Check.js.map +1 -1
- package/dist/icons/ChevronDown.cjs +16 -0
- package/dist/icons/{ChevronDown.mjs.map → ChevronDown.cjs.map} +1 -1
- package/dist/icons/ChevronDown.js +5 -7
- package/dist/icons/ChevronDown.js.map +1 -1
- package/dist/icons/ChevronLeft.cjs +16 -0
- package/dist/icons/{ChevronLeft.mjs.map → ChevronLeft.cjs.map} +1 -1
- package/dist/icons/ChevronLeft.js +5 -7
- package/dist/icons/ChevronLeft.js.map +1 -1
- package/dist/icons/ChevronRight.cjs +16 -0
- package/dist/icons/{ChevronRight.mjs.map → ChevronRight.cjs.map} +1 -1
- package/dist/icons/ChevronRight.js +5 -7
- package/dist/icons/ChevronRight.js.map +1 -1
- package/dist/icons/ChevronUp.cjs +16 -0
- package/dist/icons/{ChevronUp.mjs.map → ChevronUp.cjs.map} +1 -1
- package/dist/icons/ChevronUp.js +5 -7
- package/dist/icons/ChevronUp.js.map +1 -1
- package/dist/icons/Code.cjs +16 -0
- package/dist/icons/Code.cjs.map +1 -0
- package/dist/icons/Code.js +5 -7
- package/dist/icons/Code.js.map +1 -1
- package/dist/icons/Comment.cjs +16 -0
- package/dist/icons/{Comment.mjs.map → Comment.cjs.map} +1 -1
- package/dist/icons/Comment.js +5 -7
- package/dist/icons/Comment.js.map +1 -1
- package/dist/icons/Cross.cjs +21 -0
- package/dist/icons/Cross.cjs.map +1 -0
- package/dist/icons/Cross.js +6 -8
- package/dist/icons/Cross.js.map +1 -1
- package/dist/icons/Delete.cjs +16 -0
- package/dist/icons/{Delete.mjs.map → Delete.cjs.map} +1 -1
- package/dist/icons/Delete.js +5 -7
- package/dist/icons/Delete.js.map +1 -1
- package/dist/icons/Edit.cjs +16 -0
- package/dist/icons/{Edit.mjs.map → Edit.cjs.map} +1 -1
- package/dist/icons/Edit.js +5 -7
- package/dist/icons/Edit.js.map +1 -1
- package/dist/icons/Ellipsis.cjs +31 -0
- package/dist/icons/Ellipsis.cjs.map +1 -0
- package/dist/icons/Ellipsis.js +7 -9
- package/dist/icons/Ellipsis.js.map +1 -1
- package/dist/icons/Emoji.cjs +34 -0
- package/dist/icons/Emoji.cjs.map +1 -0
- package/dist/icons/Emoji.js +9 -11
- package/dist/icons/Emoji.js.map +1 -1
- package/dist/icons/EmojiAdd.cjs +37 -0
- package/dist/icons/EmojiAdd.cjs.map +1 -0
- package/dist/icons/EmojiAdd.js +10 -12
- package/dist/icons/EmojiAdd.js.map +1 -1
- package/dist/icons/H1.cjs +16 -0
- package/dist/icons/{H1.mjs.map → H1.cjs.map} +1 -1
- package/dist/icons/H1.js +5 -7
- package/dist/icons/H1.js.map +1 -1
- package/dist/icons/H2.cjs +16 -0
- package/dist/icons/H2.cjs.map +1 -0
- package/dist/icons/H2.js +5 -7
- package/dist/icons/H2.js.map +1 -1
- package/dist/icons/H3.cjs +16 -0
- package/dist/icons/{H3.mjs.map → H3.cjs.map} +1 -1
- package/dist/icons/H3.js +5 -7
- package/dist/icons/H3.js.map +1 -1
- package/dist/icons/Italic.cjs +16 -0
- package/dist/icons/{Italic.mjs.map → Italic.cjs.map} +1 -1
- package/dist/icons/Italic.js +5 -7
- package/dist/icons/Italic.js.map +1 -1
- package/dist/icons/Lengthen.cjs +16 -0
- package/dist/icons/Lengthen.cjs.map +1 -0
- package/dist/icons/Lengthen.js +5 -7
- package/dist/icons/Lengthen.js.map +1 -1
- package/dist/icons/ListOrdered.cjs +16 -0
- package/dist/icons/{ListOrdered.mjs.map → ListOrdered.cjs.map} +1 -1
- package/dist/icons/ListOrdered.js +5 -7
- package/dist/icons/ListOrdered.js.map +1 -1
- package/dist/icons/ListUnordered.cjs +39 -0
- package/dist/icons/ListUnordered.cjs.map +1 -0
- package/dist/icons/ListUnordered.js +10 -12
- package/dist/icons/ListUnordered.js.map +1 -1
- package/dist/icons/Mention.cjs +21 -0
- package/dist/icons/Mention.cjs.map +1 -0
- package/dist/icons/Mention.js +6 -8
- package/dist/icons/Mention.js.map +1 -1
- package/dist/icons/QuestionMark.cjs +26 -0
- package/dist/icons/QuestionMark.cjs.map +1 -0
- package/dist/icons/QuestionMark.js +7 -9
- package/dist/icons/QuestionMark.js.map +1 -1
- package/dist/icons/Redo.cjs +21 -0
- package/dist/icons/Redo.cjs.map +1 -0
- package/dist/icons/Redo.js +6 -8
- package/dist/icons/Redo.js.map +1 -1
- package/dist/icons/Resolve.cjs +23 -0
- package/dist/icons/Resolve.cjs.map +1 -0
- package/dist/icons/Resolve.js +6 -8
- package/dist/icons/Resolve.js.map +1 -1
- package/dist/icons/Resolved.cjs +25 -0
- package/dist/icons/Resolved.cjs.map +1 -0
- package/dist/icons/Resolved.js +6 -8
- package/dist/icons/Resolved.js.map +1 -1
- package/dist/icons/Restore.cjs +21 -0
- package/dist/icons/Restore.cjs.map +1 -0
- package/dist/icons/Restore.js +6 -8
- package/dist/icons/Restore.js.map +1 -1
- package/dist/icons/Search.cjs +16 -0
- package/dist/icons/{Search.mjs.map → Search.cjs.map} +1 -1
- package/dist/icons/Search.js +5 -7
- package/dist/icons/Search.js.map +1 -1
- package/dist/icons/Send.cjs +16 -0
- package/dist/icons/Send.cjs.map +1 -0
- package/dist/icons/Send.js +5 -7
- package/dist/icons/Send.js.map +1 -1
- package/dist/icons/Shorten.cjs +16 -0
- package/dist/icons/{Shorten.mjs.map → Shorten.cjs.map} +1 -1
- package/dist/icons/Shorten.js +5 -7
- package/dist/icons/Shorten.js.map +1 -1
- package/dist/icons/{Sparkles.mjs → Sparkles.cjs} +8 -6
- package/dist/icons/{Sparkles.mjs.map → Sparkles.cjs.map} +1 -1
- package/dist/icons/Sparkles.js +5 -7
- package/dist/icons/Sparkles.js.map +1 -1
- package/dist/icons/SparklesText.cjs +21 -0
- package/dist/icons/{SparklesText.mjs.map → SparklesText.cjs.map} +1 -1
- package/dist/icons/SparklesText.js +6 -8
- package/dist/icons/SparklesText.js.map +1 -1
- package/dist/icons/Spinner.cjs +17 -0
- package/dist/icons/Spinner.cjs.map +1 -0
- package/dist/icons/Spinner.js +5 -7
- package/dist/icons/Spinner.js.map +1 -1
- package/dist/icons/Strikethrough.cjs +16 -0
- package/dist/icons/{Strikethrough.mjs.map → Strikethrough.cjs.map} +1 -1
- package/dist/icons/Strikethrough.js +5 -7
- package/dist/icons/Strikethrough.js.map +1 -1
- package/dist/icons/Text.cjs +16 -0
- package/dist/icons/{Text.mjs.map → Text.cjs.map} +1 -1
- package/dist/icons/Text.js +5 -7
- package/dist/icons/Text.js.map +1 -1
- package/dist/icons/Translate.cjs +21 -0
- package/dist/icons/{Translate.mjs.map → Translate.cjs.map} +1 -1
- package/dist/icons/Translate.js +6 -8
- package/dist/icons/Translate.js.map +1 -1
- package/dist/icons/Underline.cjs +16 -0
- package/dist/icons/Underline.cjs.map +1 -0
- package/dist/icons/Underline.js +5 -7
- package/dist/icons/Underline.js.map +1 -1
- package/dist/icons/Undo.cjs +21 -0
- package/dist/icons/Undo.cjs.map +1 -0
- package/dist/icons/Undo.js +6 -8
- package/dist/icons/Undo.js.map +1 -1
- package/dist/icons/Warning.cjs +23 -0
- package/dist/icons/Warning.cjs.map +1 -0
- package/dist/icons/Warning.js +6 -8
- package/dist/icons/Warning.js.map +1 -1
- package/dist/icons/index.cjs +96 -0
- package/dist/icons/index.cjs.map +1 -0
- package/dist/icons/index.js +45 -95
- package/dist/icons/index.js.map +1 -1
- package/dist/index.cjs +28 -0
- package/dist/{index.mjs.map → index.cjs.map} +1 -1
- package/dist/index.js +14 -26
- package/dist/index.js.map +1 -1
- package/dist/{overrides.mjs → overrides.cjs} +32 -27
- package/dist/{overrides.mjs.map → overrides.cjs.map} +1 -1
- package/dist/overrides.js +26 -31
- package/dist/overrides.js.map +1 -1
- package/dist/primitives/Comment/{index.mjs → index.cjs} +35 -31
- package/dist/primitives/Comment/{index.mjs.map → index.cjs.map} +1 -1
- package/dist/primitives/Comment/index.js +30 -34
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Comment/{utils.mjs → utils.cjs} +7 -2
- package/dist/primitives/Comment/{utils.mjs.map → utils.cjs.map} +1 -1
- package/dist/primitives/Comment/utils.js +1 -6
- package/dist/primitives/Comment/utils.js.map +1 -1
- package/dist/primitives/Composer/contexts.cjs +60 -0
- package/dist/primitives/Composer/{contexts.mjs.map → contexts.cjs.map} +1 -1
- package/dist/primitives/Composer/contexts.js +18 -30
- package/dist/primitives/Composer/contexts.js.map +1 -1
- package/dist/primitives/Composer/{index.mjs → index.cjs} +305 -273
- package/dist/primitives/Composer/{index.mjs.map → index.cjs.map} +1 -1
- package/dist/primitives/Composer/index.js +272 -304
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/primitives/Composer/{utils.mjs → utils.cjs} +79 -64
- package/dist/primitives/Composer/{utils.mjs.map → utils.cjs.map} +1 -1
- package/dist/primitives/Composer/utils.js +63 -78
- package/dist/primitives/Composer/utils.js.map +1 -1
- package/dist/primitives/EmojiPicker/contexts.cjs +19 -0
- package/dist/primitives/EmojiPicker/{contexts.mjs.map → contexts.cjs.map} +1 -1
- package/dist/primitives/EmojiPicker/contexts.js +6 -9
- package/dist/primitives/EmojiPicker/contexts.js.map +1 -1
- package/dist/primitives/EmojiPicker/{index.mjs → index.cjs} +96 -92
- package/dist/primitives/EmojiPicker/{index.mjs.map → index.cjs.map} +1 -1
- package/dist/primitives/EmojiPicker/index.js +91 -95
- package/dist/primitives/EmojiPicker/index.js.map +1 -1
- package/dist/primitives/EmojiPicker/{utils.mjs → utils.cjs} +14 -10
- package/dist/primitives/EmojiPicker/{utils.mjs.map → utils.cjs.map} +1 -1
- package/dist/primitives/EmojiPicker/utils.js +9 -13
- package/dist/primitives/EmojiPicker/utils.js.map +1 -1
- package/dist/primitives/FileSize.cjs +36 -0
- package/dist/primitives/{FileSize.mjs.map → FileSize.cjs.map} +1 -1
- package/dist/primitives/FileSize.js +10 -12
- package/dist/primitives/FileSize.js.map +1 -1
- package/dist/primitives/{Timestamp.mjs → Timestamp.cjs} +27 -25
- package/dist/primitives/{Timestamp.mjs.map → Timestamp.cjs.map} +1 -1
- package/dist/primitives/Timestamp.js +24 -26
- package/dist/primitives/Timestamp.js.map +1 -1
- package/dist/primitives/index.cjs +20 -0
- package/dist/primitives/index.cjs.map +1 -0
- package/dist/primitives/index.js +10 -19
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/internal/Emoji.cjs +32 -0
- package/dist/primitives/internal/{Emoji.mjs.map → Emoji.cjs.map} +1 -1
- package/dist/primitives/internal/Emoji.js +9 -11
- package/dist/primitives/internal/Emoji.js.map +1 -1
- package/dist/shared.cjs +13 -0
- package/dist/{shared.mjs.map → shared.cjs.map} +1 -1
- package/dist/shared.js +6 -8
- package/dist/shared.js.map +1 -1
- package/dist/slate/plugins/{auto-formatting.mjs → auto-formatting.cjs} +18 -16
- package/dist/slate/plugins/{auto-formatting.mjs.map → auto-formatting.cjs.map} +1 -1
- package/dist/slate/plugins/auto-formatting.js +15 -17
- package/dist/slate/plugins/auto-formatting.js.map +1 -1
- package/dist/slate/plugins/{auto-links.mjs → auto-links.cjs} +43 -40
- package/dist/slate/plugins/{auto-links.mjs.map → auto-links.cjs.map} +1 -1
- package/dist/slate/plugins/auto-links.js +39 -42
- package/dist/slate/plugins/auto-links.js.map +1 -1
- package/dist/slate/plugins/{custom-links.mjs → custom-links.cjs} +19 -16
- package/dist/slate/plugins/{custom-links.mjs.map → custom-links.cjs.map} +1 -1
- package/dist/slate/plugins/custom-links.js +15 -18
- package/dist/slate/plugins/custom-links.js.map +1 -1
- package/dist/slate/plugins/empty-clear-formatting.cjs +18 -0
- package/dist/slate/plugins/{empty-clear-formatting.mjs.map → empty-clear-formatting.cjs.map} +1 -1
- package/dist/slate/plugins/empty-clear-formatting.js +5 -7
- package/dist/slate/plugins/empty-clear-formatting.js.map +1 -1
- package/dist/slate/plugins/mentions.cjs +129 -0
- package/dist/slate/plugins/{mentions.mjs.map → mentions.cjs.map} +1 -1
- package/dist/slate/plugins/mentions.js +35 -42
- package/dist/slate/plugins/mentions.js.map +1 -1
- package/dist/slate/plugins/normalize.cjs +28 -0
- package/dist/slate/plugins/normalize.cjs.map +1 -0
- package/dist/slate/plugins/normalize.js +8 -10
- package/dist/slate/plugins/normalize.js.map +1 -1
- package/dist/slate/plugins/{paste.mjs → paste.cjs} +14 -12
- package/dist/slate/plugins/{paste.mjs.map → paste.cjs.map} +1 -1
- package/dist/slate/plugins/paste.js +11 -13
- package/dist/slate/plugins/paste.js.map +1 -1
- package/dist/slate/utils/get-character.cjs +50 -0
- package/dist/slate/utils/{get-character.mjs.map → get-character.cjs.map} +1 -1
- package/dist/slate/utils/get-character.js +10 -13
- package/dist/slate/utils/get-character.js.map +1 -1
- package/dist/slate/utils/get-dom-range.cjs +17 -0
- package/dist/slate/utils/{get-dom-range.mjs.map → get-dom-range.cjs.map} +1 -1
- package/dist/slate/utils/get-dom-range.js +3 -5
- package/dist/slate/utils/get-dom-range.js.map +1 -1
- package/dist/slate/utils/{get-match-range.mjs → get-match-range.cjs} +14 -12
- package/dist/slate/utils/{get-match-range.mjs.map → get-match-range.cjs.map} +1 -1
- package/dist/slate/utils/get-match-range.js +11 -13
- package/dist/slate/utils/get-match-range.js.map +1 -1
- package/dist/slate/utils/is-empty-string.cjs +8 -0
- package/dist/slate/utils/is-empty-string.cjs.map +1 -0
- package/dist/slate/utils/is-empty-string.js +1 -3
- package/dist/slate/utils/is-empty-string.js.map +1 -1
- package/dist/slate/utils/is-empty.cjs +27 -0
- package/dist/slate/utils/{is-empty.mjs.map → is-empty.cjs.map} +1 -1
- package/dist/slate/utils/is-empty.js +8 -10
- package/dist/slate/utils/is-empty.js.map +1 -1
- package/dist/slate/utils/{is-text.mjs → is-text.cjs} +5 -2
- package/dist/slate/utils/{is-text.mjs.map → is-text.cjs.map} +1 -1
- package/dist/slate/utils/is-text.js +1 -4
- package/dist/slate/utils/is-text.js.map +1 -1
- package/dist/slate/utils/{is-whitespace-character.mjs → is-whitespace-character.cjs} +4 -2
- package/dist/slate/utils/{is-whitespace-character.mjs.map → is-whitespace-character.cjs.map} +1 -1
- package/dist/slate/utils/is-whitespace-character.js +1 -3
- package/dist/slate/utils/is-whitespace-character.js.map +1 -1
- package/dist/slate/utils/marks.cjs +62 -0
- package/dist/slate/utils/{marks.mjs.map → marks.cjs.map} +1 -1
- package/dist/slate/utils/marks.js +12 -19
- package/dist/slate/utils/marks.js.map +1 -1
- package/dist/slate/utils/selection-contains-inlines.cjs +36 -0
- package/dist/slate/utils/selection-contains-inlines.cjs.map +1 -0
- package/dist/slate/utils/selection-contains-inlines.js +7 -9
- package/dist/slate/utils/selection-contains-inlines.js.map +1 -1
- package/dist/utils/{Persist.mjs → Persist.cjs} +26 -22
- package/dist/utils/{Persist.mjs.map → Persist.cjs.map} +1 -1
- package/dist/utils/Persist.js +21 -25
- package/dist/utils/Persist.js.map +1 -1
- package/dist/utils/Portal.cjs +29 -0
- package/dist/utils/{Portal.mjs.map → Portal.cjs.map} +1 -1
- package/dist/utils/Portal.js +9 -11
- package/dist/utils/Portal.js.map +1 -1
- package/dist/utils/{capitalize.mjs → capitalize.cjs} +4 -2
- package/dist/utils/capitalize.cjs.map +1 -0
- package/dist/utils/capitalize.js +1 -3
- package/dist/utils/capitalize.js.map +1 -1
- package/dist/utils/{clamp.mjs → clamp.cjs} +4 -2
- package/dist/utils/clamp.cjs.map +1 -0
- package/dist/utils/clamp.js +1 -3
- package/dist/utils/clamp.js.map +1 -1
- package/dist/utils/{class-names.mjs → class-names.cjs} +4 -2
- package/dist/utils/{class-names.mjs.map → class-names.cjs.map} +1 -1
- package/dist/utils/class-names.js +1 -3
- package/dist/utils/class-names.js.map +1 -1
- package/dist/utils/{data-transfer.mjs → data-transfer.cjs} +6 -4
- package/dist/utils/{data-transfer.mjs.map → data-transfer.cjs.map} +1 -1
- package/dist/utils/data-transfer.js +3 -5
- package/dist/utils/data-transfer.js.map +1 -1
- package/dist/utils/{download.mjs → download.cjs} +4 -2
- package/dist/utils/download.cjs.map +1 -0
- package/dist/utils/download.js +1 -3
- package/dist/utils/download.js.map +1 -1
- package/dist/utils/exists.cjs +8 -0
- package/dist/utils/exists.cjs.map +1 -0
- package/dist/utils/exists.js +1 -3
- package/dist/utils/exists.js.map +1 -1
- package/dist/utils/{find-last-index.mjs → find-last-index.cjs} +4 -2
- package/dist/utils/find-last-index.cjs.map +1 -0
- package/dist/utils/find-last-index.js +1 -3
- package/dist/utils/find-last-index.js.map +1 -1
- package/dist/utils/{format-file-size.mjs → format-file-size.cjs} +6 -4
- package/dist/utils/format-file-size.cjs.map +1 -0
- package/dist/utils/format-file-size.js +3 -5
- package/dist/utils/format-file-size.js.map +1 -1
- package/dist/utils/{get-initials.mjs → get-initials.cjs} +4 -2
- package/dist/utils/get-initials.cjs.map +1 -0
- package/dist/utils/get-initials.js +1 -3
- package/dist/utils/get-initials.js.map +1 -1
- package/dist/utils/intl.cjs +30 -0
- package/dist/utils/{intl.mjs.map → intl.cjs.map} +1 -1
- package/dist/utils/intl.js +6 -11
- package/dist/utils/intl.js.map +1 -1
- package/dist/utils/{is-apple.mjs → is-apple.cjs} +4 -2
- package/dist/utils/is-apple.cjs.map +1 -0
- package/dist/utils/is-apple.js +1 -3
- package/dist/utils/is-apple.js.map +1 -1
- package/dist/utils/{is-key.mjs → is-key.cjs} +6 -4
- package/dist/utils/{is-key.mjs.map → is-key.cjs.map} +1 -1
- package/dist/utils/is-key.js +3 -5
- package/dist/utils/is-key.js.map +1 -1
- package/dist/utils/{memoize.mjs → memoize.cjs} +6 -4
- package/dist/utils/memoize.cjs.map +1 -0
- package/dist/utils/memoize.js +3 -5
- package/dist/utils/memoize.js.map +1 -1
- package/dist/utils/{pluralize.mjs → pluralize.cjs} +4 -2
- package/dist/utils/pluralize.cjs.map +1 -0
- package/dist/utils/pluralize.js +1 -3
- package/dist/utils/pluralize.js.map +1 -1
- package/dist/utils/{request-idle-callback.mjs → request-idle-callback.cjs} +5 -2
- package/dist/utils/{request-idle-callback.mjs.map → request-idle-callback.cjs.map} +1 -1
- package/dist/utils/request-idle-callback.js +1 -4
- package/dist/utils/request-idle-callback.js.map +1 -1
- package/dist/utils/{request-submit.mjs → request-submit.cjs} +4 -2
- package/dist/utils/request-submit.cjs.map +1 -0
- package/dist/utils/request-submit.js +1 -3
- package/dist/utils/request-submit.js.map +1 -1
- package/dist/utils/{url.mjs → url.cjs} +4 -2
- package/dist/utils/url.cjs.map +1 -0
- package/dist/utils/url.js +1 -3
- package/dist/utils/url.js.map +1 -1
- package/dist/utils/{use-controllable-state.mjs → use-controllable-state.cjs} +11 -9
- package/dist/utils/{use-controllable-state.mjs.map → use-controllable-state.cjs.map} +1 -1
- package/dist/utils/use-controllable-state.js +8 -10
- package/dist/utils/use-controllable-state.js.map +1 -1
- package/dist/utils/use-index.cjs +32 -0
- package/dist/utils/{use-index.mjs.map → use-index.cjs.map} +1 -1
- package/dist/utils/use-index.js +11 -13
- package/dist/utils/use-index.js.map +1 -1
- package/dist/utils/use-initial.cjs +11 -0
- package/dist/utils/{use-initial.mjs.map → use-initial.cjs.map} +1 -1
- package/dist/utils/use-initial.js +3 -5
- package/dist/utils/use-initial.js.map +1 -1
- package/dist/utils/{use-interval.mjs → use-interval.cjs} +8 -6
- package/dist/utils/use-interval.cjs.map +1 -0
- package/dist/utils/use-interval.js +5 -7
- package/dist/utils/use-interval.js.map +1 -1
- package/dist/utils/use-latest.cjs +14 -0
- package/dist/utils/{use-latest.mjs.map → use-latest.cjs.map} +1 -1
- package/dist/utils/use-latest.js +4 -6
- package/dist/utils/use-latest.js.map +1 -1
- package/dist/utils/use-observable.cjs +15 -0
- package/dist/utils/{use-observable.mjs.map → use-observable.cjs.map} +1 -1
- package/dist/utils/use-observable.js +5 -7
- package/dist/utils/use-observable.js.map +1 -1
- package/dist/utils/{use-refs.mjs → use-refs.cjs} +6 -4
- package/dist/utils/{use-refs.mjs.map → use-refs.cjs.map} +1 -1
- package/dist/utils/use-refs.js +3 -5
- package/dist/utils/use-refs.js.map +1 -1
- package/dist/utils/use-rerender.cjs +14 -0
- package/dist/utils/{use-rerender.mjs.map → use-rerender.cjs.map} +1 -1
- package/dist/utils/use-rerender.js +3 -5
- package/dist/utils/use-rerender.js.map +1 -1
- package/dist/utils/{use-visible.mjs → use-visible.cjs} +11 -8
- package/dist/utils/{use-visible.mjs.map → use-visible.cjs.map} +1 -1
- package/dist/utils/use-visible.js +7 -10
- package/dist/utils/use-visible.js.map +1 -1
- package/dist/utils/{use-window-focus.mjs → use-window-focus.cjs} +6 -4
- package/dist/utils/use-window-focus.cjs.map +1 -0
- package/dist/utils/use-window-focus.js +3 -5
- package/dist/utils/use-window-focus.js.map +1 -1
- package/dist/utils/{visually-hidden.mjs → visually-hidden.cjs} +4 -2
- package/dist/utils/visually-hidden.cjs.map +1 -0
- package/dist/utils/visually-hidden.js +1 -3
- package/dist/utils/visually-hidden.js.map +1 -1
- package/dist/utils/{wrap.mjs → wrap.cjs} +4 -2
- package/dist/utils/wrap.cjs.map +1 -0
- package/dist/utils/wrap.js +1 -3
- package/dist/utils/wrap.js.map +1 -1
- package/dist/version.cjs +10 -0
- package/dist/{version.mjs.map → version.cjs.map} +1 -1
- package/dist/version.js +3 -7
- package/dist/version.js.map +1 -1
- package/package.json +28 -27
- package/styles/dark/attributes.css.d.cts +1 -0
- package/styles/dark/media-query.css.d.cts +1 -0
- package/styles.css.d.cts +1 -0
- package/dist/_private/index.mjs +0 -55
- package/dist/_private/index.mjs.map +0 -1
- package/dist/components/HistoryVersionSummary.mjs +0 -43
- package/dist/components/HistoryVersionSummaryList.mjs +0 -23
- package/dist/components/InboxNotificationList.mjs +0 -40
- package/dist/components/internal/Avatar.mjs +0 -46
- package/dist/components/internal/Button.mjs +0 -76
- package/dist/components/internal/Dropdown.mjs +0 -67
- package/dist/components/internal/Emoji.mjs +0 -17
- package/dist/components/internal/EmojiPicker.mjs +0 -184
- package/dist/components/internal/List.mjs +0 -34
- package/dist/components/internal/Room.mjs +0 -22
- package/dist/components/internal/Tooltip.mjs +0 -109
- package/dist/components/internal/User.mjs +0 -26
- package/dist/components.mjs +0 -43
- package/dist/config.mjs +0 -36
- package/dist/icon.mjs +0 -33
- package/dist/icon.mjs.map +0 -1
- package/dist/icons/ArrowCornerDownRight.mjs +0 -14
- package/dist/icons/ArrowCornerUpRight.mjs +0 -14
- package/dist/icons/ArrowCornerUpRight.mjs.map +0 -1
- package/dist/icons/ArrowDown.mjs +0 -14
- package/dist/icons/ArrowDown.mjs.map +0 -1
- package/dist/icons/ArrowUp.mjs +0 -14
- package/dist/icons/ArrowUp.mjs.map +0 -1
- package/dist/icons/Blockquote.mjs +0 -14
- package/dist/icons/Blockquote.mjs.map +0 -1
- package/dist/icons/Bold.mjs +0 -14
- package/dist/icons/Check.mjs +0 -14
- package/dist/icons/Check.mjs.map +0 -1
- package/dist/icons/ChevronDown.mjs +0 -14
- package/dist/icons/ChevronLeft.mjs +0 -14
- package/dist/icons/ChevronRight.mjs +0 -14
- package/dist/icons/ChevronUp.mjs +0 -14
- package/dist/icons/Code.mjs +0 -14
- package/dist/icons/Code.mjs.map +0 -1
- package/dist/icons/Comment.mjs +0 -14
- package/dist/icons/Cross.mjs +0 -19
- package/dist/icons/Cross.mjs.map +0 -1
- package/dist/icons/Delete.mjs +0 -14
- package/dist/icons/Edit.mjs +0 -14
- package/dist/icons/Ellipsis.mjs +0 -29
- package/dist/icons/Ellipsis.mjs.map +0 -1
- package/dist/icons/Emoji.mjs +0 -32
- package/dist/icons/Emoji.mjs.map +0 -1
- package/dist/icons/EmojiAdd.mjs +0 -35
- package/dist/icons/EmojiAdd.mjs.map +0 -1
- package/dist/icons/H1.mjs +0 -14
- package/dist/icons/H2.mjs +0 -14
- package/dist/icons/H2.mjs.map +0 -1
- package/dist/icons/H3.mjs +0 -14
- package/dist/icons/Italic.mjs +0 -14
- package/dist/icons/Lengthen.mjs +0 -14
- package/dist/icons/Lengthen.mjs.map +0 -1
- package/dist/icons/ListOrdered.mjs +0 -14
- package/dist/icons/ListUnordered.mjs +0 -37
- package/dist/icons/ListUnordered.mjs.map +0 -1
- package/dist/icons/Mention.mjs +0 -19
- package/dist/icons/Mention.mjs.map +0 -1
- package/dist/icons/QuestionMark.mjs +0 -24
- package/dist/icons/QuestionMark.mjs.map +0 -1
- package/dist/icons/Redo.mjs +0 -19
- package/dist/icons/Redo.mjs.map +0 -1
- package/dist/icons/Resolve.mjs +0 -21
- package/dist/icons/Resolve.mjs.map +0 -1
- package/dist/icons/Resolved.mjs +0 -23
- package/dist/icons/Resolved.mjs.map +0 -1
- package/dist/icons/Restore.mjs +0 -19
- package/dist/icons/Restore.mjs.map +0 -1
- package/dist/icons/Search.mjs +0 -14
- package/dist/icons/Send.mjs +0 -14
- package/dist/icons/Send.mjs.map +0 -1
- package/dist/icons/Shorten.mjs +0 -14
- package/dist/icons/SparklesText.mjs +0 -19
- package/dist/icons/Spinner.mjs +0 -15
- package/dist/icons/Spinner.mjs.map +0 -1
- package/dist/icons/Strikethrough.mjs +0 -14
- package/dist/icons/Text.mjs +0 -14
- package/dist/icons/Translate.mjs +0 -19
- package/dist/icons/Underline.mjs +0 -14
- package/dist/icons/Underline.mjs.map +0 -1
- package/dist/icons/Undo.mjs +0 -19
- package/dist/icons/Undo.mjs.map +0 -1
- package/dist/icons/Warning.mjs +0 -21
- package/dist/icons/Warning.mjs.map +0 -1
- package/dist/icons/index.mjs +0 -46
- package/dist/icons/index.mjs.map +0 -1
- package/dist/index.mjs +0 -16
- package/dist/primitives/Composer/contexts.mjs +0 -48
- package/dist/primitives/EmojiPicker/contexts.mjs +0 -16
- package/dist/primitives/FileSize.mjs +0 -34
- package/dist/primitives/index.mjs +0 -11
- package/dist/primitives/index.mjs.map +0 -1
- package/dist/primitives/internal/Emoji.mjs +0 -30
- package/dist/shared.mjs +0 -11
- package/dist/slate/plugins/empty-clear-formatting.mjs +0 -16
- package/dist/slate/plugins/mentions.mjs +0 -122
- package/dist/slate/plugins/normalize.mjs +0 -26
- package/dist/slate/plugins/normalize.mjs.map +0 -1
- package/dist/slate/utils/get-character.mjs +0 -47
- package/dist/slate/utils/get-dom-range.mjs +0 -15
- package/dist/slate/utils/is-empty-string.mjs +0 -6
- package/dist/slate/utils/is-empty-string.mjs.map +0 -1
- package/dist/slate/utils/is-empty.mjs +0 -25
- package/dist/slate/utils/marks.mjs +0 -55
- package/dist/slate/utils/selection-contains-inlines.mjs +0 -34
- package/dist/slate/utils/selection-contains-inlines.mjs.map +0 -1
- package/dist/utils/Portal.mjs +0 -27
- package/dist/utils/capitalize.mjs.map +0 -1
- package/dist/utils/clamp.mjs.map +0 -1
- package/dist/utils/download.mjs.map +0 -1
- package/dist/utils/exists.mjs +0 -6
- package/dist/utils/exists.mjs.map +0 -1
- package/dist/utils/find-last-index.mjs.map +0 -1
- package/dist/utils/format-file-size.mjs.map +0 -1
- package/dist/utils/get-initials.mjs.map +0 -1
- package/dist/utils/intl.mjs +0 -25
- package/dist/utils/is-apple.mjs.map +0 -1
- package/dist/utils/memoize.mjs.map +0 -1
- package/dist/utils/pluralize.mjs.map +0 -1
- package/dist/utils/request-submit.mjs.map +0 -1
- package/dist/utils/url.mjs.map +0 -1
- package/dist/utils/use-index.mjs +0 -30
- package/dist/utils/use-initial.mjs +0 -9
- package/dist/utils/use-interval.mjs.map +0 -1
- package/dist/utils/use-latest.mjs +0 -12
- package/dist/utils/use-observable.mjs +0 -13
- package/dist/utils/use-rerender.mjs +0 -12
- package/dist/utils/use-window-focus.mjs.map +0 -1
- package/dist/utils/visually-hidden.mjs.map +0 -1
- package/dist/utils/wrap.mjs.map +0 -1
- package/dist/version.mjs +0 -6
- /package/dist/_private/{index.d.mts → index.d.cts} +0 -0
- /package/dist/{index.d.mts → index.d.cts} +0 -0
- /package/dist/primitives/{index.d.mts → index.d.cts} +0 -0
|
@@ -1,56 +1,35 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var contexts = require('./contexts.js');
|
|
34
|
-
var utils$1 = require('./utils.js');
|
|
35
|
-
|
|
36
|
-
function _interopNamespaceDefault(e) {
|
|
37
|
-
var n = Object.create(null);
|
|
38
|
-
if (e) {
|
|
39
|
-
Object.keys(e).forEach(function (k) {
|
|
40
|
-
if (k !== 'default') {
|
|
41
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
42
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function () { return e[k]; }
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
n.default = e;
|
|
50
|
-
return Object.freeze(n);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePrimitive);
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { createCommentAttachmentId, makeEventSource } from '@liveblocks/core';
|
|
4
|
+
import { useLayoutEffect, useClientOrNull, useResolveMentionSuggestions, useMentionSuggestions, useRoomOrNull, useSyncSource } from '@liveblocks/react/_private';
|
|
5
|
+
import { Slot, Slottable } from '@radix-ui/react-slot';
|
|
6
|
+
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
7
|
+
import { useMemo, useState, forwardRef, useRef, useCallback, useEffect, useId, useImperativeHandle } from 'react';
|
|
8
|
+
import { createEditor, Range, Transforms, Editor, insertText } from 'slate';
|
|
9
|
+
import { withHistory } from 'slate-history';
|
|
10
|
+
import { withReact, useSelected, useSlateStatic, ReactEditor, Slate, Editable } from 'slate-react';
|
|
11
|
+
import { useLiveblocksUIConfig } from '../../config.js';
|
|
12
|
+
import { withAutoFormatting } from '../../slate/plugins/auto-formatting.js';
|
|
13
|
+
import { withAutoLinks } from '../../slate/plugins/auto-links.js';
|
|
14
|
+
import { withCustomLinks } from '../../slate/plugins/custom-links.js';
|
|
15
|
+
import { withEmptyClearFormatting } from '../../slate/plugins/empty-clear-formatting.js';
|
|
16
|
+
import { withMentions, getMentionDraftAtSelection, MENTION_CHARACTER, insertMention, insertMentionCharacter } from '../../slate/plugins/mentions.js';
|
|
17
|
+
import { withNormalize } from '../../slate/plugins/normalize.js';
|
|
18
|
+
import { withPaste } from '../../slate/plugins/paste.js';
|
|
19
|
+
import { getDOMRange } from '../../slate/utils/get-dom-range.js';
|
|
20
|
+
import { isEmpty } from '../../slate/utils/is-empty.js';
|
|
21
|
+
import { leaveMarkEdge, toggleMark, getMarks } from '../../slate/utils/marks.js';
|
|
22
|
+
import { isKey } from '../../utils/is-key.js';
|
|
23
|
+
import { Persist, usePersist, useAnimationPersist } from '../../utils/Persist.js';
|
|
24
|
+
import { Portal } from '../../utils/Portal.js';
|
|
25
|
+
import { requestSubmit } from '../../utils/request-submit.js';
|
|
26
|
+
import { useIndex } from '../../utils/use-index.js';
|
|
27
|
+
import { useInitial } from '../../utils/use-initial.js';
|
|
28
|
+
import { useObservable } from '../../utils/use-observable.js';
|
|
29
|
+
import { useRefs } from '../../utils/use-refs.js';
|
|
30
|
+
import { toAbsoluteUrl } from '../Comment/utils.js';
|
|
31
|
+
import { useComposerEditorContext, useComposer, ComposerSuggestionsContext, ComposerFloatingToolbarContext, useComposerFloatingToolbarContext, useComposerSuggestionsContext, ComposerEditorContext, ComposerAttachmentsContext, ComposerContext, useComposerAttachmentsContext } from './contexts.js';
|
|
32
|
+
import { useContentZIndex, useFloatingWithOptions, getSideAndAlignFromFloatingPlacement, commentBodyToComposerBody, useComposerAttachmentsManager, composerBodyToCommentBody, useComposerAttachmentsDropArea } from './utils.js';
|
|
54
33
|
|
|
55
34
|
|
|
56
35
|
const MENTION_SUGGESTIONS_POSITION = "top";
|
|
@@ -75,13 +54,13 @@ function createComposerEditor({
|
|
|
75
54
|
createAttachments,
|
|
76
55
|
pasteFilesAsAttachments
|
|
77
56
|
}) {
|
|
78
|
-
return
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
57
|
+
return withNormalize(
|
|
58
|
+
withMentions(
|
|
59
|
+
withCustomLinks(
|
|
60
|
+
withAutoLinks(
|
|
61
|
+
withAutoFormatting(
|
|
62
|
+
withEmptyClearFormatting(
|
|
63
|
+
withPaste(withHistory(withReact(createEditor())), {
|
|
85
64
|
createAttachments,
|
|
86
65
|
pasteFilesAsAttachments
|
|
87
66
|
})
|
|
@@ -98,11 +77,11 @@ function ComposerEditorMentionWrapper({
|
|
|
98
77
|
children,
|
|
99
78
|
element
|
|
100
79
|
}) {
|
|
101
|
-
const isSelected =
|
|
102
|
-
return /* @__PURE__ */
|
|
80
|
+
const isSelected = useSelected();
|
|
81
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
103
82
|
...attributes,
|
|
104
83
|
children: [
|
|
105
|
-
element.id ? /* @__PURE__ */
|
|
84
|
+
element.id ? /* @__PURE__ */ jsx(Mention, {
|
|
106
85
|
userId: element.id,
|
|
107
86
|
isSelected
|
|
108
87
|
}) : null,
|
|
@@ -116,13 +95,13 @@ function ComposerEditorLinkWrapper({
|
|
|
116
95
|
element,
|
|
117
96
|
children
|
|
118
97
|
}) {
|
|
119
|
-
const href =
|
|
120
|
-
() =>
|
|
98
|
+
const href = useMemo(
|
|
99
|
+
() => toAbsoluteUrl(element.url) ?? element.url,
|
|
121
100
|
[element.url]
|
|
122
101
|
);
|
|
123
|
-
return /* @__PURE__ */
|
|
102
|
+
return /* @__PURE__ */ jsx("span", {
|
|
124
103
|
...attributes,
|
|
125
|
-
children: /* @__PURE__ */
|
|
104
|
+
children: /* @__PURE__ */ jsx(Link, {
|
|
126
105
|
href,
|
|
127
106
|
children
|
|
128
107
|
})
|
|
@@ -141,11 +120,11 @@ function ComposerEditorMentionSuggestionsWrapper({
|
|
|
141
120
|
dir,
|
|
142
121
|
MentionSuggestions
|
|
143
122
|
}) {
|
|
144
|
-
const editor =
|
|
145
|
-
const { onEditorChange } =
|
|
146
|
-
const { isFocused } =
|
|
147
|
-
const { portalContainer } =
|
|
148
|
-
const [contentRef, contentZIndex] =
|
|
123
|
+
const editor = useSlateStatic();
|
|
124
|
+
const { onEditorChange } = useComposerEditorContext();
|
|
125
|
+
const { isFocused } = useComposer();
|
|
126
|
+
const { portalContainer } = useLiveblocksUIConfig();
|
|
127
|
+
const [contentRef, contentZIndex] = useContentZIndex();
|
|
149
128
|
const isOpen = isFocused && mentionDraft?.range !== void 0 && userIds !== void 0;
|
|
150
129
|
const {
|
|
151
130
|
refs: { setReference, setFloating },
|
|
@@ -154,25 +133,25 @@ function ComposerEditorMentionSuggestionsWrapper({
|
|
|
154
133
|
placement,
|
|
155
134
|
x,
|
|
156
135
|
y
|
|
157
|
-
} =
|
|
136
|
+
} = useFloatingWithOptions({
|
|
158
137
|
position,
|
|
159
138
|
dir,
|
|
160
139
|
alignment: "start",
|
|
161
140
|
open: isOpen
|
|
162
141
|
});
|
|
163
|
-
useObservable
|
|
164
|
-
setMentionDraft(
|
|
142
|
+
useObservable(onEditorChange, () => {
|
|
143
|
+
setMentionDraft(getMentionDraftAtSelection(editor));
|
|
165
144
|
});
|
|
166
|
-
|
|
145
|
+
useLayoutEffect(() => {
|
|
167
146
|
if (!mentionDraft) {
|
|
168
147
|
setReference(null);
|
|
169
148
|
return;
|
|
170
149
|
}
|
|
171
|
-
const domRange =
|
|
150
|
+
const domRange = getDOMRange(editor, mentionDraft.range);
|
|
172
151
|
setReference(domRange ?? null);
|
|
173
152
|
}, [setReference, editor, mentionDraft]);
|
|
174
|
-
return /* @__PURE__ */
|
|
175
|
-
children: isOpen ? /* @__PURE__ */
|
|
153
|
+
return /* @__PURE__ */ jsx(Persist, {
|
|
154
|
+
children: isOpen ? /* @__PURE__ */ jsx(ComposerSuggestionsContext.Provider, {
|
|
176
155
|
value: {
|
|
177
156
|
id,
|
|
178
157
|
itemId,
|
|
@@ -183,7 +162,7 @@ function ComposerEditorMentionSuggestionsWrapper({
|
|
|
183
162
|
dir,
|
|
184
163
|
ref: contentRef
|
|
185
164
|
},
|
|
186
|
-
children: /* @__PURE__ */
|
|
165
|
+
children: /* @__PURE__ */ jsx(Portal, {
|
|
187
166
|
ref: setFloating,
|
|
188
167
|
container: portalContainer,
|
|
189
168
|
style: {
|
|
@@ -194,7 +173,7 @@ function ComposerEditorMentionSuggestionsWrapper({
|
|
|
194
173
|
minWidth: "max-content",
|
|
195
174
|
zIndex: contentZIndex
|
|
196
175
|
},
|
|
197
|
-
children: /* @__PURE__ */
|
|
176
|
+
children: /* @__PURE__ */ jsx(MentionSuggestions, {
|
|
198
177
|
userIds,
|
|
199
178
|
selectedUserId
|
|
200
179
|
})
|
|
@@ -210,12 +189,12 @@ function ComposerEditorFloatingToolbarWrapper({
|
|
|
210
189
|
hasFloatingToolbarRange,
|
|
211
190
|
setHasFloatingToolbarRange
|
|
212
191
|
}) {
|
|
213
|
-
const editor =
|
|
214
|
-
const { onEditorChange } =
|
|
215
|
-
const { isFocused } =
|
|
216
|
-
const { portalContainer } =
|
|
217
|
-
const [contentRef, contentZIndex] =
|
|
218
|
-
const [isPointerDown, setPointerDown] =
|
|
192
|
+
const editor = useSlateStatic();
|
|
193
|
+
const { onEditorChange } = useComposerEditorContext();
|
|
194
|
+
const { isFocused } = useComposer();
|
|
195
|
+
const { portalContainer } = useLiveblocksUIConfig();
|
|
196
|
+
const [contentRef, contentZIndex] = useContentZIndex();
|
|
197
|
+
const [isPointerDown, setPointerDown] = useState(false);
|
|
219
198
|
const isOpen = isFocused && !isPointerDown && hasFloatingToolbarRange;
|
|
220
199
|
const {
|
|
221
200
|
refs: { setReference, setFloating },
|
|
@@ -224,14 +203,14 @@ function ComposerEditorFloatingToolbarWrapper({
|
|
|
224
203
|
placement,
|
|
225
204
|
x,
|
|
226
205
|
y
|
|
227
|
-
} =
|
|
206
|
+
} = useFloatingWithOptions({
|
|
228
207
|
type: "range",
|
|
229
208
|
position,
|
|
230
209
|
dir,
|
|
231
210
|
alignment: "center",
|
|
232
211
|
open: isOpen
|
|
233
212
|
});
|
|
234
|
-
|
|
213
|
+
useLayoutEffect(() => {
|
|
235
214
|
if (!isFocused) {
|
|
236
215
|
return;
|
|
237
216
|
}
|
|
@@ -244,11 +223,11 @@ function ComposerEditorFloatingToolbarWrapper({
|
|
|
244
223
|
document.removeEventListener("pointerup", handlePointerUp);
|
|
245
224
|
};
|
|
246
225
|
}, [isFocused]);
|
|
247
|
-
useObservable
|
|
226
|
+
useObservable(onEditorChange, () => {
|
|
248
227
|
setReference(null);
|
|
249
228
|
requestAnimationFrame(() => {
|
|
250
229
|
const domSelection = window.getSelection();
|
|
251
|
-
if (!editor.selection ||
|
|
230
|
+
if (!editor.selection || Range.isCollapsed(editor.selection) || !domSelection || !domSelection.rangeCount) {
|
|
252
231
|
setHasFloatingToolbarRange(false);
|
|
253
232
|
setReference(null);
|
|
254
233
|
} else {
|
|
@@ -258,15 +237,15 @@ function ComposerEditorFloatingToolbarWrapper({
|
|
|
258
237
|
}
|
|
259
238
|
});
|
|
260
239
|
});
|
|
261
|
-
return /* @__PURE__ */
|
|
262
|
-
children: isOpen ? /* @__PURE__ */
|
|
240
|
+
return /* @__PURE__ */ jsx(Persist, {
|
|
241
|
+
children: isOpen ? /* @__PURE__ */ jsx(ComposerFloatingToolbarContext.Provider, {
|
|
263
242
|
value: {
|
|
264
243
|
id,
|
|
265
244
|
placement,
|
|
266
245
|
dir,
|
|
267
246
|
ref: contentRef
|
|
268
247
|
},
|
|
269
|
-
children: /* @__PURE__ */
|
|
248
|
+
children: /* @__PURE__ */ jsx(Portal, {
|
|
270
249
|
ref: setFloating,
|
|
271
250
|
container: portalContainer,
|
|
272
251
|
style: {
|
|
@@ -277,28 +256,28 @@ function ComposerEditorFloatingToolbarWrapper({
|
|
|
277
256
|
minWidth: "max-content",
|
|
278
257
|
zIndex: contentZIndex
|
|
279
258
|
},
|
|
280
|
-
children: /* @__PURE__ */
|
|
259
|
+
children: /* @__PURE__ */ jsx(FloatingToolbar, {})
|
|
281
260
|
})
|
|
282
261
|
}) : null
|
|
283
262
|
});
|
|
284
263
|
}
|
|
285
|
-
const ComposerFloatingToolbar =
|
|
286
|
-
const [isPresent] =
|
|
287
|
-
const ref =
|
|
264
|
+
const ComposerFloatingToolbar = forwardRef(({ children, onPointerDown, style, asChild, ...props }, forwardedRef) => {
|
|
265
|
+
const [isPresent] = usePersist();
|
|
266
|
+
const ref = useRef(null);
|
|
288
267
|
const {
|
|
289
268
|
id,
|
|
290
269
|
ref: contentRef,
|
|
291
270
|
placement,
|
|
292
271
|
dir
|
|
293
|
-
} =
|
|
294
|
-
const mergedRefs = useRefs
|
|
295
|
-
const [side, align] =
|
|
296
|
-
() =>
|
|
272
|
+
} = useComposerFloatingToolbarContext(COMPOSER_FLOATING_TOOLBAR_NAME);
|
|
273
|
+
const mergedRefs = useRefs(forwardedRef, contentRef, ref);
|
|
274
|
+
const [side, align] = useMemo(
|
|
275
|
+
() => getSideAndAlignFromFloatingPlacement(placement),
|
|
297
276
|
[placement]
|
|
298
277
|
);
|
|
299
|
-
const Component = asChild ?
|
|
300
|
-
|
|
301
|
-
const handlePointerDown =
|
|
278
|
+
const Component = asChild ? Slot : "div";
|
|
279
|
+
useAnimationPersist(ref);
|
|
280
|
+
const handlePointerDown = useCallback(
|
|
302
281
|
(event) => {
|
|
303
282
|
onPointerDown?.(event);
|
|
304
283
|
event.preventDefault();
|
|
@@ -306,7 +285,7 @@ const ComposerFloatingToolbar = react.forwardRef(({ children, onPointerDown, sty
|
|
|
306
285
|
},
|
|
307
286
|
[onPointerDown]
|
|
308
287
|
);
|
|
309
|
-
return /* @__PURE__ */
|
|
288
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
310
289
|
dir,
|
|
311
290
|
role: "toolbar",
|
|
312
291
|
id,
|
|
@@ -335,18 +314,18 @@ function ComposerEditorElement({
|
|
|
335
314
|
const { attributes, children, element } = props;
|
|
336
315
|
switch (element.type) {
|
|
337
316
|
case "mention":
|
|
338
|
-
return /* @__PURE__ */
|
|
317
|
+
return /* @__PURE__ */ jsx(ComposerEditorMentionWrapper, {
|
|
339
318
|
Mention,
|
|
340
319
|
...props
|
|
341
320
|
});
|
|
342
321
|
case "auto-link":
|
|
343
322
|
case "custom-link":
|
|
344
|
-
return /* @__PURE__ */
|
|
323
|
+
return /* @__PURE__ */ jsx(ComposerEditorLinkWrapper, {
|
|
345
324
|
Link,
|
|
346
325
|
...props
|
|
347
326
|
});
|
|
348
327
|
case "paragraph":
|
|
349
|
-
return /* @__PURE__ */
|
|
328
|
+
return /* @__PURE__ */ jsx("p", {
|
|
350
329
|
...attributes,
|
|
351
330
|
style: { position: "relative" },
|
|
352
331
|
children
|
|
@@ -357,26 +336,26 @@ function ComposerEditorElement({
|
|
|
357
336
|
}
|
|
358
337
|
function ComposerEditorLeaf({ attributes, children, leaf }) {
|
|
359
338
|
if (leaf.bold) {
|
|
360
|
-
children = /* @__PURE__ */
|
|
339
|
+
children = /* @__PURE__ */ jsx("strong", {
|
|
361
340
|
children
|
|
362
341
|
});
|
|
363
342
|
}
|
|
364
343
|
if (leaf.italic) {
|
|
365
|
-
children = /* @__PURE__ */
|
|
344
|
+
children = /* @__PURE__ */ jsx("em", {
|
|
366
345
|
children
|
|
367
346
|
});
|
|
368
347
|
}
|
|
369
348
|
if (leaf.strikethrough) {
|
|
370
|
-
children = /* @__PURE__ */
|
|
349
|
+
children = /* @__PURE__ */ jsx("s", {
|
|
371
350
|
children
|
|
372
351
|
});
|
|
373
352
|
}
|
|
374
353
|
if (leaf.code) {
|
|
375
|
-
children = /* @__PURE__ */
|
|
354
|
+
children = /* @__PURE__ */ jsx("code", {
|
|
376
355
|
children
|
|
377
356
|
});
|
|
378
357
|
}
|
|
379
|
-
return /* @__PURE__ */
|
|
358
|
+
return /* @__PURE__ */ jsx("span", {
|
|
380
359
|
...attributes,
|
|
381
360
|
children
|
|
382
361
|
});
|
|
@@ -386,18 +365,18 @@ function ComposerEditorPlaceholder({
|
|
|
386
365
|
children
|
|
387
366
|
}) {
|
|
388
367
|
const { opacity: _opacity, ...style } = attributes.style;
|
|
389
|
-
return /* @__PURE__ */
|
|
368
|
+
return /* @__PURE__ */ jsx("span", {
|
|
390
369
|
...attributes,
|
|
391
370
|
style,
|
|
392
371
|
"data-placeholder": "",
|
|
393
372
|
children
|
|
394
373
|
});
|
|
395
374
|
}
|
|
396
|
-
const ComposerMention =
|
|
375
|
+
const ComposerMention = forwardRef(
|
|
397
376
|
({ children, asChild, ...props }, forwardedRef) => {
|
|
398
|
-
const Component = asChild ?
|
|
399
|
-
const isSelected =
|
|
400
|
-
return /* @__PURE__ */
|
|
377
|
+
const Component = asChild ? Slot : "span";
|
|
378
|
+
const isSelected = useSelected();
|
|
379
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
401
380
|
"data-selected": isSelected || void 0,
|
|
402
381
|
...props,
|
|
403
382
|
ref: forwardedRef,
|
|
@@ -405,10 +384,10 @@ const ComposerMention = react.forwardRef(
|
|
|
405
384
|
});
|
|
406
385
|
}
|
|
407
386
|
);
|
|
408
|
-
const ComposerLink =
|
|
387
|
+
const ComposerLink = forwardRef(
|
|
409
388
|
({ children, asChild, ...props }, forwardedRef) => {
|
|
410
|
-
const Component = asChild ?
|
|
411
|
-
return /* @__PURE__ */
|
|
389
|
+
const Component = asChild ? Slot : "a";
|
|
390
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
412
391
|
target: "_blank",
|
|
413
392
|
rel: "noopener noreferrer nofollow",
|
|
414
393
|
...props,
|
|
@@ -417,22 +396,22 @@ const ComposerLink = react.forwardRef(
|
|
|
417
396
|
});
|
|
418
397
|
}
|
|
419
398
|
);
|
|
420
|
-
const ComposerSuggestions =
|
|
421
|
-
const [isPresent] =
|
|
422
|
-
const ref =
|
|
399
|
+
const ComposerSuggestions = forwardRef(({ children, style, asChild, ...props }, forwardedRef) => {
|
|
400
|
+
const [isPresent] = usePersist();
|
|
401
|
+
const ref = useRef(null);
|
|
423
402
|
const {
|
|
424
403
|
ref: contentRef,
|
|
425
404
|
placement,
|
|
426
405
|
dir
|
|
427
|
-
} =
|
|
428
|
-
const mergedRefs = useRefs
|
|
429
|
-
const [side, align] =
|
|
430
|
-
() =>
|
|
406
|
+
} = useComposerSuggestionsContext(COMPOSER_SUGGESTIONS_NAME);
|
|
407
|
+
const mergedRefs = useRefs(forwardedRef, contentRef, ref);
|
|
408
|
+
const [side, align] = useMemo(
|
|
409
|
+
() => getSideAndAlignFromFloatingPlacement(placement),
|
|
431
410
|
[placement]
|
|
432
411
|
);
|
|
433
|
-
const Component = asChild ?
|
|
434
|
-
|
|
435
|
-
return /* @__PURE__ */
|
|
412
|
+
const Component = asChild ? Slot : "div";
|
|
413
|
+
useAnimationPersist(ref);
|
|
414
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
436
415
|
dir,
|
|
437
416
|
...props,
|
|
438
417
|
"data-state": isPresent ? "open" : "closed",
|
|
@@ -449,10 +428,10 @@ const ComposerSuggestions = react.forwardRef(({ children, style, asChild, ...pro
|
|
|
449
428
|
children
|
|
450
429
|
});
|
|
451
430
|
});
|
|
452
|
-
const ComposerSuggestionsList =
|
|
453
|
-
const { id } =
|
|
454
|
-
const Component = asChild ?
|
|
455
|
-
return /* @__PURE__ */
|
|
431
|
+
const ComposerSuggestionsList = forwardRef(({ children, asChild, ...props }, forwardedRef) => {
|
|
432
|
+
const { id } = useComposerSuggestionsContext(COMPOSER_SUGGESTIONS_LIST_NAME);
|
|
433
|
+
const Component = asChild ? Slot : "ul";
|
|
434
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
456
435
|
role: "listbox",
|
|
457
436
|
id,
|
|
458
437
|
"aria-label": "Suggestions list",
|
|
@@ -461,7 +440,7 @@ const ComposerSuggestionsList = react.forwardRef(({ children, asChild, ...props
|
|
|
461
440
|
children
|
|
462
441
|
});
|
|
463
442
|
});
|
|
464
|
-
const ComposerSuggestionsListItem =
|
|
443
|
+
const ComposerSuggestionsListItem = forwardRef(
|
|
465
444
|
({
|
|
466
445
|
value,
|
|
467
446
|
children,
|
|
@@ -471,21 +450,21 @@ const ComposerSuggestionsListItem = react.forwardRef(
|
|
|
471
450
|
asChild,
|
|
472
451
|
...props
|
|
473
452
|
}, forwardedRef) => {
|
|
474
|
-
const ref =
|
|
475
|
-
const mergedRefs = useRefs
|
|
476
|
-
const { selectedValue, setSelectedValue, itemId, onItemSelect } =
|
|
477
|
-
const Component = asChild ?
|
|
478
|
-
const isSelected =
|
|
453
|
+
const ref = useRef(null);
|
|
454
|
+
const mergedRefs = useRefs(forwardedRef, ref);
|
|
455
|
+
const { selectedValue, setSelectedValue, itemId, onItemSelect } = useComposerSuggestionsContext(COMPOSER_SUGGESTIONS_LIST_ITEM_NAME);
|
|
456
|
+
const Component = asChild ? Slot : "li";
|
|
457
|
+
const isSelected = useMemo(
|
|
479
458
|
() => selectedValue === value,
|
|
480
459
|
[selectedValue, value]
|
|
481
460
|
);
|
|
482
|
-
const id =
|
|
483
|
-
|
|
461
|
+
const id = useMemo(() => itemId(value), [itemId, value]);
|
|
462
|
+
useEffect(() => {
|
|
484
463
|
if (ref?.current && isSelected) {
|
|
485
464
|
ref.current.scrollIntoView({ block: "nearest" });
|
|
486
465
|
}
|
|
487
466
|
}, [isSelected]);
|
|
488
|
-
const handlePointerMove =
|
|
467
|
+
const handlePointerMove = useCallback(
|
|
489
468
|
(event) => {
|
|
490
469
|
onPointerMove?.(event);
|
|
491
470
|
if (!event.isDefaultPrevented()) {
|
|
@@ -494,7 +473,7 @@ const ComposerSuggestionsListItem = react.forwardRef(
|
|
|
494
473
|
},
|
|
495
474
|
[onPointerMove, setSelectedValue, value]
|
|
496
475
|
);
|
|
497
|
-
const handlePointerDown =
|
|
476
|
+
const handlePointerDown = useCallback(
|
|
498
477
|
(event) => {
|
|
499
478
|
onPointerDown?.(event);
|
|
500
479
|
event.preventDefault();
|
|
@@ -502,7 +481,7 @@ const ComposerSuggestionsListItem = react.forwardRef(
|
|
|
502
481
|
},
|
|
503
482
|
[onPointerDown]
|
|
504
483
|
);
|
|
505
|
-
const handleClick =
|
|
484
|
+
const handleClick = useCallback(
|
|
506
485
|
(event) => {
|
|
507
486
|
onClick?.(event);
|
|
508
487
|
const wasDefaultPrevented = event.isDefaultPrevented();
|
|
@@ -514,7 +493,7 @@ const ComposerSuggestionsListItem = react.forwardRef(
|
|
|
514
493
|
},
|
|
515
494
|
[onClick, onItemSelect, value]
|
|
516
495
|
);
|
|
517
|
-
return /* @__PURE__ */
|
|
496
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
518
497
|
role: "option",
|
|
519
498
|
id,
|
|
520
499
|
"data-selected": isSelected || void 0,
|
|
@@ -530,23 +509,23 @@ const ComposerSuggestionsListItem = react.forwardRef(
|
|
|
530
509
|
);
|
|
531
510
|
const defaultEditorComponents = {
|
|
532
511
|
Link: ({ href, children }) => {
|
|
533
|
-
return /* @__PURE__ */
|
|
512
|
+
return /* @__PURE__ */ jsx(ComposerLink, {
|
|
534
513
|
href,
|
|
535
514
|
children
|
|
536
515
|
});
|
|
537
516
|
},
|
|
538
517
|
Mention: ({ userId }) => {
|
|
539
|
-
return /* @__PURE__ */
|
|
518
|
+
return /* @__PURE__ */ jsxs(ComposerMention, {
|
|
540
519
|
children: [
|
|
541
|
-
|
|
520
|
+
MENTION_CHARACTER,
|
|
542
521
|
userId
|
|
543
522
|
]
|
|
544
523
|
});
|
|
545
524
|
},
|
|
546
525
|
MentionSuggestions: ({ userIds }) => {
|
|
547
|
-
return userIds.length > 0 ? /* @__PURE__ */
|
|
548
|
-
children: /* @__PURE__ */
|
|
549
|
-
children: userIds.map((userId) => /* @__PURE__ */
|
|
526
|
+
return userIds.length > 0 ? /* @__PURE__ */ jsx(ComposerSuggestions, {
|
|
527
|
+
children: /* @__PURE__ */ jsx(ComposerSuggestionsList, {
|
|
528
|
+
children: userIds.map((userId) => /* @__PURE__ */ jsx(ComposerSuggestionsListItem, {
|
|
550
529
|
value: userId,
|
|
551
530
|
children: userId
|
|
552
531
|
}, userId))
|
|
@@ -554,7 +533,7 @@ const defaultEditorComponents = {
|
|
|
554
533
|
}) : null;
|
|
555
534
|
}
|
|
556
535
|
};
|
|
557
|
-
const ComposerEditor =
|
|
536
|
+
const ComposerEditor = forwardRef(
|
|
558
537
|
({
|
|
559
538
|
defaultValue,
|
|
560
539
|
onKeyDown,
|
|
@@ -566,8 +545,8 @@ const ComposerEditor = react.forwardRef(
|
|
|
566
545
|
dir,
|
|
567
546
|
...props
|
|
568
547
|
}, forwardedRef) => {
|
|
569
|
-
const client =
|
|
570
|
-
const { editor, validate, setFocused, onEditorChange, roomId } =
|
|
548
|
+
const client = useClientOrNull();
|
|
549
|
+
const { editor, validate, setFocused, onEditorChange, roomId } = useComposerEditorContext();
|
|
571
550
|
const {
|
|
572
551
|
submit,
|
|
573
552
|
focus,
|
|
@@ -576,21 +555,21 @@ const ComposerEditor = react.forwardRef(
|
|
|
576
555
|
canSubmit,
|
|
577
556
|
isDisabled: isComposerDisabled,
|
|
578
557
|
isFocused
|
|
579
|
-
} =
|
|
558
|
+
} = useComposer();
|
|
580
559
|
const isDisabled = isComposerDisabled || disabled;
|
|
581
|
-
const initialBody = useInitial
|
|
582
|
-
const initialEditorValue =
|
|
583
|
-
return
|
|
560
|
+
const initialBody = useInitial(defaultValue ?? emptyCommentBody);
|
|
561
|
+
const initialEditorValue = useMemo(() => {
|
|
562
|
+
return commentBodyToComposerBody(initialBody);
|
|
584
563
|
}, [initialBody]);
|
|
585
|
-
const { Link, Mention, MentionSuggestions, FloatingToolbar } =
|
|
564
|
+
const { Link, Mention, MentionSuggestions, FloatingToolbar } = useMemo(
|
|
586
565
|
() => ({ ...defaultEditorComponents, ...components }),
|
|
587
566
|
[components]
|
|
588
567
|
);
|
|
589
|
-
const [hasFloatingToolbarRange, setHasFloatingToolbarRange] =
|
|
590
|
-
const resolveMentionSuggestions =
|
|
568
|
+
const [hasFloatingToolbarRange, setHasFloatingToolbarRange] = useState(false);
|
|
569
|
+
const resolveMentionSuggestions = useResolveMentionSuggestions();
|
|
591
570
|
const hasResolveMentionSuggestions = client ? resolveMentionSuggestions : true;
|
|
592
|
-
const [mentionDraft, setMentionDraft] =
|
|
593
|
-
const mentionSuggestions =
|
|
571
|
+
const [mentionDraft, setMentionDraft] = useState();
|
|
572
|
+
const mentionSuggestions = useMentionSuggestions(
|
|
594
573
|
roomId,
|
|
595
574
|
mentionDraft?.text
|
|
596
575
|
);
|
|
@@ -599,17 +578,17 @@ const ComposerEditor = react.forwardRef(
|
|
|
599
578
|
setPreviousSelectedMentionSuggestionIndex,
|
|
600
579
|
setNextSelectedMentionSuggestionIndex,
|
|
601
580
|
setSelectedMentionSuggestionIndex
|
|
602
|
-
] = useIndex
|
|
603
|
-
const id =
|
|
581
|
+
] = useIndex(0, mentionSuggestions?.length ?? 0);
|
|
582
|
+
const id = useId();
|
|
604
583
|
const floatingToolbarId = `liveblocks-floating-toolbar-${id}`;
|
|
605
584
|
const suggestionsListId = `liveblocks-suggestions-list-${id}`;
|
|
606
|
-
const suggestionsListItemId =
|
|
585
|
+
const suggestionsListItemId = useCallback(
|
|
607
586
|
(userId) => userId ? `liveblocks-suggestions-list-item-${id}-${userId}` : void 0,
|
|
608
587
|
[id]
|
|
609
588
|
);
|
|
610
|
-
const renderElement =
|
|
589
|
+
const renderElement = useCallback(
|
|
611
590
|
(props2) => {
|
|
612
|
-
return /* @__PURE__ */
|
|
591
|
+
return /* @__PURE__ */ jsx(ComposerEditorElement, {
|
|
613
592
|
Mention,
|
|
614
593
|
Link,
|
|
615
594
|
...props2
|
|
@@ -617,91 +596,91 @@ const ComposerEditor = react.forwardRef(
|
|
|
617
596
|
},
|
|
618
597
|
[Link, Mention]
|
|
619
598
|
);
|
|
620
|
-
const handleChange =
|
|
599
|
+
const handleChange = useCallback(
|
|
621
600
|
(value) => {
|
|
622
601
|
validate(value);
|
|
623
602
|
onEditorChange.notify();
|
|
624
603
|
},
|
|
625
604
|
[validate, onEditorChange]
|
|
626
605
|
);
|
|
627
|
-
const createMention =
|
|
606
|
+
const createMention = useCallback(
|
|
628
607
|
(userId) => {
|
|
629
608
|
if (!mentionDraft || !userId) {
|
|
630
609
|
return;
|
|
631
610
|
}
|
|
632
|
-
|
|
633
|
-
|
|
611
|
+
Transforms.select(editor, mentionDraft.range);
|
|
612
|
+
insertMention(editor, userId);
|
|
634
613
|
setMentionDraft(void 0);
|
|
635
614
|
setSelectedMentionSuggestionIndex(0);
|
|
636
615
|
},
|
|
637
616
|
[editor, mentionDraft, setSelectedMentionSuggestionIndex]
|
|
638
617
|
);
|
|
639
|
-
const handleKeyDown =
|
|
618
|
+
const handleKeyDown = useCallback(
|
|
640
619
|
(event) => {
|
|
641
620
|
onKeyDown?.(event);
|
|
642
621
|
if (event.isDefaultPrevented()) {
|
|
643
622
|
return;
|
|
644
623
|
}
|
|
645
|
-
if (isKey
|
|
646
|
-
|
|
624
|
+
if (isKey(event, "ArrowLeft")) {
|
|
625
|
+
leaveMarkEdge(editor, "start");
|
|
647
626
|
}
|
|
648
|
-
if (isKey
|
|
649
|
-
|
|
627
|
+
if (isKey(event, "ArrowRight")) {
|
|
628
|
+
leaveMarkEdge(editor, "end");
|
|
650
629
|
}
|
|
651
630
|
if (mentionDraft && mentionSuggestions?.length) {
|
|
652
|
-
if (isKey
|
|
631
|
+
if (isKey(event, "ArrowDown")) {
|
|
653
632
|
event.preventDefault();
|
|
654
633
|
setNextSelectedMentionSuggestionIndex();
|
|
655
634
|
}
|
|
656
|
-
if (isKey
|
|
635
|
+
if (isKey(event, "ArrowUp")) {
|
|
657
636
|
event.preventDefault();
|
|
658
637
|
setPreviousSelectedMentionSuggestionIndex();
|
|
659
638
|
}
|
|
660
|
-
if (isKey
|
|
639
|
+
if (isKey(event, "Enter") || isKey(event, "Tab")) {
|
|
661
640
|
event.preventDefault();
|
|
662
641
|
const userId = mentionSuggestions?.[selectedMentionSuggestionIndex];
|
|
663
642
|
createMention(userId);
|
|
664
643
|
}
|
|
665
|
-
if (isKey
|
|
644
|
+
if (isKey(event, "Escape")) {
|
|
666
645
|
event.preventDefault();
|
|
667
646
|
setMentionDraft(void 0);
|
|
668
647
|
setSelectedMentionSuggestionIndex(0);
|
|
669
648
|
}
|
|
670
649
|
} else {
|
|
671
650
|
if (hasFloatingToolbarRange) {
|
|
672
|
-
if (isKey
|
|
651
|
+
if (isKey(event, "Escape")) {
|
|
673
652
|
event.preventDefault();
|
|
674
653
|
setHasFloatingToolbarRange(false);
|
|
675
654
|
}
|
|
676
655
|
}
|
|
677
|
-
if (isKey
|
|
656
|
+
if (isKey(event, "Escape")) {
|
|
678
657
|
blur();
|
|
679
658
|
}
|
|
680
|
-
if (isKey
|
|
659
|
+
if (isKey(event, "Enter", { shift: false })) {
|
|
681
660
|
event.preventDefault();
|
|
682
661
|
if (canSubmit) {
|
|
683
662
|
submit();
|
|
684
663
|
}
|
|
685
664
|
}
|
|
686
|
-
if (isKey
|
|
665
|
+
if (isKey(event, "Enter", { shift: true })) {
|
|
687
666
|
event.preventDefault();
|
|
688
667
|
editor.insertBreak();
|
|
689
668
|
}
|
|
690
|
-
if (isKey
|
|
669
|
+
if (isKey(event, "b", { mod: true })) {
|
|
691
670
|
event.preventDefault();
|
|
692
|
-
|
|
671
|
+
toggleMark(editor, "bold");
|
|
693
672
|
}
|
|
694
|
-
if (isKey
|
|
673
|
+
if (isKey(event, "i", { mod: true })) {
|
|
695
674
|
event.preventDefault();
|
|
696
|
-
|
|
675
|
+
toggleMark(editor, "italic");
|
|
697
676
|
}
|
|
698
|
-
if (isKey
|
|
677
|
+
if (isKey(event, "s", { mod: true, shift: true })) {
|
|
699
678
|
event.preventDefault();
|
|
700
|
-
|
|
679
|
+
toggleMark(editor, "strikethrough");
|
|
701
680
|
}
|
|
702
|
-
if (isKey
|
|
681
|
+
if (isKey(event, "e", { mod: true })) {
|
|
703
682
|
event.preventDefault();
|
|
704
|
-
|
|
683
|
+
toggleMark(editor, "code");
|
|
705
684
|
}
|
|
706
685
|
}
|
|
707
686
|
},
|
|
@@ -721,7 +700,7 @@ const ComposerEditor = react.forwardRef(
|
|
|
721
700
|
submit
|
|
722
701
|
]
|
|
723
702
|
);
|
|
724
|
-
const handleFocus =
|
|
703
|
+
const handleFocus = useCallback(
|
|
725
704
|
(event) => {
|
|
726
705
|
onFocus?.(event);
|
|
727
706
|
if (!event.isDefaultPrevented()) {
|
|
@@ -730,7 +709,7 @@ const ComposerEditor = react.forwardRef(
|
|
|
730
709
|
},
|
|
731
710
|
[onFocus, setFocused]
|
|
732
711
|
);
|
|
733
|
-
const handleBlur =
|
|
712
|
+
const handleBlur = useCallback(
|
|
734
713
|
(event) => {
|
|
735
714
|
onBlur?.(event);
|
|
736
715
|
if (!event.isDefaultPrevented()) {
|
|
@@ -739,11 +718,11 @@ const ComposerEditor = react.forwardRef(
|
|
|
739
718
|
},
|
|
740
719
|
[onBlur, setFocused]
|
|
741
720
|
);
|
|
742
|
-
const selectedMentionSuggestionUserId =
|
|
721
|
+
const selectedMentionSuggestionUserId = useMemo(
|
|
743
722
|
() => mentionSuggestions?.[selectedMentionSuggestionIndex],
|
|
744
723
|
[selectedMentionSuggestionIndex, mentionSuggestions]
|
|
745
724
|
);
|
|
746
|
-
const setSelectedMentionSuggestionUserId =
|
|
725
|
+
const setSelectedMentionSuggestionUserId = useCallback(
|
|
747
726
|
(userId) => {
|
|
748
727
|
const index = mentionSuggestions?.indexOf(userId);
|
|
749
728
|
if (index !== void 0 && index >= 0) {
|
|
@@ -752,7 +731,7 @@ const ComposerEditor = react.forwardRef(
|
|
|
752
731
|
},
|
|
753
732
|
[setSelectedMentionSuggestionIndex, mentionSuggestions]
|
|
754
733
|
);
|
|
755
|
-
const additionalProps =
|
|
734
|
+
const additionalProps = useMemo(
|
|
756
735
|
() => mentionDraft ? {
|
|
757
736
|
role: "combobox",
|
|
758
737
|
"aria-autocomplete": "list",
|
|
@@ -774,25 +753,25 @@ const ComposerEditor = react.forwardRef(
|
|
|
774
753
|
floatingToolbarId
|
|
775
754
|
]
|
|
776
755
|
);
|
|
777
|
-
|
|
778
|
-
return
|
|
756
|
+
useImperativeHandle(forwardedRef, () => {
|
|
757
|
+
return ReactEditor.toDOMNode(editor, editor);
|
|
779
758
|
}, [editor]);
|
|
780
|
-
|
|
759
|
+
useLayoutEffect(() => {
|
|
781
760
|
if (autoFocus) {
|
|
782
761
|
focus();
|
|
783
762
|
}
|
|
784
763
|
}, [autoFocus, editor, focus]);
|
|
785
|
-
|
|
764
|
+
useLayoutEffect(() => {
|
|
786
765
|
if (isFocused && editor.selection === null) {
|
|
787
766
|
select();
|
|
788
767
|
}
|
|
789
768
|
}, [editor, select, isFocused]);
|
|
790
|
-
return /* @__PURE__ */
|
|
769
|
+
return /* @__PURE__ */ jsxs(Slate, {
|
|
791
770
|
editor,
|
|
792
771
|
initialValue: initialEditorValue,
|
|
793
772
|
onChange: handleChange,
|
|
794
773
|
children: [
|
|
795
|
-
/* @__PURE__ */
|
|
774
|
+
/* @__PURE__ */ jsx(Editable, {
|
|
796
775
|
dir,
|
|
797
776
|
enterKeyHint: mentionDraft ? "enter" : "send",
|
|
798
777
|
autoCapitalize: "sentences",
|
|
@@ -810,7 +789,7 @@ const ComposerEditor = react.forwardRef(
|
|
|
810
789
|
renderLeaf: ComposerEditorLeaf,
|
|
811
790
|
renderPlaceholder: ComposerEditorPlaceholder
|
|
812
791
|
}),
|
|
813
|
-
hasResolveMentionSuggestions && /* @__PURE__ */
|
|
792
|
+
hasResolveMentionSuggestions && /* @__PURE__ */ jsx(ComposerEditorMentionSuggestionsWrapper, {
|
|
814
793
|
dir,
|
|
815
794
|
mentionDraft,
|
|
816
795
|
setMentionDraft,
|
|
@@ -822,7 +801,7 @@ const ComposerEditor = react.forwardRef(
|
|
|
822
801
|
onItemSelect: createMention,
|
|
823
802
|
MentionSuggestions
|
|
824
803
|
}),
|
|
825
|
-
FloatingToolbar && /* @__PURE__ */
|
|
804
|
+
FloatingToolbar && /* @__PURE__ */ jsx(ComposerEditorFloatingToolbarWrapper, {
|
|
826
805
|
dir,
|
|
827
806
|
id: floatingToolbarId,
|
|
828
807
|
hasFloatingToolbarRange,
|
|
@@ -839,14 +818,14 @@ function prepareAttachment(file) {
|
|
|
839
818
|
return {
|
|
840
819
|
type: "localAttachment",
|
|
841
820
|
status: "idle",
|
|
842
|
-
id:
|
|
821
|
+
id: createCommentAttachmentId(),
|
|
843
822
|
name: file.name,
|
|
844
823
|
size: file.size,
|
|
845
824
|
mimeType: file.type,
|
|
846
825
|
file
|
|
847
826
|
};
|
|
848
827
|
}
|
|
849
|
-
const ComposerForm =
|
|
828
|
+
const ComposerForm = forwardRef(
|
|
850
829
|
({
|
|
851
830
|
children,
|
|
852
831
|
onSubmit,
|
|
@@ -859,11 +838,11 @@ const ComposerForm = react.forwardRef(
|
|
|
859
838
|
roomId: _roomId,
|
|
860
839
|
...props
|
|
861
840
|
}, forwardedRef) => {
|
|
862
|
-
const Component = asChild ?
|
|
863
|
-
const [isEmpty$1, setEmpty] =
|
|
864
|
-
const [isSubmitting, setSubmitting] =
|
|
865
|
-
const [isFocused, setFocused] =
|
|
866
|
-
const room =
|
|
841
|
+
const Component = asChild ? Slot : "form";
|
|
842
|
+
const [isEmpty$1, setEmpty] = useState(true);
|
|
843
|
+
const [isSubmitting, setSubmitting] = useState(false);
|
|
844
|
+
const [isFocused, setFocused] = useState(false);
|
|
845
|
+
const room = useRoomOrNull();
|
|
867
846
|
const roomId = _roomId !== void 0 ? _roomId : room?.id;
|
|
868
847
|
if (roomId === void 0) {
|
|
869
848
|
throw new Error("Composer.Form must be a descendant of RoomProvider.");
|
|
@@ -876,30 +855,30 @@ const ComposerForm = react.forwardRef(
|
|
|
876
855
|
addAttachments,
|
|
877
856
|
removeAttachment,
|
|
878
857
|
clearAttachments
|
|
879
|
-
} =
|
|
858
|
+
} = useComposerAttachmentsManager(defaultAttachments, {
|
|
880
859
|
maxFileSize: maxAttachmentSize,
|
|
881
860
|
roomId
|
|
882
861
|
});
|
|
883
862
|
const numberOfAttachments = attachments.length;
|
|
884
863
|
const hasMaxAttachments = numberOfAttachments >= maxAttachments;
|
|
885
|
-
const isDisabled =
|
|
864
|
+
const isDisabled = useMemo(() => {
|
|
886
865
|
return isSubmitting || disabled === true;
|
|
887
866
|
}, [isSubmitting, disabled]);
|
|
888
|
-
const canSubmit =
|
|
867
|
+
const canSubmit = useMemo(() => {
|
|
889
868
|
return !isEmpty$1 && !isUploadingAttachments;
|
|
890
869
|
}, [isEmpty$1, isUploadingAttachments]);
|
|
891
|
-
const [marks
|
|
892
|
-
const ref =
|
|
893
|
-
const mergedRefs = useRefs
|
|
894
|
-
const fileInputRef =
|
|
895
|
-
const syncSource =
|
|
870
|
+
const [marks, setMarks] = useState(getMarks);
|
|
871
|
+
const ref = useRef(null);
|
|
872
|
+
const mergedRefs = useRefs(forwardedRef, ref);
|
|
873
|
+
const fileInputRef = useRef(null);
|
|
874
|
+
const syncSource = useSyncSource();
|
|
896
875
|
const isPending = !preventUnsavedChanges ? false : !isEmpty$1 || isUploadingAttachments || attachments.length > 0;
|
|
897
|
-
|
|
876
|
+
useEffect(() => {
|
|
898
877
|
syncSource?.setSyncStatus(
|
|
899
878
|
isPending ? "has-local-changes" : "synchronized"
|
|
900
879
|
);
|
|
901
880
|
}, [syncSource, isPending]);
|
|
902
|
-
const createAttachments =
|
|
881
|
+
const createAttachments = useCallback(
|
|
903
882
|
(files) => {
|
|
904
883
|
if (!files.length) {
|
|
905
884
|
return;
|
|
@@ -914,86 +893,86 @@ const ComposerForm = react.forwardRef(
|
|
|
914
893
|
},
|
|
915
894
|
[addAttachments, maxAttachments, numberOfAttachments]
|
|
916
895
|
);
|
|
917
|
-
const createAttachmentsRef =
|
|
918
|
-
|
|
896
|
+
const createAttachmentsRef = useRef(createAttachments);
|
|
897
|
+
useEffect(() => {
|
|
919
898
|
createAttachmentsRef.current = createAttachments;
|
|
920
899
|
}, [createAttachments]);
|
|
921
|
-
const stableCreateAttachments =
|
|
900
|
+
const stableCreateAttachments = useCallback((files) => {
|
|
922
901
|
createAttachmentsRef.current(files);
|
|
923
902
|
}, []);
|
|
924
|
-
const editor = useInitial
|
|
903
|
+
const editor = useInitial(
|
|
925
904
|
() => createComposerEditor({
|
|
926
905
|
createAttachments: stableCreateAttachments,
|
|
927
906
|
pasteFilesAsAttachments
|
|
928
907
|
})
|
|
929
908
|
);
|
|
930
|
-
const onEditorChange = useInitial
|
|
931
|
-
const validate =
|
|
909
|
+
const onEditorChange = useInitial(makeEventSource);
|
|
910
|
+
const validate = useCallback(
|
|
932
911
|
(value) => {
|
|
933
|
-
setEmpty(isEmpty
|
|
912
|
+
setEmpty(isEmpty(editor, value));
|
|
934
913
|
},
|
|
935
914
|
[editor]
|
|
936
915
|
);
|
|
937
|
-
const submit =
|
|
916
|
+
const submit = useCallback(() => {
|
|
938
917
|
if (!canSubmit) {
|
|
939
918
|
return;
|
|
940
919
|
}
|
|
941
920
|
requestAnimationFrame(() => {
|
|
942
921
|
if (ref.current) {
|
|
943
|
-
requestSubmit
|
|
922
|
+
requestSubmit(ref.current);
|
|
944
923
|
}
|
|
945
924
|
});
|
|
946
925
|
}, [canSubmit]);
|
|
947
|
-
const clear =
|
|
948
|
-
|
|
926
|
+
const clear = useCallback(() => {
|
|
927
|
+
Transforms.delete(editor, {
|
|
949
928
|
at: {
|
|
950
|
-
anchor:
|
|
951
|
-
focus:
|
|
929
|
+
anchor: Editor.start(editor, []),
|
|
930
|
+
focus: Editor.end(editor, [])
|
|
952
931
|
}
|
|
953
932
|
});
|
|
954
933
|
}, [editor]);
|
|
955
|
-
const select =
|
|
956
|
-
|
|
934
|
+
const select = useCallback(() => {
|
|
935
|
+
Transforms.select(editor, Editor.end(editor, []));
|
|
957
936
|
}, [editor]);
|
|
958
|
-
const focus =
|
|
937
|
+
const focus = useCallback(
|
|
959
938
|
(resetSelection = true) => {
|
|
960
939
|
try {
|
|
961
|
-
if (!
|
|
962
|
-
|
|
940
|
+
if (!ReactEditor.isFocused(editor)) {
|
|
941
|
+
Transforms.select(
|
|
963
942
|
editor,
|
|
964
|
-
resetSelection || !editor.selection ?
|
|
943
|
+
resetSelection || !editor.selection ? Editor.end(editor, []) : editor.selection
|
|
965
944
|
);
|
|
966
|
-
|
|
945
|
+
ReactEditor.focus(editor);
|
|
967
946
|
}
|
|
968
947
|
} catch {
|
|
969
948
|
}
|
|
970
949
|
},
|
|
971
950
|
[editor]
|
|
972
951
|
);
|
|
973
|
-
const blur =
|
|
952
|
+
const blur = useCallback(() => {
|
|
974
953
|
try {
|
|
975
|
-
|
|
954
|
+
ReactEditor.blur(editor);
|
|
976
955
|
} catch {
|
|
977
956
|
}
|
|
978
957
|
}, [editor]);
|
|
979
|
-
const createMention =
|
|
958
|
+
const createMention = useCallback(() => {
|
|
980
959
|
if (disabled) {
|
|
981
960
|
return;
|
|
982
961
|
}
|
|
983
962
|
focus();
|
|
984
|
-
|
|
963
|
+
insertMentionCharacter(editor);
|
|
985
964
|
}, [disabled, editor, focus]);
|
|
986
|
-
const insertText =
|
|
965
|
+
const insertText$1 = useCallback(
|
|
987
966
|
(text) => {
|
|
988
967
|
if (disabled) {
|
|
989
968
|
return;
|
|
990
969
|
}
|
|
991
970
|
focus(false);
|
|
992
|
-
|
|
971
|
+
insertText(editor, text);
|
|
993
972
|
},
|
|
994
973
|
[disabled, editor, focus]
|
|
995
974
|
);
|
|
996
|
-
const attachFiles =
|
|
975
|
+
const attachFiles = useCallback(() => {
|
|
997
976
|
if (disabled) {
|
|
998
977
|
return;
|
|
999
978
|
}
|
|
@@ -1001,7 +980,7 @@ const ComposerForm = react.forwardRef(
|
|
|
1001
980
|
fileInputRef.current.click();
|
|
1002
981
|
}
|
|
1003
982
|
}, [disabled]);
|
|
1004
|
-
const handleAttachmentsInputChange =
|
|
983
|
+
const handleAttachmentsInputChange = useCallback(
|
|
1005
984
|
(event) => {
|
|
1006
985
|
if (disabled) {
|
|
1007
986
|
return;
|
|
@@ -1013,18 +992,18 @@ const ComposerForm = react.forwardRef(
|
|
|
1013
992
|
},
|
|
1014
993
|
[createAttachments, disabled]
|
|
1015
994
|
);
|
|
1016
|
-
const onSubmitEnd =
|
|
995
|
+
const onSubmitEnd = useCallback(() => {
|
|
1017
996
|
clear();
|
|
1018
997
|
blur();
|
|
1019
998
|
clearAttachments();
|
|
1020
999
|
setSubmitting(false);
|
|
1021
1000
|
}, [blur, clear, clearAttachments]);
|
|
1022
|
-
const handleSubmit =
|
|
1001
|
+
const handleSubmit = useCallback(
|
|
1023
1002
|
(event) => {
|
|
1024
1003
|
if (disabled) {
|
|
1025
1004
|
return;
|
|
1026
1005
|
}
|
|
1027
|
-
const isEmpty2 = isEmpty
|
|
1006
|
+
const isEmpty2 = isEmpty(editor, editor.children);
|
|
1028
1007
|
if (isEmpty2) {
|
|
1029
1008
|
event.preventDefault();
|
|
1030
1009
|
return;
|
|
@@ -1034,7 +1013,7 @@ const ComposerForm = react.forwardRef(
|
|
|
1034
1013
|
event.preventDefault();
|
|
1035
1014
|
return;
|
|
1036
1015
|
}
|
|
1037
|
-
const body =
|
|
1016
|
+
const body = composerBodyToCommentBody(
|
|
1038
1017
|
editor.children
|
|
1039
1018
|
);
|
|
1040
1019
|
const commentAttachments = attachments.filter(
|
|
@@ -1062,19 +1041,19 @@ const ComposerForm = react.forwardRef(
|
|
|
1062
1041
|
},
|
|
1063
1042
|
[disabled, editor, attachments, onComposerSubmit, onSubmit, onSubmitEnd]
|
|
1064
1043
|
);
|
|
1065
|
-
const stopPropagation =
|
|
1044
|
+
const stopPropagation = useCallback((event) => {
|
|
1066
1045
|
event.stopPropagation();
|
|
1067
1046
|
}, []);
|
|
1068
|
-
const toggleMark =
|
|
1047
|
+
const toggleMark$1 = useCallback(
|
|
1069
1048
|
(mark) => {
|
|
1070
|
-
|
|
1049
|
+
toggleMark(editor, mark);
|
|
1071
1050
|
},
|
|
1072
1051
|
[editor]
|
|
1073
1052
|
);
|
|
1074
|
-
useObservable
|
|
1075
|
-
setMarks(
|
|
1053
|
+
useObservable(onEditorChange, () => {
|
|
1054
|
+
setMarks(getMarks(editor));
|
|
1076
1055
|
});
|
|
1077
|
-
return /* @__PURE__ */
|
|
1056
|
+
return /* @__PURE__ */ jsx(ComposerEditorContext.Provider, {
|
|
1078
1057
|
value: {
|
|
1079
1058
|
editor,
|
|
1080
1059
|
validate,
|
|
@@ -1082,7 +1061,7 @@ const ComposerForm = react.forwardRef(
|
|
|
1082
1061
|
onEditorChange,
|
|
1083
1062
|
roomId
|
|
1084
1063
|
},
|
|
1085
|
-
children: /* @__PURE__ */
|
|
1064
|
+
children: /* @__PURE__ */ jsx(ComposerAttachmentsContext.Provider, {
|
|
1086
1065
|
value: {
|
|
1087
1066
|
createAttachments,
|
|
1088
1067
|
isUploadingAttachments,
|
|
@@ -1090,7 +1069,7 @@ const ComposerForm = react.forwardRef(
|
|
|
1090
1069
|
maxAttachments,
|
|
1091
1070
|
maxAttachmentSize
|
|
1092
1071
|
},
|
|
1093
|
-
children: /* @__PURE__ */
|
|
1072
|
+
children: /* @__PURE__ */ jsx(ComposerContext.Provider, {
|
|
1094
1073
|
value: {
|
|
1095
1074
|
isDisabled,
|
|
1096
1075
|
isFocused,
|
|
@@ -1102,19 +1081,19 @@ const ComposerForm = react.forwardRef(
|
|
|
1102
1081
|
focus,
|
|
1103
1082
|
blur,
|
|
1104
1083
|
createMention,
|
|
1105
|
-
insertText,
|
|
1084
|
+
insertText: insertText$1,
|
|
1106
1085
|
attachments,
|
|
1107
1086
|
attachFiles,
|
|
1108
1087
|
removeAttachment,
|
|
1109
|
-
toggleMark,
|
|
1110
|
-
marks
|
|
1088
|
+
toggleMark: toggleMark$1,
|
|
1089
|
+
marks
|
|
1111
1090
|
},
|
|
1112
|
-
children: /* @__PURE__ */
|
|
1091
|
+
children: /* @__PURE__ */ jsxs(Component, {
|
|
1113
1092
|
...props,
|
|
1114
1093
|
onSubmit: handleSubmit,
|
|
1115
1094
|
ref: mergedRefs,
|
|
1116
1095
|
children: [
|
|
1117
|
-
/* @__PURE__ */
|
|
1096
|
+
/* @__PURE__ */ jsx("input", {
|
|
1118
1097
|
type: "file",
|
|
1119
1098
|
multiple: true,
|
|
1120
1099
|
ref: fileInputRef,
|
|
@@ -1123,7 +1102,7 @@ const ComposerForm = react.forwardRef(
|
|
|
1123
1102
|
tabIndex: -1,
|
|
1124
1103
|
style: { display: "none" }
|
|
1125
1104
|
}),
|
|
1126
|
-
/* @__PURE__ */
|
|
1105
|
+
/* @__PURE__ */ jsx(Slottable, {
|
|
1127
1106
|
children
|
|
1128
1107
|
})
|
|
1129
1108
|
]
|
|
@@ -1133,12 +1112,12 @@ const ComposerForm = react.forwardRef(
|
|
|
1133
1112
|
});
|
|
1134
1113
|
}
|
|
1135
1114
|
);
|
|
1136
|
-
const ComposerSubmit =
|
|
1115
|
+
const ComposerSubmit = forwardRef(
|
|
1137
1116
|
({ children, disabled, asChild, ...props }, forwardedRef) => {
|
|
1138
|
-
const Component = asChild ?
|
|
1139
|
-
const { canSubmit, isDisabled: isComposerDisabled } =
|
|
1117
|
+
const Component = asChild ? Slot : "button";
|
|
1118
|
+
const { canSubmit, isDisabled: isComposerDisabled } = useComposer();
|
|
1140
1119
|
const isDisabled = isComposerDisabled || disabled || !canSubmit;
|
|
1141
|
-
return /* @__PURE__ */
|
|
1120
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
1142
1121
|
type: "submit",
|
|
1143
1122
|
...props,
|
|
1144
1123
|
ref: forwardedRef,
|
|
@@ -1147,12 +1126,12 @@ const ComposerSubmit = react.forwardRef(
|
|
|
1147
1126
|
});
|
|
1148
1127
|
}
|
|
1149
1128
|
);
|
|
1150
|
-
const ComposerAttachFiles =
|
|
1151
|
-
const Component = asChild ?
|
|
1152
|
-
const { hasMaxAttachments } =
|
|
1153
|
-
const { isDisabled: isComposerDisabled, attachFiles } =
|
|
1129
|
+
const ComposerAttachFiles = forwardRef(({ children, onClick, disabled, asChild, ...props }, forwardedRef) => {
|
|
1130
|
+
const Component = asChild ? Slot : "button";
|
|
1131
|
+
const { hasMaxAttachments } = useComposerAttachmentsContext();
|
|
1132
|
+
const { isDisabled: isComposerDisabled, attachFiles } = useComposer();
|
|
1154
1133
|
const isDisabled = isComposerDisabled || hasMaxAttachments || disabled;
|
|
1155
|
-
const handleClick =
|
|
1134
|
+
const handleClick = useCallback(
|
|
1156
1135
|
(event) => {
|
|
1157
1136
|
onClick?.(event);
|
|
1158
1137
|
if (!event.isDefaultPrevented()) {
|
|
@@ -1161,7 +1140,7 @@ const ComposerAttachFiles = react.forwardRef(({ children, onClick, disabled, asC
|
|
|
1161
1140
|
},
|
|
1162
1141
|
[attachFiles, onClick]
|
|
1163
1142
|
);
|
|
1164
|
-
return /* @__PURE__ */
|
|
1143
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
1165
1144
|
type: "button",
|
|
1166
1145
|
...props,
|
|
1167
1146
|
onClick: handleClick,
|
|
@@ -1170,7 +1149,7 @@ const ComposerAttachFiles = react.forwardRef(({ children, onClick, disabled, asC
|
|
|
1170
1149
|
children
|
|
1171
1150
|
});
|
|
1172
1151
|
});
|
|
1173
|
-
const ComposerAttachmentsDropArea =
|
|
1152
|
+
const ComposerAttachmentsDropArea = forwardRef(
|
|
1174
1153
|
({
|
|
1175
1154
|
onDragEnter,
|
|
1176
1155
|
onDragLeave,
|
|
@@ -1180,17 +1159,17 @@ const ComposerAttachmentsDropArea = react.forwardRef(
|
|
|
1180
1159
|
asChild,
|
|
1181
1160
|
...props
|
|
1182
1161
|
}, forwardedRef) => {
|
|
1183
|
-
const Component = asChild ?
|
|
1184
|
-
const { isDisabled: isComposerDisabled } =
|
|
1162
|
+
const Component = asChild ? Slot : "div";
|
|
1163
|
+
const { isDisabled: isComposerDisabled } = useComposer();
|
|
1185
1164
|
const isDisabled = isComposerDisabled || disabled;
|
|
1186
|
-
const [, dropAreaProps] =
|
|
1165
|
+
const [, dropAreaProps] = useComposerAttachmentsDropArea({
|
|
1187
1166
|
onDragEnter,
|
|
1188
1167
|
onDragLeave,
|
|
1189
1168
|
onDragOver,
|
|
1190
1169
|
onDrop,
|
|
1191
1170
|
disabled: isDisabled
|
|
1192
1171
|
});
|
|
1193
|
-
return /* @__PURE__ */
|
|
1172
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
1194
1173
|
...dropAreaProps,
|
|
1195
1174
|
"data-disabled": isDisabled ? "" : void 0,
|
|
1196
1175
|
...props,
|
|
@@ -1198,11 +1177,11 @@ const ComposerAttachmentsDropArea = react.forwardRef(
|
|
|
1198
1177
|
});
|
|
1199
1178
|
}
|
|
1200
1179
|
);
|
|
1201
|
-
const ComposerMarkToggle =
|
|
1180
|
+
const ComposerMarkToggle = forwardRef(
|
|
1202
1181
|
({ children, mark, onValueChange, onClick, asChild, ...props }, forwardedRef) => {
|
|
1203
|
-
const Component = asChild ?
|
|
1204
|
-
const { marks, toggleMark } =
|
|
1205
|
-
const handleClick =
|
|
1182
|
+
const Component = asChild ? Slot : "button";
|
|
1183
|
+
const { marks, toggleMark } = useComposer();
|
|
1184
|
+
const handleClick = useCallback(
|
|
1206
1185
|
(event) => {
|
|
1207
1186
|
onClick?.(event);
|
|
1208
1187
|
if (!event.isDefaultPrevented()) {
|
|
@@ -1212,12 +1191,12 @@ const ComposerMarkToggle = react.forwardRef(
|
|
|
1212
1191
|
},
|
|
1213
1192
|
[mark, onClick, onValueChange, toggleMark]
|
|
1214
1193
|
);
|
|
1215
|
-
return /* @__PURE__ */
|
|
1194
|
+
return /* @__PURE__ */ jsx(TogglePrimitive.Root, {
|
|
1216
1195
|
asChild: true,
|
|
1217
1196
|
pressed: marks[mark],
|
|
1218
1197
|
onClick: handleClick,
|
|
1219
1198
|
...props,
|
|
1220
|
-
children: /* @__PURE__ */
|
|
1199
|
+
children: /* @__PURE__ */ jsx(Component, {
|
|
1221
1200
|
...props,
|
|
1222
1201
|
ref: forwardedRef,
|
|
1223
1202
|
children
|
|
@@ -1240,16 +1219,5 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
1240
1219
|
ComposerMarkToggle.displayName = COMPOSER_MARK_TOGGLE_NAME;
|
|
1241
1220
|
}
|
|
1242
1221
|
|
|
1243
|
-
|
|
1244
|
-
exports.AttachmentsDropArea = ComposerAttachmentsDropArea;
|
|
1245
|
-
exports.Editor = ComposerEditor;
|
|
1246
|
-
exports.FloatingToolbar = ComposerFloatingToolbar;
|
|
1247
|
-
exports.Form = ComposerForm;
|
|
1248
|
-
exports.Link = ComposerLink;
|
|
1249
|
-
exports.MarkToggle = ComposerMarkToggle;
|
|
1250
|
-
exports.Mention = ComposerMention;
|
|
1251
|
-
exports.Submit = ComposerSubmit;
|
|
1252
|
-
exports.Suggestions = ComposerSuggestions;
|
|
1253
|
-
exports.SuggestionsList = ComposerSuggestionsList;
|
|
1254
|
-
exports.SuggestionsListItem = ComposerSuggestionsListItem;
|
|
1222
|
+
export { ComposerAttachFiles as AttachFiles, ComposerAttachmentsDropArea as AttachmentsDropArea, ComposerEditor as Editor, ComposerFloatingToolbar as FloatingToolbar, ComposerForm as Form, ComposerLink as Link, ComposerMarkToggle as MarkToggle, ComposerMention as Mention, ComposerSubmit as Submit, ComposerSuggestions as Suggestions, ComposerSuggestionsList as SuggestionsList, ComposerSuggestionsListItem as SuggestionsListItem };
|
|
1255
1223
|
//# sourceMappingURL=index.js.map
|