@thangph2146/lexical-editor 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor-x/editor.cjs +33121 -0
- package/dist/editor-x/editor.cjs.map +1 -0
- package/dist/editor-x/editor.css +2854 -0
- package/dist/editor-x/editor.css.map +1 -0
- package/dist/editor-x/editor.d.cts +12 -0
- package/dist/editor-x/editor.d.ts +12 -0
- package/dist/editor-x/editor.js +33095 -0
- package/dist/editor-x/editor.js.map +1 -0
- package/dist/index.cjs +33210 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +2854 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +33183 -0
- package/dist/index.js.map +1 -0
- package/package.json +84 -0
- package/src/components/lexical-editor.tsx +123 -0
- package/src/context/editor-container-context.tsx +29 -0
- package/src/context/priority-image-context.tsx +7 -0
- package/src/context/toolbar-context.tsx +60 -0
- package/src/context/uploads-context.tsx +53 -0
- package/src/editor-hooks/use-debounce.ts +80 -0
- package/src/editor-hooks/use-modal.tsx +64 -0
- package/src/editor-hooks/use-report.ts +57 -0
- package/src/editor-hooks/use-update-toolbar.ts +41 -0
- package/src/editor-ui/broken-image.tsx +18 -0
- package/src/editor-ui/caption-composer.tsx +45 -0
- package/src/editor-ui/code-button.tsx +75 -0
- package/src/editor-ui/color-picker.tsx +2010 -0
- package/src/editor-ui/content-editable.tsx +37 -0
- package/src/editor-ui/hooks/use-image-caption-controls.ts +118 -0
- package/src/editor-ui/hooks/use-image-node-interactions.ts +245 -0
- package/src/editor-ui/hooks/use-responsive-image-dimensions.ts +202 -0
- package/src/editor-ui/image-component.tsx +321 -0
- package/src/editor-ui/image-placeholder.tsx +57 -0
- package/src/editor-ui/image-resizer.tsx +499 -0
- package/src/editor-ui/image-sizing.ts +120 -0
- package/src/editor-ui/lazy-image.tsx +136 -0
- package/src/editor-x/editor.tsx +117 -0
- package/src/editor-x/nodes.ts +79 -0
- package/src/editor-x/plugins.tsx +380 -0
- package/src/hooks/use-click-outside.ts +27 -0
- package/src/hooks/use-element-size.ts +54 -0
- package/src/hooks/use-header-height.ts +95 -0
- package/src/hooks/use-isomorphic-layout-effect.ts +4 -0
- package/src/index.ts +4 -0
- package/src/lib/logger.ts +6 -0
- package/src/lib/utils.ts +19 -0
- package/src/nodes/autocomplete-node.tsx +94 -0
- package/src/nodes/embeds/tweet-node.tsx +224 -0
- package/src/nodes/embeds/youtube-node.tsx +519 -0
- package/src/nodes/emoji-node.tsx +83 -0
- package/src/nodes/image-node.tsx +328 -0
- package/src/nodes/keyword-node.tsx +58 -0
- package/src/nodes/layout-container-node.tsx +128 -0
- package/src/nodes/layout-item-node.tsx +118 -0
- package/src/nodes/list-with-color-node.tsx +160 -0
- package/src/nodes/mention-node.ts +122 -0
- package/src/plugins/actions/actions-plugin.tsx +3 -0
- package/src/plugins/actions/character-limit-plugin.tsx +27 -0
- package/src/plugins/actions/clear-editor-plugin.tsx +70 -0
- package/src/plugins/actions/counter-character-plugin.tsx +80 -0
- package/src/plugins/actions/edit-mode-toggle-plugin.tsx +49 -0
- package/src/plugins/actions/import-export-plugin.tsx +61 -0
- package/src/plugins/actions/markdown-toggle-plugin.tsx +78 -0
- package/src/plugins/actions/max-length-plugin.tsx +59 -0
- package/src/plugins/actions/share-content-plugin.tsx +72 -0
- package/src/plugins/actions/speech-to-text-plugin.tsx +159 -0
- package/src/plugins/actions/tree-view-plugin.tsx +63 -0
- package/src/plugins/align-plugin.tsx +86 -0
- package/src/plugins/auto-link-plugin.tsx +34 -0
- package/src/plugins/autocomplete-plugin.tsx +2574 -0
- package/src/plugins/code-action-menu-plugin.tsx +240 -0
- package/src/plugins/code-highlight-plugin.tsx +22 -0
- package/src/plugins/component-picker-menu-plugin.tsx +427 -0
- package/src/plugins/context-menu-plugin.tsx +311 -0
- package/src/plugins/drag-drop-paste-plugin.tsx +52 -0
- package/src/plugins/draggable-block-plugin.tsx +50 -0
- package/src/plugins/embeds/auto-embed-plugin.tsx +324 -0
- package/src/plugins/embeds/twitter-plugin.tsx +45 -0
- package/src/plugins/embeds/youtube-plugin.tsx +84 -0
- package/src/plugins/emoji-picker-plugin.tsx +206 -0
- package/src/plugins/emojis-plugin.tsx +84 -0
- package/src/plugins/floating-link-editor-plugin.tsx +791 -0
- package/src/plugins/floating-text-format-plugin.tsx +710 -0
- package/src/plugins/images-plugin.tsx +671 -0
- package/src/plugins/keywords-plugin.tsx +59 -0
- package/src/plugins/layout-plugin.tsx +658 -0
- package/src/plugins/link-plugin.tsx +18 -0
- package/src/plugins/list-color-plugin.tsx +178 -0
- package/src/plugins/list-max-indent-level-plugin.tsx +85 -0
- package/src/plugins/mentions-plugin.tsx +714 -0
- package/src/plugins/picker/alignment-picker-plugin.tsx +40 -0
- package/src/plugins/picker/bulleted-list-picker-plugin.tsx +14 -0
- package/src/plugins/picker/check-list-picker-plugin.tsx +14 -0
- package/src/plugins/picker/code-picker-plugin.tsx +30 -0
- package/src/plugins/picker/columns-layout-picker-plugin.tsx +16 -0
- package/src/plugins/picker/component-picker-option.tsx +47 -0
- package/src/plugins/picker/divider-picker-plugin.tsx +14 -0
- package/src/plugins/picker/embeds-picker-plugin.tsx +24 -0
- package/src/plugins/picker/heading-picker-plugin.tsx +32 -0
- package/src/plugins/picker/image-picker-plugin.tsx +16 -0
- package/src/plugins/picker/numbered-list-picker-plugin.tsx +14 -0
- package/src/plugins/picker/paragraph-picker-plugin.tsx +20 -0
- package/src/plugins/picker/quote-picker-plugin.tsx +21 -0
- package/src/plugins/picker/table-picker-plugin.tsx +56 -0
- package/src/plugins/tab-focus-plugin.tsx +66 -0
- package/src/plugins/table-column-resizer-plugin.tsx +309 -0
- package/src/plugins/table-plugin.tsx +299 -0
- package/src/plugins/toolbar/block-format/block-format-data.tsx +69 -0
- package/src/plugins/toolbar/block-format/format-bulleted-list.tsx +40 -0
- package/src/plugins/toolbar/block-format/format-check-list.tsx +40 -0
- package/src/plugins/toolbar/block-format/format-code-block.tsx +45 -0
- package/src/plugins/toolbar/block-format/format-heading.tsx +34 -0
- package/src/plugins/toolbar/block-format/format-list-with-marker.tsx +74 -0
- package/src/plugins/toolbar/block-format/format-numbered-list.tsx +40 -0
- package/src/plugins/toolbar/block-format/format-paragraph.tsx +31 -0
- package/src/plugins/toolbar/block-format/format-quote.tsx +32 -0
- package/src/plugins/toolbar/block-format-toolbar-plugin.tsx +117 -0
- package/src/plugins/toolbar/block-insert/insert-columns-layout.tsx +32 -0
- package/src/plugins/toolbar/block-insert/insert-embeds.tsx +31 -0
- package/src/plugins/toolbar/block-insert/insert-horizontal-rule.tsx +30 -0
- package/src/plugins/toolbar/block-insert/insert-image.tsx +32 -0
- package/src/plugins/toolbar/block-insert/insert-table.tsx +32 -0
- package/src/plugins/toolbar/block-insert-plugin.tsx +30 -0
- package/src/plugins/toolbar/clear-formatting-toolbar-plugin.tsx +92 -0
- package/src/plugins/toolbar/code-language-toolbar-plugin.tsx +121 -0
- package/src/plugins/toolbar/element-format-toolbar-plugin.tsx +251 -0
- package/src/plugins/toolbar/font-background-toolbar-plugin.tsx +179 -0
- package/src/plugins/toolbar/font-color-toolbar-plugin.tsx +101 -0
- package/src/plugins/toolbar/font-family-toolbar-plugin.tsx +91 -0
- package/src/plugins/toolbar/font-format-toolbar-plugin.tsx +85 -0
- package/src/plugins/toolbar/font-size-toolbar-plugin.tsx +177 -0
- package/src/plugins/toolbar/history-toolbar-plugin.tsx +87 -0
- package/src/plugins/toolbar/link-toolbar-plugin.tsx +90 -0
- package/src/plugins/toolbar/subsuper-toolbar-plugin.tsx +69 -0
- package/src/plugins/toolbar/toolbar-plugin.tsx +66 -0
- package/src/plugins/typing-pref-plugin.tsx +118 -0
- package/src/shared/can-use-dom.ts +4 -0
- package/src/shared/environment.ts +47 -0
- package/src/shared/invariant.ts +16 -0
- package/src/shared/use-layout-effect.ts +12 -0
- package/src/themes/_mixins.scss +107 -0
- package/src/themes/_variables.scss +33 -0
- package/src/themes/editor-theme.scss +622 -0
- package/src/themes/editor-theme.ts +118 -0
- package/src/themes/plugins.scss +1180 -0
- package/src/themes/ui-components.scss +936 -0
- package/src/transformers/markdown-emoji-transformer.ts +20 -0
- package/src/transformers/markdown-hr-transformer.ts +28 -0
- package/src/transformers/markdown-image-transformer.ts +31 -0
- package/src/transformers/markdown-list-transformer.ts +51 -0
- package/src/transformers/markdown-table-transformer.ts +200 -0
- package/src/transformers/markdown-tweet-transformer.ts +26 -0
- package/src/ui/button-group.tsx +10 -0
- package/src/ui/button.tsx +29 -0
- package/src/ui/collapsible.tsx +67 -0
- package/src/ui/command.tsx +48 -0
- package/src/ui/dialog.tsx +146 -0
- package/src/ui/flex.tsx +38 -0
- package/src/ui/input.tsx +20 -0
- package/src/ui/label.tsx +20 -0
- package/src/ui/popover.tsx +128 -0
- package/src/ui/scroll-area.tsx +17 -0
- package/src/ui/select.tsx +171 -0
- package/src/ui/separator.tsx +20 -0
- package/src/ui/slider.tsx +14 -0
- package/src/ui/slot.tsx +3 -0
- package/src/ui/tabs.tsx +87 -0
- package/src/ui/toggle-group.tsx +109 -0
- package/src/ui/toggle.tsx +28 -0
- package/src/ui/tooltip.tsx +28 -0
- package/src/ui/typography.tsx +44 -0
- package/src/utils/doc-serialization.ts +68 -0
- package/src/utils/emoji-list.ts +16604 -0
- package/src/utils/get-dom-range-rect.ts +20 -0
- package/src/utils/get-selected-node.ts +20 -0
- package/src/utils/is-mobile-width.ts +0 -0
- package/src/utils/set-floating-elem-position-for-link-editor.ts +39 -0
- package/src/utils/set-floating-elem-position.ts +44 -0
- package/src/utils/swipe.ts +119 -0
- package/src/utils/url.ts +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/ui/tooltip.tsx","../src/lib/logger.ts","../src/hooks/use-isomorphic-layout-effect.ts","../src/hooks/use-element-size.ts","../src/context/editor-container-context.tsx","../src/utils/swipe.ts","../src/plugins/autocomplete-plugin.tsx","../src/nodes/autocomplete-node.tsx","../src/nodes/embeds/tweet-node.tsx","../src/ui/button.tsx","../src/editor-ui/image-sizing.ts","../src/ui/typography.tsx","../src/editor-ui/image-resizer.tsx","../src/nodes/embeds/youtube-node.tsx","../src/nodes/emoji-node.tsx","../src/ui/dialog.tsx","../src/shared/can-use-dom.ts","../src/ui/input.tsx","../src/ui/label.tsx","../src/ui/tabs.tsx","../src/context/uploads-context.tsx","../src/ui/collapsible.tsx","../src/plugins/images-plugin.tsx","../src/context/priority-image-context.tsx","../src/editor-ui/hooks/use-responsive-image-dimensions.ts","../src/editor-ui/lazy-image.tsx","../src/editor-ui/broken-image.tsx","../src/editor-ui/image-placeholder.tsx","../src/editor-ui/content-editable.tsx","../src/editor-ui/caption-composer.tsx","../src/editor-ui/hooks/use-image-caption-controls.ts","../src/editor-ui/hooks/use-image-node-interactions.ts","../src/editor-ui/image-component.tsx","../src/nodes/image-node.tsx","../src/nodes/keyword-node.tsx","../src/nodes/layout-container-node.tsx","../src/nodes/layout-item-node.tsx","../src/nodes/list-with-color-node.tsx","../src/nodes/mention-node.ts","../src/editor-x/nodes.ts","../src/plugins/actions/actions-plugin.tsx","../src/plugins/align-plugin.tsx","../src/plugins/actions/clear-editor-plugin.tsx","../src/ui/separator.tsx","../src/ui/flex.tsx","../src/plugins/actions/counter-character-plugin.tsx","../src/plugins/actions/edit-mode-toggle-plugin.tsx","../src/plugins/actions/import-export-plugin.tsx","../src/plugins/actions/markdown-toggle-plugin.tsx","../src/utils/doc-serialization.ts","../src/plugins/actions/share-content-plugin.tsx","../src/editor-hooks/use-report.ts","../src/plugins/actions/speech-to-text-plugin.tsx","../src/ui/scroll-area.tsx","../src/plugins/actions/tree-view-plugin.tsx","../src/plugins/auto-link-plugin.tsx","../src/editor-hooks/use-debounce.ts","../src/editor-ui/code-button.tsx","../src/ui/select.tsx","../src/plugins/code-action-menu-plugin.tsx","../src/plugins/code-highlight-plugin.tsx","../src/editor-hooks/use-modal.tsx","../src/ui/command.tsx","../src/plugins/component-picker-menu-plugin.tsx","../src/ui/slot.tsx","../src/ui/popover.tsx","../src/editor-ui/color-picker.tsx","../src/plugins/layout-plugin.tsx","../src/plugins/list-color-plugin.tsx","../src/plugins/context-menu-plugin.tsx","../src/plugins/drag-drop-paste-plugin.tsx","../src/plugins/draggable-block-plugin.tsx","../src/plugins/embeds/twitter-plugin.tsx","../src/plugins/embeds/youtube-plugin.tsx","../src/plugins/embeds/auto-embed-plugin.tsx","../src/utils/emoji-list.ts","../src/plugins/emoji-picker-plugin.tsx","../src/plugins/emojis-plugin.tsx","../src/utils/get-selected-node.ts","../src/utils/set-floating-elem-position-for-link-editor.ts","../src/utils/url.ts","../src/plugins/floating-link-editor-plugin.tsx","../src/utils/get-dom-range-rect.ts","../src/utils/set-floating-elem-position.ts","../src/ui/toggle-group.tsx","../src/plugins/floating-text-format-plugin.tsx","../src/plugins/keywords-plugin.tsx","../src/plugins/link-plugin.tsx","../src/plugins/list-max-indent-level-plugin.tsx","../src/plugins/mentions-plugin.tsx","../src/plugins/picker/component-picker-option.tsx","../src/plugins/picker/alignment-picker-plugin.tsx","../src/plugins/picker/bulleted-list-picker-plugin.tsx","../src/plugins/picker/check-list-picker-plugin.tsx","../src/plugins/picker/code-picker-plugin.tsx","../src/plugins/picker/columns-layout-picker-plugin.tsx","../src/plugins/picker/divider-picker-plugin.tsx","../src/plugins/picker/embeds-picker-plugin.tsx","../src/plugins/picker/heading-picker-plugin.tsx","../src/plugins/picker/image-picker-plugin.tsx","../src/plugins/picker/numbered-list-picker-plugin.tsx","../src/plugins/picker/paragraph-picker-plugin.tsx","../src/plugins/picker/quote-picker-plugin.tsx","../src/shared/invariant.ts","../src/plugins/table-plugin.tsx","../src/plugins/picker/table-picker-plugin.tsx","../src/plugins/tab-focus-plugin.tsx","../src/plugins/table-column-resizer-plugin.tsx","../src/context/toolbar-context.tsx","../src/editor-hooks/use-update-toolbar.ts","../src/plugins/toolbar/block-format/block-format-data.tsx","../src/plugins/toolbar/block-format-toolbar-plugin.tsx","../src/plugins/toolbar/block-format/format-bulleted-list.tsx","../src/plugins/toolbar/block-format/format-check-list.tsx","../src/plugins/toolbar/block-format/format-code-block.tsx","../src/plugins/toolbar/block-format/format-heading.tsx","../src/plugins/toolbar/block-format/format-list-with-marker.tsx","../src/plugins/toolbar/block-format/format-numbered-list.tsx","../src/plugins/toolbar/block-format/format-paragraph.tsx","../src/plugins/toolbar/block-format/format-quote.tsx","../src/plugins/toolbar/block-insert-plugin.tsx","../src/plugins/toolbar/block-insert/insert-columns-layout.tsx","../src/plugins/toolbar/block-insert/insert-embeds.tsx","../src/plugins/toolbar/block-insert/insert-horizontal-rule.tsx","../src/plugins/toolbar/block-insert/insert-image.tsx","../src/plugins/toolbar/block-insert/insert-table.tsx","../src/plugins/toolbar/clear-formatting-toolbar-plugin.tsx","../src/plugins/toolbar/code-language-toolbar-plugin.tsx","../src/plugins/toolbar/element-format-toolbar-plugin.tsx","../src/plugins/toolbar/font-background-toolbar-plugin.tsx","../src/plugins/toolbar/font-color-toolbar-plugin.tsx","../src/plugins/toolbar/font-family-toolbar-plugin.tsx","../src/plugins/toolbar/font-format-toolbar-plugin.tsx","../src/ui/button-group.tsx","../src/plugins/toolbar/font-size-toolbar-plugin.tsx","../src/plugins/toolbar/history-toolbar-plugin.tsx","../src/ui/toggle.tsx","../src/plugins/toolbar/link-toolbar-plugin.tsx","../src/plugins/toolbar/subsuper-toolbar-plugin.tsx","../src/hooks/use-header-height.ts","../src/plugins/toolbar/toolbar-plugin.tsx","../src/plugins/typing-pref-plugin.tsx","../src/transformers/markdown-emoji-transformer.ts","../src/transformers/markdown-hr-transformer.ts","../src/transformers/markdown-image-transformer.ts","../src/transformers/markdown-table-transformer.ts","../src/transformers/markdown-tweet-transformer.ts","../src/transformers/markdown-list-transformer.ts","../src/editor-x/plugins.tsx","../src/themes/editor-theme.ts","../src/editor-x/editor.tsx","../src/components/lexical-editor.tsx"],"names":["React","jsx","useCallback","useEffect","uuid","useState","React2","React3","Fragment","useRef","React4","jsxs","React5","$getNodeByKey","mergeRegister","COMMAND_PRIORITY_LOW","BlockWithAlignableContents","DecoratorBlockNode","TextNode","React6","React7","React8","React9","useContext","createContext","React11","React12","useLexicalComposerContext","$setSelection","$getSelection","nodes","Image","placeholder","LexicalContentEditable","useLexicalNodeSelection","$isNodeSelection","$isRangeSelection","CLICK_COMMAND","DRAGSTART_COMMAND","createCommand","useLexicalEditable","$getRoot","$applyNodeReplacement","ImageComponent","React13","Suspense","ElementNode","addClassNamesToElement","Klass","ParagraphNode","ListNode","FORMAT_ELEMENT_COMMAND","COMMAND_PRIORITY_EDITOR","React14","React15","$createTextNode","React16","LexicalAutoLinkPlugin","$isCodeNode","React17","createPortal","$getNearestNodeFromDOMNode","CodeNode","useMemo","React18","editor","RadixSlot","React19","format","ColorPickerRoot","$createParagraphNode","KEY_ARROW_RIGHT_COMMAND","React21","$findMatchingParent","$isListNode","Trash2","$insertNodeToNearestRoot","debounce","emojis","useBasicTypeaheadTriggerMatch","LexicalTypeaheadMenuPlugin","dynamic","$isAtNodeEnd","$isLinkNode","SELECTION_CHANGE_COMMAND","KEY_ESCAPE_COMMAND","COMMAND_PRIORITY_HIGH","$wrapNodeInElement","TOGGLE_LINK_COMMAND","VERTICAL_GAP","HORIZONTAL_OFFSET","React22","$getSelectionStyleValueForProperty","$isTextNode","LexicalLinkPlugin","$isElementNode","COMMAND_PRIORITY_CRITICAL","MenuOption","CodeIcon","$createCodeNode","$setBlocksType","$insertNodes","TableNode","$isTableCellNode","cell","TextIcon","Heading1Icon","Heading2Icon","Heading3Icon","ListOrderedIcon","ListIcon","ListTodoIcon","QuoteIcon","$isRootOrShadowRoot","INSERT_UNORDERED_LIST_COMMAND","INSERT_CHECK_LIST_COMMAND","BLOCK_FORMAT_VALUE","$createHeadingNode","INSERT_ORDERED_LIST_COMMAND","$getNearestNodeOfType","$createQuoteNode","Columns3Icon","INSERT_HORIZONTAL_RULE_COMMAND","ImageIcon","TableIcon","$isTableSelection","$isHeadingNode","getCodeLanguageOptions","CODE_LANGUAGE_FRIENDLY_NAME_MAP","getLanguageFriendlyName","CODE_LANGUAGE_OPTIONS","node","INDENT_CONTENT_COMMAND","AlignLeftIcon","AlignCenterIcon","AlignRightIcon","AlignJustifyIcon","$patchStyleText","PaintBucketIcon","BaselineIcon","FORMAT_TEXT_COMMAND","BoldIcon","ItalicIcon","UnderlineIcon","StrikethroughIcon","UNDO_COMMAND","REDO_COMMAND","React23","LinkIcon","SubscriptIcon","SuperscriptIcon","beforeInputHandler","keyDownHandler","pasteHandler","cutHandler","HorizontalRuleNode","TableRowNode","TableCellNode","$convertToMarkdownString","table","rows","$isParagraphNode","previousSibling","$convertFromMarkdownString","ListItemNode","$isListItemNode","RichTextPlugin","LexicalErrorBoundary","HistoryPlugin","CHECK_LIST","ELEMENT_TRANSFORMERS","MULTILINE_ELEMENT_TRANSFORMERS","TEXT_FORMAT_TRANSFORMERS","TEXT_MATCH_TRANSFORMERS","Plugins","editorState","LexicalEditor"],"mappings":"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,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,oBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,YAA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","file":"index.js","sourcesContent":["export function cn(...inputs: (string | undefined | null | boolean | Record<string, boolean>)[]): string {\n const classes: string[] = []\n\n for (const input of inputs) {\n if (!input) continue\n\n if (typeof input === \"string\") {\n classes.push(input)\n } else if (typeof input === \"object\") {\n for (const key in input) {\n if (input[key]) {\n classes.push(key)\n }\n }\n }\n }\n\n return classes.join(\" \")\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const TooltipProvider = ({ children }: { children: React.ReactNode }) => <>{children}</>\n\nexport const Tooltip = ({ children }: { children: React.ReactNode, disableHoverableContent?: boolean }) => <div className=\"editor-tooltip-group\">{children}</div>\n\nexport const TooltipTrigger = ({ asChild, children, ...props }: React.HTMLAttributes<HTMLElement> & { asChild?: boolean, children: React.ReactNode }) => {\n const child = asChild ? React.Children.only(children) : children\n if (!React.isValidElement(child)) return null\n return React.cloneElement(child as React.ReactElement<any>, {\n ...props,\n className: cn((child as React.ReactElement<any>).props.className, \"editor-tooltip-trigger\")\n })\n}\n\nexport const TooltipContent = ({ children, className, side = \"top\", ...props }: React.HTMLAttributes<HTMLDivElement> & { side?: \"top\" | \"bottom\" | \"left\" | \"right\" }) => (\n <div\n className={cn(\n \"editor-tooltip-content\",\n `editor-tooltip-content--${side}`,\n className\n )}\n {...props}\n >\n {children}\n </div>\n)\n","export const logger = {\n debug: console.debug,\n info: console.info,\n warn: console.warn,\n error: console.error,\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import { useCallback, useState } from \"react\"\nimport { useIsomorphicLayoutEffect } from \"./use-isomorphic-layout-effect\"\n\ninterface Size {\n width: number\n height: number\n}\n\nexport function useElementSize<T extends HTMLElement = HTMLDivElement>() {\n // Mutable values like 'ref.current' aren't valid dependencies\n // instead we manage the current node in state\n const [node, setNode] = useState<T | null>(null)\n const [size, setSize] = useState<Size>({\n width: 0,\n height: 0,\n })\n\n // Prevent too many renders with useCallback\n const handleSize = useCallback(() => {\n if (!node) return\n \n setSize({\n width: node.offsetWidth || 0,\n height: node.offsetHeight || 0,\n })\n }, [node])\n\n useIsomorphicLayoutEffect(() => {\n if (!node) {\n return\n }\n\n handleSize()\n \n // Use ResizeObserver for better accuracy and performance\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n handleSize()\n })\n \n observer.observe(node)\n \n return () => {\n observer.disconnect()\n }\n }\n\n // Fallback to resize event\n window.addEventListener(\"resize\", handleSize)\n return () => window.removeEventListener(\"resize\", handleSize)\n }, [node, handleSize])\n\n return { ref: setNode, ...size }\n}\n","\"use client\"\n\nimport { createContext, useContext, type ReactNode } from \"react\"\n\ntype EditorContainerContextValue = {\n maxWidth?: number\n}\n\nconst EditorContainerContext = createContext<EditorContainerContextValue | null>(\n null\n)\n\nexport function EditorContainerProvider({\n value,\n children,\n}: {\n value: EditorContainerContextValue\n children: ReactNode\n}) {\n return (\n <EditorContainerContext.Provider value={value}>\n {children}\n </EditorContainerContext.Provider>\n )\n}\n\nexport function useEditorContainer() {\n return useContext(EditorContainerContext)\n}\n","type Force = [number, number]\ntype Listener = (force: Force, e: TouchEvent) => void\ntype ElementValues = {\n start: null | Force\n listeners: Set<Listener>\n handleTouchstart: (e: TouchEvent) => void\n handleTouchend: (e: TouchEvent) => void\n}\n\nconst elements = new WeakMap<HTMLElement, ElementValues>()\n\nfunction readTouch(e: TouchEvent): [number, number] | null {\n const touch = e.changedTouches[0]\n if (touch === undefined) {\n return null\n }\n return [touch.clientX, touch.clientY]\n}\n\nfunction addListener(element: HTMLElement, cb: Listener): () => void {\n let elementValues = elements.get(element)\n if (elementValues === undefined) {\n const listeners = new Set<Listener>()\n const handleTouchstart = (e: TouchEvent) => {\n if (elementValues !== undefined) {\n elementValues.start = readTouch(e)\n }\n }\n const handleTouchend = (e: TouchEvent) => {\n if (elementValues === undefined) {\n return\n }\n const start = elementValues.start\n if (start === null) {\n return\n }\n const end = readTouch(e)\n for (const listener of Array.from(listeners)) {\n if (end !== null) {\n listener([end[0] - start[0], end[1] - start[1]], e)\n }\n }\n }\n element.addEventListener(\"touchstart\", handleTouchstart, { passive: true })\n element.addEventListener(\"touchend\", handleTouchend, { passive: true })\n\n elementValues = {\n handleTouchend,\n handleTouchstart,\n listeners,\n start: null,\n }\n elements.set(element, elementValues)\n }\n elementValues.listeners.add(cb)\n return () => deleteListener(element, cb)\n}\n\nfunction deleteListener(element: HTMLElement, cb: Listener): void {\n const elementValues = elements.get(element)\n if (elementValues === undefined) {\n return\n }\n const listeners = elementValues.listeners\n listeners.delete(cb)\n if (listeners.size === 0) {\n elements.delete(element)\n element.removeEventListener(\"touchstart\", elementValues.handleTouchstart)\n element.removeEventListener(\"touchend\", elementValues.handleTouchend)\n }\n}\n\nexport function addSwipeLeftListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x < 0 && -x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeRightListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x > 0 && x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeUpListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y < 0 && -y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeDownListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void\n) {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y > 0 && y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport type { JSX } from \"react\"\nimport { useCallback, useEffect } from \"react\"\nimport { logger } from \"../lib/logger\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $getSelectionStyleValueForProperty,\n $isAtNodeEnd,\n} from \"@lexical/selection\"\nimport { mergeRegister } from \"@lexical/utils\"\nimport type { BaseSelection, NodeKey, TextNode } from \"lexical\"\nimport {\n $addUpdateTag,\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n $setSelection,\n COMMAND_PRIORITY_LOW,\n HISTORY_MERGE_TAG,\n KEY_ARROW_RIGHT_COMMAND,\n KEY_TAB_COMMAND,\n} from \"lexical\"\n\nimport {\n $createAutocompleteNode,\n AutocompleteNode,\n} from \"../nodes/autocomplete-node\"\nimport { addSwipeRightListener } from \"../utils/swipe\"\n\nconst HISTORY_MERGE = { tag: HISTORY_MERGE_TAG }\n\ndeclare global {\n interface Navigator {\n userAgentData?: {\n mobile: boolean\n }\n }\n}\n\ntype SearchPromise = {\n dismiss: () => void\n promise: Promise<null | string>\n}\n\nexport const uuid = Math.random()\n .toString(36)\n .replace(/[^a-z]+/g, \"\")\n .substring(0, 5)\n\n// TODO lookup should be custom\nfunction $search(selection: null | BaseSelection): [boolean, string] {\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return [false, \"\"]\n }\n const node = selection.getNodes()[0]\n const anchor = selection.anchor\n // Check siblings?\n if (!$isTextNode(node) || !node.isSimpleText() || !$isAtNodeEnd(anchor)) {\n return [false, \"\"]\n }\n const word = []\n const text = node.getTextContent()\n let i = node.getTextContentSize()\n let c\n while (i-- && i >= 0 && (c = text[i]) !== \" \") {\n word.push(c)\n }\n if (word.length === 0) {\n return [false, \"\"]\n }\n return [true, word.reverse().join(\"\")]\n}\n\n// TODO query should be custom\nfunction useQuery(): (searchText: string) => SearchPromise {\n return useCallback((searchText: string) => {\n const server = new AutocompleteServer()\n const response = server.query(searchText)\n return response\n }, [])\n}\n\nfunction formatSuggestionText(suggestion: string): string {\n const userAgentData = window.navigator.userAgentData\n const isMobile =\n userAgentData !== undefined\n ? userAgentData.mobile\n : window.innerWidth <= 800 && window.innerHeight <= 600\n\n return `${suggestion} ${isMobile ? \"(SWIPE \\u2B95)\" : \"(TAB)\"}`\n}\n\nexport function AutocompletePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const query = useQuery()\n\n useEffect(() => {\n let autocompleteNodeKey: null | NodeKey = null\n let lastMatch: null | string = null\n let lastSuggestion: null | string = null\n let searchPromise: null | SearchPromise = null\n let prevNodeFormat: number = 0\n function $clearSuggestion() {\n const autocompleteNode =\n autocompleteNodeKey !== null ? $getNodeByKey(autocompleteNodeKey) : null\n if (autocompleteNode !== null && autocompleteNode.isAttached()) {\n autocompleteNode.remove()\n autocompleteNodeKey = null\n }\n if (searchPromise !== null) {\n searchPromise.dismiss()\n searchPromise = null\n }\n lastMatch = null\n lastSuggestion = null\n prevNodeFormat = 0\n }\n function updateAsyncSuggestion(\n refSearchPromise: SearchPromise,\n newSuggestion: null | string\n ) {\n if (searchPromise !== refSearchPromise || newSuggestion === null) {\n // Outdated or no suggestion\n return\n }\n editor.update(() => {\n const selection = $getSelection()\n const [hasMatch, match] = $search(selection)\n if (!hasMatch || match !== lastMatch || !$isRangeSelection(selection)) {\n // Outdated\n return\n }\n const fontSize = $getSelectionStyleValueForProperty(\n selection,\n \"font-size\",\n \"16px\"\n )\n\n const selectionCopy = selection.clone()\n const prevNode = selection.getNodes()[0] as TextNode\n prevNodeFormat = prevNode.getFormat()\n const node = $createAutocompleteNode(\n formatSuggestionText(newSuggestion),\n uuid\n )\n .setFormat(prevNodeFormat)\n .setStyle(`font-size: ${fontSize}`)\n autocompleteNodeKey = node.getKey()\n selection.insertNodes([node])\n $setSelection(selectionCopy)\n lastSuggestion = newSuggestion\n }, HISTORY_MERGE)\n }\n\n function $handleAutocompleteNodeTransform(node: AutocompleteNode) {\n const key = node.getKey()\n if (node.__uuid === uuid && key !== autocompleteNodeKey) {\n // Max one Autocomplete node per session\n $clearSuggestion()\n }\n }\n function handleUpdate() {\n editor.update(() => {\n const selection = $getSelection()\n const [hasMatch, match] = $search(selection)\n if (!hasMatch) {\n $clearSuggestion()\n return\n }\n if (match === lastMatch) {\n return\n }\n $clearSuggestion()\n searchPromise = query(match)\n searchPromise.promise\n .then((newSuggestion) => {\n if (searchPromise !== null) {\n updateAsyncSuggestion(searchPromise, newSuggestion)\n }\n })\n .catch((e) => {\n if (e !== \"Dismissed\") {\n logger.error(\"[AutocompletePlugin] Error:\", e)\n }\n })\n lastMatch = match\n }, HISTORY_MERGE)\n }\n function $handleAutocompleteIntent(): boolean {\n if (lastSuggestion === null || autocompleteNodeKey === null) {\n return false\n }\n const autocompleteNode = $getNodeByKey(autocompleteNodeKey)\n if (autocompleteNode === null) {\n return false\n }\n\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n // Outdated\n return false\n }\n const fontSize = $getSelectionStyleValueForProperty(\n selection,\n \"font-size\",\n \"16px\"\n )\n\n const textNode = $createTextNode(lastSuggestion)\n .setFormat(prevNodeFormat)\n .setStyle(`font-size: ${fontSize}`)\n autocompleteNode.replace(textNode)\n textNode.selectNext()\n $clearSuggestion()\n return true\n }\n function $handleKeypressCommand(e: Event) {\n if ($handleAutocompleteIntent()) {\n e.preventDefault()\n return true\n }\n return false\n }\n function handleSwipeRight(_force: number, e: TouchEvent) {\n editor.update(() => {\n if ($handleAutocompleteIntent()) {\n e.preventDefault()\n } else {\n $addUpdateTag(HISTORY_MERGE.tag)\n }\n })\n }\n function unmountSuggestion() {\n editor.update(() => {\n $clearSuggestion()\n }, HISTORY_MERGE)\n }\n\n const rootElem = editor.getRootElement()\n\n return mergeRegister(\n editor.registerNodeTransform(\n AutocompleteNode,\n $handleAutocompleteNodeTransform\n ),\n editor.registerUpdateListener(handleUpdate),\n editor.registerCommand(\n KEY_TAB_COMMAND,\n $handleKeypressCommand,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_RIGHT_COMMAND,\n $handleKeypressCommand,\n COMMAND_PRIORITY_LOW\n ),\n ...(rootElem !== null\n ? [addSwipeRightListener(rootElem, handleSwipeRight)]\n : []),\n unmountSuggestion\n )\n }, [editor, query])\n\n return null\n}\n\n/*\n * Simulate an asynchronous autocomplete server (typical in more common use cases like GMail where\n * the data is not static).\n */\nclass AutocompleteServer {\n DATABASE = DICTIONARY\n LATENCY = 200\n\n query = (searchText: string): SearchPromise => {\n let isDismissed = false\n\n const dismiss = () => {\n isDismissed = true\n }\n const promise: Promise<null | string> = new Promise((resolve, reject) => {\n setTimeout(() => {\n if (isDismissed) {\n // TODO cache result\n return reject(\"Dismissed\")\n }\n const searchTextLength = searchText.length\n if (searchText === \"\" || searchTextLength < 4) {\n return resolve(null)\n }\n const char0 = searchText.charCodeAt(0)\n const isCapitalized = char0 >= 65 && char0 <= 90\n const caseInsensitiveSearchText = isCapitalized\n ? String.fromCharCode(char0 + 32) + searchText.substring(1)\n : searchText\n const match = this.DATABASE.find(\n (dictionaryWord) =>\n dictionaryWord.startsWith(caseInsensitiveSearchText) ?? null\n )\n if (match === undefined) {\n return resolve(null)\n }\n const matchCapitalized = isCapitalized\n ? String.fromCharCode(match.charCodeAt(0) - 32) + match.substring(1)\n : match\n const autocompleteChunk = matchCapitalized.substring(searchTextLength)\n if (autocompleteChunk === \"\") {\n return resolve(null)\n }\n return resolve(autocompleteChunk)\n }, this.LATENCY)\n })\n\n return {\n dismiss,\n promise,\n }\n }\n}\n\n// https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english-usa-no-swears-long.txt\nconst DICTIONARY = [\n \"information\",\n \"available\",\n \"copyright\",\n \"university\",\n \"management\",\n \"international\",\n \"development\",\n \"education\",\n \"community\",\n \"technology\",\n \"following\",\n \"resources\",\n \"including\",\n \"directory\",\n \"government\",\n \"department\",\n \"description\",\n \"insurance\",\n \"different\",\n \"categories\",\n \"conditions\",\n \"accessories\",\n \"september\",\n \"questions\",\n \"application\",\n \"financial\",\n \"equipment\",\n \"performance\",\n \"experience\",\n \"important\",\n \"activities\",\n \"additional\",\n \"something\",\n \"professional\",\n \"committee\",\n \"washington\",\n \"california\",\n \"reference\",\n \"companies\",\n \"computers\",\n \"president\",\n \"australia\",\n \"discussion\",\n \"entertainment\",\n \"agreement\",\n \"marketing\",\n \"association\",\n \"collection\",\n \"solutions\",\n \"electronics\",\n \"technical\",\n \"microsoft\",\n \"conference\",\n \"environment\",\n \"statement\",\n \"downloads\",\n \"applications\",\n \"requirements\",\n \"individual\",\n \"subscribe\",\n \"everything\",\n \"production\",\n \"commercial\",\n \"advertising\",\n \"treatment\",\n \"newsletter\",\n \"knowledge\",\n \"currently\",\n \"construction\",\n \"registered\",\n \"protection\",\n \"engineering\",\n \"published\",\n \"corporate\",\n \"customers\",\n \"materials\",\n \"countries\",\n \"standards\",\n \"political\",\n \"advertise\",\n \"environmental\",\n \"availability\",\n \"employment\",\n \"commission\",\n \"administration\",\n \"institute\",\n \"sponsored\",\n \"electronic\",\n \"condition\",\n \"effective\",\n \"organization\",\n \"selection\",\n \"corporation\",\n \"executive\",\n \"necessary\",\n \"according\",\n \"particular\",\n \"facilities\",\n \"opportunities\",\n \"appropriate\",\n \"statistics\",\n \"investment\",\n \"christmas\",\n \"registration\",\n \"furniture\",\n \"wednesday\",\n \"structure\",\n \"distribution\",\n \"industrial\",\n \"potential\",\n \"responsible\",\n \"communications\",\n \"associated\",\n \"foundation\",\n \"documents\",\n \"communication\",\n \"independent\",\n \"operating\",\n \"developed\",\n \"telephone\",\n \"population\",\n \"navigation\",\n \"operations\",\n \"therefore\",\n \"christian\",\n \"understand\",\n \"publications\",\n \"worldwide\",\n \"connection\",\n \"publisher\",\n \"introduction\",\n \"properties\",\n \"accommodation\",\n \"excellent\",\n \"opportunity\",\n \"assessment\",\n \"especially\",\n \"interface\",\n \"operation\",\n \"restaurants\",\n \"beautiful\",\n \"locations\",\n \"significant\",\n \"technologies\",\n \"manufacturer\",\n \"providing\",\n \"authority\",\n \"considered\",\n \"programme\",\n \"enterprise\",\n \"educational\",\n \"employees\",\n \"alternative\",\n \"processing\",\n \"responsibility\",\n \"resolution\",\n \"publication\",\n \"relations\",\n \"photography\",\n \"components\",\n \"assistance\",\n \"completed\",\n \"organizations\",\n \"otherwise\",\n \"transportation\",\n \"disclaimer\",\n \"membership\",\n \"recommended\",\n \"background\",\n \"character\",\n \"maintenance\",\n \"functions\",\n \"trademarks\",\n \"phentermine\",\n \"submitted\",\n \"television\",\n \"interested\",\n \"throughout\",\n \"established\",\n \"programming\",\n \"regarding\",\n \"instructions\",\n \"increased\",\n \"understanding\",\n \"beginning\",\n \"associates\",\n \"instruments\",\n \"businesses\",\n \"specified\",\n \"restaurant\",\n \"procedures\",\n \"relationship\",\n \"traditional\",\n \"sometimes\",\n \"themselves\",\n \"transport\",\n \"interesting\",\n \"evaluation\",\n \"implementation\",\n \"galleries\",\n \"references\",\n \"presented\",\n \"literature\",\n \"respective\",\n \"definition\",\n \"secretary\",\n \"networking\",\n \"australian\",\n \"magazines\",\n \"francisco\",\n \"individuals\",\n \"guidelines\",\n \"installation\",\n \"described\",\n \"attention\",\n \"difference\",\n \"regulations\",\n \"certificate\",\n \"directions\",\n \"documentation\",\n \"automotive\",\n \"successful\",\n \"communities\",\n \"situation\",\n \"publishing\",\n \"emergency\",\n \"developing\",\n \"determine\",\n \"temperature\",\n \"announcements\",\n \"historical\",\n \"ringtones\",\n \"difficult\",\n \"scientific\",\n \"satellite\",\n \"particularly\",\n \"functional\",\n \"monitoring\",\n \"architecture\",\n \"recommend\",\n \"dictionary\",\n \"accounting\",\n \"manufacturing\",\n \"professor\",\n \"generally\",\n \"continued\",\n \"techniques\",\n \"permission\",\n \"generation\",\n \"component\",\n \"guarantee\",\n \"processes\",\n \"interests\",\n \"paperback\",\n \"classifieds\",\n \"supported\",\n \"competition\",\n \"providers\",\n \"characters\",\n \"thousands\",\n \"apartments\",\n \"generated\",\n \"administrative\",\n \"practices\",\n \"reporting\",\n \"essential\",\n \"affiliate\",\n \"immediately\",\n \"designated\",\n \"integrated\",\n \"configuration\",\n \"comprehensive\",\n \"universal\",\n \"presentation\",\n \"languages\",\n \"compliance\",\n \"improvement\",\n \"pennsylvania\",\n \"challenge\",\n \"acceptance\",\n \"strategies\",\n \"affiliates\",\n \"multimedia\",\n \"certified\",\n \"computing\",\n \"interactive\",\n \"procedure\",\n \"leadership\",\n \"religious\",\n \"breakfast\",\n \"developer\",\n \"approximately\",\n \"recommendations\",\n \"comparison\",\n \"automatically\",\n \"minnesota\",\n \"adventure\",\n \"institutions\",\n \"assistant\",\n \"advertisement\",\n \"headlines\",\n \"yesterday\",\n \"determined\",\n \"wholesale\",\n \"extension\",\n \"statements\",\n \"completely\",\n \"electrical\",\n \"applicable\",\n \"manufacturers\",\n \"classical\",\n \"dedicated\",\n \"direction\",\n \"basketball\",\n \"wisconsin\",\n \"personnel\",\n \"identified\",\n \"professionals\",\n \"advantage\",\n \"newsletters\",\n \"estimated\",\n \"anonymous\",\n \"miscellaneous\",\n \"integration\",\n \"interview\",\n \"framework\",\n \"installed\",\n \"massachusetts\",\n \"associate\",\n \"frequently\",\n \"discussions\",\n \"laboratory\",\n \"destination\",\n \"intelligence\",\n \"specifications\",\n \"tripadvisor\",\n \"residential\",\n \"decisions\",\n \"industries\",\n \"partnership\",\n \"editorial\",\n \"expression\",\n \"provisions\",\n \"principles\",\n \"suggestions\",\n \"replacement\",\n \"strategic\",\n \"economics\",\n \"compatible\",\n \"apartment\",\n \"netherlands\",\n \"consulting\",\n \"recreation\",\n \"participants\",\n \"favorites\",\n \"translation\",\n \"estimates\",\n \"protected\",\n \"philadelphia\",\n \"officials\",\n \"contained\",\n \"legislation\",\n \"parameters\",\n \"relationships\",\n \"tennessee\",\n \"representative\",\n \"frequency\",\n \"introduced\",\n \"departments\",\n \"residents\",\n \"displayed\",\n \"performed\",\n \"administrator\",\n \"addresses\",\n \"permanent\",\n \"agriculture\",\n \"constitutes\",\n \"portfolio\",\n \"practical\",\n \"delivered\",\n \"collectibles\",\n \"infrastructure\",\n \"exclusive\",\n \"originally\",\n \"utilities\",\n \"philosophy\",\n \"regulation\",\n \"reduction\",\n \"nutrition\",\n \"recording\",\n \"secondary\",\n \"wonderful\",\n \"announced\",\n \"prevention\",\n \"mentioned\",\n \"automatic\",\n \"healthcare\",\n \"maintained\",\n \"increasing\",\n \"connected\",\n \"directors\",\n \"participation\",\n \"containing\",\n \"combination\",\n \"amendment\",\n \"guaranteed\",\n \"libraries\",\n \"distributed\",\n \"singapore\",\n \"enterprises\",\n \"convention\",\n \"principal\",\n \"certification\",\n \"previously\",\n \"buildings\",\n \"household\",\n \"batteries\",\n \"positions\",\n \"subscription\",\n \"contemporary\",\n \"panasonic\",\n \"permalink\",\n \"signature\",\n \"provision\",\n \"certainly\",\n \"newspaper\",\n \"liability\",\n \"trademark\",\n \"trackback\",\n \"americans\",\n \"promotion\",\n \"conversion\",\n \"reasonable\",\n \"broadband\",\n \"influence\",\n \"importance\",\n \"webmaster\",\n \"prescription\",\n \"specifically\",\n \"represent\",\n \"conservation\",\n \"louisiana\",\n \"javascript\",\n \"marketplace\",\n \"evolution\",\n \"certificates\",\n \"objectives\",\n \"suggested\",\n \"concerned\",\n \"structures\",\n \"encyclopedia\",\n \"continuing\",\n \"interracial\",\n \"competitive\",\n \"suppliers\",\n \"preparation\",\n \"receiving\",\n \"accordance\",\n \"discussed\",\n \"elizabeth\",\n \"reservations\",\n \"playstation\",\n \"instruction\",\n \"annotation\",\n \"differences\",\n \"establish\",\n \"expressed\",\n \"paragraph\",\n \"mathematics\",\n \"compensation\",\n \"conducted\",\n \"percentage\",\n \"mississippi\",\n \"requested\",\n \"connecticut\",\n \"personals\",\n \"immediate\",\n \"agricultural\",\n \"supporting\",\n \"collections\",\n \"participate\",\n \"specialist\",\n \"experienced\",\n \"investigation\",\n \"institution\",\n \"searching\",\n \"proceedings\",\n \"transmission\",\n \"characteristics\",\n \"experiences\",\n \"extremely\",\n \"verzeichnis\",\n \"contracts\",\n \"concerning\",\n \"developers\",\n \"equivalent\",\n \"chemistry\",\n \"neighborhood\",\n \"variables\",\n \"continues\",\n \"curriculum\",\n \"psychology\",\n \"responses\",\n \"circumstances\",\n \"identification\",\n \"appliances\",\n \"elementary\",\n \"unlimited\",\n \"printable\",\n \"enforcement\",\n \"hardcover\",\n \"celebrity\",\n \"chocolate\",\n \"hampshire\",\n \"bluetooth\",\n \"controlled\",\n \"requirement\",\n \"authorities\",\n \"representatives\",\n \"pregnancy\",\n \"biography\",\n \"attractions\",\n \"transactions\",\n \"authorized\",\n \"retirement\",\n \"financing\",\n \"efficiency\",\n \"efficient\",\n \"commitment\",\n \"specialty\",\n \"interviews\",\n \"qualified\",\n \"discovery\",\n \"classified\",\n \"confidence\",\n \"lifestyle\",\n \"consistent\",\n \"clearance\",\n \"connections\",\n \"inventory\",\n \"converter\",\n \"organisation\",\n \"objective\",\n \"indicated\",\n \"securities\",\n \"volunteer\",\n \"democratic\",\n \"switzerland\",\n \"parameter\",\n \"processor\",\n \"dimensions\",\n \"contribute\",\n \"challenges\",\n \"recognition\",\n \"submission\",\n \"encourage\",\n \"regulatory\",\n \"inspection\",\n \"consumers\",\n \"territory\",\n \"transaction\",\n \"manchester\",\n \"contributions\",\n \"continuous\",\n \"resulting\",\n \"cambridge\",\n \"initiative\",\n \"execution\",\n \"disability\",\n \"increases\",\n \"contractor\",\n \"examination\",\n \"indicates\",\n \"committed\",\n \"extensive\",\n \"affordable\",\n \"candidate\",\n \"databases\",\n \"outstanding\",\n \"perspective\",\n \"messenger\",\n \"tournament\",\n \"consideration\",\n \"discounts\",\n \"catalogue\",\n \"publishers\",\n \"caribbean\",\n \"reservation\",\n \"remaining\",\n \"depending\",\n \"expansion\",\n \"purchased\",\n \"performing\",\n \"collected\",\n \"absolutely\",\n \"featuring\",\n \"implement\",\n \"scheduled\",\n \"calculator\",\n \"significantly\",\n \"temporary\",\n \"sufficient\",\n \"awareness\",\n \"vancouver\",\n \"contribution\",\n \"measurement\",\n \"constitution\",\n \"packaging\",\n \"consultation\",\n \"northwest\",\n \"classroom\",\n \"democracy\",\n \"wallpaper\",\n \"merchandise\",\n \"resistance\",\n \"baltimore\",\n \"candidates\",\n \"charlotte\",\n \"biological\",\n \"transition\",\n \"preferences\",\n \"instrument\",\n \"classification\",\n \"physician\",\n \"hollywood\",\n \"wikipedia\",\n \"spiritual\",\n \"photographs\",\n \"relatively\",\n \"satisfaction\",\n \"represents\",\n \"pittsburgh\",\n \"preferred\",\n \"intellectual\",\n \"comfortable\",\n \"interaction\",\n \"listening\",\n \"effectively\",\n \"experimental\",\n \"revolution\",\n \"consolidation\",\n \"landscape\",\n \"dependent\",\n \"mechanical\",\n \"consultants\",\n \"applicant\",\n \"cooperation\",\n \"acquisition\",\n \"implemented\",\n \"directories\",\n \"recognized\",\n \"notification\",\n \"licensing\",\n \"textbooks\",\n \"diversity\",\n \"cleveland\",\n \"investments\",\n \"accessibility\",\n \"sensitive\",\n \"templates\",\n \"completion\",\n \"universities\",\n \"technique\",\n \"contractors\",\n \"subscriptions\",\n \"calculate\",\n \"alexander\",\n \"broadcast\",\n \"converted\",\n \"anniversary\",\n \"improvements\",\n \"specification\",\n \"accessible\",\n \"accessory\",\n \"typically\",\n \"representation\",\n \"arrangements\",\n \"conferences\",\n \"uniprotkb\",\n \"consumption\",\n \"birmingham\",\n \"afternoon\",\n \"consultant\",\n \"controller\",\n \"ownership\",\n \"committees\",\n \"legislative\",\n \"researchers\",\n \"unsubscribe\",\n \"molecular\",\n \"residence\",\n \"attorneys\",\n \"operators\",\n \"sustainable\",\n \"philippines\",\n \"statistical\",\n \"innovation\",\n \"employers\",\n \"definitions\",\n \"elections\",\n \"stainless\",\n \"newspapers\",\n \"hospitals\",\n \"exception\",\n \"successfully\",\n \"indonesia\",\n \"primarily\",\n \"capabilities\",\n \"recommendation\",\n \"recruitment\",\n \"organized\",\n \"improving\",\n \"expensive\",\n \"organisations\",\n \"explained\",\n \"programmes\",\n \"expertise\",\n \"mechanism\",\n \"jewellery\",\n \"eventually\",\n \"agreements\",\n \"considering\",\n \"innovative\",\n \"conclusion\",\n \"disorders\",\n \"collaboration\",\n \"detection\",\n \"formation\",\n \"engineers\",\n \"proposals\",\n \"moderator\",\n \"tutorials\",\n \"settlement\",\n \"collectables\",\n \"fantastic\",\n \"governments\",\n \"purchasing\",\n \"appointed\",\n \"operational\",\n \"corresponding\",\n \"descriptions\",\n \"determination\",\n \"animation\",\n \"productions\",\n \"telecommunications\",\n \"instructor\",\n \"approaches\",\n \"highlights\",\n \"designers\",\n \"melbourne\",\n \"scientists\",\n \"blackjack\",\n \"argentina\",\n \"possibility\",\n \"commissioner\",\n \"dangerous\",\n \"reliability\",\n \"unfortunately\",\n \"respectively\",\n \"volunteers\",\n \"attachment\",\n \"appointment\",\n \"workshops\",\n \"hurricane\",\n \"represented\",\n \"mortgages\",\n \"responsibilities\",\n \"carefully\",\n \"productivity\",\n \"investors\",\n \"underground\",\n \"diagnosis\",\n \"principle\",\n \"vacations\",\n \"calculated\",\n \"appearance\",\n \"incorporated\",\n \"notebooks\",\n \"algorithm\",\n \"valentine\",\n \"involving\",\n \"investing\",\n \"christopher\",\n \"admission\",\n \"terrorism\",\n \"parliament\",\n \"situations\",\n \"allocated\",\n \"corrections\",\n \"structural\",\n \"municipal\",\n \"describes\",\n \"disabilities\",\n \"substance\",\n \"prohibited\",\n \"addressed\",\n \"simulation\",\n \"initiatives\",\n \"concentration\",\n \"interpretation\",\n \"bankruptcy\",\n \"optimization\",\n \"substances\",\n \"discovered\",\n \"restrictions\",\n \"participating\",\n \"exhibition\",\n \"composition\",\n \"nationwide\",\n \"definitely\",\n \"existence\",\n \"commentary\",\n \"limousines\",\n \"developments\",\n \"immigration\",\n \"destinations\",\n \"necessarily\",\n \"attribute\",\n \"apparently\",\n \"surrounding\",\n \"mountains\",\n \"popularity\",\n \"postposted\",\n \"coordinator\",\n \"obviously\",\n \"fundamental\",\n \"substantial\",\n \"progressive\",\n \"championship\",\n \"sacramento\",\n \"impossible\",\n \"depression\",\n \"testimonials\",\n \"memorabilia\",\n \"cartridge\",\n \"explanation\",\n \"cincinnati\",\n \"subsection\",\n \"electricity\",\n \"permitted\",\n \"workplace\",\n \"confirmed\",\n \"wallpapers\",\n \"infection\",\n \"eligibility\",\n \"involvement\",\n \"placement\",\n \"observations\",\n \"vbulletin\",\n \"subsequent\",\n \"motorcycle\",\n \"disclosure\",\n \"establishment\",\n \"presentations\",\n \"undergraduate\",\n \"occupation\",\n \"donations\",\n \"associations\",\n \"citysearch\",\n \"radiation\",\n \"seriously\",\n \"elsewhere\",\n \"pollution\",\n \"conservative\",\n \"guestbook\",\n \"effectiveness\",\n \"demonstrate\",\n \"atmosphere\",\n \"experiment\",\n \"purchases\",\n \"federation\",\n \"assignment\",\n \"chemicals\",\n \"everybody\",\n \"nashville\",\n \"counseling\",\n \"acceptable\",\n \"satisfied\",\n \"measurements\",\n \"milwaukee\",\n \"medication\",\n \"warehouse\",\n \"shareware\",\n \"violation\",\n \"configure\",\n \"stability\",\n \"southwest\",\n \"institutional\",\n \"expectations\",\n \"independence\",\n \"metabolism\",\n \"personally\",\n \"excellence\",\n \"somewhere\",\n \"attributes\",\n \"recognize\",\n \"screening\",\n \"thumbnail\",\n \"forgotten\",\n \"intelligent\",\n \"edinburgh\",\n \"obligation\",\n \"regardless\",\n \"restricted\",\n \"republican\",\n \"merchants\",\n \"attendance\",\n \"arguments\",\n \"amsterdam\",\n \"adventures\",\n \"announcement\",\n \"appreciate\",\n \"regularly\",\n \"mechanisms\",\n \"customize\",\n \"tradition\",\n \"indicators\",\n \"emissions\",\n \"physicians\",\n \"complaint\",\n \"experiments\",\n \"afghanistan\",\n \"scholarship\",\n \"governance\",\n \"supplements\",\n \"camcorder\",\n \"implementing\",\n \"ourselves\",\n \"conversation\",\n \"capability\",\n \"producing\",\n \"precision\",\n \"contributed\",\n \"reproduction\",\n \"ingredients\",\n \"franchise\",\n \"complaints\",\n \"promotions\",\n \"rehabilitation\",\n \"maintaining\",\n \"environments\",\n \"reception\",\n \"correctly\",\n \"consequences\",\n \"geography\",\n \"appearing\",\n \"integrity\",\n \"discrimination\",\n \"processed\",\n \"implications\",\n \"functionality\",\n \"intermediate\",\n \"emotional\",\n \"platforms\",\n \"overnight\",\n \"geographic\",\n \"preliminary\",\n \"districts\",\n \"introduce\",\n \"promotional\",\n \"chevrolet\",\n \"specialists\",\n \"generator\",\n \"suspension\",\n \"correction\",\n \"authentication\",\n \"communicate\",\n \"supplement\",\n \"showtimes\",\n \"promoting\",\n \"machinery\",\n \"bandwidth\",\n \"probability\",\n \"dimension\",\n \"schedules\",\n \"admissions\",\n \"quarterly\",\n \"illustrated\",\n \"continental\",\n \"alternate\",\n \"achievement\",\n \"limitations\",\n \"automated\",\n \"passenger\",\n \"convenient\",\n \"orientation\",\n \"childhood\",\n \"flexibility\",\n \"jurisdiction\",\n \"displaying\",\n \"encouraged\",\n \"cartridges\",\n \"declaration\",\n \"automation\",\n \"advantages\",\n \"preparing\",\n \"recipient\",\n \"extensions\",\n \"athletics\",\n \"southeast\",\n \"alternatives\",\n \"determining\",\n \"personalized\",\n \"conditioning\",\n \"partnerships\",\n \"destruction\",\n \"increasingly\",\n \"migration\",\n \"basically\",\n \"conventional\",\n \"applicants\",\n \"occupational\",\n \"adjustment\",\n \"treatments\",\n \"camcorders\",\n \"difficulty\",\n \"collective\",\n \"coalition\",\n \"enrollment\",\n \"producers\",\n \"collector\",\n \"interfaces\",\n \"advertisers\",\n \"representing\",\n \"observation\",\n \"restoration\",\n \"convenience\",\n \"returning\",\n \"opposition\",\n \"container\",\n \"defendant\",\n \"confirmation\",\n \"supervisor\",\n \"peripherals\",\n \"bestsellers\",\n \"departure\",\n \"minneapolis\",\n \"interactions\",\n \"intervention\",\n \"attraction\",\n \"modification\",\n \"customized\",\n \"understood\",\n \"assurance\",\n \"happening\",\n \"amendments\",\n \"metropolitan\",\n \"compilation\",\n \"verification\",\n \"attractive\",\n \"recordings\",\n \"jefferson\",\n \"gardening\",\n \"obligations\",\n \"orchestra\",\n \"polyphonic\",\n \"outsourcing\",\n \"adjustable\",\n \"allocation\",\n \"discipline\",\n \"demonstrated\",\n \"identifying\",\n \"alphabetical\",\n \"dispatched\",\n \"installing\",\n \"voluntary\",\n \"photographer\",\n \"messaging\",\n \"constructed\",\n \"additions\",\n \"requiring\",\n \"engagement\",\n \"refinance\",\n \"calendars\",\n \"arrangement\",\n \"conclusions\",\n \"bibliography\",\n \"compatibility\",\n \"furthermore\",\n \"cooperative\",\n \"measuring\",\n \"jacksonville\",\n \"headquarters\",\n \"transfers\",\n \"transformation\",\n \"attachments\",\n \"administrators\",\n \"personality\",\n \"facilitate\",\n \"subscriber\",\n \"priorities\",\n \"bookstore\",\n \"parenting\",\n \"incredible\",\n \"commonwealth\",\n \"pharmaceutical\",\n \"manhattan\",\n \"workforce\",\n \"organizational\",\n \"portuguese\",\n \"everywhere\",\n \"discharge\",\n \"halloween\",\n \"hazardous\",\n \"methodology\",\n \"housewares\",\n \"reputation\",\n \"resistant\",\n \"democrats\",\n \"recycling\",\n \"qualifications\",\n \"slideshow\",\n \"variation\",\n \"transferred\",\n \"photograph\",\n \"distributor\",\n \"underlying\",\n \"wrestling\",\n \"photoshop\",\n \"gathering\",\n \"projection\",\n \"mathematical\",\n \"specialized\",\n \"diagnostic\",\n \"indianapolis\",\n \"corporations\",\n \"criticism\",\n \"automobile\",\n \"confidential\",\n \"statutory\",\n \"accommodations\",\n \"northeast\",\n \"downloaded\",\n \"paintings\",\n \"injection\",\n \"yorkshire\",\n \"populations\",\n \"protective\",\n \"initially\",\n \"indicator\",\n \"eliminate\",\n \"sunglasses\",\n \"preference\",\n \"threshold\",\n \"venezuela\",\n \"exploration\",\n \"sequences\",\n \"astronomy\",\n \"translate\",\n \"announces\",\n \"compression\",\n \"establishing\",\n \"constitutional\",\n \"perfectly\",\n \"instantly\",\n \"litigation\",\n \"submissions\",\n \"broadcasting\",\n \"horizontal\",\n \"terrorist\",\n \"informational\",\n \"ecommerce\",\n \"suffering\",\n \"prospective\",\n \"ultimately\",\n \"artificial\",\n \"spectacular\",\n \"coordination\",\n \"connector\",\n \"affiliated\",\n \"activation\",\n \"naturally\",\n \"subscribers\",\n \"mitsubishi\",\n \"underwear\",\n \"potentially\",\n \"constraints\",\n \"inclusive\",\n \"dimensional\",\n \"considerable\",\n \"selecting\",\n \"processors\",\n \"pantyhose\",\n \"difficulties\",\n \"complexity\",\n \"constantly\",\n \"barcelona\",\n \"presidential\",\n \"documentary\",\n \"territories\",\n \"palestinian\",\n \"legislature\",\n \"hospitality\",\n \"procurement\",\n \"theoretical\",\n \"exercises\",\n \"surveillance\",\n \"protocols\",\n \"highlight\",\n \"substitute\",\n \"inclusion\",\n \"hopefully\",\n \"brilliant\",\n \"evaluated\",\n \"assignments\",\n \"termination\",\n \"households\",\n \"authentic\",\n \"montgomery\",\n \"architectural\",\n \"louisville\",\n \"macintosh\",\n \"movements\",\n \"amenities\",\n \"virtually\",\n \"authorization\",\n \"projector\",\n \"comparative\",\n \"psychological\",\n \"surprised\",\n \"genealogy\",\n \"expenditure\",\n \"liverpool\",\n \"connectivity\",\n \"algorithms\",\n \"similarly\",\n \"collaborative\",\n \"excluding\",\n \"commander\",\n \"suggestion\",\n \"spotlight\",\n \"investigate\",\n \"connecting\",\n \"logistics\",\n \"proportion\",\n \"significance\",\n \"symposium\",\n \"essentials\",\n \"protecting\",\n \"transmitted\",\n \"screenshots\",\n \"intensive\",\n \"switching\",\n \"correspondence\",\n \"supervision\",\n \"expenditures\",\n \"separation\",\n \"testimony\",\n \"celebrities\",\n \"mandatory\",\n \"boundaries\",\n \"syndication\",\n \"celebration\",\n \"filtering\",\n \"luxembourg\",\n \"offensive\",\n \"deployment\",\n \"colleagues\",\n \"separated\",\n \"directive\",\n \"governing\",\n \"retailers\",\n \"occasionally\",\n \"attending\",\n \"recruiting\",\n \"instructional\",\n \"traveling\",\n \"permissions\",\n \"biotechnology\",\n \"prescribed\",\n \"catherine\",\n \"reproduced\",\n \"calculation\",\n \"consolidated\",\n \"occasions\",\n \"equations\",\n \"exceptional\",\n \"respondents\",\n \"considerations\",\n \"queensland\",\n \"musicians\",\n \"composite\",\n \"unavailable\",\n \"essentially\",\n \"designing\",\n \"assessments\",\n \"brunswick\",\n \"sensitivity\",\n \"preservation\",\n \"streaming\",\n \"intensity\",\n \"technological\",\n \"syndicate\",\n \"antivirus\",\n \"addressing\",\n \"discounted\",\n \"bangladesh\",\n \"constitute\",\n \"concluded\",\n \"desperate\",\n \"demonstration\",\n \"governmental\",\n \"manufactured\",\n \"graduation\",\n \"variations\",\n \"addiction\",\n \"springfield\",\n \"synthesis\",\n \"undefined\",\n \"unemployment\",\n \"enhancement\",\n \"newcastle\",\n \"performances\",\n \"societies\",\n \"brazilian\",\n \"identical\",\n \"petroleum\",\n \"norwegian\",\n \"retention\",\n \"exchanges\",\n \"soundtrack\",\n \"wondering\",\n \"profession\",\n \"separately\",\n \"physiology\",\n \"collecting\",\n \"participant\",\n \"scholarships\",\n \"recreational\",\n \"dominican\",\n \"friendship\",\n \"expanding\",\n \"provincial\",\n \"investigations\",\n \"medications\",\n \"rochester\",\n \"advertiser\",\n \"encryption\",\n \"downloadable\",\n \"sophisticated\",\n \"possession\",\n \"laboratories\",\n \"vegetables\",\n \"thumbnails\",\n \"stockings\",\n \"respondent\",\n \"destroyed\",\n \"manufacture\",\n \"wordpress\",\n \"vulnerability\",\n \"accountability\",\n \"celebrate\",\n \"accredited\",\n \"appliance\",\n \"compressed\",\n \"scheduling\",\n \"perspectives\",\n \"mortality\",\n \"christians\",\n \"therapeutic\",\n \"impressive\",\n \"accordingly\",\n \"architect\",\n \"challenging\",\n \"microwave\",\n \"accidents\",\n \"relocation\",\n \"contributors\",\n \"violations\",\n \"temperatures\",\n \"competitions\",\n \"discretion\",\n \"cosmetics\",\n \"repository\",\n \"concentrations\",\n \"christianity\",\n \"negotiations\",\n \"realistic\",\n \"generating\",\n \"christina\",\n \"congressional\",\n \"photographic\",\n \"modifications\",\n \"millennium\",\n \"achieving\",\n \"fisheries\",\n \"exceptions\",\n \"reactions\",\n \"macromedia\",\n \"companion\",\n \"divisions\",\n \"additionally\",\n \"fellowship\",\n \"victorian\",\n \"copyrights\",\n \"lithuania\",\n \"mastercard\",\n \"chronicles\",\n \"obtaining\",\n \"distribute\",\n \"decorative\",\n \"enlargement\",\n \"campaigns\",\n \"conjunction\",\n \"instances\",\n \"indigenous\",\n \"validation\",\n \"corruption\",\n \"incentives\",\n \"cholesterol\",\n \"differential\",\n \"scientist\",\n \"starsmerchant\",\n \"arthritis\",\n \"nevertheless\",\n \"practitioners\",\n \"transcript\",\n \"inflation\",\n \"compounds\",\n \"contracting\",\n \"structured\",\n \"reasonably\",\n \"graduates\",\n \"recommends\",\n \"controlling\",\n \"distributors\",\n \"arlington\",\n \"particles\",\n \"extraordinary\",\n \"indicating\",\n \"coordinate\",\n \"exclusively\",\n \"limitation\",\n \"widescreen\",\n \"illustration\",\n \"construct\",\n \"inquiries\",\n \"inspiration\",\n \"affecting\",\n \"downloading\",\n \"aggregate\",\n \"forecasts\",\n \"complicated\",\n \"shopzilla\",\n \"decorating\",\n \"expressions\",\n \"shakespeare\",\n \"connectors\",\n \"conflicts\",\n \"travelers\",\n \"offerings\",\n \"incorrect\",\n \"furnishings\",\n \"guatemala\",\n \"perception\",\n \"renaissance\",\n \"pathology\",\n \"ordinance\",\n \"photographers\",\n \"infections\",\n \"configured\",\n \"festivals\",\n \"possibilities\",\n \"contributing\",\n \"analytical\",\n \"circulation\",\n \"assumption\",\n \"jerusalem\",\n \"transexuales\",\n \"invention\",\n \"technician\",\n \"executives\",\n \"enquiries\",\n \"cognitive\",\n \"exploring\",\n \"registrar\",\n \"supporters\",\n \"withdrawal\",\n \"predicted\",\n \"saskatchewan\",\n \"cancellation\",\n \"ministers\",\n \"veterinary\",\n \"prostores\",\n \"relevance\",\n \"incentive\",\n \"butterfly\",\n \"mechanics\",\n \"numerical\",\n \"reflection\",\n \"accompanied\",\n \"invitation\",\n \"princeton\",\n \"spirituality\",\n \"meanwhile\",\n \"proprietary\",\n \"childrens\",\n \"thumbzilla\",\n \"porcelain\",\n \"pichunter\",\n \"translated\",\n \"columnists\",\n \"consensus\",\n \"delivering\",\n \"journalism\",\n \"intention\",\n \"undertaken\",\n \"statewide\",\n \"semiconductor\",\n \"illustrations\",\n \"happiness\",\n \"substantially\",\n \"identifier\",\n \"calculations\",\n \"conducting\",\n \"accomplished\",\n \"calculators\",\n \"impression\",\n \"correlation\",\n \"fragrance\",\n \"neighbors\",\n \"transparent\",\n \"charleston\",\n \"champions\",\n \"selections\",\n \"projectors\",\n \"inappropriate\",\n \"comparing\",\n \"vocational\",\n \"pharmacies\",\n \"introducing\",\n \"appreciated\",\n \"albuquerque\",\n \"distinguished\",\n \"projected\",\n \"assumptions\",\n \"shareholders\",\n \"developmental\",\n \"regulated\",\n \"anticipated\",\n \"completing\",\n \"comparable\",\n \"confusion\",\n \"copyrighted\",\n \"warranties\",\n \"documented\",\n \"paperbacks\",\n \"keyboards\",\n \"vulnerable\",\n \"reflected\",\n \"respiratory\",\n \"notifications\",\n \"transexual\",\n \"mainstream\",\n \"evaluating\",\n \"subcommittee\",\n \"maternity\",\n \"journalists\",\n \"foundations\",\n \"volleyball\",\n \"liabilities\",\n \"decreased\",\n \"tolerance\",\n \"creativity\",\n \"describing\",\n \"lightning\",\n \"quotations\",\n \"inspector\",\n \"bookmarks\",\n \"behavioral\",\n \"riverside\",\n \"bathrooms\",\n \"abilities\",\n \"initiated\",\n \"nonprofit\",\n \"lancaster\",\n \"suspended\",\n \"containers\",\n \"attitudes\",\n \"simultaneously\",\n \"integrate\",\n \"sociology\",\n \"screenshot\",\n \"exhibitions\",\n \"confident\",\n \"retrieved\",\n \"officially\",\n \"consortium\",\n \"recipients\",\n \"delicious\",\n \"traditions\",\n \"periodically\",\n \"hungarian\",\n \"referring\",\n \"transform\",\n \"educators\",\n \"vegetable\",\n \"humanities\",\n \"independently\",\n \"alignment\",\n \"henderson\",\n \"britannica\",\n \"competitors\",\n \"visibility\",\n \"consciousness\",\n \"encounter\",\n \"resolutions\",\n \"accessing\",\n \"attempted\",\n \"witnesses\",\n \"administered\",\n \"strengthen\",\n \"frederick\",\n \"aggressive\",\n \"advertisements\",\n \"sublimedirectory\",\n \"disturbed\",\n \"determines\",\n \"sculpture\",\n \"motivation\",\n \"pharmacology\",\n \"passengers\",\n \"quantities\",\n \"petersburg\",\n \"consistently\",\n \"powerpoint\",\n \"obituaries\",\n \"punishment\",\n \"appreciation\",\n \"subsequently\",\n \"providence\",\n \"restriction\",\n \"incorporate\",\n \"backgrounds\",\n \"treasurer\",\n \"lightweight\",\n \"transcription\",\n \"complications\",\n \"scripting\",\n \"remembered\",\n \"synthetic\",\n \"testament\",\n \"specifics\",\n \"partially\",\n \"wilderness\",\n \"generations\",\n \"tournaments\",\n \"sponsorship\",\n \"headphones\",\n \"proceeding\",\n \"volkswagen\",\n \"uncertainty\",\n \"breakdown\",\n \"reconstruction\",\n \"subsidiary\",\n \"strengths\",\n \"encouraging\",\n \"furnished\",\n \"terrorists\",\n \"comparisons\",\n \"beneficial\",\n \"distributions\",\n \"viewpicture\",\n \"threatened\",\n \"republicans\",\n \"discusses\",\n \"responded\",\n \"abstracts\",\n \"prediction\",\n \"pharmaceuticals\",\n \"thesaurus\",\n \"individually\",\n \"battlefield\",\n \"literally\",\n \"ecological\",\n \"appraisal\",\n \"consisting\",\n \"submitting\",\n \"citations\",\n \"geographical\",\n \"mozambique\",\n \"disclaimers\",\n \"championships\",\n \"sheffield\",\n \"finishing\",\n \"wellington\",\n \"prospects\",\n \"bulgarian\",\n \"aboriginal\",\n \"remarkable\",\n \"preventing\",\n \"productive\",\n \"boulevard\",\n \"compliant\",\n \"penalties\",\n \"imagination\",\n \"refurbished\",\n \"activated\",\n \"conferencing\",\n \"armstrong\",\n \"politicians\",\n \"trackbacks\",\n \"accommodate\",\n \"christine\",\n \"accepting\",\n \"precipitation\",\n \"isolation\",\n \"sustained\",\n \"approximate\",\n \"programmer\",\n \"greetings\",\n \"inherited\",\n \"incomplete\",\n \"chronicle\",\n \"legitimate\",\n \"biographies\",\n \"investigator\",\n \"plaintiff\",\n \"prisoners\",\n \"mediterranean\",\n \"nightlife\",\n \"architects\",\n \"entrepreneur\",\n \"freelance\",\n \"excessive\",\n \"screensaver\",\n \"valuation\",\n \"unexpected\",\n \"cigarette\",\n \"characteristic\",\n \"metallica\",\n \"consequently\",\n \"appointments\",\n \"narrative\",\n \"academics\",\n \"quantitative\",\n \"screensavers\",\n \"subdivision\",\n \"distinction\",\n \"livestock\",\n \"exemption\",\n \"sustainability\",\n \"formatting\",\n \"nutritional\",\n \"nicaragua\",\n \"affiliation\",\n \"relatives\",\n \"satisfactory\",\n \"revolutionary\",\n \"bracelets\",\n \"telephony\",\n \"breathing\",\n \"thickness\",\n \"adjustments\",\n \"graphical\",\n \"discussing\",\n \"aerospace\",\n \"meaningful\",\n \"maintains\",\n \"shortcuts\",\n \"voyeurweb\",\n \"extending\",\n \"specifies\",\n \"accreditation\",\n \"blackberry\",\n \"meditation\",\n \"microphone\",\n \"macedonia\",\n \"combining\",\n \"instrumental\",\n \"organizing\",\n \"moderators\",\n \"kazakhstan\",\n \"standings\",\n \"partition\",\n \"invisible\",\n \"translations\",\n \"commodity\",\n \"kilometers\",\n \"thanksgiving\",\n \"guarantees\",\n \"indication\",\n \"congratulations\",\n \"cigarettes\",\n \"controllers\",\n \"consultancy\",\n \"conventions\",\n \"coordinates\",\n \"responding\",\n \"physically\",\n \"stakeholders\",\n \"hydrocodone\",\n \"consecutive\",\n \"attempting\",\n \"representations\",\n \"competing\",\n \"peninsula\",\n \"accurately\",\n \"considers\",\n \"ministries\",\n \"vacancies\",\n \"parliamentary\",\n \"acknowledge\",\n \"thoroughly\",\n \"nottingham\",\n \"identifies\",\n \"questionnaire\",\n \"qualification\",\n \"modelling\",\n \"miniature\",\n \"interstate\",\n \"consequence\",\n \"systematic\",\n \"perceived\",\n \"madagascar\",\n \"presenting\",\n \"troubleshooting\",\n \"uzbekistan\",\n \"centuries\",\n \"magnitude\",\n \"richardson\",\n \"fragrances\",\n \"vocabulary\",\n \"earthquake\",\n \"fundraising\",\n \"geological\",\n \"assessing\",\n \"introduces\",\n \"webmasters\",\n \"computational\",\n \"acdbentity\",\n \"participated\",\n \"handhelds\",\n \"answering\",\n \"impressed\",\n \"conspiracy\",\n \"organizer\",\n \"combinations\",\n \"preceding\",\n \"cumulative\",\n \"amplifier\",\n \"arbitrary\",\n \"prominent\",\n \"lexington\",\n \"contacted\",\n \"recorders\",\n \"occasional\",\n \"innovations\",\n \"postcards\",\n \"reviewing\",\n \"explicitly\",\n \"transsexual\",\n \"citizenship\",\n \"informative\",\n \"girlfriend\",\n \"bloomberg\",\n \"hierarchy\",\n \"influenced\",\n \"abandoned\",\n \"complement\",\n \"mauritius\",\n \"checklist\",\n \"requesting\",\n \"lauderdale\",\n \"scenarios\",\n \"extraction\",\n \"elevation\",\n \"utilization\",\n \"beverages\",\n \"calibration\",\n \"efficiently\",\n \"entertaining\",\n \"prerequisite\",\n \"hypothesis\",\n \"medicines\",\n \"regression\",\n \"enhancements\",\n \"renewable\",\n \"intersection\",\n \"passwords\",\n \"consistency\",\n \"collectors\",\n \"azerbaijan\",\n \"astrology\",\n \"occurring\",\n \"supplemental\",\n \"travelling\",\n \"induction\",\n \"precisely\",\n \"spreading\",\n \"provinces\",\n \"widespread\",\n \"incidence\",\n \"incidents\",\n \"enhancing\",\n \"interference\",\n \"palestine\",\n \"listprice\",\n \"atmospheric\",\n \"knowledgestorm\",\n \"referenced\",\n \"publicity\",\n \"proposition\",\n \"allowance\",\n \"designation\",\n \"duplicate\",\n \"criterion\",\n \"civilization\",\n \"vietnamese\",\n \"tremendous\",\n \"corrected\",\n \"encountered\",\n \"internationally\",\n \"surrounded\",\n \"creatures\",\n \"commented\",\n \"accomplish\",\n \"vegetarian\",\n \"newfoundland\",\n \"investigated\",\n \"ambassador\",\n \"stephanie\",\n \"contacting\",\n \"vegetation\",\n \"findarticles\",\n \"specially\",\n \"infectious\",\n \"continuity\",\n \"phenomenon\",\n \"conscious\",\n \"referrals\",\n \"differently\",\n \"integrating\",\n \"revisions\",\n \"reasoning\",\n \"charitable\",\n \"annotated\",\n \"convinced\",\n \"burlington\",\n \"replacing\",\n \"researcher\",\n \"watershed\",\n \"occupations\",\n \"acknowledged\",\n \"equilibrium\",\n \"characterized\",\n \"privilege\",\n \"qualifying\",\n \"estimation\",\n \"pediatric\",\n \"techrepublic\",\n \"institutes\",\n \"brochures\",\n \"traveller\",\n \"appropriations\",\n \"suspected\",\n \"benchmark\",\n \"beginners\",\n \"instructors\",\n \"highlighted\",\n \"stationery\",\n \"unauthorized\",\n \"competent\",\n \"contributor\",\n \"demonstrates\",\n \"gradually\",\n \"desirable\",\n \"journalist\",\n \"afterwards\",\n \"religions\",\n \"explosion\",\n \"signatures\",\n \"disciplines\",\n \"daughters\",\n \"conversations\",\n \"simplified\",\n \"motherboard\",\n \"bibliographic\",\n \"champagne\",\n \"deviation\",\n \"superintendent\",\n \"housewives\",\n \"influences\",\n \"inspections\",\n \"irrigation\",\n \"hydraulic\",\n \"robertson\",\n \"penetration\",\n \"conviction\",\n \"omissions\",\n \"retrieval\",\n \"qualities\",\n \"prototype\",\n \"importantly\",\n \"apparatus\",\n \"explaining\",\n \"nomination\",\n \"empirical\",\n \"dependence\",\n \"sexuality\",\n \"polyester\",\n \"commitments\",\n \"suggesting\",\n \"remainder\",\n \"privileges\",\n \"televisions\",\n \"specializing\",\n \"commodities\",\n \"motorcycles\",\n \"concentrate\",\n \"reproductive\",\n \"molecules\",\n \"refrigerator\",\n \"intervals\",\n \"sentences\",\n \"exclusion\",\n \"workstation\",\n \"holocaust\",\n \"receivers\",\n \"disposition\",\n \"navigator\",\n \"investigators\",\n \"marijuana\",\n \"cathedral\",\n \"fairfield\",\n \"fascinating\",\n \"landscapes\",\n \"lafayette\",\n \"computation\",\n \"cardiovascular\",\n \"salvation\",\n \"predictions\",\n \"accompanying\",\n \"selective\",\n \"arbitration\",\n \"configuring\",\n \"editorials\",\n \"sacrifice\",\n \"removable\",\n \"convergence\",\n \"gibraltar\",\n \"anthropology\",\n \"malpractice\",\n \"reporters\",\n \"necessity\",\n \"rendering\",\n \"hepatitis\",\n \"nationally\",\n \"waterproof\",\n \"specialties\",\n \"humanitarian\",\n \"invitations\",\n \"functioning\",\n \"economies\",\n \"alexandria\",\n \"bacterial\",\n \"undertake\",\n \"continuously\",\n \"achievements\",\n \"convertible\",\n \"secretariat\",\n \"paragraphs\",\n \"adolescent\",\n \"nominations\",\n \"cancelled\",\n \"introductory\",\n \"reservoir\",\n \"occurrence\",\n \"worcester\",\n \"demographic\",\n \"disciplinary\",\n \"respected\",\n \"portraits\",\n \"interpreted\",\n \"evaluations\",\n \"elimination\",\n \"hypothetical\",\n \"immigrants\",\n \"complimentary\",\n \"helicopter\",\n \"performer\",\n \"commissions\",\n \"powerseller\",\n \"graduated\",\n \"surprising\",\n \"unnecessary\",\n \"dramatically\",\n \"yugoslavia\",\n \"characterization\",\n \"likelihood\",\n \"fundamentals\",\n \"contamination\",\n \"endangered\",\n \"compromise\",\n \"expiration\",\n \"namespace\",\n \"peripheral\",\n \"negotiation\",\n \"opponents\",\n \"nominated\",\n \"confidentiality\",\n \"electoral\",\n \"changelog\",\n \"alternatively\",\n \"greensboro\",\n \"controversial\",\n \"recovered\",\n \"upgrading\",\n \"frontpage\",\n \"demanding\",\n \"defensive\",\n \"forbidden\",\n \"programmers\",\n \"monitored\",\n \"installations\",\n \"deutschland\",\n \"practitioner\",\n \"motivated\",\n \"smithsonian\",\n \"examining\",\n \"revelation\",\n \"delegation\",\n \"dictionaries\",\n \"greenhouse\",\n \"transparency\",\n \"currencies\",\n \"survivors\",\n \"positioning\",\n \"descending\",\n \"temporarily\",\n \"frequencies\",\n \"reflections\",\n \"municipality\",\n \"detective\",\n \"experiencing\",\n \"fireplace\",\n \"endorsement\",\n \"psychiatry\",\n \"persistent\",\n \"summaries\",\n \"looksmart\",\n \"magnificent\",\n \"colleague\",\n \"adaptation\",\n \"paintball\",\n \"enclosure\",\n \"supervisors\",\n \"westminster\",\n \"distances\",\n \"absorption\",\n \"treasures\",\n \"transcripts\",\n \"disappointed\",\n \"continually\",\n \"communist\",\n \"collectible\",\n \"entrepreneurs\",\n \"creations\",\n \"acquisitions\",\n \"biodiversity\",\n \"excitement\",\n \"presently\",\n \"mysterious\",\n \"librarian\",\n \"subsidiaries\",\n \"stockholm\",\n \"indonesian\",\n \"therapist\",\n \"promising\",\n \"relaxation\",\n \"thereafter\",\n \"commissioners\",\n \"forwarding\",\n \"nightmare\",\n \"reductions\",\n \"southampton\",\n \"organisms\",\n \"telescope\",\n \"portsmouth\",\n \"advancement\",\n \"harassment\",\n \"generators\",\n \"generates\",\n \"replication\",\n \"inexpensive\",\n \"receptors\",\n \"interventions\",\n \"huntington\",\n \"internship\",\n \"aluminium\",\n \"snowboard\",\n \"beastality\",\n \"evanescence\",\n \"coordinated\",\n \"shipments\",\n \"antarctica\",\n \"chancellor\",\n \"controversy\",\n \"legendary\",\n \"beautifully\",\n \"antibodies\",\n \"examinations\",\n \"immunology\",\n \"departmental\",\n \"terminology\",\n \"gentleman\",\n \"reproduce\",\n \"convicted\",\n \"roommates\",\n \"threatening\",\n \"spokesman\",\n \"activists\",\n \"frankfurt\",\n \"encourages\",\n \"assembled\",\n \"restructuring\",\n \"terminals\",\n \"simulations\",\n \"sufficiently\",\n \"conditional\",\n \"crossword\",\n \"conceptual\",\n \"liechtenstein\",\n \"translator\",\n \"automobiles\",\n \"continent\",\n \"longitude\",\n \"challenged\",\n \"telecharger\",\n \"insertion\",\n \"instrumentation\",\n \"constraint\",\n \"groundwater\",\n \"strengthening\",\n \"insulation\",\n \"infringement\",\n \"subjective\",\n \"swaziland\",\n \"varieties\",\n \"mediawiki\",\n \"configurations\",\n]\n","import type {\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n NodeKey,\n SerializedTextNode,\n Spread,\n} from \"lexical\"\nimport { TextNode } from \"lexical\"\n\nimport { uuid as UUID } from \"../plugins/autocomplete-plugin\"\n\nexport type SerializedAutocompleteNode = Spread<\n {\n uuid: string\n },\n SerializedTextNode\n>\n\nexport class AutocompleteNode extends TextNode {\n /**\n * A unique uuid is generated for each session and assigned to the instance.\n * This helps to:\n * - Ensures max one Autocomplete node per session.\n * - Ensure that when collaboration is enabled, this node is not shown in\n * other sessions.\n * See https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/plugins/AutocompletePlugin/index.tsx\n */\n __uuid: string\n\n static clone(node: AutocompleteNode): AutocompleteNode {\n return new AutocompleteNode(node.__text, node.__uuid, node.__key)\n }\n\n static getType(): \"autocomplete\" {\n return \"autocomplete\"\n }\n\n static importDOM() {\n // Never import from DOM\n return null\n }\n\n static importJSON(\n serializedNode: SerializedAutocompleteNode\n ): AutocompleteNode {\n return $createAutocompleteNode(\n serializedNode.text,\n serializedNode.uuid\n ).updateFromJSON(serializedNode)\n }\n\n exportJSON(): SerializedAutocompleteNode {\n return {\n ...super.exportJSON(),\n uuid: this.__uuid,\n }\n }\n\n constructor(text: string, uuid: string, key?: NodeKey) {\n super(text, key)\n this.__uuid = uuid\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean {\n return false\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Lexical exportDOM signature\n exportDOM(_editor: LexicalEditor): DOMExportOutput {\n return { element: null }\n }\n\n excludeFromCopy() {\n return true\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config)\n dom.classList.add(config.theme.autocomplete)\n if (this.__uuid !== UUID) {\n dom.style.display = \"none\"\n }\n return dom\n }\n}\n\nexport function $createAutocompleteNode(\n text: string,\n uuid: string\n): AutocompleteNode {\n return new AutocompleteNode(text, uuid).setMode(\"token\")\n}\n","\"use client\"\nimport * as React from \"react\"\nimport { JSX, useCallback, useEffect, useRef, useState } from \"react\"\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\"\nimport {\n DecoratorBlockNode,\n SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\"\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from \"lexical\"\n\nconst WIDGET_SCRIPT_URL = \"https://platform.twitter.com/widgets.js\"\n\ntype TweetComponentProps = Readonly<{\n className: Readonly<{\n base: string\n focus: string\n }>\n format: ElementFormatType | null\n loadingComponent?: JSX.Element | string\n nodeKey: NodeKey\n onError?: (error: string) => void\n onLoad?: () => void\n tweetID: string\n}>\n\nfunction $convertTweetElement(\n domNode: HTMLDivElement\n): DOMConversionOutput | null {\n const id = domNode.getAttribute(\"data-lexical-tweet-id\")\n if (id) {\n const node = $createTweetNode(id)\n return { node }\n }\n return null\n}\n\nlet isTwitterScriptLoading = true\n\nfunction TweetComponent({\n className,\n format,\n loadingComponent,\n nodeKey,\n onError,\n onLoad,\n tweetID,\n}: TweetComponentProps) {\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n const previousTweetIDRef = useRef<string>(\"\")\n const [isTweetLoading, setIsTweetLoading] = useState(false)\n\n const createTweet = useCallback(async () => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n await (window as any).twttr.widgets.createTweet(tweetID, containerRef.current)\n\n setIsTweetLoading(false)\n isTwitterScriptLoading = false\n\n if (onLoad) {\n onLoad()\n }\n } catch (error) {\n if (onError) {\n onError(String(error))\n }\n }\n }, [onError, onLoad, tweetID])\n\n useEffect(() => {\n if (tweetID !== previousTweetIDRef.current) {\n // Use setTimeout to avoid calling setState synchronously within effect\n setTimeout(() => {\n setIsTweetLoading(true)\n }, 0)\n\n if (isTwitterScriptLoading) {\n const script = document.createElement(\"script\")\n script.src = WIDGET_SCRIPT_URL\n script.async = true\n document.body?.appendChild(script)\n script.onload = createTweet\n if (onError) {\n script.onerror = onError as OnErrorEventHandler\n }\n } else {\n // Use setTimeout to avoid calling setState synchronously within effect\n setTimeout(() => {\n createTweet()\n }, 0)\n }\n\n if (previousTweetIDRef) {\n previousTweetIDRef.current = tweetID\n }\n }\n }, [createTweet, onError, tweetID])\n\n return (\n <BlockWithAlignableContents\n className={className}\n format={format}\n nodeKey={nodeKey}\n >\n {isTweetLoading ? loadingComponent : null}\n <div\n className=\"editor-tweet-container\"\n ref={containerRef}\n />\n </BlockWithAlignableContents>\n )\n}\n\nexport type SerializedTweetNode = Spread<\n {\n id: string\n },\n SerializedDecoratorBlockNode\n>\n\nexport class TweetNode extends DecoratorBlockNode {\n __id: string\n\n static getType(): string {\n return \"tweet\"\n }\n\n static clone(node: TweetNode): TweetNode {\n return new TweetNode(node.__id, node.__format, node.__key)\n }\n\n static importJSON(serializedNode: SerializedTweetNode): TweetNode {\n const node = $createTweetNode(serializedNode.id)\n node.setFormat(serializedNode.format)\n return node\n }\n\n exportJSON(): SerializedTweetNode {\n return {\n ...super.exportJSON(),\n id: this.getId(),\n type: \"tweet\",\n version: 1,\n }\n }\n\n static importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {\n div: (domNode: HTMLDivElement) => {\n if (!domNode.hasAttribute(\"data-lexical-tweet-id\")) {\n return null\n }\n return {\n conversion: $convertTweetElement,\n priority: 2,\n }\n },\n }\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"div\")\n element.setAttribute(\"data-lexical-tweet-id\", this.__id)\n const text = document.createTextNode(this.getTextContent())\n element.append(text)\n return { element }\n }\n\n constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n super(format, key)\n this.__id = id\n }\n\n getId(): string {\n return this.__id\n }\n\n getTextContent(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Lexical override signature\n _includeInert?: boolean | undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Lexical override signature\n _includeDirectionless?: false | undefined\n ): string {\n return `https://x.com/i/web/status/${this.__id}`\n }\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n const embedBlockTheme = config.theme.embedBlock || {}\n const className = {\n base: embedBlockTheme.base || \"\",\n focus: embedBlockTheme.focus || \"\",\n }\n return (\n <TweetComponent\n className={className}\n format={this.__format}\n loadingComponent=\"Loading...\"\n nodeKey={this.getKey()}\n tweetID={this.__id}\n />\n )\n }\n}\n\nexport function $createTweetNode(tweetID: string): TweetNode {\n return new TweetNode(tweetID)\n}\n\nexport function $isTweetNode(\n node: TweetNode | LexicalNode | null | undefined\n): node is TweetNode {\n return node instanceof TweetNode\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"\n size?: \"default\" | \"sm\" | \"md\" | \"lg\" | \"icon\"\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant = \"default\", size = \"default\", type = \"button\", ...props }, ref) => {\n return (\n <button\n type={type}\n className={cn(\n \"editor-btn\",\n variant !== \"default\" && `editor-btn--${variant}`,\n size !== \"default\" && `editor-btn--size-${size}`,\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button }\n","export const unlockImageBoundaries = (image: HTMLElement) => {\n // Allow resizing beyond container width\n image.style.setProperty(\"max-width\", \"none\", \"important\")\n image.style.setProperty(\"max-height\", \"none\", \"important\")\n}\n\nexport const getImageAspectRatio = (image: HTMLElement | null) => {\n if (!image) {\n return 1\n }\n // HTMLImageElement has naturalWidth and naturalHeight properties\n const imgElement = image as HTMLImageElement\n if (imgElement.naturalWidth > 0 && imgElement.naturalHeight > 0) {\n return imgElement.naturalWidth / imgElement.naturalHeight\n }\n const { width, height } = image.getBoundingClientRect()\n if (!height) {\n return 1\n }\n return width / height\n}\n\nexport const getInnerWidth = (element: HTMLElement) => {\n const rectWidth = element.getBoundingClientRect().width\n if (rectWidth <= 0) {\n return 0\n }\n if (typeof window === \"undefined\") {\n return rectWidth\n }\n const styles = window.getComputedStyle(element)\n const paddingLeft = Number.parseFloat(styles.paddingLeft || \"0\") || 0\n const paddingRight = Number.parseFloat(styles.paddingRight || \"0\") || 0\n return Math.max(rectWidth - (paddingLeft + paddingRight), 0)\n}\n\nexport const getNearestContentWidth = (image: HTMLElement) => {\n if (typeof window === \"undefined\") {\n return null\n }\n\n let current: HTMLElement | null = image.parentElement\n while (current) {\n const display = window.getComputedStyle(current).display\n const isInline =\n display === \"inline\" ||\n display === \"inline-block\" ||\n display === \"inline-flex\" ||\n display === \"contents\"\n\n if (!isInline) {\n const width = getInnerWidth(current)\n if (width > 0) {\n return width\n }\n }\n current = current.parentElement\n }\n\n return null\n}\n\nconst FIELD_CONTENT_SELECTOR = \"[data-slot='field-content']\"\n\nconst getFieldContentWidth = (element: HTMLElement | null) => {\n if (!element) {\n return null\n }\n const fieldContent = element.closest(FIELD_CONTENT_SELECTOR) as\n | HTMLElement\n | null\n if (fieldContent) {\n const width = getInnerWidth(fieldContent)\n if (width > 0) {\n return width\n }\n }\n return null\n}\n\nconst clampWidth = (value: number | null, hardLimit?: number) => {\n if (!value || value <= 0) {\n return null\n }\n if (hardLimit && hardLimit > 0) {\n return Math.min(value, hardLimit)\n }\n return value\n}\n\nexport const getContainerWidth = (\n element: HTMLElement,\n editorRoot: HTMLElement | null,\n hardLimit?: number\n) => {\n const fieldContentWidth = clampWidth(\n getFieldContentWidth(element),\n hardLimit\n )\n if (fieldContentWidth) {\n return fieldContentWidth\n }\n const contentWidth = clampWidth(getNearestContentWidth(element), hardLimit)\n if (contentWidth) {\n return contentWidth\n }\n\n if (editorRoot) {\n const rootWidth = clampWidth(getInnerWidth(editorRoot), hardLimit)\n if (rootWidth) {\n return rootWidth\n }\n }\n\n const elementWidth = clampWidth(\n element.getBoundingClientRect().width,\n hardLimit\n )\n return elementWidth ?? undefined\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const IconSize = ({ size = \"medium\", children, className }: { size?: \"small\" | \"medium\" | \"large\" | \"sm\" | \"md\" | \"lg\" | \"xs\" | \"xl\", children: React.ReactNode, className?: string }) => {\n const sizeMap: Record<string, string> = {\n xs: \"editor-icon-xs\",\n small: \"editor-icon-sm\",\n medium: \"editor-icon-md\",\n large: \"editor-icon-lg\",\n xl: \"editor-icon-xl\",\n sm: \"editor-icon-sm\",\n md: \"editor-icon-md\",\n lg: \"editor-icon-lg\",\n }\n \n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<React.HTMLAttributes<HTMLElement>>, {\n className: cn(sizeMap[size] || sizeMap.medium, (children as React.ReactElement<React.HTMLAttributes<HTMLElement>>).props.className, className)\n })\n }\n \n return <>{children}</>\n}\n\nexport const TypographyP = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"editor-typography-p\", className)} {...props} />\n )\n)\nTypographyP.displayName = \"TypographyP\"\n\nexport const TypographyPSmall = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"editor-typography-p-small\", className)} {...props} />\n )\n)\nTypographyPSmall.displayName = \"TypographyPSmall\"\n\nexport const TypographySpanSmallMuted = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span ref={ref} className={cn(\"editor-typography-span-small-muted\", className)} {...props} />\n )\n)\nTypographySpanSmallMuted.displayName = \"TypographySpanSmallMuted\"\n","\"use client\"\nimport * as React from \"react\"\nimport { JSX, useRef } from \"react\"\nimport { calculateZoomLevel } from \"@lexical/utils\"\nimport type { LexicalEditor } from \"lexical\"\nimport { ImagePlus, ImageMinus, Maximize2, Minimize2, Trash2, AlignLeft, AlignCenter, AlignRight } from \"lucide-react\"\n\nimport { Button } from \"../ui/button\"\nimport {\n getContainerWidth,\n getImageAspectRatio,\n} from \"../editor-ui/image-sizing\"\nimport { useEditorContainer } from \"../context/editor-container-context\"\nimport { IconSize } from \"../ui/typography\"\n\nfunction clamp(value: number, min: number, max: number) {\n // Nếu max là Infinity, chỉ giới hạn min\n if (max === Infinity) {\n return Math.max(value, min)\n }\n return Math.min(Math.max(value, min), max)\n}\n\nconst Direction = {\n east: 1 << 0,\n north: 1 << 3,\n south: 1 << 1,\n west: 1 << 2,\n}\n\nconst RESIZE_HANDLES = [\n {\n key: \"n\",\n direction: Direction.north,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--n\",\n },\n {\n key: \"ne\",\n direction: Direction.north | Direction.east,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--ne\",\n },\n {\n key: \"e\",\n direction: Direction.east,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--e\",\n },\n {\n key: \"se\",\n direction: Direction.south | Direction.east,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--se\",\n },\n {\n key: \"s\",\n direction: Direction.south,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--s\",\n },\n {\n key: \"sw\",\n direction: Direction.south | Direction.west,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--sw\",\n },\n {\n key: \"w\",\n direction: Direction.west,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--w\",\n },\n {\n key: \"nw\",\n direction: Direction.north | Direction.west,\n className: \"editor-image-resizer-handle editor-image-resizer-handle--nw\",\n },\n] as const\n\nexport interface MediaResizerProps {\n editor: LexicalEditor\n buttonRef: { current: null | HTMLButtonElement }\n mediaRef: { current: null | HTMLElement }\n onResizeEnd: (width: \"inherit\" | number, height: \"inherit\" | number) => void\n onResizeStart: () => void\n showCaption?: boolean\n setShowCaption?: (show: boolean) => void\n captionsEnabled?: boolean\n onSetFullWidth?: () => void\n isFullWidth?: boolean\n unlockBoundaries?: boolean\n onReplaceMedia?: () => void\n maxWidth?: number\n onDelete?: () => void\n onAlign?: (format: \"left\" | \"center\" | \"right\") => void\n}\n\n/**\n * MediaResizer - Universal resizer for media elements (images, videos, etc.)\n * Supports both images with captions and videos without captions\n */\nexport function MediaResizer({\n onResizeStart,\n onResizeEnd,\n buttonRef,\n mediaRef,\n editor,\n showCaption = false,\n setShowCaption,\n captionsEnabled = false,\n onSetFullWidth,\n isFullWidth,\n unlockBoundaries = true,\n onReplaceMedia,\n maxWidth,\n onDelete,\n onAlign,\n}: MediaResizerProps): JSX.Element {\n const controlWrapperRef = useRef<HTMLDivElement>(null)\n const userSelect = useRef({\n priority: \"\",\n value: \"default\",\n })\n const positioningRef = useRef<{\n currentHeight: \"inherit\" | number\n currentWidth: \"inherit\" | number\n direction: number\n isResizing: boolean\n ratio: number\n startHeight: number\n startWidth: number\n startX: number\n startY: number\n maxWidthLimit: number\n }>({\n currentHeight: 0,\n currentWidth: 0,\n direction: 0,\n isResizing: false,\n ratio: 0,\n startHeight: 0,\n startWidth: 0,\n startX: 0,\n startY: 0,\n maxWidthLimit: Infinity,\n })\n const editorRootElement = editor.getRootElement()\n const maxHeightContainer = Infinity\n const editorContainer = useEditorContainer()\n const hardWidthLimit = maxWidth ?? editorContainer?.maxWidth\n\n const minWidth = 100\n const minHeight = 100\n\n React.useEffect(() => {\n // if (!unlockBoundaries) {\n // return\n // }\n // if (mediaRef.current) {\n // unlockImageBoundaries(mediaRef.current)\n // }\n }, [mediaRef, unlockBoundaries])\n\n const setStartCursor = (direction: number) => {\n const ew = direction === Direction.east || direction === Direction.west\n const ns = direction === Direction.north || direction === Direction.south\n const nwse =\n (direction & Direction.north && direction & Direction.west) ||\n (direction & Direction.south && direction & Direction.east)\n\n const cursorDir = ew ? \"ew\" : ns ? \"ns\" : nwse ? \"nwse\" : \"nesw\"\n\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n )\n }\n if (document.body !== null) {\n document.body.style.setProperty(\n \"cursor\",\n `${cursorDir}-resize`,\n \"important\"\n )\n userSelect.current.value = document.body.style.getPropertyValue(\n \"-webkit-user-select\"\n )\n userSelect.current.priority = document.body.style.getPropertyPriority(\n \"-webkit-user-select\"\n )\n document.body.style.setProperty(\n \"-webkit-user-select\",\n `none`,\n \"important\"\n )\n }\n }\n\n const setEndCursor = () => {\n if (editorRootElement !== null) {\n editorRootElement.style.setProperty(\"cursor\", \"text\")\n }\n if (document.body !== null) {\n document.body.style.setProperty(\"cursor\", \"default\")\n document.body.style.setProperty(\n \"-webkit-user-select\",\n userSelect.current.value,\n userSelect.current.priority\n )\n }\n }\n\n const handlePointerDown = (\n event: React.PointerEvent<HTMLDivElement>,\n direction: number\n ) => {\n if (!editor.isEditable()) {\n return\n }\n\n const media = mediaRef.current\n const controlWrapper = controlWrapperRef.current\n\n if (media !== null && controlWrapper !== null) {\n event.preventDefault()\n // if (unlockBoundaries) {\n // unlockImageBoundaries(media)\n // }\n const { width, height } = media.getBoundingClientRect()\n const zoom = calculateZoomLevel(media)\n const positioning = positioningRef.current\n positioning.startWidth = width\n positioning.startHeight = height\n positioning.ratio = getImageAspectRatio(media)\n positioning.currentWidth = width\n positioning.currentHeight = height\n positioning.startX = event.clientX / zoom\n positioning.startY = event.clientY / zoom\n positioning.isResizing = true\n positioning.direction = direction\n \n const containerWidth = getContainerWidth(media, editorRootElement, hardWidthLimit)\n positioning.maxWidthLimit = containerWidth || hardWidthLimit || Infinity\n\n setStartCursor(direction)\n onResizeStart()\n\n controlWrapper.classList.add(\"touch-action-none\")\n media.style.height = `${height}px`\n media.style.width = `${width}px`\n\n document.addEventListener(\"pointermove\", handlePointerMove)\n document.addEventListener(\"pointerup\", handlePointerUp)\n }\n }\n const getEffectiveMaxWidth = () => {\n const maxFromPositioning =\n typeof positioningRef.current.maxWidthLimit === \"number\"\n ? positioningRef.current.maxWidthLimit\n : Infinity\n const maxFromContext =\n typeof hardWidthLimit === \"number\" ? hardWidthLimit : Infinity\n return Math.min(maxFromPositioning, maxFromContext)\n }\n const handlePointerMove = (event: PointerEvent) => {\n const media = mediaRef.current\n const positioning = positioningRef.current\n\n const isHorizontal =\n positioning.direction & (Direction.east | Direction.west)\n const isVertical =\n positioning.direction & (Direction.south | Direction.north)\n\n if (media !== null && positioning.isResizing) {\n const zoom = calculateZoomLevel(media)\n // Corner cursor\n if (isHorizontal && isVertical) {\n let diff = Math.floor(positioning.startX - event.clientX / zoom)\n diff = positioning.direction & Direction.east ? -diff : diff\n\n const effectiveMaxWidth = getEffectiveMaxWidth()\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n effectiveMaxWidth || Infinity\n )\n const widthReachedLimit =\n effectiveMaxWidth !== Infinity &&\n width >= effectiveMaxWidth &&\n diff > 0\n\n const height = width / positioning.ratio\n media.style.width = `${width}px`\n media.style.height = `${height}px`\n positioning.currentHeight = height\n positioning.currentWidth = width\n if (widthReachedLimit) {\n return\n }\n } else if (isVertical) {\n let diff = Math.floor(positioning.startY - event.clientY / zoom)\n diff = positioning.direction & Direction.south ? -diff : diff\n\n const height = clamp(\n positioning.startHeight + diff,\n minHeight,\n maxHeightContainer\n )\n\n // Calculate width based on aspect ratio to maintain proportions\n const width = height * positioning.ratio\n media.style.height = `${height}px`\n media.style.width = `${width}px`\n positioning.currentHeight = height\n positioning.currentWidth = width\n } else {\n let diff = Math.floor(positioning.startX - event.clientX / zoom)\n diff = positioning.direction & Direction.east ? -diff : diff\n\n const effectiveMaxWidth = getEffectiveMaxWidth()\n const width = clamp(\n positioning.startWidth + diff,\n minWidth,\n effectiveMaxWidth || Infinity\n )\n const widthReachedLimit =\n effectiveMaxWidth !== Infinity &&\n width >= effectiveMaxWidth &&\n diff > 0\n\n // Calculate height based on aspect ratio to maintain proportions\n const height = width / positioning.ratio\n media.style.width = `${width}px`\n media.style.height = `${height}px`\n positioning.currentWidth = width\n positioning.currentHeight = height\n if (widthReachedLimit) {\n return\n }\n }\n }\n }\n const handlePointerUp = () => {\n const media = mediaRef.current\n const positioning = positioningRef.current\n const controlWrapper = controlWrapperRef.current\n if (media !== null && controlWrapper !== null && positioning.isResizing) {\n const width = positioning.currentWidth\n const height = positioning.currentHeight\n positioning.startWidth = 0\n positioning.startHeight = 0\n positioning.ratio = 0\n positioning.startX = 0\n positioning.startY = 0\n positioning.currentWidth = 0\n positioning.currentHeight = 0\n positioning.isResizing = false\n\n controlWrapper.classList.remove(\"touch-action-none\")\n\n setEndCursor()\n onResizeEnd(width, height)\n\n document.removeEventListener(\"pointermove\", handlePointerMove)\n document.removeEventListener(\"pointerup\", handlePointerUp)\n }\n }\n\n return (\n <>\n <div ref={controlWrapperRef}>\n {RESIZE_HANDLES.map(({ key, direction, className }) => (\n <div\n key={key}\n className={className}\n onPointerDown={(event) => {\n handlePointerDown(event, direction)\n }}\n />\n ))}\n </div>\n <div className=\"editor-mt-2 editor-flex editor-flex-wrap editor-justify-center editor-gap-2\">\n {onDelete && (\n <Button\n className=\"editor-image-delete-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onDelete}\n >\n <IconSize size=\"sm\" className=\"editor-mr-1-5\">\n <Trash2 />\n </IconSize>\n Delete\n </Button>\n )}\n {onAlign && (\n <div className=\"editor-flex editor-gap-1\">\n <Button\n className=\"editor-image-align-left-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onAlign(\"left\")}\n >\n <IconSize size=\"sm\">\n <AlignLeft />\n </IconSize>\n </Button>\n <Button\n className=\"editor-image-align-center-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onAlign(\"center\")}\n >\n <IconSize size=\"sm\">\n <AlignCenter />\n </IconSize>\n </Button>\n <Button\n className=\"editor-image-align-right-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => onAlign(\"right\")}\n >\n <IconSize size=\"sm\">\n <AlignRight />\n </IconSize>\n </Button>\n </div>\n )}\n {onReplaceMedia && (\n <Button\n className=\"editor-image-replace-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onReplaceMedia}\n >\n Change Image\n </Button>\n )}\n {onSetFullWidth && (\n <Button\n className=\"editor-image-full-width-button\"\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onSetFullWidth}\n >\n {isFullWidth ? (\n <>\n <IconSize size=\"sm\" className=\"editor-mr-1-5\">\n <Minimize2 />\n </IconSize>\n Reset Width\n </>\n ) : (\n <>\n <IconSize size=\"sm\" className=\"editor-mr-1-5\">\n <Maximize2 />\n </IconSize>\n Full Width\n </>\n )}\n </Button>\n )}\n {setShowCaption && captionsEnabled && (\n <Button\n className=\"editor-image-caption-button\"\n ref={buttonRef}\n type=\"button\"\n variant={\"outline\"}\n size=\"sm\"\n onClick={() => {\n setShowCaption(!showCaption)\n }}\n >\n {showCaption ? (\n <>\n <IconSize size=\"sm\" className=\"editor-mr-1-5\">\n <ImageMinus />\n </IconSize>\n Remove Caption\n </>\n ) : (\n <>\n <IconSize size=\"sm\" className=\"editor-mr-1-5\">\n <ImagePlus />\n </IconSize>\n Add Caption\n </>\n )}\n </Button>\n )}\n </div>\n </>\n )\n}\n\n// Backward compatibility: export as ImageResizer for existing code\nexport const ImageResizer = MediaResizer\n","import * as React from \"react\"\nimport { JSX } from \"react\"\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\"\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\"\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\"\nimport { mergeRegister } from \"@lexical/utils\"\nimport { ImageResizer } from \"../../editor-ui/image-resizer\"\nimport { getContainerWidth } from \"../../editor-ui/image-sizing\"\nimport { useEditorContainer } from \"../../context/editor-container-context\"\nimport { cn } from \"../../lib/utils\"\nimport {\n DecoratorBlockNode,\n SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\"\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from \"lexical\"\nimport { $getNodeByKey, CLICK_COMMAND, COMMAND_PRIORITY_LOW } from \"lexical\"\n\ntype YouTubeComponentProps = Readonly<{\n className: Readonly<{\n base: string\n focus: string\n }>\n format: ElementFormatType | null\n nodeKey: NodeKey\n videoID: string\n width: \"inherit\" | number\n height: \"inherit\" | number\n maxWidth: number\n fullWidth: boolean\n editor: LexicalEditor\n}>\n\nfunction YouTubeComponent({\n className,\n format,\n nodeKey,\n videoID,\n width,\n height,\n maxWidth,\n fullWidth,\n editor,\n}: YouTubeComponentProps) {\n const isEditable = useLexicalEditable()\n const [isSelected, setSelected, clearSelection] =\n useLexicalNodeSelection(nodeKey)\n const [isResizing, setIsResizing] = React.useState(false)\n const wrapperRef = React.useRef<HTMLDivElement | null>(null)\n const [wrapperElement, setWrapperElement] =\n React.useState<HTMLDivElement | null>(null)\n const buttonRef = React.useRef<HTMLButtonElement | null>(null)\n const [containerWidth, setContainerWidth] = React.useState<number>(maxWidth)\n const editorContainer = useEditorContainer()\n const editorHardWidthLimit = editorContainer?.maxWidth\n const updateNode = React.useCallback(\n (updater: (node: YouTubeNode) => void) => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if (node instanceof YouTubeNode) {\n updater(node)\n }\n })\n },\n [editor, nodeKey]\n )\n // YouTube videos have 16:9 aspect ratio (width:height)\n const aspectRatio = 16 / 9\n const clampToContainer = React.useCallback(\n (value: number) => {\n const limit =\n typeof editorHardWidthLimit === \"number\" && editorHardWidthLimit > 0\n ? editorHardWidthLimit\n : containerWidth || value\n return Math.min(value, limit)\n },\n [containerWidth, editorHardWidthLimit]\n )\n React.useEffect(() => {\n if (!wrapperElement) {\n return\n }\n const editorRoot = editor.getRootElement()\n const parentElement = wrapperElement.parentElement\n const fieldContentElement = wrapperElement.closest(\n \"[data-slot='field-content']\"\n ) as HTMLElement | null\n const getMeasurementTarget = () => parentElement ?? wrapperElement\n const updateAvailableWidth = () => {\n const measurementTarget = getMeasurementTarget()\n const widthValue =\n getContainerWidth(\n measurementTarget,\n editorRoot,\n editorHardWidthLimit\n ) || maxWidth\n if (widthValue > 0) {\n setContainerWidth((prev) => (prev === widthValue ? prev : widthValue))\n }\n }\n updateAvailableWidth()\n const hasResizeObserver =\n typeof window !== \"undefined\" && typeof ResizeObserver !== \"undefined\"\n let observer: ResizeObserver | null = null\n if (hasResizeObserver) {\n observer = new ResizeObserver(updateAvailableWidth)\n const elementsToObserve = new Set<HTMLElement>()\n elementsToObserve.add(wrapperElement)\n if (parentElement && parentElement !== wrapperElement) {\n elementsToObserve.add(parentElement)\n }\n if (fieldContentElement) {\n elementsToObserve.add(fieldContentElement)\n }\n if (\n editorRoot &&\n editorRoot instanceof HTMLElement &&\n editorRoot !== parentElement &&\n editorRoot !== wrapperElement\n ) {\n elementsToObserve.add(editorRoot)\n }\n elementsToObserve.forEach((element) => observer?.observe(element))\n return () => observer?.disconnect()\n }\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"resize\", updateAvailableWidth)\n return () => window.removeEventListener(\"resize\", updateAvailableWidth)\n }\n }, [editor, editorHardWidthLimit, maxWidth, wrapperElement])\n React.useEffect(() => {\n if (!containerWidth) {\n return\n }\n if (\n editorHardWidthLimit &&\n containerWidth > editorHardWidthLimit\n ) {\n setContainerWidth(editorHardWidthLimit)\n return\n }\n updateNode((node) => {\n if (node.getMaxWidth() !== containerWidth) {\n node.setMaxWidth(containerWidth)\n }\n })\n }, [containerWidth, editorHardWidthLimit, updateNode])\n const availableWidth = Math.min(\n containerWidth || maxWidth,\n editorHardWidthLimit || containerWidth || maxWidth\n )\n const targetWidth =\n typeof width === \"number\" ? width : availableWidth\n const boundedWidth =\n typeof targetWidth === \"number\"\n ? Math.min(targetWidth, availableWidth)\n : availableWidth\n const renderedWidth = fullWidth ? availableWidth : boundedWidth\n const safeRenderedWidth = editorHardWidthLimit\n ? Math.min(renderedWidth, editorHardWidthLimit)\n : renderedWidth\n // CSS aspect-ratio expects width/height, not height/width\n const cssAspectRatio =\n typeof width === \"number\" && typeof height === \"number\" && height > 0\n ? width / height\n : aspectRatio\n const isFocused = (isSelected || isResizing) && isEditable\n const disablePlaybackInteractions = isEditable\n const iframeWidth = safeRenderedWidth\n const iframeHeight = Math.round(iframeWidth / aspectRatio)\n const handleWrapperRef = React.useCallback((node: HTMLDivElement | null) => {\n wrapperRef.current = node\n setWrapperElement(node)\n }, [])\n React.useEffect(() => {\n if (!isEditable) {\n return\n }\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (event) => {\n const wrapper = wrapperRef.current\n if (!wrapper || !(event.target instanceof Node)) {\n return false\n }\n if (!wrapper.contains(event.target)) {\n return false\n }\n if (isResizing) {\n return true\n }\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n clearSelection()\n setSelected(true)\n }\n event.preventDefault()\n return true\n },\n COMMAND_PRIORITY_LOW\n )\n )\n }, [clearSelection, editor, isEditable, isResizing, isSelected, setSelected])\n React.useEffect(() => {\n if (\n !containerWidth ||\n typeof width !== \"number\" ||\n fullWidth ||\n width <= containerWidth\n ) {\n return\n }\n updateNode((node) => {\n const nextWidth = clampToContainer(width)\n const nextHeight = Math.round(nextWidth / aspectRatio)\n node.setWidthAndHeight(nextWidth, nextHeight)\n })\n }, [\n aspectRatio,\n clampToContainer,\n containerWidth,\n editorHardWidthLimit,\n fullWidth,\n updateNode,\n width,\n ])\n\n return (\n <BlockWithAlignableContents\n className={className}\n format={format}\n nodeKey={nodeKey}\n >\n <div\n style={{\n width: fullWidth\n ? \"100%\"\n : `${Math.max(safeRenderedWidth, 0)}px`,\n aspectRatio: cssAspectRatio,\n maxWidth: \"100%\",\n height: \"auto\",\n }}\n className={cn(\n \"editor-embed-frame relative inline-block\",\n fullWidth ? \"editor-embed-frame--full\" : \"editor-embed-frame--inline\"\n )}\n data-editor-embed-fullwidth={fullWidth ? \"true\" : \"false\"}\n ref={handleWrapperRef}\n >\n <iframe\n width={iframeWidth}\n height={iframeHeight}\n src={`https://www.youtube-nocookie.com/embed/${videoID}`}\n frameBorder=\"0\"\n allow={\n disablePlaybackInteractions\n ? \"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n : \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n }\n allowFullScreen={true}\n title=\"YouTube video\"\n className={`block absolute inset-0 h-full w-full ${\n disablePlaybackInteractions ? \"pointer-events-none\" : \"\"\n }`}\n tabIndex={disablePlaybackInteractions ? -1 : undefined}\n aria-label={\n disablePlaybackInteractions\n ? \"YouTube video preview disabled while editing\"\n : \"YouTube video\"\n }\n />\n {isFocused && (\n <ImageResizer\n editor={editor}\n buttonRef={buttonRef}\n mediaRef={wrapperRef}\n onResizeStart={() => {\n setIsResizing(true)\n updateNode((node) => node.setFullWidth(false))\n }}\n onResizeEnd={(nextWidth, nextHeight) => {\n setTimeout(() => setIsResizing(false), 200)\n const finalWidth =\n typeof nextWidth === \"number\"\n ? clampToContainer(nextWidth)\n : nextWidth\n const finalHeight =\n typeof finalWidth === \"number\"\n ? Math.round(finalWidth / aspectRatio)\n : nextHeight\n updateNode((node) =>\n node.setWidthAndHeight(finalWidth, finalHeight)\n )\n }}\n onSetFullWidth={() => {\n updateNode((node) => node.setFullWidth(true))\n }}\n />\n )}\n </div>\n </BlockWithAlignableContents>\n )\n}\n\nexport type SerializedYouTubeNode = Spread<\n {\n videoID: string\n width?: number\n height?: number\n maxWidth?: number\n fullWidth?: boolean\n },\n SerializedDecoratorBlockNode\n>\n\nfunction $convertYoutubeElement(\n domNode: HTMLElement\n): null | DOMConversionOutput {\n const videoID = domNode.getAttribute(\"data-lexical-youtube\")\n if (videoID) {\n const node = $createYouTubeNode(videoID)\n return { node }\n }\n return null\n}\n\nexport class YouTubeNode extends DecoratorBlockNode {\n __id: string\n __width: \"inherit\" | number\n __height: \"inherit\" | number\n __maxWidth: number\n __fullWidth: boolean\n\n static getType(): string {\n return \"youtube\"\n }\n\n static clone(node: YouTubeNode): YouTubeNode {\n return new YouTubeNode(\n node.__id,\n node.__format,\n node.__width,\n node.__height,\n node.__maxWidth,\n node.__fullWidth,\n node.__key\n )\n }\n\n static importJSON(serializedNode: SerializedYouTubeNode): YouTubeNode {\n const node = $createYouTubeNode(\n serializedNode.videoID,\n serializedNode.width,\n serializedNode.height,\n serializedNode.maxWidth ?? 640,\n serializedNode.fullWidth\n )\n node.setFormat(serializedNode.format)\n return node\n }\n\n exportJSON(): SerializedYouTubeNode {\n return {\n ...super.exportJSON(),\n type: \"youtube\",\n version: 1,\n videoID: this.__id,\n width: this.__width === \"inherit\" ? undefined : (this.__width as number),\n height:\n this.__height === \"inherit\" ? undefined : (this.__height as number),\n maxWidth: this.__maxWidth,\n fullWidth: this.__fullWidth,\n }\n }\n\n constructor(\n id: string,\n format?: ElementFormatType,\n width?: \"inherit\" | number,\n height?: \"inherit\" | number,\n maxWidth: number = 640,\n fullWidth?: boolean,\n key?: NodeKey\n ) {\n super(format, key)\n this.__id = id\n this.__width = width ?? \"inherit\"\n this.__height = height ?? \"inherit\"\n this.__maxWidth = maxWidth\n // Default to not full width so align controls remain effective\n this.__fullWidth = fullWidth ?? false\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"iframe\")\n element.setAttribute(\"data-lexical-youtube\", this.__id)\n if (typeof this.__width === \"number\") {\n element.setAttribute(\"width\", String(this.__width))\n }\n if (typeof this.__height === \"number\") {\n element.setAttribute(\"height\", String(this.__height))\n }\n element.setAttribute(\n \"src\",\n `https://www.youtube-nocookie.com/embed/${this.__id}`\n )\n element.setAttribute(\"frameborder\", \"0\")\n element.setAttribute(\"loading\", \"lazy\")\n element.setAttribute(\n \"allow\",\n \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n )\n element.setAttribute(\"allowfullscreen\", \"true\")\n element.setAttribute(\"title\", \"YouTube video\")\n return { element }\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n iframe: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-youtube\")) {\n return null\n }\n return {\n conversion: $convertYoutubeElement,\n priority: 1,\n }\n },\n }\n }\n\n updateDOM(): false {\n return false\n }\n\n getId(): string {\n return this.__id\n }\n\n getTextContent(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Lexical override signature\n _includeInert?: boolean | undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Lexical override signature\n _includeDirectionless?: false | undefined\n ): string {\n return `https://www.youtube.com/watch?v=${this.__id}`\n }\n\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n const embedBlockTheme = config.theme.embedBlock || {}\n const className = {\n base: embedBlockTheme.base || \"\",\n focus: embedBlockTheme.focus || \"\",\n }\n return (\n <YouTubeComponent\n className={className}\n format={this.__format}\n nodeKey={this.getKey()}\n videoID={this.__id}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n fullWidth={this.__fullWidth}\n editor={editor}\n />\n )\n }\n\n setWidthAndHeight(width: \"inherit\" | number, height: \"inherit\" | number) {\n const writable = this.getWritable()\n writable.__width = width\n writable.__height = height\n }\n getMaxWidth(): number {\n return this.__maxWidth\n }\n\n setMaxWidth(maxWidth: number) {\n const writable = this.getWritable()\n writable.__maxWidth = maxWidth\n }\n\n isFullWidth(): boolean {\n return this.__fullWidth\n }\n\n setFullWidth(fullWidth: boolean) {\n const writable = this.getWritable()\n writable.__fullWidth = fullWidth\n }\n}\n\nexport function $createYouTubeNode(\n videoID: string,\n width?: number,\n height?: number,\n maxWidth?: number,\n fullWidth?: boolean\n): YouTubeNode {\n return new YouTubeNode(videoID, undefined, width, height, maxWidth, fullWidth)\n}\n\nexport function $isYouTubeNode(\n node: YouTubeNode | LexicalNode | null | undefined\n): node is YouTubeNode {\n return node instanceof YouTubeNode\n}\n","import type {\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedTextNode,\n Spread,\n} from \"lexical\"\nimport { $applyNodeReplacement, TextNode } from \"lexical\"\n\nexport type SerializedEmojiNode = Spread<\n {\n className: string\n },\n SerializedTextNode\n>\n\nexport class EmojiNode extends TextNode {\n __className: string\n\n static getType(): string {\n return \"emoji\"\n }\n\n static clone(node: EmojiNode): EmojiNode {\n return new EmojiNode(node.__className, node.__text, node.__key)\n }\n\n constructor(className: string, text: string, key?: NodeKey) {\n super(text, key)\n this.__className = className\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement(\"span\")\n const inner = super.createDOM(config)\n dom.className = this.__className\n inner.className = \"emoji-inner\"\n dom.appendChild(inner)\n return dom\n }\n\n updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean {\n const inner = dom.firstChild\n if (inner === null) {\n return true\n }\n super.updateDOM(prevNode, inner as HTMLElement, config)\n return false\n }\n\n static importJSON(serializedNode: SerializedEmojiNode): EmojiNode {\n return $createEmojiNode(\n serializedNode.className,\n serializedNode.text\n ).updateFromJSON(serializedNode)\n }\n\n exportJSON(): SerializedEmojiNode {\n return {\n ...super.exportJSON(),\n className: this.getClassName(),\n }\n }\n\n getClassName(): string {\n const self = this.getLatest()\n return self.__className\n }\n}\n\nexport function $isEmojiNode(\n node: LexicalNode | null | undefined\n): node is EmojiNode {\n return node instanceof EmojiNode\n}\n\nexport function $createEmojiNode(\n className: string,\n emojiText: string\n): EmojiNode {\n const node = new EmojiNode(className, emojiText).setMode(\"token\")\n return $applyNodeReplacement(node)\n}\n","import * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { cn } from \"../lib/utils\"\n\ninterface DialogProps {\n open?: boolean\n onOpenChange?: (open: boolean) => void\n children: React.ReactNode\n}\n\ninterface DialogContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null)\n\nexport function Dialog({ open = false, onOpenChange = () => {}, children }: DialogProps) {\n return (\n <DialogContext.Provider value={{ open, onOpenChange }}>\n {children}\n </DialogContext.Provider>\n )\n}\n\nexport function DialogTrigger({ asChild, children, className, ...props }: React.HTMLAttributes<HTMLElement> & { asChild?: boolean, children: React.ReactNode }) {\n const context = React.useContext(DialogContext)\n \n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n context?.onOpenChange(true)\n if (React.isValidElement(children)) {\n (children as React.ReactElement<{ onClick?: React.MouseEventHandler<HTMLElement> }>).props.onClick?.(e)\n }\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<any>, {\n onClick: handleClick,\n ...props\n })\n }\n\n return (\n <button type=\"button\" onClick={handleClick} className={className} {...props}>\n {children}\n </button>\n )\n}\n\nexport function DialogClose({ asChild, children, className, ...props }: React.HTMLAttributes<HTMLElement> & { asChild?: boolean, children: React.ReactNode }) {\n const context = React.useContext(DialogContext)\n \n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n context?.onOpenChange(false)\n if (React.isValidElement(children)) {\n (children as React.ReactElement<{ onClick?: React.MouseEventHandler<HTMLElement> }>).props.onClick?.(e)\n }\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<any>, {\n onClick: handleClick,\n ...props\n })\n }\n\n return (\n <button type=\"button\" onClick={handleClick} className={className} {...props}>\n {children}\n </button>\n )\n}\n\nexport interface DialogContentProps extends React.HTMLAttributes<HTMLDivElement> {\n disableOutsideClick?: boolean\n}\n\nexport function DialogContent({ children, className, disableOutsideClick, ...props }: DialogContentProps) {\n const context = React.useContext(DialogContext)\n const [mounted, setMounted] = React.useState(false)\n\n React.useEffect(() => {\n setMounted(true)\n return () => setMounted(false)\n }, [])\n\n if (!mounted || !context?.open) return null\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && !disableOutsideClick) {\n context.onOpenChange(false)\n }\n }\n\n const content = (\n <div \n className=\"editor-dialog-overlay\" \n data-state=\"open\"\n onClick={handleOverlayClick}\n >\n <div \n className={cn(\"editor-dialog-content\", className)} \n data-state=\"open\"\n {...props}\n >\n {children}\n <button \n type=\"button\"\n className=\"editor-dialog-content__close\" \n onClick={() => context.onOpenChange(false)}\n >\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"editor-icon-sm\">\n <path d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n <span className=\"editor-sr-only\">Close</span>\n </button>\n </div>\n </div>\n )\n\n return createPortal(content, document.body)\n}\n\nexport function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"editor-dialog-header\", className)} {...props} />\n )\n}\n\nexport function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"editor-dialog-footer\", className)} {...props} />\n )\n}\n\nexport function DialogTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return (\n <h3 className={cn(\"editor-dialog-header__title\", className)} {...props} />\n )\n}\n\nexport function DialogDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p className={cn(\"editor-dialog-header__description\", className)} {...props} />\n )\n}\n","export const CAN_USE_DOM: boolean =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement>\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\"editor-input\", className)}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nconst Label = React.forwardRef<\n HTMLLabelElement,\n React.LabelHTMLAttributes<HTMLLabelElement>\n>(({ className, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(\n \"editor-label\",\n props[\"aria-disabled\"] && \"editor-label--disabled\",\n className\n )}\n {...props}\n />\n))\nLabel.displayName = \"Label\"\n\nexport { Label }\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nconst TabsContext = React.createContext<{\n value: string\n onValueChange: (value: string) => void\n} | null>(null)\n\nexport function Tabs({\n defaultValue,\n value: controlledValue,\n onValueChange,\n children,\n className,\n ...props\n}: {\n defaultValue?: string\n value?: string\n onValueChange?: (value: string) => void\n children: React.ReactNode\n className?: string\n}) {\n const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue || \"\")\n const value = controlledValue ?? uncontrolledValue\n const setValue = onValueChange ?? setUncontrolledValue\n\n return (\n <TabsContext.Provider value={{ value, onValueChange: setValue }}>\n <div className={cn(className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n}\n\nexport function TabsList({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\n \"editor-tabs-list\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport function TabsTrigger({ value, className, children, ...props }: React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string }) {\n const context = React.useContext(TabsContext)\n const isSelected = context?.value === value\n\n return (\n <button\n type=\"button\"\n className={cn(\n \"editor-tabs-trigger\",\n className\n )}\n data-state={isSelected ? \"active\" : \"inactive\"}\n onClick={() => context?.onValueChange(value)}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport function TabsContent({ value, className, children, ...props }: React.HTMLAttributes<HTMLDivElement> & { value: string }) {\n const context = React.useContext(TabsContext)\n const isSelected = context?.value === value\n\n if (!isSelected) return null\n\n return (\n <div\n className={cn(\n \"editor-tabs-content\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n","\"use client\"\n\nimport React, { createContext, useContext, ReactNode } from \"react\"\n\nexport interface ImageItem {\n fileName: string\n originalName: string\n size: number\n mimeType: string\n url: string\n relativePath: string\n createdAt: number\n}\n\nexport interface FolderNode {\n name: string\n path: string\n images: ImageItem[]\n subfolders: FolderNode[]\n}\n\nexport interface EditorUploadsContextType {\n isLoading: boolean\n folderTree?: FolderNode\n}\n\nconst EditorUploadsContext = createContext<EditorUploadsContextType | undefined>(undefined)\n\nexport function EditorUploadsProvider({\n children,\n value,\n}: {\n children: ReactNode\n value: EditorUploadsContextType\n}) {\n return (\n <EditorUploadsContext.Provider value={value}>\n {children}\n </EditorUploadsContext.Provider>\n )\n}\n\nexport function useEditorUploads() {\n const context = useContext(EditorUploadsContext)\n if (context === undefined) {\n // Default values if provider is not used\n return {\n isLoading: false,\n folderTree: undefined,\n }\n }\n return context\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nconst CollapsibleContext = React.createContext<{\n open: boolean\n setOpen: (open: boolean) => void\n} | null>(null)\n\nexport function Collapsible({\n children,\n open: controlledOpen,\n onOpenChange,\n className,\n ...props\n}: {\n children: React.ReactNode\n open?: boolean\n onOpenChange?: (open: boolean) => void\n className?: string\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n\n return (\n <CollapsibleContext.Provider value={{ open, setOpen }}>\n <div className={cn(\"editor-collapsible\", className)} data-state={open ? \"open\" : \"closed\"} {...props}>\n {children}\n </div>\n </CollapsibleContext.Provider>\n )\n}\n\nexport function CollapsibleTrigger({ children, asChild, ...props }: React.HTMLAttributes<HTMLElement> & { asChild?: boolean, children: React.ReactNode }) {\n const context = React.useContext(CollapsibleContext)\n if (!context) throw new Error(\"CollapsibleTrigger must be used within Collapsible\")\n\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n context.setOpen(!context.open)\n if (React.isValidElement(children)) {\n (children as React.ReactElement<{ onClick?: React.MouseEventHandler<HTMLElement> }>).props.onClick?.(e)\n }\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<any>, { onClick: handleClick, ...props })\n }\n\n return (\n <button type=\"button\" onClick={handleClick} {...props}>\n {children}\n </button>\n )\n}\n\nexport function CollapsibleContent({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n const context = React.useContext(CollapsibleContext)\n if (!context) throw new Error(\"CollapsibleContent must be used within Collapsible\")\n\n if (!context.open) return null\n\n return (\n <div className={cn(\"editor-overflow-hidden\", className)} {...props}>\n {children}\n </div>\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect, useRef, useState } from \"react\"\nimport * as React from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $wrapNodeInElement, mergeRegister } from \"@lexical/utils\"\nimport {\n $createParagraphNode,\n $createRangeSelection,\n $getSelection,\n $insertNodes,\n $isNodeSelection,\n $isRootOrShadowRoot,\n $setSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n createCommand,\n DRAGOVER_COMMAND,\n DRAGSTART_COMMAND,\n DROP_COMMAND,\n LexicalCommand,\n LexicalEditor,\n} from \"lexical\"\n\nimport {\n $createImageNode,\n $isImageNode,\n ImageNode,\n ImagePayload,\n} from \"../nodes/image-node\"\nimport { CAN_USE_DOM } from \"../shared/can-use-dom\"\nimport { Button } from \"../ui/button\"\nimport { DialogFooter } from \"../ui/dialog\"\nimport { Input } from \"../ui/input\"\nimport { Label } from \"../ui/label\"\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../ui/tabs\"\nimport { useEditorUploads, FolderNode } from \"../context/uploads-context\"\nimport { Loader2, Folder, ChevronRight } from \"lucide-react\"\nimport Image from \"next/image\"\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from \"../ui/collapsible\"\nimport { TypographyP, TypographySpanSmallMuted, IconSize } from \"../ui/typography\"\n\nexport type InsertImagePayload = Readonly<ImagePayload>\n\nconst getDOMSelection = (targetWindow: Window | null): Selection | null =>\n CAN_USE_DOM ? (targetWindow || window).getSelection() : null\n\nexport const INSERT_IMAGE_COMMAND: LexicalCommand<InsertImagePayload> =\n createCommand(\"INSERT_IMAGE_COMMAND\")\n\nexport function InsertImageUriDialogBody({\n onClick,\n}: {\n onClick: (payload: InsertImagePayload) => void\n}) {\n const [src, setSrc] = useState(\"\")\n const [altText, setAltText] = useState(\"\")\n\n const isDisabled = src === \"\"\n\n return (\n <div className=\"editor-form-grid\">\n <div className=\"editor-form-item\">\n <Label htmlFor=\"image-url\">Image URL</Label>\n <Input\n id=\"image-url\"\n placeholder=\"i.e. https://source.unsplash.com/random\"\n onChange={(e) => setSrc(e.target.value)}\n value={src}\n data-test-id=\"image-modal-url-input\"\n />\n </div>\n <div className=\"editor-form-item\">\n <Label htmlFor=\"alt-text\">Alt Text</Label>\n <Input\n id=\"alt-text\"\n placeholder=\"Random unsplash image\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n <DialogFooter>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n onClick={() => onClick({ altText, src })}\n data-test-id=\"image-modal-confirm-btn\"\n >\n Confirm\n </Button>\n </DialogFooter>\n </div>\n )\n}\n\nexport function InsertImageUploadedDialogBody({\n onClick,\n}: {\n onClick: (payload: InsertImagePayload) => void\n}) {\n const [src, setSrc] = useState(\"\")\n const [altText, setAltText] = useState(\"\")\n\n const isDisabled = src === \"\"\n\n const loadImage = (files: FileList | null) => {\n const reader = new FileReader()\n reader.onload = function () {\n if (typeof reader.result === \"string\") {\n setSrc(reader.result)\n }\n return \"\"\n }\n if (files && files[0]) {\n reader.readAsDataURL(files[0]) \n }\n }\n\n return (\n <div className=\"editor-form-grid\">\n <div className=\"editor-form-item\">\n <Label htmlFor=\"image-upload\">Image Upload</Label>\n <Input\n id=\"image-upload\"\n type=\"file\"\n onChange={(e) => loadImage(e.target.files)}\n accept=\"image/*\"\n data-test-id=\"image-modal-file-upload\"\n />\n </div>\n <div className=\"editor-form-item\">\n <Label htmlFor=\"alt-text\">Alt Text</Label>\n <Input\n id=\"alt-text\"\n placeholder=\"Descriptive alternative text\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-alt-text-input\"\n />\n </div>\n <DialogFooter>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n onClick={() => onClick({ altText, src })}\n data-test-id=\"image-modal-file-upload-btn\"\n >\n Confirm\n </Button>\n </DialogFooter>\n </div>\n )\n}\n\n// Component để hiển thị folder tree cho image picker\nfunction ImagePickerFolderTree({\n folder,\n level = 0,\n openFolders,\n setOpenFolders,\n selectedImage,\n onImageSelect,\n}: {\n folder: FolderNode\n level?: number\n openFolders: Set<string>\n setOpenFolders: React.Dispatch<React.SetStateAction<Set<string>>>\n selectedImage: string | null\n onImageSelect: (imageUrl: string, originalName: string) => void\n}) {\n const hasContent = folder.images.length > 0 || folder.subfolders.length > 0\n const isOpen = openFolders.has(folder.path)\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n if (open) {\n setOpenFolders((prev) => {\n const newSet = new Set(prev)\n newSet.add(folder.path)\n return newSet\n })\n } else {\n setOpenFolders((prev) => {\n const newSet = new Set(prev)\n newSet.delete(folder.path)\n return newSet\n })\n }\n },\n [folder.path, setOpenFolders]\n )\n\n if (!hasContent) return null\n\n return (\n <Collapsible key={folder.path} open={isOpen} onOpenChange={handleOpenChange} className=\"editor-mb-2\">\n <CollapsibleTrigger className=\"editor-folder-tree-trigger\">\n <IconSize size=\"xs\" className={`editor-transition-transform editor-shrink-0 ${isOpen ? \"editor-rotate-90\" : \"\"}`}>\n <ChevronRight />\n </IconSize>\n <IconSize size=\"xs\" className=\"editor-shrink-0 editor-text-muted-foreground\">\n <Folder />\n </IconSize>\n <TypographyP className=\"editor-truncate\">{folder.name}</TypographyP>\n <TypographySpanSmallMuted className=\"editor-ml-auto editor-shrink-0\">\n {`${folder.images.length} hình${folder.subfolders.length > 0 ? `, ${folder.subfolders.length} thư mục` : \"\"}`}\n </TypographySpanSmallMuted>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"editor-ml-4 editor-mt-1\">\n {/* Render images in this folder */}\n {folder.images.length > 0 && (\n <div className=\"editor-image-grid\">\n {folder.images.map((image) => (\n <button\n key={image.fileName}\n type=\"button\"\n onClick={() => onImageSelect(image.url, image.originalName)}\n onDoubleClick={() => {\n // Double-click để insert ngay\n onImageSelect(image.url, image.originalName)\n // Trigger confirm sau một chút để state được update\n setTimeout(() => {\n const event = new Event(\"confirm-image-insert\", { bubbles: true })\n document.dispatchEvent(event)\n }, 100)\n }}\n className={`editor-image-btn ${\n selectedImage === image.url\n ? \"editor-image-btn--selected\"\n : \"\"\n }`}\n title={`${image.originalName} - Double-click để chèn ngay`}\n >\n <Image\n src={image.url}\n alt={image.originalName}\n title={image.originalName}\n fill\n className=\"editor-object-cover editor-article-image editor-article-image-ux-impr editor-article-image-new editor-expandable\"\n sizes=\"(max-width: 768px) 25vw, 20vw\"\n unoptimized\n loading=\"eager\"\n />\n </button>\n ))}\n </div>\n )}\n {/* Render subfolders */}\n {folder.subfolders.map((subfolder) => (\n <ImagePickerFolderTree\n key={subfolder.path}\n folder={subfolder}\n level={level + 1}\n openFolders={openFolders}\n setOpenFolders={setOpenFolders}\n selectedImage={selectedImage}\n onImageSelect={onImageSelect}\n />\n ))}\n </CollapsibleContent>\n </Collapsible>\n )\n}\n\nexport function InsertImageUploadsDialogBody({\n onClick,\n}: {\n onClick: (payload: InsertImagePayload) => void\n}) {\n const [selectedImage, setSelectedImage] = useState<string | null>(null)\n const [altText, setAltText] = useState(\"\")\n const [openFolders, setOpenFolders] = useState<Set<string>>(new Set())\n\n const { folderTree, isLoading } = useEditorUploads()\n\n const isDisabled = !selectedImage\n\n const handleImageSelect = React.useCallback((imageUrl: string, originalName: string) => {\n setSelectedImage(imageUrl)\n setAltText((prev) => prev || originalName)\n }, [])\n\n const handleConfirm = React.useCallback(() => {\n if (selectedImage) {\n // Đảm bảo URL là absolute nếu là relative URL từ uploads\n let imageUrl = selectedImage\n if (imageUrl.startsWith(\"/api/uploads\")) {\n // Relative URL từ uploads - giữ nguyên vì nó sẽ hoạt động với same-origin\n imageUrl = selectedImage\n } else if (!imageUrl.startsWith(\"http://\") && !imageUrl.startsWith(\"https://\") && !imageUrl.startsWith(\"data:\")) {\n // Nếu không phải absolute URL và không phải data URL, thêm protocol\n imageUrl = `https://${imageUrl}`\n }\n \n onClick({ altText: altText || \"\", src: imageUrl })\n }\n }, [selectedImage, altText, onClick])\n\n // Listen for double-click confirm event\n React.useEffect(() => {\n const handleDoubleClickConfirm = () => {\n // Use a ref to get the latest selectedImage\n setTimeout(() => {\n handleConfirm()\n }, 50)\n }\n \n document.addEventListener(\"confirm-image-insert\", handleDoubleClickConfirm)\n return () => {\n document.removeEventListener(\"confirm-image-insert\", handleDoubleClickConfirm)\n }\n }, [handleConfirm])\n\n // Auto-expand root folders on mount\n React.useEffect(() => {\n if (folderTree && folderTree.subfolders.length > 0) {\n setOpenFolders(new Set(folderTree.subfolders.map((f) => f.path)))\n }\n }, [folderTree])\n\n return (\n <div className=\"editor-form-grid\">\n <div className=\"editor-form-item\">\n <Label>Chọn hình ảnh từ thư viện</Label>\n {isLoading ? (\n <div className=\"editor-flex-center-justify-py-8\">\n <Loader2 className=\"editor-loader\" />\n </div>\n ) : !folderTree || (folderTree.subfolders.length === 0 && folderTree.images.length === 0) ? (\n <div className=\"editor-empty-state\">\n <TypographySpanSmallMuted>Chưa có hình ảnh nào được upload</TypographySpanSmallMuted>\n </div>\n ) : (\n <div className=\"editor-scroll-area\">\n {/* Render root level images if any */}\n {folderTree.images.length > 0 && (\n <div className=\"editor-mb-3\">\n <TypographySpanSmallMuted className=\"editor-mb-2 editor-px-1\">Root</TypographySpanSmallMuted>\n <div className=\"editor-image-grid\">\n {folderTree.images.map((image) => (\n <button\n key={image.fileName}\n type=\"button\"\n onClick={() => handleImageSelect(image.url, image.originalName)}\n onDoubleClick={() => {\n handleImageSelect(image.url, image.originalName)\n setTimeout(() => {\n const event = new Event(\"confirm-image-insert\", { bubbles: true })\n document.dispatchEvent(event)\n }, 100)\n }}\n className={`editor-image-btn ${\n selectedImage === image.url\n ? \"editor-image-btn--selected\"\n : \"\"\n }`}\n title={`${image.originalName} - Double-click để chèn ngay`}\n >\n <Image\n src={image.url}\n alt={image.originalName}\n title={image.originalName}\n fill\n className=\"editor-object-cover editor-article-image editor-article-image-ux-impr editor-article-image-new editor-expandable\"\n sizes=\"(max-width: 768px) 25vw, 20vw\"\n unoptimized\n loading=\"eager\"\n />\n </button>\n ))}\n </div>\n </div>\n )}\n {/* Render folder tree */}\n {folderTree.subfolders.map((subfolder) => (\n <ImagePickerFolderTree\n key={subfolder.path}\n folder={subfolder}\n level={0}\n openFolders={openFolders}\n setOpenFolders={setOpenFolders}\n selectedImage={selectedImage}\n onImageSelect={handleImageSelect}\n />\n ))}\n </div>\n )}\n </div>\n {selectedImage && (\n <div className=\"editor-form-item\">\n <Label htmlFor=\"alt-text-uploads\">Alt Text</Label>\n <Input\n id=\"alt-text-uploads\"\n placeholder=\"Mô tả hình ảnh\"\n onChange={(e) => setAltText(e.target.value)}\n value={altText}\n data-test-id=\"image-modal-uploads-alt-text-input\"\n />\n </div>\n )}\n <DialogFooter>\n <Button\n type=\"submit\"\n disabled={isDisabled}\n onClick={handleConfirm}\n data-test-id=\"image-modal-uploads-confirm-btn\"\n >\n Chèn hình ảnh\n </Button>\n </DialogFooter>\n </div>\n )\n}\n\nexport function InsertImageDialog({\n activeEditor,\n onClose,\n onInsert,\n activeTab = \"uploads\",\n}: {\n activeEditor: LexicalEditor\n onClose: () => void\n onInsert?: (payload: InsertImagePayload, close: () => void) => void\n activeTab?: string\n}): JSX.Element {\n const hasModifier = useRef(false)\n\n useEffect(() => {\n hasModifier.current = false\n const handler = (e: KeyboardEvent) => {\n hasModifier.current = e.altKey\n }\n document.addEventListener(\"keydown\", handler)\n return () => {\n document.removeEventListener(\"keydown\", handler)\n }\n }, [activeEditor])\n\n const onClick = (payload: InsertImagePayload) => {\n if (onInsert) {\n onInsert(payload, onClose)\n return\n }\n activeEditor.dispatchCommand(INSERT_IMAGE_COMMAND, payload)\n onClose()\n }\n\n return (\n <Tabs defaultValue={activeTab}>\n <TabsList className=\"editor-tabs-list\">\n <TabsTrigger value=\"uploads\" className=\"editor-tabs-trigger\">\n Thư viện\n </TabsTrigger>\n <TabsTrigger value=\"url\" className=\"editor-tabs-trigger\">\n URL\n </TabsTrigger>\n <TabsTrigger value=\"file\" className=\"editor-tabs-trigger\">\n File\n </TabsTrigger>\n </TabsList>\n <TabsContent value=\"uploads\">\n <InsertImageUploadsDialogBody onClick={onClick} />\n </TabsContent>\n <TabsContent value=\"url\">\n <InsertImageUriDialogBody onClick={onClick} />\n </TabsContent>\n <TabsContent value=\"file\">\n <InsertImageUploadedDialogBody onClick={onClick} />\n </TabsContent>\n </Tabs>\n )\n}\n\nexport function ImagesPlugin({\n captionsEnabled,\n}: {\n captionsEnabled?: boolean\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([ImageNode])) {\n throw new Error(\"ImagesPlugin: ImageNode not registered on editor\")\n }\n\n return mergeRegister(\n editor.registerCommand<InsertImagePayload>(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n const imageNode = $createImageNode(payload)\n $insertNodes([imageNode])\n if ($isRootOrShadowRoot(imageNode.getParentOrThrow())) {\n $wrapNodeInElement(imageNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n ),\n editor.registerCommand<DragEvent>(\n DRAGSTART_COMMAND,\n (event) => {\n return $onDragStart(event)\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand<DragEvent>(\n DRAGOVER_COMMAND,\n (event) => {\n return $onDragover(event)\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<DragEvent>(\n DROP_COMMAND,\n (event) => {\n return $onDrop(event, editor)\n },\n COMMAND_PRIORITY_HIGH\n )\n )\n }, [captionsEnabled, editor])\n\n return null\n}\n\nfunction $onDragStart(event: DragEvent): boolean {\n const node = $getImageNodeInSelection()\n if (!node) {\n return false\n }\n const dataTransfer = event.dataTransfer\n if (!dataTransfer) {\n return false\n }\n const TRANSPARENT_IMAGE =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"\n const img = document.createElement(\"img\")\n img.src = TRANSPARENT_IMAGE\n dataTransfer.setData(\"text/plain\", \"_\")\n dataTransfer.setDragImage(img, 0, 0)\n dataTransfer.setData(\n \"application/x-lexical-drag\",\n JSON.stringify({\n data: {\n altText: node.__altText,\n caption: node.__caption,\n height: node.__height,\n key: node.getKey(),\n maxWidth: node.__maxWidth,\n showCaption: node.__showCaption,\n src: node.__src,\n width: node.__width,\n },\n type: \"image\",\n })\n )\n\n return true\n}\n\nfunction $onDragover(event: DragEvent): boolean {\n const node = $getImageNodeInSelection()\n if (!node) {\n return false\n }\n if (!canDropImage(event)) {\n event.preventDefault()\n }\n return true\n}\n\nfunction $onDrop(event: DragEvent, editor: LexicalEditor): boolean {\n const node = $getImageNodeInSelection()\n if (!node) {\n return false\n }\n const data = getDragImageData(event)\n if (!data) {\n return false\n }\n event.preventDefault()\n if (canDropImage(event)) {\n const range = getDragSelection(event)\n node.remove()\n const rangeSelection = $createRangeSelection()\n if (range !== null && range !== undefined) {\n rangeSelection.applyDOMRange(range)\n }\n $setSelection(rangeSelection)\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, data)\n }\n return true\n}\n\nfunction $getImageNodeInSelection(): ImageNode | null {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return null\n }\n const nodes = selection.getNodes()\n const node = nodes[0]\n return $isImageNode(node) ? node : null\n}\n\nfunction getDragImageData(event: DragEvent): null | InsertImagePayload {\n const dragData = event.dataTransfer?.getData(\"application/x-lexical-drag\")\n if (!dragData) {\n return null\n }\n const { type, data } = JSON.parse(dragData)\n if (type !== \"image\") {\n return null\n }\n\n return data\n}\n\ndeclare global {\n interface DragEvent {\n rangeOffset?: number\n rangeParent?: Node\n }\n}\n\nfunction canDropImage(event: DragEvent): boolean {\n const target = event.target\n return !!(\n target &&\n target instanceof HTMLElement &&\n !target.closest(\"code, span.editor-image\") &&\n target.parentElement &&\n target.parentElement.closest(\"div.ContentEditable__root\")\n )\n}\n\nfunction getDragSelection(event: DragEvent): Range | null | undefined {\n let range\n const target = event.target as null | Element | Document\n const targetWindow =\n target == null\n ? null\n : target.nodeType === 9\n ? (target as Document).defaultView\n : (target as Element).ownerDocument.defaultView\n const domSelection = getDOMSelection(targetWindow)\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(event.clientX, event.clientY)\n } else if (event.rangeParent && domSelection !== null) {\n domSelection.collapse(event.rangeParent, event.rangeOffset || 0)\n range = domSelection.getRangeAt(0)\n } else {\n throw Error(`Cannot get the selection when dragging`)\n }\n\n return range\n}\n","\"use client\"\n\nimport { createContext, useContext } from \"react\"\n\nexport const PriorityImageContext = createContext<string | null>(null)\n\nexport const usePriorityImage = () => useContext(PriorityImageContext)\n","\"use client\"\nimport { useState, useEffect } from \"react\"\nimport { LexicalEditor } from \"lexical\"\nimport { \n getContainerWidth, \n getImageAspectRatio \n} from \"../image-sizing\"\n\nexport type DimensionValue = \"inherit\" | number\n\nexport const imageCache = new Map<string, { width: number; height: number; ratio: number }>()\nexport const DEFAULT_ASPECT_RATIO = 16 / 9\nexport const DEFAULT_WIDTH = 800\nexport const DEFAULT_HEIGHT = Math.round(DEFAULT_WIDTH / DEFAULT_ASPECT_RATIO)\nexport const DEFAULT_DIMENSIONS = { width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT, ratio: DEFAULT_ASPECT_RATIO }\n\ninterface UseResponsiveImageDimensionsProps {\n editor: LexicalEditor\n height: DimensionValue\n imageRef: { current: null | HTMLImageElement }\n width: DimensionValue\n isResizing: boolean\n fullWidth?: boolean\n maxWidthLimit?: number\n src: string\n}\n\n/**\n * Custom hook to handle responsive image dimensions.\n * Calculates width and height based on container width and image aspect ratio.\n */\nexport function useResponsiveImageDimensions({\n editor,\n height,\n imageRef,\n width,\n isResizing,\n fullWidth,\n maxWidthLimit,\n src,\n}: UseResponsiveImageDimensionsProps) {\n const [dimensions, setDimensions] = useState<{\n width: DimensionValue\n height: DimensionValue\n }>({\n width,\n height,\n })\n\n useEffect(() => {\n if (isResizing) {\n return\n }\n\n let cancelScheduledUpdate: null | (() => void) = null\n const cleanupTasks: Array<() => void> = []\n\n const scheduleDimensionsUpdate = (next: {\n width: DimensionValue\n height: DimensionValue\n }) => {\n if (cancelScheduledUpdate) {\n cancelScheduledUpdate()\n }\n\n const applyNext = () => {\n cancelScheduledUpdate = null\n setDimensions((prev) => {\n if (prev.width === next.width && prev.height === next.height) {\n return prev\n }\n return next\n })\n }\n\n if (\n typeof window !== \"undefined\" &&\n typeof window.requestAnimationFrame === \"function\"\n ) {\n const frameId = window.requestAnimationFrame(applyNext)\n cancelScheduledUpdate = () => window.cancelAnimationFrame(frameId)\n } else {\n const timeoutId = setTimeout(applyNext)\n cancelScheduledUpdate = () => clearTimeout(timeoutId)\n }\n }\n\n const editorRoot = editor.getRootElement()\n const image = imageRef.current\n\n if (fullWidth) {\n scheduleDimensionsUpdate({ width: \"inherit\", height: \"inherit\" })\n return () => {\n cancelScheduledUpdate?.()\n }\n }\n\n if (!image) {\n scheduleDimensionsUpdate({ width, height })\n return () => {\n cancelScheduledUpdate?.()\n }\n }\n\n\n\n\n\n const updateDimensions = () => {\n if (fullWidth) {\n scheduleDimensionsUpdate({ width: \"inherit\", height: \"inherit\" })\n return\n }\n\n const containerWidth = getContainerWidth(\n image,\n editorRoot,\n maxWidthLimit\n )\n\n if (!containerWidth) {\n scheduleDimensionsUpdate({ width, height })\n return\n }\n\n const cached = imageCache.get(src)\n const baseWidth =\n typeof width === \"number\"\n ? width\n : image.naturalWidth || cached?.width || image.getBoundingClientRect().width || containerWidth\n\n let baseHeight: DimensionValue\n if (typeof height === \"number\") {\n baseHeight = height\n } else if (image.naturalHeight > 0) {\n baseHeight = image.naturalHeight\n } else if (cached?.height) {\n baseHeight = cached.height\n } else {\n const ratio = cached?.ratio || getImageAspectRatio(image) || DEFAULT_ASPECT_RATIO\n baseHeight = ratio > 0 ? Math.round(baseWidth / ratio) : \"inherit\"\n }\n\n let nextWidth: DimensionValue = baseWidth\n let nextHeight: DimensionValue = baseHeight\n\n if (\n width === \"inherit\" &&\n typeof baseWidth === \"number\" &&\n baseWidth > containerWidth\n ) {\n const scale = containerWidth / baseWidth\n nextWidth = containerWidth\n if (typeof baseHeight === \"number\") {\n nextHeight = Math.max(Math.round(baseHeight * scale), 1)\n } else if (baseHeight === \"inherit\") {\n const ratio = cached?.ratio || getImageAspectRatio(image) || DEFAULT_ASPECT_RATIO\n nextHeight =\n ratio > 0 ? Math.max(Math.round(containerWidth / ratio), 1) : baseHeight\n }\n }\n\n scheduleDimensionsUpdate({ width: nextWidth, height: nextHeight })\n }\n\n updateDimensions()\n\n if (typeof ResizeObserver !== \"undefined\") {\n const resizeObserver = new ResizeObserver(updateDimensions)\n if (editorRoot) {\n resizeObserver.observe(editorRoot)\n }\n if (image.parentElement) {\n resizeObserver.observe(image.parentElement)\n }\n cleanupTasks.push(() => {\n resizeObserver.disconnect()\n })\n } else if (typeof window !== \"undefined\") {\n window.addEventListener(\"resize\", updateDimensions)\n cleanupTasks.push(() => {\n window.removeEventListener(\"resize\", updateDimensions)\n })\n }\n\n return () => {\n cancelScheduledUpdate?.()\n cleanupTasks.forEach((task) => task())\n }\n }, [\n editor,\n height,\n imageRef,\n isResizing,\n width,\n fullWidth,\n maxWidthLimit,\n src,\n ])\n\n return dimensions\n}\n","import * as React from \"react\"\nimport { JSX, useState, useRef, useEffect } from \"react\"\nimport Image from \"next/image\"\nimport { cn } from \"../lib/utils\"\nimport { \n DimensionValue, \n imageCache, \n DEFAULT_WIDTH, \n DEFAULT_HEIGHT, \n DEFAULT_DIMENSIONS \n} from \"./hooks/use-responsive-image-dimensions\"\n\ninterface LazyImageProps {\n altText: string\n className: string | null\n height: DimensionValue\n imageRef: { current: null | HTMLImageElement }\n maxWidth: number\n src: string\n width: DimensionValue\n onError: () => void\n fetchPriority?: \"high\" | \"low\" | \"auto\"\n}\n\n/**\n * LazyImage - Handles image loading and rendering within the Lexical editor.\n * Includes dimensions caching to prevent layout shift.\n */\nexport function LazyImage({\n altText,\n className,\n imageRef,\n src,\n width,\n height,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- prop reserved for future use\n maxWidth: _maxWidth,\n onError,\n fetchPriority = \"auto\",\n}: LazyImageProps): JSX.Element {\n // Convert DimensionValue to number for width/height attributes\n const getNumericValue = (value: DimensionValue): number | undefined => {\n if (typeof value === \"number\") return value\n if (typeof value === \"string\") {\n if (value === \"inherit\") return undefined\n const num = parseInt((value as string).replace(\"px\", \"\"), 10)\n return isNaN(num) ? undefined : num\n }\n return undefined\n }\n \n const widthAttr = getNumericValue(width)\n const heightAttr = getNumericValue(height)\n \n const cachedDims = imageCache.get(src)\n const [actualDimensions, setActualDimensions] = useState<{ width?: number; height?: number; ratio?: number }>(\n cachedDims || DEFAULT_DIMENSIONS\n )\n \n const wrapperRef = useRef<HTMLDivElement>(null)\n \n useEffect(() => {\n if (wrapperRef.current) {\n const imgElement = wrapperRef.current.querySelector(\"img\") as HTMLImageElement | null\n if (imgElement) {\n imageRef.current = imgElement\n if ((width === \"inherit\" || height === \"inherit\") && imgElement.complete && imgElement.naturalWidth && imgElement.naturalHeight) {\n const ratio = imgElement.naturalWidth / imgElement.naturalHeight\n setActualDimensions({\n width: imgElement.naturalWidth,\n height: imgElement.naturalHeight,\n ratio,\n })\n imageCache.set(src, {\n width: imgElement.naturalWidth,\n height: imgElement.naturalHeight,\n ratio,\n })\n }\n }\n }\n }, [width, height, imageRef, src])\n \n const getSizes = (): string => {\n if (typeof widthAttr === \"number\" && widthAttr > 0) {\n if (widthAttr <= 640) return \"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw\"\n return \"(max-width: 768px) 100vw, (max-width: 1200px) 80vw, 1200px\"\n }\n return \"(max-width: 768px) 100vw, (max-width: 1200px) 80vw, 1200px\"\n }\n\n const renderWidth = widthAttr || actualDimensions.width || DEFAULT_WIDTH\n const renderHeight = heightAttr || actualDimensions.height || DEFAULT_HEIGHT\n\n return (\n <div ref={wrapperRef} className={cn(\"editor-lazy-image-wrapper\", className)}>\n <Image\n src={src}\n alt={altText}\n title={altText}\n width={renderWidth}\n height={renderHeight}\n sizes={getSizes()}\n quality={75}\n unoptimized={true}\n style={{\n height: height === \"inherit\" ? \"auto\" : height,\n width: width === \"inherit\" ? \"100%\" : width,\n }}\n onError={onError}\n draggable={false}\n priority={fetchPriority === \"high\"}\n loading=\"eager\"\n decoding=\"async\"\n onLoad={(e) => {\n const img = e.currentTarget\n if (img) {\n imageRef.current = img\n const ratio = img.naturalWidth / img.naturalHeight\n imageCache.set(src, {\n width: img.naturalWidth,\n height: img.naturalHeight,\n ratio,\n })\n if (width === \"inherit\" || height === \"inherit\") {\n setActualDimensions({\n width: img.naturalWidth,\n height: img.naturalHeight,\n })\n }\n }\n }}\n />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { JSX } from \"react\"\n\n/**\n * BrokenImage - Fallback component for when an image fails to load.\n */\nexport function BrokenImage(): JSX.Element {\n const transparentPixel = \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'%3E%3C/svg%3E\"\n \n return (\n <div className=\"editor-broken-image-container\">\n <img\n src={transparentPixel}\n alt=\"Broken Image\"\n />\n </div>\n )\n}\n","import * as React from \"react\"\nimport { JSX } from \"react\"\nimport { DimensionValue } from \"./hooks/use-responsive-image-dimensions\"\n\ninterface ImagePlaceholderProps {\n width: DimensionValue\n height: DimensionValue\n}\n\n/**\n * ImagePlaceholder - Rendered while an image is loading or when dimensions are being calculated.\n */\nexport function ImagePlaceholder({\n width,\n height,\n}: ImagePlaceholderProps): JSX.Element {\n const MAX_CONTAINER_WIDTH = 800\n const MAX_CONTAINER_HEIGHT = 600\n \n const getNumeric = (val: DimensionValue, max: number) => {\n if (typeof val === \"number\") return val\n return max\n }\n\n const pWidth = getNumeric(width, MAX_CONTAINER_WIDTH)\n const pHeight = getNumeric(height, MAX_CONTAINER_HEIGHT)\n\n return (\n <div\n className=\"editor-article-image-placeholder editor-animate-pulse editor-bg-muted editor-flex editor-items-center editor-justify-center editor-rounded-lg\"\n style={{\n width: width === \"inherit\" ? \"100%\" : pWidth,\n height: height === \"inherit\" ? \"auto\" : pHeight,\n aspectRatio: width === \"inherit\" || height === \"inherit\" ? \"16/9\" : undefined,\n maxWidth: \"100%\",\n }}\n >\n <div className=\"editor-flex editor-flex-col editor-items-center editor-gap-2 editor-text-muted-foreground\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n </div>\n </div>\n )\n}\n","import { JSX } from \"react\"\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\"\nimport { cn } from \"../lib/utils\"\n\ntype Props = {\n placeholder: string\n className?: string\n placeholderClassName?: string\n placeholderDefaults?: boolean // apply default positioning/padding for placeholder\n}\n\nexport function ContentEditable({\n placeholder,\n className,\n placeholderClassName,\n placeholderDefaults = true,\n}: Props): JSX.Element {\n return (\n <LexicalContentEditable\n className={cn(\"ContentEditable__root relative block min-h-72 px-8 py-4 focus:outline-none\", className)}\n aria-placeholder={placeholder}\n aria-label={placeholder || \"Editor nội dung\"}\n placeholder={\n <div\n className={cn(\n placeholderClassName,\n \"text-muted-foreground pointer-events-none select-none\",\n placeholderDefaults &&\n \"absolute top-0 left-0 overflow-hidden px-8 py-[18px] text-ellipsis\"\n )}\n >\n {placeholder}\n </div>\n }\n />\n )\n}\n","import * as React from \"react\"\nimport { LexicalEditor } from \"lexical\"\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\"\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\"\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\"\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\"\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\"\nimport { ContentEditable } from \"./content-editable\"\n\ninterface CaptionComposerProps {\n caption: LexicalEditor\n isEditable: boolean\n}\n\n/**\n * CaptionComposer - A nested editor for image captions.\n */\nexport function CaptionComposer({\n caption,\n isEditable,\n}: CaptionComposerProps) {\n return (\n <LexicalNestedComposer initialEditor={caption}>\n <AutoFocusPlugin />\n <HistoryPlugin />\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-relative\">\n <ContentEditable\n className={`ImageNode__contentEditable editor-relative editor-block editor-min-h-5 editor-w-full editor-resize-none editor-border-0 editor-bg-transparent editor-px-2.5 editor-py-2 editor-text-sm editor-whitespace-pre-wrap editor-outline-none editor-word-break-break-word ${\n isEditable\n ? \"editor-box-border editor-cursor-text editor-caret-primary editor-user-select-text\"\n : \"editor-cursor-default editor-select-text\"\n }`}\n placeholder={isEditable ? \"Enter a caption...\" : \"\"}\n placeholderDefaults={false}\n placeholderClassName=\"ImageNode__placeholder editor-absolute editor-top-0 editor-left-0 editor-overflow-hidden editor-px-2.5 editor-py-2 editor-text-ellipsis editor-text-sm\"\n />\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n )\n}\n","\"use client\"\nimport { useState, useEffect, useRef, useCallback } from \"react\"\nimport { LexicalEditor, NodeKey, $getNodeByKey, $getRoot } from \"lexical\"\nimport { $isImageNode } from \"../../nodes/image-node\"\n\ninterface UseImageCaptionControlsProps {\n caption: LexicalEditor\n editor: LexicalEditor\n nodeKey: NodeKey\n showCaption: boolean\n}\n\ntype TimeoutHandle = ReturnType<typeof setTimeout>\n\n/**\n * Custom hook to handle image caption logic.\n * Manages caption visibility and content synchronization.\n */\nexport function useImageCaptionControls({\n caption,\n editor,\n nodeKey,\n showCaption,\n}: UseImageCaptionControlsProps) {\n const [hasCaptionContent, setHasCaptionContent] = useState(false)\n const [localShowCaption, setLocalShowCaption] = useState(showCaption)\n const isUpdatingCaptionRef = useRef(false)\n const lastShowCaptionRef = useRef(showCaption)\n\n useEffect(() => {\n let timeout: TimeoutHandle | null = null\n timeout = setTimeout(() => {\n if (!showCaption) {\n setHasCaptionContent(false)\n setLocalShowCaption(false)\n } else if (\n !isUpdatingCaptionRef.current &&\n lastShowCaptionRef.current !== showCaption\n ) {\n setLocalShowCaption(showCaption)\n lastShowCaptionRef.current = showCaption\n }\n isUpdatingCaptionRef.current = false\n }, 0)\n\n return () => {\n if (timeout) {\n clearTimeout(timeout)\n }\n }\n }, [showCaption])\n\n const setShowCaption = useCallback(\n (show: boolean) => {\n isUpdatingCaptionRef.current = true\n lastShowCaptionRef.current = show\n\n setLocalShowCaption(show)\n\n if (!show) {\n setHasCaptionContent(false)\n }\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setShowCaption(show)\n\n if (!show) {\n caption.update(() => {\n const root = $getRoot()\n root.clear()\n })\n }\n }\n })\n },\n [caption, editor, nodeKey]\n )\n\n useEffect(() => {\n const computeHasContent = () => {\n const state = caption.getEditorState()\n const hasContent = state.read(() => {\n const root = $getRoot()\n const raw = root.getTextContent()\n const text = raw.replace(/[\\u200B\\u00A0\\s]+/g, \"\")\n return text.length > 0\n })\n setHasCaptionContent(showCaption && hasContent)\n }\n\n const timer = setTimeout(() => {\n computeHasContent()\n }, 0)\n\n const unregister = caption.registerUpdateListener(() => {\n computeHasContent()\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setShowCaption(showCaption)\n }\n })\n })\n\n return () => {\n clearTimeout(timer)\n unregister()\n }\n }, [caption, editor, nodeKey, showCaption])\n\n return {\n hasCaptionContent,\n localShowCaption,\n setShowCaption,\n }\n}\n","\"use client\"\nimport { useState, useEffect, useRef, useCallback } from \"react\"\nimport { \n LexicalEditor, \n NodeKey, \n BaseSelection, \n $getSelection, \n $isNodeSelection, \n $setSelection,\n SELECTION_CHANGE_COMMAND,\n CLICK_COMMAND,\n DRAGSTART_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n COMMAND_PRIORITY_LOW,\n createCommand,\n LexicalCommand,\n $isRangeSelection\n} from \"lexical\"\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\"\nimport { mergeRegister } from \"@lexical/utils\"\nimport { $isImageNode } from \"../../nodes/image-node\"\n\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> = createCommand(\"RIGHT_CLICK_IMAGE_COMMAND\")\n\ninterface UseImageNodeInteractionsProps {\n buttonRef: React.MutableRefObject<HTMLButtonElement | null>\n caption: LexicalEditor\n editor: LexicalEditor\n imageRef: React.MutableRefObject<HTMLImageElement | null>\n isResizing: boolean\n nodeKey: NodeKey\n showCaption: boolean\n}\n\n/**\n * Custom hook to handle interactions with the image node.\n * Handles selection, deletion, keyboard navigation, and context menu.\n */\nexport function useImageNodeInteractions({\n buttonRef,\n caption,\n editor,\n imageRef,\n isResizing,\n nodeKey,\n showCaption,\n}: UseImageNodeInteractionsProps) {\n const [selection, setSelection] = useState<BaseSelection | null>(null)\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n const activeEditorRef = useRef<LexicalEditor | null>(null)\n\n const $onDelete = useCallback(\n (payload: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n const event: KeyboardEvent = payload\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isImageNode(node)) {\n node.remove()\n }\n })\n })\n return true\n }\n return false\n },\n [editor, isSelected]\n )\n\n const $onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection()\n const buttonElem = buttonRef.current\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n $setSelection(null)\n event.preventDefault()\n caption.focus()\n return true\n } else if (\n buttonElem !== null &&\n buttonElem !== document.activeElement\n ) {\n event.preventDefault()\n buttonElem.focus()\n return true\n }\n }\n return false\n },\n [buttonRef, caption, isSelected, showCaption]\n )\n\n const $onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (\n activeEditorRef.current === caption ||\n buttonRef.current === event.target\n ) {\n $setSelection(null)\n editor.update(() => {\n setSelected(true)\n const parentRootElement = editor.getRootElement()\n if (parentRootElement !== null) {\n parentRootElement.focus()\n }\n })\n return true\n }\n return false\n },\n [buttonRef, caption, editor, setSelected]\n )\n\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n\n if (isResizing) {\n return true\n }\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n clearSelection()\n setSelected(true)\n }\n return true\n }\n\n return false\n },\n [clearSelection, imageRef, isResizing, isSelected, setSelected]\n )\n\n const onRightClick = useCallback(\n (event: MouseEvent): void => {\n editor.getEditorState().read(() => {\n const latestSelection = $getSelection()\n const domElement = event.target as HTMLElement\n if (\n domElement.tagName === \"IMG\" &&\n $isRangeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n editor.dispatchCommand(\n RIGHT_CLICK_IMAGE_COMMAND,\n event as MouseEvent\n )\n }\n })\n },\n [editor]\n )\n\n useEffect(() => {\n let isMounted = true\n const rootElement = editor.getRootElement()\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()))\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n RIGHT_CLICK_IMAGE_COMMAND,\n onClick,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n (event) => {\n if (event.target === imageRef.current) {\n event.preventDefault()\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_DELETE_COMMAND,\n $onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n $onDelete,\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_ENTER_COMMAND, $onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n $onEscape,\n COMMAND_PRIORITY_LOW\n )\n )\n\n rootElement?.addEventListener(\"contextmenu\", onRightClick)\n\n return () => {\n isMounted = false\n unregister()\n rootElement?.removeEventListener(\"contextmenu\", onRightClick)\n }\n }, [\n clearSelection,\n editor,\n imageRef,\n isResizing,\n isSelected,\n nodeKey,\n $onDelete,\n $onEnter,\n $onEscape,\n onClick,\n onRightClick,\n setSelected,\n ])\n\n return { isSelected, selection, setSelected, clearSelection }\n}\n","\"use client\"\nimport * as React from \"react\"\nimport {\n JSX,\n Suspense,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\"\nimport { $isNodeSelection, $getNodeByKey, NodeKey, LexicalEditor, FORMAT_ELEMENT_COMMAND, ElementFormatType } from \"lexical\"\n\nimport { ImageResizer } from \"../editor-ui/image-resizer\"\nimport { $isImageNode } from \"../nodes/image-node\"\nimport { cn } from \"../lib/utils\"\nimport { useEditorContainer } from \"../context/editor-container-context\"\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"../ui/dialog\"\nimport {\n InsertImageDialog,\n InsertImagePayload,\n} from \"../plugins/images-plugin\"\nimport { usePriorityImage } from \"../context/priority-image-context\"\n\n// Sub-components\nimport { LazyImage } from \"./lazy-image\"\nimport { BrokenImage } from \"./broken-image\"\nimport { ImagePlaceholder } from \"./image-placeholder\"\nimport { CaptionComposer } from \"./caption-composer\"\n\n// Hooks\nimport { useResponsiveImageDimensions, DimensionValue } from \"./hooks/use-responsive-image-dimensions\"\nimport { useImageCaptionControls } from \"./hooks/use-image-caption-controls\"\nimport { useImageNodeInteractions } from \"./hooks/use-image-node-interactions\"\n\nconst RESIZE_HANDLE_HIDE_DELAY = 200\n\ninterface ImageComponentProps {\n altText: string\n caption: LexicalEditor\n captionsEnabled: boolean\n fullWidth: boolean\n height: DimensionValue\n maxWidth: number\n nodeKey: NodeKey\n resizable: boolean\n showCaption: boolean\n src: string\n width: DimensionValue\n}\n\n/**\n * ImageComponent - The main component for image nodes in the Lexical editor.\n * Orchestrates image rendering, resizing, captions, and interactions.\n */\nexport default function ImageComponent({\n altText,\n caption,\n captionsEnabled,\n fullWidth,\n height,\n maxWidth,\n nodeKey,\n resizable,\n showCaption,\n src,\n width,\n}: ImageComponentProps): JSX.Element {\n const imageRef = useRef<null | HTMLImageElement>(null)\n const buttonRef = useRef<HTMLButtonElement | null>(null)\n const [isResizing, setIsResizing] = useState<boolean>(false)\n const resizeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const [editor] = useLexicalComposerContext()\n const [isLoadError, setIsLoadError] = useState<boolean>(false)\n const [isReplaceDialogOpen, setIsReplaceDialogOpen] = useState(false)\n const isEditable = useLexicalEditable()\n const editorContainer = useEditorContainer()\n \n const prioritySrc = usePriorityImage()\n const isPriority = src === prioritySrc\n \n // Custom hooks for logic separation\n const {\n hasCaptionContent,\n localShowCaption,\n setShowCaption,\n } = useImageCaptionControls({\n caption,\n editor,\n nodeKey,\n showCaption,\n })\n\n const responsiveDimensions = useResponsiveImageDimensions({\n editor,\n imageRef,\n width,\n height,\n isResizing,\n fullWidth,\n maxWidthLimit: editorContainer?.maxWidth,\n src,\n })\n\n const { isSelected, selection } = useImageNodeInteractions({\n buttonRef,\n caption,\n editor,\n imageRef,\n isResizing,\n nodeKey,\n showCaption,\n })\n\n useEffect(() => {\n if (!isEditable && isReplaceDialogOpen) {\n setTimeout(() => {\n setIsReplaceDialogOpen(false)\n }, 0)\n }\n }, [isEditable, isReplaceDialogOpen])\n\n useEffect(() => {\n return () => {\n if (resizeTimeoutRef.current) {\n clearTimeout(resizeTimeoutRef.current)\n }\n }\n }, [])\n\n const onResizeEnd = useCallback(\n (nextWidth: DimensionValue, nextHeight: DimensionValue) => {\n if (resizeTimeoutRef.current) {\n clearTimeout(resizeTimeoutRef.current)\n }\n resizeTimeoutRef.current = setTimeout(() => {\n setIsResizing(false)\n }, RESIZE_HANDLE_HIDE_DELAY)\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setWidthAndHeight(nextWidth, nextHeight)\n }\n })\n },\n [editor, nodeKey]\n )\n\n const onResizeStart = useCallback(() => {\n setIsResizing(true)\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setFullWidth(false)\n }\n })\n }, [editor, nodeKey])\n\n useEffect(() => {\n const element = editor.getElementByKey(nodeKey)\n if (element) {\n if (fullWidth) {\n element.style.width = \"100%\"\n element.style.display = \"block\"\n } else {\n element.style.width = \"\"\n element.style.display = \"inline-block\"\n }\n }\n }, [editor, nodeKey, fullWidth])\n\n const onSetFullWidth = useCallback(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setFullWidth(!fullWidth)\n }\n })\n }, [editor, fullWidth, nodeKey])\n\n const onAlign = useCallback(\n (format: ElementFormatType) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, format)\n },\n [editor]\n )\n\n const handleReplaceImage = useCallback(\n (payload: InsertImagePayload) => {\n if (!payload?.src) {\n return\n }\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.setSrc(payload.src)\n if (payload.altText !== undefined) {\n node.setAltText(payload.altText)\n }\n node.setWidthAndHeight(\"inherit\", \"inherit\")\n }\n })\n },\n [editor, nodeKey]\n )\n\n const onDelete = useCallback(() => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey)\n if ($isImageNode(node)) {\n node.remove()\n }\n })\n }, [editor, nodeKey])\n\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing\n const isFocused = (isSelected || isResizing) && isEditable\n const shouldRenderCaption =\n showCaption &&\n (isEditable\n ? localShowCaption && captionsEnabled\n : hasCaptionContent)\n\n const imageClassName = cn(\n \"editor-image\",\n isFocused && \"editor-image-focused\",\n isFocused && $isNodeSelection(selection) && \"editor-image-draggable\",\n fullWidth && \"full-width\"\n )\n\n const captionWrapperClass = cn(\n \"editor-image-caption\",\n isEditable ? \"editable\" : \"readonly\"\n )\n\n return (\n <Suspense\n fallback={\n <div draggable={draggable}>\n <ImagePlaceholder\n width={responsiveDimensions.width}\n height={responsiveDimensions.height}\n />\n </div>\n }\n >\n <>\n <div draggable={draggable} style={{ display: \"inline-block\" }}>\n {isLoadError ? (\n <BrokenImage />\n ) : (\n <LazyImage\n className={imageClassName}\n src={src}\n altText={altText}\n imageRef={imageRef}\n width={responsiveDimensions.width}\n height={responsiveDimensions.height}\n maxWidth={maxWidth}\n onError={() => setIsLoadError(true)}\n fetchPriority={isPriority ? \"high\" : \"auto\"}\n />\n )}\n </div>\n\n {shouldRenderCaption && (\n <div className={captionWrapperClass}>\n <CaptionComposer caption={caption} isEditable={isEditable} />\n </div>\n )}\n\n {resizable && isFocused && (\n <ImageResizer\n buttonRef={buttonRef}\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n mediaRef={imageRef}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n captionsEnabled={captionsEnabled}\n onReplaceMedia={() => setIsReplaceDialogOpen(true)}\n onSetFullWidth={onSetFullWidth}\n isFullWidth={fullWidth}\n onDelete={onDelete}\n onAlign={onAlign}\n />\n )}\n\n {isEditable && isReplaceDialogOpen && (\n <Dialog\n open={isReplaceDialogOpen}\n onOpenChange={setIsReplaceDialogOpen}\n >\n <DialogContent className=\"editor-dialog-content--lg\" disableOutsideClick={true}>\n <DialogHeader>\n <DialogTitle>Thay thế hình ảnh</DialogTitle>\n </DialogHeader>\n <InsertImageDialog\n activeEditor={editor}\n activeTab=\"url\"\n onClose={() => setIsReplaceDialogOpen(false)}\n onInsert={(payload) => {\n handleReplaceImage(payload)\n setIsReplaceDialogOpen(false)\n }}\n />\n </DialogContent>\n </Dialog>\n )}\n </>\n </Suspense>\n )\n}\n","import * as React from \"react\"\nimport { JSX, Suspense } from \"react\"\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n EditorState,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread,\n} from \"lexical\"\nimport {\n $applyNodeReplacement,\n $getRoot,\n createEditor,\n DecoratorNode,\n ParagraphNode,\n RootNode,\n TextNode,\n} from \"lexical\"\n\nconst ImageComponent = React.lazy(() => import(\"../editor-ui/image-component\"))\n\nconst WHITESPACE_REGEX = /[\\u200B\\u00A0\\s]+/g\n\nexport interface ImagePayload {\n altText: string\n caption?: LexicalEditor\n height?: number\n key?: NodeKey\n maxWidth?: number\n showCaption?: boolean\n src: string\n width?: number\n captionsEnabled?: boolean\n fullWidth?: boolean\n}\n\nfunction editorStateHasContent(editorState: EditorState): boolean {\n return editorState.read(() => {\n const root = $getRoot()\n const text = root.getTextContent().replace(WHITESPACE_REGEX, \"\")\n return text.length > 0\n })\n}\n\nfunction captionHasContent(editor: LexicalEditor): boolean {\n return editorStateHasContent(editor.getEditorState())\n}\n\nfunction clearCaption(editor: LexicalEditor): void {\n editor.update(() => {\n const root = $getRoot()\n root.clear()\n })\n}\n\nfunction isGoogleDocCheckboxImg(img: HTMLImageElement): boolean {\n return (\n img.parentElement != null &&\n img.parentElement.tagName === \"LI\" &&\n img.previousSibling === null &&\n img.getAttribute(\"aria-roledescription\") === \"checkbox\"\n )\n}\n\nfunction $convertImageElement(domNode: Node): null | DOMConversionOutput {\n const img = domNode as HTMLImageElement\n if (img.src.startsWith(\"file:///\") || isGoogleDocCheckboxImg(img)) {\n return null\n }\n const { alt: altText, src, width, height } = img\n const node = $createImageNode({ altText, height, src, width })\n return { node }\n}\n\nexport type SerializedImageNode = Spread<\n {\n altText: string\n caption: SerializedEditor\n height?: number\n maxWidth: number\n showCaption: boolean\n src: string\n width?: number\n fullWidth?: boolean\n },\n SerializedLexicalNode\n>\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __src: string\n __altText: string\n __width: \"inherit\" | number\n __height: \"inherit\" | number\n __maxWidth: number\n __showCaption: boolean\n __caption: LexicalEditor\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean\n __fullWidth: boolean\n\n static getType(): string {\n return \"image\"\n }\n\n static clone(node: ImageNode): ImageNode {\n return new ImageNode(\n node.__src,\n node.__altText,\n node.__maxWidth,\n node.__width,\n node.__height,\n node.__showCaption,\n node.__caption,\n node.__captionsEnabled,\n node.__fullWidth,\n node.__key\n )\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { altText, height, width, maxWidth, caption, src, showCaption, fullWidth } =\n serializedNode\n\n const node = $createImageNode({\n altText,\n height,\n maxWidth,\n showCaption: showCaption === true,\n src,\n width,\n fullWidth,\n })\n\n if (showCaption === true && caption?.editorState) {\n const parsedState = node.__caption.parseEditorState(caption.editorState)\n\n if (editorStateHasContent(parsedState)) {\n node.__caption.setEditorState(parsedState)\n return node\n }\n }\n\n node.__showCaption = false\n clearCaption(node.__caption)\n return node\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\")\n element.setAttribute(\"src\", this.__src)\n element.setAttribute(\"alt\", this.__altText)\n if (typeof this.__width === \"number\") {\n element.setAttribute(\"width\", this.__width.toString())\n }\n if (typeof this.__height === \"number\") {\n element.setAttribute(\"height\", this.__height.toString())\n }\n return { element }\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n img: (node: Node) => ({\n conversion: $convertImageElement,\n priority: 0,\n }),\n }\n }\n\n constructor(\n src: string,\n altText: string,\n maxWidth: number,\n width?: \"inherit\" | number,\n height?: \"inherit\" | number,\n showCaption?: boolean,\n caption?: LexicalEditor,\n captionsEnabled?: boolean,\n fullWidth?: boolean,\n key?: NodeKey\n ) {\n super(key)\n this.__src = src\n this.__altText = altText\n this.__maxWidth = maxWidth\n this.__width = width || \"inherit\"\n this.__height = height || \"inherit\"\n this.__showCaption = showCaption || false\n this.__caption =\n caption ||\n createEditor({\n namespace: \"ImageCaption\",\n nodes: [RootNode, TextNode, ParagraphNode],\n })\n this.__captionsEnabled = captionsEnabled || captionsEnabled === undefined\n // Default image to full width if not specified for consistency with YouTube\n this.__fullWidth = fullWidth === undefined ? true : !!fullWidth\n }\n\n exportJSON(): SerializedImageNode {\n return {\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption && captionHasContent(this.__caption),\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width,\n fullWidth: this.__fullWidth || undefined,\n }\n }\n\n setWidthAndHeight(\n width: \"inherit\" | number,\n height: \"inherit\" | number\n ): void {\n const writable = this.getWritable()\n writable.__width = width\n writable.__height = height\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable()\n writable.__src = src\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable()\n writable.__altText = altText\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable()\n writable.__showCaption = showCaption\n }\n\n setFullWidth(fullWidth: boolean): void {\n const writable = this.getWritable()\n writable.__fullWidth = fullWidth\n }\n\n // View\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\")\n const theme = config.theme\n const className = theme.image\n if (className !== undefined) {\n span.className = className\n }\n return span\n }\n\n updateDOM(): false {\n return false\n }\n\n getSrc(): string {\n return this.__src\n }\n\n getAltText(): string {\n return this.__altText\n }\n\n decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n fullWidth={this.__fullWidth}\n resizable={true}\n />\n </Suspense>\n )\n }\n}\n\nexport function $createImageNode({\n altText,\n height,\n maxWidth = 500,\n captionsEnabled,\n src,\n width,\n showCaption,\n caption,\n fullWidth,\n key,\n}: ImagePayload): ImageNode {\n return $applyNodeReplacement(\n new ImageNode(\n src,\n altText,\n maxWidth,\n width,\n height,\n showCaption,\n caption,\n captionsEnabled,\n fullWidth,\n key\n )\n )\n}\n\nexport function $isImageNode(\n node: LexicalNode | null | undefined\n): node is ImageNode {\n return node instanceof ImageNode\n}\n","import type { EditorConfig, LexicalNode, SerializedTextNode } from \"lexical\"\nimport { TextNode } from \"lexical\"\n\nexport type SerializedKeywordNode = SerializedTextNode\n\nexport class KeywordNode extends TextNode {\n static getType(): string {\n return \"keyword\"\n }\n\n static clone(node: KeywordNode): KeywordNode {\n return new KeywordNode(node.__text, node.__key)\n }\n\n static importJSON(serializedNode: SerializedKeywordNode): KeywordNode {\n const node = $createKeywordNode(serializedNode.text)\n node.setFormat(serializedNode.format)\n node.setDetail(serializedNode.detail)\n node.setMode(serializedNode.mode)\n node.setStyle(serializedNode.style)\n return node\n }\n\n exportJSON(): SerializedKeywordNode {\n return {\n ...super.exportJSON(),\n type: \"keyword\",\n version: 1,\n }\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config)\n dom.style.cursor = \"default\"\n dom.className = \"keyword text-purple-900 font-bold\"\n return dom\n }\n\n canInsertTextBefore(): boolean {\n return false\n }\n\n canInsertTextAfter(): boolean {\n return false\n }\n\n isTextEntity(): true {\n return true\n }\n}\n\nexport function $createKeywordNode(keyword: string): KeywordNode {\n return new KeywordNode(keyword)\n}\n\nexport function $isKeywordNode(node: LexicalNode | null | undefined): boolean {\n return node instanceof KeywordNode\n}\n","import { addClassNamesToElement } from \"@lexical/utils\"\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread,\n} from \"lexical\"\nimport { ElementNode } from \"lexical\"\n\nexport type SerializedLayoutContainerNode = Spread<\n {\n templateColumns: string\n },\n SerializedElementNode\n>\n\nfunction $convertLayoutContainerElement(\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const styleAttributes = window.getComputedStyle(domNode)\n const templateColumns = styleAttributes.getPropertyValue(\n \"grid-template-columns\"\n )\n if (templateColumns) {\n const node = $createLayoutContainerNode(templateColumns)\n return { node }\n }\n return null\n}\n\nexport class LayoutContainerNode extends ElementNode {\n __templateColumns: string\n\n constructor(templateColumns: string, key?: NodeKey) {\n super(key)\n this.__templateColumns = templateColumns\n }\n\n static getType(): string {\n return \"layout-container\"\n }\n\n static clone(node: LayoutContainerNode): LayoutContainerNode {\n return new LayoutContainerNode(node.__templateColumns, node.__key)\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement(\"div\")\n dom.style.gridTemplateColumns = this.__templateColumns\n if (typeof config.theme.layoutContainer === \"string\") {\n addClassNamesToElement(dom, config.theme.layoutContainer)\n }\n return dom\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"div\")\n element.style.gridTemplateColumns = this.__templateColumns\n element.setAttribute(\"data-lexical-layout-container\", \"true\")\n return { element }\n }\n\n updateDOM(prevNode: LayoutContainerNode, dom: HTMLElement): boolean {\n if (prevNode.__templateColumns !== this.__templateColumns) {\n dom.style.gridTemplateColumns = this.__templateColumns\n }\n return false\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-layout-container\")) {\n return null\n }\n return {\n conversion: $convertLayoutContainerElement,\n priority: 2,\n }\n },\n }\n }\n\n static importJSON(json: SerializedLayoutContainerNode): LayoutContainerNode {\n return $createLayoutContainerNode(json.templateColumns)\n }\n\n isShadowRoot(): boolean {\n return true\n }\n\n canBeEmpty(): boolean {\n return false\n }\n\n exportJSON(): SerializedLayoutContainerNode {\n return {\n ...super.exportJSON(),\n templateColumns: this.__templateColumns,\n type: \"layout-container\",\n version: 1,\n }\n }\n\n getTemplateColumns(): string {\n return this.getLatest().__templateColumns\n }\n\n setTemplateColumns(templateColumns: string) {\n this.getWritable().__templateColumns = templateColumns\n }\n}\n\nexport function $createLayoutContainerNode(\n templateColumns: string\n): LayoutContainerNode {\n return new LayoutContainerNode(templateColumns)\n}\n\nexport function $isLayoutContainerNode(\n node: LexicalNode | null | undefined\n): node is LayoutContainerNode {\n return node instanceof LayoutContainerNode\n}\n","import { addClassNamesToElement } from \"@lexical/utils\"\nimport type {\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n SerializedElementNode,\n} from \"lexical\"\nimport { ElementNode } from \"lexical\"\n\nexport type SerializedLayoutItemNode = SerializedElementNode & {\n style?: string\n}\n\nfunction withPaddingFallback(style: string): string {\n const normalizedStyle = style.trim()\n if (/padding\\s*:/i.test(normalizedStyle)) {\n return normalizedStyle\n }\n if (!normalizedStyle) {\n return \"padding: 12px;\"\n }\n return `${normalizedStyle.replace(/;?$/, \";\")} padding: 12px;`\n}\n\nfunction applyLayoutItemStyle(dom: HTMLElement, style: string): void {\n dom.style.cssText = style\n const padding = dom.style.padding || \"12px\"\n dom.style.setProperty(\"padding\", padding, \"important\")\n}\n\nfunction applyLayoutItemAttributes(dom: HTMLElement): void {\n dom.setAttribute(\"data-lexical-layout-item\", \"true\")\n}\n\nfunction getLayoutItemThemeClass(config: EditorConfig): string {\n return typeof config.theme.layoutItem === \"string\"\n ? config.theme.layoutItem\n : \"border border-dashed\"\n}\n\nexport class LayoutItemNode extends ElementNode {\n static getType(): string {\n return \"layout-item\"\n }\n\n static clone(node: LayoutItemNode): LayoutItemNode {\n return new LayoutItemNode(node.__key)\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = document.createElement(\"div\")\n addClassNamesToElement(dom, getLayoutItemThemeClass(config))\n applyLayoutItemAttributes(dom)\n applyLayoutItemStyle(dom, withPaddingFallback(this.getStyle()))\n return dom\n }\n\n updateDOM(prevNode: LayoutItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const expectedClass = getLayoutItemThemeClass(config)\n if (dom.className !== expectedClass) {\n dom.className = \"\"\n addClassNamesToElement(dom, expectedClass)\n }\n applyLayoutItemAttributes(dom)\n\n const prevStyle = withPaddingFallback(prevNode.getStyle())\n const nextStyle = withPaddingFallback(this.getStyle())\n if (prevStyle !== nextStyle) {\n applyLayoutItemStyle(dom, nextStyle)\n }\n return false\n }\n\n static importDOM(): DOMConversionMap | null {\n return {}\n }\n\n static importJSON(json: SerializedLayoutItemNode): LayoutItemNode {\n const node = $createLayoutItemNode()\n if (json.format) {\n node.setFormat(json.format)\n }\n if (json.indent) {\n node.setIndent(json.indent)\n }\n if (\"direction\" in json && json.direction !== null) {\n node.setDirection(json.direction)\n }\n if (\"style\" in json && typeof json.style === \"string\") {\n node.setStyle(json.style)\n }\n return node\n }\n\n isShadowRoot(): boolean {\n return true\n }\n\n exportJSON(): SerializedLayoutItemNode {\n const style = this.getStyle()\n return {\n ...super.exportJSON(),\n ...(style ? { style } : {}),\n type: \"layout-item\",\n version: 1,\n }\n }\n}\n\nexport function $createLayoutItemNode(): LayoutItemNode {\n return new LayoutItemNode()\n}\n\nexport function $isLayoutItemNode(\n node: LexicalNode | null | undefined\n): node is LayoutItemNode {\n return node instanceof LayoutItemNode\n}\n","\"use client\"\n\nimport type { DOMExportOutput, EditorConfig, LexicalEditor } from \"lexical\"\nimport {\n ListNode,\n type ListType,\n type SerializedListNode,\n} from \"@lexical/list\"\nimport type { LexicalNode, LexicalUpdateJSON, NodeKey } from \"lexical\"\nimport { $applyNodeReplacement } from \"lexical\"\n\nexport type SerializedListWithColorNode = Omit<SerializedListNode, \"type\"> & {\n type: \"listwithcolor\"\n listColor?: string\n markerType?: string\n}\n\nconst LIST_WITH_COLOR_TYPE = \"listwithcolor\"\n\nfunction applyListAttributesToDom(dom: HTMLElement, color?: string, markerType?: string): void {\n if (color) {\n dom.style.setProperty(\"--list-marker-color\", color, \"important\")\n dom.setAttribute(\"data-list-color\", color)\n } else {\n dom.style.removeProperty(\"--list-marker-color\")\n dom.removeAttribute(\"data-list-color\")\n }\n if (markerType) {\n dom.setAttribute(\"data-list-marker\", markerType)\n } else {\n dom.removeAttribute(\"data-list-marker\")\n }\n}\n\nexport class ListWithColorNode extends ListNode {\n __listColor?: string\n __markerType?: string\n\n constructor(listType?: ListType, start?: number, key?: NodeKey) {\n super(listType, start, key)\n }\n\n static getType(): \"listwithcolor\" {\n return LIST_WITH_COLOR_TYPE\n }\n\n override getType(): \"listwithcolor\" {\n return LIST_WITH_COLOR_TYPE\n }\n\n static override clone(node: ListWithColorNode, key?: NodeKey): ListWithColorNode {\n const listType = node.getListType()\n const start = node.getStart()\n const sameKey = key ?? node.getKey()\n const cloned = new ListWithColorNode(listType, start, sameKey)\n if (node.__listColor) cloned.__listColor = node.__listColor\n if (node.__markerType) cloned.__markerType = node.__markerType\n return cloned\n }\n\n static override importJSON(\n serializedNode: SerializedListWithColorNode\n ): ListWithColorNode {\n const { listType, start, listColor, markerType } = serializedNode\n const node = new ListWithColorNode(listType, start)\n if (listColor != null) node.__listColor = listColor\n if (markerType != null) node.__markerType = markerType\n return node\n }\n\n override afterCloneFrom(prevNode: ListWithColorNode): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Lexical ListNode.afterCloneFrom(prevNode: this) không chấp nhận subtype\n super.afterCloneFrom(prevNode as any)\n this.__listColor = prevNode.__listColor\n this.__markerType = prevNode.__markerType\n }\n\n getListColor(): string | undefined {\n return this.getLatest().__listColor\n }\n\n setListColor(color: string | undefined): this {\n const writable = this.getWritable()\n writable.__listColor = color\n return this\n }\n\n getMarkerType(): string | undefined {\n return this.getLatest().__markerType\n }\n\n setMarkerType(markerType: string | undefined): this {\n const writable = this.getWritable()\n writable.__markerType = markerType\n return this\n }\n\n override createDOM(config: EditorConfig, _editor?: LexicalEditor): HTMLElement {\n const dom = super.createDOM(config, _editor)\n applyListAttributesToDom(dom, this.__listColor, this.__markerType)\n return dom\n }\n\n override updateDOM(\n prevNode: ListWithColorNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Lexical ListNode.updateDOM(prevNode: this)\n const isUpdated = super.updateDOM(prevNode as any, dom, config)\n if (\n prevNode.__listColor !== this.__listColor ||\n prevNode.__markerType !== this.__markerType\n ) {\n applyListAttributesToDom(dom, this.__listColor, this.__markerType)\n }\n return isUpdated\n }\n\n override updateFromJSON(\n serializedNode: LexicalUpdateJSON<SerializedListWithColorNode>\n ): this {\n super.updateFromJSON(serializedNode)\n const { listColor, markerType } = serializedNode as SerializedListWithColorNode\n if (listColor !== undefined) this.setListColor(listColor)\n if (markerType !== undefined) this.setMarkerType(markerType)\n return this\n }\n\n override exportDOM(editor: LexicalEditor): DOMExportOutput {\n const output = super.exportDOM(editor)\n if (output.element && output.element instanceof HTMLElement) {\n applyListAttributesToDom(output.element, this.__listColor, this.__markerType)\n }\n return output\n }\n\n override exportJSON(): SerializedListWithColorNode {\n const json = super.exportJSON() as SerializedListWithColorNode\n json.type = LIST_WITH_COLOR_TYPE\n if (this.__listColor) json.listColor = this.__listColor\n if (this.__markerType) json.markerType = this.__markerType\n return json\n }\n}\n\nexport function $createListWithColorNode(\n listType?: ListType,\n start?: number\n): ListWithColorNode {\n return $applyNodeReplacement(\n new ListWithColorNode(listType, start)\n ) as ListWithColorNode\n}\n\nexport function $isListWithColorNode(\n node: LexicalNode | null | undefined\n): node is ListWithColorNode {\n return node instanceof ListWithColorNode\n}\n","import {\n $applyNodeReplacement,\n TextNode,\n type DOMConversionMap,\n type DOMConversionOutput,\n type DOMExportOutput,\n type EditorConfig,\n type LexicalNode,\n type NodeKey,\n type SerializedTextNode,\n type Spread,\n} from \"lexical\"\n\nexport type SerializedMentionNode = Spread<\n {\n mentionName: string\n },\n SerializedTextNode\n>\n\nfunction $convertMentionElement(\n domNode: HTMLElement\n): DOMConversionOutput | null {\n const textContent = domNode.textContent\n\n if (textContent !== null) {\n const node = $createMentionNode(textContent)\n return {\n node,\n }\n }\n\n return null\n}\n\nconst mentionStyle = \"background-color: rgba(24, 119, 232, 0.2)\"\nexport class MentionNode extends TextNode {\n __mention: string\n\n static getType(): string {\n return \"mention\"\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__mention, node.__text, node.__key)\n }\n static importJSON(serializedNode: SerializedMentionNode): MentionNode {\n const node = $createMentionNode(serializedNode.mentionName)\n node.setTextContent(serializedNode.text)\n node.setFormat(serializedNode.format)\n node.setDetail(serializedNode.detail)\n node.setMode(serializedNode.mode)\n node.setStyle(serializedNode.style)\n return node\n }\n\n constructor(mentionName: string, text?: string, key?: NodeKey) {\n super(text ?? mentionName, key)\n this.__mention = mentionName\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n ...super.exportJSON(),\n mentionName: this.__mention,\n type: \"mention\",\n version: 1,\n }\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config)\n dom.style.cssText = mentionStyle\n dom.className = \"mention\"\n return dom\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement(\"span\")\n element.setAttribute(\"data-lexical-mention\", \"true\")\n element.textContent = this.__text\n return { element }\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-lexical-mention\")) {\n return null\n }\n return {\n conversion: $convertMentionElement,\n priority: 1,\n }\n },\n }\n }\n\n isTextEntity(): true {\n return true\n }\n\n canInsertTextBefore(): boolean {\n return false\n }\n\n canInsertTextAfter(): boolean {\n return false\n }\n}\n\nexport function $createMentionNode(mentionName: string): MentionNode {\n const mentionNode = new MentionNode(mentionName)\n mentionNode.setMode(\"segmented\").toggleDirectionless()\n return $applyNodeReplacement(mentionNode)\n}\n\nexport function $isMentionNode(\n node: LexicalNode | null | undefined\n): node is MentionNode {\n return node instanceof MentionNode\n}\n","import { CodeHighlightNode, CodeNode } from \"@lexical/code\"\nimport { HashtagNode } from \"@lexical/hashtag\"\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\"\nimport { ListItemNode, ListNode, type ListType } from \"@lexical/list\"\nimport { OverflowNode } from \"@lexical/overflow\"\nimport { HorizontalRuleNode } from \"@lexical/react/LexicalHorizontalRuleNode\"\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\"\nimport { TableCellNode, TableNode, TableRowNode } from \"@lexical/table\"\nimport {\n Klass,\n LexicalEditor,\n LexicalNode,\n LexicalNodeReplacement,\n ParagraphNode,\n TextNode,\n} from \"lexical\"\n\nimport { AutocompleteNode } from \"../nodes/autocomplete-node\"\nimport { TweetNode } from \"../nodes/embeds/tweet-node\"\nimport { YouTubeNode } from \"../nodes/embeds/youtube-node\"\nimport { EmojiNode } from \"../nodes/emoji-node\"\nimport { ImageNode } from \"../nodes/image-node\"\nimport { KeywordNode } from \"../nodes/keyword-node\"\nimport { LayoutContainerNode } from \"../nodes/layout-container-node\"\nimport { LayoutItemNode } from \"../nodes/layout-item-node\"\nimport { ListWithColorNode } from \"../nodes/list-with-color-node\"\nimport { MentionNode } from \"../nodes/mention-node\"\n\n/** Tạo ListWithColorNode dùng đúng class đã đăng ký trong editor (tránh type mismatch khi bundle trùng). */\nexport function createListWithColorNodeFromRegistry(\n editor: LexicalEditor,\n listType: ListType,\n start: number\n): InstanceType<typeof ListWithColorNode> {\n const config = (editor as unknown as { _config?: { nodes?: Array<Klass<LexicalNode>> } })\n ._config\n const Klass = config?.nodes?.find(\n (K) =>\n typeof (K as { getType?: () => string }).getType === \"function\" &&\n (K as { getType: () => string }).getType() === \"listwithcolor\"\n ) as typeof ListWithColorNode | undefined\n if (Klass) return new Klass(listType, start) as InstanceType<typeof ListWithColorNode>\n return new ListWithColorNode(listType, start)\n}\n\nexport const nodes: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement> =\n [\n HeadingNode,\n ParagraphNode,\n TextNode,\n QuoteNode,\n {\n replace: ListNode,\n with: (node: ListNode) => {\n return new ListWithColorNode(node.getListType(), node.getStart())\n },\n },\n ListWithColorNode,\n ListItemNode,\n LinkNode,\n OverflowNode,\n HashtagNode,\n TableNode,\n TableCellNode,\n TableRowNode,\n CodeNode,\n CodeHighlightNode,\n HorizontalRuleNode,\n MentionNode,\n ImageNode,\n EmojiNode,\n KeywordNode,\n LayoutContainerNode,\n LayoutItemNode,\n AutoLinkNode,\n TweetNode,\n YouTubeNode,\n AutocompleteNode,\n ]\n","export function ActionsPlugin({ children }: { children: React.ReactNode }) {\n return children\n}\n","\"use client\"\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n $isNodeSelection,\n COMMAND_PRIORITY_EDITOR,\n ElementFormatType,\n FORMAT_ELEMENT_COMMAND,\n LexicalNode,\n} from \"lexical\"\nimport { useEffect } from \"react\"\n\nexport function AlignPlugin(): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n // Ensure theme has textAlign configuration\n // This handles cases where the consumer app's theme might be missing these definitions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config = editor._config as any\n if (config.theme && !config.theme.textAlign) {\n // eslint-disable-next-line react-hooks/immutability\n config.theme.textAlign = {\n left: \"editor-text-align-left\",\n center: \"editor-text-align-center\",\n right: \"editor-text-align-right\",\n justify: \"editor-text-align-justify\",\n }\n }\n\n return editor.registerCommand<ElementFormatType>(\n FORMAT_ELEMENT_COMMAND,\n (formatType) => {\n const selection = $getSelection()\n \n if ($isRangeSelection(selection)) {\n const nodes = selection.getNodes()\n const processedBlocks = new Set<string>()\n\n nodes.forEach((node) => {\n let block: LexicalNode | null = node\n // Navigate up to find the nearest block element\n if (!$isElementNode(block) || block.isInline()) {\n const parent = block.getParentOrThrow()\n block = parent\n }\n \n // Continue navigating up if it's still inline (just in case)\n while (block !== null && (!$isElementNode(block) || block.isInline())) {\n block = block.getParent()\n }\n\n if (block && $isElementNode(block) && !processedBlocks.has(block.getKey())) {\n processedBlocks.add(block.getKey())\n block.setFormat(formatType)\n }\n })\n } else if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n const processedBlocks = new Set<string>()\n \n nodes.forEach((node) => {\n // For NodeSelection (e.g. ImageNode), find the parent block\n let block = node.getParent()\n while (block !== null && (!$isElementNode(block) || block.isInline())) {\n block = block.getParent()\n }\n\n if (block && $isElementNode(block) && !processedBlocks.has(block.getKey())) {\n processedBlocks.add(block.getKey())\n block.setFormat(formatType)\n }\n })\n }\n \n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","\"use client\"\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { CLEAR_EDITOR_COMMAND } from \"lexical\"\nimport { Trash2Icon } from \"lucide-react\"\n\nimport { Button } from \"../../ui/button\"\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../../ui/dialog\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ClearEditorActionPlugin() {\n const [editor] = useLexicalComposerContext()\n\n return (\n <Dialog>\n <Tooltip disableHoverableContent>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button size={\"sm\"} variant={\"ghost\"} className=\"editor-p-2\">\n <IconSize size=\"sm\">\n <Trash2Icon />\n </IconSize>\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>Clear Editor</TooltipContent>\n </Tooltip>\n\n <DialogContent disableOutsideClick={true}>\n <DialogHeader>\n <DialogTitle>Clear Editor</DialogTitle>\n <DialogDescription>\n Are you sure you want to clear the editor?\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <DialogClose asChild>\n <Button variant=\"outline\">Cancel</Button>\n </DialogClose>\n\n <DialogClose asChild>\n <Button\n variant=\"destructive\"\n onClick={() => {\n editor.dispatchCommand(CLEAR_EDITOR_COMMAND, undefined)\n editor.focus()\n }}\n >\n Clear\n </Button>\n </DialogClose>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const Separator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { orientation?: \"horizontal\" | \"vertical\" }\n>(({ className, orientation = \"horizontal\", ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n \"editor-separator\",\n `editor-separator--${orientation}`,\n className\n )}\n {...props}\n />\n))\nSeparator.displayName = \"Separator\"\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport interface FlexProps extends React.HTMLAttributes<HTMLDivElement> {\n align?: \"start\" | \"center\" | \"end\" | \"baseline\" | \"stretch\"\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\"\n direction?: \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\"\n wrap?: \"nowrap\" | \"wrap\" | \"wrap-reverse\"\n gap?: number | string\n}\n\nexport const Flex = React.forwardRef<HTMLDivElement, FlexProps>(\n ({ className, align, justify, direction, wrap, gap, style, ...props }, ref) => {\n const gapStyle =\n typeof gap === \"number\"\n ? { gap: `${gap * 0.25}rem` }\n : typeof gap !== \"undefined\"\n ? { gap }\n : undefined\n\n return (\n <div\n ref={ref}\n className={cn(\n \"editor-flex\",\n align && `editor-flex--items-${align}`,\n justify && `editor-flex--justify-${justify}`,\n direction && `editor-flex--flex-${direction}`,\n wrap && `editor-flex--flex-${wrap}`,\n className\n )}\n style={{ ...gapStyle, ...style }}\n {...props}\n />\n )\n }\n)\nFlex.displayName = \"Flex\"\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $rootTextContent } from \"@lexical/text\"\nimport { TypographySpanSmallMuted } from \"../../ui/typography\"\nimport { Separator } from \"../../ui/separator\"\nimport { Flex } from \"../../ui/flex\"\n\nlet textEncoderInstance: null | TextEncoder = null\n\nfunction textEncoder(): null | TextEncoder {\n if (window.TextEncoder === undefined) {\n return null\n }\n\n if (textEncoderInstance === null) {\n textEncoderInstance = new window.TextEncoder()\n }\n\n return textEncoderInstance\n}\n\nfunction utf8Length(text: string) {\n const currentTextEncoder = textEncoder()\n\n if (currentTextEncoder === null) {\n // http://stackoverflow.com/a/5515960/210370\n const m = encodeURIComponent(text).match(/%[89ABab]/g)\n return text.length + (m ? m.length : 0)\n }\n\n return currentTextEncoder.encode(text).length\n}\n\ninterface CounterCharacterPluginProps {\n charset?: \"UTF-8\" | \"UTF-16\"\n}\n\nconst strlen = (text: string, charset: \"UTF-8\" | \"UTF-16\") => {\n if (charset === \"UTF-8\") {\n return utf8Length(text)\n } else if (charset === \"UTF-16\") {\n return text.length\n }\n}\n\nconst countWords = (text: string) => {\n return text.split(/\\s+/).filter((word) => word.length > 0).length\n}\n\nexport function CounterCharacterPlugin({\n charset = \"UTF-16\",\n}: CounterCharacterPluginProps) {\n const [editor] = useLexicalComposerContext()\n const [stats, setStats] = useState(() => {\n const initialText = editor.getEditorState().read($rootTextContent)\n return {\n characters: strlen(initialText, charset),\n words: countWords(initialText),\n }\n })\n\n useEffect(() => {\n return editor.registerTextContentListener((currentText: string) => {\n setStats({\n characters: strlen(currentText, charset),\n words: countWords(currentText),\n })\n })\n }, [editor, charset])\n\n return (\n <Flex gap={2} className=\"editor-whitespace-nowrap\">\n <TypographySpanSmallMuted>{stats.characters} characters</TypographySpanSmallMuted>\n <Separator orientation=\"vertical\" className=\"editor-h-4\" />\n <TypographySpanSmallMuted>{stats.words} words</TypographySpanSmallMuted>\n </Flex>\n )\n}\n","\"use client\"\n\nimport { useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { LockIcon, UnlockIcon } from \"lucide-react\"\n\nimport { Button } from \"../../ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function EditModeTogglePlugin() {\n const [editor] = useLexicalComposerContext()\n const [isEditable, setIsEditable] = useState(() => editor.isEditable())\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={\"ghost\"}\n onClick={() => {\n editor.setEditable(!editor.isEditable())\n setIsEditable(editor.isEditable())\n }}\n title=\"Read-Only Mode\"\n aria-label={`${!isEditable ? \"Unlock\" : \"Lock\"} read-only mode`}\n size={\"sm\"}\n className=\"editor-p-2\"\n >\n {isEditable ? (\n <IconSize size=\"sm\">\n <LockIcon />\n </IconSize>\n ) : (\n <IconSize size=\"sm\">\n <UnlockIcon />\n </IconSize>\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {isEditable ? \"View Only Mode\" : \"Edit Mode\"}\n </TooltipContent>\n </Tooltip>\n )\n}\n","\"use client\"\n\nimport { exportFile, importFile } from \"@lexical/file\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { DownloadIcon, UploadIcon } from \"lucide-react\"\n\nimport { Button } from \"../../ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ImportExportPlugin() {\n const [editor] = useLexicalComposerContext()\n return (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={\"ghost\"}\n onClick={() => importFile(editor)}\n title=\"Import\"\n aria-label=\"Import editor state from JSON\"\n size={\"sm\"}\n className=\"editor-p-2\"\n >\n <IconSize size=\"sm\">\n <UploadIcon />\n </IconSize>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Import Content</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={\"ghost\"}\n onClick={() =>\n exportFile(editor, {\n fileName: `Playground ${new Date().toISOString()}`,\n source: \"Playground\",\n })\n }\n title=\"Export\"\n aria-label=\"Export editor state to JSON\"\n size={\"sm\"}\n className=\"editor-p-2\"\n >\n <IconSize size=\"sm\">\n <DownloadIcon />\n </IconSize>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Export Content</TooltipContent>\n </Tooltip>\n </>\n )\n}\n","\"use client\"\n\nimport { useCallback } from \"react\"\nimport { $createCodeNode, $isCodeNode } from \"@lexical/code\"\nimport {\n $convertFromMarkdownString,\n $convertToMarkdownString,\n Transformer,\n} from \"@lexical/markdown\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $createTextNode, $getRoot } from \"lexical\"\nimport { FileTextIcon } from \"lucide-react\"\n\nimport { Button } from \"../../ui/button\"\nimport { IconSize } from \"../../ui/typography\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\n\nexport function MarkdownTogglePlugin({\n shouldPreserveNewLinesInMarkdown,\n transformers,\n}: {\n shouldPreserveNewLinesInMarkdown: boolean\n transformers: Array<Transformer>\n}) {\n const [editor] = useLexicalComposerContext()\n\n const handleMarkdownToggle = useCallback(() => {\n editor.update(() => {\n const root = $getRoot()\n const firstChild = root.getFirstChild()\n if ($isCodeNode(firstChild) && firstChild.getLanguage() === \"markdown\") {\n $convertFromMarkdownString(\n firstChild.getTextContent(),\n transformers,\n undefined, // node\n shouldPreserveNewLinesInMarkdown\n )\n } else {\n const markdown = $convertToMarkdownString(\n transformers,\n undefined, //node\n shouldPreserveNewLinesInMarkdown\n )\n const codeNode = $createCodeNode(\"markdown\")\n codeNode.append($createTextNode(markdown))\n root.clear().append(codeNode)\n if (markdown.length === 0) {\n codeNode.select()\n }\n }\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, shouldPreserveNewLinesInMarkdown])\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={\"ghost\"}\n onClick={handleMarkdownToggle}\n title=\"Convert From Markdown\"\n aria-label=\"Convert from markdown\"\n size={\"sm\"}\n className=\"editor-p-2\"\n >\n <IconSize size=\"sm\">\n <FileTextIcon />\n </IconSize>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Markdown Mode</TooltipContent>\n </Tooltip>\n )\n}\n","import { SerializedDocument } from \"@lexical/file\"\n\nasync function* generateReader<T = unknown>(\n reader: ReadableStreamDefaultReader<T>\n) {\n let done = false\n while (!done) {\n const res = await reader.read()\n const { value } = res\n if (value !== undefined) {\n yield value\n }\n done = res.done\n }\n}\n\nasync function readBytestoString(\n reader: ReadableStreamDefaultReader\n): Promise<string> {\n const output = []\n const chunkSize = 0x8000\n for await (const value of generateReader(reader)) {\n for (let i = 0; i < value.length; i += chunkSize) {\n output.push(String.fromCharCode(...value.subarray(i, i + chunkSize)))\n }\n }\n return output.join(\"\")\n}\n\nexport async function docToHash(doc: SerializedDocument): Promise<string> {\n const cs = new CompressionStream(\"gzip\")\n const writer = cs.writable.getWriter()\n const [, output] = await Promise.all([\n writer\n .write(new TextEncoder().encode(JSON.stringify(doc)))\n .then(() => writer.close()),\n readBytestoString(cs.readable.getReader()),\n ])\n return `#doc=${btoa(output)\n .replace(/\\//g, \"_\")\n .replace(/\\+/g, \"-\")\n .replace(/=+$/, \"\")}`\n}\n\nexport async function docFromHash(\n hash: string\n): Promise<SerializedDocument | null> {\n const m = /^#doc=(.*)$/.exec(hash)\n if (!m || !m[1]) {\n return null\n }\n const ds = new DecompressionStream(\"gzip\")\n const writer = ds.writable.getWriter()\n const b64 = atob(m[1].replace(/_/g, \"/\").replace(/-/g, \"+\"))\n const array = new Uint8Array(b64.length)\n for (let i = 0; i < b64.length; i++) {\n array[i] = b64.charCodeAt(i)\n }\n const closed = writer.write(array).then(() => writer.close())\n const output = []\n for await (const chunk of generateReader(\n ds.readable.pipeThrough(new TextDecoderStream()).getReader()\n )) {\n output.push(chunk)\n }\n await closed\n return JSON.parse(output.join(\"\"))\n}\n","\"use client\"\n\nimport { useEffect } from \"react\"\nimport {\n editorStateFromSerializedDocument,\n SerializedDocument,\n serializedDocumentFromEditorState,\n} from \"@lexical/file\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { CLEAR_HISTORY_COMMAND } from \"lexical\"\nimport { SendIcon } from \"lucide-react\"\nimport { toast } from \"sonner\"\n\nimport {\n docFromHash,\n docToHash,\n} from \"../../utils/doc-serialization\"\nimport { Button } from \"../../ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ShareContentPlugin() {\n const [editor] = useLexicalComposerContext()\n async function shareDoc(doc: SerializedDocument): Promise<void> {\n const url = new URL(window.location.toString())\n url.hash = await docToHash(doc)\n const newUrl = url.toString()\n window.history.replaceState({}, \"\", newUrl)\n await window.navigator.clipboard.writeText(newUrl)\n }\n useEffect(() => {\n docFromHash(window.location.hash).then((doc) => {\n if (doc && doc.source === \"editor\") {\n editor.setEditorState(editorStateFromSerializedDocument(editor, doc))\n editor.dispatchCommand(CLEAR_HISTORY_COMMAND, undefined)\n }\n })\n }, [editor])\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={\"ghost\"}\n onClick={() =>\n shareDoc(\n serializedDocumentFromEditorState(editor.getEditorState(), {\n source: \"editor\",\n })\n ).then(\n () => toast.success(\"URL copied to clipboard\"),\n () => toast.error(\"URL could not be copied to clipboard\")\n )\n }\n title=\"Share\"\n aria-label=\"Share Playground link to current editor state\"\n size={\"sm\"}\n className=\"editor-p-2\"\n >\n <IconSize size=\"sm\">\n <SendIcon />\n </IconSize>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Share Content</TooltipContent>\n </Tooltip>\n )\n}\n","import { useCallback, useEffect, useRef } from \"react\"\nimport { logger } from \"../lib/logger\"\n\nconst getElement = (): HTMLElement => {\n let element = document.getElementById(\"report-container\")\n\n if (element === null) {\n element = document.createElement(\"div\")\n element.id = \"report-container\"\n element.style.position = \"fixed\"\n element.style.top = \"50%\"\n element.style.left = \"50%\"\n element.style.fontSize = \"32px\"\n element.style.transform = \"translate(-50%, -50px)\"\n element.style.padding = \"20px\"\n element.style.background = \"rgba(240, 240, 240, 0.4)\"\n element.style.borderRadius = \"20px\"\n\n if (document.body) {\n document.body.appendChild(element)\n }\n }\n\n return element\n}\n\nexport function useReport(): (arg0: string) => ReturnType<typeof setTimeout> {\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const cleanup = useCallback(() => {\n if (timer.current !== null) {\n clearTimeout(timer.current)\n timer.current = null\n }\n\n if (document.body) {\n document.body.removeChild(getElement())\n }\n }, [])\n\n useEffect(() => {\n return cleanup\n }, [cleanup])\n\n return useCallback(\n (content) => {\n logger.debug(\"Report content\", { content })\n const element = getElement()\n if (timer.current !== null) {\n clearTimeout(timer.current)\n }\n element.innerHTML = content\n timer.current = setTimeout(cleanup, 1000)\n return timer.current\n },\n [cleanup]\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect, useRef, useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport type { LexicalCommand, LexicalEditor, RangeSelection } from \"lexical\"\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n REDO_COMMAND,\n UNDO_COMMAND,\n} from \"lexical\"\nimport { MicIcon } from \"lucide-react\"\n\nimport { useReport } from \"../../editor-hooks/use-report\"\nimport { CAN_USE_DOM } from \"../../shared/can-use-dom\"\nimport { Button } from \"../../ui/button\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport const SPEECH_TO_TEXT_COMMAND: LexicalCommand<boolean> = createCommand(\n \"SPEECH_TO_TEXT_COMMAND\"\n)\n\nconst VOICE_COMMANDS: Readonly<\n Record<\n string,\n (arg0: { editor: LexicalEditor; selection: RangeSelection }) => void\n >\n> = {\n \"\\n\": ({ selection }) => {\n selection.insertParagraph()\n },\n redo: ({ editor }) => {\n editor.dispatchCommand(REDO_COMMAND, undefined)\n },\n undo: ({ editor }) => {\n editor.dispatchCommand(UNDO_COMMAND, undefined)\n },\n}\n\nexport const SUPPORT_SPEECH_RECOGNITION: boolean =\n CAN_USE_DOM &&\n (\"SpeechRecognition\" in window || \"webkitSpeechRecognition\" in window)\n\nfunction SpeechToTextPluginImpl() {\n const [editor] = useLexicalComposerContext()\n const [isEnabled, setIsEnabled] = useState<boolean>(false)\n const [isSpeechToText, setIsSpeechToText] = useState<boolean>(false)\n const SpeechRecognition =\n CAN_USE_DOM &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((window as any).SpeechRecognition || (window as any).webkitSpeechRecognition)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const recognition = useRef<any | null>(null)\n const report = useReport()\n\n useEffect(() => {\n if (isEnabled && recognition.current === null) {\n recognition.current = new SpeechRecognition()\n recognition.current.continuous = true\n recognition.current.interimResults = true\n recognition.current.addEventListener(\n \"result\",\n (event: typeof SpeechRecognition) => {\n const resultItem = event.results.item(event.resultIndex)\n const { transcript } = resultItem.item(0)\n report(transcript)\n\n if (!resultItem.isFinal) {\n return\n }\n\n editor.update(() => {\n const selection = $getSelection()\n\n if ($isRangeSelection(selection)) {\n const command = VOICE_COMMANDS[transcript.toLowerCase().trim()]\n\n if (command) {\n command({\n editor,\n selection,\n })\n } else if (transcript.match(/\\s*\\n\\s*/)) {\n selection.insertParagraph()\n } else {\n selection.insertText(transcript)\n }\n }\n })\n }\n )\n }\n\n if (recognition.current) {\n if (isEnabled) {\n recognition.current.start()\n } else {\n recognition.current.stop()\n }\n }\n\n return () => {\n if (recognition.current !== null) {\n recognition.current.stop()\n }\n }\n }, [SpeechRecognition, editor, isEnabled, report])\n useEffect(() => {\n return editor.registerCommand(\n SPEECH_TO_TEXT_COMMAND,\n (_isEnabled: boolean) => {\n setIsEnabled(_isEnabled)\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n onClick={() => {\n editor.dispatchCommand(SPEECH_TO_TEXT_COMMAND, !isSpeechToText)\n setIsSpeechToText(!isSpeechToText)\n }}\n variant={isSpeechToText ? \"secondary\" : \"ghost\"}\n title=\"Speech To Text\"\n aria-label={`${isSpeechToText ? \"Enable\" : \"Disable\"} speech to text`}\n className=\"editor-p-2\"\n size={\"sm\"}\n >\n <IconSize size=\"sm\">\n <MicIcon />\n </IconSize>\n </Button>\n </TooltipTrigger>\n <TooltipContent>Speech To Text</TooltipContent>\n </Tooltip>\n )\n}\n\nexport const SpeechToTextPlugin = SUPPORT_SPEECH_RECOGNITION\n ? SpeechToTextPluginImpl\n : () => null\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const ScrollArea = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"editor-scroll-area-viewport\", className)}\n {...props}\n >\n {children}\n </div>\n )\n)\nScrollArea.displayName = \"ScrollArea\"\n\nexport const ScrollBar = () => null // No-op for now, or use custom scrollbar styles\n","\"use client\"\n\nimport { JSX } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { TreeView } from \"@lexical/react/LexicalTreeView\"\nimport { NotebookPenIcon } from \"lucide-react\"\n\nimport { Button } from \"../../ui/button\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"../../ui/dialog\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../ui/tooltip\"\nimport { ScrollArea, ScrollBar } from \"../../ui/scroll-area\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function TreeViewPlugin(): JSX.Element {\n const [editor] = useLexicalComposerContext()\n return (\n <Dialog>\n <Tooltip>\n <TooltipTrigger asChild>\n <DialogTrigger asChild>\n <Button size={\"sm\"} variant={\"ghost\"} className=\"editor-p-2\">\n <IconSize size=\"sm\">\n <NotebookPenIcon />\n </IconSize>\n </Button>\n </DialogTrigger>\n </TooltipTrigger>\n <TooltipContent>View Tree</TooltipContent>\n </Tooltip>\n <DialogContent disableOutsideClick={true}>\n <DialogHeader>\n <DialogTitle>Tree View</DialogTitle>\n <DialogDescription>\n Xem cấu trúc cây của nội dung editor\n </DialogDescription>\n </DialogHeader>\n <ScrollArea className=\"editor-tree-view-scroll-area\">\n <TreeView\n viewClassName=\"tree-view-output\"\n treeTypeButtonClassName=\"debug-treetype-button\"\n timeTravelPanelClassName=\"debug-timetravel-panel\"\n timeTravelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelSliderClassName=\"debug-timetravel-panel-slider\"\n timeTravelPanelButtonClassName=\"debug-timetravel-panel-button\"\n editor={editor}\n />\n <ScrollBar />\n </ScrollArea>\n </DialogContent>\n </Dialog>\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport * as React from \"react\"\nimport { JSX } from \"react\"\nimport {\n createLinkMatcherWithRegExp,\n AutoLinkPlugin as LexicalAutoLinkPlugin,\n} from \"@lexical/react/LexicalAutoLinkPlugin\"\n\nconst URL_REGEX =\n /((https?:\\/\\/(www\\.)?)|(www\\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)(?<![-.+():%])/\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/\n\nconst MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text) => {\n return text.startsWith(\"http\") ? text : `https://${text}`\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`\n }),\n]\n\nexport function AutoLinkPlugin(): JSX.Element {\n return <LexicalAutoLinkPlugin matchers={MATCHERS} />\n}\n","import { useEffect, useMemo, useRef } from \"react\"\n\n/**\n * Debounce with optional maxWait (invoke at latest after maxWait from first call).\n * Inline implementation to avoid lodash dependency.\n */\nfunction debounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n options?: { maxWait?: number }\n): T & { cancel: () => void } {\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n let maxWaitId: ReturnType<typeof setTimeout> | null = null\n let lastArgs: Parameters<T> = [] as unknown as Parameters<T>\n\n const cancel = () => {\n if (timeoutId) clearTimeout(timeoutId)\n if (maxWaitId) clearTimeout(maxWaitId)\n timeoutId = null\n maxWaitId = null\n }\n\n const flush = () => {\n if (timeoutId) clearTimeout(timeoutId)\n if (maxWaitId) clearTimeout(maxWaitId)\n timeoutId = null\n maxWaitId = null\n fn(...lastArgs)\n }\n\n const debounced = (...args: Parameters<T>) => {\n lastArgs = args\n if (timeoutId) clearTimeout(timeoutId)\n timeoutId = setTimeout(flush, ms)\n if (options?.maxWait != null && maxWaitId === null) {\n maxWaitId = setTimeout(flush, options.maxWait)\n }\n }\n\n ;(debounced as T & { cancel: () => void }).cancel = cancel\n return debounced as T & { cancel: () => void }\n}\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number\n) {\n const funcRef = useRef<T>(fn)\n const debouncedRef = useRef<((...args: Parameters<T>) => void) & { cancel: () => void } | null>(null)\n\n useEffect(() => {\n funcRef.current = fn\n }, [fn])\n\n useEffect(() => {\n const debounced = debounce(\n ((...args: Parameters<T>) => {\n funcRef.current(...args)\n }) as T,\n ms,\n { maxWait }\n )\n debouncedRef.current = debounced\n return () => {\n debounced.cancel()\n debouncedRef.current = null\n }\n }, [ms, maxWait])\n\n return useMemo(() => {\n const run = (...args: Parameters<T>) => {\n debouncedRef.current?.(...args)\n }\n ;(run as unknown as { cancel: () => void }).cancel = () => {\n debouncedRef.current?.cancel()\n }\n return run as unknown as T & { cancel: () => void }\n }, [])\n}\n","import * as React from \"react\"\nimport { useState } from \"react\"\nimport { $isCodeNode } from \"@lexical/code\"\nimport {\n $getNearestNodeFromDOMNode,\n $getSelection,\n $setSelection,\n LexicalEditor,\n} from \"lexical\"\nimport { CircleCheckIcon, CopyIcon } from \"lucide-react\"\nimport { logger } from \"../lib/logger\"\n\nimport { useDebounce } from \"../editor-hooks/use-debounce\"\nimport { IconSize } from \"../ui/typography\"\n\ninterface Props {\n editor: LexicalEditor\n getCodeDOMNode: () => HTMLElement | null\n}\n\nexport function CopyButton({ editor, getCodeDOMNode }: Props) {\n const [isCopyCompleted, setCopyCompleted] = useState<boolean>(false)\n\n const removeSuccessIcon = useDebounce(() => {\n setCopyCompleted(false)\n }, 1000)\n\n async function handleClick(): Promise<void> {\n const codeDOMNode = getCodeDOMNode()\n\n if (!codeDOMNode) {\n return\n }\n\n let content = \"\"\n\n editor.update(() => {\n const codeNode = $getNearestNodeFromDOMNode(codeDOMNode)\n\n if ($isCodeNode(codeNode)) {\n content = codeNode.getTextContent()\n }\n\n const selection = $getSelection()\n $setSelection(selection)\n })\n\n try {\n await navigator.clipboard.writeText(content)\n setCopyCompleted(true)\n removeSuccessIcon()\n } catch (err) {\n logger.error(\"Failed to copy: \", err)\n }\n }\n\n return (\n <button\n type=\"button\"\n className=\"editor-btn editor-text-foreground-50 editor-flex editor-shrink-0 editor-cursor-pointer editor-items-center editor-rounded-md editor-border editor-border-transparent editor-bg-none editor-p-1 editor-uppercase editor-transition-colors\"\n onClick={handleClick}\n aria-label=\"copy\"\n >\n {isCopyCompleted ? (\n <IconSize size=\"sm\">\n <CircleCheckIcon />\n </IconSize>\n ) : (\n <IconSize size=\"sm\">\n <CopyIcon />\n </IconSize>\n )}\n </button>\n )\n}\n","import * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { cn } from \"../lib/utils\"\n\ninterface SelectContextValue {\n value: string\n onValueChange?: (value: string) => void\n open: boolean\n setOpen: (open: boolean) => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n disabled?: boolean\n}\n\nconst SelectContext = React.createContext<SelectContextValue | null>(null)\n\nexport interface SelectProps {\n value: string\n onValueChange?: (value: string) => void\n children: React.ReactNode\n disabled?: boolean\n modal?: boolean\n}\n\nexport function Select({ value, onValueChange, children, disabled }: SelectProps) {\n const [open, setOpen] = React.useState(false)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n\n const contextValue = React.useMemo(() => ({\n value, onValueChange, open, setOpen, triggerRef, disabled\n }), [value, onValueChange, open, setOpen, disabled])\n\n return (\n <SelectContext.Provider value={contextValue}>\n {children}\n </SelectContext.Provider>\n )\n}\n\nexport interface SelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\"\n}\n\nexport function SelectTrigger({ className, children, size = \"default\", ...props }: SelectTriggerProps) {\n const context = React.useContext(SelectContext)\n if (!context) throw new Error(\"SelectTrigger must be used within Select\")\n\n const { triggerRef, disabled, open, setOpen } = context\n\n return (\n <button\n ref={triggerRef}\n type=\"button\"\n className={cn(\n \"editor-select\", \n size !== \"default\" && `editor-select--size-${size}`,\n className\n )}\n onClick={() => !disabled && setOpen(!open)}\n disabled={disabled || props.disabled}\n {...props}\n >\n {children}\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"editor-select-icon\">\n <path d=\"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.26618 11.9026 7.38064 11.95 7.49999 11.95C7.61933 11.95 7.73379 11.9026 7.81819 11.8182L10.0682 9.56819Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n </button>\n )\n}\n\nexport function SelectValue({ placeholder }: { placeholder?: string }) {\n const context = React.useContext(SelectContext)\n if (!context) throw new Error(\"SelectValue must be used within Select\")\n \n return <span>{context.value || placeholder}</span>\n}\n\nexport function SelectContent({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n const context = React.useContext(SelectContext)\n const [position, setPosition] = React.useState({ top: 0, left: 0, width: 0 })\n const contentRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (context?.open && context.triggerRef.current) {\n const rect = context.triggerRef.current.getBoundingClientRect()\n setPosition({\n top: rect.bottom + window.scrollY + 4,\n left: rect.left + window.scrollX,\n width: rect.width\n })\n\n // Simple click outside for portal\n const handleClickOutside = (e: MouseEvent) => {\n if (contentRef.current && !contentRef.current.contains(e.target as Node) && \n !context.triggerRef.current?.contains(e.target as Node)) {\n context.setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [context, context?.open, context?.triggerRef, context?.setOpen])\n\n if (!context?.open) return null\n\n return createPortal(\n <div\n ref={contentRef}\n className={cn(\"editor-popover-content\", className)}\n style={{\n position: \"absolute\",\n top: position.top,\n left: position.left,\n minWidth: position.width,\n width: \"auto\", // allow wider\n padding: \"4px\",\n zIndex: 9999\n }}\n {...props}\n >\n {children}\n </div>,\n document.body\n )\n}\n\nexport function SelectItem({ value, children, className, ...props }: React.HTMLAttributes<HTMLDivElement> & { value: string }) {\n const context = React.useContext(SelectContext)\n if (!context) throw new Error(\"SelectItem must be used within Select\")\n\n const isSelected = context.value === value\n\n return (\n <div\n className={cn(\n \"editor-select-item\",\n className\n )}\n data-selected={isSelected}\n onClick={() => {\n context.onValueChange?.(value)\n context.setOpen(false)\n }}\n {...props}\n >\n {isSelected && (\n <span className=\"editor-select-item__check\">\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"editor-icon-sm\">\n <path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\" fillRule=\"evenodd\" clipRule=\"evenodd\"></path>\n </svg>\n </span>\n )}\n {children}\n </div>\n )\n}\n\nexport function SelectGroup({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div role=\"group\" className={className} {...props}>\n {children}\n </div>\n )\n}\n\nexport function SelectLabel({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"editor-select-label\", className)} {...props}>\n {children}\n </div>\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useCallback, useEffect, useRef, useState } from \"react\"\nimport {\n $isCodeNode,\n CODE_LANGUAGE_FRIENDLY_NAME_MAP,\n CodeNode,\n getLanguageFriendlyName,\n} from \"@lexical/code\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $getNearestNodeFromDOMNode, $getNodeByKey, isHTMLElement } from \"lexical\"\nimport { createPortal } from \"react-dom\"\n\nimport { useDebounce } from \"../editor-hooks/use-debounce\"\nimport { CopyButton } from \"../editor-ui/code-button\"\nimport { Select, SelectContent, SelectItem, SelectTrigger } from \"../ui/select\"\n\nconst CODE_PADDING = 8\n\nfunction getCodeLanguageOptions(): [string, string][] {\n const options: [string, string][] = []\n\n for (const [lang, friendlyName] of Object.entries(\n CODE_LANGUAGE_FRIENDLY_NAME_MAP\n )) {\n options.push([lang, friendlyName])\n }\n\n return options\n}\n\nconst CODE_LANGUAGE_OPTIONS = getCodeLanguageOptions()\n\ninterface Position {\n top: string\n right: string\n}\n\nfunction CodeActionMenuContainer({\n anchorElem,\n}: {\n anchorElem: HTMLElement\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const [lang, setLang] = useState(\"\")\n const [nodeKey, setNodeKey] = useState<string | null>(null)\n const [isShown, setShown] = useState<boolean>(false)\n const [shouldListenMouseMove, setShouldListenMouseMove] =\n useState<boolean>(false)\n const [position, setPosition] = useState<Position>({\n right: \"0\",\n top: \"0\",\n })\n const codeSetRef = useRef<Set<string>>(new Set())\n const codeDOMNodeRef = useRef<HTMLElement | null>(null)\n\n function getCodeDOMNode(): HTMLElement | null {\n return codeDOMNodeRef.current\n }\n\n const debouncedOnMouseMove = useDebounce(\n (event: MouseEvent) => {\n const { codeDOMNode, isOutside } = getMouseInfo(event)\n if (isOutside) {\n setShown(false)\n return\n }\n\n if (!codeDOMNode) {\n return\n }\n\n codeDOMNodeRef.current = codeDOMNode\n\n let codeNode: CodeNode | null = null\n let _lang = \"\"\n let _nodeKey = \"\"\n\n editor.update(() => {\n const maybeCodeNode = $getNearestNodeFromDOMNode(codeDOMNode)\n\n if ($isCodeNode(maybeCodeNode)) {\n codeNode = maybeCodeNode\n _lang = codeNode.getLanguage() || \"\"\n _nodeKey = codeNode.getKey()\n }\n })\n\n if (codeNode) {\n const { y: editorElemY, right: editorElemRight } =\n anchorElem.getBoundingClientRect()\n const { y, right } = codeDOMNode.getBoundingClientRect()\n setLang(_lang)\n setNodeKey(_nodeKey)\n setShown(true)\n setPosition({\n right: `${editorElemRight - right + CODE_PADDING}px`,\n top: `${y - editorElemY + CODE_PADDING}px`,\n })\n }\n },\n 50,\n 1000\n )\n\n const onCodeLanguageSelect = useCallback(\n (value: string) => {\n editor.update(() => {\n if (nodeKey !== null) {\n const node = $getNodeByKey(nodeKey)\n if ($isCodeNode(node)) {\n node.setLanguage(value)\n setLang(value)\n }\n }\n })\n },\n [editor, nodeKey]\n )\n\n useEffect(() => {\n if (!shouldListenMouseMove) {\n return\n }\n\n document.addEventListener(\"mousemove\", debouncedOnMouseMove)\n\n return () => {\n setShown(false)\n debouncedOnMouseMove.cancel()\n document.removeEventListener(\"mousemove\", debouncedOnMouseMove)\n }\n }, [shouldListenMouseMove, debouncedOnMouseMove])\n\n useEffect(() => {\n return editor.registerMutationListener(\n CodeNode,\n (mutations) => {\n editor.getEditorState().read(() => {\n for (const [key, type] of mutations) {\n switch (type) {\n case \"created\":\n codeSetRef.current.add(key)\n break\n\n case \"destroyed\":\n codeSetRef.current.delete(key)\n break\n\n default:\n break\n }\n }\n })\n setShouldListenMouseMove(codeSetRef.current.size > 0)\n },\n { skipInitialization: false }\n )\n }, [editor])\n\n return (\n <>\n {isShown ? (\n <div\n className=\"editor-code-action-menu\"\n style={{ ...position, position: \"absolute\" }}\n >\n <Select\n modal={false}\n value={lang}\n onValueChange={onCodeLanguageSelect}\n >\n <SelectTrigger className=\"editor-code-action-menu__select\">\n <span>{getLanguageFriendlyName(lang) || \"Select Language\"}</span>\n </SelectTrigger>\n <SelectContent className=\"editor-code-action-menu__select-content\">\n {CODE_LANGUAGE_OPTIONS.map(([value, label]) => (\n <SelectItem\n key={value}\n value={value}\n className=\"editor-code-action-menu__item\"\n >\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <div className=\"editor-code-action-menu__separator\" />\n\n <CopyButton editor={editor} getCodeDOMNode={getCodeDOMNode} />\n </div>\n ) : null}\n </>\n )\n}\n\nfunction getMouseInfo(event: MouseEvent): {\n codeDOMNode: HTMLElement | null\n isOutside: boolean\n} {\n const target = event.target\n\n if (isHTMLElement(target)) {\n const codeDOMNode = target.closest<HTMLElement>(\n \"code.editor-code\"\n )\n const isOutside = !(\n codeDOMNode ||\n target.closest<HTMLElement>(\"div.editor-code-action-menu\")\n )\n\n return { codeDOMNode, isOutside }\n } else {\n return { codeDOMNode: null, isOutside: true }\n }\n}\n\nexport function CodeActionMenuPlugin({\n anchorElem = document.body,\n}: {\n anchorElem: HTMLElement | null\n}): React.ReactPortal | null {\n if (!anchorElem) {\n return null\n }\n\n return createPortal(\n <CodeActionMenuContainer anchorElem={anchorElem} />,\n anchorElem\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect } from \"react\"\nimport { registerCodeHighlighting } from \"@lexical/code\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\n\nexport function CodeHighlightPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return registerCodeHighlighting(editor)\n }, [editor])\n\n return null\n}\n","import { JSX, useCallback, useMemo, useState } from \"react\"\nimport * as React from \"react\"\n\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../ui/dialog\"\n\nexport function useEditorModal(): [\n JSX.Element | null,\n (\n title: string,\n showModal: (onClose: () => void) => JSX.Element,\n closeOnClickOutside?: boolean\n ) => void,\n] {\n const [modalContent, setModalContent] = useState<null | {\n closeOnClickOutside: boolean\n content: JSX.Element\n title: string\n }>(null)\n\n const onClose = useCallback(() => {\n setModalContent(null)\n }, [])\n\n const modal = useMemo(() => {\n if (modalContent === null) {\n return null\n }\n const { title, content, closeOnClickOutside } = modalContent\n return (\n <Dialog open={true} onOpenChange={onClose}>\n <DialogContent disableOutsideClick={!closeOnClickOutside}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{title}</DialogDescription>\n </DialogHeader>\n {content}\n </DialogContent>\n </Dialog>\n )\n }, [modalContent, onClose])\n\n const showModal = useCallback(\n (\n title: string,\n getContent: (onClose: () => void) => JSX.Element,\n closeOnClickOutside = false\n ) => {\n setModalContent({\n closeOnClickOutside,\n content: getContent(onClose),\n title,\n })\n },\n [onClose]\n )\n\n return [modal, showModal]\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const Command = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"editor-command\", className)}\n {...props}\n />\n )\n)\nCommand.displayName = \"Command\"\n\nexport const CommandList = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"editor-command-list\", className)}\n {...props}\n />\n )\n)\nCommandList.displayName = \"CommandList\"\n\nexport const CommandGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"editor-command-group\", className)}\n {...props}\n />\n )\n)\nCommandGroup.displayName = \"CommandGroup\"\n\nexport const CommandItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { onSelect?: () => void; value?: string }\n>(({ className, onSelect, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"editor-command-item\", className)}\n onClick={onSelect}\n {...props}\n />\n))\nCommandItem.displayName = \"CommandItem\"\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport dynamic from \"next/dynamic\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { useBasicTypeaheadTriggerMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\"\nimport { TextNode } from \"lexical\"\nimport { createPortal } from \"react-dom\"\n\nimport { useEditorModal } from \"../editor-hooks/use-modal\"\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"../ui/command\"\nimport { logger } from \"../lib/logger\"\n\nimport { ComponentPickerOption } from \"./picker/component-picker-option\"\n\n// Component wrapper để xử lý scroll tự động\nfunction MenuContent({\n options,\n selectedIndex,\n selectOptionAndCleanUp,\n setHighlightedIndex,\n}: {\n options: Array<ComponentPickerOption>\n selectedIndex: number | null\n selectOptionAndCleanUp: (option: ComponentPickerOption) => void\n setHighlightedIndex: (index: number) => void\n}) {\n const containerRef = useRef<HTMLDivElement | null>(null)\n\n // Scroll to selected item when selectedIndex changes\n useEffect(() => {\n if (selectedIndex !== null && selectedIndex >= 0 && selectedIndex < options.length) {\n // Sử dụng setTimeout để đảm bảo DOM đã được render và cmdk đã update selected state\n const timeoutId = setTimeout(() => {\n const container = containerRef.current\n if (!container) {\n logger.debug(\"MenuContent: No container ref\", { selectedIndex })\n return\n }\n\n // Tìm item được chọn bằng cách tìm element có data-selected=\"true\" hoặc aria-selected=\"true\"\n let selectedItem = container.querySelector(\n '[data-selected=\"true\"], [aria-selected=\"true\"]'\n ) as HTMLElement\n\n // Fallback: nếu không tìm thấy bằng attribute, tìm theo index\n if (!selectedItem) {\n const allItems = container.querySelectorAll('[data-slot=\"command-item\"]')\n selectedItem = allItems[selectedIndex] as HTMLElement\n logger.debug(\"MenuContent: Found item by index\", {\n selectedIndex,\n totalItems: allItems.length,\n found: !!selectedItem,\n })\n } else {\n logger.debug(\"MenuContent: Found item by attribute\", { selectedIndex })\n }\n\n if (selectedItem) {\n // Tìm ScrollArea viewport\n const scrollContainer = container.querySelector(\n '[data-radix-scroll-area-viewport]'\n ) as HTMLElement\n\n if (scrollContainer) {\n const currentScrollTop = scrollContainer.scrollTop\n const containerHeight = scrollContainer.clientHeight\n const scrollHeight = scrollContainer.scrollHeight\n\n // Tìm tất cả items để tính offset\n const allItems = container.querySelectorAll('[data-slot=\"command-item\"]')\n let itemOffsetTop = 0\n\n // Tính offset của item bằng cách cộng offsetHeight của tất cả items trước nó\n for (let i = 0; i < selectedIndex && i < allItems.length; i++) {\n const item = allItems[i] as HTMLElement\n itemOffsetTop += item.offsetHeight || 32 // Default height nếu không có\n }\n\n // Thêm padding của CommandGroup nếu có\n const commandGroup = selectedItem.closest('[data-slot=\"command-group\"]') as HTMLElement\n if (commandGroup) {\n const groupStyle = window.getComputedStyle(commandGroup)\n const paddingTop = parseFloat(groupStyle.paddingTop) || 0\n itemOffsetTop += paddingTop\n }\n\n const itemHeight = selectedItem.offsetHeight || 32\n const itemRect = selectedItem.getBoundingClientRect()\n const containerRect = scrollContainer.getBoundingClientRect()\n\n logger.debug(\"MenuContent: Scrolling to item\", {\n selectedIndex,\n currentScrollTop,\n containerHeight,\n scrollHeight,\n itemOffsetTop,\n itemHeight,\n itemTop: itemRect.top,\n containerTop: containerRect.top,\n itemVisible: itemRect.top >= containerRect.top && itemRect.bottom <= containerRect.bottom,\n })\n\n // Kiểm tra xem item có đang visible trong viewport không\n const isItemVisible = itemRect.top >= containerRect.top && itemRect.bottom <= containerRect.bottom\n const itemNearTop = itemRect.top < containerRect.top + 20\n const itemNearBottom = itemRect.bottom > containerRect.bottom - 20\n\n // Tính toán scroll position để item nằm ở giữa container\n let targetScrollTop = itemOffsetTop - containerHeight / 2 + itemHeight / 2\n\n // Tính maxScroll dựa trên tổng chiều cao của tất cả items\n // Nếu scrollHeight === containerHeight, tính toán dựa trên items\n let calculatedMaxScroll = scrollHeight - containerHeight\n if (calculatedMaxScroll <= 0 && allItems.length > 0) {\n // Tính tổng chiều cao của tất cả items\n let totalHeight = 0\n for (let i = 0; i < allItems.length; i++) {\n const item = allItems[i] as HTMLElement\n totalHeight += item.offsetHeight || 32\n }\n // Thêm padding của CommandGroup\n if (commandGroup) {\n const groupStyle = window.getComputedStyle(commandGroup)\n const paddingTop = parseFloat(groupStyle.paddingTop) || 0\n const paddingBottom = parseFloat(groupStyle.paddingBottom) || 0\n totalHeight += paddingTop + paddingBottom\n }\n calculatedMaxScroll = Math.max(0, totalHeight - containerHeight)\n }\n\n // Đảm bảo không scroll quá đầu hoặc cuối\n targetScrollTop = Math.max(0, Math.min(targetScrollTop, calculatedMaxScroll))\n\n // Scroll nếu item không visible hoặc gần edge\n const needsScroll = !isItemVisible || itemNearTop || itemNearBottom\n\n if (needsScroll && Math.abs(targetScrollTop - currentScrollTop) > 1 && calculatedMaxScroll > 0) {\n scrollContainer.scrollTo({\n top: targetScrollTop,\n behavior: \"smooth\",\n })\n\n logger.debug(\"MenuContent: Scrolled\", {\n selectedIndex,\n fromScrollTop: currentScrollTop,\n toScrollTop: targetScrollTop,\n itemOffsetTop,\n calculatedMaxScroll,\n scrollHeight,\n containerHeight,\n needsScroll,\n })\n } else {\n logger.debug(\"MenuContent: No scroll needed\", {\n selectedIndex,\n currentScrollTop,\n targetScrollTop,\n itemOffsetTop,\n isItemVisible,\n itemNearTop,\n itemNearBottom,\n scrollHeight,\n containerHeight,\n calculatedMaxScroll,\n })\n }\n } else {\n // Fallback: scroll directly\n logger.debug(\"MenuContent: No scroll container, scrolling directly\", {\n selectedIndex,\n })\n selectedItem.scrollIntoView({ block: \"nearest\", behavior: \"smooth\" })\n }\n } else {\n logger.warn(\"MenuContent: Could not find selected item\", { selectedIndex })\n }\n }, 10) // Tăng delay một chút để đảm bảo cmdk đã update state\n\n return () => clearTimeout(timeoutId)\n }\n }, [selectedIndex, options.length])\n\n return (\n <div ref={containerRef}>\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) % options.length\n : options.length - 1\n )\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null ? (selectedIndex + 1) % options.length : 0\n )\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option)\n }}\n className=\"editor-flex-row-center editor-flex-row-center--pointer\"\n >\n {option.icon}\n <span>{option.title}</span>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>\n )\n}\n\nconst LexicalTypeaheadMenuPlugin = dynamic(\n () =>\n import(\"@lexical/react/LexicalTypeaheadMenuPlugin\").then(\n (mod) => mod.LexicalTypeaheadMenuPlugin<ComponentPickerOption>\n ),\n { ssr: false }\n)\n\nexport function ComponentPickerMenuPlugin({\n baseOptions = [],\n dynamicOptionsFn,\n}: {\n baseOptions?: Array<ComponentPickerOption>\n dynamicOptionsFn?: ({\n queryString,\n }: {\n queryString: string\n }) => Array<ComponentPickerOption>\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n const [modal, showModal] = useEditorModal()\n const [queryString, setQueryString] = useState<string | null>(null)\n\n logger.debug(\"ComponentPickerMenuPlugin initialized\", {\n baseOptionsCount: baseOptions.length,\n hasDynamicOptionsFn: !!dynamicOptionsFn,\n })\n\n const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\"/\", {\n minLength: 0,\n })\n\n const options = useMemo(() => {\n if (!queryString) {\n logger.debug(\"ComponentPickerMenuPlugin: No query string, returning baseOptions\", {\n baseOptionsCount: baseOptions.length,\n baseOptionsTitles: baseOptions.map((opt) => opt.title),\n })\n return baseOptions\n }\n\n logger.debug(\"ComponentPickerMenuPlugin: Filtering options\", {\n queryString,\n baseOptionsCount: baseOptions.length,\n })\n\n const regex = new RegExp(queryString, \"i\")\n\n const filtered = [\n ...(dynamicOptionsFn?.({ queryString }) || []),\n ...baseOptions.filter(\n (option) =>\n regex.test(option.title) ||\n option.keywords.some((keyword) => regex.test(keyword))\n ),\n ]\n \n logger.debug(\"ComponentPickerMenuPlugin: Filtered options\", {\n filteredCount: filtered.length,\n filteredTitles: filtered.map((opt) => opt.title),\n })\n \n return filtered\n }, [baseOptions, dynamicOptionsFn, queryString])\n\n const onSelectOption = useCallback(\n (\n selectedOption: ComponentPickerOption,\n nodeToRemove: TextNode | null,\n closeMenu: () => void,\n matchingString: string\n ) => {\n editor.update(() => {\n nodeToRemove?.remove()\n selectedOption.onSelect(matchingString, editor, showModal)\n closeMenu()\n })\n },\n [editor, showModal]\n )\n\n return (\n <>\n {modal}\n <LexicalTypeaheadMenuPlugin\n onQueryChange={(query) => {\n logger.debug(\"ComponentPickerMenuPlugin: Query changed\", { query })\n setQueryString(query)\n }}\n onSelectOption={onSelectOption}\n triggerFn={(text, editor) => {\n const match = checkForTriggerMatch(text, editor)\n logger.debug(\"ComponentPickerMenuPlugin: Trigger check\", {\n text,\n hasMatch: !!match,\n matchString: match?.matchingString,\n })\n return match\n }}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n logger.debug(\"ComponentPickerMenuPlugin: menuRenderFn called\", {\n hasAnchorElement: !!anchorElementRef.current,\n optionsLength: options.length,\n selectedIndex,\n })\n\n if (!anchorElementRef.current) {\n logger.warn(\"ComponentPickerMenuPlugin: No anchor element\", {\n anchorElementRef: anchorElementRef.current,\n })\n return null\n }\n\n if (!options.length) {\n logger.warn(\"ComponentPickerMenuPlugin: No options available\", {\n optionsLength: options.length,\n })\n return null\n }\n\n const anchorRect = anchorElementRef.current.getBoundingClientRect()\n const menuHeight = Math.min(options.length * 40 + 16, 300)\n const viewportHeight = window.innerHeight\n const viewportWidth = window.innerWidth\n \n // Với fixed positioning, sử dụng getBoundingClientRect() đã trả về vị trí relative to viewport\n // Không cần cộng window.scrollY vì fixed position đã relative to viewport\n let top = anchorRect.bottom + 4\n if (top + menuHeight > viewportHeight) {\n top = anchorRect.top - menuHeight - 4\n }\n \n // Đảm bảo menu không bị tràn ra ngoài viewport\n top = Math.max(4, Math.min(top, viewportHeight - menuHeight - 4))\n \n // Tính toán left position, đảm bảo menu không bị tràn ra ngoài viewport\n let left = anchorRect.left\n const menuWidth = 250\n if (left + menuWidth > viewportWidth) {\n left = viewportWidth - menuWidth - 4\n }\n left = Math.max(4, left)\n \n const menuPosition = {\n top: `${top}px`,\n left: `${left}px`,\n }\n\n logger.debug(\"ComponentPickerMenuPlugin: Rendering menu\", {\n menuPosition,\n anchorRect: {\n top: anchorRect.top,\n left: anchorRect.left,\n bottom: anchorRect.bottom,\n right: anchorRect.right,\n width: anchorRect.width,\n height: anchorRect.height,\n },\n viewport: {\n height: viewportHeight,\n width: viewportWidth,\n },\n optionsCount: options.length,\n })\n \n return createPortal(\n <div\n className=\"editor-component-picker-menu\"\n style={{\n top: `${top}px`,\n left: `${left}px`,\n }}\n >\n <MenuContent\n options={options}\n selectedIndex={selectedIndex}\n selectOptionAndCleanUp={selectOptionAndCleanUp}\n setHighlightedIndex={setHighlightedIndex}\n />\n </div>,\n document.body\n )\n }}\n />\n </>\n )\n}\n","import { Slot as RadixSlot } from \"@radix-ui/react-slot\"\n\nexport const Slot = RadixSlot\n","import * as React from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { cn } from \"../lib/utils\"\n\ninterface PopoverContextValue {\n open: boolean\n setOpen: (open: boolean) => void\n triggerRef: React.RefObject<HTMLButtonElement | null>\n modal?: boolean\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null)\n\nexport function Popover({ children, open: controlledOpen, defaultOpen = false, onOpenChange, modal = false }: { \n children: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n\n const open = controlledOpen ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n\n const contextValue = React.useMemo(() => ({\n open, setOpen, triggerRef, modal\n }), [open, setOpen, modal])\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n </PopoverContext.Provider>\n )\n}\n\nexport function PopoverTrigger({ children, asChild, ...props }: React.HTMLAttributes<HTMLElement> & { asChild?: boolean, children: React.ReactNode, disabled?: boolean }) {\n const context = React.useContext(PopoverContext)\n if (!context) throw new Error(\"PopoverTrigger must be used within Popover\")\n\n const { triggerRef, open, setOpen } = context\n\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\n setOpen(!open)\n if (React.isValidElement(children)) {\n (children as React.ReactElement<{ onClick?: React.MouseEventHandler<HTMLElement> }>).props.onClick?.(e)\n }\n }\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs\n return React.cloneElement(children as React.ReactElement<any>, {\n ref: triggerRef,\n onClick: handleClick,\n ...props\n })\n }\n\n return (\n <button\n type=\"button\"\n ref={triggerRef}\n onClick={handleClick}\n {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n )\n}\n\nexport function PopoverContent({ children, className, align = \"center\", sideOffset = 4, ...props }: React.HTMLAttributes<HTMLDivElement> & { align?: \"start\" | \"center\" | \"end\", sideOffset?: number }) {\n const context = React.useContext(PopoverContext)\n const [position, setPosition] = React.useState({ top: 0, left: 0 })\n const contentRef = React.useRef<HTMLDivElement>(null)\n\n React.useEffect(() => {\n if (context?.open && context.triggerRef.current) {\n const rect = context.triggerRef.current.getBoundingClientRect()\n // Simple positioning logic (bottom-center or bottom-left)\n // Real popover needs collision detection, but this is \"lite\"\n let left = rect.left\n if (align === \"center\") {\n left = rect.left + rect.width / 2 // Will need to subtract half content width after render\n } else if (align === \"end\") {\n left = rect.right \n }\n \n setPosition({\n top: rect.bottom + window.scrollY + sideOffset,\n left: left + window.scrollX \n })\n\n const handleClickOutside = (e: MouseEvent) => {\n if (contentRef.current && !contentRef.current.contains(e.target as Node) && \n !context.triggerRef.current?.contains(e.target as Node)) {\n context.setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClickOutside)\n return () => document.removeEventListener(\"mousedown\", handleClickOutside)\n }\n }, [context, context?.open, align, sideOffset])\n\n if (!context?.open) return null\n\n return createPortal(\n <div\n ref={contentRef}\n className={cn(\"editor-popover-content\", className)}\n style={{\n position: \"absolute\",\n top: position.top,\n left: position.left,\n zIndex: 9999\n }}\n {...props}\n >\n {children}\n </div>,\n document.body\n )\n}\n\nexport function PopoverPortal({ children, container }: { children: React.ReactNode, container?: HTMLElement | null }) {\n if (!container) return <>{children}</>\n return createPortal(children, container)\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\nimport { Slot } from \"../ui/slot\"\nimport { PipetteIcon } from \"lucide-react\"\n\nimport { cn } from \"../lib/utils\"\nimport { logger } from \"../lib/logger\"\nimport { Button } from \"../ui/button\"\nimport { Input } from \"../ui/input\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../ui/popover\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\"\n\n/**\n * @see https://github.com/radix-ui/primitives/blob/main/packages/react/compose-refs/src/compose-refs.tsx\n */\n\ntype PossibleRef<T> = React.Ref<T> | undefined\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === \"function\") {\n return ref(value)\n }\n\n if (ref !== null && ref !== undefined) {\n ref.current = value\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node)\n if (!hasCleanup && typeof cleanup === \"function\") {\n hasCleanup = true\n }\n return cleanup\n })\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i]\n if (typeof cleanup === \"function\") {\n cleanup()\n } else {\n setRef(refs[i], null)\n }\n }\n }\n }\n }\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // biome-ignore lint/correctness/useExhaustiveDependencies: we want to memoize by all values\n return React.useCallback(\n (value: T) => {\n composeRefs(...refs)(value)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n refs\n )\n}\n\ntype InputValue = string[] | string\n\ninterface VisuallyHiddenInputProps<T = InputValue>\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"checked\" | \"onReset\"\n > {\n value?: T\n checked?: boolean\n control: HTMLElement | null\n bubbles?: boolean\n}\n\nfunction VisuallyHiddenInput<T = InputValue>(\n props: VisuallyHiddenInputProps<T>\n) {\n const {\n control,\n value,\n checked,\n bubbles = true,\n type = \"hidden\",\n style,\n ...inputProps\n } = props\n\n const isCheckInput = React.useMemo(\n () => type === \"checkbox\" || type === \"radio\" || type === \"switch\",\n [type]\n )\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n const prevValueRef = React.useRef<{\n value: T | boolean | undefined\n previous: T | boolean | undefined\n }>({\n value: isCheckInput ? checked : value,\n previous: isCheckInput ? checked : value,\n })\n\n // Use useEffect to update ref instead of useMemo to avoid accessing refs during render\n const [prevValue, setPrevValue] = React.useState<T | boolean | undefined>(\n isCheckInput ? checked : value\n )\n\n React.useEffect(() => {\n const currentValue = isCheckInput ? checked : value\n if (prevValueRef.current.value !== currentValue) {\n prevValueRef.current.previous = prevValueRef.current.value\n prevValueRef.current.value = currentValue\n setPrevValue(prevValueRef.current.previous)\n }\n }, [isCheckInput, value, checked])\n\n const [controlSize, setControlSize] = React.useState<{\n width?: number\n height?: number\n }>({})\n\n React.useLayoutEffect(() => {\n if (!control) {\n setControlSize({})\n return\n }\n\n setControlSize({\n width: control.offsetWidth,\n height: control.offsetHeight,\n })\n\n if (typeof window === \"undefined\") return\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries) || !entries.length) return\n\n const entry = entries[0]\n if (!entry) return\n\n let width: number\n let height: number\n\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry.borderBoxSize\n const borderSize = Array.isArray(borderSizeEntry)\n ? borderSizeEntry[0]\n : borderSizeEntry\n width = borderSize.inlineSize\n height = borderSize.blockSize\n } else {\n width = control.offsetWidth\n height = control.offsetHeight\n }\n\n setControlSize({ width, height })\n })\n\n resizeObserver.observe(control, { box: \"border-box\" })\n return () => {\n resizeObserver.disconnect()\n }\n }, [control])\n\n React.useEffect(() => {\n const input = inputRef.current\n if (!input) return\n\n const inputProto = window.HTMLInputElement.prototype\n const propertyKey = isCheckInput ? \"checked\" : \"value\"\n const eventType = isCheckInput ? \"click\" : \"input\"\n const currentValue = isCheckInput ? checked : value\n\n const serializedCurrentValue = isCheckInput\n ? checked\n : typeof value === \"object\" && value !== null\n ? JSON.stringify(value)\n : value\n\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, propertyKey)\n\n const setter = descriptor?.set\n\n if (prevValue !== currentValue && setter) {\n const event = new Event(eventType, { bubbles })\n setter.call(input, serializedCurrentValue)\n input.dispatchEvent(event)\n }\n }, [prevValue, value, checked, bubbles, isCheckInput])\n\n const composedStyle = React.useMemo<React.CSSProperties>(() => {\n return {\n ...style,\n ...(controlSize.width !== undefined && controlSize.height !== undefined\n ? controlSize\n : {}),\n border: 0,\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n }\n }, [style, controlSize])\n\n return (\n <input\n type={type}\n {...inputProps}\n ref={inputRef}\n aria-hidden={isCheckInput}\n tabIndex={-1}\n defaultChecked={isCheckInput ? checked : undefined}\n style={composedStyle}\n />\n )\n}\n\n/**\n * @see https://gist.github.com/bkrmendy/f4582173f50fab209ddfef1377ab31e3\n */\ninterface EyeDropper {\n open: (options?: { signal?: AbortSignal }) => Promise<{ sRGBHex: string }>\n}\n\ndeclare global {\n interface Window {\n EyeDropper?: {\n new (): EyeDropper\n }\n }\n}\n\nconst colorFormats = [\"hex\", \"rgb\", \"hsl\", \"hsb\"] as const\ntype ColorFormat = (typeof colorFormats)[number]\nconst colorPresets = [\n { label: \"Primary\", value: \"#1F3368\" },\n { label: \"Secondary\", value: \"#A71B29\" },\n // --muted in light theme is #F5F5F5, /50 -> alpha 0.5\n { label: \"bg-muted/50\", value: \"#F5F5F5\", alpha: 0.5 },\n] as const\n\ninterface ColorValue {\n r: number\n g: number\n b: number\n a: number\n}\n\ninterface HSVColorValue {\n h: number\n s: number\n v: number\n a: number\n}\n\nfunction hexToRgb(hex: string, alpha?: number): ColorValue {\n const trimmed = hex.trim().replace(/^#/, \"\")\n\n // 3-digit hex\n if (trimmed.length === 3) {\n const r = Number.parseInt((trimmed[0] ?? \"\") + (trimmed[0] ?? \"\"), 16)\n const g = Number.parseInt((trimmed[1] ?? \"\") + (trimmed[1] ?? \"\"), 16)\n const b = Number.parseInt((trimmed[2] ?? \"\") + (trimmed[2] ?? \"\"), 16)\n return { r, g, b, a: alpha ?? 1 }\n }\n\n // 6-digit hex\n if (trimmed.length === 6) {\n const r = Number.parseInt(trimmed.slice(0, 2), 16)\n const g = Number.parseInt(trimmed.slice(2, 4), 16)\n const b = Number.parseInt(trimmed.slice(4, 6), 16)\n return { r, g, b, a: alpha ?? 1 }\n }\n\n // Default black for invalid input\n return { r: 0, g: 0, b: 0, a: alpha ?? 1 }\n}\n\nfunction rgbToHex(color: ColorValue): string {\n const toHex = (n: number) => {\n const hex = Math.round(n).toString(16)\n return hex.length === 1 ? `0${hex}` : hex\n }\n return `#${toHex(color.r)}${toHex(color.g)}${toHex(color.b)}`\n}\n\nfunction rgbToHsv(color: ColorValue): HSVColorValue {\n const r = color.r / 255\n const g = color.g / 255\n const b = color.b / 255\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n const diff = max - min\n\n let h = 0\n if (diff !== 0) {\n switch (max) {\n case r:\n h = ((g - b) / diff) % 6\n break\n case g:\n h = (b - r) / diff + 2\n break\n case b:\n h = (r - g) / diff + 4\n break\n }\n }\n h = Math.round(h * 60)\n if (h < 0) h += 360\n\n const s = max === 0 ? 0 : diff / max\n const v = max\n\n return {\n h,\n s: Math.round(s * 100),\n v: Math.round(v * 100),\n a: color.a,\n }\n}\n\nfunction hsvToRgb(hsv: HSVColorValue): ColorValue {\n const h = hsv.h / 360\n const s = hsv.s / 100\n const v = hsv.v / 100\n\n const i = Math.floor(h * 6)\n const f = h * 6 - i\n const p = v * (1 - s)\n const q = v * (1 - f * s)\n const t = v * (1 - (1 - f) * s)\n\n let r: number\n let g: number\n let b: number\n\n switch (i % 6) {\n case 0: {\n r = v\n g = t\n b = p\n break\n }\n case 1: {\n r = q\n g = v\n b = p\n break\n }\n case 2: {\n r = p\n g = v\n b = t\n break\n }\n case 3: {\n r = p\n g = q\n b = v\n break\n }\n case 4: {\n r = t\n g = p\n b = v\n break\n }\n case 5: {\n r = v\n g = p\n b = q\n break\n }\n default: {\n r = 0\n g = 0\n b = 0\n }\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n a: hsv.a,\n }\n}\n\nfunction colorToString(color: ColorValue, format: ColorFormat = \"hex\"): string {\n switch (format) {\n case \"hex\":\n return rgbToHex(color)\n case \"rgb\":\n return color.a < 1\n ? `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`\n : `rgb(${color.r}, ${color.g}, ${color.b})`\n case \"hsl\": {\n const hsl = rgbToHsl(color)\n return color.a < 1\n ? `hsla(${hsl.h}, ${hsl.s}%, ${hsl.l}%, ${color.a})`\n : `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`\n }\n case \"hsb\": {\n const hsv = rgbToHsv(color)\n return color.a < 1\n ? `hsba(${hsv.h}, ${hsv.s}%, ${hsv.v}%, ${color.a})`\n : `hsb(${hsv.h}, ${hsv.s}%, ${hsv.v}%)`\n }\n default:\n return rgbToHex(color)\n }\n}\n\nfunction rgbToHsl(color: ColorValue) {\n const r = color.r / 255\n const g = color.g / 255\n const b = color.b / 255\n\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n const diff = max - min\n const sum = max + min\n\n const l = sum / 2\n\n let h = 0\n let s = 0\n\n if (diff !== 0) {\n s = l > 0.5 ? diff / (2 - sum) : diff / sum\n\n if (max === r) {\n h = (g - b) / diff + (g < b ? 6 : 0)\n } else if (max === g) {\n h = (b - r) / diff + 2\n } else if (max === b) {\n h = (r - g) / diff + 4\n }\n h /= 6\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n }\n}\n\nfunction hslToRgb(\n hsl: { h: number; s: number; l: number },\n alpha = 1\n): ColorValue {\n const h = hsl.h / 360\n const s = hsl.s / 100\n const l = hsl.l / 100\n\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((h * 6) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (h >= 0 && h < 1 / 6) {\n r = c\n g = x\n b = 0\n } else if (h >= 1 / 6 && h < 2 / 6) {\n r = x\n g = c\n b = 0\n } else if (h >= 2 / 6 && h < 3 / 6) {\n r = 0\n g = c\n b = x\n } else if (h >= 3 / 6 && h < 4 / 6) {\n r = 0\n g = x\n b = c\n } else if (h >= 4 / 6 && h < 5 / 6) {\n r = x\n g = 0\n b = c\n } else if (h >= 5 / 6 && h < 1) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n a: alpha,\n }\n}\n\nfunction parseColorString(value: string): ColorValue | null {\n const trimmed = value.trim()\n\n // Parse hex colors\n if (trimmed.startsWith(\"#\")) {\n const hexMatch = trimmed.match(/^#([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/)\n if (hexMatch) {\n return hexToRgb(trimmed)\n }\n }\n\n // Parse rgb/rgba colors\n const rgbMatch = trimmed.match(\n /^rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+))?\\s*\\)$/\n )\n if (rgbMatch) {\n return {\n r: Number.parseInt(rgbMatch[1] ?? \"0\", 10),\n g: Number.parseInt(rgbMatch[2] ?? \"0\", 10),\n b: Number.parseInt(rgbMatch[3] ?? \"0\", 10),\n a: rgbMatch[4] ? Number.parseFloat(rgbMatch[4]) : 1,\n }\n }\n\n // Parse hsl/hsla colors\n const hslMatch = trimmed.match(\n /^hsla?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([\\d.]+))?\\s*\\)$/\n )\n if (hslMatch) {\n const h = Number.parseInt(hslMatch[1] ?? \"0\", 10)\n const s = Number.parseInt(hslMatch[2] ?? \"0\", 10) / 100\n const l = Number.parseInt(hslMatch[3] ?? \"0\", 10) / 100\n const a = hslMatch[4] ? Number.parseFloat(hslMatch[4]) : 1\n\n // Convert HSL to RGB\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (h >= 0 && h < 60) {\n r = c\n g = x\n b = 0\n } else if (h >= 60 && h < 120) {\n r = x\n g = c\n b = 0\n } else if (h >= 120 && h < 180) {\n r = 0\n g = c\n b = x\n } else if (h >= 180 && h < 240) {\n r = 0\n g = x\n b = c\n } else if (h >= 240 && h < 300) {\n r = x\n g = 0\n b = c\n } else if (h >= 300 && h < 360) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n a,\n }\n }\n\n // Parse hsb/hsba colors\n const hsbMatch = trimmed.match(\n /^hsba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([\\d.]+))?\\s*\\)$/\n )\n if (hsbMatch) {\n const h = Number.parseInt(hsbMatch[1] ?? \"0\", 10)\n const s = Number.parseInt(hsbMatch[2] ?? \"0\", 10)\n const v = Number.parseInt(hsbMatch[3] ?? \"0\", 10)\n const a = hsbMatch[4] ? Number.parseFloat(hsbMatch[4]) : 1\n\n return hsvToRgb({ h, s, v, a })\n }\n\n return null\n}\n\ntype Direction = \"ltr\" | \"rtl\"\n\nconst DirectionContext = React.createContext<Direction | undefined>(undefined)\n\nfunction useDirection(dirProp?: Direction): Direction {\n const contextDir = React.useContext(DirectionContext)\n return dirProp ?? contextDir ?? \"ltr\"\n}\n\nfunction useLazyRef<T>(fn: () => T) {\n const ref = React.useRef<T | null>(null)\n\n if (ref.current === null) {\n ref.current = fn()\n }\n\n return ref as React.RefObject<T>\n}\n\ninterface ColorPickerStoreState {\n color: ColorValue\n hsv: HSVColorValue\n open: boolean\n format: ColorFormat\n}\n\ninterface ColorPickerStoreCallbacks {\n onColorChange?: (colorString: string) => void\n onOpenChange?: (open: boolean) => void\n onFormatChange?: (format: ColorFormat) => void\n}\n\ninterface ColorPickerStore {\n subscribe: (cb: () => void) => () => void\n getState: () => ColorPickerStoreState\n setColor: (value: ColorValue) => void\n setHsv: (value: HSVColorValue) => void\n setOpen: (value: boolean) => void\n setFormat: (value: ColorFormat) => void\n notify: () => void\n}\n\nfunction createColorPickerStore(\n listenersRef: React.RefObject<Set<() => void>>,\n stateRef: React.RefObject<ColorPickerStoreState>,\n callbacks?: ColorPickerStoreCallbacks\n): ColorPickerStore {\n const store: ColorPickerStore = {\n subscribe: (cb) => {\n if (listenersRef.current) {\n listenersRef.current.add(cb)\n return () => listenersRef.current?.delete(cb)\n }\n return () => {}\n },\n getState: () =>\n stateRef.current || {\n color: { r: 0, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 0, v: 0, a: 1 },\n open: false,\n format: \"hex\" as ColorFormat,\n },\n setColor: (value: ColorValue) => {\n if (!stateRef.current) return\n if (Object.is(stateRef.current.color, value)) return\n\n const prevState = { ...stateRef.current }\n stateRef.current.color = value\n\n if (callbacks?.onColorChange) {\n const colorString = colorToString(value, prevState.format)\n callbacks.onColorChange(colorString)\n }\n\n store.notify()\n },\n setHsv: (value: HSVColorValue) => {\n if (!stateRef.current) return\n if (Object.is(stateRef.current.hsv, value)) return\n\n const prevState = { ...stateRef.current }\n stateRef.current.hsv = value\n\n if (callbacks?.onColorChange) {\n const colorValue = hsvToRgb(value)\n const colorString = colorToString(colorValue, prevState.format)\n callbacks.onColorChange(colorString)\n }\n\n store.notify()\n },\n setOpen: (value: boolean) => {\n if (!stateRef.current) return\n if (Object.is(stateRef.current.open, value)) return\n\n stateRef.current.open = value\n\n if (callbacks?.onOpenChange) {\n callbacks.onOpenChange(value)\n }\n\n store.notify()\n },\n setFormat: (value: ColorFormat) => {\n if (!stateRef.current) return\n if (Object.is(stateRef.current.format, value)) return\n\n stateRef.current.format = value\n\n if (callbacks?.onFormatChange) {\n callbacks.onFormatChange(value)\n }\n\n store.notify()\n },\n notify: () => {\n if (listenersRef.current) {\n for (const cb of listenersRef.current) {\n cb()\n }\n }\n },\n }\n\n return store\n}\n\nfunction useColorPickerStoreContext(consumerName: string) {\n const context = React.useContext(ColorPickerStoreContext)\n if (!context) {\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`ColorPickerRoot\\``\n )\n }\n return context\n}\n\nfunction useColorPickerStore<U>(\n selector: (state: ColorPickerStoreState) => U\n): U {\n const store = useColorPickerStoreContext(\"useColorPickerStoreSelector\")\n\n const getSnapshot = React.useCallback(\n () => selector(store.getState()),\n [store, selector]\n )\n\n return React.useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot)\n}\n\ninterface ColorPickerContextValue {\n dir: Direction\n disabled?: boolean\n inline?: boolean\n readOnly?: boolean\n required?: boolean\n}\n\nconst ColorPickerStoreContext = React.createContext<ColorPickerStore | null>(\n null\n)\nconst ColorPickerContext = React.createContext<ColorPickerContextValue | null>(\n null\n)\n\nfunction useColorPickerContext(consumerName: string) {\n const context = React.useContext(ColorPickerContext)\n if (!context) {\n throw new Error(\n `\\`${consumerName}\\` must be used within \\`ColorPickerRoot\\``\n )\n }\n return context\n}\n\ninterface ColorPickerRootProps\n extends Omit<React.ComponentProps<\"div\">, \"onValueChange\">,\n Pick<\n React.ComponentProps<typeof Popover>,\n \"defaultOpen\" | \"open\" | \"onOpenChange\" | \"modal\"\n > {\n value?: string\n defaultValue?: string\n onValueChange?: (value: string) => void\n dir?: Direction\n format?: ColorFormat\n defaultFormat?: ColorFormat\n onFormatChange?: (format: ColorFormat) => void\n name?: string\n asChild?: boolean\n disabled?: boolean\n inline?: boolean\n readOnly?: boolean\n required?: boolean\n}\n\nconst ColorPickerRoot = React.memo(function ColorPickerRoot(props: ColorPickerRootProps) {\n const {\n value: valueProp,\n defaultValue = \"#000000\",\n onValueChange,\n format: formatProp,\n defaultFormat = \"hex\",\n onFormatChange,\n defaultOpen,\n open: openProp,\n onOpenChange,\n name,\n disabled,\n inline,\n readOnly,\n required,\n ...rootProps\n } = props\n\n const initialColor = React.useMemo(() => {\n const colorString = valueProp ?? defaultValue\n const color = parseColorString(colorString) ?? hexToRgb(defaultValue)\n\n return {\n color,\n hsv: rgbToHsv(color),\n open: openProp ?? defaultOpen ?? false,\n format: formatProp ?? defaultFormat,\n }\n }, [\n valueProp,\n defaultValue,\n formatProp,\n defaultFormat,\n openProp,\n defaultOpen,\n ])\n\n const stateRef = useLazyRef(() => initialColor)\n const listenersRef = useLazyRef(() => new Set<() => void>())\n\n const storeCallbacks = React.useMemo<ColorPickerStoreCallbacks>(\n () => ({\n onColorChange: onValueChange,\n onOpenChange: onOpenChange,\n onFormatChange: onFormatChange,\n }),\n [onValueChange, onOpenChange, onFormatChange]\n )\n\n const store = React.useMemo(\n () => createColorPickerStore(listenersRef, stateRef, storeCallbacks),\n [listenersRef, stateRef, storeCallbacks]\n )\n\n return (\n <ColorPickerStoreContext.Provider value={store}>\n <ColorPickerRootImpl\n {...rootProps}\n value={valueProp}\n defaultOpen={defaultOpen}\n open={openProp}\n onOpenChange={onOpenChange}\n name={name}\n disabled={disabled}\n inline={inline}\n readOnly={readOnly}\n required={required}\n />\n </ColorPickerStoreContext.Provider>\n )\n})\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerRootImplProps = Omit<\n ColorPickerRootProps,\n | \"defaultValue\"\n | \"onValueChange\"\n | \"format\"\n | \"defaultFormat\"\n | \"onFormatChange\"\n>\n\nfunction ColorPickerRootImpl(props: ColorPickerRootImplProps) {\n const {\n value: valueProp,\n dir: dirProp,\n defaultOpen,\n open: openProp,\n onOpenChange,\n name,\n ref,\n asChild,\n disabled,\n inline,\n modal,\n readOnly,\n required,\n ...rootProps\n } = props\n\n const store = useColorPickerStoreContext(\"ColorPickerRootImpl\")\n\n const dir = useDirection(dirProp)\n\n const [formTrigger, setFormTrigger] = React.useState<HTMLDivElement | null>(\n null\n )\n const composedRef = useComposedRefs(ref, (node) => setFormTrigger(node))\n\n const isFormControl = formTrigger ? !!formTrigger.closest(\"form\") : true\n\n React.useEffect(() => {\n if (valueProp !== undefined) {\n const color = parseColorString(valueProp)\n \n // Only update if it's a valid color string (not \"inherit\" or others)\n if (color) {\n const hsv = rgbToHsv(color)\n store.setColor(color)\n store.setHsv(hsv)\n }\n }\n }, [valueProp, store])\n\n React.useEffect(() => {\n if (openProp !== undefined) {\n store.setOpen(openProp)\n }\n }, [openProp, store])\n\n const contextValue = React.useMemo<ColorPickerContextValue>(\n () => ({\n dir,\n disabled,\n inline,\n readOnly,\n required,\n }),\n [dir, disabled, inline, readOnly, required]\n )\n\n const value = useColorPickerStore((state) => rgbToHex(state.color))\n\n const open = useColorPickerStore((state) => state.open)\n\n const onPopoverOpenChange = React.useCallback(\n (newOpen: boolean) => {\n store.setOpen(newOpen)\n onOpenChange?.(newOpen)\n },\n [store, onOpenChange]\n )\n\n const RootPrimitive = asChild ? Slot : \"div\"\n\n if (inline) {\n return (\n <ColorPickerContext.Provider value={contextValue}>\n <RootPrimitive {...rootProps} ref={composedRef} />\n {isFormControl && (\n <VisuallyHiddenInput\n type=\"hidden\"\n control={formTrigger}\n name={name}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n />\n )}\n </ColorPickerContext.Provider>\n )\n }\n\n return (\n <ColorPickerContext.Provider value={contextValue}>\n <Popover\n defaultOpen={defaultOpen}\n open={open}\n onOpenChange={onPopoverOpenChange}\n modal={modal}\n >\n <RootPrimitive {...rootProps} ref={composedRef} />\n {isFormControl && (\n <VisuallyHiddenInput\n type=\"hidden\"\n control={formTrigger}\n name={name}\n value={value}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n />\n )}\n </Popover>\n </ColorPickerContext.Provider>\n )\n}\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerTriggerProps = React.ComponentProps<typeof PopoverTrigger>\n\nfunction ColorPickerTrigger(props: ColorPickerTriggerProps) {\n const { asChild, ...triggerProps } = props\n const context = useColorPickerContext(\"ColorPickerTrigger\")\n\n const TriggerPrimitive = asChild ? Slot : Button\n\n return (\n <PopoverTrigger asChild disabled={context.disabled}>\n <TriggerPrimitive data-slot=\"color-picker-trigger\" {...triggerProps} />\n </PopoverTrigger>\n )\n}\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerContentProps = React.ComponentProps<typeof PopoverContent> & { asChild?: boolean }\n\nfunction ColorPickerContent(props: ColorPickerContentProps) {\n const { asChild, className, children, ...popoverContentProps } = props\n const context = useColorPickerContext(\"ColorPickerContent\")\n\n if (context.inline) {\n const ContentPrimitive = asChild ? Slot : \"div\"\n\n return (\n <ContentPrimitive\n data-slot=\"color-picker-content\"\n {...popoverContentProps}\n className={cn(\"editor-color-picker-content\", className)}\n >\n {children}\n </ContentPrimitive>\n )\n }\n\n return (\n <PopoverContent\n data-slot=\"color-picker-content\"\n {...popoverContentProps}\n className={cn(\"editor-color-picker-content\", className)}\n >\n {children}\n </PopoverContent>\n )\n}\n\ninterface ColorPickerAreaProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean\n}\n\nfunction ColorPickerArea(props: ColorPickerAreaProps) {\n const { asChild, className, ref, ...areaProps } = props\n const context = useColorPickerContext(\"ColorPickerArea\")\n const store = useColorPickerStoreContext(\"ColorPickerArea\")\n\n const hsv = useColorPickerStore((state) => state.hsv)\n\n const isDraggingRef = React.useRef(false)\n const areaRef = React.useRef<HTMLDivElement>(null)\n const composedRef = useComposedRefs(ref, areaRef)\n\n const updateColorFromPosition = React.useCallback(\n (clientX: number, clientY: number) => {\n if (!areaRef.current) return\n\n const rect = areaRef.current.getBoundingClientRect()\n const x = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width))\n const y = Math.max(0, Math.min(1, 1 - (clientY - rect.top) / rect.height))\n\n const newHsv: HSVColorValue = {\n h: hsv?.h ?? 0,\n s: Math.round(x * 100),\n v: Math.round(y * 100),\n a: hsv?.a ?? 1,\n }\n\n store.setHsv(newHsv)\n store.setColor(hsvToRgb(newHsv))\n },\n [hsv, store]\n )\n\n const onPointerDown = React.useCallback(\n (event: React.PointerEvent) => {\n if (context.disabled) return\n event.preventDefault()\n\n isDraggingRef.current = true\n areaRef.current?.setPointerCapture(event.pointerId)\n updateColorFromPosition(event.clientX, event.clientY)\n },\n [context.disabled, updateColorFromPosition]\n )\n\n const onPointerMove = React.useCallback(\n (event: React.PointerEvent) => {\n if (isDraggingRef.current) {\n updateColorFromPosition(event.clientX, event.clientY)\n }\n },\n [updateColorFromPosition]\n )\n\n const onPointerUp = React.useCallback((event: React.PointerEvent) => {\n isDraggingRef.current = false\n areaRef.current?.releasePointerCapture(event.pointerId)\n }, [])\n\n const hue = hsv?.h ?? 0\n const backgroundHue = hsvToRgb({ h: hue, s: 100, v: 100, a: 1 })\n\n const AreaPrimitive = asChild ? Slot : \"div\"\n\n return (\n <AreaPrimitive\n data-slot=\"color-picker-area\"\n {...areaProps}\n className={cn(\n \"editor-color-picker-area\",\n context.disabled && \"pointer-events-none opacity-50\",\n className\n )}\n ref={composedRef}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n >\n <div className=\"editor-absolute-full editor-overflow-hidden editor-rounded-sm\">\n <div\n className=\"editor-absolute-full\"\n style={{\n backgroundColor: `rgb(${backgroundHue.r}, ${backgroundHue.g}, ${backgroundHue.b})`,\n }}\n />\n <div\n className=\"editor-absolute-full\"\n style={{\n background: \"linear-gradient(to right, #fff, transparent)\",\n }}\n />\n <div\n className=\"editor-absolute-full\"\n style={{\n background: \"linear-gradient(to bottom, transparent, #000)\",\n }}\n />\n </div>\n <div\n className=\"editor-color-thumb-indicator\"\n style={{\n left: `${hsv?.s ?? 0}%`,\n top: `${100 - (hsv?.v ?? 0)}%`,\n }}\n />\n </AreaPrimitive>\n )\n}\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerHueSliderProps = React.ComponentProps<typeof SliderPrimitive.Root>\n\nfunction ColorPickerHueSlider(props: ColorPickerHueSliderProps) {\n const { className, ...sliderProps } = props\n const context = useColorPickerContext(\"ColorPickerHueSlider\")\n const store = useColorPickerStoreContext(\"ColorPickerHueSlider\")\n\n const hsv = useColorPickerStore((state) => state.hsv)\n\n const onValueChange = React.useCallback(\n (values: number[]) => {\n const newHsv: HSVColorValue = {\n h: values[0] ?? 0,\n s: hsv?.s ?? 0,\n v: hsv?.v ?? 0,\n a: hsv?.a ?? 1,\n }\n store.setHsv(newHsv)\n store.setColor(hsvToRgb(newHsv))\n },\n [hsv, store]\n )\n\n return (\n <SliderPrimitive.Root\n data-slot=\"color-picker-hue-slider\"\n {...sliderProps}\n max={360}\n step={1}\n className={cn(\n \"editor-slider-root\",\n className\n )}\n value={[hsv?.h ?? 0]}\n onValueChange={onValueChange}\n disabled={context.disabled}\n >\n <SliderPrimitive.Track className=\"editor-slider-track editor-hue-slider-track\">\n <SliderPrimitive.Range className=\"editor-absolute editor-h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"editor-slider-thumb\" />\n </SliderPrimitive.Root>\n )\n}\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerAlphaSliderProps = React.ComponentProps<typeof SliderPrimitive.Root>\n\nfunction ColorPickerAlphaSlider(props: ColorPickerAlphaSliderProps) {\n const { className, ...sliderProps } = props\n const context = useColorPickerContext(\"ColorPickerAlphaSlider\")\n const store = useColorPickerStoreContext(\"ColorPickerAlphaSlider\")\n\n const color = useColorPickerStore((state) => state.color)\n const hsv = useColorPickerStore((state) => state.hsv)\n\n const onValueChange = React.useCallback(\n (values: number[]) => {\n const alpha = (values[0] ?? 0) / 100\n const newColor = { ...color, a: alpha }\n const newHsv = { ...hsv, a: alpha }\n store.setColor(newColor)\n store.setHsv(newHsv)\n },\n [color, hsv, store]\n )\n\n const gradientColor = `rgb(${color?.r ?? 0}, ${color?.g ?? 0}, ${color?.b ?? 0})`\n\n return (\n <SliderPrimitive.Root\n data-slot=\"color-picker-alpha-slider\"\n {...sliderProps}\n max={100}\n step={1}\n disabled={context.disabled}\n className={cn(\n \"editor-slider-root\",\n className\n )}\n value={[Math.round((color?.a ?? 1) * 100)]}\n onValueChange={onValueChange}\n >\n <SliderPrimitive.Track\n className=\"editor-slider-track\"\n style={{\n background:\n \"linear-gradient(45deg, #ccc 25%, transparent 25%), linear-gradient(-45deg, #ccc 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #ccc 75%), linear-gradient(-45deg, transparent 75%, #ccc 75%)\",\n backgroundSize: \"8px 8px\",\n backgroundPosition: \"0 0, 0 4px, 4px -4px, -4px 0px\",\n }}\n >\n <div\n className=\"editor-absolute-full editor-rounded-full\"\n style={{\n background: `linear-gradient(to right, transparent, ${gradientColor})`,\n }}\n />\n <SliderPrimitive.Range className=\"editor-absolute editor-h-full\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"editor-slider-thumb\" />\n </SliderPrimitive.Root>\n )\n}\n\ninterface ColorPickerSwatchProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean\n}\n\nfunction ColorPickerSwatch(props: ColorPickerSwatchProps) {\n const { asChild, className, ...swatchProps } = props\n const context = useColorPickerContext(\"ColorPickerSwatch\")\n\n const color = useColorPickerStore((state) => state.color)\n const format = useColorPickerStore((state) => state.format)\n\n const backgroundStyle = React.useMemo(() => {\n if (!color) {\n return {\n background:\n \"linear-gradient(to bottom right, transparent calc(50% - 1px), hsl(var(--destructive)) calc(50% - 1px) calc(50% + 1px), transparent calc(50% + 1px)) no-repeat\",\n }\n }\n\n const colorString = `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`\n\n if (color.a < 1) {\n return {\n background: `linear-gradient(${colorString}, ${colorString}), repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 0% 50% / 8px 8px`,\n }\n }\n\n return {\n backgroundColor: colorString,\n }\n }, [color])\n\n const ariaLabel = !color\n ? \"No color selected\"\n : `Current color: ${colorToString(color, format)}`\n\n const SwatchPrimitive = asChild ? Slot : \"div\"\n\n return (\n <SwatchPrimitive\n role=\"img\"\n aria-label={ariaLabel}\n data-slot=\"color-picker-swatch\"\n {...swatchProps}\n className={cn(\n \"editor-color-swatch\",\n context.disabled && \"editor-color-swatch--disabled\",\n className\n )}\n style={{\n ...backgroundStyle,\n forcedColorAdjust: \"none\",\n }}\n />\n )\n}\n\n// Type alias instead of empty interface to avoid lint error\ntype ColorPickerEyeDropperProps = React.ComponentProps<typeof Button>\n\nfunction ColorPickerEyeDropper(props: ColorPickerEyeDropperProps) {\n const { children, size, ...buttonProps } = props\n const context = useColorPickerContext(\"ColorPickerEyeDropper\")\n const store = useColorPickerStoreContext(\"ColorPickerEyeDropper\")\n\n const color = useColorPickerStore((state) => state.color)\n\n const onEyeDropper = React.useCallback(async () => {\n if (!window.EyeDropper) return\n\n try {\n const eyeDropper = new window.EyeDropper()\n const result = await eyeDropper.open()\n\n if (result.sRGBHex) {\n const currentAlpha = color?.a ?? 1\n const newColor = hexToRgb(result.sRGBHex, currentAlpha)\n const newHsv = rgbToHsv(newColor)\n store.setColor(newColor)\n store.setHsv(newHsv)\n }\n } catch (error) {\n logger.warn(\"EyeDropper error\", { error })\n }\n }, [color, store])\n\n const hasEyeDropper = typeof window !== \"undefined\" && !!window.EyeDropper\n\n if (!hasEyeDropper) return null\n\n const buttonSize = size ?? (children ? \"default\" : \"icon\")\n\n return (\n <Button\n data-slot=\"color-picker-eye-dropper\"\n {...buttonProps}\n variant=\"outline\"\n size={buttonSize}\n onClick={onEyeDropper}\n disabled={context.disabled}\n >\n {children ?? <PipetteIcon />}\n </Button>\n )\n}\n\ninterface ColorPickerFormatSelectProps\n extends Omit<React.ComponentProps<typeof Select>, \"value\" | \"onValueChange\" | \"children\">,\n Pick<React.ComponentProps<typeof SelectTrigger>, \"size\" | \"className\"> {\n value?: ColorFormat\n}\n\nfunction ColorPickerFormatSelect(props: ColorPickerFormatSelectProps) {\n const { size, className, ...selectProps } = props\n const context = useColorPickerContext(\"ColorPickerFormatSelector\")\n const store = useColorPickerStoreContext(\"ColorPickerFormatSelector\")\n\n const format = useColorPickerStore((state) => state.format)\n\n const onFormatChange = React.useCallback(\n (value: string) => {\n if (colorFormats.includes(value as ColorFormat)) {\n store.setFormat(value as ColorFormat)\n }\n },\n [store]\n )\n\n return (\n <Select\n data-slot=\"color-picker-format-select\"\n {...selectProps}\n value={format}\n onValueChange={onFormatChange}\n disabled={context.disabled}\n >\n <SelectTrigger\n data-slot=\"color-picker-format-select-trigger\"\n size={size ?? \"sm\"}\n className={cn(\"editor-format-select-trigger\", className)}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {colorFormats.map((format) => (\n <SelectItem key={format} value={format}>\n {format.toUpperCase()}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n\ninterface ColorPickerInputProps\n extends Omit<\n React.ComponentProps<typeof Input>,\n \"value\" | \"onChange\" | \"color\"\n > {\n withoutAlpha?: boolean\n}\n\nfunction ColorPickerInput(props: ColorPickerInputProps) {\n const context = useColorPickerContext(\"ColorPickerInput\")\n const store = useColorPickerStoreContext(\"ColorPickerInput\")\n\n const color = useColorPickerStore((state) => state.color)\n const format = useColorPickerStore((state) => state.format)\n const hsv = useColorPickerStore((state) => state.hsv)\n\n const onColorChange = React.useCallback(\n (newColor: ColorValue) => {\n const newHsv = rgbToHsv(newColor)\n store.setColor(newColor)\n store.setHsv(newHsv)\n },\n [store]\n )\n\n if (format === \"hex\") {\n return (\n <HexInput\n color={color}\n onColorChange={onColorChange}\n context={context}\n {...props}\n />\n )\n }\n\n if (format === \"rgb\") {\n return (\n <RgbInput\n color={color}\n onColorChange={onColorChange}\n context={context}\n {...props}\n />\n )\n }\n\n if (format === \"hsl\") {\n return (\n <HslInput\n color={color}\n onColorChange={onColorChange}\n context={context}\n {...props}\n />\n )\n }\n\n if (format === \"hsb\") {\n return (\n <HsbInput\n hsv={hsv}\n onColorChange={onColorChange}\n context={context}\n {...props}\n />\n )\n }\n}\n\ninterface InputGroupItemProps\n extends React.ComponentProps<typeof Input> {\n position?: \"first\" | \"middle\" | \"last\" | \"isolated\"\n}\n\nfunction InputGroupItem({\n className,\n position = \"isolated\",\n ...props\n}: InputGroupItemProps) {\n return (\n <Input\n data-slot=\"color-picker-input\"\n className={cn(\n \"editor-input-group-item\",\n position !== \"isolated\" && `editor-input-group-item--${position}`,\n className\n )}\n {...props}\n />\n )\n}\n\ninterface FormatInputProps extends ColorPickerInputProps {\n color: ColorValue\n onColorChange: (color: ColorValue) => void\n context: ColorPickerContextValue\n}\n\nfunction HexInput(props: FormatInputProps) {\n const {\n color,\n onColorChange,\n context,\n withoutAlpha,\n className,\n ...inputProps\n } = props\n\n const hexValue = rgbToHex(color)\n const alphaValue = Math.round((color?.a ?? 1) * 100)\n\n const onHexChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.target.value\n const parsedColor = parseColorString(value)\n if (parsedColor) {\n onColorChange({ ...parsedColor, a: color?.a ?? 1 })\n }\n },\n [color, onColorChange]\n )\n\n const onAlphaChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= 100) {\n onColorChange({ ...color, a: value / 100 })\n }\n },\n [color, onColorChange]\n )\n\n if (withoutAlpha) {\n return (\n <InputGroupItem\n aria-label=\"Hex color value\"\n position=\"isolated\"\n {...inputProps}\n placeholder=\"#000000\"\n className={cn(\"editor-font-mono\", className)}\n value={hexValue}\n onChange={onHexChange}\n disabled={context.disabled}\n />\n )\n }\n\n return (\n <div\n data-slot=\"color-picker-input-wrapper\"\n className={cn(\"editor-input-wrapper\", className)}\n >\n <InputGroupItem\n aria-label=\"Hex color value\"\n position=\"first\"\n {...inputProps}\n placeholder=\"#000000\"\n className=\"editor-flex-grow editor-font-mono\"\n value={hexValue}\n onChange={onHexChange}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Alpha transparency percentage\"\n position=\"last\"\n {...inputProps}\n placeholder=\"100\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={alphaValue}\n onChange={onAlphaChange}\n disabled={context.disabled}\n />\n </div>\n )\n}\n\nfunction RgbInput(props: FormatInputProps) {\n const {\n color,\n onColorChange,\n context,\n withoutAlpha,\n className,\n ...inputProps\n } = props\n\n const rValue = Math.round(color?.r ?? 0)\n const gValue = Math.round(color?.g ?? 0)\n const bValue = Math.round(color?.b ?? 0)\n const alphaValue = Math.round((color?.a ?? 1) * 100)\n\n const onChannelChange = React.useCallback(\n (channel: \"r\" | \"g\" | \"b\" | \"a\", max: number, isAlpha = false) =>\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= max) {\n const newValue = isAlpha ? value / 100 : value\n onColorChange({ ...color, [channel]: newValue })\n }\n },\n [color, onColorChange]\n )\n\n return (\n <div\n data-slot=\"color-picker-input-wrapper\"\n className={cn(\"editor-input-wrapper\", className)}\n >\n <InputGroupItem\n aria-label=\"Red color component (0-255)\"\n position=\"first\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n className=\"editor-w-14\"\n value={rValue}\n onChange={onChannelChange(\"r\", 255)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Green color component (0-255)\"\n position=\"middle\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n className=\"editor-w-14\"\n value={gValue}\n onChange={onChannelChange(\"g\", 255)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Blue color component (0-255)\"\n position={withoutAlpha ? \"last\" : \"middle\"}\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"255\"\n className=\"editor-w-14\"\n value={bValue}\n onChange={onChannelChange(\"b\", 255)}\n disabled={context.disabled}\n />\n {!withoutAlpha && (\n <InputGroupItem\n aria-label=\"Alpha transparency percentage\"\n position=\"last\"\n {...inputProps}\n placeholder=\"100\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={alphaValue}\n onChange={onChannelChange(\"a\", 100, true)}\n disabled={context.disabled}\n />\n )}\n </div>\n )\n}\n\nfunction HslInput(props: FormatInputProps) {\n const {\n color,\n onColorChange,\n context,\n withoutAlpha,\n className,\n ...inputProps\n } = props\n\n const hsl = React.useMemo(() => rgbToHsl(color), [color])\n const alphaValue = Math.round((color?.a ?? 1) * 100)\n\n const onHslChannelChange = React.useCallback(\n (channel: \"h\" | \"s\" | \"l\", max: number) =>\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= max) {\n const newHsl = { ...hsl, [channel]: value }\n const newColor = hslToRgb(newHsl, color?.a ?? 1)\n onColorChange(newColor)\n }\n },\n [hsl, color, onColorChange]\n )\n\n const onAlphaChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= 100) {\n onColorChange({ ...color, a: value / 100 })\n }\n },\n [color, onColorChange]\n )\n\n return (\n <div\n data-slot=\"color-picker-input-wrapper\"\n className={cn(\"editor-input-wrapper\", className)}\n >\n <InputGroupItem\n aria-label=\"Hue degree (0-360)\"\n position=\"first\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n className=\"editor-w-14\"\n value={hsl.h}\n onChange={onHslChannelChange(\"h\", 360)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Saturation percentage (0-100)\"\n position=\"middle\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={hsl.s}\n onChange={onHslChannelChange(\"s\", 100)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Lightness percentage (0-100)\"\n position={withoutAlpha ? \"last\" : \"middle\"}\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={hsl.l}\n onChange={onHslChannelChange(\"l\", 100)}\n disabled={context.disabled}\n />\n {!withoutAlpha && (\n <InputGroupItem\n aria-label=\"Alpha transparency percentage\"\n position=\"last\"\n {...inputProps}\n placeholder=\"100\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={alphaValue}\n onChange={onAlphaChange}\n disabled={context.disabled}\n />\n )}\n </div>\n )\n}\n\ninterface HsbInputProps extends Omit<FormatInputProps, \"color\"> {\n hsv: HSVColorValue\n}\n\nfunction HsbInput(props: HsbInputProps) {\n const {\n hsv,\n onColorChange,\n context,\n withoutAlpha,\n className,\n ...inputProps\n } = props\n\n const alphaValue = Math.round((hsv?.a ?? 1) * 100)\n\n const onHsvChannelChange = React.useCallback(\n (channel: \"h\" | \"s\" | \"v\", max: number) =>\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= max) {\n const newHsv = { ...hsv, [channel]: value }\n const newColor = hsvToRgb(newHsv)\n onColorChange(newColor)\n }\n },\n [hsv, onColorChange]\n )\n\n const onAlphaChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = Number.parseInt(event.target.value, 10)\n if (!Number.isNaN(value) && value >= 0 && value <= 100) {\n const currentColor = hsvToRgb(hsv)\n onColorChange({ ...currentColor, a: value / 100 })\n }\n },\n [hsv, onColorChange]\n )\n\n return (\n <div\n data-slot=\"color-picker-input-wrapper\"\n className={cn(\"editor-input-wrapper\", className)}\n >\n <InputGroupItem\n aria-label=\"Hue degree (0-360)\"\n position=\"first\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"360\"\n className=\"editor-w-14\"\n value={hsv?.h ?? 0}\n onChange={onHsvChannelChange(\"h\", 360)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Saturation percentage (0-100)\"\n position=\"middle\"\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={hsv?.s ?? 0}\n onChange={onHsvChannelChange(\"s\", 100)}\n disabled={context.disabled}\n />\n <InputGroupItem\n aria-label=\"Brightness percentage (0-100)\"\n position={withoutAlpha ? \"last\" : \"middle\"}\n {...inputProps}\n placeholder=\"0\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={hsv?.v ?? 0}\n onChange={onHsvChannelChange(\"v\", 100)}\n disabled={context.disabled}\n />\n {!withoutAlpha && (\n <InputGroupItem\n aria-label=\"Alpha transparency percentage\"\n position=\"last\"\n {...inputProps}\n placeholder=\"100\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n min=\"0\"\n max=\"100\"\n className=\"editor-w-14\"\n value={alphaValue}\n onChange={onAlphaChange}\n disabled={context.disabled}\n />\n )}\n </div>\n )\n}\n\ninterface ColorPickerPresetsProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean\n}\n\nfunction ColorPickerPresets(props: ColorPickerPresetsProps) {\n const { asChild, className, ...presetProps } = props\n const context = useColorPickerContext(\"ColorPickerPresets\")\n const store = useColorPickerStoreContext(\"ColorPickerPresets\")\n const color = useColorPickerStore((state) => state.color)\n\n const onPresetClick = React.useCallback(\n (hex: string, alpha?: number) => {\n const nextAlpha = alpha ?? (color?.a ?? 1)\n const newColor = hexToRgb(hex, nextAlpha)\n store.setColor(newColor)\n store.setHsv(rgbToHsv(newColor))\n },\n [color, store]\n )\n\n const PresetsPrimitive = asChild ? Slot : \"div\"\n\n return (\n <PresetsPrimitive\n data-slot=\"color-picker-presets\"\n {...presetProps}\n className={cn(\"editor-color-presets\", className)}\n >\n {colorPresets.map((preset) => (\n <Button\n key={preset.value}\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n onPresetClick(preset.value, \"alpha\" in preset ? preset.alpha : undefined)\n }\n disabled={context.disabled}\n className=\"editor-color-preset-item\"\n title={preset.label}\n >\n <span\n aria-hidden=\"true\"\n className=\"editor-color-preset-item__preview\"\n style={{ backgroundColor: preset.value }}\n />\n <span className=\"editor-color-preset-item__label\">{preset.value}</span>\n </Button>\n ))}\n </PresetsPrimitive>\n )\n}\n\nexport {\n ColorPickerRoot as ColorPicker,\n ColorPickerTrigger,\n ColorPickerContent,\n ColorPickerArea,\n ColorPickerHueSlider,\n ColorPickerAlphaSlider,\n ColorPickerSwatch,\n ColorPickerEyeDropper,\n ColorPickerFormatSelect,\n ColorPickerInput,\n ColorPickerPresets,\n //\n ColorPickerRoot as Root,\n ColorPickerTrigger as Trigger,\n ColorPickerContent as Content,\n ColorPickerArea as Area,\n ColorPickerHueSlider as HueSlider,\n ColorPickerAlphaSlider as AlphaSlider,\n ColorPickerSwatch as Swatch,\n ColorPickerEyeDropper as EyeDropper,\n ColorPickerFormatSelect as FormatSelect,\n ColorPickerInput as Input,\n ColorPickerPresets as Presets,\n //\n useColorPickerStore as useColorPicker,\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport * as React from \"react\"\nimport { JSX, useEffect, useRef, useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $findMatchingParent,\n $insertNodeToNearestRoot,\n mergeRegister,\n} from \"@lexical/utils\"\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n COMMAND_PRIORITY_LOW,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_LEFT_COMMAND,\n KEY_ARROW_RIGHT_COMMAND,\n KEY_ARROW_UP_COMMAND,\n LexicalEditor,\n} from \"lexical\"\nimport type { ElementNode, LexicalCommand, LexicalNode, NodeKey } from \"lexical\"\n\nimport {\n $createLayoutContainerNode,\n $isLayoutContainerNode,\n LayoutContainerNode,\n} from \"../nodes/layout-container-node\"\nimport {\n $createLayoutItemNode,\n $isLayoutItemNode,\n LayoutItemNode,\n} from \"../nodes/layout-item-node\"\nimport { Button } from \"../ui/button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\"\nimport {\n ColorPicker,\n ColorPickerAlphaSlider,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerEyeDropper,\n ColorPickerFormatSelect,\n ColorPickerHueSlider,\n ColorPickerInput,\n ColorPickerPresets,\n ColorPickerTrigger,\n} from \"../editor-ui/color-picker\"\nimport { Input } from \"../ui/input\"\nimport { Flex } from \"../ui/flex\"\nimport { useEditorModal } from \"../editor-hooks/use-modal\"\nimport { logger } from \"../lib/logger\"\n\nconst LAYOUTS = [\n { label: \"1 column\", value: \"1fr\" },\n { label: \"2 columns (equal width)\", value: \"1fr 1fr\" },\n { label: \"2 columns (75% - 25%)\", value: \"3fr 1fr\" },\n { label: \"2 columns (25% - 75%)\", value: \"1fr 3fr\" },\n { label: \"3 columns (equal width)\", value: \"1fr 1fr 1fr\" },\n { label: \"3 columns (25% - 50% - 25%)\", value: \"1fr 2fr 1fr\" },\n { label: \"4 columns (equal width)\", value: \"1fr 1fr 1fr 1fr\" },\n]\n\ntype InsertLayoutPayload =\n | string\n | {\n template: string\n itemBackgroundColor?: string\n itemPaddingPx?: number\n itemBorderRadiusPx?: number\n }\n\ntype LayoutDialogValues = {\n template: string\n itemBackgroundColor: string\n itemPaddingPx: number\n itemBorderRadiusPx: number\n}\n\ntype LayoutTargetPayload = {\n containerKey: NodeKey\n layoutItemKey: NodeKey\n values: LayoutDialogValues\n}\n\nexport function InsertLayoutDialog({\n activeEditor,\n onClose,\n initialValues,\n submitLabel = \"Insert\",\n onSubmit,\n}: {\n activeEditor: LexicalEditor\n onClose: () => void\n initialValues?: Partial<LayoutDialogValues>\n submitLabel?: string\n onSubmit?: (values: LayoutDialogValues) => void\n}): JSX.Element {\n const [layout, setLayout] = useState(initialValues?.template ?? (LAYOUTS[0]?.value || \"1fr\"))\n const [backgroundColor, setBackgroundColor] = useState(\n initialValues?.itemBackgroundColor ?? \"#ffffff\"\n )\n const [paddingPx, setPaddingPx] = useState(initialValues?.itemPaddingPx ?? 12)\n const [borderRadiusPx, setBorderRadiusPx] = useState(\n initialValues?.itemBorderRadiusPx ?? 8\n )\n const layoutRef = useRef(layout)\n const backgroundColorRef = useRef(backgroundColor)\n const paddingPxRef = useRef(paddingPx)\n const borderRadiusPxRef = useRef(borderRadiusPx)\n\n useEffect(() => {\n layoutRef.current = layout\n }, [layout])\n useEffect(() => {\n backgroundColorRef.current = backgroundColor\n }, [backgroundColor])\n useEffect(() => {\n paddingPxRef.current = paddingPx\n }, [paddingPx])\n useEffect(() => {\n borderRadiusPxRef.current = borderRadiusPx\n }, [borderRadiusPx])\n\n const onBackgroundColorChange = (value: string) => {\n backgroundColorRef.current = value\n setBackgroundColor(value)\n }\n\n const onPaddingChange = (next: number) => {\n const value = Math.min(Math.max(next, 0), 64)\n paddingPxRef.current = value\n setPaddingPx(value)\n }\n\n const onBorderRadiusChange = (next: number) => {\n const value = Math.min(Math.max(next, 0), 64)\n borderRadiusPxRef.current = value\n setBorderRadiusPx(value)\n }\n const buttonLabel = LAYOUTS.find((item) => item.value === layout)?.label\n\n const onClick = () => {\n const values: LayoutDialogValues = {\n template: layoutRef.current,\n itemBackgroundColor: backgroundColorRef.current,\n itemPaddingPx: paddingPxRef.current,\n itemBorderRadiusPx: borderRadiusPxRef.current,\n }\n logger.info(\"[Layout] Submit dialog values\", {\n mode: submitLabel,\n values,\n })\n if (onSubmit) {\n onSubmit(values)\n onClose()\n return\n }\n activeEditor.dispatchCommand(INSERT_LAYOUT_COMMAND, values)\n onClose()\n }\n\n return (\n <>\n <Select onValueChange={setLayout} value={layout}>\n <SelectTrigger className=\"editor-input-lg editor-w-full\">\n <SelectValue placeholder={buttonLabel} />\n </SelectTrigger>\n <SelectContent className=\"editor-w-full\">\n {LAYOUTS.map(({ label, value }) => (\n <SelectItem key={value} value={value}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <div className=\"editor-layout-dialog-grid\">\n <div className=\"editor-layout-dialog-group\">\n <div className=\"editor-text-xs-muted\">Background</div>\n <ColorPicker\n modal\n defaultFormat=\"hex\"\n value={backgroundColor}\n onValueChange={onBackgroundColorChange}\n >\n <ColorPickerTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"editor-layout-color-trigger\"\n >\n <span\n className=\"editor-layout-color-preview\"\n style={{ backgroundColor }}\n />\n <span>{backgroundColor.toUpperCase()}</span>\n </Button>\n </ColorPickerTrigger>\n <ColorPickerContent>\n <ColorPickerArea />\n <Flex align=\"center\" gap={2}>\n <ColorPickerEyeDropper />\n <Flex direction=\"column\" gap={2} className=\"editor-flex-1\">\n <ColorPickerHueSlider />\n <ColorPickerAlphaSlider />\n </Flex>\n </Flex>\n <Flex align=\"center\" gap={2}>\n <ColorPickerFormatSelect />\n <ColorPickerInput />\n </Flex>\n <ColorPickerPresets />\n </ColorPickerContent>\n </ColorPicker>\n </div>\n <div className=\"editor-layout-dialog-group\">\n <div className=\"editor-text-xs-muted\">Padding (px)</div>\n <Input\n type=\"number\"\n min={0}\n max={64}\n step={1}\n value={paddingPx}\n onChange={(event) => {\n const next = Number.parseInt(event.target.value, 10)\n if (Number.isFinite(next)) {\n onPaddingChange(next)\n } else {\n onPaddingChange(0)\n }\n }}\n className=\"editor-input-lg editor-w-full\"\n />\n </div>\n <div className=\"editor-layout-dialog-group\">\n <div className=\"editor-text-xs-muted\">Border radius (px)</div>\n <Input\n type=\"number\"\n min={0}\n max={64}\n step={1}\n value={borderRadiusPx}\n onChange={(event) => {\n const next = Number.parseInt(event.target.value, 10)\n if (Number.isFinite(next)) {\n onBorderRadiusChange(next)\n } else {\n onBorderRadiusChange(0)\n }\n }}\n className=\"editor-input-lg editor-w-full\"\n />\n </div>\n </div>\n <Button onClick={onClick}>{submitLabel}</Button>\n </>\n )\n}\n\nexport const INSERT_LAYOUT_COMMAND: LexicalCommand<InsertLayoutPayload> =\n createCommand<InsertLayoutPayload>()\n\nexport const UPDATE_LAYOUT_COMMAND: LexicalCommand<{\n template: string\n nodeKey: NodeKey\n}> = createCommand<{ template: string; nodeKey: NodeKey }>()\n\nexport const OPEN_UPDATE_LAYOUT_MODAL_COMMAND: LexicalCommand<{\n layoutItemKey: NodeKey\n}> = createCommand<{ layoutItemKey: NodeKey }>(\"OPEN_UPDATE_LAYOUT_MODAL_COMMAND\")\n\nexport function LayoutPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [modal, showModal] = useEditorModal()\n useEffect(() => {\n if (!editor.hasNodes([LayoutContainerNode, LayoutItemNode])) {\n throw new Error(\n \"LayoutPlugin: LayoutContainerNode, or LayoutItemNode not registered on editor\"\n )\n }\n\n const $onEscape = (before: boolean) => {\n const selection = $getSelection()\n if (\n $isRangeSelection(selection) &&\n selection.isCollapsed() &&\n selection.anchor.offset === 0\n ) {\n const container = $findMatchingParent(\n selection.anchor.getNode(),\n $isLayoutContainerNode\n )\n\n if ($isLayoutContainerNode(container) && container !== undefined && container !== null) {\n const parent = container.getParent<ElementNode>()\n if (parent === null) {\n return false\n }\n const child = before\n ? parent.getFirstChild<LexicalNode>()\n : parent.getLastChild<LexicalNode>()\n const descendant = before\n ? container.getFirstDescendant<LexicalNode>()?.getKey()\n : container.getLastDescendant<LexicalNode>()?.getKey()\n\n if (\n child === container &&\n selection.anchor.key === descendant\n ) {\n if (before) {\n container.insertBefore($createParagraphNode())\n } else {\n container.insertAfter($createParagraphNode())\n }\n }\n }\n }\n\n return false\n }\n\n const extractStyleValue = (style: string, property: string): string | undefined => {\n const match = style.match(new RegExp(`${property}\\\\s*:\\\\s*([^;]+)`, \"i\"))\n return match?.[1]?.trim()\n }\n\n const extractNumericStyle = (style: string, property: string): number | undefined => {\n const value = extractStyleValue(style, property)\n if (!value) {\n return undefined\n }\n const match = value.match(/^(\\d+)px$/i)\n if (!match?.[1]) {\n return undefined\n }\n const parsed = Number.parseInt(match[1], 10)\n return Number.isFinite(parsed) ? parsed : undefined\n }\n\n const buildLayoutItemStyle = ({\n itemBackgroundColor,\n itemPaddingPx,\n itemBorderRadiusPx,\n }: LayoutDialogValues): string => {\n const itemStyles: string[] = []\n if (itemBackgroundColor.trim()) {\n itemStyles.push(`background-color: ${itemBackgroundColor.trim()}`)\n }\n itemStyles.push(`padding: ${Math.min(Math.max(itemPaddingPx, 0), 64)}px`)\n itemStyles.push(\n `border-radius: ${Math.min(Math.max(itemBorderRadiusPx, 0), 64)}px`\n )\n return itemStyles.join(\"; \")\n }\n\n const syncLayoutItemDomStyle = (itemKey: NodeKey, values: LayoutDialogValues) => {\n const element = editor.getElementByKey(itemKey)\n if (!(element instanceof HTMLElement)) {\n logger.warn(\"[Layout] Cannot resolve DOM element by item key\", { itemKey })\n return\n }\n\n const background = values.itemBackgroundColor.trim()\n const padding = `${Math.min(Math.max(values.itemPaddingPx, 0), 64)}px`\n const borderRadius = `${Math.min(Math.max(values.itemBorderRadiusPx, 0), 64)}px`\n if (background) {\n element.style.setProperty(\"background-color\", background)\n }\n element.style.setProperty(\"padding\", padding, \"important\")\n element.style.setProperty(\"border-radius\", borderRadius)\n\n logger.info(\"[Layout] Synced DOM style by key\", {\n itemKey,\n domStyle: element.getAttribute(\"style\"),\n })\n }\n\n const updateLayoutContainerTemplate = (\n container: LayoutContainerNode,\n template: string\n ) => {\n const itemsCount = getItemsCountFromTemplate(template)\n const prevItemsCount = getItemsCountFromTemplate(container.getTemplateColumns())\n\n if (itemsCount > prevItemsCount) {\n for (let i = prevItemsCount; i < itemsCount; i++) {\n container.append($createLayoutItemNode().append($createParagraphNode()))\n }\n } else if (itemsCount < prevItemsCount) {\n for (let i = prevItemsCount - 1; i >= itemsCount; i--) {\n const layoutItem = container.getChildAtIndex<LexicalNode>(i)\n if ($isLayoutItemNode(layoutItem)) {\n layoutItem.remove()\n }\n }\n }\n\n container.setTemplateColumns(template)\n }\n\n const getLayoutPayloadFromTarget = (\n target: HTMLElement\n ): LayoutTargetPayload | null => {\n let payload: LayoutTargetPayload | null = null\n\n editor.read(() => {\n const lexicalNode = $getNearestNodeFromDOMNode(target)\n if (!lexicalNode) {\n logger.warn(\"[Layout] Cannot resolve lexical node from DOM target\")\n return\n }\n const layoutItem = $findMatchingParent(lexicalNode, (node) =>\n $isLayoutItemNode(node)\n )\n if (!$isLayoutItemNode(layoutItem)) {\n logger.warn(\"[Layout] Click target is not layout item node\")\n return\n }\n const parentContainer = layoutItem.getParent()\n if (!$isLayoutContainerNode(parentContainer)) {\n logger.warn(\"[Layout] Layout item has no layout container parent\")\n return\n }\n\n const style = layoutItem.getStyle()\n payload = {\n containerKey: parentContainer.getKey(),\n layoutItemKey: layoutItem.getKey(),\n values: {\n template: parentContainer.getTemplateColumns(),\n itemBackgroundColor:\n extractStyleValue(style, \"background-color\") ?? \"#ffffff\",\n itemPaddingPx: extractNumericStyle(style, \"padding\") ?? 12,\n itemBorderRadiusPx: extractNumericStyle(style, \"border-radius\") ?? 8,\n },\n }\n logger.debug(\"[Layout] Resolved payload from target\", payload)\n })\n\n return payload\n }\n\n const openUpdateLayoutModal = (payload: LayoutTargetPayload) => {\n logger.info(\"[Layout] Open Update Columns Layout\", payload)\n showModal(\"Update Columns Layout\", (onClose) => (\n <InsertLayoutDialog\n activeEditor={editor}\n onClose={onClose}\n initialValues={payload.values}\n submitLabel=\"Update\"\n onSubmit={(values) => {\n logger.info(\"[Layout] Start applying update\", { payload, values })\n editor.update(() => {\n const nextStyle = buildLayoutItemStyle(values)\n logger.info(\"[Layout] Computed next style\", { nextStyle })\n let updatedItemsCount = 0\n const container = $getNodeByKey<LexicalNode>(payload.containerKey)\n if ($isLayoutContainerNode(container)) {\n updateLayoutContainerTemplate(container, values.template)\n const items = container.getChildren<LexicalNode>()\n logger.info(\"[Layout] Updating container items\", {\n containerKey: payload.containerKey,\n itemsCount: items.length,\n })\n for (const item of items) {\n if ($isLayoutItemNode(item)) {\n item.setStyle(nextStyle)\n updatedItemsCount += 1\n logger.info(\"[Layout] Applied style to item\", {\n itemKey: item.getKey(),\n appliedStyle: item.getStyle(),\n })\n syncLayoutItemDomStyle(item.getKey(), values)\n }\n }\n }\n\n // Always apply clicked item as source-of-truth (handles stale/mismatched container).\n const layoutItem = $getNodeByKey<LexicalNode>(payload.layoutItemKey)\n if ($isLayoutItemNode(layoutItem)) {\n layoutItem.setStyle(nextStyle)\n logger.info(\"[Layout] Applied style to clicked layout item\", {\n layoutItemKey: payload.layoutItemKey,\n appliedStyle: layoutItem.getStyle(),\n })\n syncLayoutItemDomStyle(layoutItem.getKey(), values)\n logger.info(\"[Layout] Update summary\", {\n containerKey: payload.containerKey,\n layoutItemKey: payload.layoutItemKey,\n updatedItemsCount,\n })\n return\n }\n logger.error(\"[Layout] Failed to resolve container and layout item keys\", {\n containerKey: payload.containerKey,\n layoutItemKey: payload.layoutItemKey,\n })\n })\n }}\n />\n ))\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_UPDATE_LAYOUT_MODAL_COMMAND,\n ({ layoutItemKey }) => {\n const element = editor.getElementByKey(layoutItemKey)\n if (element instanceof HTMLElement) {\n const layoutPayload = getLayoutPayloadFromTarget(element)\n if (layoutPayload) openUpdateLayoutModal(layoutPayload)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR\n ),\n // When layout is the last child pressing down/right arrow will insert paragraph\n // below it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if trailing paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n () => $onEscape(false),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_RIGHT_COMMAND,\n () => $onEscape(false),\n COMMAND_PRIORITY_LOW\n ),\n // When layout is the first child pressing up/left arrow will insert paragraph\n // above it to allow adding more content. It's similar what $insertBlockNode\n // (mainly for decorators), except it'll always be possible to continue adding\n // new content even if leading paragraph is accidentally deleted\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n () => $onEscape(true),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ARROW_LEFT_COMMAND,\n () => $onEscape(true),\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_LAYOUT_COMMAND,\n (payload) => {\n editor.update(() => {\n const template = typeof payload === \"string\" ? payload : payload.template\n const itemBackgroundColor =\n typeof payload === \"string\"\n ? undefined\n : payload.itemBackgroundColor?.trim()\n const itemPaddingPx =\n typeof payload === \"string\"\n ? undefined\n : typeof payload.itemPaddingPx === \"number\" &&\n Number.isFinite(payload.itemPaddingPx)\n ? Math.min(Math.max(payload.itemPaddingPx, 0), 64)\n : undefined\n const itemBorderRadiusPx =\n typeof payload === \"string\"\n ? undefined\n : typeof payload.itemBorderRadiusPx === \"number\" &&\n Number.isFinite(payload.itemBorderRadiusPx)\n ? Math.min(Math.max(payload.itemBorderRadiusPx, 0), 64)\n : undefined\n\n const itemStyle = buildLayoutItemStyle({\n template,\n itemBackgroundColor: itemBackgroundColor ?? \"#ffffff\",\n itemPaddingPx: itemPaddingPx ?? 12,\n itemBorderRadiusPx: itemBorderRadiusPx ?? 8,\n })\n\n const container = $createLayoutContainerNode(template)\n const itemsCount = getItemsCountFromTemplate(template)\n\n for (let i = 0; i < itemsCount; i++) {\n const item = $createLayoutItemNode()\n if (itemStyle) {\n item.setStyle(itemStyle)\n }\n container.append(\n item.append($createParagraphNode())\n )\n }\n\n $insertNodeToNearestRoot(container)\n container.selectStart()\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n ),\n editor.registerCommand(\n UPDATE_LAYOUT_COMMAND,\n ({ template, nodeKey }) => {\n editor.update(() => {\n const container = $getNodeByKey<LexicalNode>(nodeKey)\n\n if (!$isLayoutContainerNode(container)) {\n return\n }\n updateLayoutContainerTemplate(container, template)\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n ),\n // Structure enforcing transformers for each node type. In case nesting structure is not\n // \"Container > Item\" it'll unwrap nodes and convert it back\n // to regular content.\n editor.registerNodeTransform(LayoutItemNode, (node) => {\n const parent = node.getParent<ElementNode>()\n if (!$isLayoutContainerNode(parent)) {\n const children = node.getChildren<LexicalNode>()\n for (const child of children) {\n node.insertBefore(child)\n }\n node.remove()\n }\n }),\n editor.registerNodeTransform(LayoutContainerNode, (node) => {\n const children = node.getChildren<LexicalNode>()\n if (!children.every($isLayoutItemNode)) {\n for (const child of children) {\n node.insertBefore(child)\n }\n node.remove()\n }\n })\n )\n }, [editor, showModal])\n\n return <>{modal}</>\n}\n\nfunction getItemsCountFromTemplate(template: string): number {\n return template.trim().split(/\\s+/).length\n}\n","\"use client\"\n\nimport type { JSX } from \"react\"\nimport * as React from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { mergeRegister } from \"@lexical/utils\"\nimport { COMMAND_PRIORITY_EDITOR, createCommand, $getNodeByKey } from \"lexical\"\nimport type { LexicalCommand, NodeKey } from \"lexical\"\nimport {\n ColorPicker,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerHueSlider,\n ColorPickerInput,\n ColorPickerPresets,\n} from \"../editor-ui/color-picker\"\nimport { useEditorModal } from \"../editor-hooks/use-modal\"\nimport {\n $isListWithColorNode,\n} from \"../nodes/list-with-color-node\"\nimport { createListWithColorNodeFromRegistry } from \"../editor-x/nodes\"\nimport { $isListNode, ListNode } from \"@lexical/list\"\nimport { Button } from \"../ui/button\"\nimport { DialogFooter } from \"../ui/dialog\"\nimport { Flex } from \"../ui/flex\"\n\nexport const OPEN_LIST_COLOR_PICKER_COMMAND: LexicalCommand<{\n listKey: NodeKey\n}> = createCommand<{ listKey: NodeKey }>(\"OPEN_LIST_COLOR_PICKER_COMMAND\")\n\nconst listColorStore = new Map<NodeKey, string>()\n\n/** Patch serialized state: thêm listColor vào list nodes theo listColorStore (fallback khi load content cũ). */\nexport function patchListColorsInSerializedState(\n json: Record<string, unknown>\n): void {\n const root = json.root as Record<string, unknown> | undefined\n if (!root || typeof root !== \"object\") return\n const children = root.children as Array<Record<string, unknown>> | undefined\n if (!Array.isArray(children)) return\n\n function walk(nodes: Array<Record<string, unknown>>): void {\n for (const node of nodes) {\n const key = node.key as string | undefined\n const type = node.type as string | undefined\n if (type === \"list\" && key && listColorStore.has(key)) {\n ;(node as Record<string, unknown>).listColor = listColorStore.get(key)\n }\n const childList = node.children as Array<Record<string, unknown>> | undefined\n if (Array.isArray(childList)) walk(childList)\n }\n }\n walk(children)\n}\n\nfunction getListElement(element: HTMLElement): HTMLElement | null {\n const tag = element.tagName.toUpperCase()\n if (tag === \"UL\" || tag === \"OL\") return element\n const list = element.querySelector(\"ul, ol\")\n return list instanceof HTMLElement ? list : null\n}\n\nfunction applyListColor(editor: ReturnType<typeof useLexicalComposerContext>[0]) {\n listColorStore.forEach((color, listKey) => {\n const element = editor.getElementByKey(listKey)\n if (!(element instanceof HTMLElement)) return\n const listEl = getListElement(element)\n if (!listEl) return\n listEl.style.setProperty(\"--list-marker-color\", color, \"important\")\n listEl.setAttribute(\"data-list-color\", color)\n })\n}\n\nexport function ListColorPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [modal, showModal] = useEditorModal()\n\n React.useEffect(() => {\n const applyColor = (color: string, listKey: NodeKey) => {\n listColorStore.set(listKey, color)\n editor.update(() => {\n const node = $getNodeByKey(listKey)\n if ($isListWithColorNode(node)) {\n node.setListColor(color)\n return\n }\n if ($isListNode(node)) {\n const listType = node.getListType()\n const start = node.getStart()\n const newList = createListWithColorNodeFromRegistry(editor, listType, start)\n newList.setListColor(color)\n const children = node.getChildren()\n for (const c of children) newList.append(c)\n node.replace(newList)\n }\n })\n applyListColor(editor)\n }\n\n return mergeRegister(\n editor.registerNodeTransform(ListNode, (node) => {\n if ($isListWithColorNode(node)) return\n const listType = node.getListType()\n const start = node.getStart()\n const newList = createListWithColorNodeFromRegistry(editor, listType, start)\n const children = node.getChildren()\n for (const c of children) newList.append(c)\n node.replace(newList)\n }),\n editor.registerUpdateListener(() => {\n applyListColor(editor)\n }),\n editor.registerCommand(\n OPEN_LIST_COLOR_PICKER_COMMAND,\n ({ listKey }) => {\n const element = editor.getElementByKey(listKey)\n if (!(element instanceof HTMLElement)) return true\n const listEl = getListElement(element)\n if (!listEl) return true\n\n const fromStore = listColorStore.get(listKey)\n const fromVar = listEl.style.getPropertyValue(\"--list-marker-color\")\n const fromAttr = listEl.getAttribute(\"data-list-color\")\n const initialColor =\n fromStore || fromVar || fromAttr || \"#000000\"\n\n function ListColorModalContent({ onClose }: { onClose: () => void }) {\n const [color, setColor] = React.useState(initialColor)\n return (\n <div className=\"editor-list-color-dialog\">\n <Flex direction=\"column\" gap={4}>\n <div className=\"editor-text-xs-muted\">\n Chọn màu cho bullet hoặc số thứ tự của list.\n </div>\n \n <ColorPicker\n inline\n value={color}\n onValueChange={(next) => {\n setColor(next)\n applyColor(next, listKey)\n applyListColor(editor)\n }}\n >\n <ColorPickerContent className=\"editor-w-full editor-border-0 editor-shadow-none editor-p-0\">\n <ColorPickerArea className=\"editor-h-40 editor-w-full editor-rounded-md\" />\n <Flex direction=\"column\" gap={3} className=\"editor-mt-3\">\n <Flex direction=\"column\" gap={2}>\n <ColorPickerHueSlider className=\"editor-w-full\" />\n <ColorPickerInput className=\"editor-w-full\" />\n </Flex>\n <ColorPickerPresets />\n </Flex>\n </ColorPickerContent>\n </ColorPicker>\n\n <DialogFooter className=\"editor-px-0\">\n <Button variant=\"outline\" size=\"sm\" onClick={onClose} className=\"editor-w-full\">\n Hoàn tất\n </Button>\n </DialogFooter>\n </Flex>\n </div>\n )\n }\n\n showModal(\"Đổi màu list\", (onClose) => (\n <ListColorModalContent onClose={onClose} />\n ))\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n )\n }, [editor, showModal])\n\n return <>{modal}</>\n}\n","import type { JSX } from \"react\"\nimport { useMemo } from \"react\"\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n NodeContextMenuOption,\n NodeContextMenuPlugin,\n NodeContextMenuSeparator,\n} from \"@lexical/react/LexicalNodeContextMenuPlugin\"\nimport { $mergeCells, $isTableCellNode, $isTableSelection, $unmergeCell, $insertTableColumnAtSelection, $insertTableRowAtSelection } from \"@lexical/table\"\nimport type { TableCellNode } from \"@lexical/table\"\nimport { $isListNode } from \"@lexical/list\"\nimport { $findMatchingParent } from \"@lexical/utils\"\nimport {\n $getSelection,\n $isDecoratorNode,\n $isNodeSelection,\n $isRangeSelection,\n COPY_COMMAND,\n CUT_COMMAND,\n PASTE_COMMAND,\n type LexicalNode,\n} from \"lexical\"\nimport { $isLayoutItemNode } from \"../nodes/layout-item-node\"\nimport { OPEN_UPDATE_LAYOUT_MODAL_COMMAND } from \"../plugins/layout-plugin\"\nimport { OPEN_LIST_COLOR_PICKER_COMMAND } from \"../plugins/list-color-plugin\"\nimport {\n Clipboard,\n ClipboardType,\n Copy,\n Link2Off,\n Scissors,\n Trash2,\n Combine,\n SplitSquareVertical,\n Columns3,\n Rows3,\n LayoutGrid,\n Palette,\n} from \"lucide-react\"\nimport { IconSize } from \"../ui/typography\"\n\nexport function ContextMenuPlugin(): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const isInTable = (node: LexicalNode) =>\n $findMatchingParent(node, $isTableCellNode) !== null\n\n const isMergedCell = (node: LexicalNode) => {\n const cell = $findMatchingParent(node, $isTableCellNode)\n if (!cell || !$isTableCellNode(cell)) return false\n const c = cell as TableCellNode\n const colSpan =\n typeof (c as { getColSpan?: () => number }).getColSpan === \"function\"\n ? (c as { getColSpan: () => number }).getColSpan()\n : (c as { __colSpan?: number }).__colSpan ?? 1\n const rowSpan =\n typeof (c as { getRowSpan?: () => number }).getRowSpan === \"function\"\n ? (c as { getRowSpan: () => number }).getRowSpan()\n : (c as { __rowSpan?: number }).__rowSpan ?? 1\n return colSpan > 1 || rowSpan > 1\n }\n\n const isInLayoutItem = (node: LexicalNode) =>\n $findMatchingParent(node, $isLayoutItemNode) !== null\n\n const isInList = (node: LexicalNode) =>\n $findMatchingParent(node, $isListNode) !== null\n\n const items = useMemo(() => {\n return [\n new NodeContextMenuOption(`Gộp ô`, {\n $onSelect: () => {\n editor.update(() => {\n const selection = $getSelection()\n if (!$isTableSelection(selection)) return\n const nodes = selection.getNodes()\n const seen = new Set<string>()\n const cellNodes: import(\"@lexical/table\").TableCellNode[] = []\n for (const n of nodes) {\n const cell = $findMatchingParent(n, $isTableCellNode)\n if (cell && !seen.has(cell.getKey())) {\n seen.add(cell.getKey())\n cellNodes.push(cell)\n }\n }\n if (cellNodes.length >= 2) $mergeCells(cellNodes)\n })\n },\n $showOn: isInTable,\n disabled: false,\n icon: <IconSize size=\"sm\"><Combine /></IconSize>,\n }),\n new NodeContextMenuOption(`Tách ô`, {\n $onSelect: () => {\n editor.update(() => {\n $unmergeCell()\n })\n },\n $showOn: isMergedCell,\n disabled: false,\n icon: <IconSize size=\"sm\"><SplitSquareVertical /></IconSize>,\n }),\n new NodeContextMenuOption(`Chèn cột bên phải`, {\n $onSelect: () => {\n editor.update(() => {\n $insertTableColumnAtSelection(true)\n })\n },\n $showOn: isInTable,\n disabled: false,\n icon: <IconSize size=\"sm\"><Columns3 /></IconSize>,\n }),\n new NodeContextMenuOption(`Chèn cột bên trái`, {\n $onSelect: () => {\n editor.update(() => {\n $insertTableColumnAtSelection(false)\n })\n },\n $showOn: isInTable,\n disabled: false,\n icon: <IconSize size=\"sm\"><Columns3 /></IconSize>,\n }),\n new NodeContextMenuOption(`Chèn dòng bên dưới`, {\n $onSelect: () => {\n editor.update(() => {\n $insertTableRowAtSelection(true)\n })\n },\n $showOn: isInTable,\n disabled: false,\n icon: <IconSize size=\"sm\"><Rows3 /></IconSize>,\n }),\n new NodeContextMenuOption(`Chèn dòng bên trên`, {\n $onSelect: () => {\n editor.update(() => {\n $insertTableRowAtSelection(false)\n })\n },\n $showOn: isInTable,\n disabled: false,\n icon: <IconSize size=\"sm\"><Rows3 /></IconSize>,\n }),\n new NodeContextMenuSeparator({\n $showOn: isInTable,\n }),\n new NodeContextMenuOption(`Cập nhật column layout`, {\n $onSelect: () => {\n let layoutItemKey: string | null = null\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) return\n const layoutItem = $findMatchingParent(\n selection.anchor.getNode(),\n $isLayoutItemNode\n )\n if ($isLayoutItemNode(layoutItem)) layoutItemKey = layoutItem.getKey()\n })\n if (layoutItemKey)\n editor.dispatchCommand(OPEN_UPDATE_LAYOUT_MODAL_COMMAND, {\n layoutItemKey,\n })\n },\n $showOn: isInLayoutItem,\n disabled: false,\n icon: <IconSize size=\"sm\"><LayoutGrid /></IconSize>,\n }),\n new NodeContextMenuSeparator({\n $showOn: isInLayoutItem,\n }),\n new NodeContextMenuOption(`Đổi màu list`, {\n $onSelect: () => {\n let listKey: string | null = null\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) return\n const listNode = $findMatchingParent(\n selection.anchor.getNode(),\n $isListNode\n )\n if ($isListNode(listNode)) listKey = listNode.getKey()\n })\n if (listKey)\n editor.dispatchCommand(OPEN_LIST_COLOR_PICKER_COMMAND, {\n listKey,\n })\n },\n $showOn: isInList,\n disabled: false,\n icon: <IconSize size=\"sm\"><Palette /></IconSize>,\n }),\n new NodeContextMenuSeparator({\n $showOn: isInList,\n }),\n new NodeContextMenuOption(`Remove Link`, {\n $onSelect: () => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n },\n $showOn: (node: LexicalNode) => $isLinkNode(node.getParent()),\n disabled: false,\n icon: <IconSize size=\"sm\"><Link2Off /></IconSize>,\n }),\n new NodeContextMenuSeparator({\n $showOn: (node: LexicalNode) => $isLinkNode(node.getParent()),\n }),\n new NodeContextMenuOption(`Cut`, {\n $onSelect: () => {\n editor.dispatchCommand(CUT_COMMAND, null)\n },\n disabled: false,\n icon: <IconSize size=\"sm\"><Scissors /></IconSize>,\n }),\n new NodeContextMenuOption(`Copy`, {\n $onSelect: () => {\n editor.dispatchCommand(COPY_COMMAND, null)\n },\n disabled: false,\n icon: <IconSize size=\"sm\"><Copy /></IconSize>,\n }),\n new NodeContextMenuOption(`Paste`, {\n $onSelect: () => {\n navigator.clipboard.read().then(async function (...args) {\n void args\n const data = new DataTransfer()\n\n const readClipboardItems = await navigator.clipboard.read()\n const item = readClipboardItems[0]\n if (!item) return\n\n const permission = await navigator.permissions.query({\n name: \"clipboard-read\" as PermissionName,\n })\n if (permission.state === \"denied\") {\n alert(\"Not allowed to paste from clipboard.\")\n return\n }\n\n for (const type of item.types) {\n const dataString = await (await item.getType(type)).text()\n data.setData(type, dataString)\n }\n\n const event = new ClipboardEvent(\"paste\", {\n clipboardData: data,\n })\n\n editor.dispatchCommand(PASTE_COMMAND, event)\n })\n },\n disabled: false,\n icon: <IconSize size=\"sm\"><Clipboard /></IconSize>,\n }),\n new NodeContextMenuOption(`Paste as Plain Text`, {\n $onSelect: () => {\n navigator.clipboard.read().then(async function (...args) {\n void args\n const permission = await navigator.permissions.query({\n name: \"clipboard-read\" as PermissionName,\n })\n\n if (permission.state === \"denied\") {\n alert(\"Not allowed to paste from clipboard.\")\n return\n }\n\n const data = new DataTransfer()\n const clipboardText = await navigator.clipboard.readText()\n data.setData(\"text/plain\", clipboardText)\n\n const event = new ClipboardEvent(\"paste\", {\n clipboardData: data,\n })\n editor.dispatchCommand(PASTE_COMMAND, event)\n })\n },\n disabled: false,\n icon: <IconSize size=\"sm\"><ClipboardType /></IconSize>,\n }),\n new NodeContextMenuSeparator(),\n new NodeContextMenuOption(`Delete Node`, {\n $onSelect: () => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const currentNode = selection.anchor.getNode()\n const ancestorNodeWithRootAsParent = currentNode.getParents().at(-2)\n\n ancestorNodeWithRootAsParent?.remove()\n } else if ($isNodeSelection(selection)) {\n const selectedNodes = selection.getNodes()\n selectedNodes.forEach((node) => {\n if ($isDecoratorNode(node)) {\n node.remove()\n }\n })\n }\n },\n disabled: false,\n icon: <IconSize size=\"sm\"><Trash2 /></IconSize>,\n }),\n ]\n }, [editor])\n\n return (\n <NodeContextMenuPlugin\n className=\"editor-context-menu\"\n itemClassName=\"editor-context-menu-item\"\n separatorClassName=\"editor-context-menu-separator\"\n items={items}\n />\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { DRAG_DROP_PASTE } from \"@lexical/rich-text\"\nimport { isMimeType, mediaFileReader } from \"@lexical/utils\"\nimport { COMMAND_PRIORITY_LOW } from \"lexical\"\n\nimport { INSERT_IMAGE_COMMAND } from \"./images-plugin\"\n\nconst ACCEPTABLE_IMAGE_TYPES = [\n \"image/\",\n \"image/heic\",\n \"image/heif\",\n \"image/gif\",\n \"image/webp\",\n]\n\nexport function DragDropPastePlugin(): null {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n return editor.registerCommand(\n DRAG_DROP_PASTE,\n (files) => {\n ;(async () => {\n const filesResult = await mediaFileReader(\n files,\n [ACCEPTABLE_IMAGE_TYPES].flatMap((x) => x)\n )\n for (const { file, result } of filesResult) {\n if (isMimeType(file, ACCEPTABLE_IMAGE_TYPES)) {\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\n altText: file.name,\n src: result,\n })\n }\n }\n })()\n return true\n },\n COMMAND_PRIORITY_LOW\n )\n }, [editor])\n return null\n}\n","\"use client\"\n\nimport { JSX, useRef } from \"react\"\nimport { DraggableBlockPlugin_EXPERIMENTAL } from \"@lexical/react/LexicalDraggableBlockPlugin\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport { IconSize } from \"../ui/typography\"\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = \"editor-draggable-menu\"\n\nfunction isOnMenu(element: HTMLElement): boolean {\n return !!element.closest(`.${DRAGGABLE_BLOCK_MENU_CLASSNAME}`)\n}\n\nexport function DraggableBlockPlugin({\n anchorElem,\n}: {\n anchorElem: HTMLElement | null\n}): JSX.Element | null {\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n\n if (!anchorElem) {\n return null\n }\n\n return (\n <DraggableBlockPlugin_EXPERIMENTAL\n anchorElem={anchorElem}\n menuRef={menuRef as React.RefObject<HTMLDivElement>}\n targetLineRef={targetLineRef as React.RefObject<HTMLDivElement>}\n menuComponent={\n <div\n ref={menuRef}\n className=\"editor-draggable-menu\"\n >\n <IconSize size=\"sm\" className=\"editor-opacity-30\">\n <GripVerticalIcon />\n </IconSize>\n </div>\n }\n targetLineComponent={\n <div\n ref={targetLineRef}\n className=\"editor-draggable-line\"\n />\n }\n isOnMenu={isOnMenu}\n />\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $insertNodeToNearestRoot } from \"@lexical/utils\"\nimport { COMMAND_PRIORITY_EDITOR, createCommand, LexicalCommand } from \"lexical\"\n\nimport {\n $createTweetNode,\n TweetNode,\n} from \"../../nodes/embeds/tweet-node\"\n\nexport const INSERT_TWEET_COMMAND: LexicalCommand<string> = createCommand(\n \"INSERT_TWEET_COMMAND\"\n)\n\nexport function TwitterPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([TweetNode])) {\n throw new Error(\"TwitterPlugin: TweetNode not registered on editor\")\n }\n\n return editor.registerCommand<string>(\n INSERT_TWEET_COMMAND,\n (payload) => {\n const tweetNode = $createTweetNode(payload)\n $insertNodeToNearestRoot(tweetNode)\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $insertNodeToNearestRoot } from \"@lexical/utils\"\nimport { COMMAND_PRIORITY_EDITOR, createCommand, LexicalCommand } from \"lexical\"\n\nimport {\n $createYouTubeNode,\n YouTubeNode,\n} from \"../../nodes/embeds/youtube-node\"\n\nexport type InsertYouTubePayload =\n | string\n | { id: string; width?: number; height?: number; maxWidth?: number; fullWidth?: boolean }\n\nexport const INSERT_YOUTUBE_COMMAND: LexicalCommand<InsertYouTubePayload> =\n createCommand(\"INSERT_YOUTUBE_COMMAND\")\n\nexport function YouTubePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([YouTubeNode])) {\n throw new Error(\"YouTubePlugin: YouTubeNode not registered on editor\")\n }\n\n return editor.registerCommand<InsertYouTubePayload>(\n INSERT_YOUTUBE_COMMAND,\n (payload) => {\n const rootElement = editor.getRootElement()\n const fallbackWidth =\n rootElement?.getBoundingClientRect().width ?? 640\n const resolvedMaxWidth =\n fallbackWidth > 0 ? Math.round(fallbackWidth) : 640\n const clampToEditorWidth = (value?: number) => {\n if (typeof value !== \"number\") {\n return value\n }\n return Math.min(value, resolvedMaxWidth)\n }\n const normalizedPayload =\n typeof payload === \"string\"\n ? {\n id: payload,\n width: undefined,\n height: undefined,\n maxWidth: resolvedMaxWidth,\n fullWidth: false,\n }\n : {\n id: payload.id,\n width: clampToEditorWidth(payload.width),\n height: payload.height,\n maxWidth:\n payload.maxWidth !== undefined\n ? clampToEditorWidth(payload.maxWidth)\n : resolvedMaxWidth,\n fullWidth: payload.fullWidth ?? false,\n }\n const youTubeNode = $createYouTubeNode(\n normalizedPayload.id,\n normalizedPayload.width,\n normalizedPayload.height,\n normalizedPayload.maxWidth,\n normalizedPayload.fullWidth\n )\n $insertNodeToNearestRoot(youTubeNode)\n\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useMemo, useState } from \"react\"\nimport {\n AutoEmbedOption,\n EmbedConfig,\n EmbedMatchResult,\n LexicalAutoEmbedPlugin,\n URL_MATCHER,\n} from \"@lexical/react/LexicalAutoEmbedPlugin\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport type { LexicalEditor } from \"lexical\"\nimport { TwitterIcon, YoutubeIcon } from \"lucide-react\"\n\nimport { useEditorModal } from \"../../editor-hooks/use-modal\"\nimport { INSERT_TWEET_COMMAND } from \"./twitter-plugin\"\nimport { INSERT_YOUTUBE_COMMAND } from \"./youtube-plugin\"\nimport { Button } from \"../../ui/button\"\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"../../ui/command\"\nimport { DialogFooter } from \"../../ui/dialog\"\nimport { Input } from \"../../ui/input\"\nimport {\n Popover,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n} from \"../../ui/popover\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport interface CustomEmbedConfig extends EmbedConfig {\n // Human readable name of the embeded content e.g. Tweet or Google Map.\n contentName: string\n\n // Icon for display.\n icon?: JSX.Element\n\n // An example of a matching url https://twitter.com/jack/status/20\n exampleUrl: string\n\n // For extra searching.\n keywords: Array<string>\n\n // Embed a Project.\n description?: string\n}\n\nexport const YoutubeEmbedConfig: CustomEmbedConfig = {\n contentName: \"Youtube Video\",\n\n exampleUrl: \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n\n // Icon for display.\n icon: <IconSize size=\"sm\"><YoutubeIcon /></IconSize>,\n\n insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n editor.dispatchCommand(INSERT_YOUTUBE_COMMAND, result.id)\n },\n\n keywords: [\"youtube\", \"video\"],\n\n // Determine if a given URL is a match and return url data.\n parseUrl: async (url: string) => {\n const match =\n /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/.exec(url)\n\n const id = match && match[2] && match[2].length === 11 ? match[2] : null\n\n if (id != null) {\n return {\n id,\n url,\n }\n }\n\n return null\n },\n\n type: \"youtube-video\",\n}\n\nexport const TwitterEmbedConfig: CustomEmbedConfig = {\n // e.g. Tweet or Google Map.\n contentName: \"Tweet\",\n\n exampleUrl: \"https://twitter.com/jack/status/20\",\n\n // Icon for display.\n icon: <IconSize size=\"sm\"><TwitterIcon /></IconSize>,\n\n // Create the Lexical embed node from the url data.\n insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n editor.dispatchCommand(INSERT_TWEET_COMMAND, result.id)\n },\n\n // For extra searching.\n keywords: [\"tweet\", \"twitter\"],\n\n // Determine if a given URL is a match and return url data.\n parseUrl: (text: string) => {\n const match =\n /^https:\\/\\/(twitter|x)\\.com\\/(#!\\/)?(\\w+)\\/status(es)*\\/(\\d+)/.exec(text)\n\n if (match != null && match[5]) {\n return {\n id: match[5],\n url: text,\n }\n }\n\n return null\n },\n\n type: \"tweet\",\n}\n\nexport const EmbedConfigs = [TwitterEmbedConfig, YoutubeEmbedConfig]\n\nconst debounce = (callback: (text: string) => void, delay: number) => {\n let timeoutId: number\n return (text: string) => {\n window.clearTimeout(timeoutId)\n timeoutId = window.setTimeout(() => {\n callback(text)\n }, delay)\n }\n}\n\n// Dialog content component that doesn't depend on context\nfunction AutoEmbedDialogContent({\n embedConfig,\n onClose,\n editor,\n}: {\n embedConfig: CustomEmbedConfig\n onClose: () => void\n editor: LexicalEditor\n}): JSX.Element {\n const [text, setText] = useState(\"\")\n const [embedResult, setEmbedResult] = useState<EmbedMatchResult | null>(null)\n\n const validateText = useMemo(\n () =>\n debounce((inputText: string) => {\n const urlMatch = URL_MATCHER.exec(inputText)\n if (embedConfig != null && inputText != null && urlMatch != null) {\n Promise.resolve(embedConfig.parseUrl(inputText)).then(\n (parseResult) => {\n setEmbedResult(parseResult)\n }\n )\n } else if (embedResult != null) {\n setEmbedResult(null)\n }\n }, 200),\n [embedConfig, embedResult]\n )\n\n const onClick = () => {\n if (embedResult != null) {\n embedConfig.insertNode(editor, embedResult)\n onClose()\n }\n }\n\n return (\n <div className=\"editor-flex-col-gap-4\">\n <Input\n type=\"text\"\n placeholder={embedConfig.exampleUrl}\n value={text}\n data-test-id={`${embedConfig.type}-embed-modal-url`}\n onChange={(e) => {\n const { value } = e.target\n setText(value)\n validateText(value)\n }}\n />\n <DialogFooter>\n <Button\n disabled={!embedResult}\n onClick={onClick}\n data-test-id={`${embedConfig.type}-embed-modal-submit-btn`}\n >\n Embed\n </Button>\n </DialogFooter>\n </div>\n )\n}\n\n// Wrapper that uses context for AutoEmbedPlugin\nexport function AutoEmbedDialog({\n embedConfig,\n onClose,\n editor,\n}: {\n embedConfig: CustomEmbedConfig\n onClose: () => void\n editor?: LexicalEditor\n}): JSX.Element {\n const [editorFromContext] = useLexicalComposerContext()\n const activeEditor = editor ?? editorFromContext\n \n return (\n <AutoEmbedDialogContent \n embedConfig={embedConfig} \n onClose={onClose} \n editor={activeEditor}\n />\n )\n}\n\n// Standalone version that doesn't use context (for toolbar usage)\nexport function AutoEmbedDialogStandalone({\n embedConfig,\n onClose,\n editor,\n}: {\n embedConfig: CustomEmbedConfig\n onClose: () => void\n editor: LexicalEditor\n}): JSX.Element {\n return (\n <AutoEmbedDialogContent \n embedConfig={embedConfig} \n onClose={onClose} \n editor={editor}\n />\n )\n}\n\nexport function AutoEmbedPlugin(): JSX.Element {\n const [modal, showModal] = useEditorModal()\n\n const openEmbedModal = (embedConfig: CustomEmbedConfig) => {\n showModal(`Embed ${embedConfig.contentName}`, (onClose) => (\n <AutoEmbedDialog embedConfig={embedConfig} onClose={onClose} />\n ))\n }\n\n const getMenuOptions = (\n activeEmbedConfig: CustomEmbedConfig,\n embedFn: () => void,\n dismissFn: () => void\n ) => {\n return [\n new AutoEmbedOption(\"Dismiss\", {\n onSelect: dismissFn,\n }),\n new AutoEmbedOption(`Embed ${activeEmbedConfig.contentName}`, {\n onSelect: embedFn,\n }),\n ]\n }\n\n return (\n <>\n {modal}\n <LexicalAutoEmbedPlugin<CustomEmbedConfig>\n embedConfigs={EmbedConfigs}\n onOpenEmbedModalForConfig={openEmbedModal}\n getMenuOptions={getMenuOptions}\n menuRenderFn={(\n anchorElementRef,\n {\n selectedIndex,\n options,\n selectOptionAndCleanUp,\n setHighlightedIndex,\n }\n ) => {\n void selectedIndex\n void setHighlightedIndex\n return anchorElementRef.current ? (\n <Popover open={true}>\n <PopoverPortal container={anchorElementRef.current}>\n <div className=\"editor-auto-embed-wrapper\">\n <PopoverTrigger>\n <span className=\"sr-only\">Open Menu</span>\n </PopoverTrigger>\n <PopoverContent\n className=\"editor-auto-embed-menu\"\n align=\"start\"\n >\n <Command>\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option)\n }}\n className=\"editor-flex-row-center\"\n >\n {option.title}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </div>\n </PopoverPortal>\n </Popover>\n ) : null\n }}\n />\n </>\n )\n}\n","const emojiList = [\n {\n description: \"grinning face\",\n emoji: \"😀\",\n category: \"Smileys & Emotion\",\n aliases: [\"grinning\"],\n tags: [\"smile\", \"happy\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😃\",\n description: \"grinning face with big eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"smiley\"],\n tags: [\"happy\", \"joy\", \"haha\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😄\",\n description: \"grinning face with smiling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"smile\"],\n tags: [\"happy\", \"joy\", \"laugh\", \"pleased\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😁\",\n description: \"beaming face with smiling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"grin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😆\",\n description: \"grinning squinting face\",\n category: \"Smileys & Emotion\",\n aliases: [\"laughing\", \"satisfied\"],\n tags: [\"happy\", \"haha\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😅\",\n description: \"grinning face with sweat\",\n category: \"Smileys & Emotion\",\n aliases: [\"sweat_smile\"],\n tags: [\"hot\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤣\",\n description: \"rolling on the floor laughing\",\n category: \"Smileys & Emotion\",\n aliases: [\"rofl\"],\n tags: [\"lol\", \"laughing\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"😂\",\n description: \"face with tears of joy\",\n category: \"Smileys & Emotion\",\n aliases: [\"joy\"],\n tags: [\"tears\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙂\",\n description: \"slightly smiling face\",\n category: \"Smileys & Emotion\",\n aliases: [\"slightly_smiling_face\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🙃\",\n description: \"upside-down face\",\n category: \"Smileys & Emotion\",\n aliases: [\"upside_down_face\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"😉\",\n description: \"winking face\",\n category: \"Smileys & Emotion\",\n aliases: [\"wink\"],\n tags: [\"flirt\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😊\",\n description: \"smiling face with smiling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"blush\"],\n tags: [\"proud\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😇\",\n description: \"smiling face with halo\",\n category: \"Smileys & Emotion\",\n aliases: [\"innocent\"],\n tags: [\"angel\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥰\",\n description: \"smiling face with hearts\",\n category: \"Smileys & Emotion\",\n aliases: [\"smiling_face_with_three_hearts\"],\n tags: [\"love\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😍\",\n description: \"smiling face with heart-eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"heart_eyes\"],\n tags: [\"love\", \"crush\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤩\",\n description: \"star-struck\",\n category: \"Smileys & Emotion\",\n aliases: [\"star_struck\"],\n tags: [\"eyes\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😘\",\n description: \"face blowing a kiss\",\n category: \"Smileys & Emotion\",\n aliases: [\"kissing_heart\"],\n tags: [\"flirt\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😗\",\n description: \"kissing face\",\n category: \"Smileys & Emotion\",\n aliases: [\"kissing\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☺️\",\n description: \"smiling face\",\n category: \"Smileys & Emotion\",\n aliases: [\"relaxed\"],\n tags: [\"blush\", \"pleased\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😚\",\n description: \"kissing face with closed eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"kissing_closed_eyes\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😙\",\n description: \"kissing face with smiling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"kissing_smiling_eyes\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥲\",\n description: \"smiling face with tear\",\n category: \"Smileys & Emotion\",\n aliases: [\"smiling_face_with_tear\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"😋\",\n description: \"face savoring food\",\n category: \"Smileys & Emotion\",\n aliases: [\"yum\"],\n tags: [\"tongue\", \"lick\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😛\",\n description: \"face with tongue\",\n category: \"Smileys & Emotion\",\n aliases: [\"stuck_out_tongue\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😜\",\n description: \"winking face with tongue\",\n category: \"Smileys & Emotion\",\n aliases: [\"stuck_out_tongue_winking_eye\"],\n tags: [\"prank\", \"silly\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤪\",\n description: \"zany face\",\n category: \"Smileys & Emotion\",\n aliases: [\"zany_face\"],\n tags: [\"goofy\", \"wacky\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😝\",\n description: \"squinting face with tongue\",\n category: \"Smileys & Emotion\",\n aliases: [\"stuck_out_tongue_closed_eyes\"],\n tags: [\"prank\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤑\",\n description: \"money-mouth face\",\n category: \"Smileys & Emotion\",\n aliases: [\"money_mouth_face\"],\n tags: [\"rich\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤗\",\n description: \"hugging face\",\n category: \"Smileys & Emotion\",\n aliases: [\"hugs\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤭\",\n description: \"face with hand over mouth\",\n category: \"Smileys & Emotion\",\n aliases: [\"hand_over_mouth\"],\n tags: [\"quiet\", \"whoops\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🤫\",\n description: \"shushing face\",\n category: \"Smileys & Emotion\",\n aliases: [\"shushing_face\"],\n tags: [\"silence\", \"quiet\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🤔\",\n description: \"thinking face\",\n category: \"Smileys & Emotion\",\n aliases: [\"thinking\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤐\",\n description: \"zipper-mouth face\",\n category: \"Smileys & Emotion\",\n aliases: [\"zipper_mouth_face\"],\n tags: [\"silence\", \"hush\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤨\",\n description: \"face with raised eyebrow\",\n category: \"Smileys & Emotion\",\n aliases: [\"raised_eyebrow\"],\n tags: [\"suspicious\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😐\",\n description: \"neutral face\",\n category: \"Smileys & Emotion\",\n aliases: [\"neutral_face\"],\n tags: [\"meh\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😑\",\n description: \"expressionless face\",\n category: \"Smileys & Emotion\",\n aliases: [\"expressionless\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😶\",\n description: \"face without mouth\",\n category: \"Smileys & Emotion\",\n aliases: [\"no_mouth\"],\n tags: [\"mute\", \"silence\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😶🌫️\",\n description: \"face in clouds\",\n category: \"Smileys & Emotion\",\n aliases: [\"face_in_clouds\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"😏\",\n description: \"smirking face\",\n category: \"Smileys & Emotion\",\n aliases: [\"smirk\"],\n tags: [\"smug\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😒\",\n description: \"unamused face\",\n category: \"Smileys & Emotion\",\n aliases: [\"unamused\"],\n tags: [\"meh\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙄\",\n description: \"face with rolling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"roll_eyes\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"😬\",\n description: \"grimacing face\",\n category: \"Smileys & Emotion\",\n aliases: [\"grimacing\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😮💨\",\n description: \"face exhaling\",\n category: \"Smileys & Emotion\",\n aliases: [\"face_exhaling\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🤥\",\n description: \"lying face\",\n category: \"Smileys & Emotion\",\n aliases: [\"lying_face\"],\n tags: [\"liar\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"😌\",\n description: \"relieved face\",\n category: \"Smileys & Emotion\",\n aliases: [\"relieved\"],\n tags: [\"whew\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😔\",\n description: \"pensive face\",\n category: \"Smileys & Emotion\",\n aliases: [\"pensive\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😪\",\n description: \"sleepy face\",\n category: \"Smileys & Emotion\",\n aliases: [\"sleepy\"],\n tags: [\"tired\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤤\",\n description: \"drooling face\",\n category: \"Smileys & Emotion\",\n aliases: [\"drooling_face\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"😴\",\n description: \"sleeping face\",\n category: \"Smileys & Emotion\",\n aliases: [\"sleeping\"],\n tags: [\"zzz\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😷\",\n description: \"face with medical mask\",\n category: \"Smileys & Emotion\",\n aliases: [\"mask\"],\n tags: [\"sick\", \"ill\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤒\",\n description: \"face with thermometer\",\n category: \"Smileys & Emotion\",\n aliases: [\"face_with_thermometer\"],\n tags: [\"sick\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤕\",\n description: \"face with head-bandage\",\n category: \"Smileys & Emotion\",\n aliases: [\"face_with_head_bandage\"],\n tags: [\"hurt\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🤢\",\n description: \"nauseated face\",\n category: \"Smileys & Emotion\",\n aliases: [\"nauseated_face\"],\n tags: [\"sick\", \"barf\", \"disgusted\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🤮\",\n description: \"face vomiting\",\n category: \"Smileys & Emotion\",\n aliases: [\"vomiting_face\"],\n tags: [\"barf\", \"sick\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🤧\",\n description: \"sneezing face\",\n category: \"Smileys & Emotion\",\n aliases: [\"sneezing_face\"],\n tags: [\"achoo\", \"sick\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥵\",\n description: \"hot face\",\n category: \"Smileys & Emotion\",\n aliases: [\"hot_face\"],\n tags: [\"heat\", \"sweating\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥶\",\n description: \"cold face\",\n category: \"Smileys & Emotion\",\n aliases: [\"cold_face\"],\n tags: [\"freezing\", \"ice\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥴\",\n description: \"woozy face\",\n category: \"Smileys & Emotion\",\n aliases: [\"woozy_face\"],\n tags: [\"groggy\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😵\",\n description: \"knocked-out face\",\n category: \"Smileys & Emotion\",\n aliases: [\"dizzy_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😵💫\",\n description: \"face with spiral eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"face_with_spiral_eyes\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🤯\",\n description: \"exploding head\",\n category: \"Smileys & Emotion\",\n aliases: [\"exploding_head\"],\n tags: [\"mind\", \"blown\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🤠\",\n description: \"cowboy hat face\",\n category: \"Smileys & Emotion\",\n aliases: [\"cowboy_hat_face\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥳\",\n description: \"partying face\",\n category: \"Smileys & Emotion\",\n aliases: [\"partying_face\"],\n tags: [\"celebration\", \"birthday\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥸\",\n description: \"disguised face\",\n category: \"Smileys & Emotion\",\n aliases: [\"disguised_face\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"😎\",\n description: \"smiling face with sunglasses\",\n category: \"Smileys & Emotion\",\n aliases: [\"sunglasses\"],\n tags: [\"cool\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤓\",\n description: \"nerd face\",\n category: \"Smileys & Emotion\",\n aliases: [\"nerd_face\"],\n tags: [\"geek\", \"glasses\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🧐\",\n description: \"face with monocle\",\n category: \"Smileys & Emotion\",\n aliases: [\"monocle_face\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😕\",\n description: \"confused face\",\n category: \"Smileys & Emotion\",\n aliases: [\"confused\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😟\",\n description: \"worried face\",\n category: \"Smileys & Emotion\",\n aliases: [\"worried\"],\n tags: [\"nervous\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙁\",\n description: \"slightly frowning face\",\n category: \"Smileys & Emotion\",\n aliases: [\"slightly_frowning_face\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☹️\",\n description: \"frowning face\",\n category: \"Smileys & Emotion\",\n aliases: [\"frowning_face\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"😮\",\n description: \"face with open mouth\",\n category: \"Smileys & Emotion\",\n aliases: [\"open_mouth\"],\n tags: [\"surprise\", \"impressed\", \"wow\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😯\",\n description: \"hushed face\",\n category: \"Smileys & Emotion\",\n aliases: [\"hushed\"],\n tags: [\"silence\", \"speechless\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😲\",\n description: \"astonished face\",\n category: \"Smileys & Emotion\",\n aliases: [\"astonished\"],\n tags: [\"amazed\", \"gasp\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😳\",\n description: \"flushed face\",\n category: \"Smileys & Emotion\",\n aliases: [\"flushed\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥺\",\n description: \"pleading face\",\n category: \"Smileys & Emotion\",\n aliases: [\"pleading_face\"],\n tags: [\"puppy\", \"eyes\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😦\",\n description: \"frowning face with open mouth\",\n category: \"Smileys & Emotion\",\n aliases: [\"frowning\"],\n tags: [],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😧\",\n description: \"anguished face\",\n category: \"Smileys & Emotion\",\n aliases: [\"anguished\"],\n tags: [\"stunned\"],\n unicode_version: \"6.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😨\",\n description: \"fearful face\",\n category: \"Smileys & Emotion\",\n aliases: [\"fearful\"],\n tags: [\"scared\", \"shocked\", \"oops\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😰\",\n description: \"anxious face with sweat\",\n category: \"Smileys & Emotion\",\n aliases: [\"cold_sweat\"],\n tags: [\"nervous\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😥\",\n description: \"sad but relieved face\",\n category: \"Smileys & Emotion\",\n aliases: [\"disappointed_relieved\"],\n tags: [\"phew\", \"sweat\", \"nervous\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😢\",\n description: \"crying face\",\n category: \"Smileys & Emotion\",\n aliases: [\"cry\"],\n tags: [\"sad\", \"tear\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😭\",\n description: \"loudly crying face\",\n category: \"Smileys & Emotion\",\n aliases: [\"sob\"],\n tags: [\"sad\", \"cry\", \"bawling\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😱\",\n description: \"face screaming in fear\",\n category: \"Smileys & Emotion\",\n aliases: [\"scream\"],\n tags: [\"horror\", \"shocked\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😖\",\n description: \"confounded face\",\n category: \"Smileys & Emotion\",\n aliases: [\"confounded\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😣\",\n description: \"persevering face\",\n category: \"Smileys & Emotion\",\n aliases: [\"persevere\"],\n tags: [\"struggling\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😞\",\n description: \"disappointed face\",\n category: \"Smileys & Emotion\",\n aliases: [\"disappointed\"],\n tags: [\"sad\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😓\",\n description: \"downcast face with sweat\",\n category: \"Smileys & Emotion\",\n aliases: [\"sweat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😩\",\n description: \"weary face\",\n category: \"Smileys & Emotion\",\n aliases: [\"weary\"],\n tags: [\"tired\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😫\",\n description: \"tired face\",\n category: \"Smileys & Emotion\",\n aliases: [\"tired_face\"],\n tags: [\"upset\", \"whine\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥱\",\n description: \"yawning face\",\n category: \"Smileys & Emotion\",\n aliases: [\"yawning_face\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"😤\",\n description: \"face with steam from nose\",\n category: \"Smileys & Emotion\",\n aliases: [\"triumph\"],\n tags: [\"smug\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😡\",\n description: \"pouting face\",\n category: \"Smileys & Emotion\",\n aliases: [\"rage\", \"pout\"],\n tags: [\"angry\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😠\",\n description: \"angry face\",\n category: \"Smileys & Emotion\",\n aliases: [\"angry\"],\n tags: [\"mad\", \"annoyed\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤬\",\n description: \"face with symbols on mouth\",\n category: \"Smileys & Emotion\",\n aliases: [\"cursing_face\"],\n tags: [\"foul\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"😈\",\n description: \"smiling face with horns\",\n category: \"Smileys & Emotion\",\n aliases: [\"smiling_imp\"],\n tags: [\"devil\", \"evil\", \"horns\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👿\",\n description: \"angry face with horns\",\n category: \"Smileys & Emotion\",\n aliases: [\"imp\"],\n tags: [\"angry\", \"devil\", \"evil\", \"horns\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💀\",\n description: \"skull\",\n category: \"Smileys & Emotion\",\n aliases: [\"skull\"],\n tags: [\"dead\", \"danger\", \"poison\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☠️\",\n description: \"skull and crossbones\",\n category: \"Smileys & Emotion\",\n aliases: [\"skull_and_crossbones\"],\n tags: [\"danger\", \"pirate\"],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💩\",\n description: \"pile of poo\",\n category: \"Smileys & Emotion\",\n aliases: [\"hankey\", \"poop\", \"shit\"],\n tags: [\"crap\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤡\",\n description: \"clown face\",\n category: \"Smileys & Emotion\",\n aliases: [\"clown_face\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"👹\",\n description: \"ogre\",\n category: \"Smileys & Emotion\",\n aliases: [\"japanese_ogre\"],\n tags: [\"monster\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👺\",\n description: \"goblin\",\n category: \"Smileys & Emotion\",\n aliases: [\"japanese_goblin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👻\",\n description: \"ghost\",\n category: \"Smileys & Emotion\",\n aliases: [\"ghost\"],\n tags: [\"halloween\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👽\",\n description: \"alien\",\n category: \"Smileys & Emotion\",\n aliases: [\"alien\"],\n tags: [\"ufo\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👾\",\n description: \"alien monster\",\n category: \"Smileys & Emotion\",\n aliases: [\"space_invader\"],\n tags: [\"game\", \"retro\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤖\",\n description: \"robot\",\n category: \"Smileys & Emotion\",\n aliases: [\"robot\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"😺\",\n description: \"grinning cat\",\n category: \"Smileys & Emotion\",\n aliases: [\"smiley_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😸\",\n description: \"grinning cat with smiling eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"smile_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😹\",\n description: \"cat with tears of joy\",\n category: \"Smileys & Emotion\",\n aliases: [\"joy_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😻\",\n description: \"smiling cat with heart-eyes\",\n category: \"Smileys & Emotion\",\n aliases: [\"heart_eyes_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😼\",\n description: \"cat with wry smile\",\n category: \"Smileys & Emotion\",\n aliases: [\"smirk_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😽\",\n description: \"kissing cat\",\n category: \"Smileys & Emotion\",\n aliases: [\"kissing_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙀\",\n description: \"weary cat\",\n category: \"Smileys & Emotion\",\n aliases: [\"scream_cat\"],\n tags: [\"horror\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😿\",\n description: \"crying cat\",\n category: \"Smileys & Emotion\",\n aliases: [\"crying_cat_face\"],\n tags: [\"sad\", \"tear\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"😾\",\n description: \"pouting cat\",\n category: \"Smileys & Emotion\",\n aliases: [\"pouting_cat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙈\",\n description: \"see-no-evil monkey\",\n category: \"Smileys & Emotion\",\n aliases: [\"see_no_evil\"],\n tags: [\"monkey\", \"blind\", \"ignore\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙉\",\n description: \"hear-no-evil monkey\",\n category: \"Smileys & Emotion\",\n aliases: [\"hear_no_evil\"],\n tags: [\"monkey\", \"deaf\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🙊\",\n description: \"speak-no-evil monkey\",\n category: \"Smileys & Emotion\",\n aliases: [\"speak_no_evil\"],\n tags: [\"monkey\", \"mute\", \"hush\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💋\",\n description: \"kiss mark\",\n category: \"Smileys & Emotion\",\n aliases: [\"kiss\"],\n tags: [\"lipstick\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💌\",\n description: \"love letter\",\n category: \"Smileys & Emotion\",\n aliases: [\"love_letter\"],\n tags: [\"email\", \"envelope\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💘\",\n description: \"heart with arrow\",\n category: \"Smileys & Emotion\",\n aliases: [\"cupid\"],\n tags: [\"love\", \"heart\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💝\",\n description: \"heart with ribbon\",\n category: \"Smileys & Emotion\",\n aliases: [\"gift_heart\"],\n tags: [\"chocolates\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💖\",\n description: \"sparkling heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"sparkling_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💗\",\n description: \"growing heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"heartpulse\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💓\",\n description: \"beating heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"heartbeat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💞\",\n description: \"revolving hearts\",\n category: \"Smileys & Emotion\",\n aliases: [\"revolving_hearts\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💕\",\n description: \"two hearts\",\n category: \"Smileys & Emotion\",\n aliases: [\"two_hearts\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💟\",\n description: \"heart decoration\",\n category: \"Smileys & Emotion\",\n aliases: [\"heart_decoration\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❣️\",\n description: \"heart exclamation\",\n category: \"Smileys & Emotion\",\n aliases: [\"heavy_heart_exclamation\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💔\",\n description: \"broken heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"broken_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❤️🔥\",\n description: \"heart on fire\",\n category: \"Smileys & Emotion\",\n aliases: [\"heart_on_fire\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"❤️🩹\",\n description: \"mending heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"mending_heart\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"❤️\",\n description: \"red heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"heart\"],\n tags: [\"love\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧡\",\n description: \"orange heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"orange_heart\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"💛\",\n description: \"yellow heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"yellow_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💚\",\n description: \"green heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"green_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💙\",\n description: \"blue heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"blue_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💜\",\n description: \"purple heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"purple_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤎\",\n description: \"brown heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"brown_heart\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🖤\",\n description: \"black heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"black_heart\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🤍\",\n description: \"white heart\",\n category: \"Smileys & Emotion\",\n aliases: [\"white_heart\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"💯\",\n description: \"hundred points\",\n category: \"Smileys & Emotion\",\n aliases: [\"100\"],\n tags: [\"score\", \"perfect\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💢\",\n description: \"anger symbol\",\n category: \"Smileys & Emotion\",\n aliases: [\"anger\"],\n tags: [\"angry\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💥\",\n description: \"collision\",\n category: \"Smileys & Emotion\",\n aliases: [\"boom\", \"collision\"],\n tags: [\"explode\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💫\",\n description: \"dizzy\",\n category: \"Smileys & Emotion\",\n aliases: [\"dizzy\"],\n tags: [\"star\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💦\",\n description: \"sweat droplets\",\n category: \"Smileys & Emotion\",\n aliases: [\"sweat_drops\"],\n tags: [\"water\", \"workout\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💨\",\n description: \"dashing away\",\n category: \"Smileys & Emotion\",\n aliases: [\"dash\"],\n tags: [\"wind\", \"blow\", \"fast\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕳️\",\n description: \"hole\",\n category: \"Smileys & Emotion\",\n aliases: [\"hole\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💣\",\n description: \"bomb\",\n category: \"Smileys & Emotion\",\n aliases: [\"bomb\"],\n tags: [\"boom\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💬\",\n description: \"speech balloon\",\n category: \"Smileys & Emotion\",\n aliases: [\"speech_balloon\"],\n tags: [\"comment\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👁️🗨️\",\n description: \"eye in speech bubble\",\n category: \"Smileys & Emotion\",\n aliases: [\"eye_speech_bubble\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🗨️\",\n description: \"left speech bubble\",\n category: \"Smileys & Emotion\",\n aliases: [\"left_speech_bubble\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🗯️\",\n description: \"right anger bubble\",\n category: \"Smileys & Emotion\",\n aliases: [\"right_anger_bubble\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💭\",\n description: \"thought balloon\",\n category: \"Smileys & Emotion\",\n aliases: [\"thought_balloon\"],\n tags: [\"thinking\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💤\",\n description: \"zzz\",\n category: \"Smileys & Emotion\",\n aliases: [\"zzz\"],\n tags: [\"sleeping\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👋\",\n description: \"waving hand\",\n category: \"People & Body\",\n aliases: [\"wave\"],\n tags: [\"goodbye\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤚\",\n description: \"raised back of hand\",\n category: \"People & Body\",\n aliases: [\"raised_back_of_hand\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🖐️\",\n description: \"hand with fingers splayed\",\n category: \"People & Body\",\n aliases: [\"raised_hand_with_fingers_splayed\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"✋\",\n description: \"raised hand\",\n category: \"People & Body\",\n aliases: [\"hand\", \"raised_hand\"],\n tags: [\"highfive\", \"stop\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🖖\",\n description: \"vulcan salute\",\n category: \"People & Body\",\n aliases: [\"vulcan_salute\"],\n tags: [\"prosper\", \"spock\"],\n unicode_version: \"7.0\",\n ios_version: \"8.3\",\n skin_tones: true,\n },\n {\n emoji: \"👌\",\n description: \"OK hand\",\n category: \"People & Body\",\n aliases: [\"ok_hand\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤌\",\n description: \"pinched fingers\",\n category: \"People & Body\",\n aliases: [\"pinched_fingers\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤏\",\n description: \"pinching hand\",\n category: \"People & Body\",\n aliases: [\"pinching_hand\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"✌️\",\n description: \"victory hand\",\n category: \"People & Body\",\n aliases: [\"v\"],\n tags: [\"victory\", \"peace\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤞\",\n description: \"crossed fingers\",\n category: \"People & Body\",\n aliases: [\"crossed_fingers\"],\n tags: [\"luck\", \"hopeful\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤟\",\n description: \"love-you gesture\",\n category: \"People & Body\",\n aliases: [\"love_you_gesture\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤘\",\n description: \"sign of the horns\",\n category: \"People & Body\",\n aliases: [\"metal\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤙\",\n description: \"call me hand\",\n category: \"People & Body\",\n aliases: [\"call_me_hand\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👈\",\n description: \"backhand index pointing left\",\n category: \"People & Body\",\n aliases: [\"point_left\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👉\",\n description: \"backhand index pointing right\",\n category: \"People & Body\",\n aliases: [\"point_right\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👆\",\n description: \"backhand index pointing up\",\n category: \"People & Body\",\n aliases: [\"point_up_2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🖕\",\n description: \"middle finger\",\n category: \"People & Body\",\n aliases: [\"middle_finger\", \"fu\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"👇\",\n description: \"backhand index pointing down\",\n category: \"People & Body\",\n aliases: [\"point_down\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"☝️\",\n description: \"index pointing up\",\n category: \"People & Body\",\n aliases: [\"point_up\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👍\",\n description: \"thumbs up\",\n category: \"People & Body\",\n aliases: [\"+1\", \"thumbsup\"],\n tags: [\"approve\", \"ok\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👎\",\n description: \"thumbs down\",\n category: \"People & Body\",\n aliases: [\"-1\", \"thumbsdown\"],\n tags: [\"disapprove\", \"bury\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"✊\",\n description: \"raised fist\",\n category: \"People & Body\",\n aliases: [\"fist_raised\", \"fist\"],\n tags: [\"power\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👊\",\n description: \"oncoming fist\",\n category: \"People & Body\",\n aliases: [\"fist_oncoming\", \"facepunch\", \"punch\"],\n tags: [\"attack\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤛\",\n description: \"left-facing fist\",\n category: \"People & Body\",\n aliases: [\"fist_left\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤜\",\n description: \"right-facing fist\",\n category: \"People & Body\",\n aliases: [\"fist_right\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👏\",\n description: \"clapping hands\",\n category: \"People & Body\",\n aliases: [\"clap\"],\n tags: [\"praise\", \"applause\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙌\",\n description: \"raising hands\",\n category: \"People & Body\",\n aliases: [\"raised_hands\"],\n tags: [\"hooray\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👐\",\n description: \"open hands\",\n category: \"People & Body\",\n aliases: [\"open_hands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤲\",\n description: \"palms up together\",\n category: \"People & Body\",\n aliases: [\"palms_up_together\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤝\",\n description: \"handshake\",\n category: \"People & Body\",\n aliases: [\"handshake\"],\n tags: [\"deal\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🙏\",\n description: \"folded hands\",\n category: \"People & Body\",\n aliases: [\"pray\"],\n tags: [\"please\", \"hope\", \"wish\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"✍️\",\n description: \"writing hand\",\n category: \"People & Body\",\n aliases: [\"writing_hand\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"💅\",\n description: \"nail polish\",\n category: \"People & Body\",\n aliases: [\"nail_care\"],\n tags: [\"beauty\", \"manicure\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤳\",\n description: \"selfie\",\n category: \"People & Body\",\n aliases: [\"selfie\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"💪\",\n description: \"flexed biceps\",\n category: \"People & Body\",\n aliases: [\"muscle\"],\n tags: [\"flex\", \"bicep\", \"strong\", \"workout\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🦾\",\n description: \"mechanical arm\",\n category: \"People & Body\",\n aliases: [\"mechanical_arm\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦿\",\n description: \"mechanical leg\",\n category: \"People & Body\",\n aliases: [\"mechanical_leg\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦵\",\n description: \"leg\",\n category: \"People & Body\",\n aliases: [\"leg\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦶\",\n description: \"foot\",\n category: \"People & Body\",\n aliases: [\"foot\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👂\",\n description: \"ear\",\n category: \"People & Body\",\n aliases: [\"ear\"],\n tags: [\"hear\", \"sound\", \"listen\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🦻\",\n description: \"ear with hearing aid\",\n category: \"People & Body\",\n aliases: [\"ear_with_hearing_aid\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"👃\",\n description: \"nose\",\n category: \"People & Body\",\n aliases: [\"nose\"],\n tags: [\"smell\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧠\",\n description: \"brain\",\n category: \"People & Body\",\n aliases: [\"brain\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🫀\",\n description: \"anatomical heart\",\n category: \"People & Body\",\n aliases: [\"anatomical_heart\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🫁\",\n description: \"lungs\",\n category: \"People & Body\",\n aliases: [\"lungs\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦷\",\n description: \"tooth\",\n category: \"People & Body\",\n aliases: [\"tooth\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦴\",\n description: \"bone\",\n category: \"People & Body\",\n aliases: [\"bone\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"👀\",\n description: \"eyes\",\n category: \"People & Body\",\n aliases: [\"eyes\"],\n tags: [\"look\", \"see\", \"watch\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👁️\",\n description: \"eye\",\n category: \"People & Body\",\n aliases: [\"eye\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"👅\",\n description: \"tongue\",\n category: \"People & Body\",\n aliases: [\"tongue\"],\n tags: [\"taste\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👄\",\n description: \"mouth\",\n category: \"People & Body\",\n aliases: [\"lips\"],\n tags: [\"kiss\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👶\",\n description: \"baby\",\n category: \"People & Body\",\n aliases: [\"baby\"],\n tags: [\"child\", \"newborn\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧒\",\n description: \"child\",\n category: \"People & Body\",\n aliases: [\"child\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👦\",\n description: \"boy\",\n category: \"People & Body\",\n aliases: [\"boy\"],\n tags: [\"child\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👧\",\n description: \"girl\",\n category: \"People & Body\",\n aliases: [\"girl\"],\n tags: [\"child\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧑\",\n description: \"person\",\n category: \"People & Body\",\n aliases: [\"adult\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👱\",\n description: \"person: blond hair\",\n category: \"People & Body\",\n aliases: [\"blond_haired_person\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👨\",\n description: \"man\",\n category: \"People & Body\",\n aliases: [\"man\"],\n tags: [\"mustache\", \"father\", \"dad\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧔\",\n description: \"person: beard\",\n category: \"People & Body\",\n aliases: [\"bearded_person\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧔♂️\",\n description: \"man: beard\",\n category: \"People & Body\",\n aliases: [\"man_beard\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧔♀️\",\n description: \"woman: beard\",\n category: \"People & Body\",\n aliases: [\"woman_beard\"],\n tags: [],\n unicode_version: \"13.1\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦰\",\n description: \"man: red hair\",\n category: \"People & Body\",\n aliases: [\"red_haired_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦱\",\n description: \"man: curly hair\",\n category: \"People & Body\",\n aliases: [\"curly_haired_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦳\",\n description: \"man: white hair\",\n category: \"People & Body\",\n aliases: [\"white_haired_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦲\",\n description: \"man: bald\",\n category: \"People & Body\",\n aliases: [\"bald_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👩\",\n description: \"woman\",\n category: \"People & Body\",\n aliases: [\"woman\"],\n tags: [\"girls\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦰\",\n description: \"woman: red hair\",\n category: \"People & Body\",\n aliases: [\"red_haired_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦰\",\n description: \"person: red hair\",\n category: \"People & Body\",\n aliases: [\"person_red_hair\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦱\",\n description: \"woman: curly hair\",\n category: \"People & Body\",\n aliases: [\"curly_haired_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦱\",\n description: \"person: curly hair\",\n category: \"People & Body\",\n aliases: [\"person_curly_hair\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦳\",\n description: \"woman: white hair\",\n category: \"People & Body\",\n aliases: [\"white_haired_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦳\",\n description: \"person: white hair\",\n category: \"People & Body\",\n aliases: [\"person_white_hair\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦲\",\n description: \"woman: bald\",\n category: \"People & Body\",\n aliases: [\"bald_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦲\",\n description: \"person: bald\",\n category: \"People & Body\",\n aliases: [\"person_bald\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👱♀️\",\n description: \"woman: blond hair\",\n category: \"People & Body\",\n aliases: [\"blond_haired_woman\", \"blonde_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"👱♂️\",\n description: \"man: blond hair\",\n category: \"People & Body\",\n aliases: [\"blond_haired_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧓\",\n description: \"older person\",\n category: \"People & Body\",\n aliases: [\"older_adult\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👴\",\n description: \"old man\",\n category: \"People & Body\",\n aliases: [\"older_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👵\",\n description: \"old woman\",\n category: \"People & Body\",\n aliases: [\"older_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙍\",\n description: \"person frowning\",\n category: \"People & Body\",\n aliases: [\"frowning_person\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙍♂️\",\n description: \"man frowning\",\n category: \"People & Body\",\n aliases: [\"frowning_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙍♀️\",\n description: \"woman frowning\",\n category: \"People & Body\",\n aliases: [\"frowning_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🙎\",\n description: \"person pouting\",\n category: \"People & Body\",\n aliases: [\"pouting_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙎♂️\",\n description: \"man pouting\",\n category: \"People & Body\",\n aliases: [\"pouting_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙎♀️\",\n description: \"woman pouting\",\n category: \"People & Body\",\n aliases: [\"pouting_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🙅\",\n description: \"person gesturing NO\",\n category: \"People & Body\",\n aliases: [\"no_good\"],\n tags: [\"stop\", \"halt\", \"denied\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙅♂️\",\n description: \"man gesturing NO\",\n category: \"People & Body\",\n aliases: [\"no_good_man\", \"ng_man\"],\n tags: [\"stop\", \"halt\", \"denied\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙅♀️\",\n description: \"woman gesturing NO\",\n category: \"People & Body\",\n aliases: [\"no_good_woman\", \"ng_woman\"],\n tags: [\"stop\", \"halt\", \"denied\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🙆\",\n description: \"person gesturing OK\",\n category: \"People & Body\",\n aliases: [\"ok_person\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙆♂️\",\n description: \"man gesturing OK\",\n category: \"People & Body\",\n aliases: [\"ok_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙆♀️\",\n description: \"woman gesturing OK\",\n category: \"People & Body\",\n aliases: [\"ok_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"💁\",\n description: \"person tipping hand\",\n category: \"People & Body\",\n aliases: [\"tipping_hand_person\", \"information_desk_person\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"💁♂️\",\n description: \"man tipping hand\",\n category: \"People & Body\",\n aliases: [\"tipping_hand_man\", \"sassy_man\"],\n tags: [\"information\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"💁♀️\",\n description: \"woman tipping hand\",\n category: \"People & Body\",\n aliases: [\"tipping_hand_woman\", \"sassy_woman\"],\n tags: [\"information\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🙋\",\n description: \"person raising hand\",\n category: \"People & Body\",\n aliases: [\"raising_hand\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙋♂️\",\n description: \"man raising hand\",\n category: \"People & Body\",\n aliases: [\"raising_hand_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙋♀️\",\n description: \"woman raising hand\",\n category: \"People & Body\",\n aliases: [\"raising_hand_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧏\",\n description: \"deaf person\",\n category: \"People & Body\",\n aliases: [\"deaf_person\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧏♂️\",\n description: \"deaf man\",\n category: \"People & Body\",\n aliases: [\"deaf_man\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧏♀️\",\n description: \"deaf woman\",\n category: \"People & Body\",\n aliases: [\"deaf_woman\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙇\",\n description: \"person bowing\",\n category: \"People & Body\",\n aliases: [\"bow\"],\n tags: [\"respect\", \"thanks\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🙇♂️\",\n description: \"man bowing\",\n category: \"People & Body\",\n aliases: [\"bowing_man\"],\n tags: [\"respect\", \"thanks\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🙇♀️\",\n description: \"woman bowing\",\n category: \"People & Body\",\n aliases: [\"bowing_woman\"],\n tags: [\"respect\", \"thanks\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤦\",\n description: \"person facepalming\",\n category: \"People & Body\",\n aliases: [\"facepalm\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤦♂️\",\n description: \"man facepalming\",\n category: \"People & Body\",\n aliases: [\"man_facepalming\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤦♀️\",\n description: \"woman facepalming\",\n category: \"People & Body\",\n aliases: [\"woman_facepalming\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤷\",\n description: \"person shrugging\",\n category: \"People & Body\",\n aliases: [\"shrug\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤷♂️\",\n description: \"man shrugging\",\n category: \"People & Body\",\n aliases: [\"man_shrugging\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤷♀️\",\n description: \"woman shrugging\",\n category: \"People & Body\",\n aliases: [\"woman_shrugging\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑⚕️\",\n description: \"health worker\",\n category: \"People & Body\",\n aliases: [\"health_worker\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨⚕️\",\n description: \"man health worker\",\n category: \"People & Body\",\n aliases: [\"man_health_worker\"],\n tags: [\"doctor\", \"nurse\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩⚕️\",\n description: \"woman health worker\",\n category: \"People & Body\",\n aliases: [\"woman_health_worker\"],\n tags: [\"doctor\", \"nurse\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🎓\",\n description: \"student\",\n category: \"People & Body\",\n aliases: [\"student\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🎓\",\n description: \"man student\",\n category: \"People & Body\",\n aliases: [\"man_student\"],\n tags: [\"graduation\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🎓\",\n description: \"woman student\",\n category: \"People & Body\",\n aliases: [\"woman_student\"],\n tags: [\"graduation\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🏫\",\n description: \"teacher\",\n category: \"People & Body\",\n aliases: [\"teacher\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🏫\",\n description: \"man teacher\",\n category: \"People & Body\",\n aliases: [\"man_teacher\"],\n tags: [\"school\", \"professor\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🏫\",\n description: \"woman teacher\",\n category: \"People & Body\",\n aliases: [\"woman_teacher\"],\n tags: [\"school\", \"professor\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑⚖️\",\n description: \"judge\",\n category: \"People & Body\",\n aliases: [\"judge\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨⚖️\",\n description: \"man judge\",\n category: \"People & Body\",\n aliases: [\"man_judge\"],\n tags: [\"justice\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩⚖️\",\n description: \"woman judge\",\n category: \"People & Body\",\n aliases: [\"woman_judge\"],\n tags: [\"justice\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🌾\",\n description: \"farmer\",\n category: \"People & Body\",\n aliases: [\"farmer\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🌾\",\n description: \"man farmer\",\n category: \"People & Body\",\n aliases: [\"man_farmer\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🌾\",\n description: \"woman farmer\",\n category: \"People & Body\",\n aliases: [\"woman_farmer\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🍳\",\n description: \"cook\",\n category: \"People & Body\",\n aliases: [\"cook\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🍳\",\n description: \"man cook\",\n category: \"People & Body\",\n aliases: [\"man_cook\"],\n tags: [\"chef\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🍳\",\n description: \"woman cook\",\n category: \"People & Body\",\n aliases: [\"woman_cook\"],\n tags: [\"chef\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🔧\",\n description: \"mechanic\",\n category: \"People & Body\",\n aliases: [\"mechanic\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🔧\",\n description: \"man mechanic\",\n category: \"People & Body\",\n aliases: [\"man_mechanic\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🔧\",\n description: \"woman mechanic\",\n category: \"People & Body\",\n aliases: [\"woman_mechanic\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🏭\",\n description: \"factory worker\",\n category: \"People & Body\",\n aliases: [\"factory_worker\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🏭\",\n description: \"man factory worker\",\n category: \"People & Body\",\n aliases: [\"man_factory_worker\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🏭\",\n description: \"woman factory worker\",\n category: \"People & Body\",\n aliases: [\"woman_factory_worker\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑💼\",\n description: \"office worker\",\n category: \"People & Body\",\n aliases: [\"office_worker\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨💼\",\n description: \"man office worker\",\n category: \"People & Body\",\n aliases: [\"man_office_worker\"],\n tags: [\"business\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩💼\",\n description: \"woman office worker\",\n category: \"People & Body\",\n aliases: [\"woman_office_worker\"],\n tags: [\"business\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🔬\",\n description: \"scientist\",\n category: \"People & Body\",\n aliases: [\"scientist\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🔬\",\n description: \"man scientist\",\n category: \"People & Body\",\n aliases: [\"man_scientist\"],\n tags: [\"research\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🔬\",\n description: \"woman scientist\",\n category: \"People & Body\",\n aliases: [\"woman_scientist\"],\n tags: [\"research\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑💻\",\n description: \"technologist\",\n category: \"People & Body\",\n aliases: [\"technologist\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨💻\",\n description: \"man technologist\",\n category: \"People & Body\",\n aliases: [\"man_technologist\"],\n tags: [\"coder\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩💻\",\n description: \"woman technologist\",\n category: \"People & Body\",\n aliases: [\"woman_technologist\"],\n tags: [\"coder\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🎤\",\n description: \"singer\",\n category: \"People & Body\",\n aliases: [\"singer\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🎤\",\n description: \"man singer\",\n category: \"People & Body\",\n aliases: [\"man_singer\"],\n tags: [\"rockstar\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🎤\",\n description: \"woman singer\",\n category: \"People & Body\",\n aliases: [\"woman_singer\"],\n tags: [\"rockstar\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🎨\",\n description: \"artist\",\n category: \"People & Body\",\n aliases: [\"artist\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🎨\",\n description: \"man artist\",\n category: \"People & Body\",\n aliases: [\"man_artist\"],\n tags: [\"painter\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🎨\",\n description: \"woman artist\",\n category: \"People & Body\",\n aliases: [\"woman_artist\"],\n tags: [\"painter\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑✈️\",\n description: \"pilot\",\n category: \"People & Body\",\n aliases: [\"pilot\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨✈️\",\n description: \"man pilot\",\n category: \"People & Body\",\n aliases: [\"man_pilot\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩✈️\",\n description: \"woman pilot\",\n category: \"People & Body\",\n aliases: [\"woman_pilot\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🚀\",\n description: \"astronaut\",\n category: \"People & Body\",\n aliases: [\"astronaut\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🚀\",\n description: \"man astronaut\",\n category: \"People & Body\",\n aliases: [\"man_astronaut\"],\n tags: [\"space\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🚀\",\n description: \"woman astronaut\",\n category: \"People & Body\",\n aliases: [\"woman_astronaut\"],\n tags: [\"space\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🚒\",\n description: \"firefighter\",\n category: \"People & Body\",\n aliases: [\"firefighter\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🚒\",\n description: \"man firefighter\",\n category: \"People & Body\",\n aliases: [\"man_firefighter\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👩🚒\",\n description: \"woman firefighter\",\n category: \"People & Body\",\n aliases: [\"woman_firefighter\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👮\",\n description: \"police officer\",\n category: \"People & Body\",\n aliases: [\"police_officer\", \"cop\"],\n tags: [\"law\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👮♂️\",\n description: \"man police officer\",\n category: \"People & Body\",\n aliases: [\"policeman\"],\n tags: [\"law\", \"cop\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👮♀️\",\n description: \"woman police officer\",\n category: \"People & Body\",\n aliases: [\"policewoman\"],\n tags: [\"law\", \"cop\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🕵️\",\n description: \"detective\",\n category: \"People & Body\",\n aliases: [\"detective\"],\n tags: [\"sleuth\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"🕵️♂️\",\n description: \"man detective\",\n category: \"People & Body\",\n aliases: [\"male_detective\"],\n tags: [\"sleuth\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🕵️♀️\",\n description: \"woman detective\",\n category: \"People & Body\",\n aliases: [\"female_detective\"],\n tags: [\"sleuth\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"💂\",\n description: \"guard\",\n category: \"People & Body\",\n aliases: [\"guard\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"💂♂️\",\n description: \"man guard\",\n category: \"People & Body\",\n aliases: [\"guardsman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"💂♀️\",\n description: \"woman guard\",\n category: \"People & Body\",\n aliases: [\"guardswoman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🥷\",\n description: \"ninja\",\n category: \"People & Body\",\n aliases: [\"ninja\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👷\",\n description: \"construction worker\",\n category: \"People & Body\",\n aliases: [\"construction_worker\"],\n tags: [\"helmet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👷♂️\",\n description: \"man construction worker\",\n category: \"People & Body\",\n aliases: [\"construction_worker_man\"],\n tags: [\"helmet\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👷♀️\",\n description: \"woman construction worker\",\n category: \"People & Body\",\n aliases: [\"construction_worker_woman\"],\n tags: [\"helmet\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤴\",\n description: \"prince\",\n category: \"People & Body\",\n aliases: [\"prince\"],\n tags: [\"crown\", \"royal\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"👸\",\n description: \"princess\",\n category: \"People & Body\",\n aliases: [\"princess\"],\n tags: [\"crown\", \"royal\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👳\",\n description: \"person wearing turban\",\n category: \"People & Body\",\n aliases: [\"person_with_turban\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👳♂️\",\n description: \"man wearing turban\",\n category: \"People & Body\",\n aliases: [\"man_with_turban\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👳♀️\",\n description: \"woman wearing turban\",\n category: \"People & Body\",\n aliases: [\"woman_with_turban\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"👲\",\n description: \"person with skullcap\",\n category: \"People & Body\",\n aliases: [\"man_with_gua_pi_mao\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧕\",\n description: \"woman with headscarf\",\n category: \"People & Body\",\n aliases: [\"woman_with_headscarf\"],\n tags: [\"hijab\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤵\",\n description: \"person in tuxedo\",\n category: \"People & Body\",\n aliases: [\"person_in_tuxedo\"],\n tags: [\"groom\", \"marriage\", \"wedding\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤵♂️\",\n description: \"man in tuxedo\",\n category: \"People & Body\",\n aliases: [\"man_in_tuxedo\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤵♀️\",\n description: \"woman in tuxedo\",\n category: \"People & Body\",\n aliases: [\"woman_in_tuxedo\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👰\",\n description: \"person with veil\",\n category: \"People & Body\",\n aliases: [\"person_with_veil\"],\n tags: [\"marriage\", \"wedding\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👰♂️\",\n description: \"man with veil\",\n category: \"People & Body\",\n aliases: [\"man_with_veil\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👰♀️\",\n description: \"woman with veil\",\n category: \"People & Body\",\n aliases: [\"woman_with_veil\", \"bride_with_veil\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤰\",\n description: \"pregnant woman\",\n category: \"People & Body\",\n aliases: [\"pregnant_woman\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤱\",\n description: \"breast-feeding\",\n category: \"People & Body\",\n aliases: [\"breast_feeding\"],\n tags: [\"nursing\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👩🍼\",\n description: \"woman feeding baby\",\n category: \"People & Body\",\n aliases: [\"woman_feeding_baby\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👨🍼\",\n description: \"man feeding baby\",\n category: \"People & Body\",\n aliases: [\"man_feeding_baby\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🍼\",\n description: \"person feeding baby\",\n category: \"People & Body\",\n aliases: [\"person_feeding_baby\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"👼\",\n description: \"baby angel\",\n category: \"People & Body\",\n aliases: [\"angel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🎅\",\n description: \"Santa Claus\",\n category: \"People & Body\",\n aliases: [\"santa\"],\n tags: [\"christmas\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤶\",\n description: \"Mrs. Claus\",\n category: \"People & Body\",\n aliases: [\"mrs_claus\"],\n tags: [\"santa\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🎄\",\n description: \"mx claus\",\n category: \"People & Body\",\n aliases: [\"mx_claus\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n skin_tones: true,\n },\n {\n emoji: \"🦸\",\n description: \"superhero\",\n category: \"People & Body\",\n aliases: [\"superhero\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦸♂️\",\n description: \"man superhero\",\n category: \"People & Body\",\n aliases: [\"superhero_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦸♀️\",\n description: \"woman superhero\",\n category: \"People & Body\",\n aliases: [\"superhero_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦹\",\n description: \"supervillain\",\n category: \"People & Body\",\n aliases: [\"supervillain\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦹♂️\",\n description: \"man supervillain\",\n category: \"People & Body\",\n aliases: [\"supervillain_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🦹♀️\",\n description: \"woman supervillain\",\n category: \"People & Body\",\n aliases: [\"supervillain_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧙\",\n description: \"mage\",\n category: \"People & Body\",\n aliases: [\"mage\"],\n tags: [\"wizard\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧙♂️\",\n description: \"man mage\",\n category: \"People & Body\",\n aliases: [\"mage_man\"],\n tags: [\"wizard\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧙♀️\",\n description: \"woman mage\",\n category: \"People & Body\",\n aliases: [\"mage_woman\"],\n tags: [\"wizard\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧚\",\n description: \"fairy\",\n category: \"People & Body\",\n aliases: [\"fairy\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧚♂️\",\n description: \"man fairy\",\n category: \"People & Body\",\n aliases: [\"fairy_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧚♀️\",\n description: \"woman fairy\",\n category: \"People & Body\",\n aliases: [\"fairy_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧛\",\n description: \"vampire\",\n category: \"People & Body\",\n aliases: [\"vampire\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧛♂️\",\n description: \"man vampire\",\n category: \"People & Body\",\n aliases: [\"vampire_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧛♀️\",\n description: \"woman vampire\",\n category: \"People & Body\",\n aliases: [\"vampire_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧜\",\n description: \"merperson\",\n category: \"People & Body\",\n aliases: [\"merperson\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧜♂️\",\n description: \"merman\",\n category: \"People & Body\",\n aliases: [\"merman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧜♀️\",\n description: \"mermaid\",\n category: \"People & Body\",\n aliases: [\"mermaid\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧝\",\n description: \"elf\",\n category: \"People & Body\",\n aliases: [\"elf\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧝♂️\",\n description: \"man elf\",\n category: \"People & Body\",\n aliases: [\"elf_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧝♀️\",\n description: \"woman elf\",\n category: \"People & Body\",\n aliases: [\"elf_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧞\",\n description: \"genie\",\n category: \"People & Body\",\n aliases: [\"genie\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧞♂️\",\n description: \"man genie\",\n category: \"People & Body\",\n aliases: [\"genie_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧞♀️\",\n description: \"woman genie\",\n category: \"People & Body\",\n aliases: [\"genie_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧟\",\n description: \"zombie\",\n category: \"People & Body\",\n aliases: [\"zombie\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧟♂️\",\n description: \"man zombie\",\n category: \"People & Body\",\n aliases: [\"zombie_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧟♀️\",\n description: \"woman zombie\",\n category: \"People & Body\",\n aliases: [\"zombie_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"💆\",\n description: \"person getting massage\",\n category: \"People & Body\",\n aliases: [\"massage\"],\n tags: [\"spa\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"💆♂️\",\n description: \"man getting massage\",\n category: \"People & Body\",\n aliases: [\"massage_man\"],\n tags: [\"spa\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"💆♀️\",\n description: \"woman getting massage\",\n category: \"People & Body\",\n aliases: [\"massage_woman\"],\n tags: [\"spa\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"💇\",\n description: \"person getting haircut\",\n category: \"People & Body\",\n aliases: [\"haircut\"],\n tags: [\"beauty\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"💇♂️\",\n description: \"man getting haircut\",\n category: \"People & Body\",\n aliases: [\"haircut_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"💇♀️\",\n description: \"woman getting haircut\",\n category: \"People & Body\",\n aliases: [\"haircut_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🚶\",\n description: \"person walking\",\n category: \"People & Body\",\n aliases: [\"walking\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚶♂️\",\n description: \"man walking\",\n category: \"People & Body\",\n aliases: [\"walking_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🚶♀️\",\n description: \"woman walking\",\n category: \"People & Body\",\n aliases: [\"walking_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧍\",\n description: \"person standing\",\n category: \"People & Body\",\n aliases: [\"standing_person\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧍♂️\",\n description: \"man standing\",\n category: \"People & Body\",\n aliases: [\"standing_man\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧍♀️\",\n description: \"woman standing\",\n category: \"People & Body\",\n aliases: [\"standing_woman\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧎\",\n description: \"person kneeling\",\n category: \"People & Body\",\n aliases: [\"kneeling_person\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧎♂️\",\n description: \"man kneeling\",\n category: \"People & Body\",\n aliases: [\"kneeling_man\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧎♀️\",\n description: \"woman kneeling\",\n category: \"People & Body\",\n aliases: [\"kneeling_woman\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦯\",\n description: \"person with white cane\",\n category: \"People & Body\",\n aliases: [\"person_with_probing_cane\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦯\",\n description: \"man with white cane\",\n category: \"People & Body\",\n aliases: [\"man_with_probing_cane\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦯\",\n description: \"woman with white cane\",\n category: \"People & Body\",\n aliases: [\"woman_with_probing_cane\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦼\",\n description: \"person in motorized wheelchair\",\n category: \"People & Body\",\n aliases: [\"person_in_motorized_wheelchair\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦼\",\n description: \"man in motorized wheelchair\",\n category: \"People & Body\",\n aliases: [\"man_in_motorized_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦼\",\n description: \"woman in motorized wheelchair\",\n category: \"People & Body\",\n aliases: [\"woman_in_motorized_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🦽\",\n description: \"person in manual wheelchair\",\n category: \"People & Body\",\n aliases: [\"person_in_manual_wheelchair\"],\n tags: [],\n unicode_version: \"12.1\",\n ios_version: \"13.2\",\n skin_tones: true,\n },\n {\n emoji: \"👨🦽\",\n description: \"man in manual wheelchair\",\n category: \"People & Body\",\n aliases: [\"man_in_manual_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩🦽\",\n description: \"woman in manual wheelchair\",\n category: \"People & Body\",\n aliases: [\"woman_in_manual_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏃\",\n description: \"person running\",\n category: \"People & Body\",\n aliases: [\"runner\", \"running\"],\n tags: [\"exercise\", \"workout\", \"marathon\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏃♂️\",\n description: \"man running\",\n category: \"People & Body\",\n aliases: [\"running_man\"],\n tags: [\"exercise\", \"workout\", \"marathon\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏃♀️\",\n description: \"woman running\",\n category: \"People & Body\",\n aliases: [\"running_woman\"],\n tags: [\"exercise\", \"workout\", \"marathon\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"💃\",\n description: \"woman dancing\",\n category: \"People & Body\",\n aliases: [\"woman_dancing\", \"dancer\"],\n tags: [\"dress\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🕺\",\n description: \"man dancing\",\n category: \"People & Body\",\n aliases: [\"man_dancing\"],\n tags: [\"dancer\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🕴️\",\n description: \"person in suit levitating\",\n category: \"People & Body\",\n aliases: [\"business_suit_levitating\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"👯\",\n description: \"people with bunny ears\",\n category: \"People & Body\",\n aliases: [\"dancers\"],\n tags: [\"bunny\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👯♂️\",\n description: \"men with bunny ears\",\n category: \"People & Body\",\n aliases: [\"dancing_men\"],\n tags: [\"bunny\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👯♀️\",\n description: \"women with bunny ears\",\n category: \"People & Body\",\n aliases: [\"dancing_women\"],\n tags: [\"bunny\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧖\",\n description: \"person in steamy room\",\n category: \"People & Body\",\n aliases: [\"sauna_person\"],\n tags: [\"steamy\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧖♂️\",\n description: \"man in steamy room\",\n category: \"People & Body\",\n aliases: [\"sauna_man\"],\n tags: [\"steamy\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧖♀️\",\n description: \"woman in steamy room\",\n category: \"People & Body\",\n aliases: [\"sauna_woman\"],\n tags: [\"steamy\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧗\",\n description: \"person climbing\",\n category: \"People & Body\",\n aliases: [\"climbing\"],\n tags: [\"bouldering\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧗♂️\",\n description: \"man climbing\",\n category: \"People & Body\",\n aliases: [\"climbing_man\"],\n tags: [\"bouldering\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧗♀️\",\n description: \"woman climbing\",\n category: \"People & Body\",\n aliases: [\"climbing_woman\"],\n tags: [\"bouldering\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤺\",\n description: \"person fencing\",\n category: \"People & Body\",\n aliases: [\"person_fencing\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🏇\",\n description: \"horse racing\",\n category: \"People & Body\",\n aliases: [\"horse_racing\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"⛷️\",\n description: \"skier\",\n category: \"People & Body\",\n aliases: [\"skier\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏂\",\n description: \"snowboarder\",\n category: \"People & Body\",\n aliases: [\"snowboarder\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏌️\",\n description: \"person golfing\",\n category: \"People & Body\",\n aliases: [\"golfing\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏌️♂️\",\n description: \"man golfing\",\n category: \"People & Body\",\n aliases: [\"golfing_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏌️♀️\",\n description: \"woman golfing\",\n category: \"People & Body\",\n aliases: [\"golfing_woman\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏄\",\n description: \"person surfing\",\n category: \"People & Body\",\n aliases: [\"surfer\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏄♂️\",\n description: \"man surfing\",\n category: \"People & Body\",\n aliases: [\"surfing_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏄♀️\",\n description: \"woman surfing\",\n category: \"People & Body\",\n aliases: [\"surfing_woman\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚣\",\n description: \"person rowing boat\",\n category: \"People & Body\",\n aliases: [\"rowboat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚣♂️\",\n description: \"man rowing boat\",\n category: \"People & Body\",\n aliases: [\"rowing_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🚣♀️\",\n description: \"woman rowing boat\",\n category: \"People & Body\",\n aliases: [\"rowing_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏊\",\n description: \"person swimming\",\n category: \"People & Body\",\n aliases: [\"swimmer\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏊♂️\",\n description: \"man swimming\",\n category: \"People & Body\",\n aliases: [\"swimming_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏊♀️\",\n description: \"woman swimming\",\n category: \"People & Body\",\n aliases: [\"swimming_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"⛹️\",\n description: \"person bouncing ball\",\n category: \"People & Body\",\n aliases: [\"bouncing_ball_person\"],\n tags: [\"basketball\"],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"⛹️♂️\",\n description: \"man bouncing ball\",\n category: \"People & Body\",\n aliases: [\"bouncing_ball_man\", \"basketball_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"⛹️♀️\",\n description: \"woman bouncing ball\",\n category: \"People & Body\",\n aliases: [\"bouncing_ball_woman\", \"basketball_woman\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🏋️\",\n description: \"person lifting weights\",\n category: \"People & Body\",\n aliases: [\"weight_lifting\"],\n tags: [\"gym\", \"workout\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏋️♂️\",\n description: \"man lifting weights\",\n category: \"People & Body\",\n aliases: [\"weight_lifting_man\"],\n tags: [\"gym\", \"workout\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🏋️♀️\",\n description: \"woman lifting weights\",\n category: \"People & Body\",\n aliases: [\"weight_lifting_woman\"],\n tags: [\"gym\", \"workout\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚴\",\n description: \"person biking\",\n category: \"People & Body\",\n aliases: [\"bicyclist\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚴♂️\",\n description: \"man biking\",\n category: \"People & Body\",\n aliases: [\"biking_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🚴♀️\",\n description: \"woman biking\",\n category: \"People & Body\",\n aliases: [\"biking_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚵\",\n description: \"person mountain biking\",\n category: \"People & Body\",\n aliases: [\"mountain_bicyclist\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🚵♂️\",\n description: \"man mountain biking\",\n category: \"People & Body\",\n aliases: [\"mountain_biking_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🚵♀️\",\n description: \"woman mountain biking\",\n category: \"People & Body\",\n aliases: [\"mountain_biking_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n skin_tones: true,\n },\n {\n emoji: \"🤸\",\n description: \"person cartwheeling\",\n category: \"People & Body\",\n aliases: [\"cartwheeling\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤸♂️\",\n description: \"man cartwheeling\",\n category: \"People & Body\",\n aliases: [\"man_cartwheeling\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤸♀️\",\n description: \"woman cartwheeling\",\n category: \"People & Body\",\n aliases: [\"woman_cartwheeling\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤼\",\n description: \"people wrestling\",\n category: \"People & Body\",\n aliases: [\"wrestling\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🤼♂️\",\n description: \"men wrestling\",\n category: \"People & Body\",\n aliases: [\"men_wrestling\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🤼♀️\",\n description: \"women wrestling\",\n category: \"People & Body\",\n aliases: [\"women_wrestling\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🤽\",\n description: \"person playing water polo\",\n category: \"People & Body\",\n aliases: [\"water_polo\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤽♂️\",\n description: \"man playing water polo\",\n category: \"People & Body\",\n aliases: [\"man_playing_water_polo\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤽♀️\",\n description: \"woman playing water polo\",\n category: \"People & Body\",\n aliases: [\"woman_playing_water_polo\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤾\",\n description: \"person playing handball\",\n category: \"People & Body\",\n aliases: [\"handball_person\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤾♂️\",\n description: \"man playing handball\",\n category: \"People & Body\",\n aliases: [\"man_playing_handball\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤾♀️\",\n description: \"woman playing handball\",\n category: \"People & Body\",\n aliases: [\"woman_playing_handball\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤹\",\n description: \"person juggling\",\n category: \"People & Body\",\n aliases: [\"juggling_person\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🤹♂️\",\n description: \"man juggling\",\n category: \"People & Body\",\n aliases: [\"man_juggling\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🤹♀️\",\n description: \"woman juggling\",\n category: \"People & Body\",\n aliases: [\"woman_juggling\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n skin_tones: true,\n },\n {\n emoji: \"🧘\",\n description: \"person in lotus position\",\n category: \"People & Body\",\n aliases: [\"lotus_position\"],\n tags: [\"meditation\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧘♂️\",\n description: \"man in lotus position\",\n category: \"People & Body\",\n aliases: [\"lotus_position_man\"],\n tags: [\"meditation\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧘♀️\",\n description: \"woman in lotus position\",\n category: \"People & Body\",\n aliases: [\"lotus_position_woman\"],\n tags: [\"meditation\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"🛀\",\n description: \"person taking bath\",\n category: \"People & Body\",\n aliases: [\"bath\"],\n tags: [\"shower\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"🛌\",\n description: \"person in bed\",\n category: \"People & Body\",\n aliases: [\"sleeping_bed\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n skin_tones: true,\n },\n {\n emoji: \"🧑🤝🧑\",\n description: \"people holding hands\",\n category: \"People & Body\",\n aliases: [\"people_holding_hands\"],\n tags: [\"couple\", \"date\"],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n skin_tones: true,\n },\n {\n emoji: \"👭\",\n description: \"women holding hands\",\n category: \"People & Body\",\n aliases: [\"two_women_holding_hands\"],\n tags: [\"couple\", \"date\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👫\",\n description: \"woman and man holding hands\",\n category: \"People & Body\",\n aliases: [\"couple\"],\n tags: [\"date\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👬\",\n description: \"men holding hands\",\n category: \"People & Body\",\n aliases: [\"two_men_holding_hands\"],\n tags: [\"couple\", \"date\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"💏\",\n description: \"kiss\",\n category: \"People & Body\",\n aliases: [\"couplekiss\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩❤️💋👨\",\n description: \"kiss: woman, man\",\n category: \"People & Body\",\n aliases: [\"couplekiss_man_woman\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👨❤️💋👨\",\n description: \"kiss: man, man\",\n category: \"People & Body\",\n aliases: [\"couplekiss_man_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n skin_tones: true,\n },\n {\n emoji: \"👩❤️💋👩\",\n description: \"kiss: woman, woman\",\n category: \"People & Body\",\n aliases: [\"couplekiss_woman_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n skin_tones: true,\n },\n {\n emoji: \"💑\",\n description: \"couple with heart\",\n category: \"People & Body\",\n aliases: [\"couple_with_heart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n skin_tones: true,\n },\n {\n emoji: \"👩❤️👨\",\n description: \"couple with heart: woman, man\",\n category: \"People & Body\",\n aliases: [\"couple_with_heart_woman_man\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n skin_tones: true,\n },\n {\n emoji: \"👨❤️👨\",\n description: \"couple with heart: man, man\",\n category: \"People & Body\",\n aliases: [\"couple_with_heart_man_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n skin_tones: true,\n },\n {\n emoji: \"👩❤️👩\",\n description: \"couple with heart: woman, woman\",\n category: \"People & Body\",\n aliases: [\"couple_with_heart_woman_woman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n skin_tones: true,\n },\n {\n emoji: \"👪\",\n description: \"family\",\n category: \"People & Body\",\n aliases: [\"family\"],\n tags: [\"home\", \"parents\", \"child\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👨👩👦\",\n description: \"family: man, woman, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_woman_boy\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"👨👩👧\",\n description: \"family: man, woman, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_woman_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👩👧👦\",\n description: \"family: man, woman, girl, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_woman_girl_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👩👦👦\",\n description: \"family: man, woman, boy, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_woman_boy_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👩👧👧\",\n description: \"family: man, woman, girl, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_woman_girl_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👨👦\",\n description: \"family: man, man, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_man_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👨👧\",\n description: \"family: man, man, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_man_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👨👧👦\",\n description: \"family: man, man, girl, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_man_girl_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👨👦👦\",\n description: \"family: man, man, boy, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_man_boy_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👨👧👧\",\n description: \"family: man, man, girl, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_man_girl_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👩👩👦\",\n description: \"family: woman, woman, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_woman_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👩👩👧\",\n description: \"family: woman, woman, girl\",\n category: \"People & Body\",\n aliases: [\"family_woman_woman_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👩👩👧👦\",\n description: \"family: woman, woman, girl, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_woman_girl_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👩👩👦👦\",\n description: \"family: woman, woman, boy, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_woman_boy_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👩👩👧👧\",\n description: \"family: woman, woman, girl, girl\",\n category: \"People & Body\",\n aliases: [\"family_woman_woman_girl_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"👨👦\",\n description: \"family: man, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👨👦👦\",\n description: \"family: man, boy, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_boy_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👨👧\",\n description: \"family: man, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👨👧👦\",\n description: \"family: man, girl, boy\",\n category: \"People & Body\",\n aliases: [\"family_man_girl_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👨👧👧\",\n description: \"family: man, girl, girl\",\n category: \"People & Body\",\n aliases: [\"family_man_girl_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👩👦\",\n description: \"family: woman, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👩👦👦\",\n description: \"family: woman, boy, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_boy_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👩👧\",\n description: \"family: woman, girl\",\n category: \"People & Body\",\n aliases: [\"family_woman_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👩👧👦\",\n description: \"family: woman, girl, boy\",\n category: \"People & Body\",\n aliases: [\"family_woman_girl_boy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"👩👧👧\",\n description: \"family: woman, girl, girl\",\n category: \"People & Body\",\n aliases: [\"family_woman_girl_girl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"🗣️\",\n description: \"speaking head\",\n category: \"People & Body\",\n aliases: [\"speaking_head\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"👤\",\n description: \"bust in silhouette\",\n category: \"People & Body\",\n aliases: [\"bust_in_silhouette\"],\n tags: [\"user\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👥\",\n description: \"busts in silhouette\",\n category: \"People & Body\",\n aliases: [\"busts_in_silhouette\"],\n tags: [\"users\", \"group\", \"team\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🫂\",\n description: \"people hugging\",\n category: \"People & Body\",\n aliases: [\"people_hugging\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"👣\",\n description: \"footprints\",\n category: \"People & Body\",\n aliases: [\"footprints\"],\n tags: [\"feet\", \"tracks\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐵\",\n description: \"monkey face\",\n category: \"Animals & Nature\",\n aliases: [\"monkey_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐒\",\n description: \"monkey\",\n category: \"Animals & Nature\",\n aliases: [\"monkey\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦍\",\n description: \"gorilla\",\n category: \"Animals & Nature\",\n aliases: [\"gorilla\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦧\",\n description: \"orangutan\",\n category: \"Animals & Nature\",\n aliases: [\"orangutan\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🐶\",\n description: \"dog face\",\n category: \"Animals & Nature\",\n aliases: [\"dog\"],\n tags: [\"pet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐕\",\n description: \"dog\",\n category: \"Animals & Nature\",\n aliases: [\"dog2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦮\",\n description: \"guide dog\",\n category: \"Animals & Nature\",\n aliases: [\"guide_dog\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🐕🦺\",\n description: \"service dog\",\n category: \"Animals & Nature\",\n aliases: [\"service_dog\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🐩\",\n description: \"poodle\",\n category: \"Animals & Nature\",\n aliases: [\"poodle\"],\n tags: [\"dog\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐺\",\n description: \"wolf\",\n category: \"Animals & Nature\",\n aliases: [\"wolf\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦊\",\n description: \"fox\",\n category: \"Animals & Nature\",\n aliases: [\"fox_face\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦝\",\n description: \"raccoon\",\n category: \"Animals & Nature\",\n aliases: [\"raccoon\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐱\",\n description: \"cat face\",\n category: \"Animals & Nature\",\n aliases: [\"cat\"],\n tags: [\"pet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐈\",\n description: \"cat\",\n category: \"Animals & Nature\",\n aliases: [\"cat2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐈⬛\",\n description: \"black cat\",\n category: \"Animals & Nature\",\n aliases: [\"black_cat\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦁\",\n description: \"lion\",\n category: \"Animals & Nature\",\n aliases: [\"lion\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🐯\",\n description: \"tiger face\",\n category: \"Animals & Nature\",\n aliases: [\"tiger\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐅\",\n description: \"tiger\",\n category: \"Animals & Nature\",\n aliases: [\"tiger2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐆\",\n description: \"leopard\",\n category: \"Animals & Nature\",\n aliases: [\"leopard\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐴\",\n description: \"horse face\",\n category: \"Animals & Nature\",\n aliases: [\"horse\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐎\",\n description: \"horse\",\n category: \"Animals & Nature\",\n aliases: [\"racehorse\"],\n tags: [\"speed\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦄\",\n description: \"unicorn\",\n category: \"Animals & Nature\",\n aliases: [\"unicorn\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦓\",\n description: \"zebra\",\n category: \"Animals & Nature\",\n aliases: [\"zebra\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦌\",\n description: \"deer\",\n category: \"Animals & Nature\",\n aliases: [\"deer\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦬\",\n description: \"bison\",\n category: \"Animals & Nature\",\n aliases: [\"bison\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🐮\",\n description: \"cow face\",\n category: \"Animals & Nature\",\n aliases: [\"cow\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐂\",\n description: \"ox\",\n category: \"Animals & Nature\",\n aliases: [\"ox\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐃\",\n description: \"water buffalo\",\n category: \"Animals & Nature\",\n aliases: [\"water_buffalo\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐄\",\n description: \"cow\",\n category: \"Animals & Nature\",\n aliases: [\"cow2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐷\",\n description: \"pig face\",\n category: \"Animals & Nature\",\n aliases: [\"pig\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐖\",\n description: \"pig\",\n category: \"Animals & Nature\",\n aliases: [\"pig2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐗\",\n description: \"boar\",\n category: \"Animals & Nature\",\n aliases: [\"boar\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐽\",\n description: \"pig nose\",\n category: \"Animals & Nature\",\n aliases: [\"pig_nose\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐏\",\n description: \"ram\",\n category: \"Animals & Nature\",\n aliases: [\"ram\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐑\",\n description: \"ewe\",\n category: \"Animals & Nature\",\n aliases: [\"sheep\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐐\",\n description: \"goat\",\n category: \"Animals & Nature\",\n aliases: [\"goat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐪\",\n description: \"camel\",\n category: \"Animals & Nature\",\n aliases: [\"dromedary_camel\"],\n tags: [\"desert\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐫\",\n description: \"two-hump camel\",\n category: \"Animals & Nature\",\n aliases: [\"camel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦙\",\n description: \"llama\",\n category: \"Animals & Nature\",\n aliases: [\"llama\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦒\",\n description: \"giraffe\",\n category: \"Animals & Nature\",\n aliases: [\"giraffe\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐘\",\n description: \"elephant\",\n category: \"Animals & Nature\",\n aliases: [\"elephant\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦣\",\n description: \"mammoth\",\n category: \"Animals & Nature\",\n aliases: [\"mammoth\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦏\",\n description: \"rhinoceros\",\n category: \"Animals & Nature\",\n aliases: [\"rhinoceros\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦛\",\n description: \"hippopotamus\",\n category: \"Animals & Nature\",\n aliases: [\"hippopotamus\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐭\",\n description: \"mouse face\",\n category: \"Animals & Nature\",\n aliases: [\"mouse\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐁\",\n description: \"mouse\",\n category: \"Animals & Nature\",\n aliases: [\"mouse2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐀\",\n description: \"rat\",\n category: \"Animals & Nature\",\n aliases: [\"rat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐹\",\n description: \"hamster\",\n category: \"Animals & Nature\",\n aliases: [\"hamster\"],\n tags: [\"pet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐰\",\n description: \"rabbit face\",\n category: \"Animals & Nature\",\n aliases: [\"rabbit\"],\n tags: [\"bunny\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐇\",\n description: \"rabbit\",\n category: \"Animals & Nature\",\n aliases: [\"rabbit2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐿️\",\n description: \"chipmunk\",\n category: \"Animals & Nature\",\n aliases: [\"chipmunk\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦫\",\n description: \"beaver\",\n category: \"Animals & Nature\",\n aliases: [\"beaver\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦔\",\n description: \"hedgehog\",\n category: \"Animals & Nature\",\n aliases: [\"hedgehog\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦇\",\n description: \"bat\",\n category: \"Animals & Nature\",\n aliases: [\"bat\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🐻\",\n description: \"bear\",\n category: \"Animals & Nature\",\n aliases: [\"bear\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐻❄️\",\n description: \"polar bear\",\n category: \"Animals & Nature\",\n aliases: [\"polar_bear\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🐨\",\n description: \"koala\",\n category: \"Animals & Nature\",\n aliases: [\"koala\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐼\",\n description: \"panda\",\n category: \"Animals & Nature\",\n aliases: [\"panda_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦥\",\n description: \"sloth\",\n category: \"Animals & Nature\",\n aliases: [\"sloth\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦦\",\n description: \"otter\",\n category: \"Animals & Nature\",\n aliases: [\"otter\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦨\",\n description: \"skunk\",\n category: \"Animals & Nature\",\n aliases: [\"skunk\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦘\",\n description: \"kangaroo\",\n category: \"Animals & Nature\",\n aliases: [\"kangaroo\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦡\",\n description: \"badger\",\n category: \"Animals & Nature\",\n aliases: [\"badger\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐾\",\n description: \"paw prints\",\n category: \"Animals & Nature\",\n aliases: [\"feet\", \"paw_prints\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦃\",\n description: \"turkey\",\n category: \"Animals & Nature\",\n aliases: [\"turkey\"],\n tags: [\"thanksgiving\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🐔\",\n description: \"chicken\",\n category: \"Animals & Nature\",\n aliases: [\"chicken\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐓\",\n description: \"rooster\",\n category: \"Animals & Nature\",\n aliases: [\"rooster\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐣\",\n description: \"hatching chick\",\n category: \"Animals & Nature\",\n aliases: [\"hatching_chick\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐤\",\n description: \"baby chick\",\n category: \"Animals & Nature\",\n aliases: [\"baby_chick\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐥\",\n description: \"front-facing baby chick\",\n category: \"Animals & Nature\",\n aliases: [\"hatched_chick\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐦\",\n description: \"bird\",\n category: \"Animals & Nature\",\n aliases: [\"bird\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐧\",\n description: \"penguin\",\n category: \"Animals & Nature\",\n aliases: [\"penguin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕊️\",\n description: \"dove\",\n category: \"Animals & Nature\",\n aliases: [\"dove\"],\n tags: [\"peace\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦅\",\n description: \"eagle\",\n category: \"Animals & Nature\",\n aliases: [\"eagle\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦆\",\n description: \"duck\",\n category: \"Animals & Nature\",\n aliases: [\"duck\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦢\",\n description: \"swan\",\n category: \"Animals & Nature\",\n aliases: [\"swan\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦉\",\n description: \"owl\",\n category: \"Animals & Nature\",\n aliases: [\"owl\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦤\",\n description: \"dodo\",\n category: \"Animals & Nature\",\n aliases: [\"dodo\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪶\",\n description: \"feather\",\n category: \"Animals & Nature\",\n aliases: [\"feather\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦩\",\n description: \"flamingo\",\n category: \"Animals & Nature\",\n aliases: [\"flamingo\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦚\",\n description: \"peacock\",\n category: \"Animals & Nature\",\n aliases: [\"peacock\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦜\",\n description: \"parrot\",\n category: \"Animals & Nature\",\n aliases: [\"parrot\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐸\",\n description: \"frog\",\n category: \"Animals & Nature\",\n aliases: [\"frog\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐊\",\n description: \"crocodile\",\n category: \"Animals & Nature\",\n aliases: [\"crocodile\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐢\",\n description: \"turtle\",\n category: \"Animals & Nature\",\n aliases: [\"turtle\"],\n tags: [\"slow\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦎\",\n description: \"lizard\",\n category: \"Animals & Nature\",\n aliases: [\"lizard\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🐍\",\n description: \"snake\",\n category: \"Animals & Nature\",\n aliases: [\"snake\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐲\",\n description: \"dragon face\",\n category: \"Animals & Nature\",\n aliases: [\"dragon_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐉\",\n description: \"dragon\",\n category: \"Animals & Nature\",\n aliases: [\"dragon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦕\",\n description: \"sauropod\",\n category: \"Animals & Nature\",\n aliases: [\"sauropod\"],\n tags: [\"dinosaur\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦖\",\n description: \"T-Rex\",\n category: \"Animals & Nature\",\n aliases: [\"t-rex\"],\n tags: [\"dinosaur\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🐳\",\n description: \"spouting whale\",\n category: \"Animals & Nature\",\n aliases: [\"whale\"],\n tags: [\"sea\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐋\",\n description: \"whale\",\n category: \"Animals & Nature\",\n aliases: [\"whale2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐬\",\n description: \"dolphin\",\n category: \"Animals & Nature\",\n aliases: [\"dolphin\", \"flipper\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦭\",\n description: \"seal\",\n category: \"Animals & Nature\",\n aliases: [\"seal\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🐟\",\n description: \"fish\",\n category: \"Animals & Nature\",\n aliases: [\"fish\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐠\",\n description: \"tropical fish\",\n category: \"Animals & Nature\",\n aliases: [\"tropical_fish\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐡\",\n description: \"blowfish\",\n category: \"Animals & Nature\",\n aliases: [\"blowfish\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦈\",\n description: \"shark\",\n category: \"Animals & Nature\",\n aliases: [\"shark\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🐙\",\n description: \"octopus\",\n category: \"Animals & Nature\",\n aliases: [\"octopus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐚\",\n description: \"spiral shell\",\n category: \"Animals & Nature\",\n aliases: [\"shell\"],\n tags: [\"sea\", \"beach\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐌\",\n description: \"snail\",\n category: \"Animals & Nature\",\n aliases: [\"snail\"],\n tags: [\"slow\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦋\",\n description: \"butterfly\",\n category: \"Animals & Nature\",\n aliases: [\"butterfly\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🐛\",\n description: \"bug\",\n category: \"Animals & Nature\",\n aliases: [\"bug\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐜\",\n description: \"ant\",\n category: \"Animals & Nature\",\n aliases: [\"ant\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🐝\",\n description: \"honeybee\",\n category: \"Animals & Nature\",\n aliases: [\"bee\", \"honeybee\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪲\",\n description: \"beetle\",\n category: \"Animals & Nature\",\n aliases: [\"beetle\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🐞\",\n description: \"lady beetle\",\n category: \"Animals & Nature\",\n aliases: [\"lady_beetle\"],\n tags: [\"bug\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🦗\",\n description: \"cricket\",\n category: \"Animals & Nature\",\n aliases: [\"cricket\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪳\",\n description: \"cockroach\",\n category: \"Animals & Nature\",\n aliases: [\"cockroach\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🕷️\",\n description: \"spider\",\n category: \"Animals & Nature\",\n aliases: [\"spider\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕸️\",\n description: \"spider web\",\n category: \"Animals & Nature\",\n aliases: [\"spider_web\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦂\",\n description: \"scorpion\",\n category: \"Animals & Nature\",\n aliases: [\"scorpion\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦟\",\n description: \"mosquito\",\n category: \"Animals & Nature\",\n aliases: [\"mosquito\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪰\",\n description: \"fly\",\n category: \"Animals & Nature\",\n aliases: [\"fly\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪱\",\n description: \"worm\",\n category: \"Animals & Nature\",\n aliases: [\"worm\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🦠\",\n description: \"microbe\",\n category: \"Animals & Nature\",\n aliases: [\"microbe\"],\n tags: [\"germ\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"💐\",\n description: \"bouquet\",\n category: \"Animals & Nature\",\n aliases: [\"bouquet\"],\n tags: [\"flowers\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌸\",\n description: \"cherry blossom\",\n category: \"Animals & Nature\",\n aliases: [\"cherry_blossom\"],\n tags: [\"flower\", \"spring\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💮\",\n description: \"white flower\",\n category: \"Animals & Nature\",\n aliases: [\"white_flower\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏵️\",\n description: \"rosette\",\n category: \"Animals & Nature\",\n aliases: [\"rosette\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌹\",\n description: \"rose\",\n category: \"Animals & Nature\",\n aliases: [\"rose\"],\n tags: [\"flower\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥀\",\n description: \"wilted flower\",\n category: \"Animals & Nature\",\n aliases: [\"wilted_flower\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🌺\",\n description: \"hibiscus\",\n category: \"Animals & Nature\",\n aliases: [\"hibiscus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌻\",\n description: \"sunflower\",\n category: \"Animals & Nature\",\n aliases: [\"sunflower\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌼\",\n description: \"blossom\",\n category: \"Animals & Nature\",\n aliases: [\"blossom\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌷\",\n description: \"tulip\",\n category: \"Animals & Nature\",\n aliases: [\"tulip\"],\n tags: [\"flower\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌱\",\n description: \"seedling\",\n category: \"Animals & Nature\",\n aliases: [\"seedling\"],\n tags: [\"plant\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪴\",\n description: \"potted plant\",\n category: \"Animals & Nature\",\n aliases: [\"potted_plant\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🌲\",\n description: \"evergreen tree\",\n category: \"Animals & Nature\",\n aliases: [\"evergreen_tree\"],\n tags: [\"wood\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌳\",\n description: \"deciduous tree\",\n category: \"Animals & Nature\",\n aliases: [\"deciduous_tree\"],\n tags: [\"wood\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌴\",\n description: \"palm tree\",\n category: \"Animals & Nature\",\n aliases: [\"palm_tree\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌵\",\n description: \"cactus\",\n category: \"Animals & Nature\",\n aliases: [\"cactus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌾\",\n description: \"sheaf of rice\",\n category: \"Animals & Nature\",\n aliases: [\"ear_of_rice\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌿\",\n description: \"herb\",\n category: \"Animals & Nature\",\n aliases: [\"herb\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☘️\",\n description: \"shamrock\",\n category: \"Animals & Nature\",\n aliases: [\"shamrock\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🍀\",\n description: \"four leaf clover\",\n category: \"Animals & Nature\",\n aliases: [\"four_leaf_clover\"],\n tags: [\"luck\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍁\",\n description: \"maple leaf\",\n category: \"Animals & Nature\",\n aliases: [\"maple_leaf\"],\n tags: [\"canada\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍂\",\n description: \"fallen leaf\",\n category: \"Animals & Nature\",\n aliases: [\"fallen_leaf\"],\n tags: [\"autumn\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍃\",\n description: \"leaf fluttering in wind\",\n category: \"Animals & Nature\",\n aliases: [\"leaves\"],\n tags: [\"leaf\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍇\",\n description: \"grapes\",\n category: \"Food & Drink\",\n aliases: [\"grapes\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍈\",\n description: \"melon\",\n category: \"Food & Drink\",\n aliases: [\"melon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍉\",\n description: \"watermelon\",\n category: \"Food & Drink\",\n aliases: [\"watermelon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍊\",\n description: \"tangerine\",\n category: \"Food & Drink\",\n aliases: [\"tangerine\", \"orange\", \"mandarin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍋\",\n description: \"lemon\",\n category: \"Food & Drink\",\n aliases: [\"lemon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍌\",\n description: \"banana\",\n category: \"Food & Drink\",\n aliases: [\"banana\"],\n tags: [\"fruit\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍍\",\n description: \"pineapple\",\n category: \"Food & Drink\",\n aliases: [\"pineapple\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥭\",\n description: \"mango\",\n category: \"Food & Drink\",\n aliases: [\"mango\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🍎\",\n description: \"red apple\",\n category: \"Food & Drink\",\n aliases: [\"apple\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍏\",\n description: \"green apple\",\n category: \"Food & Drink\",\n aliases: [\"green_apple\"],\n tags: [\"fruit\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍐\",\n description: \"pear\",\n category: \"Food & Drink\",\n aliases: [\"pear\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍑\",\n description: \"peach\",\n category: \"Food & Drink\",\n aliases: [\"peach\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍒\",\n description: \"cherries\",\n category: \"Food & Drink\",\n aliases: [\"cherries\"],\n tags: [\"fruit\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍓\",\n description: \"strawberry\",\n category: \"Food & Drink\",\n aliases: [\"strawberry\"],\n tags: [\"fruit\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🫐\",\n description: \"blueberries\",\n category: \"Food & Drink\",\n aliases: [\"blueberries\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥝\",\n description: \"kiwi fruit\",\n category: \"Food & Drink\",\n aliases: [\"kiwi_fruit\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍅\",\n description: \"tomato\",\n category: \"Food & Drink\",\n aliases: [\"tomato\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🫒\",\n description: \"olive\",\n category: \"Food & Drink\",\n aliases: [\"olive\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥥\",\n description: \"coconut\",\n category: \"Food & Drink\",\n aliases: [\"coconut\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥑\",\n description: \"avocado\",\n category: \"Food & Drink\",\n aliases: [\"avocado\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍆\",\n description: \"eggplant\",\n category: \"Food & Drink\",\n aliases: [\"eggplant\"],\n tags: [\"aubergine\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥔\",\n description: \"potato\",\n category: \"Food & Drink\",\n aliases: [\"potato\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥕\",\n description: \"carrot\",\n category: \"Food & Drink\",\n aliases: [\"carrot\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🌽\",\n description: \"ear of corn\",\n category: \"Food & Drink\",\n aliases: [\"corn\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌶️\",\n description: \"hot pepper\",\n category: \"Food & Drink\",\n aliases: [\"hot_pepper\"],\n tags: [\"spicy\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🫑\",\n description: \"bell pepper\",\n category: \"Food & Drink\",\n aliases: [\"bell_pepper\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥒\",\n description: \"cucumber\",\n category: \"Food & Drink\",\n aliases: [\"cucumber\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥬\",\n description: \"leafy green\",\n category: \"Food & Drink\",\n aliases: [\"leafy_green\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥦\",\n description: \"broccoli\",\n category: \"Food & Drink\",\n aliases: [\"broccoli\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧄\",\n description: \"garlic\",\n category: \"Food & Drink\",\n aliases: [\"garlic\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧅\",\n description: \"onion\",\n category: \"Food & Drink\",\n aliases: [\"onion\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🍄\",\n description: \"mushroom\",\n category: \"Food & Drink\",\n aliases: [\"mushroom\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥜\",\n description: \"peanuts\",\n category: \"Food & Drink\",\n aliases: [\"peanuts\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🌰\",\n description: \"chestnut\",\n category: \"Food & Drink\",\n aliases: [\"chestnut\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍞\",\n description: \"bread\",\n category: \"Food & Drink\",\n aliases: [\"bread\"],\n tags: [\"toast\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥐\",\n description: \"croissant\",\n category: \"Food & Drink\",\n aliases: [\"croissant\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥖\",\n description: \"baguette bread\",\n category: \"Food & Drink\",\n aliases: [\"baguette_bread\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🫓\",\n description: \"flatbread\",\n category: \"Food & Drink\",\n aliases: [\"flatbread\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥨\",\n description: \"pretzel\",\n category: \"Food & Drink\",\n aliases: [\"pretzel\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥯\",\n description: \"bagel\",\n category: \"Food & Drink\",\n aliases: [\"bagel\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥞\",\n description: \"pancakes\",\n category: \"Food & Drink\",\n aliases: [\"pancakes\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🧇\",\n description: \"waffle\",\n category: \"Food & Drink\",\n aliases: [\"waffle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧀\",\n description: \"cheese wedge\",\n category: \"Food & Drink\",\n aliases: [\"cheese\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🍖\",\n description: \"meat on bone\",\n category: \"Food & Drink\",\n aliases: [\"meat_on_bone\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍗\",\n description: \"poultry leg\",\n category: \"Food & Drink\",\n aliases: [\"poultry_leg\"],\n tags: [\"meat\", \"chicken\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥩\",\n description: \"cut of meat\",\n category: \"Food & Drink\",\n aliases: [\"cut_of_meat\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥓\",\n description: \"bacon\",\n category: \"Food & Drink\",\n aliases: [\"bacon\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍔\",\n description: \"hamburger\",\n category: \"Food & Drink\",\n aliases: [\"hamburger\"],\n tags: [\"burger\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍟\",\n description: \"french fries\",\n category: \"Food & Drink\",\n aliases: [\"fries\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍕\",\n description: \"pizza\",\n category: \"Food & Drink\",\n aliases: [\"pizza\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌭\",\n description: \"hot dog\",\n category: \"Food & Drink\",\n aliases: [\"hotdog\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🥪\",\n description: \"sandwich\",\n category: \"Food & Drink\",\n aliases: [\"sandwich\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🌮\",\n description: \"taco\",\n category: \"Food & Drink\",\n aliases: [\"taco\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌯\",\n description: \"burrito\",\n category: \"Food & Drink\",\n aliases: [\"burrito\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🫔\",\n description: \"tamale\",\n category: \"Food & Drink\",\n aliases: [\"tamale\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥙\",\n description: \"stuffed flatbread\",\n category: \"Food & Drink\",\n aliases: [\"stuffed_flatbread\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🧆\",\n description: \"falafel\",\n category: \"Food & Drink\",\n aliases: [\"falafel\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🥚\",\n description: \"egg\",\n category: \"Food & Drink\",\n aliases: [\"egg\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍳\",\n description: \"cooking\",\n category: \"Food & Drink\",\n aliases: [\"fried_egg\"],\n tags: [\"breakfast\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥘\",\n description: \"shallow pan of food\",\n category: \"Food & Drink\",\n aliases: [\"shallow_pan_of_food\"],\n tags: [\"paella\", \"curry\"],\n unicode_version: \"\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍲\",\n description: \"pot of food\",\n category: \"Food & Drink\",\n aliases: [\"stew\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🫕\",\n description: \"fondue\",\n category: \"Food & Drink\",\n aliases: [\"fondue\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🥣\",\n description: \"bowl with spoon\",\n category: \"Food & Drink\",\n aliases: [\"bowl_with_spoon\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥗\",\n description: \"green salad\",\n category: \"Food & Drink\",\n aliases: [\"green_salad\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🍿\",\n description: \"popcorn\",\n category: \"Food & Drink\",\n aliases: [\"popcorn\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🧈\",\n description: \"butter\",\n category: \"Food & Drink\",\n aliases: [\"butter\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧂\",\n description: \"salt\",\n category: \"Food & Drink\",\n aliases: [\"salt\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥫\",\n description: \"canned food\",\n category: \"Food & Drink\",\n aliases: [\"canned_food\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🍱\",\n description: \"bento box\",\n category: \"Food & Drink\",\n aliases: [\"bento\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍘\",\n description: \"rice cracker\",\n category: \"Food & Drink\",\n aliases: [\"rice_cracker\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍙\",\n description: \"rice ball\",\n category: \"Food & Drink\",\n aliases: [\"rice_ball\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍚\",\n description: \"cooked rice\",\n category: \"Food & Drink\",\n aliases: [\"rice\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍛\",\n description: \"curry rice\",\n category: \"Food & Drink\",\n aliases: [\"curry\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍜\",\n description: \"steaming bowl\",\n category: \"Food & Drink\",\n aliases: [\"ramen\"],\n tags: [\"noodle\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍝\",\n description: \"spaghetti\",\n category: \"Food & Drink\",\n aliases: [\"spaghetti\"],\n tags: [\"pasta\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍠\",\n description: \"roasted sweet potato\",\n category: \"Food & Drink\",\n aliases: [\"sweet_potato\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍢\",\n description: \"oden\",\n category: \"Food & Drink\",\n aliases: [\"oden\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍣\",\n description: \"sushi\",\n category: \"Food & Drink\",\n aliases: [\"sushi\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍤\",\n description: \"fried shrimp\",\n category: \"Food & Drink\",\n aliases: [\"fried_shrimp\"],\n tags: [\"tempura\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍥\",\n description: \"fish cake with swirl\",\n category: \"Food & Drink\",\n aliases: [\"fish_cake\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥮\",\n description: \"moon cake\",\n category: \"Food & Drink\",\n aliases: [\"moon_cake\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🍡\",\n description: \"dango\",\n category: \"Food & Drink\",\n aliases: [\"dango\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥟\",\n description: \"dumpling\",\n category: \"Food & Drink\",\n aliases: [\"dumpling\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥠\",\n description: \"fortune cookie\",\n category: \"Food & Drink\",\n aliases: [\"fortune_cookie\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥡\",\n description: \"takeout box\",\n category: \"Food & Drink\",\n aliases: [\"takeout_box\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦀\",\n description: \"crab\",\n category: \"Food & Drink\",\n aliases: [\"crab\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦞\",\n description: \"lobster\",\n category: \"Food & Drink\",\n aliases: [\"lobster\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦐\",\n description: \"shrimp\",\n category: \"Food & Drink\",\n aliases: [\"shrimp\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦑\",\n description: \"squid\",\n category: \"Food & Drink\",\n aliases: [\"squid\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦪\",\n description: \"oyster\",\n category: \"Food & Drink\",\n aliases: [\"oyster\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🍦\",\n description: \"soft ice cream\",\n category: \"Food & Drink\",\n aliases: [\"icecream\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍧\",\n description: \"shaved ice\",\n category: \"Food & Drink\",\n aliases: [\"shaved_ice\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍨\",\n description: \"ice cream\",\n category: \"Food & Drink\",\n aliases: [\"ice_cream\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍩\",\n description: \"doughnut\",\n category: \"Food & Drink\",\n aliases: [\"doughnut\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍪\",\n description: \"cookie\",\n category: \"Food & Drink\",\n aliases: [\"cookie\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎂\",\n description: \"birthday cake\",\n category: \"Food & Drink\",\n aliases: [\"birthday\"],\n tags: [\"party\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍰\",\n description: \"shortcake\",\n category: \"Food & Drink\",\n aliases: [\"cake\"],\n tags: [\"dessert\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧁\",\n description: \"cupcake\",\n category: \"Food & Drink\",\n aliases: [\"cupcake\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥧\",\n description: \"pie\",\n category: \"Food & Drink\",\n aliases: [\"pie\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🍫\",\n description: \"chocolate bar\",\n category: \"Food & Drink\",\n aliases: [\"chocolate_bar\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍬\",\n description: \"candy\",\n category: \"Food & Drink\",\n aliases: [\"candy\"],\n tags: [\"sweet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍭\",\n description: \"lollipop\",\n category: \"Food & Drink\",\n aliases: [\"lollipop\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍮\",\n description: \"custard\",\n category: \"Food & Drink\",\n aliases: [\"custard\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍯\",\n description: \"honey pot\",\n category: \"Food & Drink\",\n aliases: [\"honey_pot\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍼\",\n description: \"baby bottle\",\n category: \"Food & Drink\",\n aliases: [\"baby_bottle\"],\n tags: [\"milk\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥛\",\n description: \"glass of milk\",\n category: \"Food & Drink\",\n aliases: [\"milk_glass\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"☕\",\n description: \"hot beverage\",\n category: \"Food & Drink\",\n aliases: [\"coffee\"],\n tags: [\"cafe\", \"espresso\"],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🫖\",\n description: \"teapot\",\n category: \"Food & Drink\",\n aliases: [\"teapot\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🍵\",\n description: \"teacup without handle\",\n category: \"Food & Drink\",\n aliases: [\"tea\"],\n tags: [\"green\", \"breakfast\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍶\",\n description: \"sake\",\n category: \"Food & Drink\",\n aliases: [\"sake\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍾\",\n description: \"bottle with popping cork\",\n category: \"Food & Drink\",\n aliases: [\"champagne\"],\n tags: [\"bottle\", \"bubbly\", \"celebration\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🍷\",\n description: \"wine glass\",\n category: \"Food & Drink\",\n aliases: [\"wine_glass\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍸\",\n description: \"cocktail glass\",\n category: \"Food & Drink\",\n aliases: [\"cocktail\"],\n tags: [\"drink\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍹\",\n description: \"tropical drink\",\n category: \"Food & Drink\",\n aliases: [\"tropical_drink\"],\n tags: [\"summer\", \"vacation\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍺\",\n description: \"beer mug\",\n category: \"Food & Drink\",\n aliases: [\"beer\"],\n tags: [\"drink\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🍻\",\n description: \"clinking beer mugs\",\n category: \"Food & Drink\",\n aliases: [\"beers\"],\n tags: [\"drinks\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥂\",\n description: \"clinking glasses\",\n category: \"Food & Drink\",\n aliases: [\"clinking_glasses\"],\n tags: [\"cheers\", \"toast\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥃\",\n description: \"tumbler glass\",\n category: \"Food & Drink\",\n aliases: [\"tumbler_glass\"],\n tags: [\"whisky\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥤\",\n description: \"cup with straw\",\n category: \"Food & Drink\",\n aliases: [\"cup_with_straw\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧋\",\n description: \"bubble tea\",\n category: \"Food & Drink\",\n aliases: [\"bubble_tea\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧃\",\n description: \"beverage box\",\n category: \"Food & Drink\",\n aliases: [\"beverage_box\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧉\",\n description: \"mate\",\n category: \"Food & Drink\",\n aliases: [\"mate\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧊\",\n description: \"ice\",\n category: \"Food & Drink\",\n aliases: [\"ice_cube\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🥢\",\n description: \"chopsticks\",\n category: \"Food & Drink\",\n aliases: [\"chopsticks\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🍽️\",\n description: \"fork and knife with plate\",\n category: \"Food & Drink\",\n aliases: [\"plate_with_cutlery\"],\n tags: [\"dining\", \"dinner\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🍴\",\n description: \"fork and knife\",\n category: \"Food & Drink\",\n aliases: [\"fork_and_knife\"],\n tags: [\"cutlery\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥄\",\n description: \"spoon\",\n category: \"Food & Drink\",\n aliases: [\"spoon\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🔪\",\n description: \"kitchen knife\",\n category: \"Food & Drink\",\n aliases: [\"hocho\", \"knife\"],\n tags: [\"cut\", \"chop\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏺\",\n description: \"amphora\",\n category: \"Food & Drink\",\n aliases: [\"amphora\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌍\",\n description: \"globe showing Europe-Africa\",\n category: \"Travel & Places\",\n aliases: [\"earth_africa\"],\n tags: [\"globe\", \"world\", \"international\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌎\",\n description: \"globe showing Americas\",\n category: \"Travel & Places\",\n aliases: [\"earth_americas\"],\n tags: [\"globe\", \"world\", \"international\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌏\",\n description: \"globe showing Asia-Australia\",\n category: \"Travel & Places\",\n aliases: [\"earth_asia\"],\n tags: [\"globe\", \"world\", \"international\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌐\",\n description: \"globe with meridians\",\n category: \"Travel & Places\",\n aliases: [\"globe_with_meridians\"],\n tags: [\"world\", \"global\", \"international\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗺️\",\n description: \"world map\",\n category: \"Travel & Places\",\n aliases: [\"world_map\"],\n tags: [\"travel\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗾\",\n description: \"map of Japan\",\n category: \"Travel & Places\",\n aliases: [\"japan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧭\",\n description: \"compass\",\n category: \"Travel & Places\",\n aliases: [\"compass\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🏔️\",\n description: \"snow-capped mountain\",\n category: \"Travel & Places\",\n aliases: [\"mountain_snow\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛰️\",\n description: \"mountain\",\n category: \"Travel & Places\",\n aliases: [\"mountain\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌋\",\n description: \"volcano\",\n category: \"Travel & Places\",\n aliases: [\"volcano\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗻\",\n description: \"mount fuji\",\n category: \"Travel & Places\",\n aliases: [\"mount_fuji\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏕️\",\n description: \"camping\",\n category: \"Travel & Places\",\n aliases: [\"camping\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏖️\",\n description: \"beach with umbrella\",\n category: \"Travel & Places\",\n aliases: [\"beach_umbrella\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏜️\",\n description: \"desert\",\n category: \"Travel & Places\",\n aliases: [\"desert\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏝️\",\n description: \"desert island\",\n category: \"Travel & Places\",\n aliases: [\"desert_island\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏞️\",\n description: \"national park\",\n category: \"Travel & Places\",\n aliases: [\"national_park\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏟️\",\n description: \"stadium\",\n category: \"Travel & Places\",\n aliases: [\"stadium\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏛️\",\n description: \"classical building\",\n category: \"Travel & Places\",\n aliases: [\"classical_building\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏗️\",\n description: \"building construction\",\n category: \"Travel & Places\",\n aliases: [\"building_construction\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🧱\",\n description: \"brick\",\n category: \"Travel & Places\",\n aliases: [\"bricks\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪨\",\n description: \"rock\",\n category: \"Travel & Places\",\n aliases: [\"rock\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪵\",\n description: \"wood\",\n category: \"Travel & Places\",\n aliases: [\"wood\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🛖\",\n description: \"hut\",\n category: \"Travel & Places\",\n aliases: [\"hut\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🏘️\",\n description: \"houses\",\n category: \"Travel & Places\",\n aliases: [\"houses\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏚️\",\n description: \"derelict house\",\n category: \"Travel & Places\",\n aliases: [\"derelict_house\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏠\",\n description: \"house\",\n category: \"Travel & Places\",\n aliases: [\"house\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏡\",\n description: \"house with garden\",\n category: \"Travel & Places\",\n aliases: [\"house_with_garden\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏢\",\n description: \"office building\",\n category: \"Travel & Places\",\n aliases: [\"office\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏣\",\n description: \"Japanese post office\",\n category: \"Travel & Places\",\n aliases: [\"post_office\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏤\",\n description: \"post office\",\n category: \"Travel & Places\",\n aliases: [\"european_post_office\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏥\",\n description: \"hospital\",\n category: \"Travel & Places\",\n aliases: [\"hospital\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏦\",\n description: \"bank\",\n category: \"Travel & Places\",\n aliases: [\"bank\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏨\",\n description: \"hotel\",\n category: \"Travel & Places\",\n aliases: [\"hotel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏩\",\n description: \"love hotel\",\n category: \"Travel & Places\",\n aliases: [\"love_hotel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏪\",\n description: \"convenience store\",\n category: \"Travel & Places\",\n aliases: [\"convenience_store\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏫\",\n description: \"school\",\n category: \"Travel & Places\",\n aliases: [\"school\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏬\",\n description: \"department store\",\n category: \"Travel & Places\",\n aliases: [\"department_store\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏭\",\n description: \"factory\",\n category: \"Travel & Places\",\n aliases: [\"factory\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏯\",\n description: \"Japanese castle\",\n category: \"Travel & Places\",\n aliases: [\"japanese_castle\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏰\",\n description: \"castle\",\n category: \"Travel & Places\",\n aliases: [\"european_castle\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💒\",\n description: \"wedding\",\n category: \"Travel & Places\",\n aliases: [\"wedding\"],\n tags: [\"marriage\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗼\",\n description: \"Tokyo tower\",\n category: \"Travel & Places\",\n aliases: [\"tokyo_tower\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗽\",\n description: \"Statue of Liberty\",\n category: \"Travel & Places\",\n aliases: [\"statue_of_liberty\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛪\",\n description: \"church\",\n category: \"Travel & Places\",\n aliases: [\"church\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕌\",\n description: \"mosque\",\n category: \"Travel & Places\",\n aliases: [\"mosque\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛕\",\n description: \"hindu temple\",\n category: \"Travel & Places\",\n aliases: [\"hindu_temple\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🕍\",\n description: \"synagogue\",\n category: \"Travel & Places\",\n aliases: [\"synagogue\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛩️\",\n description: \"shinto shrine\",\n category: \"Travel & Places\",\n aliases: [\"shinto_shrine\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕋\",\n description: \"kaaba\",\n category: \"Travel & Places\",\n aliases: [\"kaaba\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛲\",\n description: \"fountain\",\n category: \"Travel & Places\",\n aliases: [\"fountain\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛺\",\n description: \"tent\",\n category: \"Travel & Places\",\n aliases: [\"tent\"],\n tags: [\"camping\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌁\",\n description: \"foggy\",\n category: \"Travel & Places\",\n aliases: [\"foggy\"],\n tags: [\"karl\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌃\",\n description: \"night with stars\",\n category: \"Travel & Places\",\n aliases: [\"night_with_stars\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏙️\",\n description: \"cityscape\",\n category: \"Travel & Places\",\n aliases: [\"cityscape\"],\n tags: [\"skyline\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌄\",\n description: \"sunrise over mountains\",\n category: \"Travel & Places\",\n aliases: [\"sunrise_over_mountains\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌅\",\n description: \"sunrise\",\n category: \"Travel & Places\",\n aliases: [\"sunrise\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌆\",\n description: \"cityscape at dusk\",\n category: \"Travel & Places\",\n aliases: [\"city_sunset\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌇\",\n description: \"sunset\",\n category: \"Travel & Places\",\n aliases: [\"city_sunrise\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌉\",\n description: \"bridge at night\",\n category: \"Travel & Places\",\n aliases: [\"bridge_at_night\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♨️\",\n description: \"hot springs\",\n category: \"Travel & Places\",\n aliases: [\"hotsprings\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎠\",\n description: \"carousel horse\",\n category: \"Travel & Places\",\n aliases: [\"carousel_horse\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎡\",\n description: \"ferris wheel\",\n category: \"Travel & Places\",\n aliases: [\"ferris_wheel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎢\",\n description: \"roller coaster\",\n category: \"Travel & Places\",\n aliases: [\"roller_coaster\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💈\",\n description: \"barber pole\",\n category: \"Travel & Places\",\n aliases: [\"barber\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎪\",\n description: \"circus tent\",\n category: \"Travel & Places\",\n aliases: [\"circus_tent\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚂\",\n description: \"locomotive\",\n category: \"Travel & Places\",\n aliases: [\"steam_locomotive\"],\n tags: [\"train\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚃\",\n description: \"railway car\",\n category: \"Travel & Places\",\n aliases: [\"railway_car\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚄\",\n description: \"high-speed train\",\n category: \"Travel & Places\",\n aliases: [\"bullettrain_side\"],\n tags: [\"train\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚅\",\n description: \"bullet train\",\n category: \"Travel & Places\",\n aliases: [\"bullettrain_front\"],\n tags: [\"train\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚆\",\n description: \"train\",\n category: \"Travel & Places\",\n aliases: [\"train2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚇\",\n description: \"metro\",\n category: \"Travel & Places\",\n aliases: [\"metro\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚈\",\n description: \"light rail\",\n category: \"Travel & Places\",\n aliases: [\"light_rail\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚉\",\n description: \"station\",\n category: \"Travel & Places\",\n aliases: [\"station\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚊\",\n description: \"tram\",\n category: \"Travel & Places\",\n aliases: [\"tram\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚝\",\n description: \"monorail\",\n category: \"Travel & Places\",\n aliases: [\"monorail\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚞\",\n description: \"mountain railway\",\n category: \"Travel & Places\",\n aliases: [\"mountain_railway\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚋\",\n description: \"tram car\",\n category: \"Travel & Places\",\n aliases: [\"train\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚌\",\n description: \"bus\",\n category: \"Travel & Places\",\n aliases: [\"bus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚍\",\n description: \"oncoming bus\",\n category: \"Travel & Places\",\n aliases: [\"oncoming_bus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚎\",\n description: \"trolleybus\",\n category: \"Travel & Places\",\n aliases: [\"trolleybus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚐\",\n description: \"minibus\",\n category: \"Travel & Places\",\n aliases: [\"minibus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚑\",\n description: \"ambulance\",\n category: \"Travel & Places\",\n aliases: [\"ambulance\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚒\",\n description: \"fire engine\",\n category: \"Travel & Places\",\n aliases: [\"fire_engine\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚓\",\n description: \"police car\",\n category: \"Travel & Places\",\n aliases: [\"police_car\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚔\",\n description: \"oncoming police car\",\n category: \"Travel & Places\",\n aliases: [\"oncoming_police_car\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚕\",\n description: \"taxi\",\n category: \"Travel & Places\",\n aliases: [\"taxi\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚖\",\n description: \"oncoming taxi\",\n category: \"Travel & Places\",\n aliases: [\"oncoming_taxi\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚗\",\n description: \"automobile\",\n category: \"Travel & Places\",\n aliases: [\"car\", \"red_car\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚘\",\n description: \"oncoming automobile\",\n category: \"Travel & Places\",\n aliases: [\"oncoming_automobile\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚙\",\n description: \"sport utility vehicle\",\n category: \"Travel & Places\",\n aliases: [\"blue_car\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛻\",\n description: \"pickup truck\",\n category: \"Travel & Places\",\n aliases: [\"pickup_truck\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🚚\",\n description: \"delivery truck\",\n category: \"Travel & Places\",\n aliases: [\"truck\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚛\",\n description: \"articulated lorry\",\n category: \"Travel & Places\",\n aliases: [\"articulated_lorry\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚜\",\n description: \"tractor\",\n category: \"Travel & Places\",\n aliases: [\"tractor\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏎️\",\n description: \"racing car\",\n category: \"Travel & Places\",\n aliases: [\"racing_car\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏍️\",\n description: \"motorcycle\",\n category: \"Travel & Places\",\n aliases: [\"motorcycle\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛵\",\n description: \"motor scooter\",\n category: \"Travel & Places\",\n aliases: [\"motor_scooter\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🦽\",\n description: \"manual wheelchair\",\n category: \"Travel & Places\",\n aliases: [\"manual_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🦼\",\n description: \"motorized wheelchair\",\n category: \"Travel & Places\",\n aliases: [\"motorized_wheelchair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🛺\",\n description: \"auto rickshaw\",\n category: \"Travel & Places\",\n aliases: [\"auto_rickshaw\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🚲\",\n description: \"bicycle\",\n category: \"Travel & Places\",\n aliases: [\"bike\"],\n tags: [\"bicycle\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛴\",\n description: \"kick scooter\",\n category: \"Travel & Places\",\n aliases: [\"kick_scooter\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🛹\",\n description: \"skateboard\",\n category: \"Travel & Places\",\n aliases: [\"skateboard\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🛼\",\n description: \"roller skate\",\n category: \"Travel & Places\",\n aliases: [\"roller_skate\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🚏\",\n description: \"bus stop\",\n category: \"Travel & Places\",\n aliases: [\"busstop\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛣️\",\n description: \"motorway\",\n category: \"Travel & Places\",\n aliases: [\"motorway\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛤️\",\n description: \"railway track\",\n category: \"Travel & Places\",\n aliases: [\"railway_track\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛢️\",\n description: \"oil drum\",\n category: \"Travel & Places\",\n aliases: [\"oil_drum\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛽\",\n description: \"fuel pump\",\n category: \"Travel & Places\",\n aliases: [\"fuelpump\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚨\",\n description: \"police car light\",\n category: \"Travel & Places\",\n aliases: [\"rotating_light\"],\n tags: [\"911\", \"emergency\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚥\",\n description: \"horizontal traffic light\",\n category: \"Travel & Places\",\n aliases: [\"traffic_light\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚦\",\n description: \"vertical traffic light\",\n category: \"Travel & Places\",\n aliases: [\"vertical_traffic_light\"],\n tags: [\"semaphore\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛑\",\n description: \"stop sign\",\n category: \"Travel & Places\",\n aliases: [\"stop_sign\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🚧\",\n description: \"construction\",\n category: \"Travel & Places\",\n aliases: [\"construction\"],\n tags: [\"wip\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚓\",\n description: \"anchor\",\n category: \"Travel & Places\",\n aliases: [\"anchor\"],\n tags: [\"ship\"],\n unicode_version: \"4.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛵\",\n description: \"sailboat\",\n category: \"Travel & Places\",\n aliases: [\"boat\", \"sailboat\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛶\",\n description: \"canoe\",\n category: \"Travel & Places\",\n aliases: [\"canoe\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🚤\",\n description: \"speedboat\",\n category: \"Travel & Places\",\n aliases: [\"speedboat\"],\n tags: [\"ship\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛳️\",\n description: \"passenger ship\",\n category: \"Travel & Places\",\n aliases: [\"passenger_ship\"],\n tags: [\"cruise\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛴️\",\n description: \"ferry\",\n category: \"Travel & Places\",\n aliases: [\"ferry\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛥️\",\n description: \"motor boat\",\n category: \"Travel & Places\",\n aliases: [\"motor_boat\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🚢\",\n description: \"ship\",\n category: \"Travel & Places\",\n aliases: [\"ship\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✈️\",\n description: \"airplane\",\n category: \"Travel & Places\",\n aliases: [\"airplane\"],\n tags: [\"flight\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛩️\",\n description: \"small airplane\",\n category: \"Travel & Places\",\n aliases: [\"small_airplane\"],\n tags: [\"flight\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛫\",\n description: \"airplane departure\",\n category: \"Travel & Places\",\n aliases: [\"flight_departure\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛬\",\n description: \"airplane arrival\",\n category: \"Travel & Places\",\n aliases: [\"flight_arrival\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🪂\",\n description: \"parachute\",\n category: \"Travel & Places\",\n aliases: [\"parachute\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"💺\",\n description: \"seat\",\n category: \"Travel & Places\",\n aliases: [\"seat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚁\",\n description: \"helicopter\",\n category: \"Travel & Places\",\n aliases: [\"helicopter\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚟\",\n description: \"suspension railway\",\n category: \"Travel & Places\",\n aliases: [\"suspension_railway\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚠\",\n description: \"mountain cableway\",\n category: \"Travel & Places\",\n aliases: [\"mountain_cableway\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚡\",\n description: \"aerial tramway\",\n category: \"Travel & Places\",\n aliases: [\"aerial_tramway\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛰️\",\n description: \"satellite\",\n category: \"Travel & Places\",\n aliases: [\"artificial_satellite\"],\n tags: [\"orbit\", \"space\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🚀\",\n description: \"rocket\",\n category: \"Travel & Places\",\n aliases: [\"rocket\"],\n tags: [\"ship\", \"launch\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛸\",\n description: \"flying saucer\",\n category: \"Travel & Places\",\n aliases: [\"flying_saucer\"],\n tags: [\"ufo\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🛎️\",\n description: \"bellhop bell\",\n category: \"Travel & Places\",\n aliases: [\"bellhop_bell\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🧳\",\n description: \"luggage\",\n category: \"Travel & Places\",\n aliases: [\"luggage\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"⌛\",\n description: \"hourglass done\",\n category: \"Travel & Places\",\n aliases: [\"hourglass\"],\n tags: [\"time\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏳\",\n description: \"hourglass not done\",\n category: \"Travel & Places\",\n aliases: [\"hourglass_flowing_sand\"],\n tags: [\"time\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⌚\",\n description: \"watch\",\n category: \"Travel & Places\",\n aliases: [\"watch\"],\n tags: [\"time\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏰\",\n description: \"alarm clock\",\n category: \"Travel & Places\",\n aliases: [\"alarm_clock\"],\n tags: [\"morning\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏱️\",\n description: \"stopwatch\",\n category: \"Travel & Places\",\n aliases: [\"stopwatch\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⏲️\",\n description: \"timer clock\",\n category: \"Travel & Places\",\n aliases: [\"timer_clock\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕰️\",\n description: \"mantelpiece clock\",\n category: \"Travel & Places\",\n aliases: [\"mantelpiece_clock\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕛\",\n description: \"twelve o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock12\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕧\",\n description: \"twelve-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock1230\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕐\",\n description: \"one o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock1\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕜\",\n description: \"one-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock130\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕑\",\n description: \"two o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕝\",\n description: \"two-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock230\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕒\",\n description: \"three o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock3\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕞\",\n description: \"three-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock330\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕓\",\n description: \"four o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock4\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕟\",\n description: \"four-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock430\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕔\",\n description: \"five o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock5\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕠\",\n description: \"five-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock530\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕕\",\n description: \"six o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock6\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕡\",\n description: \"six-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock630\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕖\",\n description: \"seven o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock7\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕢\",\n description: \"seven-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock730\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕗\",\n description: \"eight o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock8\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕣\",\n description: \"eight-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock830\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕘\",\n description: \"nine o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock9\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕤\",\n description: \"nine-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock930\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕙\",\n description: \"ten o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock10\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕥\",\n description: \"ten-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock1030\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕚\",\n description: \"eleven o’clock\",\n category: \"Travel & Places\",\n aliases: [\"clock11\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕦\",\n description: \"eleven-thirty\",\n category: \"Travel & Places\",\n aliases: [\"clock1130\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌑\",\n description: \"new moon\",\n category: \"Travel & Places\",\n aliases: [\"new_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌒\",\n description: \"waxing crescent moon\",\n category: \"Travel & Places\",\n aliases: [\"waxing_crescent_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌓\",\n description: \"first quarter moon\",\n category: \"Travel & Places\",\n aliases: [\"first_quarter_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌔\",\n description: \"waxing gibbous moon\",\n category: \"Travel & Places\",\n aliases: [\"moon\", \"waxing_gibbous_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌕\",\n description: \"full moon\",\n category: \"Travel & Places\",\n aliases: [\"full_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌖\",\n description: \"waning gibbous moon\",\n category: \"Travel & Places\",\n aliases: [\"waning_gibbous_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌗\",\n description: \"last quarter moon\",\n category: \"Travel & Places\",\n aliases: [\"last_quarter_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌘\",\n description: \"waning crescent moon\",\n category: \"Travel & Places\",\n aliases: [\"waning_crescent_moon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌙\",\n description: \"crescent moon\",\n category: \"Travel & Places\",\n aliases: [\"crescent_moon\"],\n tags: [\"night\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌚\",\n description: \"new moon face\",\n category: \"Travel & Places\",\n aliases: [\"new_moon_with_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌛\",\n description: \"first quarter moon face\",\n category: \"Travel & Places\",\n aliases: [\"first_quarter_moon_with_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌜\",\n description: \"last quarter moon face\",\n category: \"Travel & Places\",\n aliases: [\"last_quarter_moon_with_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌡️\",\n description: \"thermometer\",\n category: \"Travel & Places\",\n aliases: [\"thermometer\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☀️\",\n description: \"sun\",\n category: \"Travel & Places\",\n aliases: [\"sunny\"],\n tags: [\"weather\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌝\",\n description: \"full moon face\",\n category: \"Travel & Places\",\n aliases: [\"full_moon_with_face\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌞\",\n description: \"sun with face\",\n category: \"Travel & Places\",\n aliases: [\"sun_with_face\"],\n tags: [\"summer\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪐\",\n description: \"ringed planet\",\n category: \"Travel & Places\",\n aliases: [\"ringed_planet\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"⭐\",\n description: \"star\",\n category: \"Travel & Places\",\n aliases: [\"star\"],\n tags: [],\n unicode_version: \"5.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌟\",\n description: \"glowing star\",\n category: \"Travel & Places\",\n aliases: [\"star2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌠\",\n description: \"shooting star\",\n category: \"Travel & Places\",\n aliases: [\"stars\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌌\",\n description: \"milky way\",\n category: \"Travel & Places\",\n aliases: [\"milky_way\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☁️\",\n description: \"cloud\",\n category: \"Travel & Places\",\n aliases: [\"cloud\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛅\",\n description: \"sun behind cloud\",\n category: \"Travel & Places\",\n aliases: [\"partly_sunny\"],\n tags: [\"weather\", \"cloud\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛈️\",\n description: \"cloud with lightning and rain\",\n category: \"Travel & Places\",\n aliases: [\"cloud_with_lightning_and_rain\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌤️\",\n description: \"sun behind small cloud\",\n category: \"Travel & Places\",\n aliases: [\"sun_behind_small_cloud\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌥️\",\n description: \"sun behind large cloud\",\n category: \"Travel & Places\",\n aliases: [\"sun_behind_large_cloud\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌦️\",\n description: \"sun behind rain cloud\",\n category: \"Travel & Places\",\n aliases: [\"sun_behind_rain_cloud\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌧️\",\n description: \"cloud with rain\",\n category: \"Travel & Places\",\n aliases: [\"cloud_with_rain\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌨️\",\n description: \"cloud with snow\",\n category: \"Travel & Places\",\n aliases: [\"cloud_with_snow\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌩️\",\n description: \"cloud with lightning\",\n category: \"Travel & Places\",\n aliases: [\"cloud_with_lightning\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌪️\",\n description: \"tornado\",\n category: \"Travel & Places\",\n aliases: [\"tornado\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌫️\",\n description: \"fog\",\n category: \"Travel & Places\",\n aliases: [\"fog\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌬️\",\n description: \"wind face\",\n category: \"Travel & Places\",\n aliases: [\"wind_face\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🌀\",\n description: \"cyclone\",\n category: \"Travel & Places\",\n aliases: [\"cyclone\"],\n tags: [\"swirl\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌈\",\n description: \"rainbow\",\n category: \"Travel & Places\",\n aliases: [\"rainbow\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌂\",\n description: \"closed umbrella\",\n category: \"Travel & Places\",\n aliases: [\"closed_umbrella\"],\n tags: [\"weather\", \"rain\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☂️\",\n description: \"umbrella\",\n category: \"Travel & Places\",\n aliases: [\"open_umbrella\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☔\",\n description: \"umbrella with rain drops\",\n category: \"Travel & Places\",\n aliases: [\"umbrella\"],\n tags: [\"rain\", \"weather\"],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛱️\",\n description: \"umbrella on ground\",\n category: \"Travel & Places\",\n aliases: [\"parasol_on_ground\"],\n tags: [\"beach_umbrella\"],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⚡\",\n description: \"high voltage\",\n category: \"Travel & Places\",\n aliases: [\"zap\"],\n tags: [\"lightning\", \"thunder\"],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❄️\",\n description: \"snowflake\",\n category: \"Travel & Places\",\n aliases: [\"snowflake\"],\n tags: [\"winter\", \"cold\", \"weather\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☃️\",\n description: \"snowman\",\n category: \"Travel & Places\",\n aliases: [\"snowman_with_snow\"],\n tags: [\"winter\", \"christmas\"],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⛄\",\n description: \"snowman without snow\",\n category: \"Travel & Places\",\n aliases: [\"snowman\"],\n tags: [\"winter\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☄️\",\n description: \"comet\",\n category: \"Travel & Places\",\n aliases: [\"comet\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔥\",\n description: \"fire\",\n category: \"Travel & Places\",\n aliases: [\"fire\"],\n tags: [\"burn\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💧\",\n description: \"droplet\",\n category: \"Travel & Places\",\n aliases: [\"droplet\"],\n tags: [\"water\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🌊\",\n description: \"water wave\",\n category: \"Travel & Places\",\n aliases: [\"ocean\"],\n tags: [\"sea\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎃\",\n description: \"jack-o-lantern\",\n category: \"Activities\",\n aliases: [\"jack_o_lantern\"],\n tags: [\"halloween\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎄\",\n description: \"Christmas tree\",\n category: \"Activities\",\n aliases: [\"christmas_tree\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎆\",\n description: \"fireworks\",\n category: \"Activities\",\n aliases: [\"fireworks\"],\n tags: [\"festival\", \"celebration\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎇\",\n description: \"sparkler\",\n category: \"Activities\",\n aliases: [\"sparkler\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧨\",\n description: \"firecracker\",\n category: \"Activities\",\n aliases: [\"firecracker\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"✨\",\n description: \"sparkles\",\n category: \"Activities\",\n aliases: [\"sparkles\"],\n tags: [\"shiny\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎈\",\n description: \"balloon\",\n category: \"Activities\",\n aliases: [\"balloon\"],\n tags: [\"party\", \"birthday\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎉\",\n description: \"party popper\",\n category: \"Activities\",\n aliases: [\"tada\"],\n tags: [\"hooray\", \"party\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎊\",\n description: \"confetti ball\",\n category: \"Activities\",\n aliases: [\"confetti_ball\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎋\",\n description: \"tanabata tree\",\n category: \"Activities\",\n aliases: [\"tanabata_tree\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎍\",\n description: \"pine decoration\",\n category: \"Activities\",\n aliases: [\"bamboo\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎎\",\n description: \"Japanese dolls\",\n category: \"Activities\",\n aliases: [\"dolls\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎏\",\n description: \"carp streamer\",\n category: \"Activities\",\n aliases: [\"flags\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎐\",\n description: \"wind chime\",\n category: \"Activities\",\n aliases: [\"wind_chime\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎑\",\n description: \"moon viewing ceremony\",\n category: \"Activities\",\n aliases: [\"rice_scene\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧧\",\n description: \"red envelope\",\n category: \"Activities\",\n aliases: [\"red_envelope\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎀\",\n description: \"ribbon\",\n category: \"Activities\",\n aliases: [\"ribbon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎁\",\n description: \"wrapped gift\",\n category: \"Activities\",\n aliases: [\"gift\"],\n tags: [\"present\", \"birthday\", \"christmas\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎗️\",\n description: \"reminder ribbon\",\n category: \"Activities\",\n aliases: [\"reminder_ribbon\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎟️\",\n description: \"admission tickets\",\n category: \"Activities\",\n aliases: [\"tickets\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎫\",\n description: \"ticket\",\n category: \"Activities\",\n aliases: [\"ticket\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎖️\",\n description: \"military medal\",\n category: \"Activities\",\n aliases: [\"medal_military\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏆\",\n description: \"trophy\",\n category: \"Activities\",\n aliases: [\"trophy\"],\n tags: [\"award\", \"contest\", \"winner\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏅\",\n description: \"sports medal\",\n category: \"Activities\",\n aliases: [\"medal_sports\"],\n tags: [\"gold\", \"winner\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🥇\",\n description: \"1st place medal\",\n category: \"Activities\",\n aliases: [\"1st_place_medal\"],\n tags: [\"gold\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥈\",\n description: \"2nd place medal\",\n category: \"Activities\",\n aliases: [\"2nd_place_medal\"],\n tags: [\"silver\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥉\",\n description: \"3rd place medal\",\n category: \"Activities\",\n aliases: [\"3rd_place_medal\"],\n tags: [\"bronze\"],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"⚽\",\n description: \"soccer ball\",\n category: \"Activities\",\n aliases: [\"soccer\"],\n tags: [\"sports\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚾\",\n description: \"baseball\",\n category: \"Activities\",\n aliases: [\"baseball\"],\n tags: [\"sports\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥎\",\n description: \"softball\",\n category: \"Activities\",\n aliases: [\"softball\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🏀\",\n description: \"basketball\",\n category: \"Activities\",\n aliases: [\"basketball\"],\n tags: [\"sports\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏐\",\n description: \"volleyball\",\n category: \"Activities\",\n aliases: [\"volleyball\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏈\",\n description: \"american football\",\n category: \"Activities\",\n aliases: [\"football\"],\n tags: [\"sports\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏉\",\n description: \"rugby football\",\n category: \"Activities\",\n aliases: [\"rugby_football\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎾\",\n description: \"tennis\",\n category: \"Activities\",\n aliases: [\"tennis\"],\n tags: [\"sports\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥏\",\n description: \"flying disc\",\n category: \"Activities\",\n aliases: [\"flying_disc\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎳\",\n description: \"bowling\",\n category: \"Activities\",\n aliases: [\"bowling\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏏\",\n description: \"cricket game\",\n category: \"Activities\",\n aliases: [\"cricket_game\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏑\",\n description: \"field hockey\",\n category: \"Activities\",\n aliases: [\"field_hockey\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏒\",\n description: \"ice hockey\",\n category: \"Activities\",\n aliases: [\"ice_hockey\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🥍\",\n description: \"lacrosse\",\n category: \"Activities\",\n aliases: [\"lacrosse\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🏓\",\n description: \"ping pong\",\n category: \"Activities\",\n aliases: [\"ping_pong\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏸\",\n description: \"badminton\",\n category: \"Activities\",\n aliases: [\"badminton\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🥊\",\n description: \"boxing glove\",\n category: \"Activities\",\n aliases: [\"boxing_glove\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥋\",\n description: \"martial arts uniform\",\n category: \"Activities\",\n aliases: [\"martial_arts_uniform\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🥅\",\n description: \"goal net\",\n category: \"Activities\",\n aliases: [\"goal_net\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"⛳\",\n description: \"flag in hole\",\n category: \"Activities\",\n aliases: [\"golf\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛸️\",\n description: \"ice skate\",\n category: \"Activities\",\n aliases: [\"ice_skate\"],\n tags: [\"skating\"],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎣\",\n description: \"fishing pole\",\n category: \"Activities\",\n aliases: [\"fishing_pole_and_fish\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🤿\",\n description: \"diving mask\",\n category: \"Activities\",\n aliases: [\"diving_mask\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🎽\",\n description: \"running shirt\",\n category: \"Activities\",\n aliases: [\"running_shirt_with_sash\"],\n tags: [\"marathon\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎿\",\n description: \"skis\",\n category: \"Activities\",\n aliases: [\"ski\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛷\",\n description: \"sled\",\n category: \"Activities\",\n aliases: [\"sled\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥌\",\n description: \"curling stone\",\n category: \"Activities\",\n aliases: [\"curling_stone\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎯\",\n description: \"bullseye\",\n category: \"Activities\",\n aliases: [\"dart\"],\n tags: [\"target\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪀\",\n description: \"yo-yo\",\n category: \"Activities\",\n aliases: [\"yo_yo\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🪁\",\n description: \"kite\",\n category: \"Activities\",\n aliases: [\"kite\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🎱\",\n description: \"pool 8 ball\",\n category: \"Activities\",\n aliases: [\"8ball\"],\n tags: [\"pool\", \"billiards\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔮\",\n description: \"crystal ball\",\n category: \"Activities\",\n aliases: [\"crystal_ball\"],\n tags: [\"fortune\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪄\",\n description: \"magic wand\",\n category: \"Activities\",\n aliases: [\"magic_wand\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧿\",\n description: \"nazar amulet\",\n category: \"Activities\",\n aliases: [\"nazar_amulet\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎮\",\n description: \"video game\",\n category: \"Activities\",\n aliases: [\"video_game\"],\n tags: [\"play\", \"controller\", \"console\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕹️\",\n description: \"joystick\",\n category: \"Activities\",\n aliases: [\"joystick\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎰\",\n description: \"slot machine\",\n category: \"Activities\",\n aliases: [\"slot_machine\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎲\",\n description: \"game die\",\n category: \"Activities\",\n aliases: [\"game_die\"],\n tags: [\"dice\", \"gambling\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧩\",\n description: \"puzzle piece\",\n category: \"Activities\",\n aliases: [\"jigsaw\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧸\",\n description: \"teddy bear\",\n category: \"Activities\",\n aliases: [\"teddy_bear\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪅\",\n description: \"piñata\",\n category: \"Activities\",\n aliases: [\"pinata\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪆\",\n description: \"nesting dolls\",\n category: \"Activities\",\n aliases: [\"nesting_dolls\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"♠️\",\n description: \"spade suit\",\n category: \"Activities\",\n aliases: [\"spades\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♥️\",\n description: \"heart suit\",\n category: \"Activities\",\n aliases: [\"hearts\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♦️\",\n description: \"diamond suit\",\n category: \"Activities\",\n aliases: [\"diamonds\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♣️\",\n description: \"club suit\",\n category: \"Activities\",\n aliases: [\"clubs\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♟️\",\n description: \"chess pawn\",\n category: \"Activities\",\n aliases: [\"chess_pawn\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🃏\",\n description: \"joker\",\n category: \"Activities\",\n aliases: [\"black_joker\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🀄\",\n description: \"mahjong red dragon\",\n category: \"Activities\",\n aliases: [\"mahjong\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎴\",\n description: \"flower playing cards\",\n category: \"Activities\",\n aliases: [\"flower_playing_cards\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎭\",\n description: \"performing arts\",\n category: \"Activities\",\n aliases: [\"performing_arts\"],\n tags: [\"theater\", \"drama\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🖼️\",\n description: \"framed picture\",\n category: \"Activities\",\n aliases: [\"framed_picture\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎨\",\n description: \"artist palette\",\n category: \"Activities\",\n aliases: [\"art\"],\n tags: [\"design\", \"paint\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧵\",\n description: \"thread\",\n category: \"Activities\",\n aliases: [\"thread\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪡\",\n description: \"sewing needle\",\n category: \"Activities\",\n aliases: [\"sewing_needle\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧶\",\n description: \"yarn\",\n category: \"Activities\",\n aliases: [\"yarn\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪢\",\n description: \"knot\",\n category: \"Activities\",\n aliases: [\"knot\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"👓\",\n description: \"glasses\",\n category: \"Objects\",\n aliases: [\"eyeglasses\"],\n tags: [\"glasses\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕶️\",\n description: \"sunglasses\",\n category: \"Objects\",\n aliases: [\"dark_sunglasses\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🥽\",\n description: \"goggles\",\n category: \"Objects\",\n aliases: [\"goggles\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥼\",\n description: \"lab coat\",\n category: \"Objects\",\n aliases: [\"lab_coat\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🦺\",\n description: \"safety vest\",\n category: \"Objects\",\n aliases: [\"safety_vest\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"👔\",\n description: \"necktie\",\n category: \"Objects\",\n aliases: [\"necktie\"],\n tags: [\"shirt\", \"formal\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👕\",\n description: \"t-shirt\",\n category: \"Objects\",\n aliases: [\"shirt\", \"tshirt\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👖\",\n description: \"jeans\",\n category: \"Objects\",\n aliases: [\"jeans\"],\n tags: [\"pants\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧣\",\n description: \"scarf\",\n category: \"Objects\",\n aliases: [\"scarf\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧤\",\n description: \"gloves\",\n category: \"Objects\",\n aliases: [\"gloves\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧥\",\n description: \"coat\",\n category: \"Objects\",\n aliases: [\"coat\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧦\",\n description: \"socks\",\n category: \"Objects\",\n aliases: [\"socks\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"👗\",\n description: \"dress\",\n category: \"Objects\",\n aliases: [\"dress\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👘\",\n description: \"kimono\",\n category: \"Objects\",\n aliases: [\"kimono\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥻\",\n description: \"sari\",\n category: \"Objects\",\n aliases: [\"sari\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🩱\",\n description: \"one-piece swimsuit\",\n category: \"Objects\",\n aliases: [\"one_piece_swimsuit\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🩲\",\n description: \"briefs\",\n category: \"Objects\",\n aliases: [\"swim_brief\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🩳\",\n description: \"shorts\",\n category: \"Objects\",\n aliases: [\"shorts\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"👙\",\n description: \"bikini\",\n category: \"Objects\",\n aliases: [\"bikini\"],\n tags: [\"beach\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👚\",\n description: \"woman’s clothes\",\n category: \"Objects\",\n aliases: [\"womans_clothes\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👛\",\n description: \"purse\",\n category: \"Objects\",\n aliases: [\"purse\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👜\",\n description: \"handbag\",\n category: \"Objects\",\n aliases: [\"handbag\"],\n tags: [\"bag\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👝\",\n description: \"clutch bag\",\n category: \"Objects\",\n aliases: [\"pouch\"],\n tags: [\"bag\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛍️\",\n description: \"shopping bags\",\n category: \"Objects\",\n aliases: [\"shopping\"],\n tags: [\"bags\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎒\",\n description: \"backpack\",\n category: \"Objects\",\n aliases: [\"school_satchel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🩴\",\n description: \"thong sandal\",\n category: \"Objects\",\n aliases: [\"thong_sandal\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"👞\",\n description: \"man’s shoe\",\n category: \"Objects\",\n aliases: [\"mans_shoe\", \"shoe\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👟\",\n description: \"running shoe\",\n category: \"Objects\",\n aliases: [\"athletic_shoe\"],\n tags: [\"sneaker\", \"sport\", \"running\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🥾\",\n description: \"hiking boot\",\n category: \"Objects\",\n aliases: [\"hiking_boot\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🥿\",\n description: \"flat shoe\",\n category: \"Objects\",\n aliases: [\"flat_shoe\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"👠\",\n description: \"high-heeled shoe\",\n category: \"Objects\",\n aliases: [\"high_heel\"],\n tags: [\"shoe\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👡\",\n description: \"woman’s sandal\",\n category: \"Objects\",\n aliases: [\"sandal\"],\n tags: [\"shoe\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🩰\",\n description: \"ballet shoes\",\n category: \"Objects\",\n aliases: [\"ballet_shoes\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"👢\",\n description: \"woman’s boot\",\n category: \"Objects\",\n aliases: [\"boot\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👑\",\n description: \"crown\",\n category: \"Objects\",\n aliases: [\"crown\"],\n tags: [\"king\", \"queen\", \"royal\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"👒\",\n description: \"woman’s hat\",\n category: \"Objects\",\n aliases: [\"womans_hat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎩\",\n description: \"top hat\",\n category: \"Objects\",\n aliases: [\"tophat\"],\n tags: [\"hat\", \"classy\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎓\",\n description: \"graduation cap\",\n category: \"Objects\",\n aliases: [\"mortar_board\"],\n tags: [\"education\", \"college\", \"university\", \"graduation\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧢\",\n description: \"billed cap\",\n category: \"Objects\",\n aliases: [\"billed_cap\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪖\",\n description: \"military helmet\",\n category: \"Objects\",\n aliases: [\"military_helmet\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"⛑️\",\n description: \"rescue worker’s helmet\",\n category: \"Objects\",\n aliases: [\"rescue_worker_helmet\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📿\",\n description: \"prayer beads\",\n category: \"Objects\",\n aliases: [\"prayer_beads\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💄\",\n description: \"lipstick\",\n category: \"Objects\",\n aliases: [\"lipstick\"],\n tags: [\"makeup\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💍\",\n description: \"ring\",\n category: \"Objects\",\n aliases: [\"ring\"],\n tags: [\"wedding\", \"marriage\", \"engaged\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💎\",\n description: \"gem stone\",\n category: \"Objects\",\n aliases: [\"gem\"],\n tags: [\"diamond\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔇\",\n description: \"muted speaker\",\n category: \"Objects\",\n aliases: [\"mute\"],\n tags: [\"sound\", \"volume\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔈\",\n description: \"speaker low volume\",\n category: \"Objects\",\n aliases: [\"speaker\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔉\",\n description: \"speaker medium volume\",\n category: \"Objects\",\n aliases: [\"sound\"],\n tags: [\"volume\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔊\",\n description: \"speaker high volume\",\n category: \"Objects\",\n aliases: [\"loud_sound\"],\n tags: [\"volume\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📢\",\n description: \"loudspeaker\",\n category: \"Objects\",\n aliases: [\"loudspeaker\"],\n tags: [\"announcement\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📣\",\n description: \"megaphone\",\n category: \"Objects\",\n aliases: [\"mega\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📯\",\n description: \"postal horn\",\n category: \"Objects\",\n aliases: [\"postal_horn\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔔\",\n description: \"bell\",\n category: \"Objects\",\n aliases: [\"bell\"],\n tags: [\"sound\", \"notification\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔕\",\n description: \"bell with slash\",\n category: \"Objects\",\n aliases: [\"no_bell\"],\n tags: [\"volume\", \"off\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎼\",\n description: \"musical score\",\n category: \"Objects\",\n aliases: [\"musical_score\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎵\",\n description: \"musical note\",\n category: \"Objects\",\n aliases: [\"musical_note\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎶\",\n description: \"musical notes\",\n category: \"Objects\",\n aliases: [\"notes\"],\n tags: [\"music\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎙️\",\n description: \"studio microphone\",\n category: \"Objects\",\n aliases: [\"studio_microphone\"],\n tags: [\"podcast\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎚️\",\n description: \"level slider\",\n category: \"Objects\",\n aliases: [\"level_slider\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎛️\",\n description: \"control knobs\",\n category: \"Objects\",\n aliases: [\"control_knobs\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎤\",\n description: \"microphone\",\n category: \"Objects\",\n aliases: [\"microphone\"],\n tags: [\"sing\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎧\",\n description: \"headphone\",\n category: \"Objects\",\n aliases: [\"headphones\"],\n tags: [\"music\", \"earphones\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📻\",\n description: \"radio\",\n category: \"Objects\",\n aliases: [\"radio\"],\n tags: [\"podcast\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎷\",\n description: \"saxophone\",\n category: \"Objects\",\n aliases: [\"saxophone\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪗\",\n description: \"accordion\",\n category: \"Objects\",\n aliases: [\"accordion\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🎸\",\n description: \"guitar\",\n category: \"Objects\",\n aliases: [\"guitar\"],\n tags: [\"rock\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎹\",\n description: \"musical keyboard\",\n category: \"Objects\",\n aliases: [\"musical_keyboard\"],\n tags: [\"piano\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎺\",\n description: \"trumpet\",\n category: \"Objects\",\n aliases: [\"trumpet\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎻\",\n description: \"violin\",\n category: \"Objects\",\n aliases: [\"violin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪕\",\n description: \"banjo\",\n category: \"Objects\",\n aliases: [\"banjo\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🥁\",\n description: \"drum\",\n category: \"Objects\",\n aliases: [\"drum\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🪘\",\n description: \"long drum\",\n category: \"Objects\",\n aliases: [\"long_drum\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"📱\",\n description: \"mobile phone\",\n category: \"Objects\",\n aliases: [\"iphone\"],\n tags: [\"smartphone\", \"mobile\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📲\",\n description: \"mobile phone with arrow\",\n category: \"Objects\",\n aliases: [\"calling\"],\n tags: [\"call\", \"incoming\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☎️\",\n description: \"telephone\",\n category: \"Objects\",\n aliases: [\"phone\", \"telephone\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📞\",\n description: \"telephone receiver\",\n category: \"Objects\",\n aliases: [\"telephone_receiver\"],\n tags: [\"phone\", \"call\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📟\",\n description: \"pager\",\n category: \"Objects\",\n aliases: [\"pager\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📠\",\n description: \"fax machine\",\n category: \"Objects\",\n aliases: [\"fax\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔋\",\n description: \"battery\",\n category: \"Objects\",\n aliases: [\"battery\"],\n tags: [\"power\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔌\",\n description: \"electric plug\",\n category: \"Objects\",\n aliases: [\"electric_plug\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💻\",\n description: \"laptop\",\n category: \"Objects\",\n aliases: [\"computer\"],\n tags: [\"desktop\", \"screen\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🖥️\",\n description: \"desktop computer\",\n category: \"Objects\",\n aliases: [\"desktop_computer\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖨️\",\n description: \"printer\",\n category: \"Objects\",\n aliases: [\"printer\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⌨️\",\n description: \"keyboard\",\n category: \"Objects\",\n aliases: [\"keyboard\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖱️\",\n description: \"computer mouse\",\n category: \"Objects\",\n aliases: [\"computer_mouse\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖲️\",\n description: \"trackball\",\n category: \"Objects\",\n aliases: [\"trackball\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💽\",\n description: \"computer disk\",\n category: \"Objects\",\n aliases: [\"minidisc\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💾\",\n description: \"floppy disk\",\n category: \"Objects\",\n aliases: [\"floppy_disk\"],\n tags: [\"save\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💿\",\n description: \"optical disk\",\n category: \"Objects\",\n aliases: [\"cd\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📀\",\n description: \"dvd\",\n category: \"Objects\",\n aliases: [\"dvd\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧮\",\n description: \"abacus\",\n category: \"Objects\",\n aliases: [\"abacus\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎥\",\n description: \"movie camera\",\n category: \"Objects\",\n aliases: [\"movie_camera\"],\n tags: [\"film\", \"video\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎞️\",\n description: \"film frames\",\n category: \"Objects\",\n aliases: [\"film_strip\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📽️\",\n description: \"film projector\",\n category: \"Objects\",\n aliases: [\"film_projector\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🎬\",\n description: \"clapper board\",\n category: \"Objects\",\n aliases: [\"clapper\"],\n tags: [\"film\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📺\",\n description: \"television\",\n category: \"Objects\",\n aliases: [\"tv\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📷\",\n description: \"camera\",\n category: \"Objects\",\n aliases: [\"camera\"],\n tags: [\"photo\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📸\",\n description: \"camera with flash\",\n category: \"Objects\",\n aliases: [\"camera_flash\"],\n tags: [\"photo\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📹\",\n description: \"video camera\",\n category: \"Objects\",\n aliases: [\"video_camera\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📼\",\n description: \"videocassette\",\n category: \"Objects\",\n aliases: [\"vhs\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔍\",\n description: \"magnifying glass tilted left\",\n category: \"Objects\",\n aliases: [\"mag\"],\n tags: [\"search\", \"zoom\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔎\",\n description: \"magnifying glass tilted right\",\n category: \"Objects\",\n aliases: [\"mag_right\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🕯️\",\n description: \"candle\",\n category: \"Objects\",\n aliases: [\"candle\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💡\",\n description: \"light bulb\",\n category: \"Objects\",\n aliases: [\"bulb\"],\n tags: [\"idea\", \"light\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔦\",\n description: \"flashlight\",\n category: \"Objects\",\n aliases: [\"flashlight\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏮\",\n description: \"red paper lantern\",\n category: \"Objects\",\n aliases: [\"izakaya_lantern\", \"lantern\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪔\",\n description: \"diya lamp\",\n category: \"Objects\",\n aliases: [\"diya_lamp\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"📔\",\n description: \"notebook with decorative cover\",\n category: \"Objects\",\n aliases: [\"notebook_with_decorative_cover\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📕\",\n description: \"closed book\",\n category: \"Objects\",\n aliases: [\"closed_book\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📖\",\n description: \"open book\",\n category: \"Objects\",\n aliases: [\"book\", \"open_book\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📗\",\n description: \"green book\",\n category: \"Objects\",\n aliases: [\"green_book\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📘\",\n description: \"blue book\",\n category: \"Objects\",\n aliases: [\"blue_book\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📙\",\n description: \"orange book\",\n category: \"Objects\",\n aliases: [\"orange_book\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📚\",\n description: \"books\",\n category: \"Objects\",\n aliases: [\"books\"],\n tags: [\"library\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📓\",\n description: \"notebook\",\n category: \"Objects\",\n aliases: [\"notebook\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📒\",\n description: \"ledger\",\n category: \"Objects\",\n aliases: [\"ledger\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📃\",\n description: \"page with curl\",\n category: \"Objects\",\n aliases: [\"page_with_curl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📜\",\n description: \"scroll\",\n category: \"Objects\",\n aliases: [\"scroll\"],\n tags: [\"document\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📄\",\n description: \"page facing up\",\n category: \"Objects\",\n aliases: [\"page_facing_up\"],\n tags: [\"document\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📰\",\n description: \"newspaper\",\n category: \"Objects\",\n aliases: [\"newspaper\"],\n tags: [\"press\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗞️\",\n description: \"rolled-up newspaper\",\n category: \"Objects\",\n aliases: [\"newspaper_roll\"],\n tags: [\"press\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📑\",\n description: \"bookmark tabs\",\n category: \"Objects\",\n aliases: [\"bookmark_tabs\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔖\",\n description: \"bookmark\",\n category: \"Objects\",\n aliases: [\"bookmark\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏷️\",\n description: \"label\",\n category: \"Objects\",\n aliases: [\"label\"],\n tags: [\"tag\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"💰\",\n description: \"money bag\",\n category: \"Objects\",\n aliases: [\"moneybag\"],\n tags: [\"dollar\", \"cream\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪙\",\n description: \"coin\",\n category: \"Objects\",\n aliases: [\"coin\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"💴\",\n description: \"yen banknote\",\n category: \"Objects\",\n aliases: [\"yen\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💵\",\n description: \"dollar banknote\",\n category: \"Objects\",\n aliases: [\"dollar\"],\n tags: [\"money\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💶\",\n description: \"euro banknote\",\n category: \"Objects\",\n aliases: [\"euro\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💷\",\n description: \"pound banknote\",\n category: \"Objects\",\n aliases: [\"pound\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💸\",\n description: \"money with wings\",\n category: \"Objects\",\n aliases: [\"money_with_wings\"],\n tags: [\"dollar\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💳\",\n description: \"credit card\",\n category: \"Objects\",\n aliases: [\"credit_card\"],\n tags: [\"subscription\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🧾\",\n description: \"receipt\",\n category: \"Objects\",\n aliases: [\"receipt\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"💹\",\n description: \"chart increasing with yen\",\n category: \"Objects\",\n aliases: [\"chart\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✉️\",\n description: \"envelope\",\n category: \"Objects\",\n aliases: [\"envelope\"],\n tags: [\"letter\", \"email\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📧\",\n description: \"e-mail\",\n category: \"Objects\",\n aliases: [\"email\", \"e-mail\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📨\",\n description: \"incoming envelope\",\n category: \"Objects\",\n aliases: [\"incoming_envelope\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📩\",\n description: \"envelope with arrow\",\n category: \"Objects\",\n aliases: [\"envelope_with_arrow\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📤\",\n description: \"outbox tray\",\n category: \"Objects\",\n aliases: [\"outbox_tray\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📥\",\n description: \"inbox tray\",\n category: \"Objects\",\n aliases: [\"inbox_tray\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📦\",\n description: \"package\",\n category: \"Objects\",\n aliases: [\"package\"],\n tags: [\"shipping\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📫\",\n description: \"closed mailbox with raised flag\",\n category: \"Objects\",\n aliases: [\"mailbox\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📪\",\n description: \"closed mailbox with lowered flag\",\n category: \"Objects\",\n aliases: [\"mailbox_closed\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📬\",\n description: \"open mailbox with raised flag\",\n category: \"Objects\",\n aliases: [\"mailbox_with_mail\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📭\",\n description: \"open mailbox with lowered flag\",\n category: \"Objects\",\n aliases: [\"mailbox_with_no_mail\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📮\",\n description: \"postbox\",\n category: \"Objects\",\n aliases: [\"postbox\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗳️\",\n description: \"ballot box with ballot\",\n category: \"Objects\",\n aliases: [\"ballot_box\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"✏️\",\n description: \"pencil\",\n category: \"Objects\",\n aliases: [\"pencil2\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✒️\",\n description: \"black nib\",\n category: \"Objects\",\n aliases: [\"black_nib\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🖋️\",\n description: \"fountain pen\",\n category: \"Objects\",\n aliases: [\"fountain_pen\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖊️\",\n description: \"pen\",\n category: \"Objects\",\n aliases: [\"pen\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖌️\",\n description: \"paintbrush\",\n category: \"Objects\",\n aliases: [\"paintbrush\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🖍️\",\n description: \"crayon\",\n category: \"Objects\",\n aliases: [\"crayon\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📝\",\n description: \"memo\",\n category: \"Objects\",\n aliases: [\"memo\", \"pencil\"],\n tags: [\"document\", \"note\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💼\",\n description: \"briefcase\",\n category: \"Objects\",\n aliases: [\"briefcase\"],\n tags: [\"business\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📁\",\n description: \"file folder\",\n category: \"Objects\",\n aliases: [\"file_folder\"],\n tags: [\"directory\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📂\",\n description: \"open file folder\",\n category: \"Objects\",\n aliases: [\"open_file_folder\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗂️\",\n description: \"card index dividers\",\n category: \"Objects\",\n aliases: [\"card_index_dividers\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📅\",\n description: \"calendar\",\n category: \"Objects\",\n aliases: [\"date\"],\n tags: [\"calendar\", \"schedule\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📆\",\n description: \"tear-off calendar\",\n category: \"Objects\",\n aliases: [\"calendar\"],\n tags: [\"schedule\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗒️\",\n description: \"spiral notepad\",\n category: \"Objects\",\n aliases: [\"spiral_notepad\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗓️\",\n description: \"spiral calendar\",\n category: \"Objects\",\n aliases: [\"spiral_calendar\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📇\",\n description: \"card index\",\n category: \"Objects\",\n aliases: [\"card_index\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📈\",\n description: \"chart increasing\",\n category: \"Objects\",\n aliases: [\"chart_with_upwards_trend\"],\n tags: [\"graph\", \"metrics\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📉\",\n description: \"chart decreasing\",\n category: \"Objects\",\n aliases: [\"chart_with_downwards_trend\"],\n tags: [\"graph\", \"metrics\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📊\",\n description: \"bar chart\",\n category: \"Objects\",\n aliases: [\"bar_chart\"],\n tags: [\"stats\", \"metrics\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📋\",\n description: \"clipboard\",\n category: \"Objects\",\n aliases: [\"clipboard\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📌\",\n description: \"pushpin\",\n category: \"Objects\",\n aliases: [\"pushpin\"],\n tags: [\"location\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📍\",\n description: \"round pushpin\",\n category: \"Objects\",\n aliases: [\"round_pushpin\"],\n tags: [\"location\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📎\",\n description: \"paperclip\",\n category: \"Objects\",\n aliases: [\"paperclip\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🖇️\",\n description: \"linked paperclips\",\n category: \"Objects\",\n aliases: [\"paperclips\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"📏\",\n description: \"straight ruler\",\n category: \"Objects\",\n aliases: [\"straight_ruler\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📐\",\n description: \"triangular ruler\",\n category: \"Objects\",\n aliases: [\"triangular_ruler\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✂️\",\n description: \"scissors\",\n category: \"Objects\",\n aliases: [\"scissors\"],\n tags: [\"cut\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗃️\",\n description: \"card file box\",\n category: \"Objects\",\n aliases: [\"card_file_box\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗄️\",\n description: \"file cabinet\",\n category: \"Objects\",\n aliases: [\"file_cabinet\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗑️\",\n description: \"wastebasket\",\n category: \"Objects\",\n aliases: [\"wastebasket\"],\n tags: [\"trash\"],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔒\",\n description: \"locked\",\n category: \"Objects\",\n aliases: [\"lock\"],\n tags: [\"security\", \"private\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔓\",\n description: \"unlocked\",\n category: \"Objects\",\n aliases: [\"unlock\"],\n tags: [\"security\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔏\",\n description: \"locked with pen\",\n category: \"Objects\",\n aliases: [\"lock_with_ink_pen\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔐\",\n description: \"locked with key\",\n category: \"Objects\",\n aliases: [\"closed_lock_with_key\"],\n tags: [\"security\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔑\",\n description: \"key\",\n category: \"Objects\",\n aliases: [\"key\"],\n tags: [\"lock\", \"password\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🗝️\",\n description: \"old key\",\n category: \"Objects\",\n aliases: [\"old_key\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔨\",\n description: \"hammer\",\n category: \"Objects\",\n aliases: [\"hammer\"],\n tags: [\"tool\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪓\",\n description: \"axe\",\n category: \"Objects\",\n aliases: [\"axe\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"⛏️\",\n description: \"pick\",\n category: \"Objects\",\n aliases: [\"pick\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⚒️\",\n description: \"hammer and pick\",\n category: \"Objects\",\n aliases: [\"hammer_and_pick\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛠️\",\n description: \"hammer and wrench\",\n category: \"Objects\",\n aliases: [\"hammer_and_wrench\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗡️\",\n description: \"dagger\",\n category: \"Objects\",\n aliases: [\"dagger\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⚔️\",\n description: \"crossed swords\",\n category: \"Objects\",\n aliases: [\"crossed_swords\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔫\",\n description: \"water pistol\",\n category: \"Objects\",\n aliases: [\"gun\"],\n tags: [\"shoot\", \"weapon\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪃\",\n description: \"boomerang\",\n category: \"Objects\",\n aliases: [\"boomerang\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🏹\",\n description: \"bow and arrow\",\n category: \"Objects\",\n aliases: [\"bow_and_arrow\"],\n tags: [\"archery\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛡️\",\n description: \"shield\",\n category: \"Objects\",\n aliases: [\"shield\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🪚\",\n description: \"carpentry saw\",\n category: \"Objects\",\n aliases: [\"carpentry_saw\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🔧\",\n description: \"wrench\",\n category: \"Objects\",\n aliases: [\"wrench\"],\n tags: [\"tool\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪛\",\n description: \"screwdriver\",\n category: \"Objects\",\n aliases: [\"screwdriver\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🔩\",\n description: \"nut and bolt\",\n category: \"Objects\",\n aliases: [\"nut_and_bolt\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚙️\",\n description: \"gear\",\n category: \"Objects\",\n aliases: [\"gear\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗜️\",\n description: \"clamp\",\n category: \"Objects\",\n aliases: [\"clamp\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⚖️\",\n description: \"balance scale\",\n category: \"Objects\",\n aliases: [\"balance_scale\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🦯\",\n description: \"white cane\",\n category: \"Objects\",\n aliases: [\"probing_cane\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🔗\",\n description: \"link\",\n category: \"Objects\",\n aliases: [\"link\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛓️\",\n description: \"chains\",\n category: \"Objects\",\n aliases: [\"chains\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🪝\",\n description: \"hook\",\n category: \"Objects\",\n aliases: [\"hook\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧰\",\n description: \"toolbox\",\n category: \"Objects\",\n aliases: [\"toolbox\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧲\",\n description: \"magnet\",\n category: \"Objects\",\n aliases: [\"magnet\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪜\",\n description: \"ladder\",\n category: \"Objects\",\n aliases: [\"ladder\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"⚗️\",\n description: \"alembic\",\n category: \"Objects\",\n aliases: [\"alembic\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🧪\",\n description: \"test tube\",\n category: \"Objects\",\n aliases: [\"test_tube\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧫\",\n description: \"petri dish\",\n category: \"Objects\",\n aliases: [\"petri_dish\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧬\",\n description: \"dna\",\n category: \"Objects\",\n aliases: [\"dna\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🔬\",\n description: \"microscope\",\n category: \"Objects\",\n aliases: [\"microscope\"],\n tags: [\"science\", \"laboratory\", \"investigate\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔭\",\n description: \"telescope\",\n category: \"Objects\",\n aliases: [\"telescope\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📡\",\n description: \"satellite antenna\",\n category: \"Objects\",\n aliases: [\"satellite\"],\n tags: [\"signal\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💉\",\n description: \"syringe\",\n category: \"Objects\",\n aliases: [\"syringe\"],\n tags: [\"health\", \"hospital\", \"needle\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🩸\",\n description: \"drop of blood\",\n category: \"Objects\",\n aliases: [\"drop_of_blood\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"💊\",\n description: \"pill\",\n category: \"Objects\",\n aliases: [\"pill\"],\n tags: [\"health\", \"medicine\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🩹\",\n description: \"adhesive bandage\",\n category: \"Objects\",\n aliases: [\"adhesive_bandage\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🩺\",\n description: \"stethoscope\",\n category: \"Objects\",\n aliases: [\"stethoscope\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🚪\",\n description: \"door\",\n category: \"Objects\",\n aliases: [\"door\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛗\",\n description: \"elevator\",\n category: \"Objects\",\n aliases: [\"elevator\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪞\",\n description: \"mirror\",\n category: \"Objects\",\n aliases: [\"mirror\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪟\",\n description: \"window\",\n category: \"Objects\",\n aliases: [\"window\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🛏️\",\n description: \"bed\",\n category: \"Objects\",\n aliases: [\"bed\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🛋️\",\n description: \"couch and lamp\",\n category: \"Objects\",\n aliases: [\"couch_and_lamp\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🪑\",\n description: \"chair\",\n category: \"Objects\",\n aliases: [\"chair\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🚽\",\n description: \"toilet\",\n category: \"Objects\",\n aliases: [\"toilet\"],\n tags: [\"wc\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪠\",\n description: \"plunger\",\n category: \"Objects\",\n aliases: [\"plunger\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🚿\",\n description: \"shower\",\n category: \"Objects\",\n aliases: [\"shower\"],\n tags: [\"bath\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛁\",\n description: \"bathtub\",\n category: \"Objects\",\n aliases: [\"bathtub\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪤\",\n description: \"mouse trap\",\n category: \"Objects\",\n aliases: [\"mouse_trap\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🪒\",\n description: \"razor\",\n category: \"Objects\",\n aliases: [\"razor\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🧴\",\n description: \"lotion bottle\",\n category: \"Objects\",\n aliases: [\"lotion_bottle\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧷\",\n description: \"safety pin\",\n category: \"Objects\",\n aliases: [\"safety_pin\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧹\",\n description: \"broom\",\n category: \"Objects\",\n aliases: [\"broom\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧺\",\n description: \"basket\",\n category: \"Objects\",\n aliases: [\"basket\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧻\",\n description: \"roll of paper\",\n category: \"Objects\",\n aliases: [\"roll_of_paper\"],\n tags: [\"toilet\"],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪣\",\n description: \"bucket\",\n category: \"Objects\",\n aliases: [\"bucket\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧼\",\n description: \"soap\",\n category: \"Objects\",\n aliases: [\"soap\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🪥\",\n description: \"toothbrush\",\n category: \"Objects\",\n aliases: [\"toothbrush\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🧽\",\n description: \"sponge\",\n category: \"Objects\",\n aliases: [\"sponge\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🧯\",\n description: \"fire extinguisher\",\n category: \"Objects\",\n aliases: [\"fire_extinguisher\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🛒\",\n description: \"shopping cart\",\n category: \"Objects\",\n aliases: [\"shopping_cart\"],\n tags: [],\n unicode_version: \"9.0\",\n ios_version: \"10.2\",\n },\n {\n emoji: \"🚬\",\n description: \"cigarette\",\n category: \"Objects\",\n aliases: [\"smoking\"],\n tags: [\"cigarette\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚰️\",\n description: \"coffin\",\n category: \"Objects\",\n aliases: [\"coffin\"],\n tags: [\"funeral\"],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🪦\",\n description: \"headstone\",\n category: \"Objects\",\n aliases: [\"headstone\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"⚱️\",\n description: \"funeral urn\",\n category: \"Objects\",\n aliases: [\"funeral_urn\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🗿\",\n description: \"moai\",\n category: \"Objects\",\n aliases: [\"moyai\"],\n tags: [\"stone\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🪧\",\n description: \"placard\",\n category: \"Objects\",\n aliases: [\"placard\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🏧\",\n description: \"ATM sign\",\n category: \"Symbols\",\n aliases: [\"atm\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚮\",\n description: \"litter in bin sign\",\n category: \"Symbols\",\n aliases: [\"put_litter_in_its_place\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚰\",\n description: \"potable water\",\n category: \"Symbols\",\n aliases: [\"potable_water\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♿\",\n description: \"wheelchair symbol\",\n category: \"Symbols\",\n aliases: [\"wheelchair\"],\n tags: [\"accessibility\"],\n unicode_version: \"4.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚹\",\n description: \"men’s room\",\n category: \"Symbols\",\n aliases: [\"mens\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚺\",\n description: \"women’s room\",\n category: \"Symbols\",\n aliases: [\"womens\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚻\",\n description: \"restroom\",\n category: \"Symbols\",\n aliases: [\"restroom\"],\n tags: [\"toilet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚼\",\n description: \"baby symbol\",\n category: \"Symbols\",\n aliases: [\"baby_symbol\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚾\",\n description: \"water closet\",\n category: \"Symbols\",\n aliases: [\"wc\"],\n tags: [\"toilet\", \"restroom\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛂\",\n description: \"passport control\",\n category: \"Symbols\",\n aliases: [\"passport_control\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛃\",\n description: \"customs\",\n category: \"Symbols\",\n aliases: [\"customs\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛄\",\n description: \"baggage claim\",\n category: \"Symbols\",\n aliases: [\"baggage_claim\"],\n tags: [\"airport\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛅\",\n description: \"left luggage\",\n category: \"Symbols\",\n aliases: [\"left_luggage\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚠️\",\n description: \"warning\",\n category: \"Symbols\",\n aliases: [\"warning\"],\n tags: [\"wip\"],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚸\",\n description: \"children crossing\",\n category: \"Symbols\",\n aliases: [\"children_crossing\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛔\",\n description: \"no entry\",\n category: \"Symbols\",\n aliases: [\"no_entry\"],\n tags: [\"limit\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚫\",\n description: \"prohibited\",\n category: \"Symbols\",\n aliases: [\"no_entry_sign\"],\n tags: [\"block\", \"forbidden\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚳\",\n description: \"no bicycles\",\n category: \"Symbols\",\n aliases: [\"no_bicycles\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚭\",\n description: \"no smoking\",\n category: \"Symbols\",\n aliases: [\"no_smoking\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚯\",\n description: \"no littering\",\n category: \"Symbols\",\n aliases: [\"do_not_litter\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚱\",\n description: \"non-potable water\",\n category: \"Symbols\",\n aliases: [\"non-potable_water\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚷\",\n description: \"no pedestrians\",\n category: \"Symbols\",\n aliases: [\"no_pedestrians\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📵\",\n description: \"no mobile phones\",\n category: \"Symbols\",\n aliases: [\"no_mobile_phones\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔞\",\n description: \"no one under eighteen\",\n category: \"Symbols\",\n aliases: [\"underage\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☢️\",\n description: \"radioactive\",\n category: \"Symbols\",\n aliases: [\"radioactive\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☣️\",\n description: \"biohazard\",\n category: \"Symbols\",\n aliases: [\"biohazard\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⬆️\",\n description: \"up arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_up\"],\n tags: [],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↗️\",\n description: \"up-right arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_upper_right\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➡️\",\n description: \"right arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_right\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↘️\",\n description: \"down-right arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_lower_right\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⬇️\",\n description: \"down arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_down\"],\n tags: [],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↙️\",\n description: \"down-left arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_lower_left\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⬅️\",\n description: \"left arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_left\"],\n tags: [],\n unicode_version: \"4.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↖️\",\n description: \"up-left arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_upper_left\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↕️\",\n description: \"up-down arrow\",\n category: \"Symbols\",\n aliases: [\"arrow_up_down\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↔️\",\n description: \"left-right arrow\",\n category: \"Symbols\",\n aliases: [\"left_right_arrow\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↩️\",\n description: \"right arrow curving left\",\n category: \"Symbols\",\n aliases: [\"leftwards_arrow_with_hook\"],\n tags: [\"return\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"↪️\",\n description: \"left arrow curving right\",\n category: \"Symbols\",\n aliases: [\"arrow_right_hook\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⤴️\",\n description: \"right arrow curving up\",\n category: \"Symbols\",\n aliases: [\"arrow_heading_up\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⤵️\",\n description: \"right arrow curving down\",\n category: \"Symbols\",\n aliases: [\"arrow_heading_down\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔃\",\n description: \"clockwise vertical arrows\",\n category: \"Symbols\",\n aliases: [\"arrows_clockwise\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔄\",\n description: \"counterclockwise arrows button\",\n category: \"Symbols\",\n aliases: [\"arrows_counterclockwise\"],\n tags: [\"sync\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔙\",\n description: \"BACK arrow\",\n category: \"Symbols\",\n aliases: [\"back\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔚\",\n description: \"END arrow\",\n category: \"Symbols\",\n aliases: [\"end\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔛\",\n description: \"ON! arrow\",\n category: \"Symbols\",\n aliases: [\"on\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔜\",\n description: \"SOON arrow\",\n category: \"Symbols\",\n aliases: [\"soon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔝\",\n description: \"TOP arrow\",\n category: \"Symbols\",\n aliases: [\"top\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🛐\",\n description: \"place of worship\",\n category: \"Symbols\",\n aliases: [\"place_of_worship\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⚛️\",\n description: \"atom symbol\",\n category: \"Symbols\",\n aliases: [\"atom_symbol\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕉️\",\n description: \"om\",\n category: \"Symbols\",\n aliases: [\"om\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"✡️\",\n description: \"star of David\",\n category: \"Symbols\",\n aliases: [\"star_of_david\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☸️\",\n description: \"wheel of dharma\",\n category: \"Symbols\",\n aliases: [\"wheel_of_dharma\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☯️\",\n description: \"yin yang\",\n category: \"Symbols\",\n aliases: [\"yin_yang\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"✝️\",\n description: \"latin cross\",\n category: \"Symbols\",\n aliases: [\"latin_cross\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☦️\",\n description: \"orthodox cross\",\n category: \"Symbols\",\n aliases: [\"orthodox_cross\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☪️\",\n description: \"star and crescent\",\n category: \"Symbols\",\n aliases: [\"star_and_crescent\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"☮️\",\n description: \"peace symbol\",\n category: \"Symbols\",\n aliases: [\"peace_symbol\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🕎\",\n description: \"menorah\",\n category: \"Symbols\",\n aliases: [\"menorah\"],\n tags: [],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔯\",\n description: \"dotted six-pointed star\",\n category: \"Symbols\",\n aliases: [\"six_pointed_star\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♈\",\n description: \"Aries\",\n category: \"Symbols\",\n aliases: [\"aries\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♉\",\n description: \"Taurus\",\n category: \"Symbols\",\n aliases: [\"taurus\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♊\",\n description: \"Gemini\",\n category: \"Symbols\",\n aliases: [\"gemini\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♋\",\n description: \"Cancer\",\n category: \"Symbols\",\n aliases: [\"cancer\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♌\",\n description: \"Leo\",\n category: \"Symbols\",\n aliases: [\"leo\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♍\",\n description: \"Virgo\",\n category: \"Symbols\",\n aliases: [\"virgo\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♎\",\n description: \"Libra\",\n category: \"Symbols\",\n aliases: [\"libra\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♏\",\n description: \"Scorpio\",\n category: \"Symbols\",\n aliases: [\"scorpius\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♐\",\n description: \"Sagittarius\",\n category: \"Symbols\",\n aliases: [\"sagittarius\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♑\",\n description: \"Capricorn\",\n category: \"Symbols\",\n aliases: [\"capricorn\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♒\",\n description: \"Aquarius\",\n category: \"Symbols\",\n aliases: [\"aquarius\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♓\",\n description: \"Pisces\",\n category: \"Symbols\",\n aliases: [\"pisces\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⛎\",\n description: \"Ophiuchus\",\n category: \"Symbols\",\n aliases: [\"ophiuchus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔀\",\n description: \"shuffle tracks button\",\n category: \"Symbols\",\n aliases: [\"twisted_rightwards_arrows\"],\n tags: [\"shuffle\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔁\",\n description: \"repeat button\",\n category: \"Symbols\",\n aliases: [\"repeat\"],\n tags: [\"loop\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔂\",\n description: \"repeat single button\",\n category: \"Symbols\",\n aliases: [\"repeat_one\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"▶️\",\n description: \"play button\",\n category: \"Symbols\",\n aliases: [\"arrow_forward\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏩\",\n description: \"fast-forward button\",\n category: \"Symbols\",\n aliases: [\"fast_forward\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏭️\",\n description: \"next track button\",\n category: \"Symbols\",\n aliases: [\"next_track_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⏯️\",\n description: \"play or pause button\",\n category: \"Symbols\",\n aliases: [\"play_or_pause_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"◀️\",\n description: \"reverse button\",\n category: \"Symbols\",\n aliases: [\"arrow_backward\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏪\",\n description: \"fast reverse button\",\n category: \"Symbols\",\n aliases: [\"rewind\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏮️\",\n description: \"last track button\",\n category: \"Symbols\",\n aliases: [\"previous_track_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔼\",\n description: \"upwards button\",\n category: \"Symbols\",\n aliases: [\"arrow_up_small\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏫\",\n description: \"fast up button\",\n category: \"Symbols\",\n aliases: [\"arrow_double_up\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔽\",\n description: \"downwards button\",\n category: \"Symbols\",\n aliases: [\"arrow_down_small\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏬\",\n description: \"fast down button\",\n category: \"Symbols\",\n aliases: [\"arrow_double_down\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⏸️\",\n description: \"pause button\",\n category: \"Symbols\",\n aliases: [\"pause_button\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⏹️\",\n description: \"stop button\",\n category: \"Symbols\",\n aliases: [\"stop_button\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⏺️\",\n description: \"record button\",\n category: \"Symbols\",\n aliases: [\"record_button\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"⏏️\",\n description: \"eject button\",\n category: \"Symbols\",\n aliases: [\"eject_button\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🎦\",\n description: \"cinema\",\n category: \"Symbols\",\n aliases: [\"cinema\"],\n tags: [\"film\", \"movie\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔅\",\n description: \"dim button\",\n category: \"Symbols\",\n aliases: [\"low_brightness\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔆\",\n description: \"bright button\",\n category: \"Symbols\",\n aliases: [\"high_brightness\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📶\",\n description: \"antenna bars\",\n category: \"Symbols\",\n aliases: [\"signal_strength\"],\n tags: [\"wifi\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📳\",\n description: \"vibration mode\",\n category: \"Symbols\",\n aliases: [\"vibration_mode\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📴\",\n description: \"mobile phone off\",\n category: \"Symbols\",\n aliases: [\"mobile_phone_off\"],\n tags: [\"mute\", \"off\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♀️\",\n description: \"female sign\",\n category: \"Symbols\",\n aliases: [\"female_sign\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"♂️\",\n description: \"male sign\",\n category: \"Symbols\",\n aliases: [\"male_sign\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"⚧️\",\n description: \"transgender symbol\",\n category: \"Symbols\",\n aliases: [\"transgender_symbol\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"✖️\",\n description: \"multiply\",\n category: \"Symbols\",\n aliases: [\"heavy_multiplication_x\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➕\",\n description: \"plus\",\n category: \"Symbols\",\n aliases: [\"heavy_plus_sign\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➖\",\n description: \"minus\",\n category: \"Symbols\",\n aliases: [\"heavy_minus_sign\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➗\",\n description: \"divide\",\n category: \"Symbols\",\n aliases: [\"heavy_division_sign\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"♾️\",\n description: \"infinity\",\n category: \"Symbols\",\n aliases: [\"infinity\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"‼️\",\n description: \"double exclamation mark\",\n category: \"Symbols\",\n aliases: [\"bangbang\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⁉️\",\n description: \"exclamation question mark\",\n category: \"Symbols\",\n aliases: [\"interrobang\"],\n tags: [],\n unicode_version: \"3.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❓\",\n description: \"red question mark\",\n category: \"Symbols\",\n aliases: [\"question\"],\n tags: [\"confused\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❔\",\n description: \"white question mark\",\n category: \"Symbols\",\n aliases: [\"grey_question\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❕\",\n description: \"white exclamation mark\",\n category: \"Symbols\",\n aliases: [\"grey_exclamation\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❗\",\n description: \"red exclamation mark\",\n category: \"Symbols\",\n aliases: [\"exclamation\", \"heavy_exclamation_mark\"],\n tags: [\"bang\"],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"〰️\",\n description: \"wavy dash\",\n category: \"Symbols\",\n aliases: [\"wavy_dash\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💱\",\n description: \"currency exchange\",\n category: \"Symbols\",\n aliases: [\"currency_exchange\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💲\",\n description: \"heavy dollar sign\",\n category: \"Symbols\",\n aliases: [\"heavy_dollar_sign\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚕️\",\n description: \"medical symbol\",\n category: \"Symbols\",\n aliases: [\"medical_symbol\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"♻️\",\n description: \"recycling symbol\",\n category: \"Symbols\",\n aliases: [\"recycle\"],\n tags: [\"environment\", \"green\"],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚜️\",\n description: \"fleur-de-lis\",\n category: \"Symbols\",\n aliases: [\"fleur_de_lis\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🔱\",\n description: \"trident emblem\",\n category: \"Symbols\",\n aliases: [\"trident\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"📛\",\n description: \"name badge\",\n category: \"Symbols\",\n aliases: [\"name_badge\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔰\",\n description: \"Japanese symbol for beginner\",\n category: \"Symbols\",\n aliases: [\"beginner\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⭕\",\n description: \"hollow red circle\",\n category: \"Symbols\",\n aliases: [\"o\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✅\",\n description: \"check mark button\",\n category: \"Symbols\",\n aliases: [\"white_check_mark\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"☑️\",\n description: \"check box with check\",\n category: \"Symbols\",\n aliases: [\"ballot_box_with_check\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✔️\",\n description: \"check mark\",\n category: \"Symbols\",\n aliases: [\"heavy_check_mark\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❌\",\n description: \"cross mark\",\n category: \"Symbols\",\n aliases: [\"x\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❎\",\n description: \"cross mark button\",\n category: \"Symbols\",\n aliases: [\"negative_squared_cross_mark\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➰\",\n description: \"curly loop\",\n category: \"Symbols\",\n aliases: [\"curly_loop\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"➿\",\n description: \"double curly loop\",\n category: \"Symbols\",\n aliases: [\"loop\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"〽️\",\n description: \"part alternation mark\",\n category: \"Symbols\",\n aliases: [\"part_alternation_mark\"],\n tags: [],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✳️\",\n description: \"eight-spoked asterisk\",\n category: \"Symbols\",\n aliases: [\"eight_spoked_asterisk\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"✴️\",\n description: \"eight-pointed star\",\n category: \"Symbols\",\n aliases: [\"eight_pointed_black_star\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"❇️\",\n description: \"sparkle\",\n category: \"Symbols\",\n aliases: [\"sparkle\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"©️\",\n description: \"copyright\",\n category: \"Symbols\",\n aliases: [\"copyright\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"®️\",\n description: \"registered\",\n category: \"Symbols\",\n aliases: [\"registered\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"™️\",\n description: \"trade mark\",\n category: \"Symbols\",\n aliases: [\"tm\"],\n tags: [\"trademark\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"#️⃣\",\n description: \"keycap: #\",\n category: \"Symbols\",\n aliases: [\"hash\"],\n tags: [\"number\"],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"*️⃣\",\n description: \"keycap: *\",\n category: \"Symbols\",\n aliases: [\"asterisk\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"0️⃣\",\n description: \"keycap: 0\",\n category: \"Symbols\",\n aliases: [\"zero\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"1️⃣\",\n description: \"keycap: 1\",\n category: \"Symbols\",\n aliases: [\"one\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"2️⃣\",\n description: \"keycap: 2\",\n category: \"Symbols\",\n aliases: [\"two\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"3️⃣\",\n description: \"keycap: 3\",\n category: \"Symbols\",\n aliases: [\"three\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"4️⃣\",\n description: \"keycap: 4\",\n category: \"Symbols\",\n aliases: [\"four\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"5️⃣\",\n description: \"keycap: 5\",\n category: \"Symbols\",\n aliases: [\"five\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"6️⃣\",\n description: \"keycap: 6\",\n category: \"Symbols\",\n aliases: [\"six\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"7️⃣\",\n description: \"keycap: 7\",\n category: \"Symbols\",\n aliases: [\"seven\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"8️⃣\",\n description: \"keycap: 8\",\n category: \"Symbols\",\n aliases: [\"eight\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"9️⃣\",\n description: \"keycap: 9\",\n category: \"Symbols\",\n aliases: [\"nine\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔟\",\n description: \"keycap: 10\",\n category: \"Symbols\",\n aliases: [\"keycap_ten\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔠\",\n description: \"input latin uppercase\",\n category: \"Symbols\",\n aliases: [\"capital_abcd\"],\n tags: [\"letters\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔡\",\n description: \"input latin lowercase\",\n category: \"Symbols\",\n aliases: [\"abcd\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔢\",\n description: \"input numbers\",\n category: \"Symbols\",\n aliases: [\"1234\"],\n tags: [\"numbers\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔣\",\n description: \"input symbols\",\n category: \"Symbols\",\n aliases: [\"symbols\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔤\",\n description: \"input latin letters\",\n category: \"Symbols\",\n aliases: [\"abc\"],\n tags: [\"alphabet\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🅰️\",\n description: \"A button (blood type)\",\n category: \"Symbols\",\n aliases: [\"a\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆎\",\n description: \"AB button (blood type)\",\n category: \"Symbols\",\n aliases: [\"ab\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🅱️\",\n description: \"B button (blood type)\",\n category: \"Symbols\",\n aliases: [\"b\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆑\",\n description: \"CL button\",\n category: \"Symbols\",\n aliases: [\"cl\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆒\",\n description: \"COOL button\",\n category: \"Symbols\",\n aliases: [\"cool\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆓\",\n description: \"FREE button\",\n category: \"Symbols\",\n aliases: [\"free\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"ℹ️\",\n description: \"information\",\n category: \"Symbols\",\n aliases: [\"information_source\"],\n tags: [],\n unicode_version: \"3.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆔\",\n description: \"ID button\",\n category: \"Symbols\",\n aliases: [\"id\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"Ⓜ️\",\n description: \"circled M\",\n category: \"Symbols\",\n aliases: [\"m\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆕\",\n description: \"NEW button\",\n category: \"Symbols\",\n aliases: [\"new\"],\n tags: [\"fresh\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆖\",\n description: \"NG button\",\n category: \"Symbols\",\n aliases: [\"ng\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🅾️\",\n description: \"O button (blood type)\",\n category: \"Symbols\",\n aliases: [\"o2\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆗\",\n description: \"OK button\",\n category: \"Symbols\",\n aliases: [\"ok\"],\n tags: [\"yes\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🅿️\",\n description: \"P button\",\n category: \"Symbols\",\n aliases: [\"parking\"],\n tags: [],\n unicode_version: \"5.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆘\",\n description: \"SOS button\",\n category: \"Symbols\",\n aliases: [\"sos\"],\n tags: [\"help\", \"emergency\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆙\",\n description: \"UP! button\",\n category: \"Symbols\",\n aliases: [\"up\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🆚\",\n description: \"VS button\",\n category: \"Symbols\",\n aliases: [\"vs\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈁\",\n description: \"Japanese “here” button\",\n category: \"Symbols\",\n aliases: [\"koko\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈂️\",\n description: \"Japanese “service charge” button\",\n category: \"Symbols\",\n aliases: [\"sa\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈷️\",\n description: \"Japanese “monthly amount” button\",\n category: \"Symbols\",\n aliases: [\"u6708\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈶\",\n description: \"Japanese “not free of charge” button\",\n category: \"Symbols\",\n aliases: [\"u6709\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈯\",\n description: \"Japanese “reserved” button\",\n category: \"Symbols\",\n aliases: [\"u6307\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🉐\",\n description: \"Japanese “bargain” button\",\n category: \"Symbols\",\n aliases: [\"ideograph_advantage\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈹\",\n description: \"Japanese “discount” button\",\n category: \"Symbols\",\n aliases: [\"u5272\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈚\",\n description: \"Japanese “free of charge” button\",\n category: \"Symbols\",\n aliases: [\"u7121\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈲\",\n description: \"Japanese “prohibited” button\",\n category: \"Symbols\",\n aliases: [\"u7981\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🉑\",\n description: \"Japanese “acceptable” button\",\n category: \"Symbols\",\n aliases: [\"accept\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈸\",\n description: \"Japanese “application” button\",\n category: \"Symbols\",\n aliases: [\"u7533\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈴\",\n description: \"Japanese “passing grade” button\",\n category: \"Symbols\",\n aliases: [\"u5408\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈳\",\n description: \"Japanese “vacancy” button\",\n category: \"Symbols\",\n aliases: [\"u7a7a\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"㊗️\",\n description: \"Japanese “congratulations” button\",\n category: \"Symbols\",\n aliases: [\"congratulations\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"㊙️\",\n description: \"Japanese “secret” button\",\n category: \"Symbols\",\n aliases: [\"secret\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈺\",\n description: \"Japanese “open for business” button\",\n category: \"Symbols\",\n aliases: [\"u55b6\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🈵\",\n description: \"Japanese “no vacancy” button\",\n category: \"Symbols\",\n aliases: [\"u6e80\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔴\",\n description: \"red circle\",\n category: \"Symbols\",\n aliases: [\"red_circle\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🟠\",\n description: \"orange circle\",\n category: \"Symbols\",\n aliases: [\"orange_circle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟡\",\n description: \"yellow circle\",\n category: \"Symbols\",\n aliases: [\"yellow_circle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟢\",\n description: \"green circle\",\n category: \"Symbols\",\n aliases: [\"green_circle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🔵\",\n description: \"blue circle\",\n category: \"Symbols\",\n aliases: [\"large_blue_circle\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🟣\",\n description: \"purple circle\",\n category: \"Symbols\",\n aliases: [\"purple_circle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟤\",\n description: \"brown circle\",\n category: \"Symbols\",\n aliases: [\"brown_circle\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"⚫\",\n description: \"black circle\",\n category: \"Symbols\",\n aliases: [\"black_circle\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⚪\",\n description: \"white circle\",\n category: \"Symbols\",\n aliases: [\"white_circle\"],\n tags: [],\n unicode_version: \"4.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🟥\",\n description: \"red square\",\n category: \"Symbols\",\n aliases: [\"red_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟧\",\n description: \"orange square\",\n category: \"Symbols\",\n aliases: [\"orange_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟨\",\n description: \"yellow square\",\n category: \"Symbols\",\n aliases: [\"yellow_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟩\",\n description: \"green square\",\n category: \"Symbols\",\n aliases: [\"green_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟦\",\n description: \"blue square\",\n category: \"Symbols\",\n aliases: [\"blue_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟪\",\n description: \"purple square\",\n category: \"Symbols\",\n aliases: [\"purple_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"🟫\",\n description: \"brown square\",\n category: \"Symbols\",\n aliases: [\"brown_square\"],\n tags: [],\n unicode_version: \"12.0\",\n ios_version: \"13.0\",\n },\n {\n emoji: \"⬛\",\n description: \"black large square\",\n category: \"Symbols\",\n aliases: [\"black_large_square\"],\n tags: [],\n unicode_version: \"5.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"⬜\",\n description: \"white large square\",\n category: \"Symbols\",\n aliases: [\"white_large_square\"],\n tags: [],\n unicode_version: \"5.1\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"◼️\",\n description: \"black medium square\",\n category: \"Symbols\",\n aliases: [\"black_medium_square\"],\n tags: [],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"◻️\",\n description: \"white medium square\",\n category: \"Symbols\",\n aliases: [\"white_medium_square\"],\n tags: [],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"◾\",\n description: \"black medium-small square\",\n category: \"Symbols\",\n aliases: [\"black_medium_small_square\"],\n tags: [],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"◽\",\n description: \"white medium-small square\",\n category: \"Symbols\",\n aliases: [\"white_medium_small_square\"],\n tags: [],\n unicode_version: \"3.2\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"▪️\",\n description: \"black small square\",\n category: \"Symbols\",\n aliases: [\"black_small_square\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"▫️\",\n description: \"white small square\",\n category: \"Symbols\",\n aliases: [\"white_small_square\"],\n tags: [],\n unicode_version: \"\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔶\",\n description: \"large orange diamond\",\n category: \"Symbols\",\n aliases: [\"large_orange_diamond\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔷\",\n description: \"large blue diamond\",\n category: \"Symbols\",\n aliases: [\"large_blue_diamond\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔸\",\n description: \"small orange diamond\",\n category: \"Symbols\",\n aliases: [\"small_orange_diamond\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔹\",\n description: \"small blue diamond\",\n category: \"Symbols\",\n aliases: [\"small_blue_diamond\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔺\",\n description: \"red triangle pointed up\",\n category: \"Symbols\",\n aliases: [\"small_red_triangle\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔻\",\n description: \"red triangle pointed down\",\n category: \"Symbols\",\n aliases: [\"small_red_triangle_down\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"💠\",\n description: \"diamond with a dot\",\n category: \"Symbols\",\n aliases: [\"diamond_shape_with_a_dot_inside\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔘\",\n description: \"radio button\",\n category: \"Symbols\",\n aliases: [\"radio_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔳\",\n description: \"white square button\",\n category: \"Symbols\",\n aliases: [\"white_square_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🔲\",\n description: \"black square button\",\n category: \"Symbols\",\n aliases: [\"black_square_button\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏁\",\n description: \"chequered flag\",\n category: \"Flags\",\n aliases: [\"checkered_flag\"],\n tags: [\"milestone\", \"finish\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🚩\",\n description: \"triangular flag\",\n category: \"Flags\",\n aliases: [\"triangular_flag_on_post\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🎌\",\n description: \"crossed flags\",\n category: \"Flags\",\n aliases: [\"crossed_flags\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🏴\",\n description: \"black flag\",\n category: \"Flags\",\n aliases: [\"black_flag\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏳️\",\n description: \"white flag\",\n category: \"Flags\",\n aliases: [\"white_flag\"],\n tags: [],\n unicode_version: \"7.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🏳️🌈\",\n description: \"rainbow flag\",\n category: \"Flags\",\n aliases: [\"rainbow_flag\"],\n tags: [\"pride\"],\n unicode_version: \"6.0\",\n ios_version: \"10.0\",\n },\n {\n emoji: \"🏳️⚧️\",\n description: \"transgender flag\",\n category: \"Flags\",\n aliases: [\"transgender_flag\"],\n tags: [],\n unicode_version: \"13.0\",\n ios_version: \"14.0\",\n },\n {\n emoji: \"🏴☠️\",\n description: \"pirate flag\",\n category: \"Flags\",\n aliases: [\"pirate_flag\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇦🇨\",\n description: \"flag: Ascension Island\",\n category: \"Flags\",\n aliases: [\"ascension_island\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇦🇩\",\n description: \"flag: Andorra\",\n category: \"Flags\",\n aliases: [\"andorra\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇪\",\n description: \"flag: United Arab Emirates\",\n category: \"Flags\",\n aliases: [\"united_arab_emirates\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇫\",\n description: \"flag: Afghanistan\",\n category: \"Flags\",\n aliases: [\"afghanistan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇬\",\n description: \"flag: Antigua & Barbuda\",\n category: \"Flags\",\n aliases: [\"antigua_barbuda\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇮\",\n description: \"flag: Anguilla\",\n category: \"Flags\",\n aliases: [\"anguilla\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇱\",\n description: \"flag: Albania\",\n category: \"Flags\",\n aliases: [\"albania\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇲\",\n description: \"flag: Armenia\",\n category: \"Flags\",\n aliases: [\"armenia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇴\",\n description: \"flag: Angola\",\n category: \"Flags\",\n aliases: [\"angola\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇶\",\n description: \"flag: Antarctica\",\n category: \"Flags\",\n aliases: [\"antarctica\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇦🇷\",\n description: \"flag: Argentina\",\n category: \"Flags\",\n aliases: [\"argentina\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇸\",\n description: \"flag: American Samoa\",\n category: \"Flags\",\n aliases: [\"american_samoa\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇹\",\n description: \"flag: Austria\",\n category: \"Flags\",\n aliases: [\"austria\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇺\",\n description: \"flag: Australia\",\n category: \"Flags\",\n aliases: [\"australia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇼\",\n description: \"flag: Aruba\",\n category: \"Flags\",\n aliases: [\"aruba\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇦🇽\",\n description: \"flag: Åland Islands\",\n category: \"Flags\",\n aliases: [\"aland_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇦🇿\",\n description: \"flag: Azerbaijan\",\n category: \"Flags\",\n aliases: [\"azerbaijan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇦\",\n description: \"flag: Bosnia & Herzegovina\",\n category: \"Flags\",\n aliases: [\"bosnia_herzegovina\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇧\",\n description: \"flag: Barbados\",\n category: \"Flags\",\n aliases: [\"barbados\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇩\",\n description: \"flag: Bangladesh\",\n category: \"Flags\",\n aliases: [\"bangladesh\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇪\",\n description: \"flag: Belgium\",\n category: \"Flags\",\n aliases: [\"belgium\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇫\",\n description: \"flag: Burkina Faso\",\n category: \"Flags\",\n aliases: [\"burkina_faso\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇬\",\n description: \"flag: Bulgaria\",\n category: \"Flags\",\n aliases: [\"bulgaria\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇭\",\n description: \"flag: Bahrain\",\n category: \"Flags\",\n aliases: [\"bahrain\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇮\",\n description: \"flag: Burundi\",\n category: \"Flags\",\n aliases: [\"burundi\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇯\",\n description: \"flag: Benin\",\n category: \"Flags\",\n aliases: [\"benin\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇱\",\n description: \"flag: St. Barthélemy\",\n category: \"Flags\",\n aliases: [\"st_barthelemy\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇧🇲\",\n description: \"flag: Bermuda\",\n category: \"Flags\",\n aliases: [\"bermuda\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇳\",\n description: \"flag: Brunei\",\n category: \"Flags\",\n aliases: [\"brunei\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇴\",\n description: \"flag: Bolivia\",\n category: \"Flags\",\n aliases: [\"bolivia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇶\",\n description: \"flag: Caribbean Netherlands\",\n category: \"Flags\",\n aliases: [\"caribbean_netherlands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇧🇷\",\n description: \"flag: Brazil\",\n category: \"Flags\",\n aliases: [\"brazil\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇸\",\n description: \"flag: Bahamas\",\n category: \"Flags\",\n aliases: [\"bahamas\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇹\",\n description: \"flag: Bhutan\",\n category: \"Flags\",\n aliases: [\"bhutan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇻\",\n description: \"flag: Bouvet Island\",\n category: \"Flags\",\n aliases: [\"bouvet_island\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇧🇼\",\n description: \"flag: Botswana\",\n category: \"Flags\",\n aliases: [\"botswana\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇾\",\n description: \"flag: Belarus\",\n category: \"Flags\",\n aliases: [\"belarus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇧🇿\",\n description: \"flag: Belize\",\n category: \"Flags\",\n aliases: [\"belize\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇦\",\n description: \"flag: Canada\",\n category: \"Flags\",\n aliases: [\"canada\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇨\",\n description: \"flag: Cocos (Keeling) Islands\",\n category: \"Flags\",\n aliases: [\"cocos_islands\"],\n tags: [\"keeling\"],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇨🇩\",\n description: \"flag: Congo - Kinshasa\",\n category: \"Flags\",\n aliases: [\"congo_kinshasa\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇫\",\n description: \"flag: Central African Republic\",\n category: \"Flags\",\n aliases: [\"central_african_republic\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇬\",\n description: \"flag: Congo - Brazzaville\",\n category: \"Flags\",\n aliases: [\"congo_brazzaville\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇭\",\n description: \"flag: Switzerland\",\n category: \"Flags\",\n aliases: [\"switzerland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇮\",\n description: \"flag: Côte d’Ivoire\",\n category: \"Flags\",\n aliases: [\"cote_divoire\"],\n tags: [\"ivory\"],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇰\",\n description: \"flag: Cook Islands\",\n category: \"Flags\",\n aliases: [\"cook_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇱\",\n description: \"flag: Chile\",\n category: \"Flags\",\n aliases: [\"chile\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇲\",\n description: \"flag: Cameroon\",\n category: \"Flags\",\n aliases: [\"cameroon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇳\",\n description: \"flag: China\",\n category: \"Flags\",\n aliases: [\"cn\"],\n tags: [\"china\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇨🇴\",\n description: \"flag: Colombia\",\n category: \"Flags\",\n aliases: [\"colombia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇵\",\n description: \"flag: Clipperton Island\",\n category: \"Flags\",\n aliases: [\"clipperton_island\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇨🇷\",\n description: \"flag: Costa Rica\",\n category: \"Flags\",\n aliases: [\"costa_rica\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇺\",\n description: \"flag: Cuba\",\n category: \"Flags\",\n aliases: [\"cuba\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇻\",\n description: \"flag: Cape Verde\",\n category: \"Flags\",\n aliases: [\"cape_verde\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇼\",\n description: \"flag: Curaçao\",\n category: \"Flags\",\n aliases: [\"curacao\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇽\",\n description: \"flag: Christmas Island\",\n category: \"Flags\",\n aliases: [\"christmas_island\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇨🇾\",\n description: \"flag: Cyprus\",\n category: \"Flags\",\n aliases: [\"cyprus\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇨🇿\",\n description: \"flag: Czechia\",\n category: \"Flags\",\n aliases: [\"czech_republic\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇩🇪\",\n description: \"flag: Germany\",\n category: \"Flags\",\n aliases: [\"de\"],\n tags: [\"flag\", \"germany\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇩🇬\",\n description: \"flag: Diego Garcia\",\n category: \"Flags\",\n aliases: [\"diego_garcia\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇩🇯\",\n description: \"flag: Djibouti\",\n category: \"Flags\",\n aliases: [\"djibouti\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇩🇰\",\n description: \"flag: Denmark\",\n category: \"Flags\",\n aliases: [\"denmark\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇩🇲\",\n description: \"flag: Dominica\",\n category: \"Flags\",\n aliases: [\"dominica\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇩🇴\",\n description: \"flag: Dominican Republic\",\n category: \"Flags\",\n aliases: [\"dominican_republic\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇩🇿\",\n description: \"flag: Algeria\",\n category: \"Flags\",\n aliases: [\"algeria\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇦\",\n description: \"flag: Ceuta & Melilla\",\n category: \"Flags\",\n aliases: [\"ceuta_melilla\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇪🇨\",\n description: \"flag: Ecuador\",\n category: \"Flags\",\n aliases: [\"ecuador\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇪\",\n description: \"flag: Estonia\",\n category: \"Flags\",\n aliases: [\"estonia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇬\",\n description: \"flag: Egypt\",\n category: \"Flags\",\n aliases: [\"egypt\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇭\",\n description: \"flag: Western Sahara\",\n category: \"Flags\",\n aliases: [\"western_sahara\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇪🇷\",\n description: \"flag: Eritrea\",\n category: \"Flags\",\n aliases: [\"eritrea\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇸\",\n description: \"flag: Spain\",\n category: \"Flags\",\n aliases: [\"es\"],\n tags: [\"spain\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇪🇹\",\n description: \"flag: Ethiopia\",\n category: \"Flags\",\n aliases: [\"ethiopia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇪🇺\",\n description: \"flag: European Union\",\n category: \"Flags\",\n aliases: [\"eu\", \"european_union\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇫🇮\",\n description: \"flag: Finland\",\n category: \"Flags\",\n aliases: [\"finland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇫🇯\",\n description: \"flag: Fiji\",\n category: \"Flags\",\n aliases: [\"fiji\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇫🇰\",\n description: \"flag: Falkland Islands\",\n category: \"Flags\",\n aliases: [\"falkland_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇫🇲\",\n description: \"flag: Micronesia\",\n category: \"Flags\",\n aliases: [\"micronesia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇫🇴\",\n description: \"flag: Faroe Islands\",\n category: \"Flags\",\n aliases: [\"faroe_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇫🇷\",\n description: \"flag: France\",\n category: \"Flags\",\n aliases: [\"fr\"],\n tags: [\"france\", \"french\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇬🇦\",\n description: \"flag: Gabon\",\n category: \"Flags\",\n aliases: [\"gabon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇧\",\n description: \"flag: United Kingdom\",\n category: \"Flags\",\n aliases: [\"gb\", \"uk\"],\n tags: [\"flag\", \"british\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇬🇩\",\n description: \"flag: Grenada\",\n category: \"Flags\",\n aliases: [\"grenada\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇪\",\n description: \"flag: Georgia\",\n category: \"Flags\",\n aliases: [\"georgia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇫\",\n description: \"flag: French Guiana\",\n category: \"Flags\",\n aliases: [\"french_guiana\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇬\",\n description: \"flag: Guernsey\",\n category: \"Flags\",\n aliases: [\"guernsey\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇬🇭\",\n description: \"flag: Ghana\",\n category: \"Flags\",\n aliases: [\"ghana\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇮\",\n description: \"flag: Gibraltar\",\n category: \"Flags\",\n aliases: [\"gibraltar\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇱\",\n description: \"flag: Greenland\",\n category: \"Flags\",\n aliases: [\"greenland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇬🇲\",\n description: \"flag: Gambia\",\n category: \"Flags\",\n aliases: [\"gambia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇳\",\n description: \"flag: Guinea\",\n category: \"Flags\",\n aliases: [\"guinea\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇵\",\n description: \"flag: Guadeloupe\",\n category: \"Flags\",\n aliases: [\"guadeloupe\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇬🇶\",\n description: \"flag: Equatorial Guinea\",\n category: \"Flags\",\n aliases: [\"equatorial_guinea\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇷\",\n description: \"flag: Greece\",\n category: \"Flags\",\n aliases: [\"greece\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇸\",\n description: \"flag: South Georgia & South Sandwich Islands\",\n category: \"Flags\",\n aliases: [\"south_georgia_south_sandwich_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇬🇹\",\n description: \"flag: Guatemala\",\n category: \"Flags\",\n aliases: [\"guatemala\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇺\",\n description: \"flag: Guam\",\n category: \"Flags\",\n aliases: [\"guam\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇼\",\n description: \"flag: Guinea-Bissau\",\n category: \"Flags\",\n aliases: [\"guinea_bissau\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇬🇾\",\n description: \"flag: Guyana\",\n category: \"Flags\",\n aliases: [\"guyana\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇭🇰\",\n description: \"flag: Hong Kong SAR China\",\n category: \"Flags\",\n aliases: [\"hong_kong\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇭🇲\",\n description: \"flag: Heard & McDonald Islands\",\n category: \"Flags\",\n aliases: [\"heard_mcdonald_islands\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇭🇳\",\n description: \"flag: Honduras\",\n category: \"Flags\",\n aliases: [\"honduras\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇭🇷\",\n description: \"flag: Croatia\",\n category: \"Flags\",\n aliases: [\"croatia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇭🇹\",\n description: \"flag: Haiti\",\n category: \"Flags\",\n aliases: [\"haiti\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇭🇺\",\n description: \"flag: Hungary\",\n category: \"Flags\",\n aliases: [\"hungary\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇨\",\n description: \"flag: Canary Islands\",\n category: \"Flags\",\n aliases: [\"canary_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇮🇩\",\n description: \"flag: Indonesia\",\n category: \"Flags\",\n aliases: [\"indonesia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇪\",\n description: \"flag: Ireland\",\n category: \"Flags\",\n aliases: [\"ireland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇱\",\n description: \"flag: Israel\",\n category: \"Flags\",\n aliases: [\"israel\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇲\",\n description: \"flag: Isle of Man\",\n category: \"Flags\",\n aliases: [\"isle_of_man\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇮🇳\",\n description: \"flag: India\",\n category: \"Flags\",\n aliases: [\"india\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇴\",\n description: \"flag: British Indian Ocean Territory\",\n category: \"Flags\",\n aliases: [\"british_indian_ocean_territory\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇮🇶\",\n description: \"flag: Iraq\",\n category: \"Flags\",\n aliases: [\"iraq\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇷\",\n description: \"flag: Iran\",\n category: \"Flags\",\n aliases: [\"iran\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇸\",\n description: \"flag: Iceland\",\n category: \"Flags\",\n aliases: [\"iceland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇮🇹\",\n description: \"flag: Italy\",\n category: \"Flags\",\n aliases: [\"it\"],\n tags: [\"italy\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇯🇪\",\n description: \"flag: Jersey\",\n category: \"Flags\",\n aliases: [\"jersey\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇯🇲\",\n description: \"flag: Jamaica\",\n category: \"Flags\",\n aliases: [\"jamaica\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇯🇴\",\n description: \"flag: Jordan\",\n category: \"Flags\",\n aliases: [\"jordan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇯🇵\",\n description: \"flag: Japan\",\n category: \"Flags\",\n aliases: [\"jp\"],\n tags: [\"japan\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇰🇪\",\n description: \"flag: Kenya\",\n category: \"Flags\",\n aliases: [\"kenya\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇬\",\n description: \"flag: Kyrgyzstan\",\n category: \"Flags\",\n aliases: [\"kyrgyzstan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇭\",\n description: \"flag: Cambodia\",\n category: \"Flags\",\n aliases: [\"cambodia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇮\",\n description: \"flag: Kiribati\",\n category: \"Flags\",\n aliases: [\"kiribati\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇲\",\n description: \"flag: Comoros\",\n category: \"Flags\",\n aliases: [\"comoros\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇳\",\n description: \"flag: St. Kitts & Nevis\",\n category: \"Flags\",\n aliases: [\"st_kitts_nevis\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇵\",\n description: \"flag: North Korea\",\n category: \"Flags\",\n aliases: [\"north_korea\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇷\",\n description: \"flag: South Korea\",\n category: \"Flags\",\n aliases: [\"kr\"],\n tags: [\"korea\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇰🇼\",\n description: \"flag: Kuwait\",\n category: \"Flags\",\n aliases: [\"kuwait\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇾\",\n description: \"flag: Cayman Islands\",\n category: \"Flags\",\n aliases: [\"cayman_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇰🇿\",\n description: \"flag: Kazakhstan\",\n category: \"Flags\",\n aliases: [\"kazakhstan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇦\",\n description: \"flag: Laos\",\n category: \"Flags\",\n aliases: [\"laos\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇧\",\n description: \"flag: Lebanon\",\n category: \"Flags\",\n aliases: [\"lebanon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇨\",\n description: \"flag: St. Lucia\",\n category: \"Flags\",\n aliases: [\"st_lucia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇮\",\n description: \"flag: Liechtenstein\",\n category: \"Flags\",\n aliases: [\"liechtenstein\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇰\",\n description: \"flag: Sri Lanka\",\n category: \"Flags\",\n aliases: [\"sri_lanka\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇷\",\n description: \"flag: Liberia\",\n category: \"Flags\",\n aliases: [\"liberia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇸\",\n description: \"flag: Lesotho\",\n category: \"Flags\",\n aliases: [\"lesotho\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇹\",\n description: \"flag: Lithuania\",\n category: \"Flags\",\n aliases: [\"lithuania\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇺\",\n description: \"flag: Luxembourg\",\n category: \"Flags\",\n aliases: [\"luxembourg\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇻\",\n description: \"flag: Latvia\",\n category: \"Flags\",\n aliases: [\"latvia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇱🇾\",\n description: \"flag: Libya\",\n category: \"Flags\",\n aliases: [\"libya\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇦\",\n description: \"flag: Morocco\",\n category: \"Flags\",\n aliases: [\"morocco\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇨\",\n description: \"flag: Monaco\",\n category: \"Flags\",\n aliases: [\"monaco\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇲🇩\",\n description: \"flag: Moldova\",\n category: \"Flags\",\n aliases: [\"moldova\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇪\",\n description: \"flag: Montenegro\",\n category: \"Flags\",\n aliases: [\"montenegro\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇫\",\n description: \"flag: St. Martin\",\n category: \"Flags\",\n aliases: [\"st_martin\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇲🇬\",\n description: \"flag: Madagascar\",\n category: \"Flags\",\n aliases: [\"madagascar\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇭\",\n description: \"flag: Marshall Islands\",\n category: \"Flags\",\n aliases: [\"marshall_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇲🇰\",\n description: \"flag: North Macedonia\",\n category: \"Flags\",\n aliases: [\"macedonia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇱\",\n description: \"flag: Mali\",\n category: \"Flags\",\n aliases: [\"mali\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇲\",\n description: \"flag: Myanmar (Burma)\",\n category: \"Flags\",\n aliases: [\"myanmar\"],\n tags: [\"burma\"],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇳\",\n description: \"flag: Mongolia\",\n category: \"Flags\",\n aliases: [\"mongolia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇴\",\n description: \"flag: Macao SAR China\",\n category: \"Flags\",\n aliases: [\"macau\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇵\",\n description: \"flag: Northern Mariana Islands\",\n category: \"Flags\",\n aliases: [\"northern_mariana_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇶\",\n description: \"flag: Martinique\",\n category: \"Flags\",\n aliases: [\"martinique\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇲🇷\",\n description: \"flag: Mauritania\",\n category: \"Flags\",\n aliases: [\"mauritania\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇸\",\n description: \"flag: Montserrat\",\n category: \"Flags\",\n aliases: [\"montserrat\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇹\",\n description: \"flag: Malta\",\n category: \"Flags\",\n aliases: [\"malta\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇺\",\n description: \"flag: Mauritius\",\n category: \"Flags\",\n aliases: [\"mauritius\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇲🇻\",\n description: \"flag: Maldives\",\n category: \"Flags\",\n aliases: [\"maldives\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇼\",\n description: \"flag: Malawi\",\n category: \"Flags\",\n aliases: [\"malawi\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇽\",\n description: \"flag: Mexico\",\n category: \"Flags\",\n aliases: [\"mexico\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇾\",\n description: \"flag: Malaysia\",\n category: \"Flags\",\n aliases: [\"malaysia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇲🇿\",\n description: \"flag: Mozambique\",\n category: \"Flags\",\n aliases: [\"mozambique\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇦\",\n description: \"flag: Namibia\",\n category: \"Flags\",\n aliases: [\"namibia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇨\",\n description: \"flag: New Caledonia\",\n category: \"Flags\",\n aliases: [\"new_caledonia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇪\",\n description: \"flag: Niger\",\n category: \"Flags\",\n aliases: [\"niger\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇫\",\n description: \"flag: Norfolk Island\",\n category: \"Flags\",\n aliases: [\"norfolk_island\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇳🇬\",\n description: \"flag: Nigeria\",\n category: \"Flags\",\n aliases: [\"nigeria\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇮\",\n description: \"flag: Nicaragua\",\n category: \"Flags\",\n aliases: [\"nicaragua\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇱\",\n description: \"flag: Netherlands\",\n category: \"Flags\",\n aliases: [\"netherlands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇴\",\n description: \"flag: Norway\",\n category: \"Flags\",\n aliases: [\"norway\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇵\",\n description: \"flag: Nepal\",\n category: \"Flags\",\n aliases: [\"nepal\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇷\",\n description: \"flag: Nauru\",\n category: \"Flags\",\n aliases: [\"nauru\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇳🇺\",\n description: \"flag: Niue\",\n category: \"Flags\",\n aliases: [\"niue\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇳🇿\",\n description: \"flag: New Zealand\",\n category: \"Flags\",\n aliases: [\"new_zealand\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇴🇲\",\n description: \"flag: Oman\",\n category: \"Flags\",\n aliases: [\"oman\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇦\",\n description: \"flag: Panama\",\n category: \"Flags\",\n aliases: [\"panama\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇪\",\n description: \"flag: Peru\",\n category: \"Flags\",\n aliases: [\"peru\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇫\",\n description: \"flag: French Polynesia\",\n category: \"Flags\",\n aliases: [\"french_polynesia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇵🇬\",\n description: \"flag: Papua New Guinea\",\n category: \"Flags\",\n aliases: [\"papua_new_guinea\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇭\",\n description: \"flag: Philippines\",\n category: \"Flags\",\n aliases: [\"philippines\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇰\",\n description: \"flag: Pakistan\",\n category: \"Flags\",\n aliases: [\"pakistan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇱\",\n description: \"flag: Poland\",\n category: \"Flags\",\n aliases: [\"poland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇲\",\n description: \"flag: St. Pierre & Miquelon\",\n category: \"Flags\",\n aliases: [\"st_pierre_miquelon\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇵🇳\",\n description: \"flag: Pitcairn Islands\",\n category: \"Flags\",\n aliases: [\"pitcairn_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇵🇷\",\n description: \"flag: Puerto Rico\",\n category: \"Flags\",\n aliases: [\"puerto_rico\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇸\",\n description: \"flag: Palestinian Territories\",\n category: \"Flags\",\n aliases: [\"palestinian_territories\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇹\",\n description: \"flag: Portugal\",\n category: \"Flags\",\n aliases: [\"portugal\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇼\",\n description: \"flag: Palau\",\n category: \"Flags\",\n aliases: [\"palau\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇵🇾\",\n description: \"flag: Paraguay\",\n category: \"Flags\",\n aliases: [\"paraguay\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇶🇦\",\n description: \"flag: Qatar\",\n category: \"Flags\",\n aliases: [\"qatar\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇷🇪\",\n description: \"flag: Réunion\",\n category: \"Flags\",\n aliases: [\"reunion\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇷🇴\",\n description: \"flag: Romania\",\n category: \"Flags\",\n aliases: [\"romania\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇷🇸\",\n description: \"flag: Serbia\",\n category: \"Flags\",\n aliases: [\"serbia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇷🇺\",\n description: \"flag: Russia\",\n category: \"Flags\",\n aliases: [\"ru\"],\n tags: [\"russia\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇷🇼\",\n description: \"flag: Rwanda\",\n category: \"Flags\",\n aliases: [\"rwanda\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇦\",\n description: \"flag: Saudi Arabia\",\n category: \"Flags\",\n aliases: [\"saudi_arabia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇧\",\n description: \"flag: Solomon Islands\",\n category: \"Flags\",\n aliases: [\"solomon_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇨\",\n description: \"flag: Seychelles\",\n category: \"Flags\",\n aliases: [\"seychelles\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇩\",\n description: \"flag: Sudan\",\n category: \"Flags\",\n aliases: [\"sudan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇪\",\n description: \"flag: Sweden\",\n category: \"Flags\",\n aliases: [\"sweden\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇬\",\n description: \"flag: Singapore\",\n category: \"Flags\",\n aliases: [\"singapore\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇭\",\n description: \"flag: St. Helena\",\n category: \"Flags\",\n aliases: [\"st_helena\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇸🇮\",\n description: \"flag: Slovenia\",\n category: \"Flags\",\n aliases: [\"slovenia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇯\",\n description: \"flag: Svalbard & Jan Mayen\",\n category: \"Flags\",\n aliases: [\"svalbard_jan_mayen\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇸🇰\",\n description: \"flag: Slovakia\",\n category: \"Flags\",\n aliases: [\"slovakia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇱\",\n description: \"flag: Sierra Leone\",\n category: \"Flags\",\n aliases: [\"sierra_leone\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇲\",\n description: \"flag: San Marino\",\n category: \"Flags\",\n aliases: [\"san_marino\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇳\",\n description: \"flag: Senegal\",\n category: \"Flags\",\n aliases: [\"senegal\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇴\",\n description: \"flag: Somalia\",\n category: \"Flags\",\n aliases: [\"somalia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇷\",\n description: \"flag: Suriname\",\n category: \"Flags\",\n aliases: [\"suriname\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇸\",\n description: \"flag: South Sudan\",\n category: \"Flags\",\n aliases: [\"south_sudan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇹\",\n description: \"flag: São Tomé & Príncipe\",\n category: \"Flags\",\n aliases: [\"sao_tome_principe\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇻\",\n description: \"flag: El Salvador\",\n category: \"Flags\",\n aliases: [\"el_salvador\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇽\",\n description: \"flag: Sint Maarten\",\n category: \"Flags\",\n aliases: [\"sint_maarten\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇾\",\n description: \"flag: Syria\",\n category: \"Flags\",\n aliases: [\"syria\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇸🇿\",\n description: \"flag: Eswatini\",\n category: \"Flags\",\n aliases: [\"swaziland\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇦\",\n description: \"flag: Tristan da Cunha\",\n category: \"Flags\",\n aliases: [\"tristan_da_cunha\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇹🇨\",\n description: \"flag: Turks & Caicos Islands\",\n category: \"Flags\",\n aliases: [\"turks_caicos_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇩\",\n description: \"flag: Chad\",\n category: \"Flags\",\n aliases: [\"chad\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇹🇫\",\n description: \"flag: French Southern Territories\",\n category: \"Flags\",\n aliases: [\"french_southern_territories\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇬\",\n description: \"flag: Togo\",\n category: \"Flags\",\n aliases: [\"togo\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇭\",\n description: \"flag: Thailand\",\n category: \"Flags\",\n aliases: [\"thailand\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇯\",\n description: \"flag: Tajikistan\",\n category: \"Flags\",\n aliases: [\"tajikistan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇰\",\n description: \"flag: Tokelau\",\n category: \"Flags\",\n aliases: [\"tokelau\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇹🇱\",\n description: \"flag: Timor-Leste\",\n category: \"Flags\",\n aliases: [\"timor_leste\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇲\",\n description: \"flag: Turkmenistan\",\n category: \"Flags\",\n aliases: [\"turkmenistan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇳\",\n description: \"flag: Tunisia\",\n category: \"Flags\",\n aliases: [\"tunisia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇴\",\n description: \"flag: Tonga\",\n category: \"Flags\",\n aliases: [\"tonga\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇷\",\n description: \"flag: Turkey\",\n category: \"Flags\",\n aliases: [\"tr\"],\n tags: [\"turkey\"],\n unicode_version: \"8.0\",\n ios_version: \"9.1\",\n },\n {\n emoji: \"🇹🇹\",\n description: \"flag: Trinidad & Tobago\",\n category: \"Flags\",\n aliases: [\"trinidad_tobago\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇻\",\n description: \"flag: Tuvalu\",\n category: \"Flags\",\n aliases: [\"tuvalu\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇹🇼\",\n description: \"flag: Taiwan\",\n category: \"Flags\",\n aliases: [\"taiwan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇹🇿\",\n description: \"flag: Tanzania\",\n category: \"Flags\",\n aliases: [\"tanzania\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇺🇦\",\n description: \"flag: Ukraine\",\n category: \"Flags\",\n aliases: [\"ukraine\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇺🇬\",\n description: \"flag: Uganda\",\n category: \"Flags\",\n aliases: [\"uganda\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇺🇲\",\n description: \"flag: U.S. Outlying Islands\",\n category: \"Flags\",\n aliases: [\"us_outlying_islands\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇺🇳\",\n description: \"flag: United Nations\",\n category: \"Flags\",\n aliases: [\"united_nations\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🇺🇸\",\n description: \"flag: United States\",\n category: \"Flags\",\n aliases: [\"us\"],\n tags: [\"flag\", \"united\", \"america\"],\n unicode_version: \"6.0\",\n ios_version: \"6.0\",\n },\n {\n emoji: \"🇺🇾\",\n description: \"flag: Uruguay\",\n category: \"Flags\",\n aliases: [\"uruguay\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇺🇿\",\n description: \"flag: Uzbekistan\",\n category: \"Flags\",\n aliases: [\"uzbekistan\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇦\",\n description: \"flag: Vatican City\",\n category: \"Flags\",\n aliases: [\"vatican_city\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇻🇨\",\n description: \"flag: St. Vincent & Grenadines\",\n category: \"Flags\",\n aliases: [\"st_vincent_grenadines\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇪\",\n description: \"flag: Venezuela\",\n category: \"Flags\",\n aliases: [\"venezuela\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇬\",\n description: \"flag: British Virgin Islands\",\n category: \"Flags\",\n aliases: [\"british_virgin_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇮\",\n description: \"flag: U.S. Virgin Islands\",\n category: \"Flags\",\n aliases: [\"us_virgin_islands\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇳\",\n description: \"flag: Vietnam\",\n category: \"Flags\",\n aliases: [\"vietnam\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇻🇺\",\n description: \"flag: Vanuatu\",\n category: \"Flags\",\n aliases: [\"vanuatu\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇼🇫\",\n description: \"flag: Wallis & Futuna\",\n category: \"Flags\",\n aliases: [\"wallis_futuna\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇼🇸\",\n description: \"flag: Samoa\",\n category: \"Flags\",\n aliases: [\"samoa\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇽🇰\",\n description: \"flag: Kosovo\",\n category: \"Flags\",\n aliases: [\"kosovo\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇾🇪\",\n description: \"flag: Yemen\",\n category: \"Flags\",\n aliases: [\"yemen\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇾🇹\",\n description: \"flag: Mayotte\",\n category: \"Flags\",\n aliases: [\"mayotte\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"9.0\",\n },\n {\n emoji: \"🇿🇦\",\n description: \"flag: South Africa\",\n category: \"Flags\",\n aliases: [\"south_africa\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇿🇲\",\n description: \"flag: Zambia\",\n category: \"Flags\",\n aliases: [\"zambia\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🇿🇼\",\n description: \"flag: Zimbabwe\",\n category: \"Flags\",\n aliases: [\"zimbabwe\"],\n tags: [],\n unicode_version: \"6.0\",\n ios_version: \"8.3\",\n },\n {\n emoji: \"🏴\",\n description: \"flag: England\",\n category: \"Flags\",\n aliases: [\"england\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🏴\",\n description: \"flag: Scotland\",\n category: \"Flags\",\n aliases: [\"scotland\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n {\n emoji: \"🏴\",\n description: \"flag: Wales\",\n category: \"Flags\",\n aliases: [\"wales\"],\n tags: [],\n unicode_version: \"11.0\",\n ios_version: \"12.1\",\n },\n]\n\nexport default emojiList\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport * as React from \"react\"\nimport { useCallback, useEffect, useMemo, useState } from \"react\"\nimport dynamic from \"next/dynamic\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n MenuOption,\n useBasicTypeaheadTriggerMatch,\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\"\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n TextNode,\n} from \"lexical\"\nimport { createPortal } from \"react-dom\"\n\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"../ui/command\"\n\nconst LexicalTypeaheadMenuPlugin = dynamic(\n () =>\n import(\"@lexical/react/LexicalTypeaheadMenuPlugin\").then(\n (mod) => mod.LexicalTypeaheadMenuPlugin<EmojiOption>\n ),\n { ssr: false }\n)\n\nclass EmojiOption extends MenuOption {\n title: string\n emoji: string\n keywords: Array<string>\n\n constructor(\n title: string,\n emoji: string,\n options: {\n keywords?: Array<string>\n }\n ) {\n super(title)\n this.title = title\n this.emoji = emoji\n this.keywords = options.keywords || []\n }\n}\n\ntype Emoji = {\n emoji: string\n description: string\n category: string\n aliases: Array<string>\n tags: Array<string>\n unicode_version: string\n ios_version: string\n skin_tones?: boolean\n}\n\nconst MAX_EMOJI_SUGGESTION_COUNT = 10\n\nexport function EmojiPickerPlugin() {\n const [editor] = useLexicalComposerContext()\n const [queryString, setQueryString] = useState<string | null>(null)\n const [emojis, setEmojis] = useState<Array<Emoji>>([])\n const [, setIsOpen] = useState(false)\n useEffect(() => {\n import(\"../utils/emoji-list\").then((file) => setEmojis(file.default))\n }, [])\n\n const emojiOptions = useMemo(\n () =>\n emojis != null\n ? emojis.map(\n ({ emoji, aliases, tags }) =>\n new EmojiOption(aliases[0] || \"emoji\", emoji, {\n keywords: [...aliases, ...tags],\n })\n )\n : [],\n [emojis]\n )\n\n const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\":\", {\n minLength: 0,\n })\n\n const options: Array<EmojiOption> = useMemo(() => {\n return emojiOptions\n .filter((option: EmojiOption) => {\n return queryString != null\n ? new RegExp(queryString, \"gi\").exec(option.title) ||\n option.keywords != null\n ? option.keywords.some((keyword: string) =>\n new RegExp(queryString, \"gi\").exec(keyword)\n )\n : false\n : emojiOptions\n })\n .slice(0, MAX_EMOJI_SUGGESTION_COUNT)\n }, [emojiOptions, queryString])\n\n const onSelectOption = useCallback(\n (\n selectedOption: EmojiOption,\n nodeToRemove: TextNode | null,\n closeMenu: () => void\n ) => {\n editor.update(() => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) || selectedOption == null) {\n return\n }\n\n if (nodeToRemove) {\n nodeToRemove.remove()\n }\n\n selection.insertNodes([$createTextNode(selectedOption.emoji)])\n\n closeMenu()\n })\n },\n [editor]\n )\n\n return (\n <LexicalTypeaheadMenuPlugin\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForTriggerMatch}\n options={options}\n onOpen={() => {\n setIsOpen(true)\n }}\n onClose={() => {\n setIsOpen(false)\n }}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n return anchorElementRef.current && options.length\n ? createPortal(\n <div className=\"editor-fixed editor-z-10 editor-w-[200px] editor-rounded-md editor-shadow-md\">\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) %\n options.length\n : options.length - 1\n )\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex + 1) % options.length\n : 0\n )\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option, index) => (\n <CommandItem\n key={option.key}\n value={option.title}\n onSelect={() => {\n selectOptionAndCleanUp(option)\n }}\n className={`editor-flex editor-items-center editor-gap-2 ${\n selectedIndex === index\n ? \"editor-bg-accent\"\n : \"editor-bg-transparent\"\n }`}\n >\n {option.emoji} {option.title}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>,\n anchorElementRef.current\n )\n : null\n }}\n />\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport type { LexicalEditor } from \"lexical\"\nimport { TextNode } from \"lexical\"\n\nimport {\n $createEmojiNode,\n EmojiNode,\n} from \"../nodes/emoji-node\"\n\nconst emojis: Map<string, [string, string]> = new Map([\n [\":)\", [\"emoji happysmile\", \"🙂\"]],\n [\":D\", [\"emoji veryhappysmile\", \"😀\"]],\n [\":(\", [\"emoji unhappysmile\", \"🙁\"]],\n [\"<3\", [\"emoji heart\", \"❤\"]],\n])\n\nfunction $findAndTransformEmoji(node: TextNode): null | TextNode {\n const text = node.getTextContent()\n\n for (let i = 0; i < text.length; i++) {\n const char = text[i]\n if (char === undefined) {\n continue\n }\n const emojiData = emojis.get(char) || emojis.get(text.slice(i, i + 2))\n\n if (emojiData !== undefined) {\n const [emojiStyle, emojiText] = emojiData\n let targetNode: TextNode | undefined\n\n if (i === 0) {\n ;[targetNode] = node.splitText(i + 2)\n } else {\n ;[, targetNode] = node.splitText(i, i + 2)\n }\n\n if (targetNode) {\n const emojiNode = $createEmojiNode(emojiStyle, emojiText)\n targetNode.replace(emojiNode)\n return emojiNode\n }\n }\n }\n\n return null\n}\n\nfunction $textNodeTransform(node: TextNode): void {\n let targetNode: TextNode | null = node\n\n while (targetNode !== null) {\n if (!targetNode.isSimpleText()) {\n return\n }\n\n targetNode = $findAndTransformEmoji(targetNode)\n }\n}\n\nfunction useEmojis(editor: LexicalEditor): void {\n useEffect(() => {\n if (!editor.hasNodes([EmojiNode])) {\n throw new Error(\"EmojisPlugin: EmojiNode not registered on editor\")\n }\n\n return editor.registerNodeTransform(TextNode, $textNodeTransform)\n }, [editor])\n}\n\nexport function EmojisPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n useEmojis(editor)\n return null\n}\n","import { $isAtNodeEnd } from \"@lexical/selection\"\nimport { ElementNode, RangeSelection, TextNode } from \"lexical\"\n\nexport function getSelectedNode(\n selection: RangeSelection\n): TextNode | ElementNode {\n const anchor = selection.anchor\n const focus = selection.focus\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n if (anchorNode === focusNode) {\n return anchorNode\n }\n const isBackward = selection.isBackward()\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode\n } else {\n return $isAtNodeEnd(anchor) ? anchorNode : focusNode\n }\n}\n","const VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\n\nexport function setFloatingElemPositionForLinkEditor(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\"\n floatingElem.style.transform = \"translate(-10000px, -10000px)\"\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = \"1\"\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n","const SUPPORTED_URL_PROTOCOLS = new Set([\n \"http:\",\n \"https:\",\n \"mailto:\",\n \"sms:\",\n \"tel:\",\n])\n\nexport function sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\"\n }\n } catch {\n return url\n }\n return url\n}\n\n// Source: https://stackoverflow.com/a/8234912/2013580\nconst urlRegExp = new RegExp(\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[-;:&=+$,\\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[+~%/.\\w-_]*)?\\??(?:[-+=&;%@.\\w_]*)#?(?:[\\w]*))?)/\n)\nexport function validateUrl(url: string): boolean {\n // Reject invalid URLs like \"https://\" (incomplete URLs)\n if (!url || url === \"https://\" || url === \"http://\") {\n return false\n }\n // Validate using regex pattern\n return urlRegExp.test(url)\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { Dispatch, JSX, useCallback, useEffect, useRef, useState } from \"react\"\nimport {\n $createLinkNode,\n $isAutoLinkNode,\n $isLinkNode,\n TOGGLE_LINK_COMMAND,\n} from \"@lexical/link\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { $findMatchingParent, $wrapNodeInElement, mergeRegister } from \"@lexical/utils\"\nimport {\n $getSelection,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $setSelection,\n BaseSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\"\nimport { Check, Pencil, Trash, X } from \"lucide-react\"\nimport { createPortal } from \"react-dom\"\n\nimport { getSelectedNode } from \"../utils/get-selected-node\"\nimport { setFloatingElemPositionForLinkEditor } from \"../utils/set-floating-elem-position-for-link-editor\"\nimport { sanitizeUrl, validateUrl } from \"../utils/url\"\nimport { Button } from \"../ui/button\"\nimport { Input } from \"../ui/input\"\nimport { Flex } from \"../ui/flex\"\nimport { TypographyPSmall } from \"../ui/typography\"\nimport { $isImageNode } from \"../nodes/image-node\"\n\nfunction FloatingLinkEditor({\n editor,\n isLink,\n setIsLink,\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode,\n}: {\n editor: LexicalEditor\n isLink: boolean\n setIsLink: Dispatch<boolean>\n anchorElem: HTMLElement\n isLinkEditMode: boolean\n setIsLinkEditMode: Dispatch<boolean>\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const [linkUrl, setLinkUrl] = useState(\"\")\n const [editedLinkUrl, setEditedLinkUrl] = useState(\"https://\")\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null)\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let linkNode = null\n let selectedNode = null\n\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection)\n if (node !== null) {\n selectedNode = node\n linkNode = $findMatchingParent(node, $isLinkNode)\n if (!linkNode && $isLinkNode(node)) {\n linkNode = node\n }\n }\n } else if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n const node = nodes[0]\n if (node) {\n selectedNode = node\n // Check if the node itself is a link node\n if ($isLinkNode(node)) {\n linkNode = node\n } else {\n // Check if the node is wrapped in a link (e.g., image node in link)\n linkNode = $findMatchingParent(node, $isLinkNode)\n // For image nodes, also check if parent is a link\n if (!linkNode && $isImageNode(node)) {\n const parent = node.getParent()\n if ($isLinkNode(parent)) {\n linkNode = parent\n }\n }\n }\n }\n }\n\n if (linkNode) {\n setLinkUrl(linkNode.getURL())\n } else {\n setLinkUrl(\"\")\n }\n\n if (isLinkEditMode && linkNode) {\n setEditedLinkUrl(linkUrl || linkNode.getURL())\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n // Check if we have a valid selection (with or without link)\n const hasValidSelection = selection !== null\n const hasValidNativeSelection = \n nativeSelection !== null && \n rootElement !== null &&\n (nativeSelection.anchorNode && rootElement.contains(nativeSelection.anchorNode))\n\n // Show floating editor if:\n // 1. We have a link node (existing link) - show to view/edit\n // 2. We're in edit mode (creating new link) - show input to create link\n const hasImageNode = $isNodeSelection(selection) && selectedNode && $isImageNode(selectedNode)\n const shouldShowEditor =\n (linkNode !== null || isLinkEditMode) &&\n hasValidSelection &&\n editor.isEditable() &&\n (\n // If in edit mode, always show (even if nativeSelection is not valid)\n isLinkEditMode ||\n hasValidNativeSelection ||\n ($isNodeSelection(selection) && selectedNode) ||\n ($isRangeSelection(selection) && selection.getTextContent().length > 0)\n )\n void hasImageNode // reserved for future: hide editor when selection is image-only\n\n if (shouldShowEditor) {\n // For node selection (e.g., image), try to get the DOM element\n let domRect: DOMRect | undefined\n \n if ($isNodeSelection(selection) && selectedNode) {\n // Try to get DOM element using node key\n const nodeKey = selectedNode.getKey()\n const nodeElement = editor.getElementByKey(nodeKey)\n \n if (nodeElement) {\n // For image nodes wrapped in links, find the link element\n if ($isImageNode(selectedNode) && linkNode) {\n // Find the link element that wraps the image\n const linkElement = nodeElement.closest(\"a\") || nodeElement.parentElement?.closest(\"a\")\n if (linkElement) {\n domRect = linkElement.getBoundingClientRect()\n } else {\n domRect = nodeElement.getBoundingClientRect()\n }\n } else {\n domRect = nodeElement.getBoundingClientRect()\n }\n }\n }\n \n // Fallback to native selection if we don't have a specific DOM rect\n if (!domRect && nativeSelection) {\n // Try to find link element in DOM if we have a link node\n if (linkNode && nativeSelection.focusNode) {\n // focusNode can be a Text node, so we need to get the parent element\n let focusElement: HTMLElement | null = null\n if (nativeSelection.focusNode instanceof HTMLElement) {\n focusElement = nativeSelection.focusNode\n } else if (nativeSelection.focusNode.parentElement) {\n focusElement = nativeSelection.focusNode.parentElement\n }\n \n if (focusElement) {\n const linkElement = focusElement.closest(\"a\") || focusElement.parentElement?.closest(\"a\")\n if (linkElement) {\n domRect = linkElement.getBoundingClientRect()\n }\n }\n }\n if (!domRect && nativeSelection.focusNode) {\n // Get parent element if focusNode is not an HTMLElement\n const parentElement = nativeSelection.focusNode instanceof HTMLElement\n ? nativeSelection.focusNode\n : nativeSelection.focusNode.parentElement\n if (parentElement) {\n domRect = parentElement.getBoundingClientRect()\n }\n }\n }\n\n // If in edit mode but no domRect, try to get from range selection\n if (!domRect && isLinkEditMode && $isRangeSelection(selection)) {\n const range = nativeSelection?.getRangeAt(0)\n if (range) {\n domRect = range.getBoundingClientRect()\n }\n }\n\n if (domRect) {\n domRect.y += 40\n setFloatingElemPositionForLinkEditor(domRect, editorElem, anchorElem)\n } else if (isLinkEditMode) {\n // If in edit mode but no domRect, show editor at a default position\n // Use a fallback position based on editor root\n if (rootElement) {\n const rootRect = rootElement.getBoundingClientRect()\n const fallbackRect = new DOMRect(\n rootRect.left + 20,\n rootRect.top + 100,\n 300,\n 50\n )\n setFloatingElemPositionForLinkEditor(fallbackRect, editorElem, anchorElem)\n }\n }\n setLastSelection(selection)\n } else if (!activeElement || !activeElement.classList.contains(\"editor-link-input\")) {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLastSelection(null)\n setIsLinkEditMode(false)\n if (!linkNode) {\n setLinkUrl(\"\")\n }\n }\n\n return true\n }, [anchorElem, editor, setIsLinkEditMode, isLinkEditMode, linkUrl])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = () => {\n editor.getEditorState().read(() => {\n $updateLinkEditor()\n })\n }\n\n window.addEventListener(\"resize\", update)\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update, { passive: true })\n }\n\n return () => {\n window.removeEventListener(\"resize\", update)\n\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false)\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH\n )\n )\n }, [editor, $updateLinkEditor, setIsLink, isLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n useEffect(() => {\n if (isLinkEditMode && inputRef.current) {\n inputRef.current.focus()\n // Use setTimeout to avoid calling setState synchronously within effect\n setTimeout(() => {\n setIsLink(true)\n }, 0)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLinkEditMode, isLink])\n\n const monitorInputInteraction = (\n event: React.KeyboardEvent<HTMLInputElement>\n ) => {\n if (event.key === \"Enter\") {\n event.preventDefault()\n handleLinkSubmission()\n } else if (event.key === \"Escape\") {\n event.preventDefault()\n setIsLinkEditMode(false)\n }\n }\n\n const handleLinkSubmission = () => {\n const url = sanitizeUrl(editedLinkUrl)\n if (url && url !== \"https://\" && url !== \"http://\") {\n editor.update(() => {\n // Try to get current selection first\n let selection = $getSelection()\n \n // If no current selection, try to restore from lastSelection\n if (!selection && lastSelection !== null) {\n // Clone the selection to avoid frozen object error\n if ($isRangeSelection(lastSelection)) {\n const clonedSelection = lastSelection.clone()\n $setSelection(clonedSelection)\n selection = $getSelection()\n } else if ($isNodeSelection(lastSelection)) {\n const clonedSelection = lastSelection.clone()\n $setSelection(clonedSelection)\n selection = $getSelection()\n }\n }\n \n if (!selection) {\n return\n }\n \n // Handle node selection (e.g., image nodes)\n if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n \n // If it's an image node\n if ($isImageNode(node)) {\n // Check if already wrapped in a link\n const existingLinkNode = $findMatchingParent(node, $isLinkNode) || \n ($isLinkNode(node.getParent()) ? node.getParent() : null)\n \n if (existingLinkNode) {\n // Update existing link\n existingLinkNode.setURL(url)\n } else {\n // Wrap image in link using wrapNodeInElement (safe for all cases including root)\n const linkNode = $createLinkNode(url)\n $wrapNodeInElement(node, () => linkNode)\n }\n }\n }\n }\n // Handle range selection\n else if ($isRangeSelection(selection)) {\n // Use default TOGGLE_LINK_COMMAND for range selection\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, url)\n const parent = getSelectedNode(selection).getParent()\n if ($isAutoLinkNode(parent)) {\n const linkNode = $createLinkNode(parent.getURL(), {\n rel: parent.__rel,\n target: parent.__target,\n title: parent.__title,\n })\n parent.replace(linkNode, true)\n }\n }\n })\n setEditedLinkUrl(\"https://\")\n setIsLinkEditMode(false)\n }\n }\n return (\n <div\n ref={editorRef}\n className=\"editor-floating-link-editor\"\n >\n {isLinkEditMode || isLink ? (\n isLinkEditMode ? (\n <div className=\"editor-floating-link-editor__input-container\">\n <Input\n ref={inputRef}\n value={editedLinkUrl}\n onChange={(event) => setEditedLinkUrl(event.target.value)}\n onKeyDown={monitorInputInteraction}\n className=\"editor-flex-grow\"\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => {\n setIsLinkEditMode(false)\n setIsLink(false)\n }}\n className=\"editor-shrink-0\"\n >\n <X className=\"editor-icon-sm\" />\n </Button>\n <Button\n size=\"icon\"\n onClick={handleLinkSubmission}\n className=\"editor-shrink-0\"\n >\n <Check className=\"editor-icon-sm\" />\n </Button>\n </div>\n ) : (\n <div className=\"editor-floating-link-editor__view-container\">\n <a\n href={sanitizeUrl(linkUrl)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"editor-floating-link-editor__link\"\n >\n <TypographyPSmall className=\"editor-truncate\">{linkUrl}</TypographyPSmall>\n </a>\n <Flex gap={0} className=\"editor-shrink-0\">\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => {\n setEditedLinkUrl(linkUrl)\n setIsLinkEditMode(true)\n }}\n >\n <Pencil className=\"editor-icon-sm\" />\n </Button>\n <Button\n size=\"icon\"\n variant=\"destructive\"\n onClick={() => {\n editor.update(() => {\n const selection = $getSelection()\n // Handle node selection (e.g., image nodes)\n if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n if ($isImageNode(node)) {\n const linkNode = $findMatchingParent(node, $isLinkNode) || \n ($isLinkNode(node.getParent()) ? node.getParent() : null)\n if (linkNode) {\n // Remove link by unwrapping - insert children into parent and remove link\n const parent = linkNode.getParent()\n if (parent) {\n const children = linkNode.getChildren()\n children.forEach((child) => {\n linkNode.insertBefore(child)\n })\n linkNode.remove()\n }\n }\n }\n }\n } else {\n // Use default TOGGLE_LINK_COMMAND for range selection\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n })\n }}\n >\n <Trash className=\"editor-icon-sm\" />\n </Button>\n </Flex>\n </div>\n )\n ) : null}\n </div>\n )\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLDivElement | null,\n isLinkEditMode: boolean,\n setIsLinkEditMode: Dispatch<boolean>\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor)\n const [isLink, setIsLink] = useState(false)\n\n useEffect(() => {\n function $updateToolbar() {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const focusNode = getSelectedNode(selection)\n const focusLinkNode = $findMatchingParent(focusNode, $isLinkNode)\n const focusAutoLinkNode = $findMatchingParent(\n focusNode,\n $isAutoLinkNode\n )\n if (!(focusLinkNode || focusAutoLinkNode)) {\n setIsLink(false)\n return\n }\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n const autoLinkNode = $findMatchingParent(node, $isAutoLinkNode)\n return (\n (focusLinkNode && !focusLinkNode.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkNode)) ||\n (focusAutoLinkNode && !focusAutoLinkNode.is(autoLinkNode)) ||\n (autoLinkNode &&\n (!autoLinkNode.is(focusAutoLinkNode) ||\n autoLinkNode.getIsUnlinked()))\n )\n })\n if (!badNode) {\n setIsLink(true)\n } else {\n setIsLink(false)\n }\n } else if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length === 0) {\n setIsLink(false)\n return\n }\n const node = nodes[0]\n if (node) {\n // Check if node itself is a link\n if ($isLinkNode(node)) {\n setIsLink(true)\n return\n }\n // Check if node is wrapped in a link (using $findMatchingParent for better traversal)\n const linkParent = $findMatchingParent(node, $isLinkNode)\n if (linkParent) {\n setIsLink(true)\n return\n }\n // For image nodes, also check direct parent\n if ($isImageNode(node)) {\n const parent = node.getParent()\n if ($isLinkNode(parent)) {\n setIsLink(true)\n return\n }\n }\n }\n setIsLink(false)\n }\n }\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar()\n })\n }),\n // Register TOGGLE_LINK_COMMAND handler for node selection (image nodes)\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (url: string | null) => {\n const selection = $getSelection()\n \n // Handle node selection (e.g., image nodes)\n if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n \n if ($isImageNode(node)) {\n if (url) {\n // Create or update link\n const existingLinkNode = $findMatchingParent(node, $isLinkNode) || \n ($isLinkNode(node.getParent()) ? node.getParent() : null)\n \n if (existingLinkNode) {\n // Update existing link\n existingLinkNode.setURL(url)\n } else {\n // Wrap image in link using wrapNodeInElement (safe for all cases including root)\n const linkNode = $createLinkNode(url)\n $wrapNodeInElement(node, () => linkNode)\n }\n } else {\n // Remove link\n const linkNode = $findMatchingParent(node, $isLinkNode) || \n ($isLinkNode(node.getParent()) ? node.getParent() : null)\n if (linkNode) {\n // Remove link by unwrapping - insert children into parent and remove link\n const parent = linkNode.getParent()\n if (parent) {\n const children = linkNode.getChildren()\n children.forEach((child) => {\n linkNode.insertBefore(child)\n })\n linkNode.remove()\n }\n }\n }\n return true\n }\n }\n }\n \n // Let default handler process range selection\n return false\n },\n COMMAND_PRIORITY_HIGH\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n editor.getEditorState().read(() => {\n $updateToolbar()\n })\n setActiveEditor(newEditor)\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n // Register a listener for when node selection changes to image with link\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n if ($isImageNode(node)) {\n const linkNode = $findMatchingParent(node, $isLinkNode) || \n ($isLinkNode(node.getParent()) ? node.getParent() : null)\n if (linkNode) {\n // Delay to ensure DOM is updated\n setTimeout(() => {\n editor.getEditorState().read(() => {\n $updateToolbar()\n })\n }, 10)\n }\n }\n }\n }\n })\n return false\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n CLICK_COMMAND,\n (payload) => {\n let shouldReturnTrue = false\n \n editor.getEditorState().read(() => {\n const selection = $getSelection()\n \n // Check if we clicked on an image node (with or without link)\n let hasImageNode = false\n if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n if ($isImageNode(node)) {\n hasImageNode = true\n }\n }\n }\n \n // Handle Ctrl/Cmd + click to open link\n if (payload.metaKey || payload.ctrlKey) {\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection)\n if (node) {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n if ($isLinkNode(linkNode)) {\n const url = linkNode.getURL()\n // Validate URL before opening to prevent errors with invalid URLs\n if (url && validateUrl(url)) {\n window.open(url, \"_blank\")\n }\n shouldReturnTrue = true\n return\n }\n }\n } else if ($isNodeSelection(selection)) {\n const nodes = selection.getNodes()\n if (nodes.length > 0) {\n const node = nodes[0]\n let linkNode = null\n if ($isLinkNode(node)) {\n linkNode = node\n } else {\n if (node) {\n linkNode = $findMatchingParent(node, $isLinkNode)\n if (!linkNode && $isImageNode(node)) {\n const parent = node.getParent()\n if ($isLinkNode(parent)) {\n linkNode = parent\n }\n }\n }\n }\n if (linkNode) {\n const url = linkNode.getURL()\n if (url && validateUrl(url)) {\n window.open(url, \"_blank\")\n }\n shouldReturnTrue = true\n return\n }\n }\n }\n }\n \n // If we clicked on an image (with or without link), trigger toolbar update\n if (hasImageNode) {\n // Use requestAnimationFrame to ensure selection is updated\n requestAnimationFrame(() => {\n editor.getEditorState().read(() => {\n $updateToolbar()\n })\n })\n }\n })\n \n if (shouldReturnTrue) {\n return true\n }\n \n // Trigger toolbar update on click to ensure floating editor shows\n setTimeout(() => {\n editor.getEditorState().read(() => {\n $updateToolbar()\n })\n }, 0)\n return false\n },\n COMMAND_PRIORITY_HIGH\n )\n )\n }, [editor])\n\n if (!anchorElem) {\n return null\n }\n\n return createPortal(\n <FloatingLinkEditor\n editor={activeEditor}\n isLink={isLink}\n anchorElem={anchorElem}\n setIsLink={setIsLink}\n isLinkEditMode={isLinkEditMode}\n setIsLinkEditMode={setIsLinkEditMode}\n />,\n anchorElem\n )\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode,\n}: {\n anchorElem: HTMLDivElement | null\n isLinkEditMode: boolean\n setIsLinkEditMode: Dispatch<boolean>\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n return useFloatingLinkEditorToolbar(\n editor,\n anchorElem,\n isLinkEditMode,\n setIsLinkEditMode\n )\n}\n","export function getDOMRangeRect(\n nativeSelection: Selection,\n rootElement: HTMLElement\n): DOMRect {\n const domRange = nativeSelection.getRangeAt(0)\n\n let rect\n\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement\n }\n rect = inner.getBoundingClientRect()\n } else {\n rect = domRange.getBoundingClientRect()\n }\n\n return rect\n}\n","const VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\n\nexport function setFloatingElemPosition(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n isLink: boolean = false,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET\n): void {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || !scrollerElem) {\n floatingElem.style.opacity = \"0\"\n floatingElem.style.transform = \"translate(-10000px, -10000px)\"\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - floatingElemRect.height - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n // adjusted height for link element if the element is at top\n top +=\n floatingElemRect.height +\n targetRect.height +\n verticalGap * (isLink ? 9 : 2)\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = \"1\"\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\ntype ToggleGroupContextValue = {\n type: \"single\" | \"multiple\"\n value: string | string[]\n onValueChange: (value: string | string[]) => void\n size?: \"default\" | \"sm\" | \"lg\"\n variant?: \"default\" | \"outline\"\n}\n\nconst ToggleGroupContext = React.createContext<ToggleGroupContextValue | null>(null)\n\ntype ToggleGroupProps = (\n | { type: \"single\"; value?: string; onValueChange?: (value: string) => void }\n | { type: \"multiple\"; value?: string[]; onValueChange?: (value: string[]) => void }\n) & Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> & {\n size?: \"default\" | \"sm\" | \"lg\"\n variant?: \"default\" | \"outline\"\n}\n\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\n ({ className, type = \"single\", value, onValueChange, children, size, variant, ...props }, ref) => {\n const contextValue: ToggleGroupContextValue = React.useMemo(() => ({\n type: type as \"single\" | \"multiple\",\n value: value || (type === \"multiple\" ? [] : \"\"),\n onValueChange: (val: string | string[]) => {\n if (type === \"single\" && typeof val === \"string\") {\n (onValueChange as ((v: string) => void))?.(val)\n } else if (type === \"multiple\" && Array.isArray(val)) {\n (onValueChange as ((v: string[]) => void))?.(val)\n }\n },\n size,\n variant\n }), [type, value, onValueChange, size, variant])\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div ref={ref} className={cn(\"editor-toggle-group\", className)} {...props}>\n {children}\n </div>\n </ToggleGroupContext.Provider>\n )\n }\n)\nToggleGroup.displayName = \"ToggleGroup\"\n\nexport const ToggleGroupItem = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { value: string, size?: \"default\" | \"sm\" | \"lg\", variant?: \"default\" | \"outline\" }\n>(({ className, value, onClick, size: itemSize, variant: itemVariant, ...props }, ref) => {\n const context = React.useContext(ToggleGroupContext)\n \n const size = itemSize || context?.size || \"default\"\n // variant is not used in styles yet but good to have in props\n \n if (!context) {\n // Fallback if used outside group\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n \"editor-toggle-group-item\",\n size !== \"default\" && `editor-toggle-group-item--size-${size}`,\n className\n )}\n onClick={onClick}\n {...props}\n />\n )\n }\n\n const isSelected = context.type === \"single\" \n ? context.value === value \n : Array.isArray(context.value) && context.value.includes(value)\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (context.type === \"single\") {\n context.onValueChange(isSelected ? \"\" : value)\n } else {\n const currentValues = Array.isArray(context.value) ? context.value : []\n const newValues = isSelected\n ? currentValues.filter((v) => v !== value)\n : [...currentValues, value]\n context.onValueChange(newValues)\n }\n onClick?.(e)\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isSelected}\n data-state={isSelected ? \"on\" : \"off\"}\n className={cn(\n \"editor-toggle-group-item\",\n size !== \"default\" && `editor-toggle-group-item--size-${size}`,\n (itemVariant === \"outline\" || (!itemVariant && context?.variant === \"outline\")) && \"editor-toggle-group-item--outline\",\n className\n )}\n onClick={handleClick}\n {...props}\n />\n )\n})\nToggleGroupItem.displayName = \"ToggleGroupItem\"\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { Dispatch, JSX, useCallback, useEffect, useRef, useState } from \"react\"\nimport * as React from \"react\"\nimport { $isCodeHighlightNode } from \"@lexical/code\"\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\"\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { mergeRegister } from \"@lexical/utils\"\nimport {\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n FORMAT_TEXT_COMMAND,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\"\nimport {\n BoldIcon,\n CodeIcon,\n ItalicIcon,\n LinkIcon,\n PaintBucketIcon,\n StrikethroughIcon,\n SubscriptIcon,\n SuperscriptIcon,\n UnderlineIcon,\n BaselineIcon,\n} from \"lucide-react\"\nimport { createPortal } from \"react-dom\"\n\nimport {\n ColorPicker,\n ColorPickerAlphaSlider,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerHueSlider,\n ColorPickerInput,\n ColorPickerPresets,\n} from \"../editor-ui/color-picker\"\nimport { useEditorModal } from \"../editor-hooks/use-modal\"\nimport { getDOMRangeRect } from \"../utils/get-dom-range-rect\"\nimport { getSelectedNode } from \"../utils/get-selected-node\"\nimport { setFloatingElemPosition } from \"../utils/set-floating-elem-position\"\nimport { Button } from \"../ui/button\"\nimport { DialogFooter } from \"../ui/dialog\"\nimport { Flex } from \"../ui/flex\"\nimport { Separator } from \"../ui/separator\"\nimport {\n ToggleGroup,\n ToggleGroupItem,\n} from \"../ui/toggle-group\"\nimport { IconSize } from \"../ui/typography\"\n\nfunction FontColorModalContent({\n initialColor,\n onApply,\n onClose,\n}: {\n initialColor: string\n onApply: (color: string) => void\n onClose: () => void\n}) {\n const [color, setColor] = useState(initialColor)\n\n return (\n <div className=\"editor-list-color-dialog\">\n <Flex direction=\"column\" gap={4}>\n <div className=\"editor-text-xs-muted\">Chọn màu cho văn bản đang chọn.</div>\n\n <ColorPicker inline value={color} onValueChange={setColor}>\n <ColorPickerContent className=\"editor-w-full editor-border-0 editor-shadow-none editor-p-0\">\n <ColorPickerArea className=\"editor-h-40 editor-w-full editor-rounded-md\" />\n <Flex direction=\"column\" gap={3} className=\"editor-mt-3\">\n <Flex direction=\"column\" gap={2}>\n <ColorPickerHueSlider className=\"editor-w-full\" />\n <ColorPickerAlphaSlider className=\"editor-w-full\" />\n <ColorPickerInput className=\"editor-w-full\" />\n </Flex>\n <ColorPickerPresets />\n </Flex>\n </ColorPickerContent>\n </ColorPicker>\n\n <DialogFooter className=\"editor-px-0\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n onApply(color)\n onClose()\n }}\n className=\"editor-w-full\"\n >\n Hoàn tất\n </Button>\n </DialogFooter>\n </Flex>\n </div>\n )\n}\n\nfunction BgColorModalContent({\n initialColor,\n onApply,\n onClose,\n}: {\n initialColor: string\n onApply: (color: string) => void\n onClose: () => void\n}) {\n const [color, setColor] = useState(initialColor)\n\n return (\n <div className=\"editor-list-color-dialog\">\n <Flex direction=\"column\" gap={4}>\n <div className=\"editor-text-xs-muted\">\n Chọn màu nền cho văn bản đang chọn.\n </div>\n\n <ColorPicker inline value={color} onValueChange={setColor}>\n <ColorPickerContent className=\"editor-w-full editor-border-0 editor-shadow-none editor-p-0\">\n <ColorPickerArea className=\"editor-h-40 editor-w-full editor-rounded-md\" />\n <Flex direction=\"column\" gap={3} className=\"editor-mt-3\">\n <Flex direction=\"column\" gap={2}>\n <ColorPickerHueSlider className=\"editor-w-full\" />\n <ColorPickerAlphaSlider className=\"editor-w-full\" />\n <ColorPickerInput className=\"editor-w-full\" />\n </Flex>\n <ColorPickerPresets />\n </Flex>\n </ColorPickerContent>\n </ColorPicker>\n\n <DialogFooter className=\"editor-px-0\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n onApply(color)\n onClose()\n }}\n className=\"editor-w-full\"\n >\n Hoàn tất\n </Button>\n </DialogFooter>\n </Flex>\n </div>\n )\n}\n\nfunction FloatingTextFormat({\n editor,\n anchorElem,\n isLink,\n isBold,\n isItalic,\n isUnderline,\n isCode,\n isStrikethrough,\n isSubscript,\n isSuperscript,\n fontColor,\n bgColor,\n setIsLinkEditMode,\n showModal,\n isModalOpen,\n}: {\n editor: LexicalEditor\n anchorElem: HTMLElement\n isBold: boolean\n isCode: boolean\n isItalic: boolean\n isLink: boolean\n isStrikethrough: boolean\n isSubscript: boolean\n isSuperscript: boolean\n isUnderline: boolean\n fontColor: string\n bgColor: string\n setIsLinkEditMode: Dispatch<boolean>\n showModal: (\n title: string,\n content: (onClose: () => void) => JSX.Element\n ) => void\n isModalOpen: boolean\n}): JSX.Element {\n const popupCharStylesEditorRef = useRef<HTMLDivElement | null>(null)\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n setIsLinkEditMode(true)\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\")\n } else {\n setIsLinkEditMode(false)\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n }, [editor, isLink, setIsLinkEditMode])\n\n const applyStyleText = useCallback(\n (styles: Record<string, string>) => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, styles)\n }\n })\n },\n [editor]\n )\n\n const onFontColorSelect = useCallback(\n (value: string) => {\n if (value !== \"inherit\") {\n applyStyleText({ color: value })\n }\n },\n [applyStyleText]\n )\n\n const onBgColorSelect = useCallback(\n (value: string) => {\n if (value !== \"inherit\") {\n applyStyleText({ \"background-color\": value })\n }\n },\n [applyStyleText]\n )\n\n const openFontColorModal = () => {\n showModal(\"Đổi màu chữ\", (onClose) => (\n <FontColorModalContent\n initialColor={fontColor}\n onApply={onFontColorSelect}\n onClose={onClose}\n />\n ))\n }\n\n const openBgColorModal = () => {\n showModal(\"Đổi màu nền\", (onClose) => (\n <BgColorModalContent\n initialColor={bgColor}\n onApply={onBgColorSelect}\n onClose={onClose}\n />\n ))\n }\n\n useEffect(() => {\n function mouseMoveListener(e: MouseEvent) {\n if (\n popupCharStylesEditorRef?.current &&\n (e.buttons === 1 || e.buttons === 3)\n ) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"none\") {\n const x = e.clientX\n const y = e.clientY\n const elementUnderMouse = document.elementFromPoint(x, y)\n\n if (\n !popupCharStylesEditorRef.current.contains(elementUnderMouse) &&\n !isModalOpen\n ) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n popupCharStylesEditorRef.current.style.pointerEvents = \"none\"\n }\n }\n }\n }\n function mouseUpListener(_e: MouseEvent) {\n void _e\n if (popupCharStylesEditorRef?.current) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"auto\") {\n popupCharStylesEditorRef.current.style.pointerEvents = \"auto\"\n }\n }\n }\n\n if (popupCharStylesEditorRef?.current) {\n document.addEventListener(\"mousemove\", mouseMoveListener)\n document.addEventListener(\"mouseup\", mouseUpListener)\n\n return () => {\n document.removeEventListener(\"mousemove\", mouseMoveListener)\n document.removeEventListener(\"mouseup\", mouseUpListener)\n }\n }\n }, [popupCharStylesEditorRef, isModalOpen])\n\n const $updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection()\n\n const popupCharStylesEditorElem = popupCharStylesEditorRef.current\n const nativeSelection = window.getSelection()\n\n if (popupCharStylesEditorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement)\n\n setFloatingElemPosition(\n rangeRect,\n popupCharStylesEditorElem,\n anchorElem,\n isLink\n )\n popupCharStylesEditorElem.classList.add(\n \"editor-floating-text-format--visible\"\n )\n } else {\n setFloatingElemPosition(null, popupCharStylesEditorElem, anchorElem, isLink)\n popupCharStylesEditorElem.classList.remove(\n \"editor-floating-text-format--visible\"\n )\n }\n }, [editor, anchorElem, isLink])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = () => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar()\n })\n }\n\n window.addEventListener(\"resize\", update)\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update, { passive: true })\n }\n\n return () => {\n window.removeEventListener(\"resize\", update)\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update)\n }\n }\n }, [editor, $updateTextFormatFloatingToolbar, anchorElem])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar()\n })\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateTextFormatFloatingToolbar()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateTextFormatFloatingToolbar()\n return false\n },\n COMMAND_PRIORITY_LOW\n )\n )\n }, [editor, $updateTextFormatFloatingToolbar])\n\n return (\n <div\n ref={popupCharStylesEditorRef}\n className=\"editor-floating-text-format\"\n >\n {editor.isEditable() && (\n <Flex align=\"center\" gap={1} className=\"editor-flex-nowrap\">\n <div className=\"editor-floating-group editor-flex editor-items-center\">\n <ToggleGroup\n type=\"multiple\"\n className=\"editor-flex editor-items-center\"\n value={[\n isBold ? \"bold\" : \"\",\n isItalic ? \"italic\" : \"\",\n isUnderline ? \"underline\" : \"\",\n isStrikethrough ? \"strikethrough\" : \"\",\n isCode ? \"code\" : \"\",\n isLink ? \"link\" : \"\",\n ].filter(Boolean)}\n >\n <ToggleGroupItem\n value=\"bold\"\n aria-label=\"Toggle bold\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <BoldIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"italic\"\n aria-label=\"Toggle italic\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <ItalicIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"underline\"\n aria-label=\"Toggle underline\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <UnderlineIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"strikethrough\"\n aria-label=\"Toggle strikethrough\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"strikethrough\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <StrikethroughIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"code\"\n aria-label=\"Toggle code\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <CodeIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"link\"\n aria-label=\"Toggle link\"\n className=\"editor-toolbar-item\"\n onClick={insertLink}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <LinkIcon />\n </IconSize>\n </ToggleGroupItem>\n </ToggleGroup>\n </div>\n\n <Separator orientation=\"vertical\" className=\"editor-separator--vertical\" />\n\n <div className=\"editor-floating-group--lg editor-flex editor-items-center\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"editor-toolbar-item\"\n onClick={openFontColorModal}\n >\n <IconSize size=\"sm\">\n <BaselineIcon />\n </IconSize>\n </Button>\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"editor-toolbar-item\"\n onClick={openBgColorModal}\n >\n <IconSize size=\"sm\">\n <PaintBucketIcon />\n </IconSize>\n </Button>\n </div>\n\n <Separator orientation=\"vertical\" className=\"editor-separator--vertical\" />\n\n <div className=\"editor-floating-group editor-flex editor-items-center\">\n <ToggleGroup\n type=\"single\"\n className=\"editor-flex editor-items-center\"\n value={\n isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n }\n >\n <ToggleGroupItem\n value=\"subscript\"\n aria-label=\"Toggle subscript\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <SubscriptIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"superscript\"\n aria-label=\"Toggle superscript\"\n className=\"editor-toolbar-item\"\n onClick={() => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\")\n }}\n size=\"sm\"\n >\n <IconSize size=\"sm\">\n <SuperscriptIcon />\n </IconSize>\n </ToggleGroupItem>\n </ToggleGroup>\n </div>\n </Flex>\n )}\n </div>\n )\n}\n\nfunction useFloatingTextFormatToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLDivElement | null,\n setIsLinkEditMode: Dispatch<boolean>,\n showModal: (\n title: string,\n content: (onClose: () => void) => JSX.Element\n ) => void,\n isModalOpen: boolean\n): JSX.Element | null {\n const [isText, setIsText] = useState(false)\n const [isLink, setIsLink] = useState(false)\n const [isBold, setIsBold] = useState(false)\n const [isItalic, setIsItalic] = useState(false)\n const [isUnderline, setIsUnderline] = useState(false)\n const [isStrikethrough, setIsStrikethrough] = useState(false)\n const [isSubscript, setIsSubscript] = useState(false)\n const [isSuperscript, setIsSuperscript] = useState(false)\n const [isCode, setIsCode] = useState(false)\n const [fontColor, setFontColor] = useState(\"inherit\")\n const [bgColor, setBgColor] = useState(\"inherit\")\n\n const updatePopup = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return\n }\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n (!$isRangeSelection(selection) ||\n rootElement === null ||\n !rootElement.contains(nativeSelection.anchorNode))\n ) {\n setIsText(false)\n return\n }\n\n if (!$isRangeSelection(selection)) {\n return\n }\n\n const node = getSelectedNode(selection)\n\n // Update text format\n setIsBold(selection.hasFormat(\"bold\"))\n setIsItalic(selection.hasFormat(\"italic\"))\n setIsUnderline(selection.hasFormat(\"underline\"))\n setIsStrikethrough(selection.hasFormat(\"strikethrough\"))\n setIsSubscript(selection.hasFormat(\"subscript\"))\n setIsSuperscript(selection.hasFormat(\"superscript\"))\n setIsCode(selection.hasFormat(\"code\"))\n setFontColor($getSelectionStyleValueForProperty(selection, \"color\", \"inherit\"))\n setBgColor(\n $getSelectionStyleValueForProperty(selection, \"background-color\", \"inherit\")\n )\n\n // Update links\n const parent = node.getParent()\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n setIsLink(true)\n } else {\n setIsLink(false)\n }\n\n if (\n !$isCodeHighlightNode(selection.anchor.getNode()) &&\n selection.getTextContent() !== \"\"\n ) {\n setIsText($isTextNode(node) || $isParagraphNode(node))\n } else {\n setIsText(false)\n }\n\n const rawTextContent = selection.getTextContent().replace(/\\n/g, \"\")\n if (!selection.isCollapsed() && rawTextContent === \"\") {\n setIsText(false)\n return\n }\n })\n }, [editor])\n\n useEffect(() => {\n document.addEventListener(\"selectionchange\", updatePopup)\n return () => {\n document.removeEventListener(\"selectionchange\", updatePopup)\n }\n }, [updatePopup])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updatePopup()\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setIsText(false)\n }\n })\n )\n }, [editor, updatePopup])\n\n if (!isText || !anchorElem) {\n return null\n }\n\n return createPortal(\n <FloatingTextFormat\n editor={editor}\n anchorElem={anchorElem}\n isLink={isLink}\n isBold={isBold}\n isItalic={isItalic}\n isStrikethrough={isStrikethrough}\n isSubscript={isSubscript}\n isSuperscript={isSuperscript}\n isUnderline={isUnderline}\n isCode={isCode}\n fontColor={fontColor}\n bgColor={bgColor}\n setIsLinkEditMode={setIsLinkEditMode}\n showModal={showModal}\n isModalOpen={isModalOpen}\n />,\n anchorElem\n )\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n anchorElem,\n setIsLinkEditMode,\n}: {\n anchorElem: HTMLDivElement | null\n setIsLinkEditMode: Dispatch<boolean>\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [modal, showModal] = useEditorModal()\n\n const toolbar = useFloatingTextFormatToolbar(\n editor,\n anchorElem,\n setIsLinkEditMode,\n showModal,\n modal !== null\n )\n\n return (\n <>\n {toolbar}\n {modal}\n </>\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useCallback, useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { useLexicalTextEntity } from \"@lexical/react/useLexicalTextEntity\"\nimport type { TextNode } from \"lexical\"\n\nimport {\n $createKeywordNode,\n KeywordNode,\n} from \"../nodes/keyword-node\"\n\nconst KEYWORDS_REGEX =\n /(^|$|[^A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ])(congrats|congratulations|gratuluju|gratuluji|gratulujeme|blahopřeju|blahopřeji|blahopřejeme|Til lykke|Tillykke|Glückwunsch|Gratuliere|felicitaciones|enhorabuena|paljon onnea|onnittelut|Félicitations|gratula|gratulálok|gratulálunk|congratulazioni|complimenti|おめでとう|おめでとうございます|축하해|축하해요|gratulerer|Gefeliciteerd|gratulacje|Parabéns|parabéns|felicitações|felicitări|мои поздравления|поздравляем|поздравляю|gratulujem|blahoželám|ยินดีด้วย|ขอแสดงความยินดี|tebrikler|tebrik ederim|恭喜|祝贺你|恭喜你|恭喜|恭喜|baie geluk|veels geluk|অভিনন্দন|Čestitam|Čestitke|Čestitamo|Συγχαρητήρια|Μπράβο|અભિનંદન|badhai|बधाई|अभिनंदन|Честитам|Свака част|hongera|வாழ்த்துகள்|வாழ்த்துக்கள்|అభినందనలు|അഭിനന്ദനങ്ങൾ|Chúc mừng|מזל טוב|mazel tov|mazal tov)(^|$|[^A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ])/i\n\nexport function KeywordsPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([KeywordNode])) {\n throw new Error(\"KeywordsPlugin: KeywordNode not registered on editor\")\n }\n }, [editor])\n\n const $createKeywordNode_ = useCallback((textNode: TextNode): KeywordNode => {\n return $createKeywordNode(textNode.getTextContent())\n }, [])\n\n const getKeywordMatch = useCallback((text: string) => {\n const matchArr = KEYWORDS_REGEX.exec(text)\n\n if (matchArr === null || !matchArr[2] || !matchArr[1]) {\n return null\n }\n\n const hashtagLength = matchArr[2].length\n const startOffset = matchArr.index + matchArr[1].length\n const endOffset = startOffset + hashtagLength\n return {\n end: endOffset,\n start: startOffset,\n }\n }, [])\n\n useLexicalTextEntity<KeywordNode>(\n getKeywordMatch,\n KeywordNode,\n $createKeywordNode_\n )\n\n return null\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport * as React from \"react\"\nimport { JSX } from \"react\"\nimport { LinkPlugin as LexicalLinkPlugin } from \"@lexical/react/LexicalLinkPlugin\"\n\nimport { validateUrl } from \"../utils/url\"\n\nexport function LinkPlugin(): JSX.Element {\n return <LexicalLinkPlugin validateUrl={validateUrl} />\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect } from \"react\"\nimport { $getListDepth, $isListItemNode, $isListNode } from \"@lexical/list\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport type { ElementNode, RangeSelection } from \"lexical\"\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n INDENT_CONTENT_COMMAND,\n} from \"lexical\"\n\nfunction getElementNodesInSelection(\n selection: RangeSelection\n): Set<ElementNode> {\n const nodesInSelection = selection.getNodes()\n\n if (nodesInSelection.length === 0) {\n return new Set([\n selection.anchor.getNode().getParentOrThrow(),\n selection.focus.getNode().getParentOrThrow(),\n ])\n }\n\n return new Set(\n nodesInSelection.map((n) => ($isElementNode(n) ? n : n.getParentOrThrow()))\n )\n}\n\nfunction $shouldPreventIndent(maxDepth: number): boolean {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const elementNodesInSelection: Set<ElementNode> =\n getElementNodesInSelection(selection)\n\n let totalDepth = 0\n\n for (const elementNode of Array.from(elementNodesInSelection)) {\n if ($isListNode(elementNode)) {\n totalDepth = Math.max($getListDepth(elementNode) + 1, totalDepth)\n } else if ($isListItemNode(elementNode)) {\n const parent = elementNode.getParent()\n\n if (!$isListNode(parent)) {\n throw new Error(\n \"ListMaxIndentLevelPlugin: A ListItemNode must have a ListNode for a parent.\"\n )\n }\n\n totalDepth = Math.max($getListDepth(parent) + 1, totalDepth)\n }\n }\n\n return totalDepth > maxDepth\n}\n\nexport function ListMaxIndentLevelPlugin({\n maxDepth = 7,\n}: {\n maxDepth?: number\n}): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => $shouldPreventIndent(maxDepth),\n COMMAND_PRIORITY_CRITICAL\n )\n }, [editor, maxDepth])\n return null\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport * as React from \"react\"\nimport { JSX, useCallback, useEffect, useMemo, useState } from \"react\"\nimport dynamic from \"next/dynamic\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n MenuOption,\n MenuTextMatch,\n useBasicTypeaheadTriggerMatch,\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\"\nimport { TextNode } from \"lexical\"\nimport { CircleUserRoundIcon } from \"lucide-react\"\nimport { createPortal } from \"react-dom\"\n\nimport { $createMentionNode } from \"../nodes/mention-node\"\nimport {\n Command,\n CommandGroup,\n CommandItem,\n CommandList,\n} from \"../ui/command\"\nimport { IconSize } from \"../ui/typography\"\n\nconst LexicalTypeaheadMenuPlugin = dynamic(\n () =>\n import(\"@lexical/react/LexicalTypeaheadMenuPlugin\").then(\n (mod) => mod.LexicalTypeaheadMenuPlugin<MentionTypeaheadOption>\n ),\n { ssr: false }\n)\n\nconst PUNCTUATION =\n \"\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%'\\\"~=<>_:;\"\nconst NAME = \"\\\\b[A-Z][^\\\\s\" + PUNCTUATION + \"]\"\n\nconst DocumentMentionsRegex = {\n NAME,\n PUNCTUATION,\n}\n\nconst PUNC = DocumentMentionsRegex.PUNCTUATION\n\nconst TRIGGERS = [\"@\"].join(\"\")\n\n// Chars we expect to see in a mention (non-space, non-punctuation).\nconst VALID_CHARS = \"[^\" + TRIGGERS + PUNC + \"\\\\s]\"\n\n// Non-standard series of chars. Each series must be preceded and followed by\n// a valid char.\nconst VALID_JOINS =\n \"(?:\" +\n \"\\\\.[ |$]|\" + // E.g. \"r. \" in \"Mr. Smith\"\n \" |\" + // E.g. \" \" in \"Josh Duck\"\n \"[\" +\n PUNC +\n \"]|\" + // E.g. \"-' in \"Salier-Hellendag\"\n \")\"\n\nconst LENGTH_LIMIT = 75\n\nconst AtSignMentionsRegex = new RegExp(\n \"(^|\\\\s|\\\\()(\" +\n \"[\" +\n TRIGGERS +\n \"]\" +\n \"((?:\" +\n VALID_CHARS +\n VALID_JOINS +\n \"){0,\" +\n LENGTH_LIMIT +\n \"})\" +\n \")$\"\n)\n\n// 50 is the longest alias length limit.\nconst ALIAS_LENGTH_LIMIT = 50\n\n// Regex used to match alias.\nconst AtSignMentionsRegexAliasRegex = new RegExp(\n \"(^|\\\\s|\\\\()(\" +\n \"[\" +\n TRIGGERS +\n \"]\" +\n \"((?:\" +\n VALID_CHARS +\n \"){0,\" +\n ALIAS_LENGTH_LIMIT +\n \"})\" +\n \")$\"\n)\n\n// At most, 5 suggestions are shown in the popup.\nconst SUGGESTION_LIST_LENGTH_LIMIT = 5\n\nconst mentionsCache = new Map()\n\nconst dummyMentionsData = [\n \"Aayla Secura\",\n \"Adi Gallia\",\n \"Admiral Dodd Rancit\",\n \"Admiral Firmus Piett\",\n \"Admiral Gial Ackbar\",\n \"Admiral Ozzel\",\n \"Admiral Raddus\",\n \"Admiral Terrinald Screed\",\n \"Admiral Trench\",\n \"Admiral U.O. Statura\",\n \"Agen Kolar\",\n \"Agent Kallus\",\n \"Aiolin and Morit Astarte\",\n \"Aks Moe\",\n \"Almec\",\n \"Alton Kastle\",\n \"Amee\",\n \"AP-5\",\n \"Armitage Hux\",\n \"Artoo\",\n \"Arvel Crynyd\",\n \"Asajj Ventress\",\n \"Aurra Sing\",\n \"AZI-3\",\n \"Bala-Tik\",\n \"Barada\",\n \"Bargwill Tomder\",\n \"Baron Papanoida\",\n \"Barriss Offee\",\n \"Baze Malbus\",\n \"Bazine Netal\",\n \"BB-8\",\n \"BB-9E\",\n \"Ben Quadinaros\",\n \"Berch Teller\",\n \"Beru Lars\",\n \"Bib Fortuna\",\n \"Biggs Darklighter\",\n \"Black Krrsantan\",\n \"Bo-Katan Kryze\",\n \"Boba Fett\",\n \"Bobbajo\",\n \"Bodhi Rook\",\n \"Borvo the Hutt\",\n \"Boss Nass\",\n \"Bossk\",\n \"Breha Antilles-Organa\",\n \"Bren Derlin\",\n \"Brendol Hux\",\n \"BT-1\",\n \"C-3PO\",\n \"C1-10P\",\n \"Cad Bane\",\n \"Caluan Ematt\",\n \"Captain Gregor\",\n \"Captain Phasma\",\n \"Captain Quarsh Panaka\",\n \"Captain Rex\",\n \"Carlist Rieekan\",\n \"Casca Panzoro\",\n \"Cassian Andor\",\n \"Cassio Tagge\",\n \"Cham Syndulla\",\n \"Che Amanwe Papanoida\",\n \"Chewbacca\",\n \"Chi Eekway Papanoida\",\n \"Chief Chirpa\",\n \"Chirrut Îmwe\",\n \"Ciena Ree\",\n \"Cin Drallig\",\n \"Clegg Holdfast\",\n \"Cliegg Lars\",\n \"Coleman Kcaj\",\n \"Coleman Trebor\",\n \"Colonel Kaplan\",\n \"Commander Bly\",\n \"Commander Cody (CC-2224)\",\n \"Commander Fil (CC-3714)\",\n \"Commander Fox\",\n \"Commander Gree\",\n \"Commander Jet\",\n \"Commander Wolffe\",\n \"Conan Antonio Motti\",\n \"Conder Kyl\",\n \"Constable Zuvio\",\n \"Cordé\",\n \"Cpatain Typho\",\n \"Crix Madine\",\n \"Cut Lawquane\",\n \"Dak Ralter\",\n \"Dapp\",\n \"Darth Bane\",\n \"Darth Maul\",\n \"Darth Tyranus\",\n \"Daultay Dofine\",\n \"Del Meeko\",\n \"Delian Mors\",\n \"Dengar\",\n \"Depa Billaba\",\n \"Derek Klivian\",\n \"Dexter Jettster\",\n \"Dineé Ellberger\",\n \"DJ\",\n \"Doctor Aphra\",\n \"Doctor Evazan\",\n \"Dogma\",\n \"Dormé\",\n \"Dr. Cylo\",\n \"Droidbait\",\n \"Droopy McCool\",\n \"Dryden Vos\",\n \"Dud Bolt\",\n \"Ebe E. Endocott\",\n \"Echuu Shen-Jon\",\n \"Eeth Koth\",\n \"Eighth Brother\",\n \"Eirtaé\",\n \"Eli Vanto\",\n \"Ellé\",\n \"Ello Asty\",\n \"Embo\",\n \"Eneb Ray\",\n \"Enfys Nest\",\n \"EV-9D9\",\n \"Evaan Verlaine\",\n \"Even Piell\",\n \"Ezra Bridger\",\n \"Faro Argyus\",\n \"Feral\",\n \"Fifth Brother\",\n \"Finis Valorum\",\n \"Finn\",\n \"Fives\",\n \"FN-1824\",\n \"FN-2003\",\n \"Fodesinbeed Annodue\",\n \"Fulcrum\",\n \"FX-7\",\n \"GA-97\",\n \"Galen Erso\",\n \"Gallius Rax\",\n 'Garazeb \"Zeb\" Orrelios',\n \"Gardulla the Hutt\",\n \"Garrick Versio\",\n \"Garven Dreis\",\n \"Gavyn Sykes\",\n \"Gideon Hask\",\n \"Gizor Dellso\",\n \"Gonk droid\",\n \"Grand Inquisitor\",\n \"Greeata Jendowanian\",\n \"Greedo\",\n \"Greer Sonnel\",\n \"Grievous\",\n \"Grummgar\",\n \"Gungi\",\n \"Hammerhead\",\n \"Han Solo\",\n \"Harter Kalonia\",\n \"Has Obbit\",\n \"Hera Syndulla\",\n \"Hevy\",\n \"Hondo Ohnaka\",\n \"Huyang\",\n \"Iden Versio\",\n \"IG-88\",\n \"Ima-Gun Di\",\n \"Inquisitors\",\n \"Inspector Thanoth\",\n \"Jabba\",\n \"Jacen Syndulla\",\n \"Jan Dodonna\",\n \"Jango Fett\",\n \"Janus Greejatus\",\n \"Jar Jar Binks\",\n \"Jas Emari\",\n \"Jaxxon\",\n \"Jek Tono Porkins\",\n \"Jeremoch Colton\",\n \"Jira\",\n \"Jobal Naberrie\",\n \"Jocasta Nu\",\n \"Joclad Danva\",\n \"Joh Yowza\",\n \"Jom Barell\",\n \"Joph Seastriker\",\n \"Jova Tarkin\",\n \"Jubnuk\",\n \"Jyn Erso\",\n \"K-2SO\",\n \"Kanan Jarrus\",\n \"Karbin\",\n \"Karina the Great\",\n \"Kes Dameron\",\n \"Ketsu Onyo\",\n \"Ki-Adi-Mundi\",\n \"King Katuunko\",\n \"Kit Fisto\",\n \"Kitster Banai\",\n \"Klaatu\",\n \"Klik-Klak\",\n \"Korr Sella\",\n \"Kylo Ren\",\n \"L3-37\",\n \"Lama Su\",\n \"Lando Calrissian\",\n \"Lanever Villecham\",\n \"Leia Organa\",\n \"Letta Turmond\",\n \"Lieutenant Kaydel Ko Connix\",\n \"Lieutenant Thire\",\n \"Lobot\",\n \"Logray\",\n \"Lok Durd\",\n \"Longo Two-Guns\",\n \"Lor San Tekka\",\n \"Lorth Needa\",\n \"Lott Dod\",\n \"Luke Skywalker\",\n \"Lumat\",\n \"Luminara Unduli\",\n \"Lux Bonteri\",\n \"Lyn Me\",\n \"Lyra Erso\",\n \"Mace Windu\",\n \"Malakili\",\n \"Mama the Hutt\",\n \"Mars Guo\",\n \"Mas Amedda\",\n \"Mawhonic\",\n \"Max Rebo\",\n \"Maximilian Veers\",\n \"Maz Kanata\",\n \"ME-8D9\",\n \"Meena Tills\",\n \"Mercurial Swift\",\n \"Mina Bonteri\",\n \"Miraj Scintel\",\n \"Mister Bones\",\n \"Mod Terrik\",\n \"Moden Canady\",\n \"Mon Mothma\",\n \"Moradmin Bast\",\n \"Moralo Eval\",\n \"Morley\",\n \"Mother Talzin\",\n \"Nahdar Vebb\",\n \"Nahdonnis Praji\",\n \"Nien Nunb\",\n \"Niima the Hutt\",\n \"Nines\",\n \"Norra Wexley\",\n \"Nute Gunray\",\n \"Nuvo Vindi\",\n \"Obi-Wan Kenobi\",\n \"Odd Ball\",\n \"Ody Mandrell\",\n \"Omi\",\n \"Onaconda Farr\",\n \"Oola\",\n \"OOM-9\",\n \"Oppo Rancisis\",\n \"Orn Free Taa\",\n \"Oro Dassyne\",\n \"Orrimarko\",\n \"Osi Sobeck\",\n \"Owen Lars\",\n \"Pablo-Jill\",\n \"Padmé Amidala\",\n \"Pagetti Rook\",\n \"Paige Tico\",\n \"Paploo\",\n \"Petty Officer Thanisson\",\n \"Pharl McQuarrie\",\n \"Plo Koon\",\n \"Po Nudo\",\n \"Poe Dameron\",\n \"Poggle the Lesser\",\n \"Pong Krell\",\n \"Pooja Naberrie\",\n \"PZ-4CO\",\n \"Quarrie\",\n \"Quay Tolsite\",\n \"Queen Apailana\",\n \"Queen Jamillia\",\n \"Queen Neeyutnee\",\n \"Qui-Gon Jinn\",\n \"Quiggold\",\n \"Quinlan Vos\",\n \"R2-D2\",\n \"R2-KT\",\n \"R3-S6\",\n \"R4-P17\",\n \"R5-D4\",\n \"RA-7\",\n \"Rabé\",\n \"Rako Hardeen\",\n \"Ransolm Casterfo\",\n \"Rappertunie\",\n \"Ratts Tyerell\",\n \"Raymus Antilles\",\n \"Ree-Yees\",\n \"Reeve Panzoro\",\n \"Rey\",\n \"Ric Olié\",\n \"Riff Tamson\",\n \"Riley\",\n \"Rinnriyin Di\",\n \"Rio Durant\",\n \"Rogue Squadron\",\n \"Romba\",\n \"Roos Tarpals\",\n \"Rose Tico\",\n \"Rotta the Hutt\",\n \"Rukh\",\n \"Rune Haako\",\n \"Rush Clovis\",\n \"Ruwee Naberrie\",\n \"Ryoo Naberrie\",\n \"Sabé\",\n \"Sabine Wren\",\n \"Saché\",\n \"Saelt-Marae\",\n \"Saesee Tiin\",\n \"Salacious B. Crumb\",\n \"San Hill\",\n \"Sana Starros\",\n \"Sarco Plank\",\n \"Sarkli\",\n \"Satine Kryze\",\n \"Savage Opress\",\n \"Sebulba\",\n \"Senator Organa\",\n \"Sergeant Kreel\",\n \"Seventh Sister\",\n \"Shaak Ti\",\n \"Shara Bey\",\n \"Shmi Skywalker\",\n \"Shu Mai\",\n \"Sidon Ithano\",\n \"Sifo-Dyas\",\n \"Sim Aloo\",\n \"Siniir Rath Velus\",\n \"Sio Bibble\",\n \"Sixth Brother\",\n \"Slowen Lo\",\n \"Sly Moore\",\n \"Snaggletooth\",\n \"Snap Wexley\",\n \"Snoke\",\n \"Sola Naberrie\",\n \"Sora Bulq\",\n \"Strono Tuggs\",\n \"Sy Snootles\",\n \"Tallissan Lintra\",\n \"Tarfful\",\n \"Tasu Leech\",\n \"Taun We\",\n \"TC-14\",\n \"Tee Watt Kaa\",\n \"Teebo\",\n \"Teedo\",\n \"Teemto Pagalies\",\n \"Temiri Blagg\",\n \"Tessek\",\n \"Tey How\",\n \"Thane Kyrell\",\n \"The Bendu\",\n \"The Smuggler\",\n \"Thrawn\",\n \"Tiaan Jerjerrod\",\n \"Tion Medon\",\n \"Tobias Beckett\",\n \"Tulon Voidgazer\",\n \"Tup\",\n \"U9-C4\",\n \"Unkar Plutt\",\n \"Val Beckett\",\n \"Vanden Willard\",\n \"Vice Admiral Amilyn Holdo\",\n \"Vober Dand\",\n \"WAC-47\",\n \"Wag Too\",\n \"Wald\",\n \"Walrus Man\",\n \"Warok\",\n \"Wat Tambor\",\n \"Watto\",\n \"Wedge Antilles\",\n \"Wes Janson\",\n \"Wicket W. Warrick\",\n \"Wilhuff Tarkin\",\n \"Wollivan\",\n \"Wuher\",\n \"Wullf Yularen\",\n \"Xamuel Lennox\",\n \"Yaddle\",\n \"Yarael Poof\",\n \"Yoda\",\n \"Zam Wesell\",\n \"Zev Senesca\",\n \"Ziro the Hutt\",\n \"Zuckuss\",\n]\n\nconst dummyLookupService = {\n search(string: string, callback: (results: Array<string>) => void): void {\n setTimeout(() => {\n const results = dummyMentionsData.filter((mention) =>\n mention.toLowerCase().includes(string.toLowerCase())\n )\n callback(results)\n }, 500)\n },\n}\n\nfunction useMentionLookupService(mentionString: string | null) {\n const [results, setResults] = useState<Array<string>>([])\n\n useEffect(() => {\n const cachedResults = mentionsCache.get(mentionString)\n\n if (mentionString == null) {\n // Use setTimeout to avoid calling setState synchronously within effect\n setTimeout(() => {\n setResults([])\n }, 0)\n return\n }\n\n if (cachedResults === null) {\n return\n } else if (cachedResults !== undefined) {\n // Use setTimeout to avoid calling setState synchronously within effect\n setTimeout(() => {\n setResults(cachedResults)\n }, 0)\n return\n }\n\n mentionsCache.set(mentionString, null)\n dummyLookupService.search(mentionString, (newResults) => {\n mentionsCache.set(mentionString, newResults)\n setResults(newResults)\n })\n }, [mentionString])\n\n return results\n}\n\nfunction checkForAtSignMentions(\n text: string,\n minMatchLength: number\n): MenuTextMatch | null {\n let match = AtSignMentionsRegex.exec(text)\n\n if (match === null) {\n match = AtSignMentionsRegexAliasRegex.exec(text)\n }\n if (match !== null) {\n // The strategy ignores leading whitespace but we need to know it's\n // length to add it to the leadOffset\n\n const matchingString = match[3]\n if (matchingString && matchingString.length >= minMatchLength) {\n return {\n leadOffset: match.index + (match[1]?.length || 0),\n matchingString,\n replaceableString: match[2] || \"\",\n }\n }\n }\n return null\n}\n\nfunction getPossibleQueryMatch(text: string): MenuTextMatch | null {\n return checkForAtSignMentions(text, 1)\n}\n\nclass MentionTypeaheadOption extends MenuOption {\n name: string\n picture: JSX.Element\n\n constructor(name: string, picture: JSX.Element) {\n super(name)\n this.name = name\n this.picture = picture\n }\n}\n\nexport function MentionsPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n const [queryString, setQueryString] = useState<string | null>(null)\n\n const results = useMentionLookupService(queryString)\n\n const checkForSlashTriggerMatch = useBasicTypeaheadTriggerMatch(\"/\", {\n minLength: 0,\n })\n\n const options = useMemo(\n () =>\n results\n .map(\n (result) =>\n new MentionTypeaheadOption(\n result,\n <IconSize size=\"sm\">\n <CircleUserRoundIcon />\n </IconSize>\n )\n )\n .slice(0, SUGGESTION_LIST_LENGTH_LIMIT),\n [results]\n )\n\n const onSelectOption = useCallback(\n (\n selectedOption: MentionTypeaheadOption,\n nodeToReplace: TextNode | null,\n closeMenu: () => void\n ) => {\n editor.update(() => {\n const mentionNode = $createMentionNode(selectedOption.name)\n if (nodeToReplace) {\n nodeToReplace.replace(mentionNode)\n }\n mentionNode.select()\n closeMenu()\n })\n },\n [editor]\n )\n\n const checkForMentionMatch = useCallback(\n (text: string) => {\n const slashMatch = checkForSlashTriggerMatch(text, editor)\n if (slashMatch !== null) {\n return null\n }\n return getPossibleQueryMatch(text)\n },\n [checkForSlashTriggerMatch, editor]\n )\n\n return (\n <LexicalTypeaheadMenuPlugin\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForMentionMatch}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n return anchorElementRef.current && results.length\n ? createPortal(\n <div className=\"editor-mentions-popover\">\n <Command\n onKeyDown={(e) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex - 1 + options.length) %\n options.length\n : options.length - 1\n )\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault()\n setHighlightedIndex(\n selectedIndex !== null\n ? (selectedIndex + 1) % options.length\n : 0\n )\n }\n }}\n >\n <CommandList>\n <CommandGroup>\n {options.map((option, index) => (\n <CommandItem\n key={option.key}\n value={option.name}\n onSelect={() => {\n selectOptionAndCleanUp(option)\n }}\n className={`editor-mentions-item ${\n selectedIndex === index\n ? \"editor-mentions-item--selected\"\n : \"editor-mentions-item--transparent\"\n }`}\n >\n {option.picture}\n {option.name}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </div>,\n anchorElementRef.current\n )\n : null\n }}\n />\n )\n}\n","import { JSX } from \"react\"\nimport { MenuOption } from \"@lexical/react/LexicalTypeaheadMenuPlugin\"\nimport { LexicalEditor } from \"lexical\"\n\nexport class ComponentPickerOption extends MenuOption {\n // What shows up in the editor\n title: string\n // Icon for display\n icon?: JSX.Element\n // For extra searching.\n keywords: Array<string>\n // TBD\n keyboardShortcut?: string\n // What happens when you select this option?\n onSelect: (\n queryString: string,\n editor: LexicalEditor,\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element\n ) => void\n ) => void\n\n constructor(\n title: string,\n options: {\n icon?: JSX.Element\n keywords?: Array<string>\n keyboardShortcut?: string\n onSelect: (\n queryString: string,\n editor: LexicalEditor,\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element\n ) => void\n ) => void\n }\n ) {\n super(title)\n this.title = title\n this.keywords = options.keywords || []\n this.icon = options.icon\n this.keyboardShortcut = options.keyboardShortcut\n this.onSelect = options.onSelect.bind(this)\n }\n}\n","import { FORMAT_ELEMENT_COMMAND } from \"lexical\"\nimport {\n AlignCenterIcon,\n AlignJustifyIcon,\n AlignLeftIcon,\n AlignRightIcon,\n} from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function AlignmentPickerPlugin({\n alignment,\n}: {\n alignment: \"left\" | \"center\" | \"right\" | \"justify\"\n}) {\n return new ComponentPickerOption(`Align ${alignment}`, {\n icon: <AlignIcons alignment={alignment} />,\n keywords: [\"align\", \"justify\", alignment],\n onSelect: (_, editor) =>\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, alignment),\n })\n}\n\nfunction AlignIcons({\n alignment,\n}: {\n alignment: \"left\" | \"center\" | \"right\" | \"justify\"\n}) {\n switch (alignment) {\n case \"left\":\n return <IconSize size=\"sm\"><AlignLeftIcon /></IconSize>\n case \"center\":\n return <IconSize size=\"sm\"><AlignCenterIcon /></IconSize>\n case \"right\":\n return <IconSize size=\"sm\"><AlignRightIcon /></IconSize>\n case \"justify\":\n return <IconSize size=\"sm\"><AlignJustifyIcon /></IconSize>\n }\n}\n","import { INSERT_UNORDERED_LIST_COMMAND } from \"@lexical/list\"\nimport { ListIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function BulletedListPickerPlugin() {\n return new ComponentPickerOption(\"Bulleted List\", {\n icon: <IconSize size=\"sm\"><ListIcon /></IconSize>,\n keywords: [\"bulleted list\", \"unordered list\", \"ul\", \"- list\", \"+ list\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined),\n })\n}\n","import { INSERT_CHECK_LIST_COMMAND } from \"@lexical/list\"\nimport { ListTodoIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function CheckListPickerPlugin() {\n return new ComponentPickerOption(\"Check List\", {\n icon: <IconSize size=\"sm\"><ListTodoIcon /></IconSize>,\n keywords: [\"check list\", \"todo list\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined),\n })\n}\n","import { $createCodeNode } from \"@lexical/code\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { CodeIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function CodePickerPlugin() {\n return new ComponentPickerOption(\"Code\", {\n icon: <IconSize size=\"sm\"><CodeIcon /></IconSize>,\n keywords: [\"javascript\", \"python\", \"js\", \"codeblock\"],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n\n if ($isRangeSelection(selection)) {\n if (selection.isCollapsed()) {\n $setBlocksType(selection, () => $createCodeNode())\n } else {\n // Will this ever happen?\n const textContent = selection.getTextContent()\n const codeNode = $createCodeNode()\n selection.insertNodes([codeNode])\n selection.insertRawText(textContent)\n }\n }\n }),\n })\n}\n","import { Columns3Icon } from \"lucide-react\"\n\nimport { InsertLayoutDialog } from \"../../plugins/layout-plugin\"\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ColumnsLayoutPickerPlugin() {\n return new ComponentPickerOption(\"Columns Layout\", {\n icon: <IconSize size=\"sm\"><Columns3Icon /></IconSize>,\n keywords: [\"columns\", \"layout\", \"grid\"],\n onSelect: (_, editor, showModal) =>\n showModal(\"Insert Columns Layout\", (onClose) => (\n <InsertLayoutDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}\n","import { INSERT_HORIZONTAL_RULE_COMMAND } from \"@lexical/react/LexicalHorizontalRuleNode\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function DividerPickerPlugin() {\n return new ComponentPickerOption(\"Divider\", {\n icon: <IconSize size=\"sm\"><MinusIcon /></IconSize>,\n keywords: [\"horizontal rule\", \"divider\", \"hr\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined),\n })\n}\n","import { INSERT_EMBED_COMMAND } from \"@lexical/react/LexicalAutoEmbedPlugin\"\n\nimport {\n CustomEmbedConfig,\n EmbedConfigs,\n} from \"../../plugins/embeds/auto-embed-plugin\"\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\n\nexport function EmbedsPickerPlugin({\n embed,\n}: {\n embed: \"tweet\" | \"youtube-video\"\n}) {\n const embedConfig = EmbedConfigs.find(\n (config) => config.type === embed\n ) as CustomEmbedConfig\n\n return new ComponentPickerOption(`Embed ${embedConfig.contentName}`, {\n icon: embedConfig.icon,\n keywords: [...embedConfig.keywords, \"embed\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_EMBED_COMMAND, embedConfig.type),\n })\n}\n","import { $createHeadingNode } from \"@lexical/rich-text\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { Heading1Icon, Heading2Icon, Heading3Icon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function HeadingPickerPlugin({ n }: { n: 1 | 2 | 3 }) {\n return new ComponentPickerOption(`Heading ${n}`, {\n icon: <HeadingIcons n={n} />,\n keywords: [\"heading\", \"header\", `h${n}`],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createHeadingNode(`h${n}`))\n }\n }),\n })\n}\n\nfunction HeadingIcons({ n }: { n: number }) {\n switch (n) {\n case 1:\n return <IconSize size=\"sm\"><Heading1Icon /></IconSize>\n case 2:\n return <IconSize size=\"sm\"><Heading2Icon /></IconSize>\n case 3:\n return <IconSize size=\"sm\"><Heading3Icon /></IconSize>\n }\n}\n","import { ImageIcon } from \"lucide-react\"\n\nimport { InsertImageDialog } from \"../../plugins/images-plugin\"\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ImagePickerPlugin() {\n return new ComponentPickerOption(\"Image\", {\n icon: <IconSize size=\"sm\"><ImageIcon /></IconSize>,\n keywords: [\"image\", \"photo\", \"picture\", \"file\"],\n onSelect: (_, editor, showModal) =>\n showModal(\"Insert Image\", (onClose) => (\n <InsertImageDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}\n","import { INSERT_ORDERED_LIST_COMMAND } from \"@lexical/list\"\nimport { ListOrderedIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function NumberedListPickerPlugin() {\n return new ComponentPickerOption(\"Numbered List\", {\n icon: <IconSize size=\"sm\"><ListOrderedIcon /></IconSize>,\n keywords: [\"numbered list\", \"ordered list\", \"ol\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined),\n })\n}\n","import { $setBlocksType } from \"@lexical/selection\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\nimport { TextIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ParagraphPickerPlugin() {\n return new ComponentPickerOption(\"Paragraph\", {\n icon: <IconSize size=\"sm\"><TextIcon /></IconSize>,\n keywords: [\"normal\", \"paragraph\", \"p\", \"text\"],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n }),\n })\n}\n","import { $createQuoteNode } from \"@lexical/rich-text\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { QuoteIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function QuotePickerPlugin() {\n return new ComponentPickerOption(\"Quote\", {\n icon: <IconSize size=\"sm\"><QuoteIcon /></IconSize>,\n keywords: [\"block quote\"],\n onSelect: (_, editor) =>\n editor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createQuoteNode())\n }\n }),\n })\n}\n","export function invariant(\n cond?: boolean,\n message?: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- rest args for compile-time replacement\n ..._args: string[]\n): asserts cond {\n if (cond) {\n return\n }\n\n throw new Error(\n \"Internal Lexical error: invariant() is meant to be replaced at compile \" +\n \"time. There is no runtime version. Error: \" +\n message\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport {\n createContext,\n JSX,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\"\nimport * as React from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $createTableNodeWithDimensions,\n TableNode,\n} from \"@lexical/table\"\nimport {\n $insertNodes,\n $getSelection,\n $getRoot,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n} from \"lexical\"\n\nimport { invariant } from \"../shared/invariant\"\nimport { Button } from \"../ui/button\"\nimport { DialogFooter } from \"../ui/dialog\"\nimport { Flex } from \"../ui/flex\"\nimport { Input } from \"../ui/input\"\nimport { Label } from \"../ui/label\"\n\nexport type InsertTableCommandPayload = Readonly<{\n columns: string\n rows: string\n includeHeaders?: boolean\n}>\n\nexport type CellContextShape = {\n cellEditorConfig: null | CellEditorConfig\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>\n set: (\n cellEditorConfig: null | CellEditorConfig,\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const INSERT_NEW_TABLE_COMMAND: LexicalCommand<InsertTableCommandPayload> =\n createCommand(\"INSERT_NEW_TABLE_COMMAND\")\n\n/** Chèn bảng vào editor (dùng trong dialog hoặc command handler) */\nfunction insertTableIntoEditor(\n editor: LexicalEditor,\n payload: InsertTableCommandPayload\n): void {\n const rows = Number(payload.rows) || 3\n const cols = Number(payload.columns) || 3\n const includeHeaders = payload.includeHeaders ?? false\n editor.update(\n () => {\n const root = $getRoot()\n const tableNode = $createTableNodeWithDimensions(rows, cols, includeHeaders)\n try {\n const selection = $getSelection()\n let targetBlock: ReturnType<typeof root.getFirstChild> = null\n if (selection !== null && $isRangeSelection(selection)) {\n try {\n targetBlock = selection.anchor.getNode().getTopLevelElementOrThrow()\n } catch {\n targetBlock = root.getLastChild()\n }\n } else {\n targetBlock = root.getLastChild()\n }\n if (targetBlock) {\n targetBlock.insertAfter(tableNode)\n } else {\n root.append(tableNode)\n }\n } catch {\n root.selectEnd()\n $insertNodes([tableNode])\n }\n },\n { tag: \"insert-table\" }\n )\n}\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: null | CellEditorConfig\n cellEditorPlugins: null | JSX.Element | Array<JSX.Element>\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins]\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport function InsertTableDialog({\n activeEditor,\n onClose,\n}: {\n activeEditor: LexicalEditor\n onClose: () => void\n}): JSX.Element {\n const [rows, setRows] = useState(\"5\")\n const [columns, setColumns] = useState(\"5\")\n const [includeHeaders, setIncludeHeaders] = useState(true)\n\n // Cho phép tùy chỉnh số cột/dòng; giới hạn 1–100 cột, 1–500 dòng\n const isDisabled = useMemo(() => {\n const row = Number(rows)\n const column = Number(columns)\n return !(row && row > 0 && row <= 500 && column && column > 0 && column <= 100)\n }, [rows, columns])\n\n const onClick = () => {\n const payload = { columns, rows, includeHeaders }\n onClose()\n const rootEl = activeEditor.getRootElement()\n rootEl?.focus({ preventScroll: false })\n // Chèn bảng trực tiếp bằng editor.update (không qua command) để luôn hoạt động\n setTimeout(() => {\n insertTableIntoEditor(activeEditor, payload)\n }, 150)\n }\n\n return (\n <div className=\"editor-table-dialog\">\n <Flex direction=\"column\" gap={4}>\n <Flex gap={4}>\n <div className=\"editor-table-dialog__group editor-flex-1\">\n <Label htmlFor=\"rows\" className=\"editor-mb-2\">\n Số dòng\n </Label>\n <Input\n id=\"rows\"\n placeholder=\"Ví dụ: 5\"\n onChange={(e) => setRows(e.target.value)}\n value={rows}\n data-test-id=\"table-modal-rows\"\n type=\"number\"\n min={1}\n max={500}\n />\n </div>\n <div className=\"editor-table-dialog__group editor-flex-1\">\n <Label htmlFor=\"columns\" className=\"editor-mb-2\">\n Số cột\n </Label>\n <Input\n id=\"columns\"\n placeholder=\"Ví dụ: 5\"\n onChange={(e) => setColumns(e.target.value)}\n value={columns}\n data-test-id=\"table-modal-columns\"\n type=\"number\"\n min={1}\n max={100}\n />\n </div>\n </Flex>\n\n <Flex\n align=\"center\"\n gap={2}\n className=\"editor-table-dialog__checkbox-group\"\n >\n <input\n id=\"include-headers\"\n type=\"checkbox\"\n checked={includeHeaders}\n onChange={(e) => setIncludeHeaders(e.target.checked)}\n className=\"editor-checkbox\"\n />\n <Label htmlFor=\"include-headers\" className=\"editor-label--normal\">\n Dòng đầu làm hàng tiêu đề\n </Label>\n </Flex>\n\n <div className=\"editor-text-xs-muted\">\n Sau khi chèn, có thể gộp ô (chuột phải) để tạo tiêu đề phức tạp.\n </div>\n\n <DialogFooter data-test-id=\"table-modal-confirm-insert\" className=\"editor-px-0 editor-mt-2\">\n <Button\n disabled={isDisabled}\n onClick={onClick}\n className=\"editor-w-full\"\n >\n Chèn bảng\n </Button>\n </DialogFooter>\n </Flex>\n </div>\n )\n}\n\nexport function TablePlugin({\n cellEditorConfig,\n children,\n}: {\n cellEditorConfig: CellEditorConfig\n children: JSX.Element | Array<JSX.Element>\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n invariant(false, \"TablePlugin: TableNode is not registered on editor\")\n }\n\n cellContext.set(cellEditorConfig, children)\n\n return editor.registerCommand<InsertTableCommandPayload>(\n INSERT_NEW_TABLE_COMMAND,\n ({ columns, rows, includeHeaders }) => {\n const tableNode = $createTableNodeWithDimensions(\n Number(rows),\n Number(columns),\n includeHeaders\n )\n $insertNodes([tableNode])\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [cellContext, cellEditorConfig, children, editor])\n\n return null\n}\n\n/**\n * Plugin chỉ đăng ký INSERT_NEW_TABLE_COMMAND để Insert Table tạo đúng node bảng.\n * Dùng thay cho TablePlugin đầy đủ khi không cần cellEditorConfig.\n */\nexport function InsertTableCommandPlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) return\n\n return editor.registerCommand<InsertTableCommandPayload>(\n INSERT_NEW_TABLE_COMMAND,\n (payload) => {\n insertTableIntoEditor(editor, payload)\n return true\n },\n COMMAND_PRIORITY_EDITOR\n )\n }, [editor])\n\n return null\n}\n","import { INSERT_TABLE_COMMAND } from \"@lexical/table\"\nimport { TableIcon } from \"lucide-react\"\n\nimport { ComponentPickerOption } from \"../../plugins/picker/component-picker-option\"\nimport { InsertTableDialog } from \"../../plugins/table-plugin\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function TablePickerPlugin() {\n return new ComponentPickerOption(\"Table\", {\n icon: <IconSize size=\"sm\"><TableIcon /></IconSize>,\n keywords: [\"table\", \"grid\", \"spreadsheet\", \"rows\", \"columns\"],\n onSelect: (_, editor, showModal) =>\n showModal(\"Insert Table\", (onClose) => (\n <InsertTableDialog activeEditor={editor} onClose={onClose} />\n )),\n })\n}\n\nexport function DynamicTablePickerPlugin({\n queryString,\n}: {\n queryString: string\n}) {\n const options: Array<ComponentPickerOption> = []\n\n if (queryString == null) {\n return options\n }\n\n const tableMatch = queryString.match(/^([1-9]\\d?)(?:x([1-9]\\d?)?)?$/)\n\n if (tableMatch !== null && tableMatch[1]) {\n const rows = tableMatch[1]\n const colOptions = tableMatch[2]\n ? [tableMatch[2]]\n : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(String)\n\n options.push(\n ...colOptions.map(\n (columns) =>\n new ComponentPickerOption(`${rows}x${columns} Table`, {\n icon: (\n <IconSize size=\"sm\">\n <TableIcon />\n </IconSize>\n ),\n keywords: [\"table\"],\n onSelect: (_, editor) =>\n editor.dispatchCommand(INSERT_TABLE_COMMAND, { columns: columns || \"1\", rows }),\n })\n )\n )\n }\n\n return options\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $getSelection,\n $isRangeSelection,\n $setSelection,\n FOCUS_COMMAND,\n} from \"lexical\"\n\nconst COMMAND_PRIORITY_LOW = 1\nconst TAB_TO_FOCUS_INTERVAL = 100\n\nlet lastTabKeyDownTimestamp = 0\nlet hasRegisteredKeyDownListener = false\n\nfunction registerKeyTimeStampTracker() {\n window.addEventListener(\n \"keydown\",\n (event: KeyboardEvent) => {\n // Tab\n if (event.key === \"Tab\") {\n lastTabKeyDownTimestamp = event.timeStamp\n }\n },\n true\n )\n}\n\nexport function TabFocusPlugin(): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!hasRegisteredKeyDownListener) {\n registerKeyTimeStampTracker()\n hasRegisteredKeyDownListener = true\n }\n\n return editor.registerCommand(\n FOCUS_COMMAND,\n (event: FocusEvent) => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n if (\n lastTabKeyDownTimestamp + TAB_TO_FOCUS_INTERVAL >\n event.timeStamp\n ) {\n $setSelection(selection.clone())\n }\n }\n return false\n },\n COMMAND_PRIORITY_LOW\n )\n }, [editor])\n\n return null\n}\n","\"use client\"\n\nimport { useEffect, useRef } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\"\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $isTableCellNode,\n TableNode,\n} from \"@lexical/table\"\nimport { $getNearestNodeFromDOMNode, $getNodeByKey, type NodeKey } from \"lexical\"\n\ntype ResizeEdge = \"left\" | \"right\"\n\ntype DragState = {\n tableKey: NodeKey\n columnIndex: number\n startX: number\n startWidth: number\n initialColWidths: number[]\n}\n\nconst EDGE_HITBOX_PX = 12\n\n/** Độ rộng tối thiểu khi kéo cột (px) — nhỏ hơn để có thể thu hẹp cột như \"TT\" */\nconst MIN_COLUMN_WIDTH_PX = 15\n\nfunction getCellTarget(target: EventTarget | null): HTMLTableCellElement | null {\n if (!target) return null\n let node = target as Node\n if (node.nodeType === Node.TEXT_NODE) {\n node = node.parentNode as Node\n }\n if (!(node instanceof HTMLElement)) return null\n const cell = node.closest(\"th, td\")\n return cell instanceof HTMLTableCellElement ? cell : null\n}\n\nfunction getResizeEdge(clientX: number, rect: DOMRect): ResizeEdge | null {\n const nearLeft = Math.abs(clientX - rect.left) <= EDGE_HITBOX_PX\n const nearRight = Math.abs(clientX - rect.right) <= EDGE_HITBOX_PX\n\n if (!nearLeft && !nearRight) return null\n if (nearLeft && nearRight) return \"right\"\n return nearLeft ? \"left\" : \"right\"\n}\n\nfunction getColumnIndexFromTableMap(\n tableNode: TableNode,\n tableCellNode: ReturnType<typeof $getNearestNodeFromDOMNode>\n): number | null {\n if (!$isTableCellNode(tableCellNode)) return null\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n for (let row = 0; row < tableMap.length; row++) {\n const tableMapRow = tableMap[row]\n if (!tableMapRow) continue\n\n for (let column = 0; column < tableMapRow.length; column++) {\n const cell = tableMapRow[column]\n if (cell && cell.cell === tableCellNode) {\n return column\n }\n }\n }\n\n return null\n}\n\nexport function TableColumnResizerPlugin() {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const dragRef = useRef<DragState | null>(null)\n\n useEffect(() => {\n if (!isEditable) return\n\n const rootElement = editor.getRootElement()\n if (!rootElement) return\n\n const setCursor = (cursor: string) => {\n rootElement.style.cursor = cursor\n }\n\n const clearCursor = () => {\n setCursor(\"\")\n }\n\n const onPointerMove = (event: PointerEvent) => {\n if (dragRef.current) return\n\n const cell = getCellTarget(event.target)\n if (!cell) {\n clearCursor()\n return\n }\n\n const edge = getResizeEdge(event.clientX, cell.getBoundingClientRect())\n \n // Disable dragging left edge of the first column (visual check)\n if (edge === \"left\") {\n const table = cell.closest(\"table\")\n if (table) {\n const tableRect = table.getBoundingClientRect()\n const cellRect = cell.getBoundingClientRect()\n // If cell left edge is close to table left edge (within tolerance)\n if (Math.abs(cellRect.left - tableRect.left) < 5) {\n clearCursor()\n return\n }\n }\n }\n\n setCursor(edge ? \"col-resize\" : \"\")\n }\n\n const onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) return\n\n const cell = getCellTarget(event.target)\n if (!cell) return\n\n const edge = getResizeEdge(event.clientX, cell.getBoundingClientRect())\n if (!edge) return\n\n event.preventDefault()\n\n let nextDragState: DragState | null = null\n\n editor.read(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell)\n if (!$isTableCellNode(tableCellNode)) return\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const columnIndexFromMap = getColumnIndexFromTableMap(tableNode, tableCellNode)\n if (columnIndexFromMap == null) return\n\n // Disable resizing left edge of the first column\n if (edge === \"left\" && columnIndexFromMap === 0) return\n\n const colSpan = tableCellNode.getColSpan()\n const resizeColumnIndex =\n edge === \"left\" ? columnIndexFromMap - 1 : columnIndexFromMap + colSpan - 1\n\n let currentWidths = tableNode.getColWidths()\n \n if (!currentWidths) {\n const tableElement = editor.getElementByKey(tableNode.getKey())\n if (tableElement instanceof HTMLTableElement) {\n // Attempt to reconstruct widths from TableMap (handles merged cells better)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const colCount = tableNode.getColumnCount()\n const widths: (number | undefined)[] = new Array(colCount).fill(undefined)\n \n for (let r = 0; r < tableMap.length; r++) {\n const row = tableMap[r]\n if (!row) continue\n for (let c = 0; c < row.length; c++) {\n if (widths[c] !== undefined) continue\n \n const tableMapCell = row[c]\n if (!tableMapCell) continue\n\n const { cell } = tableMapCell\n // Only measure if this cell spans 1 column (accurate width)\n if (cell.getColSpan() === 1) {\n const cellElem = editor.getElementByKey(cell.getKey())\n if (cellElem) {\n widths[c] = Math.round(cellElem.getBoundingClientRect().width)\n }\n }\n }\n // If all widths found, break early\n if (widths.every(w => w !== undefined)) break\n }\n\n // Fallback: If still missing widths, try row 0 or distribute evenly\n if (widths.some(w => w === undefined)) {\n if (tableElement.rows.length > 0) {\n const row = tableElement.rows[0]\n if (row && row.cells.length === colCount) {\n // Row 0 is perfect match, use it for missing values or override?\n // Prefer row 0 if it's clean\n const rowWidths = Array.from(row.cells).map(c => Math.round(c.getBoundingClientRect().width))\n for (let i = 0; i < colCount; i++) {\n if (widths[i] === undefined) widths[i] = rowWidths[i]\n }\n }\n }\n }\n \n // Final fallback: distribute evenly for any remaining undefined\n if (widths.some(w => w === undefined)) {\n const tableWidth = tableElement.getBoundingClientRect().width\n const defaultWidth = tableWidth / colCount\n for (let i = 0; i < colCount; i++) {\n if (widths[i] === undefined) widths[i] = defaultWidth\n }\n }\n\n currentWidths = widths as number[]\n }\n }\n\n if (!currentWidths) {\n currentWidths = Array(tableNode.getColumnCount()).fill(MIN_COLUMN_WIDTH_PX)\n }\n\n const startWidth =\n currentWidths[resizeColumnIndex] ??\n Math.max(Math.round(cell.getBoundingClientRect().width), MIN_COLUMN_WIDTH_PX)\n\n nextDragState = {\n tableKey: tableNode.getKey(),\n columnIndex: resizeColumnIndex,\n startX: event.clientX,\n startWidth,\n initialColWidths: [...currentWidths],\n }\n })\n\n if (!nextDragState) return\n\n event.preventDefault()\n event.stopPropagation()\n dragRef.current = nextDragState\n setCursor(\"col-resize\")\n }\n\n const onPointerMoveDocument = (event: PointerEvent) => {\n const drag = dragRef.current\n if (!drag) return\n\n const { initialColWidths, startX, columnIndex } = drag\n const deltaX = event.clientX - startX\n\n editor.update(() => {\n const tableNode = $getNodeByKey(drag.tableKey)\n if (!(tableNode instanceof TableNode)) return\n\n const colWidths = tableNode.getColWidths() ?? initialColWidths\n const nextColumnIndex = columnIndex + 1\n const hasNeighbor = nextColumnIndex < initialColWidths.length\n\n if (hasNeighbor) {\n // Strict \"Borrow\" Logic:\n // Adjust column width by borrowing from the neighbor.\n // The total width of the two columns remains constant, ensuring the table width doesn't change.\n const currentLeftWidth = initialColWidths[columnIndex]\n const currentRightWidth = initialColWidths[nextColumnIndex]\n\n if (currentLeftWidth === undefined || currentRightWidth === undefined) return\n\n const maxShrinkLeft = currentLeftWidth - MIN_COLUMN_WIDTH_PX\n const maxGrowLeft = currentRightWidth - MIN_COLUMN_WIDTH_PX\n\n // Clamp deltaX to ensure neither column shrinks below MIN_COLUMN_WIDTH_PX\n const constrainedDelta = Math.min(Math.max(deltaX, -maxShrinkLeft), maxGrowLeft)\n\n const newLeftWidth = currentLeftWidth + constrainedDelta\n const newRightWidth = currentRightWidth - constrainedDelta\n\n if (colWidths[columnIndex] === newLeftWidth && colWidths[nextColumnIndex] === newRightWidth)\n return\n\n const nextColWidths = [...colWidths]\n nextColWidths[columnIndex] = newLeftWidth\n nextColWidths[nextColumnIndex] = newRightWidth\n tableNode.setColWidths(nextColWidths)\n } else {\n // Fallback for last column (or if no neighbor exists)\n const currentWidth = initialColWidths[columnIndex]\n if (currentWidth === undefined) return\n \n const newWidth = Math.max(MIN_COLUMN_WIDTH_PX, Math.round(currentWidth + deltaX))\n \n if (colWidths[columnIndex] === newWidth) return\n\n const nextColWidths = [...colWidths]\n nextColWidths[columnIndex] = newWidth\n tableNode.setColWidths(nextColWidths)\n }\n })\n }\n\n const onPointerUpDocument = () => {\n if (!dragRef.current) return\n dragRef.current = null\n clearCursor()\n }\n\n rootElement.addEventListener(\"pointermove\", onPointerMove)\n rootElement.addEventListener(\"pointerdown\", onPointerDown)\n document.addEventListener(\"pointermove\", onPointerMoveDocument)\n document.addEventListener(\"pointerup\", onPointerUpDocument)\n\n return () => {\n rootElement.removeEventListener(\"pointermove\", onPointerMove)\n rootElement.removeEventListener(\"pointerdown\", onPointerDown)\n document.removeEventListener(\"pointermove\", onPointerMoveDocument)\n document.removeEventListener(\"pointerup\", onPointerUpDocument)\n clearCursor()\n dragRef.current = null\n }\n }, [editor, isEditable])\n\n return null\n}\n","\"use client\"\n\nimport { createContext, JSX, useContext } from \"react\"\nimport { LexicalEditor } from \"lexical\"\n\nconst Context = createContext<{\n activeEditor: LexicalEditor\n $updateToolbar: () => void\n blockType: string\n setBlockType: (blockType: string) => void\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element,\n closeOnClickOutside?: boolean\n ) => void\n}>({\n activeEditor: {} as LexicalEditor,\n $updateToolbar: () => {},\n blockType: \"paragraph\",\n setBlockType: () => {},\n showModal: () => {},\n})\n\nexport function ToolbarContext({\n activeEditor,\n $updateToolbar,\n blockType,\n setBlockType,\n showModal,\n children,\n}: {\n activeEditor: LexicalEditor\n $updateToolbar: () => void\n blockType: string\n setBlockType: (blockType: string) => void\n showModal: (\n title: string,\n showModal: (onClose: () => void) => JSX.Element,\n closeOnClickOutside?: boolean\n ) => void\n children: React.ReactNode\n}) {\n return (\n <Context.Provider\n value={{\n activeEditor,\n $updateToolbar,\n blockType,\n setBlockType,\n showModal,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport function useToolbarContext() {\n return useContext(Context)\n}\n","import { useEffect } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport {\n $getSelection,\n BaseSelection,\n COMMAND_PRIORITY_CRITICAL,\n SELECTION_CHANGE_COMMAND,\n} from \"lexical\"\n\nimport { useToolbarContext } from \"../context/toolbar-context\"\n\nexport function useUpdateToolbarHandler(\n callback: (selection: BaseSelection) => void\n) {\n const [editor] = useLexicalComposerContext()\n const { activeEditor } = useToolbarContext()\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection()\n if (selection) {\n callback(selection)\n }\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, callback])\n\n useEffect(() => {\n activeEditor.getEditorState().read(() => {\n const selection = $getSelection()\n if (selection) {\n callback(selection)\n }\n })\n }, [activeEditor, callback])\n}\n","import {\n CodeIcon,\n Heading1Icon,\n Heading2Icon,\n Heading3Icon,\n ListIcon,\n ListOrderedIcon,\n ListTodoIcon,\n QuoteIcon,\n TextIcon,\n ListMinusIcon,\n ListPlusIcon,\n CaseSensitiveIcon,\n} from \"lucide-react\"\nimport { IconSize } from \"../../../ui/typography\"\n\nexport const blockTypeToBlockName: Record<\n string,\n { label: string; icon: React.ReactNode }\n> = {\n paragraph: {\n label: \"Paragraph\",\n icon: <IconSize size=\"sm\"><TextIcon /></IconSize>,\n },\n h1: {\n label: \"Heading 1\",\n icon: <IconSize size=\"sm\"><Heading1Icon /></IconSize>,\n },\n h2: {\n label: \"Heading 2\",\n icon: <IconSize size=\"sm\"><Heading2Icon /></IconSize>,\n },\n h3: {\n label: \"Heading 3\",\n icon: <IconSize size=\"sm\"><Heading3Icon /></IconSize>,\n },\n number: {\n label: \"Numbered List\",\n icon: <IconSize size=\"sm\"><ListOrderedIcon /></IconSize>,\n },\n \"number-alpha\": {\n label: \"Alpha List (a, b, c)\",\n icon: <IconSize size=\"sm\"><CaseSensitiveIcon /></IconSize>,\n },\n bullet: {\n label: \"Bulleted List\",\n icon: <IconSize size=\"sm\"><ListIcon /></IconSize>,\n },\n \"bullet-dash\": {\n label: \"Dash List (-)\",\n icon: <IconSize size=\"sm\"><ListMinusIcon /></IconSize>,\n },\n \"bullet-plus\": {\n label: \"Plus List (+)\",\n icon: <IconSize size=\"sm\"><ListPlusIcon /></IconSize>,\n },\n check: {\n label: \"Check List\",\n icon: <IconSize size=\"sm\"><ListTodoIcon /></IconSize>,\n },\n code: {\n label: \"Code Block\",\n icon: <IconSize size=\"sm\"><CodeIcon /></IconSize>,\n },\n quote: {\n label: \"Quote\",\n icon: <IconSize size=\"sm\"><QuoteIcon /></IconSize>,\n },\n}\n","\"use client\"\n\nimport { $isListNode, ListNode } from \"@lexical/list\"\nimport { $isHeadingNode } from \"@lexical/rich-text\"\nimport { $findMatchingParent, $getNearestNodeOfType } from \"@lexical/utils\"\nimport {\n $isRangeSelection,\n $isRootOrShadowRoot,\n BaseSelection,\n} from \"lexical\"\nimport { useCallback } from \"react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport { ListWithColorNode } from \"../../nodes/list-with-color-node\"\nimport { blockTypeToBlockName } from \"../../plugins/toolbar/block-format/block-format-data\"\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectTrigger,\n} from \"../../ui/select\"\n\nexport function BlockFormatDropDown({\n children,\n}: {\n children: React.ReactNode\n}) {\n const { activeEditor, blockType, setBlockType } = useToolbarContext()\n const currentBlockType = blockTypeToBlockName[blockType]\n ? blockType\n : \"paragraph\"\n const currentBlockMeta = blockTypeToBlockName[currentBlockType]\n\n /**\n * Updates the toolbar state based on the current selection.\n * Identifies if the cursor is in a List, Heading, or other block type.\n */\n const $updateToolbar = useCallback(\n (selection: BaseSelection) => {\n if (!$isRangeSelection(selection)) return\n\n const anchorNode = selection.anchor.getNode()\n \n // Find the top-level element or the nearest parent that is a root/shadow root\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent()\n return parent !== null && $isRootOrShadowRoot(parent)\n })\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow()\n }\n\n const elementKey = element.getKey()\n const elementDOM = activeEditor.getElementByKey(elementKey)\n\n if (elementDOM !== null) {\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType<ListNode>(\n anchorNode,\n ListNode\n )\n const listNode = parentList || element\n let type: string = listNode.getListType()\n\n if (listNode instanceof ListWithColorNode) {\n const markerType = listNode.getMarkerType()\n\n if (type === \"bullet\") {\n if (markerType === \"-\") type = \"bullet-dash\"\n else if (markerType === \"+\") type = \"bullet-plus\"\n } else if (type === \"number\") {\n if (markerType === \"alpha\") type = \"number-alpha\"\n }\n }\n setBlockType(type)\n } else {\n const type = $isHeadingNode(element)\n ? element.getTag()\n : element.getType()\n if (type in blockTypeToBlockName) {\n setBlockType(type as keyof typeof blockTypeToBlockName)\n }\n }\n }\n },\n [activeEditor, setBlockType]\n )\n\n useUpdateToolbarHandler($updateToolbar)\n\n return (\n <Select\n modal={false}\n value={currentBlockType}\n onValueChange={(value) => {\n if (value in blockTypeToBlockName) {\n setBlockType(value as keyof typeof blockTypeToBlockName)\n }\n }}\n >\n <SelectTrigger className=\"editor-toolbar-select-trigger editor-toolbar-select-trigger--w-md\">\n <div className=\"editor-toolbar-select-icon\">\n {currentBlockMeta?.icon}\n </div>\n <span className=\"editor-truncate editor-block-format-label\">{currentBlockMeta?.label}</span>\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>{children}</SelectGroup>\n </SelectContent>\n </Select>\n )\n}\n","import { INSERT_UNORDERED_LIST_COMMAND } from \"@lexical/list\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"bullet\"\n\nexport function FormatBulletedList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatBulletedList = () => {\n if (blockType !== \"bullet\") {\n activeEditor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatBulletedList}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { INSERT_CHECK_LIST_COMMAND } from \"@lexical/list\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"check\"\n\nexport function FormatCheckList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatCheckList = () => {\n if (blockType !== \"check\") {\n activeEditor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatCheckList}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { $createCodeNode } from \"@lexical/code\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"code\"\n\nexport function FormatCodeBlock() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatCode = () => {\n if (blockType !== \"code\") {\n activeEditor.update(() => {\n let selection = $getSelection()\n\n if (selection !== null) {\n if (selection.isCollapsed()) {\n $setBlocksType(selection, () => $createCodeNode())\n } else {\n const textContent = selection.getTextContent()\n const codeNode = $createCodeNode()\n selection.insertNodes([codeNode])\n selection = $getSelection()\n if ($isRangeSelection(selection)) {\n selection.insertRawText(textContent)\n }\n }\n }\n })\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatCode}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { $createHeadingNode, HeadingTagType } from \"@lexical/rich-text\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nexport function FormatHeading({ levels = [] }: { levels: HeadingTagType[] }) {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatHeading = (headingSize: HeadingTagType) => {\n if (blockType !== headingSize) {\n activeEditor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createHeadingNode(headingSize))\n })\n }\n }\n\n return levels.map((level) => (\n <SelectItem\n key={level}\n value={level}\n onPointerDown={() => formatHeading(level)}\n >\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[level]?.icon}\n {blockTypeToBlockName[level]?.label}\n </Flex>\n </SelectItem>\n ))\n}\n","import {\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n} from \"@lexical/list\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getNearestNodeOfType } from \"@lexical/utils\"\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n} from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { ListWithColorNode } from \"../../../nodes/list-with-color-node\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { Flex } from \"../../../ui/flex\"\nimport { SelectItem } from \"../../../ui/select\"\n\ninterface FormatListWithMarkerProps {\n blockFormatValue: string\n listType: \"bullet\" | \"number\"\n markerType: string\n}\n\nexport function FormatListWithMarker({\n blockFormatValue,\n listType,\n markerType,\n}: FormatListWithMarkerProps) {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatList = () => {\n if (blockType !== blockFormatValue) {\n const command =\n listType === \"bullet\"\n ? INSERT_UNORDERED_LIST_COMMAND\n : INSERT_ORDERED_LIST_COMMAND\n\n activeEditor.dispatchCommand(command, undefined)\n\n // Update marker type immediately after\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode()\n const listNode = $getNearestNodeOfType(anchorNode, ListWithColorNode)\n if (listNode) {\n listNode.setMarkerType(markerType)\n }\n }\n })\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={blockFormatValue} onPointerDown={formatList}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[blockFormatValue]?.icon}\n {blockTypeToBlockName[blockFormatValue]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { INSERT_ORDERED_LIST_COMMAND } from \"@lexical/list\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"number\"\n\nexport function FormatNumberedList() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n const formatNumberedList = () => {\n if (blockType !== \"number\") {\n activeEditor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\n } else {\n formatParagraph()\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatNumberedList}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { $setBlocksType } from \"@lexical/selection\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"paragraph\"\n\nexport function FormatParagraph() {\n const { activeEditor } = useToolbarContext()\n\n const formatParagraph = () => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n $setBlocksType(selection, () => $createParagraphNode())\n }\n })\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatParagraph}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","import { $createQuoteNode } from \"@lexical/rich-text\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $getSelection } from \"lexical\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { blockTypeToBlockName } from \"../../../plugins/toolbar/block-format/block-format-data\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nconst BLOCK_FORMAT_VALUE = \"quote\"\n\nexport function FormatQuote() {\n const { activeEditor, blockType } = useToolbarContext()\n\n const formatQuote = () => {\n if (blockType !== \"quote\") {\n activeEditor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n }\n }\n\n return (\n <SelectItem value={BLOCK_FORMAT_VALUE} onPointerDown={formatQuote}>\n <Flex align=\"center\" gap={2}>\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.icon}\n {blockTypeToBlockName[BLOCK_FORMAT_VALUE]?.label}\n </Flex>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport { PlusIcon } from \"lucide-react\"\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectTrigger,\n} from \"../../ui/select\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function BlockInsertPlugin({ children }: { children: React.ReactNode }) {\n return (\n <Select\n modal={false}\n value={\"\"}\n >\n <SelectTrigger className=\"editor-toolbar-item editor-toolbar-item--w-auto editor-toolbar-item--gap-sm\">\n <IconSize size=\"sm\">\n <PlusIcon />\n </IconSize>\n <span>Insert</span>\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>{children}</SelectGroup>\n </SelectContent>\n </Select>\n )\n}\n","\"use client\"\n\nimport { Columns3Icon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { InsertLayoutDialog } from \"../../../plugins/layout-plugin\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\nimport { IconSize } from \"../../../ui/typography\"\n\nexport function InsertColumnsLayout() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"columns\"\n onPointerUp={() =>\n showModal(\"Insert Columns Layout\", (onClose) => (\n <InsertLayoutDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }\n className=\"\"\n >\n <Flex align=\"center\" gap={2}>\n <IconSize size=\"sm\">\n <Columns3Icon />\n </IconSize>\n <span>Columns Layout</span>\n </Flex>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { AutoEmbedDialogStandalone, EmbedConfigs } from \"../../../plugins/embeds/auto-embed-plugin\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\n\nexport function InsertEmbeds() {\n const { activeEditor, showModal } = useToolbarContext()\n return EmbedConfigs.map((embedConfig) => (\n <SelectItem\n key={embedConfig.type}\n value={embedConfig.type}\n onPointerUp={() => {\n showModal(`Embed ${embedConfig.contentName}`, (onClose) => (\n <AutoEmbedDialogStandalone \n embedConfig={embedConfig} \n onClose={onClose} \n editor={activeEditor}\n />\n ))\n }}\n className=\"\"\n >\n <Flex align=\"center\" gap={2}>\n {embedConfig.icon}\n <span>{embedConfig.contentName}</span>\n </Flex>\n </SelectItem>\n ))\n}\n","\"use client\"\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from \"@lexical/react/LexicalHorizontalRuleNode\"\nimport { ScissorsIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\nimport { IconSize } from \"../../../ui/typography\"\n\nexport function InsertHorizontalRule() {\n const { activeEditor } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"horizontal-rule\"\n onPointerUp={() =>\n activeEditor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined)\n }\n className=\"\"\n >\n <Flex align=\"center\" gap={2}>\n <IconSize size=\"sm\">\n <ScissorsIcon />\n </IconSize>\n <span>Horizontal Rule</span>\n </Flex>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport { ImageIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { InsertImageDialog } from \"../../../plugins/images-plugin\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\nimport { IconSize } from \"../../../ui/typography\"\n\nexport function InsertImage() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"image\"\n onPointerUp={() => {\n showModal(\"Insert Image\", (onClose) => (\n <InsertImageDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }}\n className=\"\"\n >\n <Flex align=\"center\" gap={2}>\n <IconSize size=\"sm\">\n <ImageIcon />\n </IconSize>\n <span>Image</span>\n </Flex>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport { TableIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../../context/toolbar-context\"\nimport { InsertTableDialog } from \"../../../plugins/table-plugin\"\nimport { SelectItem } from \"../../../ui/select\"\nimport { Flex } from \"../../../ui/flex\"\nimport { IconSize } from \"../../../ui/typography\"\n\nexport function InsertTable() {\n const { activeEditor, showModal } = useToolbarContext()\n\n return (\n <SelectItem\n value=\"table\"\n onPointerUp={() =>\n showModal(\"Insert Table\", (onClose) => (\n <InsertTableDialog activeEditor={activeEditor} onClose={onClose} />\n ))\n }\n className=\"\"\n >\n <Flex align=\"center\" gap={2}>\n <IconSize size=\"sm\">\n <TableIcon />\n </IconSize>\n <span>Table</span>\n </Flex>\n </SelectItem>\n )\n}\n","\"use client\"\n\nimport { useCallback } from \"react\"\nimport { $isDecoratorBlockNode } from \"@lexical/react/LexicalDecoratorBlockNode\"\nimport { $isHeadingNode, $isQuoteNode } from \"@lexical/rich-text\"\nimport { $isTableSelection } from \"@lexical/table\"\nimport { $getNearestBlockElementAncestorOrThrow } from \"@lexical/utils\"\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n} from \"lexical\"\nimport { EraserIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { Button } from \"../../ui/button\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function ClearFormattingToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n\n const clearFormatting = useCallback(() => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const anchor = selection.anchor\n const focus = selection.focus\n const nodes = selection.getNodes()\n const extractedNodes = selection.extract()\n\n if (anchor.key === focus.key && anchor.offset === focus.offset) {\n return\n }\n\n nodes.forEach((node, idx) => {\n // We split the first and last node by the selection\n // So that we don't format unselected text inside those nodes\n if ($isTextNode(node)) {\n // Use a separate variable to ensure TS does not lose the refinement\n let textNode = node\n if (idx === 0 && anchor.offset !== 0) {\n textNode = textNode.splitText(anchor.offset)[1] || textNode\n }\n if (idx === nodes.length - 1) {\n textNode = textNode.splitText(focus.offset)[0] || textNode\n }\n /**\n * If the selected text has one format applied\n * selecting a portion of the text, could\n * clear the format to the wrong portion of the text.\n *\n * The cleared text is based on the length of the selected text.\n */\n // We need this in case the selected text only has one format\n const extractedTextNode = extractedNodes[0]\n if (nodes.length === 1 && $isTextNode(extractedTextNode)) {\n textNode = extractedTextNode\n }\n\n if (textNode.__style !== \"\") {\n textNode.setStyle(\"\")\n }\n if (textNode.__format !== 0) {\n textNode.setFormat(0)\n $getNearestBlockElementAncestorOrThrow(textNode).setFormat(\"\")\n }\n node = textNode\n } else if ($isHeadingNode(node) || $isQuoteNode(node)) {\n node.replace($createParagraphNode(), true)\n } else if ($isDecoratorBlockNode(node)) {\n node.setFormat(\"\")\n }\n })\n }\n })\n }, [activeEditor])\n\n return (\n <Button\n className=\"editor-toolbar-item\"\n aria-label=\"Clear formatting\"\n variant={\"outline\"}\n size={\"icon\"}\n onClick={clearFormatting}\n >\n <IconSize size=\"sm\">\n <EraserIcon />\n </IconSize>\n </Button>\n )\n}\n","\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n $isCodeNode,\n CODE_LANGUAGE_FRIENDLY_NAME_MAP,\n CODE_LANGUAGE_MAP,\n getLanguageFriendlyName,\n} from \"@lexical/code\"\nimport { $isListNode } from \"@lexical/list\"\nimport { $findMatchingParent } from \"@lexical/utils\"\nimport {\n $getNodeByKey,\n $isRangeSelection,\n $isRootOrShadowRoot,\n BaseSelection,\n} from \"lexical\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from \"../../ui/select\"\n\nfunction getCodeLanguageOptions(): [string, string][] {\n const options: [string, string][] = []\n\n for (const [lang, friendlyName] of Object.entries(\n CODE_LANGUAGE_FRIENDLY_NAME_MAP\n )) {\n options.push([lang, friendlyName])\n }\n\n return options\n}\n\nconst CODE_LANGUAGE_OPTIONS = getCodeLanguageOptions()\n\nexport function CodeLanguageToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n const [codeLanguage, setCodeLanguage] = useState<string>(\"\")\n const [selectedElementKey, setSelectedElementKey] = useState<string | null>(\n null\n )\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode()\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, (e) => {\n const parent = e.getParent()\n return parent !== null && $isRootOrShadowRoot(parent)\n })\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow()\n }\n\n const elementKey = element.getKey()\n const elementDOM = activeEditor.getElementByKey(elementKey)\n\n if (elementDOM !== null) {\n setSelectedElementKey(elementKey)\n\n if (!$isListNode(element) && $isCodeNode(element)) {\n const language =\n element.getLanguage() as keyof typeof CODE_LANGUAGE_MAP\n setCodeLanguage(\n language ? CODE_LANGUAGE_MAP[language] || language : \"\"\n )\n return\n }\n }\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const onCodeLanguageSelect = useCallback(\n (value: string) => {\n activeEditor.update(() => {\n if (selectedElementKey !== null) {\n const node = $getNodeByKey(selectedElementKey)\n if ($isCodeNode(node)) {\n node.setLanguage(value)\n }\n }\n })\n },\n [activeEditor, selectedElementKey]\n )\n\n return (\n <Select\n modal={false}\n value={codeLanguage}\n onValueChange={onCodeLanguageSelect}\n >\n <SelectTrigger className=\"editor-toolbar-select-trigger editor-toolbar-select-trigger--w-auto editor-toolbar-item--gap-sm\">\n <span>\n {getLanguageFriendlyName(codeLanguage) || \"Select Language\"}\n </span>\n </SelectTrigger>\n <SelectContent>\n {CODE_LANGUAGE_OPTIONS.map(([value, label]) => (\n <SelectItem\n key={value}\n value={value}\n >\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n","\"use client\"\n\nimport { useRef, useState } from \"react\"\nimport { $isLinkNode } from \"@lexical/link\"\nimport { $findMatchingParent } from \"@lexical/utils\"\nimport {\n $getNodeByKey,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n BaseSelection,\n ElementFormatType,\n FORMAT_ELEMENT_COMMAND,\n INDENT_CONTENT_COMMAND,\n NodeKey,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\"\nimport {\n AlignCenterIcon,\n AlignJustifyIcon,\n AlignLeftIcon,\n AlignRightIcon,\n IndentDecreaseIcon,\n IndentIncreaseIcon,\n} from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { $isLayoutItemNode } from \"../../nodes/layout-item-node\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport { getSelectedNode } from \"../../utils/get-selected-node\"\nimport { Separator } from \"../../ui/separator\"\nimport {\n ToggleGroup,\n ToggleGroupItem,\n} from \"../../ui/toggle-group\"\nimport { IconSize } from \"../../ui/typography\"\n\nconst ELEMENT_FORMAT_OPTIONS: {\n [key in Exclude<ElementFormatType, \"start\" | \"end\" | \"\">]: {\n icon: React.ReactNode\n iconRTL: string\n name: string\n }\n} = {\n left: {\n icon: <IconSize size=\"sm\"><AlignLeftIcon /></IconSize>,\n iconRTL: \"left-align\",\n name: \"Left Align\",\n },\n center: {\n icon: <IconSize size=\"sm\"><AlignCenterIcon /></IconSize>,\n iconRTL: \"center-align\",\n name: \"Center Align\",\n },\n right: {\n icon: <IconSize size=\"sm\"><AlignRightIcon /></IconSize>,\n iconRTL: \"right-align\",\n name: \"Right Align\",\n },\n justify: {\n icon: <IconSize size=\"sm\"><AlignJustifyIcon /></IconSize>,\n iconRTL: \"justify-align\",\n name: \"Justify Align\",\n },\n} as const\n\nexport function ElementFormatToolbarPlugin({\n separator = true,\n}: {\n separator?: boolean\n}) {\n const { activeEditor } = useToolbarContext()\n const [elementFormat, setElementFormat] = useState<ElementFormatType>(\"left\")\n const activeLayoutItemKeyRef = useRef<NodeKey | null>(null)\n\n const extractPadding = (style: string): number | null => {\n const match = style.match(/padding\\s*:\\s*(\\d+)px/i)\n if (!match?.[1]) return null\n const value = Number.parseInt(match[1], 10)\n return Number.isFinite(value) ? value : null\n }\n\n const setPadding = (style: string, nextPadding: number): string => {\n if (/padding\\s*:\\s*\\d+px/i.test(style)) {\n return style.replace(/padding\\s*:\\s*\\d+px/i, `padding: ${nextPadding}px`)\n }\n return `${style.trim().replace(/;?$/, \";\")} padding: ${nextPadding}px`.trim()\n }\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const layoutItem = $findMatchingParent(selection.anchor.getNode(), (node) =>\n $isLayoutItemNode(node)\n )\n activeLayoutItemKeyRef.current = $isLayoutItemNode(layoutItem)\n ? layoutItem.getKey()\n : null\n\n const node = getSelectedNode(selection)\n const parent = node.getParent()\n\n let matchingParent\n if ($isLinkNode(parent)) {\n // If node is a link, we need to fetch the parent paragraph node to set format\n matchingParent = $findMatchingParent(\n node,\n (parentNode) => $isElementNode(parentNode) && !parentNode.isInline()\n )\n }\n setElementFormat(\n $isElementNode(matchingParent)\n ? matchingParent.getFormatType()\n : $isElementNode(node)\n ? node.getFormatType()\n : parent?.getFormatType() || \"left\"\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const handleValueChange = (value: string) => {\n if (!value) return // Prevent unselecting current value\n\n setElementFormat(value as ElementFormatType)\n\n if (value === \"indent\") {\n activeEditor.update(() => {\n const selectedLayoutItemKey = activeLayoutItemKeyRef.current\n if (selectedLayoutItemKey) {\n const node = $getNodeByKey(selectedLayoutItemKey)\n if ($isLayoutItemNode(node)) {\n const currentPadding = extractPadding(node.getStyle()) ?? 0\n const nextPadding = Math.min(currentPadding + 4, 64)\n node.setStyle(setPadding(node.getStyle(), nextPadding))\n return\n }\n }\n\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n activeEditor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n return\n }\n const layoutItem = $findMatchingParent(selection.anchor.getNode(), (node) =>\n $isLayoutItemNode(node)\n )\n if ($isLayoutItemNode(layoutItem)) {\n const currentPadding = extractPadding(layoutItem.getStyle()) ?? 0\n const nextPadding = Math.min(currentPadding + 4, 64)\n layoutItem.setStyle(setPadding(layoutItem.getStyle(), nextPadding))\n return\n }\n activeEditor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n })\n } else if (value === \"outdent\") {\n activeEditor.update(() => {\n const selectedLayoutItemKey = activeLayoutItemKeyRef.current\n if (selectedLayoutItemKey) {\n const node = $getNodeByKey(selectedLayoutItemKey)\n if ($isLayoutItemNode(node)) {\n const currentPadding = extractPadding(node.getStyle()) ?? 0\n const nextPadding = Math.max(currentPadding - 4, 0)\n node.setStyle(setPadding(node.getStyle(), nextPadding))\n return\n }\n }\n\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n activeEditor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n return\n }\n const layoutItem = $findMatchingParent(selection.anchor.getNode(), (node) =>\n $isLayoutItemNode(node)\n )\n if ($isLayoutItemNode(layoutItem)) {\n const currentPadding = extractPadding(layoutItem.getStyle()) ?? 0\n const nextPadding = Math.max(currentPadding - 4, 0)\n layoutItem.setStyle(setPadding(layoutItem.getStyle(), nextPadding))\n return\n }\n activeEditor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n })\n } else {\n activeEditor.dispatchCommand(\n FORMAT_ELEMENT_COMMAND,\n value as ElementFormatType\n )\n }\n }\n\n return (\n <>\n <ToggleGroup\n type=\"single\"\n value={elementFormat}\n onValueChange={handleValueChange}\n size=\"sm\"\n variant=\"outline\"\n >\n {/* Alignment toggles */}\n {Object.entries(ELEMENT_FORMAT_OPTIONS).map(([value, option]) => (\n <ToggleGroupItem\n key={value}\n value={value}\n variant={\"outline\"}\n size=\"sm\"\n aria-label={option.name}\n className=\"editor-toolbar-item\"\n >\n {option.icon}\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n {separator && <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />}\n {/* Indentation toggles */}\n <ToggleGroup\n type=\"single\"\n value={elementFormat}\n onValueChange={handleValueChange}\n size=\"sm\"\n variant=\"outline\"\n >\n <ToggleGroupItem\n value=\"outdent\"\n aria-label=\"Outdent\"\n variant={\"outline\"}\n size=\"sm\"\n className=\"editor-toolbar-item\"\n >\n <IconSize size=\"sm\">\n <IndentDecreaseIcon />\n </IconSize>\n </ToggleGroupItem>\n\n <ToggleGroupItem\n value=\"indent\"\n variant={\"outline\"}\n aria-label=\"Indent\"\n size=\"sm\"\n className=\"editor-toolbar-item\"\n >\n <IconSize size=\"sm\">\n <IndentIncreaseIcon />\n </IconSize>\n </ToggleGroupItem>\n </ToggleGroup>\n </>\n )\n}\n","\"use client\"\n\nimport { useCallback, useRef, useState } from \"react\"\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\"\nimport { $findMatchingParent } from \"@lexical/utils\"\nimport {\n $getNodeByKey,\n $getSelection,\n $isRangeSelection,\n BaseSelection,\n NodeKey,\n} from \"lexical\"\nimport { PaintBucketIcon } from \"lucide-react\"\n\nimport { $isLayoutItemNode } from \"../../nodes/layout-item-node\"\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n ColorPicker,\n ColorPickerAlphaSlider,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerEyeDropper,\n ColorPickerFormatSelect,\n ColorPickerHueSlider,\n ColorPickerInput,\n ColorPickerPresets,\n ColorPickerTrigger,\n} from \"../../editor-ui/color-picker\"\nimport { Button } from \"../../ui/button\"\nimport { Flex } from \"../../ui/flex\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function FontBackgroundToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n\n const [bgColor, setBgColor] = useState(\"#fff\")\n const activeLayoutItemKeyRef = useRef<NodeKey | null>(null)\n\n const extractStyleValue = (style: string, property: string): string | null => {\n const escapedProperty = property.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n const match = style.match(new RegExp(`${escapedProperty}\\\\s*:\\\\s*([^;]+)`, \"i\"))\n return match?.[1]?.trim() ?? null\n }\n\n const setStyleProperty = (\n style: string,\n property: string,\n value: string\n ): string => {\n const escapedProperty = property.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n const regex = new RegExp(`${escapedProperty}\\\\s*:\\\\s*[^;]+`, \"i\")\n if (regex.test(style)) {\n return style.replace(regex, `${property}: ${value}`)\n }\n return `${style.trim().replace(/;?$/, \";\")} ${property}: ${value}`.trim()\n }\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const layoutItem = $findMatchingParent(selection.anchor.getNode(), (node) =>\n $isLayoutItemNode(node)\n )\n if ($isLayoutItemNode(layoutItem)) {\n activeLayoutItemKeyRef.current = layoutItem.getKey()\n const layoutStyle = layoutItem.getStyle()\n const layoutBg = extractStyleValue(layoutStyle, \"background-color\")\n if (layoutBg) {\n setBgColor(layoutBg)\n return\n }\n } else {\n activeLayoutItemKeyRef.current = null\n }\n\n setBgColor(\n $getSelectionStyleValueForProperty(\n selection,\n \"background-color\",\n \"#fff\"\n )\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const applyStyleText = useCallback(\n (styles: Record<string, string>, skipHistoryStack?: boolean) => {\n void skipHistoryStack\n activeEditor.update(\n () => {\n const selection = $getSelection()\n activeEditor.setEditable(false)\n if (selection !== null) {\n $patchStyleText(selection, styles)\n }\n },\n { tag: \"historic\" }\n )\n },\n [activeEditor]\n )\n\n const onBgColorSelect = useCallback(\n (value: string) => {\n let shouldApplyTextStyle = true\n activeEditor.update(() => {\n const selectedLayoutItemKey = activeLayoutItemKeyRef.current\n if (selectedLayoutItemKey) {\n const node = $getNodeByKey(selectedLayoutItemKey)\n if ($isLayoutItemNode(node)) {\n node.setStyle(setStyleProperty(node.getStyle(), \"background-color\", value))\n shouldApplyTextStyle = false\n return\n }\n }\n\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) return\n const layoutItem = $findMatchingParent(selection.anchor.getNode(), (node) =>\n $isLayoutItemNode(node)\n )\n if ($isLayoutItemNode(layoutItem)) {\n layoutItem.setStyle(\n setStyleProperty(layoutItem.getStyle(), \"background-color\", value)\n )\n shouldApplyTextStyle = false\n return\n }\n })\n if (shouldApplyTextStyle) {\n applyStyleText({ \"background-color\": value }, true)\n }\n },\n [activeEditor, applyStyleText]\n )\n\n return (\n <ColorPicker\n modal\n defaultFormat=\"hex\"\n defaultValue={bgColor}\n onValueChange={onBgColorSelect}\n onOpenChange={(open) => {\n if (!open) {\n activeEditor.setEditable(true)\n activeEditor.focus()\n }\n }}\n >\n <ColorPickerTrigger asChild>\n <Button variant={\"outline\"} size={\"icon\"} className=\"editor-toolbar-item--lg\">\n <IconSize size=\"sm\">\n <PaintBucketIcon />\n </IconSize>\n </Button>\n </ColorPickerTrigger>\n <ColorPickerContent>\n <ColorPickerArea />\n <Flex align=\"center\" gap={2}>\n <ColorPickerEyeDropper />\n <Flex direction=\"column\" gap={2} className=\"editor-flex-1\">\n <ColorPickerHueSlider />\n <ColorPickerAlphaSlider />\n </Flex>\n </Flex>\n <Flex align=\"center\" gap={2}>\n <ColorPickerFormatSelect />\n <ColorPickerInput />\n </Flex>\n <ColorPickerPresets />\n </ColorPickerContent>\n </ColorPicker>\n )\n}\n","\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\"\nimport { BaselineIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n ColorPicker,\n ColorPickerAlphaSlider,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerEyeDropper,\n ColorPickerFormatSelect,\n ColorPickerHueSlider,\n ColorPickerInput,\n ColorPickerPresets,\n ColorPickerTrigger,\n} from \"../../editor-ui/color-picker\"\nimport { Button } from \"../../ui/button\"\nimport { Flex } from \"../../ui/flex\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function FontColorToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n\n const [fontColor, setFontColor] = useState(\"#000\")\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n setFontColor(\n $getSelectionStyleValueForProperty(selection, \"color\", \"#000\")\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const applyStyleText = useCallback(\n (styles: Record<string, string>) => {\n activeEditor.update(() => {\n const selection = $getSelection()\n activeEditor.setEditable(false)\n if (selection !== null) {\n $patchStyleText(selection, styles)\n }\n })\n },\n [activeEditor]\n )\n\n const onFontColorSelect = useCallback(\n (value: string) => {\n applyStyleText({ color: value })\n },\n [applyStyleText]\n )\n\n return (\n <ColorPicker\n modal\n defaultFormat=\"hex\"\n defaultValue={fontColor}\n onValueChange={onFontColorSelect}\n onOpenChange={(open) => {\n if (!open) {\n activeEditor.setEditable(true)\n activeEditor.focus()\n }\n }}\n >\n <ColorPickerTrigger asChild>\n <Button variant=\"outline\" size=\"icon\" className=\"editor-toolbar-item--lg\">\n <IconSize size=\"sm\">\n <BaselineIcon />\n </IconSize>\n </Button>\n </ColorPickerTrigger>\n <ColorPickerContent>\n <ColorPickerArea />\n <Flex align=\"center\" gap={2}>\n <ColorPickerEyeDropper />\n <Flex direction=\"column\" gap={2} className=\"editor-flex-1\">\n <ColorPickerHueSlider />\n <ColorPickerAlphaSlider />\n </Flex>\n </Flex>\n <Flex align=\"center\" gap={2}>\n <ColorPickerFormatSelect />\n <ColorPickerInput />\n </Flex>\n <ColorPickerPresets />\n </ColorPickerContent>\n </ColorPicker>\n )\n}\n","\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\"\nimport { TypeIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from \"../../ui/select\"\nimport { IconSize } from \"../../ui/typography\"\n\nconst FONT_FAMILY_OPTIONS = [\n \"Arial\",\n \"Verdana\",\n \"Times New Roman\",\n \"Georgia\",\n \"Courier New\",\n \"Trebuchet MS\",\n]\n\nexport function FontFamilyToolbarPlugin() {\n const style = \"font-family\"\n const [fontFamily, setFontFamily] = useState(\"Arial\")\n\n const { activeEditor } = useToolbarContext()\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n setFontFamily(\n $getSelectionStyleValueForProperty(selection, \"font-family\", \"Arial\")\n )\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const handleClick = useCallback(\n (option: string) => {\n activeEditor.update(() => {\n const selection = $getSelection()\n if (selection !== null) {\n $patchStyleText(selection, {\n [style]: option,\n })\n }\n })\n },\n [activeEditor, style]\n )\n\n const buttonAriaLabel = \"Formatting options for font family\"\n\n return (\n <Select\n modal={false}\n value={fontFamily}\n onValueChange={(value) => {\n setFontFamily(value)\n handleClick(value)\n }}\n aria-label={buttonAriaLabel}\n >\n <SelectTrigger className=\"editor-toolbar-select-trigger editor-toolbar-select-trigger--w-auto editor-toolbar-item--gap-sm\">\n <IconSize size=\"sm\">\n <TypeIcon />\n </IconSize>\n <span style={{ fontFamily }}>{fontFamily}</span>\n </SelectTrigger>\n <SelectContent>\n {FONT_FAMILY_OPTIONS.map((option) => (\n <SelectItem\n key={option}\n value={option}\n style={{ fontFamily: option }}\n >\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n}\n","\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport { $isTableSelection } from \"@lexical/table\"\nimport {\n $isRangeSelection,\n BaseSelection,\n FORMAT_TEXT_COMMAND,\n TextFormatType,\n} from \"lexical\"\nimport {\n BoldIcon,\n ItalicIcon,\n StrikethroughIcon,\n UnderlineIcon,\n} from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n ToggleGroup,\n ToggleGroupItem,\n} from \"../../ui/toggle-group\"\n\nconst FORMATS = [\n { format: \"bold\", icon: BoldIcon, label: \"Bold\" },\n { format: \"italic\", icon: ItalicIcon, label: \"Italic\" },\n { format: \"underline\", icon: UnderlineIcon, label: \"Underline\" },\n { format: \"strikethrough\", icon: StrikethroughIcon, label: \"Strikethrough\" },\n] as const\n\nexport function FontFormatToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n const [activeFormats, setActiveFormats] = useState<string[]>([])\n\n const $updateToolbar = useCallback((selection: BaseSelection) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const formats: string[] = []\n FORMATS.forEach(({ format }) => {\n if (selection.hasFormat(format as TextFormatType)) {\n formats.push(format)\n }\n })\n setActiveFormats((prev) => {\n // Only update if formats have changed\n if (\n prev.length !== formats.length ||\n !formats.every((f) => prev.includes(f))\n ) {\n return formats\n }\n return prev\n })\n }\n }, [])\n\n useUpdateToolbarHandler($updateToolbar)\n\n return (\n <ToggleGroup\n type=\"multiple\"\n value={activeFormats}\n onValueChange={setActiveFormats}\n variant=\"default\"\n size=\"sm\"\n >\n {FORMATS.map(({ format, icon: Icon, label }) => (\n <ToggleGroupItem\n key={format}\n value={format}\n aria-label={label}\n className=\"editor-toolbar-item\"\n onClick={() => {\n activeEditor.dispatchCommand(\n FORMAT_TEXT_COMMAND,\n format as TextFormatType\n )\n }}\n >\n <Icon className=\"editor-icon-sm\" />\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport function ButtonGroup({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div className={cn(\"editor-button-group\", className)} {...props}>\n {children}\n </div>\n )\n}\n","\"use client\"\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport {\n $getSelectionStyleValueForProperty,\n $patchStyleText,\n} from \"@lexical/selection\"\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\"\nimport { Minus, Plus } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport { Button } from \"../../ui/button\"\nimport { ButtonGroup } from \"../../ui/button-group\"\nimport { Input } from \"../../ui/input\"\nimport { IconSize } from \"../../ui/typography\"\n\nconst DEFAULT_FONT_SIZE = 16\nconst MIN_FONT_SIZE = 1\nconst MAX_FONT_SIZE = 72\nconst HOLD_DELAY = 500\nconst HOLD_INTERVAL = 50\n\nexport function FontSizeToolbarPlugin() {\n const style = \"font-size\"\n const [fontSize, setFontSize] = useState<number | string>(DEFAULT_FONT_SIZE)\n const fontSizeRef = useRef(fontSize)\n\n // Update ref when state changes\n useEffect(() => {\n fontSizeRef.current = fontSize\n }, [fontSize])\n\n const { activeEditor } = useToolbarContext()\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const value = $getSelectionStyleValueForProperty(\n selection,\n \"font-size\",\n `${DEFAULT_FONT_SIZE}px`\n )\n const size = parseInt(value) || DEFAULT_FONT_SIZE\n setFontSize(size)\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n const updateFontSize = useCallback(\n (newSize: number) => {\n const size = Math.min(Math.max(newSize, MIN_FONT_SIZE), MAX_FONT_SIZE)\n activeEditor.update(() => {\n const selection = $getSelection()\n if (selection !== null) {\n $patchStyleText(selection, {\n [style]: `${size}px`,\n })\n }\n })\n setFontSize(size)\n },\n [activeEditor, style]\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value\n if (value === \"\") {\n setFontSize(\"\")\n return\n }\n const size = parseInt(value)\n if (!isNaN(size)) {\n setFontSize(size)\n }\n }\n\n const handleInputBlur = () => {\n if (fontSize === \"\" || (typeof fontSize === \"number\" && (fontSize < MIN_FONT_SIZE || fontSize > MAX_FONT_SIZE))) {\n setFontSize(DEFAULT_FONT_SIZE)\n updateFontSize(DEFAULT_FONT_SIZE)\n } else {\n updateFontSize(fontSize as number)\n }\n }\n\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const intervalRef = useRef<NodeJS.Timeout | null>(null)\n\n const stopTimer = useCallback(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n intervalRef.current = null\n }\n }, [])\n\n const startTimer = useCallback(\n (increment: boolean) => {\n stopTimer()\n\n // Initial click\n const currentSize = typeof fontSizeRef.current === \"number\" ? fontSizeRef.current : DEFAULT_FONT_SIZE\n updateFontSize(currentSize + (increment ? 1 : -1))\n\n timerRef.current = setTimeout(() => {\n intervalRef.current = setInterval(() => {\n const currentSizeLoop = typeof fontSizeRef.current === \"number\" ? fontSizeRef.current : DEFAULT_FONT_SIZE\n if (increment && currentSizeLoop < MAX_FONT_SIZE) {\n updateFontSize(currentSizeLoop + 1)\n } else if (!increment && currentSizeLoop > MIN_FONT_SIZE) {\n updateFontSize(currentSizeLoop - 1)\n } else {\n stopTimer()\n }\n }, HOLD_INTERVAL)\n }, HOLD_DELAY)\n },\n [updateFontSize, stopTimer]\n )\n\n useEffect(() => {\n return () => stopTimer()\n }, [stopTimer])\n\n return (\n <ButtonGroup>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"editor-toolbar-item\"\n onPointerDown={() => startTimer(false)}\n onPointerUp={stopTimer}\n onPointerLeave={stopTimer}\n disabled={typeof fontSize === \"number\" && fontSize <= MIN_FONT_SIZE}\n title=\"Decrease font size\"\n >\n <IconSize size=\"xs\">\n <Minus />\n </IconSize>\n </Button>\n <Input\n type=\"number\"\n value={fontSize}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n className=\"editor-toolbar-item editor-toolbar-item--w-fit editor-toolbar-item--bg-background editor-toolbar-item--text-center editor-w-14\"\n min={MIN_FONT_SIZE}\n max={MAX_FONT_SIZE}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault()\n handleInputBlur()\n }\n event.stopPropagation()\n }}\n />\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"editor-toolbar-item\"\n onPointerDown={() => startTimer(true)}\n onPointerUp={stopTimer}\n onPointerLeave={stopTimer}\n disabled={typeof fontSize === \"number\" && fontSize >= MAX_FONT_SIZE}\n title=\"Increase font size\"\n >\n <IconSize size=\"xs\">\n <Plus />\n </IconSize>\n </Button>\n </ButtonGroup>\n )\n}\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { IS_APPLE, mergeRegister } from \"@lexical/utils\"\nimport {\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n REDO_COMMAND,\n UNDO_COMMAND,\n} from \"lexical\"\nimport { RedoIcon, UndoIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { Button } from \"../../ui/button\"\nimport { ButtonGroup } from \"../../ui/button-group\"\n\nexport function HistoryToolbarPlugin() {\n const [editor] = useLexicalComposerContext()\n const { activeEditor, $updateToolbar } = useToolbarContext()\n const [isEditable, setIsEditable] = useState(editor.isEditable())\n const [canUndo, setCanUndo] = useState(false)\n const [canRedo, setCanRedo] = useState(false)\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener((editable) => {\n setIsEditable(editable)\n }),\n activeEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateToolbar()\n })\n }),\n activeEditor.registerCommand<boolean>(\n CAN_UNDO_COMMAND,\n (payload) => {\n setCanUndo(payload)\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n ),\n activeEditor.registerCommand<boolean>(\n CAN_REDO_COMMAND,\n (payload) => {\n setCanRedo(payload)\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n )\n )\n }, [$updateToolbar, activeEditor, editor])\n\n return (\n <ButtonGroup>\n <Button\n disabled={!canUndo || !isEditable}\n onClick={() => {\n activeEditor.dispatchCommand(UNDO_COMMAND, undefined)\n }}\n title={IS_APPLE ? \"Undo (⌘Z)\" : \"Undo (Ctrl+Z)\"}\n type=\"button\"\n aria-label=\"Undo\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"editor-toolbar-item\"\n >\n <UndoIcon className=\"editor-icon-sm\" />\n </Button>\n <Button\n disabled={!canRedo || !isEditable}\n onClick={() => {\n activeEditor.dispatchCommand(REDO_COMMAND, undefined)\n }}\n title={IS_APPLE ? \"Redo (⇧⌘Z)\" : \"Redo (Ctrl+Y)\"}\n type=\"button\"\n aria-label=\"Redo\"\n size=\"sm\"\n variant=\"ghost\"\n className=\"editor-toolbar-item\"\n >\n <RedoIcon className=\"editor-icon-sm\" />\n </Button>\n </ButtonGroup>\n )\n}\n","import * as React from \"react\"\nimport { cn } from \"../lib/utils\"\n\nexport const Toggle = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement> & { \n pressed?: boolean\n onPressedChange?: (pressed: boolean) => void\n variant?: \"default\" | \"outline\" | \"ghost\"\n size?: \"default\" | \"sm\" | \"lg\"\n }\n>(({ className, pressed, onPressedChange, variant = \"default\", size = \"default\", ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={pressed}\n data-state={pressed ? \"on\" : \"off\"}\n className={cn(\n \"editor-toggle\",\n variant !== \"default\" && `editor-toggle--${variant}`,\n size !== \"default\" && `editor-toggle--size-${size}`,\n className\n )}\n onClick={() => onPressedChange?.(!pressed)}\n {...props}\n />\n))\nToggle.displayName = \"Toggle\"\n","\"use client\"\n\nimport { useCallback, useEffect, useState } from \"react\"\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\"\nimport {\n $isRangeSelection,\n BaseSelection,\n COMMAND_PRIORITY_NORMAL,\n KEY_MODIFIER_COMMAND,\n} from \"lexical\"\nimport { LinkIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport { getSelectedNode } from \"../../utils/get-selected-node\"\nimport { sanitizeUrl } from \"../../utils/url\"\nimport { Toggle } from \"../../ui/toggle\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function LinkToolbarPlugin({\n setIsLinkEditMode,\n}: {\n setIsLinkEditMode: (isEditMode: boolean) => void\n}) {\n const { activeEditor } = useToolbarContext()\n const [isLink, setIsLink] = useState(false)\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection)\n const parent = node.getParent()\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n setIsLink(true)\n } else {\n setIsLink(false)\n }\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n useEffect(() => {\n return activeEditor.registerCommand(\n KEY_MODIFIER_COMMAND,\n (payload) => {\n const event: KeyboardEvent = payload\n const { code, ctrlKey, metaKey } = event\n\n if (code === \"KeyK\" && (ctrlKey || metaKey)) {\n event.preventDefault()\n let url: string | null\n if (!isLink) {\n setIsLinkEditMode(true)\n url = sanitizeUrl(\"https://\")\n } else {\n setIsLinkEditMode(false)\n url = null\n }\n return activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, url)\n }\n return false\n },\n COMMAND_PRIORITY_NORMAL\n )\n }, [activeEditor, isLink, setIsLinkEditMode])\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n setIsLinkEditMode(true)\n activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(\"https://\"))\n } else {\n setIsLinkEditMode(false)\n activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n }, [activeEditor, isLink, setIsLinkEditMode])\n\n return (\n <Toggle\n variant={\"outline\"}\n size=\"sm\"\n className=\"editor-toolbar-item\"\n aria-label=\"Toggle link\"\n onClick={insertLink}\n >\n <IconSize size=\"sm\">\n <LinkIcon />\n </IconSize>\n </Toggle>\n )\n}\n","\"use client\"\n\nimport { useState } from \"react\"\nimport { $isTableSelection } from \"@lexical/table\"\nimport { $isRangeSelection, BaseSelection, FORMAT_TEXT_COMMAND } from \"lexical\"\nimport { SubscriptIcon, SuperscriptIcon } from \"lucide-react\"\n\nimport { useToolbarContext } from \"../../context/toolbar-context\"\nimport { useUpdateToolbarHandler } from \"../../editor-hooks/use-update-toolbar\"\nimport {\n ToggleGroup,\n ToggleGroupItem,\n} from \"../../ui/toggle-group\"\nimport { IconSize } from \"../../ui/typography\"\n\nexport function SubSuperToolbarPlugin() {\n const { activeEditor } = useToolbarContext()\n const [isSubscript, setIsSubscript] = useState(false)\n const [isSuperscript, setIsSuperscript] = useState(false)\n\n const $updateToolbar = (selection: BaseSelection) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setIsSubscript((selection as any).hasFormat(\"subscript\"))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setIsSuperscript((selection as any).hasFormat(\"superscript\"))\n }\n }\n\n useUpdateToolbarHandler($updateToolbar)\n\n return (\n <ToggleGroup\n type=\"single\"\n value={\n isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n }\n size=\"default\"\n variant=\"outline\"\n >\n <ToggleGroupItem\n value=\"subscript\"\n size=\"default\"\n aria-label=\"Toggle subscript\"\n onClick={() => {\n activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\")\n }}\n variant={\"outline\"}\n >\n <IconSize size=\"sm\">\n <SubscriptIcon />\n </IconSize>\n </ToggleGroupItem>\n <ToggleGroupItem\n value=\"superscript\"\n size=\"default\"\n aria-label=\"Toggle superscript\"\n onClick={() => {\n activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\")\n }}\n variant={\"outline\"}\n >\n <IconSize size=\"sm\">\n <SuperscriptIcon />\n </IconSize>\n </ToggleGroupItem>\n </ToggleGroup>\n )\n}\n","import { useEffect, useState, useCallback } from \"react\"\nimport { useElementSize } from \"./use-element-size\"\n\nconst PUBLIC_HEADER_SELECTOR = 'header[data-public-header=\"true\"]'\nconst ADMIN_HEADER_SELECTOR = 'header[data-admin-header=\"true\"]'\n\n/**\n * Hook để đo chiều cao của header động trong editor\n */\nexport function useHeaderHeight() {\n const { ref: headerRef, height: headerHeightValue } = useElementSize<HTMLElement>()\n const [headerHeight, setHeaderHeight] = useState(0)\n\n const findAndSetHeader = useCallback(() => {\n if (typeof document === \"undefined\") {\n return null\n }\n\n // Ưu tiên tìm header với data-admin-header=\"true\" hoặc data-public-header=\"true\"\n let header = document.querySelector<HTMLElement>(ADMIN_HEADER_SELECTOR) || \n document.querySelector<HTMLElement>(PUBLIC_HEADER_SELECTOR)\n \n // Fallback: đo header bằng cách tìm element header đầu tiên\n if (!header) {\n header = document.querySelector<HTMLElement>(\"header\")\n }\n\n if (header) {\n headerRef(header)\n return header\n }\n\n return null\n }, [headerRef])\n\n useEffect(() => {\n if (typeof document === \"undefined\") {\n return\n }\n\n // Tìm header ngay lập tức\n findAndSetHeader()\n\n // Retry tìm header nếu chưa tìm thấy (có thể do SSR hoặc component chưa mount)\n let retryCount = 0\n const maxRetries = 10\n const retryInterval = 100\n\n const retryTimer = setInterval(() => {\n const header = findAndSetHeader()\n if (header || retryCount >= maxRetries) {\n clearInterval(retryTimer)\n }\n retryCount++\n }, retryInterval)\n\n // Sử dụng MutationObserver để theo dõi khi header được thêm vào DOM\n const observer = new MutationObserver(() => {\n findAndSetHeader()\n })\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n })\n\n return () => {\n clearInterval(retryTimer)\n observer.disconnect()\n headerRef(null)\n }\n }, [findAndSetHeader, headerRef])\n\n useEffect(() => {\n // Cập nhật headerHeight khi headerSize.height thay đổi\n if (headerHeightValue > 0) {\n setHeaderHeight(headerHeightValue)\n } else {\n // Nếu chưa có height, thử đo lại bằng getBoundingClientRect\n if (typeof document !== \"undefined\") {\n const header = document.querySelector<HTMLElement>(ADMIN_HEADER_SELECTOR) ||\n document.querySelector<HTMLElement>(PUBLIC_HEADER_SELECTOR) || \n document.querySelector<HTMLElement>(\"header\")\n if (header) {\n const rect = header.getBoundingClientRect()\n if (rect.height > 0) {\n setHeaderHeight(rect.height)\n }\n }\n }\n }\n }, [headerHeightValue])\n\n return { headerHeight }\n}\n","\"use client\"\n\nimport { type CSSProperties, type ReactNode, useEffect, useState } from \"react\"\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\"\nimport { COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from \"lexical\"\n\nimport { ToolbarContext } from \"../../context/toolbar-context\"\nimport { useEditorModal } from \"../../editor-hooks/use-modal\"\nimport { useHeaderHeight } from \"../../hooks/use-header-height\"\nimport { cn } from \"../../lib/utils\"\n\nexport function ToolbarPlugin({\n children,\n className,\n style,\n}: {\n children: (props: { blockType: string }) => ReactNode\n className?: string\n style?: CSSProperties\n}) {\n const [editor] = useLexicalComposerContext()\n const { headerHeight } = useHeaderHeight()\n\n const [activeEditor, setActiveEditor] = useState(editor)\n const [blockType, setBlockType] = useState<string>(\"paragraph\")\n\n const [modal, showModal] = useEditorModal()\n\n const $updateToolbar = () => {}\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n setActiveEditor(newEditor)\n return false\n },\n COMMAND_PRIORITY_CRITICAL\n )\n }, [activeEditor, editor])\n\n return (\n <ToolbarContext\n activeEditor={activeEditor}\n $updateToolbar={$updateToolbar}\n blockType={blockType}\n setBlockType={setBlockType}\n showModal={showModal}\n >\n {modal}\n\n <div\n className={cn(\n \"editor-toolbar\",\n className\n )}\n style={{\n ...style,\n top: Math.round(headerHeight),\n }}\n >\n {children({ blockType })}\n </div>\n </ToolbarContext>\n )\n}\n","\"use client\"\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport { JSX, useEffect } from \"react\"\n\nimport { useReport } from \"../editor-hooks/use-report\"\n\nconst validInputTypes = new Set([\n \"insertText\",\n \"insertCompositionText\",\n \"insertFromComposition\",\n \"insertLineBreak\",\n \"insertParagraph\",\n \"deleteCompositionText\",\n \"deleteContentBackward\",\n \"deleteByComposition\",\n \"deleteContent\",\n \"deleteContentForward\",\n \"deleteWordBackward\",\n \"deleteWordForward\",\n \"deleteHardLineBackward\",\n \"deleteSoftLineBackward\",\n \"deleteHardLineForward\",\n \"deleteSoftLineForward\",\n])\n\nexport function TypingPerfPlugin(): JSX.Element | null {\n const report = useReport()\n useEffect(() => {\n let start = 0\n let timerId: ReturnType<typeof setTimeout> | null\n let keyPressTimerId: ReturnType<typeof setTimeout> | null\n let log: Array<DOMHighResTimeStamp> = []\n let invalidatingEvent = false\n\n const measureEventEnd = function logKeyPress() {\n if (keyPressTimerId != null) {\n if (invalidatingEvent) {\n invalidatingEvent = false\n } else {\n log.push(performance.now() - start)\n }\n\n clearTimeout(keyPressTimerId)\n keyPressTimerId = null\n }\n }\n\n const measureEventStart = function measureEvent() {\n if (timerId != null) {\n clearTimeout(timerId)\n timerId = null\n }\n\n // We use a setTimeout(0) instead of requestAnimationFrame, due to\n // inconsistencies between the sequencing of rAF in different browsers.\n keyPressTimerId = setTimeout(measureEventEnd, 0)\n // Schedule a timer to report the results.\n timerId = setTimeout(() => {\n const total = log.reduce((a, b) => a + b, 0)\n const reportedText =\n \"Typing Perf: \" + Math.round((total / log.length) * 100) / 100 + \"ms\"\n report(reportedText)\n log = []\n }, 2000)\n // Make the time after we do the previous logic, so we don't measure the overhead\n // for it all.\n start = performance.now()\n }\n\n const beforeInputHandler = function beforeInputHandler(event: InputEvent) {\n if (!validInputTypes.has(event.inputType) || invalidatingEvent) {\n invalidatingEvent = false\n return\n }\n\n measureEventStart()\n }\n\n const keyDownHandler = function keyDownHandler(event: KeyboardEvent) {\n const key = event.key\n\n if (key === \"Backspace\" || key === \"Enter\") {\n measureEventStart()\n }\n }\n\n const pasteHandler = function pasteHandler() {\n invalidatingEvent = true\n }\n\n const cutHandler = function cutHandler() {\n invalidatingEvent = true\n }\n\n window.addEventListener(\"keydown\", keyDownHandler, true)\n window.addEventListener(\"selectionchange\", measureEventEnd, true)\n window.addEventListener(\"beforeinput\", beforeInputHandler, true)\n window.addEventListener(\"paste\", pasteHandler, true)\n window.addEventListener(\"cut\", cutHandler, true)\n\n return () => {\n window.removeEventListener(\"keydown\", keyDownHandler, true)\n window.removeEventListener(\"selectionchange\", measureEventEnd, true)\n window.removeEventListener(\"beforeinput\", beforeInputHandler, true)\n window.removeEventListener(\"paste\", pasteHandler, true)\n window.removeEventListener(\"cut\", cutHandler, true)\n }\n }, [report])\n\n return null\n}\n","import { TextMatchTransformer } from \"@lexical/markdown\"\nimport { $createTextNode } from \"lexical\"\n\nimport emojiList from \"../utils/emoji-list\"\n\nexport const EMOJI: TextMatchTransformer = {\n dependencies: [],\n export: () => null,\n importRegExp: /:([a-z0-9_]+):/,\n regExp: /:([a-z0-9_]+):/,\n replace: (textNode, [, name]) => {\n if (!name) return\n const emoji = emojiList.find((e) => e.aliases.includes(name))?.emoji\n if (emoji) {\n textNode.replace($createTextNode(emoji))\n }\n },\n trigger: \":\",\n type: \"text-match\",\n}\n","import { ElementTransformer } from \"@lexical/markdown\"\nimport {\n $createHorizontalRuleNode,\n $isHorizontalRuleNode,\n HorizontalRuleNode,\n} from \"@lexical/react/LexicalHorizontalRuleNode\"\nimport { LexicalNode } from \"lexical\"\n\nexport const HR: ElementTransformer = {\n dependencies: [HorizontalRuleNode],\n export: (node: LexicalNode) => {\n return $isHorizontalRuleNode(node) ? \"***\" : null\n },\n regExp: /^(---|\\*\\*\\*|___)\\s?$/,\n replace: (parentNode, _1, _2, isImport) => {\n const line = $createHorizontalRuleNode()\n\n // TODO: Get rid of isImport flag\n if (isImport || parentNode.getNextSibling() != null) {\n parentNode.replace(line)\n } else {\n parentNode.insertBefore(line)\n }\n\n line.selectNext()\n },\n type: \"element\",\n}\n","import { TextMatchTransformer } from \"@lexical/markdown\"\n\nimport {\n $createImageNode,\n $isImageNode,\n ImageNode,\n} from \"../nodes/image-node\"\n\nexport const IMAGE: TextMatchTransformer = {\n dependencies: [ImageNode],\n export: (node) => {\n if (!$isImageNode(node)) {\n return null\n }\n\n return `})`\n },\n importRegExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))/,\n regExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))$/,\n replace: (textNode, match) => {\n const [, altText, src] = match\n const imageNode = $createImageNode({\n altText: altText || \"\",\n maxWidth: 800,\n src: src || \"\",\n })\n textNode.replace(imageNode)\n },\n trigger: \")\",\n type: \"text-match\",\n}\n","import {\n $convertFromMarkdownString,\n $convertToMarkdownString,\n CHECK_LIST,\n ELEMENT_TRANSFORMERS,\n ElementTransformer,\n MULTILINE_ELEMENT_TRANSFORMERS,\n TEXT_FORMAT_TRANSFORMERS,\n TEXT_MATCH_TRANSFORMERS,\n} from \"@lexical/markdown\"\nimport {\n $createTableCellNode,\n $createTableNode,\n $createTableRowNode,\n $isTableCellNode,\n $isTableNode,\n $isTableRowNode,\n TableCellHeaderStates,\n TableCellNode,\n TableNode,\n TableRowNode,\n} from \"@lexical/table\"\nimport { $isParagraphNode, $isTextNode, LexicalNode } from \"lexical\"\n\nimport { HR } from \"../transformers/markdown-hr-transformer\"\nimport { IMAGE } from \"../transformers/markdown-image-transformer\"\n\n// Very primitive table setup\nconst TABLE_ROW_REG_EXP = /^(?:\\|)(.+)(?:\\|)\\s?$/\nconst TABLE_ROW_DIVIDER_REG_EXP = /^(\\| ?:?-*:? ?)+\\|\\s?$/\n\nconst OTHER_MARKDOWN_TRANSFORMERS = [\n HR,\n IMAGE,\n // EMOJI,\n // TWEET,\n CHECK_LIST,\n ...ELEMENT_TRANSFORMERS,\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n]\n\nexport const TABLE: ElementTransformer = {\n dependencies: [TableNode, TableRowNode, TableCellNode],\n export: (node: LexicalNode) => {\n if (!$isTableNode(node)) {\n return null\n }\n\n const output: string[] = []\n\n for (const row of node.getChildren()) {\n const rowOutput = []\n if (!$isTableRowNode(row)) {\n continue\n }\n\n let isHeaderRow = false\n for (const cell of row.getChildren()) {\n // It's TableCellNode so it's just to make flow happy\n if ($isTableCellNode(cell)) {\n rowOutput.push(\n $convertToMarkdownString(OTHER_MARKDOWN_TRANSFORMERS, cell).replace(\n /\\n/g,\n \"\\\\n\"\n )\n )\n if (cell.__headerState === TableCellHeaderStates.ROW) {\n isHeaderRow = true\n }\n }\n }\n\n output.push(`| ${rowOutput.join(\" | \")} |`)\n if (isHeaderRow) {\n output.push(`| ${rowOutput.map(() => \"---\").join(\" | \")} |`)\n }\n }\n\n return output.join(\"\\n\")\n },\n regExp: TABLE_ROW_REG_EXP,\n replace: (parentNode, _1, match) => {\n if (!match || !match[0]) return\n\n // Header row\n if (TABLE_ROW_DIVIDER_REG_EXP.test(match[0])) {\n const table = parentNode.getPreviousSibling()\n if (!table || !$isTableNode(table)) {\n return\n }\n\n const rows = table.getChildren()\n const lastRow = rows[rows.length - 1]\n if (!lastRow || !$isTableRowNode(lastRow)) {\n return\n }\n\n // Add header state to row cells\n lastRow.getChildren().forEach((cell) => {\n if (!$isTableCellNode(cell)) {\n return\n }\n cell.setHeaderStyles(\n TableCellHeaderStates.ROW,\n TableCellHeaderStates.ROW\n )\n })\n\n // Remove line\n parentNode.remove()\n return\n }\n\n const matchCells = mapToTableCells(match[0])\n\n if (matchCells == null) {\n return\n }\n\n const rows = [matchCells]\n let sibling = parentNode.getPreviousSibling()\n let maxCells = matchCells.length\n\n while (sibling) {\n if (!$isParagraphNode(sibling)) {\n break\n }\n\n if (sibling.getChildrenSize() !== 1) {\n break\n }\n\n const firstChild = sibling.getFirstChild()\n\n if (!$isTextNode(firstChild)) {\n break\n }\n\n const cells = mapToTableCells(firstChild.getTextContent())\n\n if (cells == null) {\n break\n }\n\n maxCells = Math.max(maxCells, cells.length)\n rows.unshift(cells)\n const previousSibling = sibling.getPreviousSibling()\n sibling.remove()\n sibling = previousSibling\n }\n\n const table = $createTableNode()\n\n for (const cells of rows) {\n const tableRow = $createTableRowNode()\n table.append(tableRow)\n\n for (let i = 0; i < maxCells; i++) {\n const cell = cells[i] || $createTableCell(\"\")\n tableRow.append(cell)\n }\n }\n\n const previousSibling = parentNode.getPreviousSibling()\n if (\n $isTableNode(previousSibling) &&\n getTableColumnsSize(previousSibling) === maxCells\n ) {\n previousSibling.append(...table.getChildren())\n parentNode.remove()\n } else {\n parentNode.replace(table)\n }\n\n table.selectEnd()\n },\n type: \"element\",\n}\n\nfunction getTableColumnsSize(table: TableNode) {\n const row = table.getFirstChild()\n return $isTableRowNode(row) ? row.getChildrenSize() : 0\n}\n\nconst $createTableCell = (textContent: string): TableCellNode => {\n textContent = textContent.replace(/\\\\n/g, \"\\n\")\n const cell = $createTableCellNode(TableCellHeaderStates.NO_STATUS)\n $convertFromMarkdownString(textContent, OTHER_MARKDOWN_TRANSFORMERS, cell)\n return cell\n}\n\nconst mapToTableCells = (textContent: string): Array<TableCellNode> | null => {\n const match = textContent.match(TABLE_ROW_REG_EXP)\n if (!match || !match[1]) {\n return null\n }\n return match[1].split(\"|\").map((text) => $createTableCell(text))\n}\n","import { ElementTransformer } from \"@lexical/markdown\"\n\nimport {\n $createTweetNode,\n $isTweetNode,\n TweetNode,\n} from \"../nodes/embeds/tweet-node\"\n\nexport const TWEET: ElementTransformer = {\n dependencies: [TweetNode],\n export: (node) => {\n if (!$isTweetNode(node)) {\n return null\n }\n\n return `<tweet id=\"${node.getId()}\" />`\n },\n regExp: /<tweet id=\"([^\"]+?)\"\\s?\\/>\\s?$/,\n replace: (textNode, _1, match) => {\n const [, id] = match\n if (!id) return\n const tweetNode = $createTweetNode(id)\n textNode.replace(tweetNode)\n },\n type: \"element\",\n}\n","import {\n $createListItemNode,\n $isListItemNode,\n $isListNode,\n ListItemNode,\n ListNode,\n} from \"@lexical/list\"\nimport { ElementTransformer } from \"@lexical/markdown\"\n\nimport {\n $createListWithColorNode,\n $isListWithColorNode,\n ListWithColorNode,\n} from \"../nodes/list-with-color-node\"\n\nexport const UNORDERED_LIST: ElementTransformer = {\n dependencies: [ListWithColorNode, ListNode, ListItemNode],\n export: (node) => {\n if (!$isListNode(node) || node.getListType() !== \"bullet\") {\n return null\n }\n const marker = $isListWithColorNode(node) ? node.getMarkerType() || \"-\" : \"-\"\n const children = node.getChildren()\n const output = []\n for (const child of children) {\n if ($isListItemNode(child)) {\n output.push(`${marker} ${child.getTextContent()}`)\n }\n }\n return output.join(\"\\n\")\n },\n regExp: /^(\\s*)([*+-])\\s/,\n replace: (parentNode, _children, match, isImport) => {\n const marker = match[2]\n const list = $createListWithColorNode(\"bullet\")\n\n if (marker === \"-\" || marker === \"+\") {\n list.setMarkerType(marker)\n }\n\n if (isImport || parentNode.getNextSibling() != null) {\n parentNode.replace(list)\n } else {\n parentNode.insertBefore(list)\n }\n const item = $createListItemNode()\n list.append(item)\n item.select()\n },\n type: \"element\",\n}\n","\"use client\"\nimport { useState } from \"react\"\nimport {\n CHECK_LIST,\n ELEMENT_TRANSFORMERS,\n MULTILINE_ELEMENT_TRANSFORMERS,\n TEXT_FORMAT_TRANSFORMERS,\n TEXT_MATCH_TRANSFORMERS,\n} from \"@lexical/markdown\"\nimport { CheckListPlugin } from \"@lexical/react/LexicalCheckListPlugin\"\nimport { ClearEditorPlugin } from \"@lexical/react/LexicalClearEditorPlugin\"\nimport { ClickableLinkPlugin } from \"@lexical/react/LexicalClickableLinkPlugin\"\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\"\nimport { HashtagPlugin } from \"@lexical/react/LexicalHashtagPlugin\"\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\"\nimport { HorizontalRulePlugin } from \"@lexical/react/LexicalHorizontalRulePlugin\"\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\"\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\"\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\"\nimport { TabIndentationPlugin } from \"@lexical/react/LexicalTabIndentationPlugin\"\nimport { TablePlugin } from \"@lexical/react/LexicalTablePlugin\"\n\nimport { ContentEditable } from \"../editor-ui/content-editable\"\nimport { cn } from \"../lib/utils\"\nimport { ActionsPlugin } from \"../plugins/actions/actions-plugin\"\nimport { AlignPlugin } from \"../plugins/align-plugin\"\nimport { ClearEditorActionPlugin } from \"../plugins/actions/clear-editor-plugin\"\nimport { CounterCharacterPlugin } from \"../plugins/actions/counter-character-plugin\"\nimport { EditModeTogglePlugin } from \"../plugins/actions/edit-mode-toggle-plugin\"\nimport { ImportExportPlugin } from \"../plugins/actions/import-export-plugin\"\nimport { MarkdownTogglePlugin } from \"../plugins/actions/markdown-toggle-plugin\"\nimport { ShareContentPlugin } from \"../plugins/actions/share-content-plugin\"\nimport { SpeechToTextPlugin } from \"../plugins/actions/speech-to-text-plugin\"\nimport { TreeViewPlugin } from \"../plugins/actions/tree-view-plugin\"\nimport { AutoLinkPlugin } from \"../plugins/auto-link-plugin\"\nimport { AutocompletePlugin } from \"../plugins/autocomplete-plugin\"\nimport { CodeActionMenuPlugin } from \"../plugins/code-action-menu-plugin\"\nimport { CodeHighlightPlugin } from \"../plugins/code-highlight-plugin\"\nimport { ComponentPickerMenuPlugin } from \"../plugins/component-picker-menu-plugin\"\nimport { ContextMenuPlugin } from \"../plugins/context-menu-plugin\"\nimport { DragDropPastePlugin } from \"../plugins/drag-drop-paste-plugin\"\nimport { DraggableBlockPlugin } from \"../plugins/draggable-block-plugin\"\nimport { AutoEmbedPlugin } from \"../plugins/embeds/auto-embed-plugin\"\nimport { TwitterPlugin } from \"../plugins/embeds/twitter-plugin\"\nimport { YouTubePlugin } from \"../plugins/embeds/youtube-plugin\"\nimport { EmojiPickerPlugin } from \"../plugins/emoji-picker-plugin\"\nimport { EmojisPlugin } from \"../plugins/emojis-plugin\"\nimport { FloatingLinkEditorPlugin } from \"../plugins/floating-link-editor-plugin\"\nimport { FloatingTextFormatToolbarPlugin } from \"../plugins/floating-text-format-plugin\"\nimport { ImagesPlugin } from \"../plugins/images-plugin\"\nimport { KeywordsPlugin } from \"../plugins/keywords-plugin\"\nimport { LayoutPlugin } from \"../plugins/layout-plugin\"\nimport { LinkPlugin } from \"../plugins/link-plugin\"\nimport { ListColorPlugin } from \"../plugins/list-color-plugin\"\nimport { ListMaxIndentLevelPlugin } from \"../plugins/list-max-indent-level-plugin\"\nimport { MentionsPlugin } from \"../plugins/mentions-plugin\"\nimport { AlignmentPickerPlugin } from \"../plugins/picker/alignment-picker-plugin\"\nimport { BulletedListPickerPlugin } from \"../plugins/picker/bulleted-list-picker-plugin\"\nimport { CheckListPickerPlugin } from \"../plugins/picker/check-list-picker-plugin\"\nimport { CodePickerPlugin } from \"../plugins/picker/code-picker-plugin\"\nimport { ColumnsLayoutPickerPlugin } from \"../plugins/picker/columns-layout-picker-plugin\"\nimport { DividerPickerPlugin } from \"../plugins/picker/divider-picker-plugin\"\nimport { EmbedsPickerPlugin } from \"../plugins/picker/embeds-picker-plugin\"\nimport { HeadingPickerPlugin } from \"../plugins/picker/heading-picker-plugin\"\nimport { ImagePickerPlugin } from \"../plugins/picker/image-picker-plugin\"\nimport { NumberedListPickerPlugin } from \"../plugins/picker/numbered-list-picker-plugin\"\nimport { ParagraphPickerPlugin } from \"../plugins/picker/paragraph-picker-plugin\"\nimport { QuotePickerPlugin } from \"../plugins/picker/quote-picker-plugin\"\nimport {\n DynamicTablePickerPlugin,\n TablePickerPlugin,\n} from \"../plugins/picker/table-picker-plugin\"\nimport { TabFocusPlugin } from \"../plugins/tab-focus-plugin\"\nimport { TableColumnResizerPlugin } from \"../plugins/table-column-resizer-plugin\"\nimport {\n InsertTableCommandPlugin,\n} from \"../plugins/table-plugin\"\nimport { BlockFormatDropDown } from \"../plugins/toolbar/block-format-toolbar-plugin\"\nimport { FormatBulletedList } from \"../plugins/toolbar/block-format/format-bulleted-list\"\nimport { FormatCheckList } from \"../plugins/toolbar/block-format/format-check-list\"\nimport { FormatCodeBlock } from \"../plugins/toolbar/block-format/format-code-block\"\nimport { FormatHeading } from \"../plugins/toolbar/block-format/format-heading\"\nimport { FormatListWithMarker } from \"../plugins/toolbar/block-format/format-list-with-marker\"\nimport { FormatNumberedList } from \"../plugins/toolbar/block-format/format-numbered-list\"\nimport { FormatParagraph } from \"../plugins/toolbar/block-format/format-paragraph\"\nimport { FormatQuote } from \"../plugins/toolbar/block-format/format-quote\"\nimport { BlockInsertPlugin } from \"../plugins/toolbar/block-insert-plugin\"\nimport { InsertColumnsLayout } from \"../plugins/toolbar/block-insert/insert-columns-layout\"\nimport { InsertEmbeds } from \"../plugins/toolbar/block-insert/insert-embeds\"\nimport { InsertHorizontalRule } from \"../plugins/toolbar/block-insert/insert-horizontal-rule\"\nimport { InsertImage } from \"../plugins/toolbar/block-insert/insert-image\"\nimport { InsertTable } from \"../plugins/toolbar/block-insert/insert-table\"\nimport { ClearFormattingToolbarPlugin } from \"../plugins/toolbar/clear-formatting-toolbar-plugin\"\nimport { CodeLanguageToolbarPlugin } from \"../plugins/toolbar/code-language-toolbar-plugin\"\nimport { ElementFormatToolbarPlugin } from \"../plugins/toolbar/element-format-toolbar-plugin\"\nimport { FontBackgroundToolbarPlugin } from \"../plugins/toolbar/font-background-toolbar-plugin\"\nimport { FontColorToolbarPlugin } from \"../plugins/toolbar/font-color-toolbar-plugin\"\nimport { FontFamilyToolbarPlugin } from \"../plugins/toolbar/font-family-toolbar-plugin\"\nimport { FontFormatToolbarPlugin } from \"../plugins/toolbar/font-format-toolbar-plugin\"\nimport { FontSizeToolbarPlugin } from \"../plugins/toolbar/font-size-toolbar-plugin\"\nimport { HistoryToolbarPlugin } from \"../plugins/toolbar/history-toolbar-plugin\"\nimport { LinkToolbarPlugin } from \"../plugins/toolbar/link-toolbar-plugin\"\nimport { SubSuperToolbarPlugin } from \"../plugins/toolbar/subsuper-toolbar-plugin\"\nimport { ToolbarPlugin } from \"../plugins/toolbar/toolbar-plugin\"\nimport { TypingPerfPlugin } from \"../plugins/typing-pref-plugin\"\nimport { EMOJI } from \"../transformers/markdown-emoji-transformer\"\nimport { HR } from \"../transformers/markdown-hr-transformer\"\nimport { IMAGE } from \"../transformers/markdown-image-transformer\"\nimport { TABLE } from \"../transformers/markdown-table-transformer\"\nimport { TWEET } from \"../transformers/markdown-tweet-transformer\"\nimport { UNORDERED_LIST } from \"../transformers/markdown-list-transformer\"\nimport { Separator } from \"../ui/separator\"\n\nconst placeholder = \"Press / for commands...\"\n\nexport function Plugins({\n readOnly = false,\n}: {\n readOnly?: boolean\n}) {\n const [floatingAnchorElem, setFloatingAnchorElem] =\n useState<HTMLDivElement | null>(null)\n const [isLinkEditMode, setIsLinkEditMode] = useState<boolean>(false)\n\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }\n\n return (\n <div className=\"editor-relative-full\">\n {!readOnly && (\n <ToolbarPlugin\n className=\"editor-toolbar\"\n >\n {({ blockType }) => (\n <>\n <div className=\"editor-toolbar-group\">\n <HistoryToolbarPlugin />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <BlockInsertPlugin>\n <InsertHorizontalRule />\n <InsertImage />\n <InsertTable />\n <InsertColumnsLayout />\n <InsertEmbeds />\n </BlockInsertPlugin>\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <BlockFormatDropDown>\n <FormatParagraph />\n <FormatHeading levels={[\"h1\", \"h2\", \"h3\"]} />\n <FormatNumberedList />\n <FormatListWithMarker\n blockFormatValue=\"number-alpha\"\n listType=\"number\"\n markerType=\"alpha\"\n />\n <FormatBulletedList />\n <FormatListWithMarker\n blockFormatValue=\"bullet-dash\"\n listType=\"bullet\"\n markerType=\"-\"\n />\n <FormatListWithMarker\n blockFormatValue=\"bullet-plus\"\n listType=\"bullet\"\n markerType=\"+\"\n />\n <FormatCheckList />\n <FormatCodeBlock />\n <FormatQuote />\n </BlockFormatDropDown>\n </div>\n {blockType === \"code\" ? (\n <div className=\"editor-toolbar-group\">\n <CodeLanguageToolbarPlugin />\n </div>\n ) : (\n <>\n <div className=\"editor-toolbar-group\">\n <FontFamilyToolbarPlugin />\n <FontSizeToolbarPlugin />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <FontFormatToolbarPlugin />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <SubSuperToolbarPlugin />\n <LinkToolbarPlugin setIsLinkEditMode={setIsLinkEditMode} />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <ClearFormattingToolbarPlugin />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <FontColorToolbarPlugin />\n <FontBackgroundToolbarPlugin />\n </div>\n <Separator orientation=\"vertical\" className=\"editor-toolbar-separator\" />\n <div className=\"editor-toolbar-group\">\n <ElementFormatToolbarPlugin />\n </div>\n </>\n )}\n </>\n )}\n </ToolbarPlugin>\n )}\n\n <div className=\"editor-relative-full\">\n {/* AutoFocusPlugin removed to prevent auto-scroll on page load */}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-relative-full\">\n <div className=\"editor-relative-full\" ref={onRef}>\n <ContentEditable\n placeholder={readOnly ? \"\" : placeholder}\n className={cn(\n \"editor-content-editable\",\n readOnly && \"editor-content-editable--readonly\"\n )}\n />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n placeholder={readOnly ? null : <div className=\"editor-placeholder\">{placeholder}</div>}\n />\n\n <ClickableLinkPlugin />\n {!readOnly && (\n <>\n <CheckListPlugin />\n <AlignPlugin />\n <HorizontalRulePlugin />\n <TablePlugin hasHorizontalScroll={true} />\n <InsertTableCommandPlugin />\n <TableColumnResizerPlugin />\n <ListPlugin />\n <TabIndentationPlugin />\n <HistoryPlugin />\n </>\n )}\n <HashtagPlugin />\n\n <MentionsPlugin />\n {!readOnly && <DraggableBlockPlugin anchorElem={floatingAnchorElem} />}\n <KeywordsPlugin />\n <EmojisPlugin />\n {!readOnly && <ImagesPlugin />}\n\n {!readOnly && <LayoutPlugin />}\n {!readOnly && <ListColorPlugin />}\n\n {!readOnly && (\n <>\n <AutoEmbedPlugin />\n <TwitterPlugin />\n <YouTubePlugin />\n </>\n )}\n\n <CodeHighlightPlugin />\n {!readOnly && <CodeActionMenuPlugin anchorElem={floatingAnchorElem} />}\n\n {!readOnly && (\n <>\n <MarkdownShortcutPlugin\n transformers={[\n TABLE,\n HR,\n IMAGE,\n EMOJI,\n TWEET,\n CHECK_LIST,\n UNORDERED_LIST,\n ...ELEMENT_TRANSFORMERS.filter(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (t) => t.type !== \"element\" || (t as any).regExp?.toString().indexOf(\"[*+-]\") === -1\n ),\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n ]}\n />\n <TypingPerfPlugin />\n <TabFocusPlugin />\n <AutocompletePlugin />\n <AutoLinkPlugin />\n <LinkPlugin />\n <ClearEditorPlugin />\n\n <ComponentPickerMenuPlugin\n baseOptions={[\n ParagraphPickerPlugin(),\n HeadingPickerPlugin({ n: 1 }),\n HeadingPickerPlugin({ n: 2 }),\n HeadingPickerPlugin({ n: 3 }),\n TablePickerPlugin(),\n CheckListPickerPlugin(),\n NumberedListPickerPlugin(),\n BulletedListPickerPlugin(),\n QuotePickerPlugin(),\n CodePickerPlugin(),\n DividerPickerPlugin(),\n EmbedsPickerPlugin({ embed: \"tweet\" }),\n EmbedsPickerPlugin({ embed: \"youtube-video\" }),\n ImagePickerPlugin(),\n ColumnsLayoutPickerPlugin(),\n AlignmentPickerPlugin({ alignment: \"left\" }),\n AlignmentPickerPlugin({ alignment: \"center\" }),\n AlignmentPickerPlugin({ alignment: \"right\" }),\n AlignmentPickerPlugin({ alignment: \"justify\" }),\n ]}\n dynamicOptionsFn={DynamicTablePickerPlugin}\n />\n\n <ContextMenuPlugin />\n <DragDropPastePlugin />\n <EmojiPickerPlugin />\n\n <FloatingLinkEditorPlugin\n anchorElem={floatingAnchorElem}\n isLinkEditMode={isLinkEditMode}\n setIsLinkEditMode={setIsLinkEditMode}\n />\n <FloatingTextFormatToolbarPlugin\n anchorElem={floatingAnchorElem}\n setIsLinkEditMode={setIsLinkEditMode}\n />\n\n <ListMaxIndentLevelPlugin />\n </>\n )}\n </div>\n {!readOnly && (\n <ActionsPlugin>\n <div className=\"editor-actions-bar\">\n <div className=\"editor-flex-shrink-0\">\n <CounterCharacterPlugin charset=\"UTF-16\" />\n </div>\n <div className=\"editor-flex-1\" />\n <div className=\"editor-flex-shrink-0 editor-flex-end\">\n <SpeechToTextPlugin />\n <ShareContentPlugin />\n <ImportExportPlugin />\n <MarkdownTogglePlugin\n shouldPreserveNewLinesInMarkdown={true}\n transformers={[\n TABLE,\n HR,\n IMAGE,\n EMOJI,\n TWEET,\n CHECK_LIST,\n UNORDERED_LIST,\n ...ELEMENT_TRANSFORMERS,\n ...MULTILINE_ELEMENT_TRANSFORMERS,\n ...TEXT_FORMAT_TRANSFORMERS,\n ...TEXT_MATCH_TRANSFORMERS,\n ]}\n />\n <EditModeTogglePlugin />\n <ClearEditorActionPlugin />\n <TreeViewPlugin />\n </div>\n </div>\n </ActionsPlugin>\n )}\n </div>\n )\n}\n","import { EditorThemeClasses } from \"lexical\"\n\nimport \"./editor-theme.scss\"\n\nexport const editorTheme: EditorThemeClasses = {\n ltr: \"editor-ltr\",\n rtl: \"editor-rtl\",\n heading: {\n h1: \"editor-h1\",\n h2: \"editor-h2\",\n h3: \"editor-h3\",\n h4: \"editor-h4\",\n h5: \"editor-h5\",\n h6: \"editor-h6\",\n },\n paragraph: \"editor-paragraph\",\n quote: \"editor-quote\",\n link: \"editor-link\",\n list: {\n checklist: \"editor-checklist\",\n listitem: \"editor-listitem\",\n listitemChecked: \"editor-listitem-checked\",\n listitemUnchecked: \"editor-listitem-unchecked\",\n nested: {\n listitem: \"editor-nested-listitem\",\n },\n ol: \"editor-ol\",\n olDepth: [\n \"editor-ol-depth-1\",\n \"editor-ol-depth-2\",\n \"editor-ol-depth-3\",\n \"editor-ol-depth-4\",\n \"editor-ol-depth-5\",\n ],\n ul: \"editor-ul\",\n ulDepth: [\n \"editor-ul-depth-1\",\n \"editor-ul-depth-2\",\n \"editor-ul-depth-3\",\n \"editor-ul-depth-4\",\n \"editor-ul-depth-5\",\n ],\n },\n hashtag: \"editor-hashtag\",\n text: {\n bold: \"editor-text-bold\",\n code: \"editor-text-code\",\n italic: \"editor-text-italic\",\n strikethrough: \"editor-text-strikethrough\",\n subscript: \"editor-text-subscript\",\n superscript: \"editor-text-superscript\",\n underline: \"editor-text-underline\",\n underlineStrikethrough: \"editor-text-underline-strikethrough\",\n },\n textAlign: {\n left: \"editor-text-align-left\",\n center: \"editor-text-align-center\",\n right: \"editor-text-align-right\",\n justify: \"editor-text-align-justify\",\n },\n image: \"editor-image\",\n inlineImage: \"editor-inline-image\",\n code: \"editor-code\",\n codeHighlight: {\n atrule: \"editor-token--keyword\",\n attr: \"editor-token--attr-name\",\n boolean: \"editor-token--property\",\n builtin: \"editor-token--selector\",\n cdata: \"editor-token--comment\",\n char: \"editor-token--selector\",\n class: \"editor-token--function\",\n \"class-name\": \"editor-token--function\",\n comment: \"editor-token--comment\",\n constant: \"editor-token--property\",\n deleted: \"editor-token--property\",\n doctype: \"editor-token--comment\",\n entity: \"editor-token--operator\",\n function: \"editor-token--function\",\n important: \"editor-token--variable\",\n inserted: \"editor-token--selector\",\n keyword: \"editor-token--keyword\",\n namespace: \"editor-token--variable\",\n number: \"editor-token--property\",\n operator: \"editor-token--operator\",\n prolog: \"editor-token--comment\",\n property: \"editor-token--property\",\n punctuation: \"editor-token--punctuation\",\n regex: \"editor-token--variable\",\n selector: \"editor-token--selector\",\n string: \"editor-token--string\",\n symbol: \"editor-token--property\",\n tag: \"editor-token--property\",\n url: \"editor-token--operator\",\n variable: \"editor-token--variable\",\n },\n table: \"editor-table\",\n tableCell: \"editor-table-cell\",\n tableCellActionButton: \"editor-table-cell-action-button\",\n tableCellActionButtonContainer: \"editor-table-cell-action-button-container\",\n tableCellEditing: \"editor-table-cell-editing\",\n tableCellHeader: \"editor-table-cell-header\",\n tableCellPrimarySelected: \"editor-table-cell-primary-selected\",\n tableCellResizer: \"editor-table-cell-resizer\",\n tableCellSelected: \"editor-table-cell-selected\",\n tableCellSortedIndicator: \"editor-table-cell-sorted-indicator\",\n tableResizeRuler: \"editor-table-cell-resize-ruler\",\n tableRowStriping: \"editor-table-row-striping\",\n tableSelected: \"editor-table-selected\",\n tableSelection: \"editor-table-selection\",\n layoutItem: \"editor-layout-item\",\n layoutContainer: \"editor-layout-container\",\n autocomplete: \"editor-autocomplete\",\n embedBlock: {\n base: \"editor-embed-block\",\n focus: \"editor-embed-block-focused\",\n },\n hr: \"editor-hr\",\n}\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport {\n InitialConfigType,\n LexicalComposer,\n} from \"@lexical/react/LexicalComposer\"\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\"\nimport { EditorState, SerializedEditorState } from \"lexical\"\n\nimport { editorTheme } from \"../themes/editor-theme\"\nimport { TooltipProvider } from \"../ui/tooltip\"\n\nimport { cn } from \"../lib/utils\"\nimport { logger } from \"../lib/logger\"\nimport { useElementSize } from \"../hooks/use-element-size\"\nimport { EditorContainerProvider } from \"../context/editor-container-context\"\n\nfunction createEditorConfig(nodes: InitialConfigType[\"nodes\"]) {\n return {\n namespace: \"Editor\",\n theme: editorTheme,\n nodes,\n onError: (error: Error) => {\n if (\n error?.message?.includes(\"TableObserver\") &&\n error?.message?.includes(\"Expected to find TableElement in DOM\")\n ) {\n return\n }\n logger.error(\"[Editor] Error:\", error)\n },\n } satisfies Omit<InitialConfigType, \"editable\" | \"editorState\">\n}\n\nexport function Editor({\n editorState,\n editorSerializedState,\n onChange,\n onSerializedChange,\n readOnly = false,\n}: {\n editorState?: EditorState\n editorSerializedState?: SerializedEditorState\n onChange?: (editorState: EditorState) => void\n onSerializedChange?: (editorSerializedState: SerializedEditorState) => void\n readOnly?: boolean\n}) {\n const { ref: editorRef, width: editorWidth } = useElementSize<HTMLDivElement>()\n const editorMaxWidth = editorWidth || undefined\n\n const [config, setConfig] = useState<{\n nodes: InitialConfigType[\"nodes\"]\n Plugins: React.ComponentType<{ readOnly?: boolean }>\n } | null>(null)\n\n useEffect(() => {\n Promise.all([\n import(\"./nodes\").then((m) => m.nodes),\n import(\"./plugins\").then((m) => ({ Plugins: m.Plugins })),\n ]).then(([nodes, { Plugins }]) => setConfig({ nodes, Plugins }))\n }, [])\n\n if (!config) {\n return (\n <div\n className={cn(\n \"editor-loading-container\"\n )}\n id=\"editor-x\"\n >\n <div className=\"editor-loading-text\">Đang tải editor...</div>\n </div>\n )\n }\n\n const editorConfig = createEditorConfig(config.nodes)\n const { Plugins } = config\n\n return (\n <div\n ref={editorRef}\n className={cn(\n \"editor-root-container lexical-editor-root\",\n !readOnly && \"editor-root-container--shadow\"\n )}\n id=\"editor-x\"\n >\n <EditorContainerProvider value={{ maxWidth: editorMaxWidth }}>\n <LexicalComposer\n initialConfig={{\n ...editorConfig,\n editable: !readOnly,\n ...(editorState ? { editorState } : {}),\n ...(editorSerializedState\n ? { editorState: JSON.stringify(editorSerializedState) }\n : {}),\n }}\n >\n <TooltipProvider>\n <Plugins readOnly={readOnly} />\n\n {!readOnly && (\n <OnChangePlugin\n ignoreSelectionChange={true}\n onChange={(editorState) => {\n onChange?.(editorState)\n onSerializedChange?.(editorState.toJSON())\n }}\n />\n )}\n </TooltipProvider>\n </LexicalComposer>\n </EditorContainerProvider>\n </div>\n )\n}\n","\"use client\"\n\nimport { useState, useEffect, useRef } from \"react\"\nimport { Editor } from \"../editor-x/editor\"\nimport type { SerializedEditorState } from \"lexical\"\nimport { logger } from \"../lib/logger\"\n\nexport interface LexicalEditorProps {\n value?: unknown\n onChange?: (value: SerializedEditorState) => void\n readOnly?: boolean\n className?: string\n placeholder?: string\n}\n\nexport function LexicalEditor({\n value,\n onChange,\n readOnly = false,\n className,\n}: LexicalEditorProps) {\n // Parse initial value as SerializedEditorState\n const [editorState, setEditorState] = useState<SerializedEditorState | undefined>(() => {\n if (value && typeof value === \"object\" && value !== null) {\n try {\n return value as unknown as SerializedEditorState\n } catch {\n return undefined\n }\n }\n // If value is a JSON string, try to parse it\n if (typeof value === \"string\" && value.trim().startsWith(\"{\")) {\n try {\n const parsed = JSON.parse(value)\n if (parsed && typeof parsed === \"object\" && parsed !== null) {\n return parsed as SerializedEditorState\n }\n } catch {\n // Invalid JSON, return undefined\n }\n }\n return undefined\n })\n\n // Ref to track if we are syncing from external value\n const isSyncingRef = useRef(false)\n\n useEffect(() => {\n if (isSyncingRef.current) return\n\n if (value && typeof value === \"object\" && value !== null) {\n try {\n const newState = value as unknown as SerializedEditorState\n const currentStateStr = editorState ? JSON.stringify(editorState) : null\n const newStateStr = JSON.stringify(newState)\n if (currentStateStr !== newStateStr) {\n isSyncingRef.current = true\n setEditorState(newState)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 0)\n }\n } catch (error) {\n logger.error(\"[LexicalEditor] Error parsing value object:\", error)\n }\n } else if (typeof value === \"string\" && value.trim().startsWith(\"{\")) {\n try {\n const parsed = JSON.parse(value)\n if (parsed && typeof parsed === \"object\" && parsed !== null) {\n const newState = parsed as SerializedEditorState\n const currentStateStr = editorState ? JSON.stringify(editorState) : null\n const newStateStr = JSON.stringify(newState)\n if (currentStateStr !== newStateStr) {\n isSyncingRef.current = true\n setEditorState(newState)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 0)\n }\n }\n } catch (error) {\n logger.error(\"[LexicalEditor] Error parsing value string:\", error)\n }\n } else if (value === null || value === undefined) {\n if (editorState !== undefined) {\n isSyncingRef.current = true\n setEditorState(undefined)\n setTimeout(() => {\n isSyncingRef.current = false\n }, 0)\n }\n }\n }, [value, editorState])\n\n const handleSerializedChange = (newState: SerializedEditorState) => {\n if (readOnly) return\n \n // Avoid triggering update if state hasn't effectively changed (optional optimization)\n // But Lexical's onChange usually implies a change.\n \n // Update local state to avoid re-syncing from props immediately if parent re-renders\n // isSyncingRef.current = true\n setEditorState(newState)\n \n if (onChange) {\n onChange(newState)\n }\n \n // setTimeout(() => {\n // isSyncingRef.current = false\n // }, 0)\n }\n\n return (\n <div className={className}>\n <Editor\n editorSerializedState={editorState}\n onSerializedChange={handleSerializedChange}\n readOnly={readOnly}\n />\n </div>\n )\n}\n"]}
|