@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,13 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var useInterval = require('../utils/use-interval.js');
|
|
10
|
-
var useRerender = require('../utils/use-rerender.js');
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
4
|
+
import { forwardRef, useMemo } from 'react';
|
|
5
|
+
import { capitalize } from '../utils/capitalize.js';
|
|
6
|
+
import { dateTimeFormat, relativeTimeFormat } from '../utils/intl.js';
|
|
7
|
+
import { useInterval } from '../utils/use-interval.js';
|
|
8
|
+
import { useRerender } from '../utils/use-rerender.js';
|
|
11
9
|
|
|
12
10
|
|
|
13
11
|
const DYNAMIC_DATE_THRESHOLD = 3 * 24 * 60 * 60 * 1e3;
|
|
@@ -22,21 +20,21 @@ const relativeUnits = {
|
|
|
22
20
|
months: 12
|
|
23
21
|
};
|
|
24
22
|
function formatVerboseDate(date, locale) {
|
|
25
|
-
const formatter =
|
|
23
|
+
const formatter = dateTimeFormat(locale, {
|
|
26
24
|
year: "numeric",
|
|
27
25
|
month: "numeric",
|
|
28
26
|
day: "numeric",
|
|
29
27
|
hour: "numeric",
|
|
30
28
|
minute: "numeric"
|
|
31
29
|
});
|
|
32
|
-
return capitalize
|
|
30
|
+
return capitalize(formatter.format(date));
|
|
33
31
|
}
|
|
34
32
|
function formatShortDate(date, locale) {
|
|
35
|
-
const formatter =
|
|
33
|
+
const formatter = dateTimeFormat(locale, {
|
|
36
34
|
month: "short",
|
|
37
35
|
day: "numeric"
|
|
38
36
|
});
|
|
39
|
-
return capitalize
|
|
37
|
+
return capitalize(formatter.format(date));
|
|
40
38
|
}
|
|
41
39
|
const localesWithBrokenNarrowRelativeFormatting = [
|
|
42
40
|
"br",
|
|
@@ -52,13 +50,13 @@ function formatRelativeDate(date, locale) {
|
|
|
52
50
|
if (locale) {
|
|
53
51
|
resolvedLocale = locale;
|
|
54
52
|
} else {
|
|
55
|
-
const formatter2 =
|
|
53
|
+
const formatter2 = relativeTimeFormat();
|
|
56
54
|
resolvedLocale = formatter2.resolvedOptions().locale;
|
|
57
55
|
}
|
|
58
56
|
const isBrokenWhenNarrow = localesWithBrokenNarrowRelativeFormatting.some(
|
|
59
57
|
(locale2) => resolvedLocale === locale2 || resolvedLocale.startsWith(`${locale2}-`)
|
|
60
58
|
);
|
|
61
|
-
const formatter =
|
|
59
|
+
const formatter = relativeTimeFormat(resolvedLocale, {
|
|
62
60
|
style: isBrokenWhenNarrow ? "short" : "narrow",
|
|
63
61
|
numeric: "auto"
|
|
64
62
|
});
|
|
@@ -75,12 +73,12 @@ function formatRelativeDate(date, locale) {
|
|
|
75
73
|
}
|
|
76
74
|
difference /= length;
|
|
77
75
|
}
|
|
78
|
-
return capitalize
|
|
76
|
+
return capitalize(formatter.format(Math.round(difference), "years"));
|
|
79
77
|
}
|
|
80
78
|
function formatDynamicDate(date, locale) {
|
|
81
79
|
return date.getTime() > Date.now() - DYNAMIC_DATE_THRESHOLD ? formatRelativeDate(date, locale) : formatShortDate(date, locale);
|
|
82
80
|
}
|
|
83
|
-
const Timestamp =
|
|
81
|
+
const Timestamp = forwardRef(
|
|
84
82
|
({
|
|
85
83
|
date,
|
|
86
84
|
locale,
|
|
@@ -91,23 +89,23 @@ const Timestamp = react.forwardRef(
|
|
|
91
89
|
asChild,
|
|
92
90
|
...props
|
|
93
91
|
}, forwardedRef) => {
|
|
94
|
-
const Component = asChild ?
|
|
95
|
-
const [rerender, key] = useRerender
|
|
96
|
-
const parsedDate =
|
|
97
|
-
const normalizedDate =
|
|
92
|
+
const Component = asChild ? Slot : "time";
|
|
93
|
+
const [rerender, key] = useRerender();
|
|
94
|
+
const parsedDate = useMemo(() => new Date(date), [date]);
|
|
95
|
+
const normalizedDate = useMemo(
|
|
98
96
|
() => parsedDate.toISOString(),
|
|
99
97
|
[parsedDate]
|
|
100
98
|
);
|
|
101
|
-
const title =
|
|
99
|
+
const title = useMemo(
|
|
102
100
|
() => typeof renderTitle === "function" ? renderTitle(parsedDate, locale) : renderTitle,
|
|
103
101
|
[renderTitle, parsedDate, key]
|
|
104
102
|
);
|
|
105
|
-
const children =
|
|
103
|
+
const children = useMemo(
|
|
106
104
|
() => typeof renderChildren === "function" ? renderChildren(parsedDate, locale) : renderChildren,
|
|
107
105
|
[renderChildren, parsedDate, key]
|
|
108
106
|
);
|
|
109
|
-
useInterval
|
|
110
|
-
return /* @__PURE__ */
|
|
107
|
+
useInterval(rerender, interval);
|
|
108
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
111
109
|
...props,
|
|
112
110
|
ref: forwardedRef,
|
|
113
111
|
dateTime: dateTime ?? normalizedDate,
|
|
@@ -120,5 +118,5 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
120
118
|
Timestamp.displayName = TIMESTAMP_NAME;
|
|
121
119
|
}
|
|
122
120
|
|
|
123
|
-
|
|
121
|
+
export { Timestamp };
|
|
124
122
|
//# sourceMappingURL=Timestamp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.js","sources":["../../src/primitives/Timestamp.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { ReactNode } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport type { ComponentPropsWithSlot } from \"../types\";\nimport { capitalize } from \"../utils/capitalize\";\nimport { dateTimeFormat, relativeTimeFormat } from \"../utils/intl\";\nimport { useInterval } from \"../utils/use-interval\";\nimport { useRerender } from \"../utils/use-rerender\";\n\nconst DYNAMIC_DATE_THRESHOLD = 3 * 24 * 60 * 60 * 1000; // 3 days\nconst RENDER_INTERVAL = 30 * 1000; // 30 seconds\n\nconst TIMESTAMP_NAME = \"Timestamp\";\n\nexport interface TimestampProps\n extends Omit<ComponentPropsWithSlot<\"time\">, \"children\" | \"title\"> {\n /**\n * The date to display.\n */\n date: Date | string | number;\n\n /**\n * A function to format the displayed date.\n */\n children?: (date: Date, locale?: string) => ReactNode;\n\n /**\n * The `title` attribute's value or a function to format it.\n */\n title?: string | ((date: Date, locale?: string) => string);\n\n /**\n * The interval in milliseconds at which the component will re-render.\n * Can be set to `false` to disable re-rendering.\n */\n interval?: number | false;\n\n /**\n * The locale used when formatting the date.\n */\n locale?: string;\n}\n\nconst relativeUnits = {\n seconds: 60,\n minutes: 60,\n hours: 24,\n days: 7,\n weeks: 4.34524,\n months: 12,\n};\n\n/**\n * Formats a date absolutely.\n */\nfunction formatVerboseDate(date: Date, locale?: string) {\n const formatter = dateTimeFormat(locale, {\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n });\n\n return capitalize(formatter.format(date));\n}\n\n/**\n * Formats a date absolutely with only the day and month.\n */\nfunction formatShortDate(date: Date, locale?: string) {\n const formatter = dateTimeFormat(locale, {\n month: \"short\",\n day: \"numeric\",\n });\n\n return capitalize(formatter.format(date));\n}\n\n// Some locales' relative formatting can be broken (e.g. \"-1h\") when using the narrow style.\nconst localesWithBrokenNarrowRelativeFormatting = [\n \"br\",\n \"fr\",\n \"nb\",\n \"nn\",\n \"no\",\n \"ro\",\n \"sv\",\n];\n\n/**\n * Formats a date relatively.\n */\nfunction formatRelativeDate(date: Date, locale?: string) {\n let resolvedLocale: string;\n\n if (locale) {\n resolvedLocale = locale;\n } else {\n const formatter = relativeTimeFormat();\n\n resolvedLocale = formatter.resolvedOptions().locale;\n }\n\n const isBrokenWhenNarrow = localesWithBrokenNarrowRelativeFormatting.some(\n (locale) =>\n resolvedLocale === locale || resolvedLocale.startsWith(`${locale}-`)\n );\n\n const formatter = relativeTimeFormat(resolvedLocale, {\n style: isBrokenWhenNarrow ? \"short\" : \"narrow\",\n numeric: \"auto\",\n });\n\n let difference = (date.getTime() - Date.now()) / 1000;\n\n if (\n difference > -relativeUnits.seconds &&\n difference < relativeUnits.seconds\n ) {\n return formatter.format(0, \"seconds\");\n }\n\n for (const [unit, length] of Object.entries(relativeUnits)) {\n if (Math.abs(difference) < length) {\n return formatter.format(\n Math.round(difference),\n unit as Intl.RelativeTimeFormatUnit\n );\n }\n\n difference /= length;\n }\n\n return capitalize(formatter.format(Math.round(difference), \"years\"));\n}\n\n/**\n * Formats a date relatively if it's recent,\n * otherwise absolutely with only the day and month.\n */\nfunction formatDynamicDate(date: Date, locale?: string) {\n return date.getTime() > Date.now() - DYNAMIC_DATE_THRESHOLD\n ? formatRelativeDate(date, locale)\n : formatShortDate(date, locale);\n}\n\n/**\n * Displays a formatted date, and automatically re-renders to support relative\n * formatting. Defaults to relative formatting for recent dates and a short\n * absolute formatting for older ones.\n *\n * @example\n * <Timestamp date={new Date()} />\n *\n * @example\n * <Timestamp date={new Date()} title={(date) => date.toISOString()} interval={false}>\n * {(date) => date.toLocaleDateString()}\n * </Timestamp>\n */\nexport const Timestamp = forwardRef<HTMLTimeElement, TimestampProps>(\n (\n {\n date,\n locale,\n children: renderChildren = formatDynamicDate,\n title: renderTitle = formatVerboseDate,\n dateTime,\n interval = RENDER_INTERVAL,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const Component = asChild ? Slot : \"time\";\n const [rerender, key] = useRerender();\n const parsedDate = useMemo(() => new Date(date), [date]);\n const normalizedDate = useMemo(\n () => parsedDate.toISOString(),\n [parsedDate]\n );\n const title = useMemo(\n () =>\n typeof renderTitle === \"function\"\n ? renderTitle(parsedDate, locale)\n : renderTitle,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [renderTitle, parsedDate, key]\n );\n const children = useMemo(\n () =>\n typeof renderChildren === \"function\"\n ? renderChildren(parsedDate, locale)\n : renderChildren,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [renderChildren, parsedDate, key]\n );\n\n useInterval(rerender, interval);\n\n return (\n <Component\n {...props}\n ref={forwardedRef}\n dateTime={dateTime ?? normalizedDate}\n title={title}\n >\n {children}\n </Component>\n );\n }\n);\n\nif (process.env.NODE_ENV !== \"production\") {\n Timestamp.displayName = TIMESTAMP_NAME;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Timestamp.js","sources":["../../src/primitives/Timestamp.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport type { ReactNode } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport type { ComponentPropsWithSlot } from \"../types\";\nimport { capitalize } from \"../utils/capitalize\";\nimport { dateTimeFormat, relativeTimeFormat } from \"../utils/intl\";\nimport { useInterval } from \"../utils/use-interval\";\nimport { useRerender } from \"../utils/use-rerender\";\n\nconst DYNAMIC_DATE_THRESHOLD = 3 * 24 * 60 * 60 * 1000; // 3 days\nconst RENDER_INTERVAL = 30 * 1000; // 30 seconds\n\nconst TIMESTAMP_NAME = \"Timestamp\";\n\nexport interface TimestampProps\n extends Omit<ComponentPropsWithSlot<\"time\">, \"children\" | \"title\"> {\n /**\n * The date to display.\n */\n date: Date | string | number;\n\n /**\n * A function to format the displayed date.\n */\n children?: (date: Date, locale?: string) => ReactNode;\n\n /**\n * The `title` attribute's value or a function to format it.\n */\n title?: string | ((date: Date, locale?: string) => string);\n\n /**\n * The interval in milliseconds at which the component will re-render.\n * Can be set to `false` to disable re-rendering.\n */\n interval?: number | false;\n\n /**\n * The locale used when formatting the date.\n */\n locale?: string;\n}\n\nconst relativeUnits = {\n seconds: 60,\n minutes: 60,\n hours: 24,\n days: 7,\n weeks: 4.34524,\n months: 12,\n};\n\n/**\n * Formats a date absolutely.\n */\nfunction formatVerboseDate(date: Date, locale?: string) {\n const formatter = dateTimeFormat(locale, {\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n });\n\n return capitalize(formatter.format(date));\n}\n\n/**\n * Formats a date absolutely with only the day and month.\n */\nfunction formatShortDate(date: Date, locale?: string) {\n const formatter = dateTimeFormat(locale, {\n month: \"short\",\n day: \"numeric\",\n });\n\n return capitalize(formatter.format(date));\n}\n\n// Some locales' relative formatting can be broken (e.g. \"-1h\") when using the narrow style.\nconst localesWithBrokenNarrowRelativeFormatting = [\n \"br\",\n \"fr\",\n \"nb\",\n \"nn\",\n \"no\",\n \"ro\",\n \"sv\",\n];\n\n/**\n * Formats a date relatively.\n */\nfunction formatRelativeDate(date: Date, locale?: string) {\n let resolvedLocale: string;\n\n if (locale) {\n resolvedLocale = locale;\n } else {\n const formatter = relativeTimeFormat();\n\n resolvedLocale = formatter.resolvedOptions().locale;\n }\n\n const isBrokenWhenNarrow = localesWithBrokenNarrowRelativeFormatting.some(\n (locale) =>\n resolvedLocale === locale || resolvedLocale.startsWith(`${locale}-`)\n );\n\n const formatter = relativeTimeFormat(resolvedLocale, {\n style: isBrokenWhenNarrow ? \"short\" : \"narrow\",\n numeric: \"auto\",\n });\n\n let difference = (date.getTime() - Date.now()) / 1000;\n\n if (\n difference > -relativeUnits.seconds &&\n difference < relativeUnits.seconds\n ) {\n return formatter.format(0, \"seconds\");\n }\n\n for (const [unit, length] of Object.entries(relativeUnits)) {\n if (Math.abs(difference) < length) {\n return formatter.format(\n Math.round(difference),\n unit as Intl.RelativeTimeFormatUnit\n );\n }\n\n difference /= length;\n }\n\n return capitalize(formatter.format(Math.round(difference), \"years\"));\n}\n\n/**\n * Formats a date relatively if it's recent,\n * otherwise absolutely with only the day and month.\n */\nfunction formatDynamicDate(date: Date, locale?: string) {\n return date.getTime() > Date.now() - DYNAMIC_DATE_THRESHOLD\n ? formatRelativeDate(date, locale)\n : formatShortDate(date, locale);\n}\n\n/**\n * Displays a formatted date, and automatically re-renders to support relative\n * formatting. Defaults to relative formatting for recent dates and a short\n * absolute formatting for older ones.\n *\n * @example\n * <Timestamp date={new Date()} />\n *\n * @example\n * <Timestamp date={new Date()} title={(date) => date.toISOString()} interval={false}>\n * {(date) => date.toLocaleDateString()}\n * </Timestamp>\n */\nexport const Timestamp = forwardRef<HTMLTimeElement, TimestampProps>(\n (\n {\n date,\n locale,\n children: renderChildren = formatDynamicDate,\n title: renderTitle = formatVerboseDate,\n dateTime,\n interval = RENDER_INTERVAL,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const Component = asChild ? Slot : \"time\";\n const [rerender, key] = useRerender();\n const parsedDate = useMemo(() => new Date(date), [date]);\n const normalizedDate = useMemo(\n () => parsedDate.toISOString(),\n [parsedDate]\n );\n const title = useMemo(\n () =>\n typeof renderTitle === \"function\"\n ? renderTitle(parsedDate, locale)\n : renderTitle,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [renderTitle, parsedDate, key]\n );\n const children = useMemo(\n () =>\n typeof renderChildren === \"function\"\n ? renderChildren(parsedDate, locale)\n : renderChildren,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [renderChildren, parsedDate, key]\n );\n\n useInterval(rerender, interval);\n\n return (\n <Component\n {...props}\n ref={forwardedRef}\n dateTime={dateTime ?? normalizedDate}\n title={title}\n >\n {children}\n </Component>\n );\n }\n);\n\nif (process.env.NODE_ENV !== \"production\") {\n Timestamp.displayName = TIMESTAMP_NAME;\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA;AAYA;AACA;AAEA;AA+BA;AAAsB;AACX;AACA;AACF;AACD;AACC;AAET;AAKA;AACE;AAAyC;AACjC;AACC;AACF;AACC;AACE;AAGV;AACF;AAKA;AACE;AAAyC;AAChC;AACF;AAGP;AACF;AAGA;AAAkD;AAChD;AACA;AACA;AACA;AACA;AACA;AAEF;AAKA;AACE;AAEA;AACE;AAAiB;AAEjB;AAEA;AAA6C;AAG/C;AAAqE;AAEE;AAGvE;AAAqD;AACb;AAC7B;AAGX;AAEA;AAIE;AAAoC;AAGtC;AACE;AACE;AAAiB;AACM;AACrB;AACF;AAGF;AAAc;AAGhB;AACF;AAMA;AACE;AAGF;AAeO;AAAkB;AAErB;AACE;AACA;AAC2B;AACN;AACrB;AACW;AACX;AACG;AAIL;AACA;AACA;AACA;AAAuB;AACQ;AAClB;AAEb;AAAc;AAIN;AAEuB;AAE/B;AAAiB;AAIT;AAE0B;AAGlC;AAEA;AACG;AACK;AACC;AACiB;AACtB;AAEC;AACH;AAGN;AAEA;AACE;AACF;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./Comment/index.cjs');
|
|
4
|
+
var index$1 = require('./Composer/index.cjs');
|
|
5
|
+
var contexts = require('./Composer/contexts.cjs');
|
|
6
|
+
var utils = require('./Composer/utils.cjs');
|
|
7
|
+
var index$2 = require('./EmojiPicker/index.cjs');
|
|
8
|
+
var FileSize = require('./FileSize.cjs');
|
|
9
|
+
var Timestamp = require('./Timestamp.cjs');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.Comment = index;
|
|
14
|
+
exports.Composer = index$1;
|
|
15
|
+
exports.useComposer = contexts.useComposer;
|
|
16
|
+
exports.AttachmentTooLargeError = utils.AttachmentTooLargeError;
|
|
17
|
+
exports.EmojiPicker = index$2;
|
|
18
|
+
exports.FileSize = FileSize.FileSize;
|
|
19
|
+
exports.Timestamp = Timestamp.Timestamp;
|
|
20
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
package/dist/primitives/index.js
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
exports.Comment = index;
|
|
14
|
-
exports.Composer = index$1;
|
|
15
|
-
exports.useComposer = contexts.useComposer;
|
|
16
|
-
exports.AttachmentTooLargeError = utils.AttachmentTooLargeError;
|
|
17
|
-
exports.EmojiPicker = index$2;
|
|
18
|
-
exports.FileSize = FileSize.FileSize;
|
|
19
|
-
exports.Timestamp = Timestamp.Timestamp;
|
|
1
|
+
import * as index from './Comment/index.js';
|
|
2
|
+
export { index as Comment };
|
|
3
|
+
import * as index$1 from './Composer/index.js';
|
|
4
|
+
export { index$1 as Composer };
|
|
5
|
+
export { useComposer } from './Composer/contexts.js';
|
|
6
|
+
export { AttachmentTooLargeError } from './Composer/utils.js';
|
|
7
|
+
import * as index$2 from './EmojiPicker/index.js';
|
|
8
|
+
export { index$2 as EmojiPicker };
|
|
9
|
+
export { FileSize } from './FileSize.js';
|
|
10
|
+
export { Timestamp } from './Timestamp.js';
|
|
20
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var reactSlot = require('@radix-ui/react-slot');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var constants = require('../../constants.cjs');
|
|
7
|
+
|
|
8
|
+
const Emoji = react.forwardRef(
|
|
9
|
+
({ emoji, style, asChild, ...props }, forwardedRef) => {
|
|
10
|
+
const Component = asChild ? reactSlot.Slot : "span";
|
|
11
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, {
|
|
12
|
+
role: "img",
|
|
13
|
+
"aria-label": emoji,
|
|
14
|
+
"data-emoji": emoji,
|
|
15
|
+
style: {
|
|
16
|
+
...style,
|
|
17
|
+
fontFamily: constants.EMOJI_FONT_FAMILY,
|
|
18
|
+
display: "inline-flex",
|
|
19
|
+
alignItems: "center",
|
|
20
|
+
justifyContent: "center",
|
|
21
|
+
width: "1em",
|
|
22
|
+
whiteSpace: "nowrap"
|
|
23
|
+
},
|
|
24
|
+
...props,
|
|
25
|
+
ref: forwardedRef,
|
|
26
|
+
children: emoji
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
exports.Emoji = Emoji;
|
|
32
|
+
//# sourceMappingURL=Emoji.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Emoji.
|
|
1
|
+
{"version":3,"file":"Emoji.cjs","sources":["../../../src/primitives/internal/Emoji.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\nimport { EMOJI_FONT_FAMILY } from \"../../constants\";\nimport type { ComponentPropsWithSlot } from \"../../types\";\n\nexport interface EmojiProps extends ComponentPropsWithSlot<\"span\"> {\n emoji: string;\n}\n\nexport const Emoji = forwardRef<HTMLSpanElement, EmojiProps>(\n ({ emoji, style, asChild, ...props }, forwardedRef) => {\n const Component = asChild ? Slot : \"span\";\n\n return (\n <Component\n role=\"img\"\n aria-label={emoji}\n data-emoji={emoji}\n style={{\n ...style,\n fontFamily: EMOJI_FONT_FAMILY,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"1em\",\n whiteSpace: \"nowrap\",\n }}\n {...props}\n ref={forwardedRef}\n >\n {emoji}\n </Component>\n );\n }\n);\n"],"names":["forwardRef","Slot","jsx","EMOJI_FONT_FAMILY"],"mappings":";;;;;;;AAUO,MAAM,KAAQ,GAAAA,gBAAA;AAAA,EACnB,CAAC,EAAE,KAAA,EAAO,OAAO,OAAY,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACrD,IAAM,MAAA,SAAA,GAAY,UAAUC,cAAO,GAAA,MAAA,CAAA;AAEnC,IAAA,uBACGC,cAAA,CAAA,SAAA,EAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,YAAY,EAAA,KAAA;AAAA,MACZ,YAAY,EAAA,KAAA;AAAA,MACZ,KAAO,EAAA;AAAA,QACL,GAAG,KAAA;AAAA,QACH,UAAY,EAAAC,2BAAA;AAAA,QACZ,OAAS,EAAA,aAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA,QAAA;AAAA,QAChB,KAAO,EAAA,KAAA;AAAA,QACP,UAAY,EAAA,QAAA;AAAA,OACd;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,GAAK,EAAA,YAAA;AAAA,MAEJ,QAAA,EAAA,KAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { EMOJI_FONT_FAMILY } from '../../constants.js';
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
var reactSlot = require('@radix-ui/react-slot');
|
|
5
|
-
var react = require('react');
|
|
6
|
-
var constants = require('../../constants.js');
|
|
7
|
-
|
|
8
|
-
const Emoji = react.forwardRef(
|
|
6
|
+
const Emoji = forwardRef(
|
|
9
7
|
({ emoji, style, asChild, ...props }, forwardedRef) => {
|
|
10
|
-
const Component = asChild ?
|
|
11
|
-
return /* @__PURE__ */
|
|
8
|
+
const Component = asChild ? Slot : "span";
|
|
9
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
12
10
|
role: "img",
|
|
13
11
|
"aria-label": emoji,
|
|
14
12
|
"data-emoji": emoji,
|
|
15
13
|
style: {
|
|
16
14
|
...style,
|
|
17
|
-
fontFamily:
|
|
15
|
+
fontFamily: EMOJI_FONT_FAMILY,
|
|
18
16
|
display: "inline-flex",
|
|
19
17
|
alignItems: "center",
|
|
20
18
|
justifyContent: "center",
|
|
@@ -28,5 +26,5 @@ const Emoji = react.forwardRef(
|
|
|
28
26
|
}
|
|
29
27
|
);
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
export { Emoji };
|
|
32
30
|
//# sourceMappingURL=Emoji.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Emoji.js","sources":["../../../src/primitives/internal/Emoji.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\nimport { EMOJI_FONT_FAMILY } from \"../../constants\";\nimport type { ComponentPropsWithSlot } from \"../../types\";\n\nexport interface EmojiProps extends ComponentPropsWithSlot<\"span\"> {\n emoji: string;\n}\n\nexport const Emoji = forwardRef<HTMLSpanElement, EmojiProps>(\n ({ emoji, style, asChild, ...props }, forwardedRef) => {\n const Component = asChild ? Slot : \"span\";\n\n return (\n <Component\n role=\"img\"\n aria-label={emoji}\n data-emoji={emoji}\n style={{\n ...style,\n fontFamily: EMOJI_FONT_FAMILY,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"1em\",\n whiteSpace: \"nowrap\",\n }}\n {...props}\n ref={forwardedRef}\n >\n {emoji}\n </Component>\n );\n }\n);\n"],"names":[
|
|
1
|
+
{"version":3,"file":"Emoji.js","sources":["../../../src/primitives/internal/Emoji.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\n\nimport { EMOJI_FONT_FAMILY } from \"../../constants\";\nimport type { ComponentPropsWithSlot } from \"../../types\";\n\nexport interface EmojiProps extends ComponentPropsWithSlot<\"span\"> {\n emoji: string;\n}\n\nexport const Emoji = forwardRef<HTMLSpanElement, EmojiProps>(\n ({ emoji, style, asChild, ...props }, forwardedRef) => {\n const Component = asChild ? Slot : \"span\";\n\n return (\n <Component\n role=\"img\"\n aria-label={emoji}\n data-emoji={emoji}\n style={{\n ...style,\n fontFamily: EMOJI_FONT_FAMILY,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"1em\",\n whiteSpace: \"nowrap\",\n }}\n {...props}\n ref={forwardedRef}\n >\n {emoji}\n </Component>\n );\n }\n);\n"],"names":[],"mappings":";;;;;AAUO,MAAM,KAAQ,GAAA,UAAA;AAAA,EACnB,CAAC,EAAE,KAAA,EAAO,OAAO,OAAY,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACrD,IAAM,MAAA,SAAA,GAAY,UAAU,IAAO,GAAA,MAAA,CAAA;AAEnC,IAAA,uBACG,GAAA,CAAA,SAAA,EAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,YAAY,EAAA,KAAA;AAAA,MACZ,YAAY,EAAA,KAAA;AAAA,MACZ,KAAO,EAAA;AAAA,QACL,GAAG,KAAA;AAAA,QACH,UAAY,EAAA,iBAAA;AAAA,QACZ,OAAS,EAAA,aAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA,QAAA;AAAA,QAChB,KAAO,EAAA,KAAA;AAAA,QACP,UAAY,EAAA,QAAA;AAAA,OACd;AAAA,MACC,GAAG,KAAA;AAAA,MACJ,GAAK,EAAA,YAAA;AAAA,MAEJ,QAAA,EAAA,KAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
package/dist/shared.cjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@liveblocks/core');
|
|
4
|
+
var react = require('@liveblocks/react');
|
|
5
|
+
var _private = require('@liveblocks/react/_private');
|
|
6
|
+
|
|
7
|
+
function useCurrentUserId() {
|
|
8
|
+
const client = react.useClient();
|
|
9
|
+
return _private.useSignal(client[core.kInternal].currentUserId) ?? null;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.useCurrentUserId = useCurrentUserId;
|
|
13
|
+
//# sourceMappingURL=shared.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.
|
|
1
|
+
{"version":3,"file":"shared.cjs","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSignal } from \"@liveblocks/react/_private\";\n\nexport function useCurrentUserId(): string | null {\n const client = useClient();\n return useSignal(client[kInternal].currentUserId) ?? null;\n}\n"],"names":["useClient","useSignal","kInternal"],"mappings":";;;;;;AAIO,SAAS,gBAAkC,GAAA;AAChD,EAAA,MAAM,SAASA,eAAU,EAAA,CAAA;AACzB,EAAA,OAAOC,kBAAU,CAAA,MAAA,CAAOC,cAAW,CAAA,CAAA,aAAa,CAAK,IAAA,IAAA,CAAA;AACvD;;;;"}
|
package/dist/shared.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var react = require('@liveblocks/react');
|
|
5
|
-
var _private = require('@liveblocks/react/_private');
|
|
1
|
+
import { kInternal } from '@liveblocks/core';
|
|
2
|
+
import { useClient } from '@liveblocks/react';
|
|
3
|
+
import { useSignal } from '@liveblocks/react/_private';
|
|
6
4
|
|
|
7
5
|
function useCurrentUserId() {
|
|
8
|
-
const client =
|
|
9
|
-
return
|
|
6
|
+
const client = useClient();
|
|
7
|
+
return useSignal(client[kInternal].currentUserId) ?? null;
|
|
10
8
|
}
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
export { useCurrentUserId };
|
|
13
11
|
//# sourceMappingURL=shared.js.map
|
package/dist/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSignal } from \"@liveblocks/react/_private\";\n\nexport function useCurrentUserId(): string | null {\n const client = useClient();\n return useSignal(client[kInternal].currentUserId) ?? null;\n}\n"],"names":[
|
|
1
|
+
{"version":3,"file":"shared.js","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSignal } from \"@liveblocks/react/_private\";\n\nexport function useCurrentUserId(): string | null {\n const client = useClient();\n return useSignal(client[kInternal].currentUserId) ?? null;\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,gBAAkC,GAAA;AAChD,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAA,OAAO,SAAU,CAAA,MAAA,CAAO,SAAW,CAAA,CAAA,aAAa,CAAK,IAAA,IAAA,CAAA;AACvD;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var slate = require('slate');
|
|
4
|
+
var getCharacter = require('../utils/get-character.cjs');
|
|
5
|
+
var getMatchRange = require('../utils/get-match-range.cjs');
|
|
6
|
+
var isEmptyString = require('../utils/is-empty-string.cjs');
|
|
5
7
|
|
|
6
8
|
const formatters = [
|
|
7
9
|
{
|
|
@@ -30,27 +32,27 @@ function formatMark(editor, text, formatter) {
|
|
|
30
32
|
if (text !== formatter.character) {
|
|
31
33
|
return false;
|
|
32
34
|
}
|
|
33
|
-
const match = getMatchRange(editor, editor.selection, [formatter.character]);
|
|
34
|
-
if (!match || Range.isCollapsed(match)) {
|
|
35
|
+
const match = getMatchRange.getMatchRange(editor, editor.selection, [formatter.character]);
|
|
36
|
+
if (!match || slate.Range.isCollapsed(match)) {
|
|
35
37
|
return false;
|
|
36
38
|
}
|
|
37
|
-
const formattingCharacter = getCharacterBefore(editor, match);
|
|
39
|
+
const formattingCharacter = getCharacter.getCharacterBefore(editor, match);
|
|
38
40
|
if (!formattingCharacter || formattingCharacter.text !== formatter.character) {
|
|
39
41
|
return false;
|
|
40
42
|
}
|
|
41
|
-
const beforeCharacter = getCharacterBefore(editor, formattingCharacter.range);
|
|
42
|
-
if (beforeCharacter && !markFormattingCharacters.includes(beforeCharacter.text) && !isEmptyString(beforeCharacter.text)) {
|
|
43
|
+
const beforeCharacter = getCharacter.getCharacterBefore(editor, formattingCharacter.range);
|
|
44
|
+
if (beforeCharacter && !markFormattingCharacters.includes(beforeCharacter.text) && !isEmptyString.isEmptyString(beforeCharacter.text)) {
|
|
43
45
|
return false;
|
|
44
46
|
}
|
|
45
|
-
const matchText = Editor.string(editor, match);
|
|
47
|
+
const matchText = slate.Editor.string(editor, match);
|
|
46
48
|
if (matchText.trim() !== matchText) {
|
|
47
49
|
return false;
|
|
48
50
|
}
|
|
49
|
-
Transforms.select(editor, match);
|
|
51
|
+
slate.Transforms.select(editor, match);
|
|
50
52
|
editor.addMark(formatter.mark, true);
|
|
51
|
-
Transforms.collapse(editor, { edge: "end" });
|
|
53
|
+
slate.Transforms.collapse(editor, { edge: "end" });
|
|
52
54
|
editor.removeMark(formatter.mark);
|
|
53
|
-
Transforms.delete(editor, {
|
|
55
|
+
slate.Transforms.delete(editor, {
|
|
54
56
|
at: formattingCharacter.range
|
|
55
57
|
});
|
|
56
58
|
return true;
|
|
@@ -58,7 +60,7 @@ function formatMark(editor, text, formatter) {
|
|
|
58
60
|
function withAutoFormatting(editor) {
|
|
59
61
|
const { insertText } = editor;
|
|
60
62
|
editor.insertText = (text, options) => {
|
|
61
|
-
if (!editor.selection || !Range.isCollapsed(editor.selection)) {
|
|
63
|
+
if (!editor.selection || !slate.Range.isCollapsed(editor.selection)) {
|
|
62
64
|
return insertText(text, options);
|
|
63
65
|
}
|
|
64
66
|
let shouldInsertText = true;
|
|
@@ -76,5 +78,5 @@ function withAutoFormatting(editor) {
|
|
|
76
78
|
return editor;
|
|
77
79
|
}
|
|
78
80
|
|
|
79
|
-
|
|
80
|
-
//# sourceMappingURL=auto-formatting.
|
|
81
|
+
exports.withAutoFormatting = withAutoFormatting;
|
|
82
|
+
//# sourceMappingURL=auto-formatting.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-formatting.
|
|
1
|
+
{"version":3,"file":"auto-formatting.cjs","sources":["../../../src/slate/plugins/auto-formatting.ts"],"sourcesContent":["import type { EditorMarks } from \"slate\";\nimport {\n Editor as SlateEditor,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport { getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\n\ninterface MarkFormatter {\n type: \"mark\";\n mark: keyof EditorMarks;\n character: string;\n}\n\ntype Formatter = MarkFormatter;\n\nconst formatters: Formatter[] = [\n {\n type: \"mark\",\n mark: \"bold\",\n character: \"*\",\n },\n {\n type: \"mark\",\n mark: \"italic\",\n character: \"_\",\n },\n {\n type: \"mark\",\n mark: \"strikethrough\",\n character: \"~\",\n },\n {\n type: \"mark\",\n mark: \"code\",\n character: \"`\",\n },\n];\nconst markFormattingCharacters = formatters\n .filter((formatter) => formatter.type === \"mark\")\n .map((formatter) => formatter.character);\n\nfunction formatMark<T extends SlateEditor>(\n editor: T,\n text: string,\n formatter: MarkFormatter\n): boolean {\n if (text !== formatter.character) {\n return false;\n }\n\n const match = getMatchRange(editor, editor.selection!, [formatter.character]);\n\n // Check if the match exists and is not empty\n if (!match || SlateRange.isCollapsed(match)) {\n return false;\n }\n\n const formattingCharacter = getCharacterBefore(editor, match);\n\n // Check if the match is preceded by the formatting character\n if (\n !formattingCharacter ||\n formattingCharacter.text !== formatter.character\n ) {\n return false;\n }\n\n const beforeCharacter = getCharacterBefore(editor, formattingCharacter.range);\n\n // Check if the formatting character is preceded by a non-whitespace character (or another formatting character)\n if (\n beforeCharacter &&\n !markFormattingCharacters.includes(beforeCharacter.text) &&\n !isEmptyString(beforeCharacter.text)\n ) {\n return false;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match has leading/trailing whitespace\n if (matchText.trim() !== matchText) {\n return false;\n }\n\n // Set the match to the expected mark\n SlateTransforms.select(editor, match);\n editor.addMark(formatter.mark, true);\n\n // Set the selection at the end of the match and reset formatting\n SlateTransforms.collapse(editor, { edge: \"end\" });\n editor.removeMark(formatter.mark);\n\n // Delete the formatting character\n SlateTransforms.delete(editor, {\n at: formattingCharacter.range,\n });\n\n return true;\n}\n\nexport function withAutoFormatting<T extends SlateEditor>(editor: T): T {\n const { insertText } = editor;\n\n editor.insertText = (text, options) => {\n if (!editor.selection || !SlateRange.isCollapsed(editor.selection)) {\n return insertText(text, options);\n }\n\n let shouldInsertText = true;\n\n for (const formatter of formatters) {\n if (formatter.type === \"mark\") {\n if (formatMark(editor, text, formatter)) {\n shouldInsertText = false;\n }\n }\n }\n\n if (shouldInsertText) {\n insertText(text, options);\n }\n };\n\n return editor;\n}\n"],"names":["getMatchRange","SlateRange","getCharacterBefore","isEmptyString","SlateEditor","SlateTransforms"],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var getMatchRange = require('../utils/get-match-range.js');
|
|
6
|
-
var isEmptyString = require('../utils/is-empty-string.js');
|
|
1
|
+
import { Range, Editor, Transforms } from 'slate';
|
|
2
|
+
import { getCharacterBefore } from '../utils/get-character.js';
|
|
3
|
+
import { getMatchRange } from '../utils/get-match-range.js';
|
|
4
|
+
import { isEmptyString } from '../utils/is-empty-string.js';
|
|
7
5
|
|
|
8
6
|
const formatters = [
|
|
9
7
|
{
|
|
@@ -32,27 +30,27 @@ function formatMark(editor, text, formatter) {
|
|
|
32
30
|
if (text !== formatter.character) {
|
|
33
31
|
return false;
|
|
34
32
|
}
|
|
35
|
-
const match = getMatchRange
|
|
36
|
-
if (!match ||
|
|
33
|
+
const match = getMatchRange(editor, editor.selection, [formatter.character]);
|
|
34
|
+
if (!match || Range.isCollapsed(match)) {
|
|
37
35
|
return false;
|
|
38
36
|
}
|
|
39
|
-
const formattingCharacter =
|
|
37
|
+
const formattingCharacter = getCharacterBefore(editor, match);
|
|
40
38
|
if (!formattingCharacter || formattingCharacter.text !== formatter.character) {
|
|
41
39
|
return false;
|
|
42
40
|
}
|
|
43
|
-
const beforeCharacter =
|
|
44
|
-
if (beforeCharacter && !markFormattingCharacters.includes(beforeCharacter.text) && !isEmptyString
|
|
41
|
+
const beforeCharacter = getCharacterBefore(editor, formattingCharacter.range);
|
|
42
|
+
if (beforeCharacter && !markFormattingCharacters.includes(beforeCharacter.text) && !isEmptyString(beforeCharacter.text)) {
|
|
45
43
|
return false;
|
|
46
44
|
}
|
|
47
|
-
const matchText =
|
|
45
|
+
const matchText = Editor.string(editor, match);
|
|
48
46
|
if (matchText.trim() !== matchText) {
|
|
49
47
|
return false;
|
|
50
48
|
}
|
|
51
|
-
|
|
49
|
+
Transforms.select(editor, match);
|
|
52
50
|
editor.addMark(formatter.mark, true);
|
|
53
|
-
|
|
51
|
+
Transforms.collapse(editor, { edge: "end" });
|
|
54
52
|
editor.removeMark(formatter.mark);
|
|
55
|
-
|
|
53
|
+
Transforms.delete(editor, {
|
|
56
54
|
at: formattingCharacter.range
|
|
57
55
|
});
|
|
58
56
|
return true;
|
|
@@ -60,7 +58,7 @@ function formatMark(editor, text, formatter) {
|
|
|
60
58
|
function withAutoFormatting(editor) {
|
|
61
59
|
const { insertText } = editor;
|
|
62
60
|
editor.insertText = (text, options) => {
|
|
63
|
-
if (!editor.selection || !
|
|
61
|
+
if (!editor.selection || !Range.isCollapsed(editor.selection)) {
|
|
64
62
|
return insertText(text, options);
|
|
65
63
|
}
|
|
66
64
|
let shouldInsertText = true;
|
|
@@ -78,5 +76,5 @@ function withAutoFormatting(editor) {
|
|
|
78
76
|
return editor;
|
|
79
77
|
}
|
|
80
78
|
|
|
81
|
-
|
|
79
|
+
export { withAutoFormatting };
|
|
82
80
|
//# sourceMappingURL=auto-formatting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-formatting.js","sources":["../../../src/slate/plugins/auto-formatting.ts"],"sourcesContent":["import type { EditorMarks } from \"slate\";\nimport {\n Editor as SlateEditor,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport { getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\n\ninterface MarkFormatter {\n type: \"mark\";\n mark: keyof EditorMarks;\n character: string;\n}\n\ntype Formatter = MarkFormatter;\n\nconst formatters: Formatter[] = [\n {\n type: \"mark\",\n mark: \"bold\",\n character: \"*\",\n },\n {\n type: \"mark\",\n mark: \"italic\",\n character: \"_\",\n },\n {\n type: \"mark\",\n mark: \"strikethrough\",\n character: \"~\",\n },\n {\n type: \"mark\",\n mark: \"code\",\n character: \"`\",\n },\n];\nconst markFormattingCharacters = formatters\n .filter((formatter) => formatter.type === \"mark\")\n .map((formatter) => formatter.character);\n\nfunction formatMark<T extends SlateEditor>(\n editor: T,\n text: string,\n formatter: MarkFormatter\n): boolean {\n if (text !== formatter.character) {\n return false;\n }\n\n const match = getMatchRange(editor, editor.selection!, [formatter.character]);\n\n // Check if the match exists and is not empty\n if (!match || SlateRange.isCollapsed(match)) {\n return false;\n }\n\n const formattingCharacter = getCharacterBefore(editor, match);\n\n // Check if the match is preceded by the formatting character\n if (\n !formattingCharacter ||\n formattingCharacter.text !== formatter.character\n ) {\n return false;\n }\n\n const beforeCharacter = getCharacterBefore(editor, formattingCharacter.range);\n\n // Check if the formatting character is preceded by a non-whitespace character (or another formatting character)\n if (\n beforeCharacter &&\n !markFormattingCharacters.includes(beforeCharacter.text) &&\n !isEmptyString(beforeCharacter.text)\n ) {\n return false;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match has leading/trailing whitespace\n if (matchText.trim() !== matchText) {\n return false;\n }\n\n // Set the match to the expected mark\n SlateTransforms.select(editor, match);\n editor.addMark(formatter.mark, true);\n\n // Set the selection at the end of the match and reset formatting\n SlateTransforms.collapse(editor, { edge: \"end\" });\n editor.removeMark(formatter.mark);\n\n // Delete the formatting character\n SlateTransforms.delete(editor, {\n at: formattingCharacter.range,\n });\n\n return true;\n}\n\nexport function withAutoFormatting<T extends SlateEditor>(editor: T): T {\n const { insertText } = editor;\n\n editor.insertText = (text, options) => {\n if (!editor.selection || !SlateRange.isCollapsed(editor.selection)) {\n return insertText(text, options);\n }\n\n let shouldInsertText = true;\n\n for (const formatter of formatters) {\n if (formatter.type === \"mark\") {\n if (formatMark(editor, text, formatter)) {\n shouldInsertText = false;\n }\n }\n }\n\n if (shouldInsertText) {\n insertText(text, options);\n }\n };\n\n return editor;\n}\n"],"names":["
|
|
1
|
+
{"version":3,"file":"auto-formatting.js","sources":["../../../src/slate/plugins/auto-formatting.ts"],"sourcesContent":["import type { EditorMarks } from \"slate\";\nimport {\n Editor as SlateEditor,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport { getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\n\ninterface MarkFormatter {\n type: \"mark\";\n mark: keyof EditorMarks;\n character: string;\n}\n\ntype Formatter = MarkFormatter;\n\nconst formatters: Formatter[] = [\n {\n type: \"mark\",\n mark: \"bold\",\n character: \"*\",\n },\n {\n type: \"mark\",\n mark: \"italic\",\n character: \"_\",\n },\n {\n type: \"mark\",\n mark: \"strikethrough\",\n character: \"~\",\n },\n {\n type: \"mark\",\n mark: \"code\",\n character: \"`\",\n },\n];\nconst markFormattingCharacters = formatters\n .filter((formatter) => formatter.type === \"mark\")\n .map((formatter) => formatter.character);\n\nfunction formatMark<T extends SlateEditor>(\n editor: T,\n text: string,\n formatter: MarkFormatter\n): boolean {\n if (text !== formatter.character) {\n return false;\n }\n\n const match = getMatchRange(editor, editor.selection!, [formatter.character]);\n\n // Check if the match exists and is not empty\n if (!match || SlateRange.isCollapsed(match)) {\n return false;\n }\n\n const formattingCharacter = getCharacterBefore(editor, match);\n\n // Check if the match is preceded by the formatting character\n if (\n !formattingCharacter ||\n formattingCharacter.text !== formatter.character\n ) {\n return false;\n }\n\n const beforeCharacter = getCharacterBefore(editor, formattingCharacter.range);\n\n // Check if the formatting character is preceded by a non-whitespace character (or another formatting character)\n if (\n beforeCharacter &&\n !markFormattingCharacters.includes(beforeCharacter.text) &&\n !isEmptyString(beforeCharacter.text)\n ) {\n return false;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match has leading/trailing whitespace\n if (matchText.trim() !== matchText) {\n return false;\n }\n\n // Set the match to the expected mark\n SlateTransforms.select(editor, match);\n editor.addMark(formatter.mark, true);\n\n // Set the selection at the end of the match and reset formatting\n SlateTransforms.collapse(editor, { edge: \"end\" });\n editor.removeMark(formatter.mark);\n\n // Delete the formatting character\n SlateTransforms.delete(editor, {\n at: formattingCharacter.range,\n });\n\n return true;\n}\n\nexport function withAutoFormatting<T extends SlateEditor>(editor: T): T {\n const { insertText } = editor;\n\n editor.insertText = (text, options) => {\n if (!editor.selection || !SlateRange.isCollapsed(editor.selection)) {\n return insertText(text, options);\n }\n\n let shouldInsertText = true;\n\n for (const formatter of formatters) {\n if (formatter.type === \"mark\") {\n if (formatMark(editor, text, formatter)) {\n shouldInsertText = false;\n }\n }\n }\n\n if (shouldInsertText) {\n insertText(text, options);\n }\n };\n\n return editor;\n}\n"],"names":["SlateRange","SlateEditor","SlateTransforms"],"mappings":"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"}
|